Memorizzazione della password insieme al file crittografato

12

Stavo facendo una piccola applicazione per crittografare i file e mi sono imbattuto nel problema di verificare che la chiave fornita fosse quella corretta durante la decrittografia. La mia idea era quella di memorizzare la chiave (riempita, crittografata) insieme al file crittografato, così quando si decodifica, il programma controlla prima se la prima coppia di byte (non riempita) è uguale alla chiave fornita. Non sono un esperto di sicurezza e non riesco a vedere un problema con l'approccio, ma ho ancora la sensazione che questa sarebbe una cattiva pratica come.

Questo approccio è OK dal punto di vista della sicurezza? C'è forse già un'altra soluzione al problema iniziale?

    
posta Oliver.m 29.12.2016 - 17:01
fonte

3 risposte

17

Sebbene qui non ci siano evidenti vulnerabilità, un'opzione migliore è semplicemente quella di memorizzare una stringa statica, piuttosto che la chiave stessa. Se un utente malintenzionato trova un attacco di canale laterale che consente loro di scoprire un blocco di testo in chiaro, il tuo approccio perderebbe la passphrase e quindi interromperà l'intero sistema, mentre l'opzione di testo fisso non lo farebbe.

    
risposta data 29.12.2016 - 17:06
fonte
10

Potresti fare questo:

  1. Genera una chiave casuale a 128 byte crittograficamente sicura

  2. Genera hash di chiave casuale

  3. Cripta il file con la chiave generata a caso

  4. Cripta la chiave casuale con il tasto fornito dall'utente

  5. Inserisci i seguenti valori nel file:

    chiave casuale crittografata: hash della chiave casuale: dati del file crittografati

Quando si desidera decodificare i dati, si utilizzano i dati forniti dall'utente per decrittografare la chiave casuale crittografata, quindi l'hash e il confronto con l'hash memorizzato. Se sono uguali, si utilizza la chiave casuale decodificata per decrittografare i dati.

    
risposta data 29.12.2016 - 17:28
fonte
3

Includere una stringa statica suona come se potesse essere vulnerabile a un attacco di testo normale noto. Invece vorrei al seguente (ma sarebbe felice di sentire se è una cattiva idea!);

  1. Hash il tuo testo normale e anteponi l'hash ad esso
  2. Cripta tutto con la tua tecnica di crittografia

Quando decrittalo, controlla se l'hash all'inizio corrisponde all'hash che ti aspetti. Questo ti rende in grado di rilevare se hai la chiave di decodifica corretta e come plus puoi ottenere il controllo dell'integrità gratuitamente. Se vuoi accelerare, dì che vorresti criptare grandi quantità di dati laddove non è possibile eseguire una funzione di hashing sull'intero payload, riduci la porzione di hash a pochi megabyte o blocchi se è un blocco cifrato .

Se si aggiungesse un hash non crittografato della chiave stessa al file, gli autori di attacchi potrebbero testare le chiavi senza dover decodificare l'intero file. Questo accelererebbe molto gli attacchi.

    
risposta data 29.12.2016 - 20:21
fonte

Leggi altre domande sui tag