benchmark di crittografia asimmetrica e simmetrica

5

Ho trovato questi benchmark nel sito di Crypto ++. link

Ma, onestamente, non sono del tutto sicuro di come interpretarli.

Sto davvero cercando una serie di benchmark, o uno studio, che mostri come la crittografia asimmetrica sia più lenta (e più computazionalmente costosa) della crittografia simmetrica.

Fondamentalmente, qualcosa che li contrappone direttamente l'uno all'altro e mostra le prestazioni più lente dei cifrari asimmetrici.

Qualcuno potrebbe collegarmi a qualcosa del genere? Le mie ricerche su Google si sono rivelate inutili.

    
posta zer0 08.05.2014 - 02:01
fonte

3 risposte

6

Fuori dalla mia testa:

  • Un messaggio RSA raw può essere al massimo lungo il modulo.
  • Un messaggio RSA cotto ha bisogno di padding per essere sicuro. Il padding RSA PKCS # 1.5 richiede (almeno) 11 byte di padding.

E assumerò rsa2048. 2048 bit sono 256 byte non elaborati. Meno 11 per il padding dà 245 byte utilizzabili.

Il sito CryptoPP fornisce:

  • RSA 2048 Firma 6,05 millisecondi / operazione
  • RSA 2048 Verifica 0,16 millisecondi / operazione

Calcolo

  • Firma RSA 2048 6,0 millisecondi / operazione

    • (1000 ms / s) / (6,08 ms / op) == 164,47 op / s
    • 164,47 op / s * 245 byte / op == 40,296 byte / s
  • Verifica RSA 2048 0,16 millisecondi / operazione

    • (1000 ms / s) / (0,16 ms / op) == 6,250 op / s
    • 6250 op / s * 245 byte / op == 1.531,250 byte / s

Quindi: circa 1,5 MByte / s per verificare (/ encrypt). E 40kByte / s per il segno (/ decrypt).

E per "AES / CTR (128 bit key)" la tabella di CryptoPP elenca circa 100 MiB / s.

    
risposta data 16.07.2015 - 16:09
fonte
8

In realtà, l'asserzione che la crittografia asimmetrica sia più lenta della crittografia simmetrica non ha molto senso. Non fanno la stessa cosa Che cosa fa la crittografia asimmetrica, la crittografia simmetrica non può fare; meno intuitivamente, questo funziona anche al contrario: ciò che fa la crittografia simmetrica, la crittografia asimmetrica non può fare.

La crittografia asimmetrica consente di rendere pubblica la chiave di crittografia, senza rivelare la chiave di decodifica; questo è l'ovvio vantaggio della crittografia asimmetrica rispetto alla crittografia simmetrica e il motivo per cui è stato inventato in primo luogo.

Nella direzione opposta: la crittografia asimmetrica elabora solo messaggi di dimensioni limitate e comporta intrinsecamente un overhead di dimensioni non fisse. Ad esempio, con una chiave RSA a 2048 bit e seguendo lo standard PKCS # 1 ( RSAES-PKCS1-v1_5 ), i messaggi di input non possono superare la lunghezza di 245 byte e tuttavia producono un output a 256 byte. Non è chiaro come un messaggio più lungo debba essere suddiviso in sotto-messaggi da elaborare singolarmente con RSA; questo appare superficialmente come il problema del "concatenamento" con i cifrari a blocchi, per il quale sono state definite le modalità di funzionamento , consentendo l'elaborazione di massa di dati in ingresso. Tuttavia, i cifrari a blocchi sono semplici: funzionano su sequenze di bit gradevoli e i blocchi crittografati sono indistinguibili dalla casualità uniforme. Lo stesso non vale per, per esempio, RSA, dove i messaggi crittografati sono interi formano un grande numero intero che non è una potenza di 2, che induce pregiudizi. Questo problema di incatenamento delle crittografie RSA non è ben studiato e non sembra avere ovviamente soluzioni sicure.

L'overhead delle dimensioni per la crittografia asimmetrica è consustanziale alla sua asimmetria: poiché la chiave di crittografia è pubblica, chiunque può provare a crittografare i dati con la chiave di crittografia. Se la crittografia è deterministica, allora questo consente un attacco immediato di forza bruta sul testo in chiaro (l'utente malintenzionato tenta valori di testo in chiaro fino a quando non viene trovata una corrispondenza). Per evitare ciò, la crittografia DEVE essere non deterministica, che a sua volta implica un aumento delle dimensioni (a causa di pigeonholes ).

La prima conseguenza è che la crittografia asimmetrica non è buona per la crittografia di massa. Quando i dati da crittografare sono più grandi delle dimensioni elementari dell'algoritmo, non sappiamo davvero come farlo in modo sicuro, ma abbiamo ragioni piuttosto fondamentali per ritenere che sarebbe costoso in termini di larghezza di banda della rete.

Nessuno dei precedenti riguarda il costo computazionale. Per fare un confronto significativo che tenga conto del costo computazionale, si deve essere in un contesto in cui esiste, in effetti, una scelta tra la crittografia simmetrica e asimmetrica da effettuare. Fondamentalmente, questa sarebbe una situazione in cui:

  • Vuoi la crittografia asimmetrica per un messaggio m .
  • È possibile utilizzare la cosiddetta "crittografia ibrida": crittografia asimmetrica per crittografare una chiave casuale K , che verrà quindi utilizzata per elaborare i dati con un algoritmo di crittografia simmetrica.
  • Il messaggio m potrebbe essere elaborato direttamente con l'algoritmo di crittografia asimmetrica.

La terza condizione significa che m è abbastanza piccolo da essere l'input di una singola chiamata dell'algoritmo di crittografia asimmetrica, poiché altrimenti non si saprebbe come elaborarlo. In tal caso, la crittografia asimmetrica cruda necessariamente vince, poiché la scelta è tra "una crittografia asimmetrica" e "una crittografia asimmetrica più alcune cose di crittografia simmetrica". D'altra parte, se la dimensione di m può superare quella che può essere elaborata con una singola chiamata all'algoritmo di crittografia, allora si torna al problema della concatenazione e qualsiasi discorso sulle prestazioni è al meglio prematura: prima definisci cosa vuoi fare, vedi se è sicuro, e poi (solo allora) possiamo parlare di velocità.

Per fare un'analogia: potresti chiedere quale veicolo è più veloce, tra questo:

equello:

Se pensi che la risposta sia ovvia, porta la tua Ferrari in un lago ...

    
risposta data 26.09.2015 - 17:18
fonte
2

I cifrari simmetrici (anche quelli descritti come "cifrari a blocchi") sono solitamente usati in modo simile al flusso, crittografando o decifrando una sequenza di byte di lunghezza arbitraria. Di conseguenza, misurare la loro velocità in MB / s è una cosa utile da fare.

I cifrari asimmetrici vengono solitamente utilizzati in modo simile a un blocco, crittografando o decifrando una singola piccola porzione di dati. Questa operazione richiede la stessa quantità di tempo indipendentemente dal fatto che si tratti di un singolo bit, un hash a 32 byte o un blocco di dimensioni massime. Di conseguenza, misurare la loro velocità in operazioni / s è una cosa utile da fare.

Potresti calcolare la velocità simile a un flusso di un codice asimmetrico scoprendo le dimensioni massime del blocco e moltiplicando la sua velocità in operazioni / s. Poiché i cifrari asimmetrici non vengono quasi mai utilizzati in modalità stream, questa non è una cosa molto utile da fare.

    
risposta data 17.12.2014 - 06:51
fonte

Leggi altre domande sui tag