it-swarm.com.de

RSA maximal zu verschlüsselnde Bytes, Vergleich mit AES in Bezug auf Sicherheit?

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.

30
pandoragami

RSA, wie durch 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 ... Regelmäßig einige Leute schlagen vor, "nur RSA" zu machen, indem sie die Eingabenachricht in 245-Byte-Blöcke aufteilen und jede von ihnen mehr oder weniger separat verschlüsseln. Das ist eine schlechte Idee, weil:

  • Es kann erhebliche Schwachstellen bei der Aufteilung und erneuten Erstellung der Daten geben. 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 einer symmetrischen Blockverschlüsselung, die Blöcke mit n Bits verwendet, treten einige Sicherheitsbedenken auf, wenn die mit einem einzelnen Schlüssel verschlüsselte Datenmenge nahe bei 2 liegtn/2 Blöcke, d. h. n * 2n/2 Bits. Mit AES 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.

61
Thomas Pornin

Der direkte Vergleich der beiden ist ein bisschen wie der Vergleich eines Traktors mit einem Zug - beide sind Fahrzeuge, haben aber 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, um zu beweisen, dass diese authentisch sind. Bei einer von einem privaten Schlüssel signierten Nachricht ist es möglich, diese Signatur mit dem entsprechenden öffentlichen Schlüssel zu überprüfen.

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 nglaublich 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, 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. Das ist schwer direkt zu machen.

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 Alices privaten Schlüssel 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.

Dies erfüllt einige Anforderungen:

  • Die Konversation kann über ein nicht vertrauenswürdiges Netzwerk stattfinden, ohne dass ein Angreifer die Nachrichten lesen kann.
  • Der Sitzungsschlüsselaustausch kann auf sichere Weise durchgeführt werden, d. H. Authentizität und Integrität werden auf dem Schlüssel aufrechterhalten.
  • Die Leistung der Ver- und Entschlüsselung für die tatsächlichen Konversationsdaten ist sehr gut.

In Bezug auf Stufe der Sicherheit ist es nicht wirklich sinnvoll, RSA und AES zu vergleichen. Sie machen verschiedene Jobs. Wir derzeit gehen 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 und die Beschreibung und der RSA-Austausch als "Verschlüsselung" nicht unbedingt korrekt sind. Alles in allem sollte dies jedoch ein angemessener Überblick über die Art und Weise der Zwei Arten von Krypto arbeiten.

41
Polynomial

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 hybrides System implementiert werden, das beide nutzt.

3
Adam Caudill

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

2
Andrew Watson

AES ist ein Algorithmus mit symmetrischen Schlüsseln. RSA ist asymmetrisch. Während beide für die Verschlüsselung bestimmt 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.

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

2
Eric G