Algoritmo basato su HMAC per condividere pubblicamente messaggi autenticati

-1

Sto cercando di progettare un algoritmo per condividere pubblicamente messaggi autenticati.

Ovviamente, schemi chiave pubblici / privati asimmetrici lo fanno, ma voglio evitare il requisito che gli utenti debbano tenere traccia di una lunga chiave asimmetrica. Invece, voglio solo che gli utenti tengano traccia di una password che può essere sottoposta a hash per rendere le chiavi di cui hanno bisogno. Tutte le altre informazioni sono condivise pubblicamente.

Spero di ottenere questo risultato utilizzando uno schema elaborato che coinvolge gli HMAC in cui le chiavi HMAC vengono rilasciate dopo che il messaggio è stato firmato e pubblicato con successo. Un utente malintenzionato non può simulare un messaggio, perché sarebbe in grado di firmare e pubblicare un messaggio solo dopo che è stata rilasciata la corrispondente chiave HMAC.

Il vero autore deve dimostrare che la chiave HMAC utilizzata è la chiave HMAC corretta. Per fare questo devono prima pubblicare un hash (o HMAC) della chiave HMAC, così quando condividono la chiave HMAC possono essere autenticati.

Quindi in pratica funzionerà in questo modo:

  • Alice vuole condividere pubblicamente i messaggi autenticati usando solo una password segreta.
  • Genera una chiave HMAC iniziale usando la sua password.
  • Pubblica l'hash di quella chiave HMAC in modo che possa essere successivamente verificata.
  • Successivamente, quando desidera pubblicare un messaggio, fa quanto segue:

    • Utilizza la sua password e un contatore per generare una chiave HMAC sostitutiva e un hash di quella chiave HMAC sostitutiva.
    • utilizza la precedente chiave HMAC per firmare il messaggio che desidera pubblicare.
    • utilizza la precedente chiave HMAC per firmare l'hash della chiave HMAC sostitutiva.
    • condivide il messaggio firmato e l'hash firmato della chiave HMAC sostitutiva.
    • Dopo che entrambi sono stati pubblicati, condivide la stessa chiave HMAC stessa.
    • Tutti gli altri usano l'hash della chiave HMAC precedentemente pubblicato per verificare che la chiave HMAC sia corretta.
    • Quindi utilizzano la chiave HMAC per autenticare il messaggio e la chiave HMAC sostitutiva.

Gradirei un feedback sulle implicazioni di sicurezza del mio schema inventato se hai tempo per comprendere a fondo l'algoritmo descritto.

Questo è il mio miglior tentativo di creare uno schema per l'autenticazione pubblica dei messaggi usando solo una password. Quello che mi piacerebbe davvero sapere è se esiste un modo valido per farlo.

Mi sono convinto che l'alternativa migliore è che gli utenti che non vogliono tenere traccia di una lunga chiave privata utilizzino un servizio di terze parti attendibile che memorizza una versione crittografata di quella chiave. Quando vogliono firmare un messaggio, scaricano la chiave crittografata da quel servizio, la decodificano e quindi firmano il loro messaggio nel modo normale. Se potessi fare di meglio mi piacerebbe sapere.

    
posta derekmc 21.09.2014 - 18:23
fonte

1 risposta

1

Il tuo schema inventato rilascia "un hash (o HMAC) della chiave HMAC",
si basa su timestamp attendibile e consente a un utente malintenzionato di scambiarsi
"il messaggio che desidera pubblicare" con "l'hash della chiave HMAC sostitutiva".


Il seguente è un modo valido per fare ciò che stai cercando:

  • Alice vuole condividere pubblicamente i messaggi autenticati usando solo una password segreta.
  • Genera una coppia di chiavi di firma usando la sua password.
  • Pubblica l'hash della chiave di verifica.
    • Utilizza la sua password per rigenerare la coppia di chiavi.
    • utilizza la chiave privata per firmare il messaggio che desidera pubblicare.
    • condivide il messaggio firmato e la chiave di verifica.
    • Tutti gli altri usano l'hash precedentemente pubblicato per verificare che la chiave di verifica sia corretta.
    • Utilizzano quindi la chiave di verifica della firma per autenticare il messaggio.


La tua "migliore alternativa" potrebbe essere migliorata con l'autenticazione dell'autenticazione di terze parti attendibile
token anche. "Quando vogliono firmare un messaggio, scaricano il loro" sale "da quel servizio,"
derivare rigenerare il token e la chiave di autenticazione, inviare il token di autenticazione, "download
la loro chiave crittografata da quel servizio, decodificarla e quindi firmare il loro messaggio nel modo normale. "
(Il punto è che impedisce a tutti gli altri di terze parti di effettuare una ricerca di password offline.

    
risposta data 21.09.2014 - 19:22
fonte

Leggi altre domande sui tag