Combinazione RSA e AES in situazione offline

2

Ho bisogno di richiedere e ricevere in modo sicuro i dati da un server. Il client ha la chiave pubblica RSA e il server ha la chiave privata RSA. Quindi sto generando una chiave casuale per cifrare AES-128 / CBC e crittografare i miei dati usando questo codice. La chiave viene crittografata utilizzando la chiave pubblica RSA e decrittografata alla fine del server, quindi sia il client che il server possono comunicare per la sessione.

Ora ho bisogno di dove devo farlo in modalità offline. La richiesta crittografata verrà inviata all'amministratore del server e genererà la risposta crittografata. La chiave simmetrica non deve essere archiviata nel disco, per un utilizzo successivo. In che modo l'amministratore del server deve condividere la chiave simmetrica con il client?

Forse, creando un'altra coppia di chiavi, nel qual caso il client avrà la chiave privata (diversa da una chiave pubblica che già possiede) e il server avrà una chiave pubblica .

Ma è sicuro?

    
posta adnan kamili 06.02.2015 - 10:16
fonte

2 risposte

3

L'idea di utilizzare le chiavi simmetriche sopra la crittografia asimmetrica deriva dal fatto che il canale di comunicazione online non può permettersi il calcolo richiesto per la crittografia asimmetrica in qualsiasi momento, nel caso in cui soddisfino alcuni criteri di rendimento (ad es. Avere un handshake asimmetrico garantisce la riservatezza della chiave simmetrica da utilizzare con l'algoritmo simmetrico più economico per la sessione. Questa sessione ha una durata piuttosto breve prima di scadere la sua chiave. Ciò è dovuto al fatto che la crittografia simmetrica può essere interrotta in tempi più brevi rispetto a quella asimmetrica. Tuttavia, i dati trasmessi su tale canale di solito non sono più rilevanti quando ciò può teoricamente verificarsi (oltre al fatto che il messaggio stesso non viene memorizzato nella cache per un periodo prolungato).

Se i tuoi dati non possono danneggiarti se vengono decrittografati, diciamo 3 mesi, la crittografia simmetrica è un buon modo per andare. Tuttavia, devi comunque assicurarti di non riutilizzare la chiave di questa comunicazione per un'altra comunicazione (suppongo che questo è ciò che intendevi dicendo "la chiave simmetrica non dovrebbe essere memorizzata nel disco"?). Se i tuoi dati hanno una data di scadenza più lunga, dovresti probabilmente cercare una crittografia asimmetrica bidirezionale (con ogni client / server che ha una coppia di chiavi). Essendo offline, il tempo richiesto per crittografare i dati è irrilevante e il processo offline è più incline a lasciare "tracce" dei dati crittografati da qualche parte.

Hai chiesto anche "è sicuro". Beh, dipende da cosa "sicurezza" stai cercando. Nessuna sicurezza se perfetta. Anche la crittografia asimmetrica richiede la fiducia nella media usata per ottenere la chiave pubblica. Spero che il paragrafo precedente ti abbia dato abbastanza indizi su come valutare i tuoi rischi, quindi decidi quanto sei sicuro.

    
risposta data 06.02.2015 - 10:44
fonte
0

Questo è quello che finalmente ho fatto. Potrebbe avere buchi di sicurezza ma non riuscivo a pensare a niente di meglio:

Ho creato una coppia aggiuntiva di chiavi per cui Public key_2 è su Server e Private key_2 su Client Side. Quando i dati devono essere inviati al client in modalità offline, il server crea una chiave AES a 128 bit casuale, crittografa i dati e la chiave viene crittografata utilizzando Public key_2. Inoltre, i dati crittografati vengono sottoposti a hash e l'hash viene firmato utilizzando Private key_1. Tutto ciò quando raggiunge il client, il client genera nuovamente l'hash, lo confronta con l'hash inviato dal server, verifica la firma utilizzando Public Key_1 e decrittografa la chiave AES utilizzando Private key_2.

    
risposta data 07.02.2015 - 20:21
fonte

Leggi altre domande sui tag