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?