Frage:
RSA maximal zu verschlüsselnde Bytes, Vergleich mit AES in Bezug auf Sicherheit?
pandoragami
2013-03-30 10:23:20 UTC
view on stackexchange narkive permalink

Was ist die maximale Anzahl von Bytes zum Verschlüsseln einer Klartextnachricht mit RSA, die relativ sicher und auch effizient ist und AES bei gleicher Größe in Bytes besser wäre? Die Verschlüsselung muss übrigens nicht öffentlich sein, ich frage mich nur, ob AES bei einer Kurznachricht genauso gut ist wie bei einem großen Dokument. Grundsätzlich würde die Nachricht oder das Dokument verschlüsselt gesendet, aber der Schlüssel würde niemals veröffentlicht. Ich denke, das würde auch den Zweck von RSA zunichte machen, aber ich habe ein paar Mal online gelesen, dass RSA gut für kurze Nachrichten und AES gut für lange ist.

Fünf antworten:
Thomas Pornin
2013-03-30 18:50:18 UTC
view on stackexchange narkive permalink

RSA, wie in PKCS # 1 definiert, verschlüsselt "Nachrichten" von begrenzter Größe. Mit dem häufig verwendeten "v1.5-Padding" und einem 2048-Bit-RSA-Schlüssel beträgt die maximale Datengröße, die mit RSA verschlüsselt werden kann, 245 Byte. Nicht mehr.

Wenn Sie "Daten mit RSA verschlüsseln", verschlüsseln Sie in der Praxis tatsächlich einen zufälligen symmetrischen Schlüssel mit RSA und verschlüsseln die Daten dann mit einem symmetrischen Verschlüsselungsalgorithmus, dessen Größe nicht begrenzt ist . So funktioniert es in SSL, S / MIME, OpenPGP... Einige Leute schlagen regelmäßig vor, "nur RSA" zu machen, indem sie das aufteilen Geben Sie die Nachricht in 245-Byte-Blöcke ein und verschlüsseln Sie sie mehr oder weniger separat. Dies ist eine schlechte Idee, weil:

  • die Aufteilung und anschließende Neuerstellung der Daten erhebliche Schwachstellen aufweisen kann. Dafür gibt es keinen gut untersuchten Standard.
  • Jeder Chunk wächst, wenn er verschlüsselt ist, ein bisschen (mit einem 2048-Bit-Schlüssel werden die 245 Datenbytes zu 256 Bytes). Bei der Verarbeitung großer Datenmengen wird der Größenaufwand erheblich.
  • Die Entschlüsselung einer großen Nachricht kann unerträglich teuer werden.

Beim Verschlüsseln von Daten mit a Bei der symmetrischen Blockverschlüsselung, bei der Blöcke mit n Bits verwendet werden, treten einige Sicherheitsbedenken auf, wenn die mit einem einzelnen Schlüssel verschlüsselte Datenmenge nahe an 2 n / 2 sup kommt > Blöcke, dh n*2 n / 2 sup> Bits. Bei AES ist n = 128 (AES-128, AES-192 und AES-256 verwenden alle 128-Bit-Blöcke). Dies bedeutet eine Grenze von mehr als 250 Millionen Terabyte, die groß genug ist, um kein Problem zu sein. Genau aus diesem Grund wurde AES mit 128-Bit-Blöcken anstelle der damals üblichen 64-Bit-Blöcke definiert, sodass die Datengröße praktisch unbegrenzt ist.

"Es kann erhebliche Schwachstellen geben, wie die Daten aufgeteilt und dann neu erstellt werden."-Kannst du bitte näher darauf eingehen?Ein Beispiel wäre gut.
Ich würde in keiner Empfehlung n * 2 ^ (n / 2) Bits verwenden.Sobald Sie diese Anzahl von Bits erreicht haben, steigt die Wahrscheinlichkeit einer Kollision schnell an und Sie haben eine Wahrscheinlichkeit von weit über 50% für eine Kollision, wenn Sie 2 * n * 2 ^ (n / 2) Bits erreichen.Um die Wahrscheinlichkeit einer Kollision vernachlässigbar zu halten, empfehle ich, nicht mehr als n * 2 ^ (n / 4) Bits mit demselben Schlüssel zu verschlüsseln.Im Fall von AES funktioniert das auf 64 GB.
Polynomial
2013-03-30 15:25:54 UTC
view on stackexchange narkive permalink

Der direkte Vergleich der beiden ist ein bisschen wie der Vergleich eines Traktors mit einem Zug - beide sind Fahrzeuge, haben jedoch eine völlig unterschiedliche Funktion und Konstruktion.

RSA ist eine asymmetrische Chiffre. Es ist ideal für den sicheren Austausch von Nachrichten über ein nicht vertrauenswürdiges Netzwerk, da der öffentliche Schlüssel jedem bekannt sein kann - eine mit dem öffentlichen Schlüssel verschlüsselte Nachricht kann nur mit dem privaten Schlüssel entschlüsselt werden. Wenn zwei Parteien die öffentlichen Schlüssel des anderen kennen, können sie Nachrichten sicher austauschen. Dies bedeutet, dass keine geheimen Informationen übertragen werden müssen - solange Authentizität und Integrität erhalten bleiben, sind Sie sicher. Zum Glück bietet RSA eine Methode zum Generieren von Signaturen für Daten, mit deren Hilfe nachgewiesen werden kann, dass diese authentisch sind. Bei einer von einem privaten Schlüssel signierten Nachricht kann diese Signatur mit dem entsprechenden öffentlichen Schlüssel überprüft werden.

Als Faustregel gilt, dass Sie nur Daten verschlüsseln können, die so groß sind wie die RSA-Schlüssellänge. Wenn Sie also einen 4096-Bit-RSA-Schlüssel haben, können Sie nur Nachrichten mit einer Länge von bis zu 4096 Bit verschlüsseln. Nicht nur das, es ist auch unglaublich langsam. RSA ist nicht als Datentransport-Verschlüsselung mit voller Geschwindigkeit konzipiert.

AES ist eine symmetrische Blockverschlüsselung und unglaublich schnell . Der Klartext wird in Blöcke aufgeteilt, die als Blöcke bezeichnet werden, und jeder Block wird in einer Kette verschlüsselt. Es gibt verschiedene Möglichkeiten, dies zu tun, aber eine übliche Methode wird als Cipher Block Chaining oder kurz CBC bezeichnet. Dies ermöglicht theoretisch unendliche Nachrichtengrößen. Bei symmetrischen Chiffren wie AES muss jedoch zuerst ein geheimer Schlüssel ausgetauscht werden. Im Gegensatz zu RSA muss der gemeinsam genutzte Schlüssel Angreifern unbekannt bleiben, daher müssen Sie Authentizität, Integrität und Geheimhaltung gewährleisten. Dies ist schwierig direkt durchzuführen.

Sie werden feststellen, dass beide Schemata zusammen implementiert sind, sodass RSA verwendet wird, um den Schlüssel gegen eine Blockverschlüsselung wie AES auszutauschen :

  1. Alice und Bob kennen die öffentlichen RSA-Schlüssel des anderen. Im Allgemeinen werden diese außerhalb des Bandes ausgetauscht, z. über ein Zertifikat, das als Teil Ihres Betriebssystems bereitgestellt wird.
  2. Alice wählt einen zufälligen 256-Bit-Schlüssel für AES aus und verschlüsselt diesen Schlüssel mit Bobs öffentlichem Schlüssel. Sie signiert diese Nachricht mit ihrem privaten Schlüssel und sendet sie an Bob.
  3. Bob verwendet den öffentlichen Schlüssel von Alice, um die Signatur zu überprüfen. Anschließend entschlüsselt er die Nachricht mit seinem privaten Schlüssel.
  4. Eve (ein Lauscher) hat die verschlüsselte Nachricht gesehen, kann sie jedoch nicht entschlüsseln, ohne Bobs privaten Schlüssel zu kennen. Sie kann die Nachricht auch nicht ändern, da dadurch die Signatur falsch wird. Sie kann keine gültige Signatur neu generieren, ohne den privaten Schlüssel von Alice zu kennen.
  5. Alice und Bob teilen sich jetzt einen geheimen 256-Bit-Schlüssel und verwenden diesen, um Nachrichten mit einer symmetrischen Verschlüsselung wie AES zu verschlüsseln.
  6. ol>

    Dies erfüllt einige Anforderungen:

  • Die Konversation kann über ein nicht vertrauenswürdiges Netzwerk stattfinden, ohne dass ein Angreifer die Nachrichten lesen kann.
  • Der Austausch des Sitzungsschlüssels kann auf sichere Weise erfolgen, dh Authentizität und Integrität des Schlüssels bleiben erhalten.
  • Die Leistung der Ver- und Entschlüsselung für die tatsächlichen Konversationsdaten ist sehr gut.
/ ul>

In Bezug auf die Sicherheitsstufe ist es nicht sehr sinnvoll, RSA und AES zu vergleichen. Sie machen verschiedene Jobs. Wir gehen derzeit davon aus, dass 128-Bit-AES-Schlüssel sicher sind und dass 2048-Bit-RSA-Schlüssel sicher sind. Dies hängt jedoch vollständig von den individuellen Sicherheitsanforderungen ab. Die Verwendung von 256-Bit-AES- und 4096-Bit-RSA-Schlüsseln sollte für das nächste Jahrzehnt mehr als ausreichend sein, vorausgesetzt, die Implementierung ist solide.

Beachten Sie, dass dies alles eine Vereinfachung darstellt, da es viele Einschränkungen und Details gibt Die Beschreibung und der RSA-Austausch als "Verschlüsselung" sind nicht unbedingt korrekt, aber alles in allem sollte dies ein angemessener Überblick über die Funktionsweise der beiden Krypto-Typen auf hoher Ebene sein.

Dies ist der klarste Überblick über die Funktionsweise der beiden Systeme für einen Anfänger, den ich gefunden habe. Vielen Dank. Ich habe diese Informationen in Verbindung mit http://www.androidauthority.com/use-android-keystore-store-passwords-sensitive-information-623779/ verwendet, um eine sichere (ebenso sichere wie den Android Keystore) Token-Verschlüsselung in meinem zu implementieren App.
Sehr schöner Überblick über die Funktionsweise hybrider Kryptosysteme.Ich möchte jedoch nicht auf die folgende Zeile eingehen: "Wenn Sie einen 4096-Bit-RSA-Schlüssel haben, können Sie nur Nachrichten mit einer Länge von bis zu 4096 Bit verschlüsseln."Das ist technisch nicht wahr - es wären weniger als 4096 Bit und die genaue Menge würde von dem verwendeten Auffüllschema abhängen.Ich verstehe, dass Sie vielleicht versucht haben, hier eine allgemeine Aussage zu machen, aber der aktuelle Wortlaut scheint meiner Meinung nach "Schlüsselgröße = Nachrichtenlängenbegrenzung" zu implizieren.
Adam Caudill
2013-03-30 13:53:54 UTC
view on stackexchange narkive permalink

Ein Grund dafür, dass RSA normalerweise nicht für größere Datenmengen verwendet wird, ist die Leistung. Sowohl RSA als auch AES sind für große und kleine Datenmengen sicher (bei korrekter Implementierung), RSA ist jedoch viel langsamer.

In Fällen, in denen Krypto mit öffentlichem Schlüssel sinnvoll ist, jedoch mehr Leistung erforderlich ist, kann ein Hybrid -System implementiert werden, das beide Vorteile nutzt.

Andrew Watson
2014-11-20 09:01:50 UTC
view on stackexchange narkive permalink

Laut GoLang-Kryptopaket "darf die Nachricht nicht länger als die Länge des öffentlichen Moduls minus 11 Byte sein". http://golang.org/pkg/crypto/rsa/#EncryptPKCS1v15

Eric G
2013-03-30 10:59:17 UTC
view on stackexchange narkive permalink

AES ist ein Algorithmus mit symmetrischen Schlüsseln. RSA ist asymmetrisch. Während beide für die Verschlüsselung vorgesehen sind, werden sie häufig auf unterschiedliche Weise verwendet, so dass es schwierig ist, sie hinsichtlich Effizienz oder Stärke zu vergleichen, da der Zweck für die Verwendung des einen gegenüber dem anderen wahrscheinlich eine größere Determinante für die eine oder die Klasse von ist Verschlüsselung wird verwendet.

Möglicherweise möchten Sie mit dieser anderen Frage beginnen: Verschlüsselung - sollte ich RSA oder AES verwenden?

Ich habe diesen Thread bereits gesehen und aus diesem Grund habe ich diese Frage gestellt. Ich nehme an, die unterschiedlichen Verwendungen von RSA und AES machen meine Frage sinnlos, da ein Vergleich der beiden wie ein Vergleich zweier nicht verwandter Dinge wäre.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...