Indurimento di un processo di autenticazione basato su chiave asimmetrica

0

Il processo coinvolge due parti interessate A (client) e B (server) e l'attaccante M. M è in grado di intercettare tutte le comunicazioni tra A e B (Man in the Middle) e persino di modificarlo. Tuttavia, la chiave privata di A non è stata compromessa.

Il successo del processo di autenticazione dipende dalla capacità di A di firmare un pacchetto arbitrario inviato da B con la sua chiave privata.

Il processo di autenticazione procede come segue:

  1. A stabilisce una connessione TCP con B.

  2. B calcola un nonce e lo associa alla connessione in entrata da A.

  3. B ha già la chiave pubblica di A.

  4. M si connette con A.

  5. B calcola un nonce e lo associa alla connessione in entrata da M.

  6. M avvia il processo di autenticazione, B genera un nuovo nonce basato sulla nonce generata nel passaggio 5 e alcuni stati interni e lo invia a M.

  7. M rimane inattivo e aspetta che A avvii il processo di autenticazione.

  8. A avvia il processo di autenticazione, B genera un nuovo nonce basato sulla nonce generata nel passaggio 2 e qualche stato interno e lo invia ad A.

  9. M intercetta la comunicazione B - > A al punto 8 e sostituisce il nonce con quello ricevuto al punto 6.

  10. A firma il pacchetto e lo rimanda a B.

  11. M intercetta il pacchetto A - > B del passo 10, impedisce di passare e riprodurlo come è proprio.

  12. B verifica il nonce e la firma e identifica M come A.

  13. M masquerades come A.

Cosa si può fare per evitare che M diventi A negli occhi di B?

    
posta amitkriit 05.11.2018 - 16:08
fonte

1 risposta

0

La mia comprensione è che sia A sia B hanno una chiave privata che è incorporata nella chiave condivisa finale sia all'inizio che alla fine del processo di handshake. Ciò significa che se provi a saltare nel mezzo della stretta di mano, ti mancherà comunque la chiave privata di A. Quindi, mentre puoi ingannare B nel pensare che tu sia A, i dati che ottieni saranno comunque crittografati e non avrai la chiave privata di A per finire la decrittazione. Dal momento che non puoi decrittografarlo, non puoi cambiarlo in nessun nuovo valore significativo anche se riesci a farti diventare l'uomo nel mezzo.

Il vero problema entra in gioco quando riesci a ingannare A pensando che tu sia B perché allora puoi fingere di essere una falsa versione di B abbastanza lunga da raccogliere le credenziali di accesso, quindi passarle al vero B. In questo modo puoi accedi come A con una nuova connessione usando la tua chiave privata. L'unica cosa che so che impedirebbe questo è di avere B send A un metodo di verifica la prima volta che ti connetti che è in grado di verificare che B sia B, ma che non è sempre pratico a seconda del tuo caso d'uso.

    
risposta data 05.11.2018 - 18:18
fonte

Leggi altre domande sui tag