Ho un problema in cui un file crittografato memorizzato su un server deve essere decodificato attraverso un elenco precompilato di password che vengono utilizzate una sola volta - OTP applicato sostanzialmente alla crittografia. Il file è in uno stato sicuro mentre è attivo e decrittografato, non può essere modificato o visto pubblicamente. Mentre è a riposo, è pubblicamente visualizzabile e modificabile, quindi non posso memorizzare un elenco di password sul server, poiché spesso il server non è in uno stato sicuro e il file deve essere trasferito spesso in un ambiente molto pubblico modo in cui sarà quasi sicuramente visibile. Dopo aver discusso di questo con un amico, è stato suggerito qualcosa basato su Diffie-Hellman. La mia domanda è quanto potrebbe essere sicuro.
Concetto
L'idea è di generare un elenco di hash e memorizzare solo l'elenco di g^H_n
insieme al file crittografato. Il file viene crittografato ogni volta prendendo un hash, g^H_n
, un valore di lavoro casuale r
e crittografando il file con la chiave (g^H_n)^r
. Infine g^r
è memorizzato nel file pubblicamente. Per decodificare, l'utente fornisce H_n
che può essere utilizzato per calcolare (g^r)^H_n
e decrittografare il file. Ricodificare è quindi semplicemente fare la stessa cosa con g^H_(n-1)
preso dalla lista, e un nuovo valore di lavoro casuale.
Se in qualsiasi momento il file viene ottenuto da qualcuno pubblicamente (ad esempio quando il file è a riposo), conoscono solo g^r
, che non può essere utilizzato per calcolare la chiave. A prescindere dall'ultimo hash utilizzato per crittografare, tutti gli altri hash sono crittografati insieme al file, quindi le future chiavi non possono essere manomesse.
Domanda
Sembra che funzioni abbastanza bene, ma sono nervoso nel fare qualcosa di simile senza sapere con quanta facilità possa essere interrotto, e non riesco a trovare alcun metodo esistente per fare la stessa cosa. Spero che qualcuno possa evidenziare eventuali grossi difetti in questo aspetto che potrebbero essere stati trascurati.