Utilizzo di RSA con 3DES anziché 3DES normale. Ha senso?

8

Ho un grande codice legacy. Attualmente utilizza la crittografia 3DES per un'applicazione basata su rete. Crittografa i pacchetti di dati con una chiave principale. Questa chiave viene utilizzata per crittografare e decrittografare (simmetrico). E per una doppia sicurezza, stiamo codificando nuovamente questa chiave principale con un'altra chiave (questa volta sta usando una chiave che è codificata nel codice stesso).

Scusami se non uso frasi che abbiano senso per te, visto che sono nuovo in questo settore. Ho solo questo codice legacy e il modo di usare 3DES non ha alcun senso per me. Non è sicuro, abbiamo una chiave hardcoded nel nostro codice e non mi è piaciuto il modo in cui 3DES è usato qui. Perché l'intera cosa si basa sulla crittografia simmetrica.

Quindi ho detto che dovremmo usare RSA e loro mi consegnano un piano di progettazione su come implementare RSA insieme a 3DES. Hanno ideato questo design (hanno detto che hanno inventato questo design ed è l'unico modo per farlo):

Al client:

  • Crea un tasto 3DES casuale ogni volta
  • Encrpyt i dati con questo tasto
  • Cifra la chiave utilizzata per 3DES con RSA e la antepone al blocco dati

Al server:

  • Decifra i dati anteposti con la chiave pubblica RSA del client per ottenere la chiave 3DES
  • Decifra il datablock rimanente con il tasto 3DES

Ho chiesto il significato di utilizzare due algoritmi di crittografia diversi insieme (RSA e 3DES). Ho chiesto perché non abbiamo usato RSA per l'intera operazione invece di utilizzare due algoritmi diversi e combinarli.

Hanno affermato che la crittografia di tutti i dati costerebbe di più e sarebbe costosa (in termini di prestazioni). Tuttavia, se criptiamo semplicemente la chiave e la anteponiamo ai dati, allora non userà molte prestazioni perché questa volta i dati stessi sono piccoli (prima criptiamo tutti i dati, ma questa volta cripteremo solo la chiave).

Ora, il nuovo approccio al design è il modo corretto di farlo? Oppure è una schifezza senza senso e il modo migliore è implementarlo solo per RSA. Qual è il modo migliore per implementare una comunicazione dati sicura? O in qualche modo potrei risolvere il modo precedente per renderlo più sicuro?

    
posta Fatih Arslan 13.06.2012 - 09:01
fonte

2 risposte

12

They said encryption of the whole data would cost more and is expensive (in term of performance).

Questo è corretto. RSA, un algoritmo chiave asimmetrico richiede molta più potenza / tempo di calcolo per crittografare / decodificare i dati rispetto a un algoritmo a chiave simmetrica come DES / 3DES.

Gli algoritmi a chiave asimmetrica vengono solitamente utilizzati come mezzo per comunicare una chiave da utilizzare in un altro algoritmo a chiave simmetrica per il trasferimento dei dati.

Per ulteriori informazioni, consulta: link

Esempio di base tratto da wikipedia:

To encrypt a message addressed to Alice in a hybrid cryptosystem, Bob does the following:

1) Obtains Alice's public key.

2) Generates a fresh symmetric key for the data encapsulation scheme.

3) Encrypts the message under the data encapsulation scheme, using the symmetric key just generated.

4) Encrypt the symmetric key under the key encapsulation scheme, using Alice's public key. Send both of these encryptions to Alice.

To decrypt this hybrid ciphertext, Alice does the following:

1) Uses her private key to decrypt the symmetric key contained in the key encapsulation segment.

2) Uses this symmetric key to decrypt the message contained in the data encapsulation segment.

Forse come miglioramento, la tua azienda considererebbe l'utilizzo di AES anziché di 3DES?

    
risposta data 13.06.2012 - 09:22
fonte
8

Terry Chia ha dato una risposta soddisfacente su come e perché combini RSA con uno schema di crittografia a chiave simmetrica e sono d'accordo che dovresti farlo.

Tuttavia, un'altra cosa che hai detto nella tua domanda mi ha colpito per cui volevo parlarne. Hai detto "Decrittografa i pacchetti di dati con una chiave pubblica che è stata data (inserita) da qualcuno alla macchina (dove è avvenuta la decifrazione)". Non sono sicuro di cosa intendessi, ma ti risponderò come se volessi dire qualcosa che cambia la risposta "giusta".

Uno dei problemi più difficili con tutti i sistemi di crittografia è mantenere le chiavi al sicuro. La soluzione migliore, utilizzata in applicazioni ad alta sicurezza, è quella di archiviare le chiavi in un'unità di crittografia / decrittografia specializzata dotata di sicurezza elettronica e fisica tale che la chiave non possa essere estratta dal dispositivo. O la chiave è generata all'interno del dispositivo da un generatore di numeri casuali crittograficamente sicuro o è programmata nel dispositivo in modo sicuro. Dopodiché, tutta la crittografia e la decrittografia che devono essere eseguite con quella chiave vengono eseguite dal dispositivo stesso e la sicurezza della chiave viene quindi gestita fisicamente fissando il dispositivo.

Quindi, se stai utilizzando un dispositivo del genere per gestire le chiavi pubbliche e private RSA, allora questo impone un sacco di come gestisci altri aspetti del sistema di crittografia generale. E se quel dispositivo può anche gestire le chiavi 3DES e la crittografia, anche questo cambia le cose. Inoltre, potresti trovarti in un ambiente di regolamentazione e / o di integrazione dei sistemi che impone l'uso di 3DES in determinati modi. Tutti questi fattori devono essere presi in considerazione nel progettare la soluzione, quindi per favore ci riempia se qualcuno di loro si applica in modo tale da rendere la soluzione di Terry in qualche modo inapplicabile alla tua situazione.

In generale, tuttavia, un criptato sistema ibrido che utilizza RSA per scambiare una chiave AES a 256 bit che è stata appena generata per ciascuna comunicazione da un generatore di numeri casuali crittograficamente sicuro e quindi crittografare il resto della comunicazione usando AES con quella chiave sarebbe un ottima soluzione. Per favore assicurati che il tuo meccanismo di generazione delle chiavi sia crittograficamente sicuro. Molti, molti schemi di generazione di chiavi sono stati interrotti, generalmente a causa di debolezze nei generatori di numeri casuali. È necessario utilizzare uno che è stato verificato e certificato per l'uso crittografico.

    
risposta data 13.06.2012 - 10:46
fonte

Leggi altre domande sui tag