Frage

Wir suchen einige schwere Sicherheitsanforderungen an unserem Projekt zu tun, und wir brauchen viel Verschlüsselung zu tun, die hoch performant ist.

Ich denke, dass ich weiß, dass PKI ist viel langsamer und komplexer als die symmetrische Verschlüsselung, aber ich kann die Zahlen nicht finden, meine Gefühle zu sichern.

War es hilfreich?

Lösung

Ja, rein asymmetrische Verschlüsselung ist viel langsamer als symmetrische Chiffren (wie DES oder AES), weshalb realen Anwendungen

Andere Tipps

Auf einem MacBook mit OS X 10.5.5 und ein Lager Build von OpenSSL "openssl speed" Uhren AES-128-CBC bei 46.000 1024-Bit-Blöcken pro Sekunde. Am selben Box Uhren 1024-Bit-RSA bei 169 Signaturen pro Sekunde. AES-128-CBC ist der „Lehrbuch“ Blockverschlüsselungsalgorithmus und RSA 1024 ist der „Lehrbuch“ Public-Key-Algorithmus. Es ist Äpfel mit Orangen, aber die Antwort ist: RSA ist viel, viel langsamer

.

Das ist nicht, warum Sie nicht Public Key-Verschlüsselung verwenden sollen, jedoch. Hier sind die wirklichen Gründe:

  1. Public-Key-Verschlüsselungsoperationen sind nicht für die Rohdaten-Verschlüsselung bestimmt . Algorithmen wie Diffie-Hellman und RSA wurden als eine Möglichkeit zum Austausch von Schlüsseln für die Blockverschlüsselungsalgorithmen entwickelt. So zum Beispiel, würden Sie einen sicheren Zufallszahlengenerator verwenden, um einen 128-Bit-zufälligen Schlüssel für AES zu erzeugen und verschlüsseln diese 16 Bytes mit RSA.

  2. Algorithmen wie RSA sind viel weniger "benutzerfreundlich" als AES . Mit einem zufälligen Schlüssel, ein Klartext-Block Sie AES-Feed wird zufällig kommen, um zu jedermann ohne den Schlüssel. Das ist eigentlich nicht der Fall mit RSA, das ist --- mehr als AES --- nur eine mathematische Gleichung. So zusätzlich zum Speichern und Schlüssel ordnungsgemäß zu verwalten, müssen Sie sehr vorsichtig sein mit der Art und Weisen Sie Ihre RSA-Text-Blöcke zu formatieren, oder Sie mit Schwachstellen enden.

  3. Öffentliche Schlüssel funktionieren nicht ohne Schlüssel-Management-Infrastruktur . Wenn Sie nicht über ein System haben öffentliche Schlüssel, um zu überprüfen, können Angreifer ihre eigenen Schlüsselpaare für die echten ersetzen „man in the middle“ Angriffe zu starten. Aus diesem Grund Sie SSL Kräfte durch die rigamarole von Zertifikaten zu gehen. Block Verschlüsselungsalgorithmen wie AES tun leidet unter diesem Problem auch, aber ohne PKI, AES ist nicht weniger sicher als RSA.

  4. Public-Key-Verschlüsselungsoperationen sind anfällig für mehr Umsetzungslücken als AES . Zum Beispiel haben beide Seiten einer RSA-Transaktion auf Parameter vereinbaren, die Zahlen auf die RSA-Gleichung zugeführt werden. Es gibt böse Werte Angreifer ersetzen in kann zu leise Verschlüsselung zu deaktivieren. Das gleiche gilt für Diffie Hellman und noch mehr für Elliptic Curve. Ein weiteres Beispiel ist die RSA-Signatur fälschungsSchwachStelle, die 2 Jahre aufgetreten vor in mehreren High-End-SSL-Implementierungen.

  5. ist öffentliche Schlüssel Anzeichen dafür, dass Sie etwas tun, „aus dem üblichen“ . Außergewöhnliches ist genau das, was Sie nie will mit Kryptographie sein; darüber hinaus nur die Algorithmen, Krypto Entwürfe sind seit Jahren geprüft und getestet, bevor sie als sicher sind.

Um unsere Kunden, die Kryptographie in ihren Anwendungen nutzen wollen, stellen wir zwei Empfehlungen:

  • Für "ruhende Daten", verwendet PGP . Ja wirklich! PGP ist seit mehr als einem Jahrzehnt verprügeln und ist sicher vor stummen Implementierung Fehler betrachtet. Es gibt Open-Source und kommerzielle Varianten davon.

  • Für "Daten im Flug", verwendet TLS / SSL . Kein Sicherheitsprotokoll in der Welt wird besser verstanden und besser getestet als TLS; Finanzinstitute sie als sichere Methode überall nehmen die sensiblen Daten zu bewegen.

Hier ist ein anständiger writeup [Matasano. com] mir und Nate Lawson, ein professionelles entcoder, schrieb vor ein paar Jahren. Es deckt diese Punkte näher.

Mit dem OpenSSL speed Befehl, um die Algorithmen zur Benchmark und sehen für sich selbst.

[dave@hal9000 ~]$ 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


[dave@hal9000 ~]$ 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

Practical PKI-basierten Verschlüsselungssysteme verwenden eine asymmetrische Verschlüsselung mit einem symmetrischen Schlüssel zu verschlüsseln, und dann die symmetrische Verschlüsselung mit dem Schlüssel, um die Daten zu verschlüsseln (gesagt hat, dass jemand ein Gegenbeispiel weisen wird).

So ist der zusätzliche Aufwand durch asymmetrische Kryptoalgorithmen gegenüber der symmetrischen auferlegt fixiert ist -. Es hängt nicht von der Datengröße, nur auf den Schlüsselgrößen

Letztes Mal hat ich dies getestet, eine Kette von 3 oder so X.509-Zertifikaten Validieren [Bearbeiten hinzuzufügen: und die Daten, die sie wurden Unterzeichnung] wurden einen Bruchteil einer Sekunde auf einer ARM nehmen bei 100 MHz laufen oder so (gemittelt über viele Wiederholungen, natürlich). Ich kann mich nicht erinnern, wie klein -. Nicht zu vernachlässigen, aber auch unter einem zweiten

Leider kann ich nicht die genauen Details erinnern, aber die Zusammenfassung ist, dass, wenn Sie auf einem sehr eingeschränkten System sind oder viel Verschlüsselung zu tun (wie wenn Sie wollen eine zweite möglichst viele SSL-Verbindungen akzeptieren), NIST genehmigte asymmetrische Verschlüsselungsverfahren sind schnell.

Anscheinend ist es 1000x schlimmer. ( http://windowsitpro.com/article/articleid/93787 /symmetric-vs-asymmetric-ciphers.html ). Aber es sei denn, Sie wirklich durch eine Menge von Daten funktioniert es geht auf die Materie nicht. Was können Sie tun, ist die asymmetrische Verschlüsselung verwenden, um einen symmetrischen Verschlüsselungsschlüssel auszutauschen.

Vielleicht können Sie einige Details zu Ihrem Projekt hinzufügen, so dass Sie eine bessere Qualität Antworten bekommen. Was wollen Sie sicher? Von wem? Wenn Sie die Anforderungen Ihrer Sicherheit erklären könnte, haben Sie eine viel bessere Antwort bekommen. Leistung bedeutet nicht viel, wenn der Verschlüsselungsmechanismus nicht schützen, was Sie denken, es ist.

Zum Beispiel X509-Zertifikate sind ein Industriestandardmethode Client / Server-Endpunkte zu sichern. PGP armoring kann verwendet werden, um Lizenzdateien zu sichern. Die Einfachheit halber mit Blowfish Cipher Block (und vielen anderen Chiffren) Chaining ist einfach in Perl oder Java verwenden, wenn Sie beiden Endpunkte steuern.

Danke.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top