Quanto è sicuro questo protocollo di sicurezza? [chiuso]

0

Sto sviluppando un'applicazione che crittografa un gruppo di file che il client ha sulla loro macchina e poi li invia a un server, per eseguirne il backup. Devo crittografare i file in modo che altri client / terze parti non possano accedervi. Il problema è che mi piacerebbe avere una chiave codificata, per ridurre la complessità del mio programma, ma non posso avere tutti i client condividere la stessa chiave o avere terze parti che decompilano il file binario per ottenere la chiave (I sappi che le chiavi codificate sono una cattiva idea ). Si noti che non è fattibile utilizzare la semplice crittografia della chiave asimmetrica poiché le prestazioni non sarebbero abbastanza buone.

La soluzione che ho trovato è quella di codificare a fondo la chiave pubblica di una coppia di chiavi pubblica-privata che appartiene al server, che utilizzerei per crittografare una chiave simmetrica, e quindi generare un numero casuale (usato come chiave simmetrica), crittografare i file necessari con esso e quindi crittografare la chiave simmetrica con la chiave pubblica e inviarla a un database sul server, su una rete. Il punto di utilizzo della crittografia a chiave assimmetrica è tale che la trasmissione della chiave è sicura.

Quanto è sicuro questo protocollo? Sarà sufficiente utilizzare un PRNG? Esiste un protocollo esistente migliore?

    
posta someonewithpc 07.09.2015 - 09:50
fonte

1 risposta

3

Ciò che hai pensato da solo è il modo standard di eseguire la crittografia per il traffico di rete:

  1. Genera una chiave simmetrica casuale,
  2. Cripta l'intero "messaggio" utilizzando la chiave simmetrica (più IV, nonce, ecc.),
  3. Crittografa la chiave simmetrica utilizzando la chiave pubblica di destinazione (in questo caso, il server centrale)
  4. Distruggi la chiave simmetrica "plaintext",
  5. Spedisci le merci crittografate alla / e destinazione / i.

La tua preoccupazione riguardo al PRNG è corretta. Dato che probabilmente stai usando un pacchetto di crittografia di qualche tipo (di solito una libreria nel tuo linguaggio di programmazione), probabilmente c'è un generatore di numeri casuali protetto da crittografia in quel pacchetto. NON fare affidamento su PRNG standard (rand (), rnd (), ecc.). Inoltre, assicurarsi che i byte crittografati siano convertiti in un formato utilizzabile per la trasmissione, poiché i protocolli di trasmissione più comuni tendono a soffocare sul binario non elaborato. Base64 "Armatura ASCII" è lo standard.

    
risposta data 07.09.2015 - 14:48
fonte

Leggi altre domande sui tag