Vai al contenuto
Questa pagina è stata tradotta automaticamente; potrebbero esserci imprecisioni.Leggi l'originale in inglese

KeeChallenge per YubiKey, e perché dovresti evitarlo

KeeChallenge è un plugin che aggiunge il supporto per YubiKey a KeePass 2. Tuttavia, presenta diversi problemi. Questo articolo illustra tali problemi e le soluzioni alternative.

Come funziona KeeChallenge

KeeChallenge cifra il database con la chiave segreta HMAC (S). Questa chiave è memorizzata nella YubiKey e viene usata per generare le risposte. Inoltre, KeeChallenge cifra la S con la coppia challenge-response precalcolata e memorizza il segreto cifrato e la challenge in un file XML ausiliario.

Quando sblocchi il database:

  1. KeeChallenge carica la challenge C dal file XML e la invia alla YubiKey
  2. La YubiKey trasforma la challenge (usando il segreto S memorizzato nella chiave) e restituisce una risposta R
  3. La risposta R viene usata per decifrare il segreto Senc memorizzato nel file XML.
  4. Il segreto decifrato S viene usato per decifrare il database. È importante notare che si tratta dello stesso segreto memorizzato nella YubiKey.
  5. KeeChallenge rigenera il file XML (genera una nuova challenge casuale C, calcola la nuova risposta R, cifra S usando R' e memorizza le versioni aggiornate di C e Senc nel file XML)

Per maggiori dettagli, consulta il diagramma completo del flusso di lavoro.

Problemi di KeeChallenge

L'approccio di KeeChallenge presenta diversi problemi di sicurezza:

  • La chiave segreta non cambia mai, viene solo ricifrata. Dal punto di vista di KeePass, KeeChallenge non è diverso da un file chiave statico che fornisce sempre gli stessi byte.
  • Di conseguenza, KeeChallenge è completamente esposto agli attacchi di tipo replay. Uno qualsiasi dei file XML precedenti può essere usato per decifrare il database. In altre parole, randomizzare la challenge e ricifrare il segreto non serve a nulla: è solo security theater.
  • Il segreto non dovrebbe mai lasciare la YubiKey: è questo lo scopo di una chiave fisica in sola scrittura. KeeChallenge viola questo principio portando il segreto sul computer. In teoria, un malintenzionato può copiare S dalla memoria del processo, clonare la YubiKey del proprietario a sua insaputa e decifrare qualsiasi versione futura del database (dato che il segreto è statico).

Inoltre, ci sono alcuni problemi correlati:

  • Uno sviluppatore di Yubico ha sollevato un problema di sicurezza nel 2016. Nel 2024 il problema è ancora aperto.
  • KeeChallenge sembra abbandonato: non ci sono stati aggiornamenti significativi dal 2016.
  • Il manutentore non risponde alle segnalazioni.

Un'alternativa migliore

Un approccio alternativo è stato introdotto in KeePassXC ed è supportato da tutte le app compatibili:

In KeePassXC non è necessaria alcuna conoscenza del segreto HMAC. Usiamo il master seed del database (una stringa di byte casuale che fa parte del database) come challenge e poi usiamo la risposta per cifrare il database. In questo modo non serve un file aggiuntivo e si ottiene inoltre il vantaggio che la risposta richiesta cambia ogni volta che salvi il database, il che assomiglia più da vicino a una vera autenticazione a due fattori.

Questo approccio presenta diversi vantaggi importanti rispetto a KeeChallenge:

  • La chiave derivata dalla YubiKey è dinamica: cambia a ogni salvataggio del database. (In KeeChallenge, la chiave di cifratura rimane la stessa, simulando di fatto un file chiave statico.)
  • Il segreto HMAC non lascia mai la chiave fisica, quindi la YubiKey non può essere clonata di nascosto.
  • Non c'è alcun file XML ausiliario, solo il database stesso.
  • Ci sono diversi team di sviluppo attivi che supportano questo approccio.

Per i motivi descritti sopra, KeePassium implementa l'approccio di KeePassXC. Non ci sono piani per supportare i database cifrati con KeeChallenge.

Se hai un database protetto con KeeChallenge, valuta di passare a KeePassXC e KeePassium. Questa combinazione ti offrirà una soluzione più sicura, compatibile e mantenuta.

Vedi anche