Crittografia simmetrica auto-nascosta sicura (decrittografia non verificabile)?

1

Da quanto ho osservato utilizzando strumenti di crittografia standard come OpenSSH e GPG, la decrittografia ha esito positivo solo quando viene fornita la password / chiave corretta (o al massimo alcuni altri, in caso di collisione).

(Ho verificato anche questo decifrando un messaggio di una sola lettera e cercando di decodificare con milioni di password casuali.)

Tuttavia, questo è non desiderabile nei seguenti casi:

  1. Crittografia dei dati casuali (binari) casuali , come ID o anche altre chiavi generate in modo casuale.

  2. Crittografia a più livelli (utilizzando diversi algoritmi)

Il primo è un problema perché una crittografia riuscita con qualsiasi mezzo (estrema fortuna, attacco sistematico o forza bruta) dà il feedback / convalida immediato all'attaccante - "aaah .. questo è il segreto che è protetto". Viceversa, se l'utente malintenzionato non sa mai se i dati decrittografati sono significativi o meno, sarebbe strongmente disabilitato; Ad esempio, considerare una perdita di una password codificata, generata casualmente, nel sistema / macchina che avvia la sequenza di autodistruzione dopo alcuni tentativi di accesso non riusciti (tale password non ha alcun valore per l'utente malintenzionato, ma estremamente preziosa per l'utente legittimo che potrebbe dimenticarlo in qualsiasi momento)

In caso di attacco a forza bruta, quest'ultimo sostanzialmente indebolisce l'intera crittografia da esponenziale sicura a sicura quanto il link più strong , perché l'attaccante ha un checkpoint dopo ogni livello rotto. Pertanto, lo sforzo di interruzione ( E ) è uguale a E(algo_1) + ... + E(algo_n) anziché E(algo_1) * ... * E(algo_n) .

Non sono sicuro se questo comportamento di decifrazione sia causato dagli strumenti (forse crittografano metadati aggiuntivi per controllare facilmente se la decrittografia è riuscita) o gli algoritmi stessi (ho provato con alcuni, incluso AES256). C'è un modo per utilizzare un algoritmo ben definito come AES256 in un modo che non convalidi ogni tentativo di crittografia (cioè lo strumento dovrebbe non essere in grado di dire se decrittografato correttamente / errato)?

In caso contrario, ho pensato a quanto segue:

  1. Allunga la chiave segreta / chiave k usando PBKDF2 (SHA-512, k , sale , Niter , | M |)
  2. Applica la crittografia One Time Pad all'intero messaggio M (ora che la chiave è di uguale lunghezza)

Tuttavia, soffre della vulnerabilità che il testo cifrato e le lunghezze di testo in chiaro sono uguali. C'è un'alternativa migliore?

Nota : per essere veramente celato, anche i metadati specifici del messaggio crittografato dovrebbero essere rimossi, ma questo è solo un problema minore rispetto a quello descritto sopra (ad esempio per GnuPG, uno potrebbe strisciare dai byte iniziali "8C 0D 04"), quindi per favore non concentrarti troppo su questo.

    
posta leden 25.09.2014 - 22:44
fonte

0 risposte

Leggi altre domande sui tag