Quando si dovrebbe usare RSACryptoServiceProvider vs AESCryptoServiceProvider

1

Sono interessato a conservare certificati per vari scopi su una SmartCard. Poiché questa risposta illustra come ci sono differenze e somiglianze confuse tra RSA e AES

Quando una classe dovrebbe essere utilizzata sull'altra per ottenere la massima interoperabilità? Se la classe non ha importanza tanto quanto le impostazioni, quali sono le impostazioni più appropriate.

Il mio intento è capire quale API (e le corrispondenti impostazioni) è utilizzata al meglio su più piattaforme e attraverso API (Java, 3rd party). Avrei postato questo sul forum Crypto, ma sembra essere più sulla teoria e meno sulla codifica.

    
posta random65537 04.06.2012 - 13:37
fonte

2 risposte

1

Questa è l'unica parte rilevante:

" RijndaelManaged class is a kind of implementation of Rijndael algorithm in .net framework, which was not validated under NIST (National Institute of Standards and Technology) Cryptographic Module Validation Program (CMVP).
However, AesCryptoServiceProvider class calls the Windows Crypto API, which uses RSAENH.DLL, and has been validated by NIST in CMVP. "

Dovresti usare quello che ha soddisfatto le specifiche NIST. Altrimenti non c'è modo di dimostrare che l'algoritmo RSA è sicuro come si pensa, o se è compatibile con altre implementazioni RSA.

    
risposta data 04.06.2012 - 14:47
fonte
0

Mi scuso per aver risposto a una domanda molto vecchia, ma questo è venuto in una mia ricerca e la risposta selezionata non è corretta. Forse la risposta scelta parla alla vera domanda dell'OP, ma la domanda è circa RSACryptoServiceProvider vs AESCryptoServiceProvider , mentre la risposta è circa RjindaelManaged contro AESCryptoServiceProvider

RjindaelManaged è un'implementazione dell'algoritmo di Rjindael che è stato successivamente selezionato per diventare la base dello standard di crittografia AES da parte del NIST. AESCryptoServiceProvider è la scelta migliore per implementare l'algoritmo AES / Rjindael. AES e Rjindael sono entrambi cifrari simmetrici.

RSA, il sistema di cifratura Rivest-Shamir-Adleman, è un codice completamente diverso asimmetrico . È completamente estraneo a AES / Rjindael.

La risposta corretta a quando utilizzare RSACryptoServiceProvider rispetto a AESCryptoServiceProvider dipende dall'uso di un codice simmetrico simmetrico asimmetrico.

In RSA, hai una coppia di chiavi pubblica e privata. Se vuoi avere una chiave pubblica da scambiare, o se vuoi che la tua chiave sia firmata da un'altra parte, vuoi RSA. Ma RSA è relativamente lento e fatto correttamente è a senso unico: la chiave pubblica viene crittografata, la chiave privata viene decrittografata.

Se hai un sacco di testo che vuoi criptare, vuoi AES. È molto più veloce e molti computer sono ottimizzati per questo. Ma c'è solo una chiave. Chiunque abbia la chiave può sia criptare che decrittografare, il che rende la condivisione della chiave in modo sicuro una priorità.

Per il meglio di entrambi i mondi, utilizza un pubblico RSA per crittografare e trasmettere una chiave AES e quindi comunicare usando AES.

    
risposta data 05.12.2017 - 23:20
fonte

Leggi altre domande sui tag