Antwort

22

Ja, rein asymmetrische Verschlüsselung ist viel langsamer als symmetrische Cipher (wie DES oder AES), weshalb echte Anwendungen verwenden hybrid cryptography: die teure Public-Key-Operationen werden nur zum Verschlüsseln (und Austausch) eines Verschlüsselungsschlüssels für die symmetrischer Algorithmus, der zum Verschlüsseln der echten Nachricht verwendet wird.

Das Problem, das Kryptographie mit öffentlichem Schlüssel löst, ist, dass es kein gemeinsames Geheimnis gibt. Bei einer symmetrischen Verschlüsselung müssen Sie allen Beteiligten vertrauen, um den Schlüssel geheim zu halten. Dieses Problem sollte ein viel größeres Problem als die Leistung sein (die mit einem Hybridansatz gemildert werden kann)

4

Verwenden Sie den Befehl OpenSSL speed, um die Algorithmen zu vergleichen und selbst zu sehen.

[[email protected] ~]$ openssl speed aes-128-cbc 
Doing aes-128 cbc for 3s on 16 size blocks: 26126940 aes-128 cbc's in 3.00s 
Doing aes-128 cbc for 3s on 64 size blocks: 7160075 aes-128 cbc's in 3.00s 
... 
The 'numbers' are in 1000s of bytes per second processed. 
type    16 bytes  64 bytes 256 bytes 1024 bytes 8192 bytes 
aes-128 cbc  139343.68k 152748.27k 155215.70k 155745.61k 157196.29k 


[[email protected] ~]$ openssl speed rsa2048 
Doing 2048 bit private rsa's for 10s: 9267 2048 bit private RSA's in 9.99s 
Doing 2048 bit public rsa's for 10s: 299665 2048 bit public RSA's in 9.99s 
... 
        sign verify sign/s verify/s 
rsa 2048 bits 0.001078s 0.000033s 927.6 29996.5 
4

Praktische PKI-basierte Verschlüsselungssysteme verwenden eine asymmetrische Verschlüsselung zum Verschlüsseln eines symmetrischen Schlüssels und dann eine symmetrische Verschlüsselung mit diesem Schlüssel zum Verschlüsseln der Daten (wobei jemand auf ein Gegenbeispiel hinweist).

So ist der zusätzliche Overhead, der von asymmetrischen Kryptoalgorithmen gegenüber dem von symmetrischen verursacht wird, behoben - es hängt nicht von der Datengröße ab, nur von den Schlüsselgrößen.

Als ich das letzte Mal getestet habe, dauerte die Validierung einer Kette von 3 oder so X.509-Zertifikaten [edit to add: und die Daten, die sie signierten] einen Bruchteil einer Sekunde auf einem ARM mit 100MHz oder so über viele Wiederholungen, offensichtlich). Ich kann mich nicht erinnern, wie klein - nicht zu vernachlässigen, aber gut unter einer Sekunde.

Entschuldigung, ich kann mich nicht an die genauen Details erinnern, aber die Zusammenfassung ist, es sei denn, Sie sind auf einem sehr eingeschränkten System oder eine Menge Verschlüsselung (wie wenn Sie so viele SSL Verbindungen wie möglich akzeptieren wollen) , NIST-zugelassene asymmetrische Verschlüsselungsmethoden sind schnell.

0

Vielleicht können Sie einige Details über Ihr Projekt hinzufügen, so dass Sie qualitativ bessere Antworten erhalten. Was versuchst du zu sichern? Von wem? Wenn Sie die Anforderungen Ihrer Sicherheit erklären könnten, erhalten Sie eine viel bessere Antwort. Leistung bedeutet nicht viel, wenn der Verschlüsselungsmechanismus nicht schützt, was Sie denken, dass es ist.

Zum Beispiel sind X509-Zertifikate ein Industriestandard zur Sicherung von Client/Server-Endpunkten. PGP Armoring kann zum Sichern von Lizenzdateien verwendet werden. Der Einfachheit halber ist die Verkettung von Cipher-Blöcken mit Blowfish (und einer Reihe anderer Verschlüsselungen) in Perl oder Java einfach zu verwenden, wenn Sie beide Endpunkte steuern.

Danke.

18

Auf einem Macbook mit OS X 10.5.5 und einer Serienversion von OpenSSL taktet "openssl speed" AES-128-CBC mit 46.000 1024 Bit Blöcken pro Sekunde. Die gleiche Box taktet 1024 Bit RSA mit 169 Signaturen pro Sekunde. AES-128-CBC ist der "Lehrbuch" -Blockverschlüsselungsalgorithmus, und RSA 1024 ist der "Lehrbuch" -Schlüsselalgorithmus.Es ist Äpfel-zu-Orangen, aber die Antwort ist: RSA ist viel, viel langsamer.

Aus diesem Grund sollten Sie jedoch keine Verschlüsselung mit öffentlichem Schlüssel verwenden. Hier sind die wirklichen Gründe:

  1. Public-Key-Verschlüsselungsoperationen nicht für Rohdaten Verschlüsselung bestimmt sind. Algorithmen wie Diffie-Hellman und RSA wurden entwickelt, um Schlüssel für Blockkryptoalgorithmen auszutauschen. So würden Sie beispielsweise einen sicheren Zufallszahlengenerator verwenden, um einen 128-Bit-Zufallsschlüssel für AES zu generieren, und diese 16 Byte mit RSA verschlüsseln.

  2. Algorithmen wie RSA sind viel weniger "benutzerfreundlich" als AES. Mit einem zufälligen Schlüssel wird ein Klartextblock, den Sie AES zuführen, zufällig an jemanden ohne den Schlüssel ausgegeben. Das ist bei RSA tatsächlich nicht der Fall, was - mehr als AES - nur eine mathematische Gleichung ist. Neben dem richtigen Speichern und Verwalten von Schlüsseln müssen Sie daher äußerst vorsichtig mit der Formatierung Ihrer RSA-Klartextblöcke umgehen, da andernfalls Sicherheitslücken entstehen.

  3. Öffentlicher Schlüssel funktioniert nicht ohne eine Schlüsselverwaltungsinfrastruktur. Wenn Sie kein Schema haben, um öffentliche Schlüssel zu verifizieren, können Angreifer ihre eigenen Schlüsselpaare durch die echten ersetzen, um "Man in the middle" -Angriffe zu starten. Aus diesem Grund zwingt SSL Sie, durch die Zertifikate von Zertifikaten zu gehen. Blockkryptoalgorithmen wie AES tun leiden auch unter diesem Problem, aber ohne eine PKI ist AES nicht weniger sicher als RSA.

  4. Kryptooperationen mit öffentlichem Schlüssel sind anfällig für weitere Implementierungsschwachstellen als AES. Zum Beispiel müssen sich beide Seiten einer RSA-Transaktion auf Parameter einigen, die Zahlen sind, die der RSA-Gleichung zugeführt werden. Es gibt bösartige Werte, die Angreifer ersetzen können, um die Verschlüsselung automatisch zu deaktivieren. Das gleiche gilt für Diffie Hellman und noch mehr für Elliptic Curve. Ein anderes Beispiel ist die RSA Signature Forgery-Schwachstelle, die vor zwei Jahren in mehreren High-End-SSL-Implementierungen auftrat.

  5. Mit öffentlichen Schlüssel ist der Beweis, dass Sie etwas "außergewöhnliches" tun. Außergewöhnlich ist, was Sie nie mit Kryptographie sein wollen; Über die Algorithmen hinaus werden Crypto Designs jahrelang auditiert und getestet, bevor sie als sicher gelten.

Um unsere Kunden, die Kryptographie verwenden, in ihren Anwendungen möchten, stellen wir zwei Empfehlungen:

  • Für "ruhende Daten", verwenden PGP. Ja wirklich! PGP wurde für mehr als ein Jahrzehnt vereitelt und gilt als sicher vor dummen Implementierungsfehlern. Es gibt Open-Source- und kommerzielle Varianten davon.

  • Verwenden Sie für "Daten im Flug" TLS/SSL. Kein Sicherheitsprotokoll auf der Welt wird besser verstanden und besser getestet als TLS; Finanzinstitute akzeptieren dies überall als eine sichere Methode, um die sensibelsten Daten zu übertragen.

Here's a decent writeup [matasano.com] me und Nate Lawson, ein professionelles entcoder, schrieb vor ein paar Jahren. Es behandelt diese Punkte ausführlicher.

+0

Es scheint, dass Ihre Verknüpfung der Write-up nicht mehr funktioniert. – skiwi

Verwandte Themen