Crittografia messaggi e firma digitale per l'autenticazione

3

Ho questo argomento che vorrei verificare:

Se SOLO Alice e Bob hanno la chiave simmetrica condivisa, perché non è possibile utilizzare la crittografia dei messaggi per l'autenticazione in pratica anziché per gli schemi di firma digitale? Se un utente malintenzionato può catturare questo messaggio, non sarà in grado di fare nulla a meno che non conosca le chiavi. Pertanto, la crittografia dei messaggi mi sembra un meccanismo di autenticazione valido che richiede meno calcoli della firma digitale (quindi più efficiente!).

    
posta Alli 21.11.2016 - 20:42
fonte

3 risposte

4

, ben osservato. Infatti questo è usato nei sistemi di crittografia reali:

Il protocollo Kerberos che sottostà a tutte le autenticazioni di Windows fa quasi esattamente quello che stai suggerendo (fonte: wikipedia.org / Kerberos_ (protocollo) .

Client Authentication

  1. The client sends a cleartext message of the user ID to the AS (Authentication Server) requesting services on behalf of the user. (Note: Neither the secret key nor the password is sent to the AS.) The AS generates the secret key by hashing the password of the user found at the database (e.g., Active Directory in Windows Server).

  2. The AS checks to see if the client is in its database. If it is, the AS sends back the following two messages to the client:

    • Message A: Client/TGS Session Key encrypted using the secret key of the client/user.

    • Message B: Ticket-Granting-Ticket (TGT, which includes the client ID, client network address, ticket validity period, and the client/TGS session key) encrypted using the secret key of the TGS.

  3. Once the client receives messages A and B, it attempts to decrypt message A with the secret key generated from the password entered by the user. If the user entered password does not match the password in the AS database, the client's secret key will be different and thus unable to decrypt message A. With a valid password and secret key the client decrypts message A to obtain the Client/TGS Session Key.

Come hai sottolineato, questo è un meccanismo di autenticazione valido che richiede meno calcoli della firma digitale, ma richiede un segreto precondiviso . Questo è un GRANDE, MA in molte situazioni.

Ad esempio, voglio creare un nuovo account su mybank.com , che voglio fare su https . Il mio browser non è mai stato lì prima, quindi non ho un segreto pre-condiviso con il mybank.com server. Parte del https handshake sta facendo sì che il server si autentichi sul client (prova che è in realtà mybank.com , e non un man-in-the-middle), il che è impossibile da fare usando solo crypto simmetrico e nessun pre -segreto condiviso.

È per situazioni come questa che la crittografia a chiave pubblica è re.

    
risposta data 21.11.2016 - 21:02
fonte
2

No . La crittografia dei messaggi funziona solo in circostanze ben definite per autenticare un messaggio, non è una soluzione di autenticazione generale.

If an attacker can capture this message, he won't be able to do anything unless he knows the keys.

Questo è falso. Ecco un insieme di circostanze in cui fallisce completamente: immagina di utilizzare un codice a blocchi usando blocchi da 8 byte in modalità ecb. In questa modalità, un blocco precedente non influenza il seguente blocco.

Ora supponiamo che Alice cripta un segreto per Bob, ovvero "Ti amo, Bob!". Questo produce "ztlk43aAb2329iw2". Voglio cambiare questo messaggio A Alice davvero non piace il lavoro di Bob, e se posso incoraggiarla a criptare qualcosa come "Odio il tuo lavoro!" con la stessa chiave, potrebbe produrre qualcosa come "7ZutlwNmsdlfdsaK". Ora prendo semplicemente i primi 8 byte di questo e inserisco gli ultimi 8 byte del messaggio originale fino alla fine, producendo "7ZutlwNmb2329iw2". Quando Bob decifra questo, produce "Ti odio, Bob!".

L'autenticazione non è riuscita e l'amore in erba è morto a metà volo.

Come ha detto Christian, è necessario utilizzare un hmac per l'autenticazione. Hmacs lavora concatenando un segreto (password) al messaggio per essere crittografato e hashing (è un po 'più complicato di quello, infatti, semplicemente concatenando non sarebbe sicuro), e tu autentica il messaggio facendo lo stesso con il segreto noto e confrontando il valore hash risultante.

Un tempo c'era un dibattito tra le persone di sicurezza sul fatto di crittografare, quindi autenticare o autenticare e quindi crittografare, il che dimostra che la crittografia da sola non è considerata sufficiente, anche se la sequenza delle due operazioni non era 't / non è immediatamente ovvio.

In effetti, penso che il modo giusto per farlo sia encrypt-then-authenticate (e sul ricevente autenticare-poi-decifrare), in modo da non provare mai a decifrare un messaggio che non è stato autenticato per la prima volta.

    
risposta data 21.11.2016 - 21:04
fonte
0

Sì, è possibile utilizzare la crittografia simmetrica anziché la crittografia asimmetrica per l'autenticazione. Ma non solo semplice cifratura simmetrica, come potresti pensare.

Quello che stai descrivendo è fatto correttamente da un MAC - Message Authentication Code - tipicamente da HMAC (MAC basato su Hash) - che fa proprio questo - Autenticazione usando la chiave crypto / shared simmetrica.

    
risposta data 21.11.2016 - 20:50
fonte

Leggi altre domande sui tag