In crittografia, CRAM-MD5 è un meccanismo di autenticazione challenge-response definito nel RFC 2195 basato sull'algoritmo HMAC-MD5 MAC. È utilizzato da alcune implementazioni SASL ed è spesso supportato dagli agent SMTP.

Protocollo

modifica
  1. Challenge: nell'autenticazione CRAM-MD5, il server invia una stringa di sfida al client
  2. Response: il client risponde con una stringa con questa struttura:
    1. La stringa, inviata con base64, viene decodificata
    2. La stringa decodificata viene criptata con HMAC-MD5 usando la password dell'utente come chiave segreta
    3. La sfida codificata viene convertita in cifre esadecimali
    4. La username ed uno spazio blank vengono aggiunti all'inizio della stringa hex
    5. La concatenazione viene codificata in base64 ed inviata al server
  3. Comparazione: il server esegue lo stesso metodo del client e se la stringa calcolata è uguale a quella inviata dal client allora l'autenticazione è concessa.

Questo metodo fornisce tre importanti tipi di sicurezza.

  1. Nessuno può duplicare l'hash senza conoscere la password
  2. Nessuno può replicare l'hash perché dipende dalla sfida che non è prevedibile
  3. Eventuali osservatori del traffico non possono leggere la password

I due elementi che forniscono questi tipi di sicurezza sono l'algoritmo di hash e la sfida generata casualmente.

Debolezze del protocollo

modifica
  • Non c'è mutua autenticazione: il client non verifica l'identità del server
  • Memorizzazione debole della password: alcune implementazioni richiedono l'accesso alla password in chiaro mentre altri utilizzano lo step intermedio processato con HMAC per memorizzare una specie di MD5 della password
  • Minaccia di reversibilità: l'attacco tramite dizionario offline diventa fattibile dopo aver catturato un frame scambiato con successo nel processo di autenticazione

Voci correlate

modifica