Abo
  • Services:
Anzeige
Beim Verschlüsselungsverfahren RSA wird mit großen Zahlen gerechnet.
Beim Verschlüsselungsverfahren RSA wird mit großen Zahlen gerechnet. (Bild: Screenshot Golem.de)

Kryptographie: Rechenfehler mit großen Zahlen

Beim Verschlüsselungsverfahren RSA wird mit großen Zahlen gerechnet.
Beim Verschlüsselungsverfahren RSA wird mit großen Zahlen gerechnet. (Bild: Screenshot Golem.de)

Kryptographische Algorithmen benötigen oft Berechnungen mit großen Ganzzahlen. Immer wieder werden Fehler in den entsprechenden Bibliotheken gefunden. Diese können zu Sicherheitslücken werden.

Anzeige

Im Januar veröffentlichte OpenSSL ein Sicherheitsupdate, in dem ein Fehler in einer mathematischen Funktion behoben wurde. In sehr seltenen Fällen verrechnete sich OpenSSL beim Versuch, eine große Zahl zu quadrieren. Dieser Fehler in der Funktion BN_sqr() war Anlass für Ralph-Philipp Weinmann, mögliche Sicherheitslücken durch fehlerhafte Berechnungen in sogenannten Bignum-Funktionen zu untersuchen. Auf der Black-Hat-Konferenz in Las Vegas stellte er seine Ergebnisse vor.

Berechnungen mit großen Zahlen wichtig für Public-Key-Kryptographie

Insbesondere Public-Key-Algorithmen benötigen oft Berechnungen mit großen Ganzzahlen. So müssen etwa bei einer RSA-Verschlüsselung Zahlen mit mehreren Tausend Bit multipliziert und potenziert werden. Verschlüsselungsbibliotheken wie OpenSSL besitzen daher entsprechende Funktionen, um mit großen Zahlen zu rechnen.

Bereits 2008 veröffentlichten die Kryptographen Eli Biham, Yaniv Carmeli und Adi Shamir ein Paper, in dem sie der Frage nachgingen, wie Rechenfehler durch fehlerhafte Hardware zu Sicherheitslücken führen könnten. Das Paper betrachtete überwiegend theoretische Fehler, das einzige praxisrelevante Beispiel war der FDIV-Bug in Intel-Pentium-Prozessoren, der allerdings aus heutiger Sicht nur noch historische Bedeutung hat.

Bitcoin-Entwickler finden OpenSSL-Rechenfehler

Der oben bereits erwähnte Bug in OpenSSL wurde bei Tests der Bibliothek libsecp256k1 entdeckt, die von einigen Bitcoin-Implementierungen genutzt wird. Es handelt sich um einen Fehler beim Übertrag des Carry-Bits, der in einigen Spezialfällen auftritt. Zufällig finden kann man den Bug praktisch nicht, da der Rechenfehler nur in einem von 2^128 Fällen auftritt. Die OpenSSL-Entwickler untersuchten zahlreiche Möglichkeiten, wie der Fehler ausgenutzt werden könnte und schätzten das Risiko letztendlich als gering ein.

Bei der Berechnung von RSA wird die entsprechende Quadrier-Funktion nur unter wenigen Architekturen genutzt. Selbst dort, wo sie zum Einsatz kommt, sorgt das sogenannte RSA-Blinding dafür, dass die Eingabedaten durch einen Zufallswert beeinflusst werden und somit nicht durch einen Angreifer kontrolliert werden können. Beim Schlüsselaustausch mit elliptischen Kurven (ECDH) kann der Fehler zwar auftreten, allerdings nur bei der Verifikation von Kurvenpunkten, und es gibt keine praktikable Möglichkeit, derartige fehlerhafte Kurvenpunkte zu konstruieren. Die OpenSSL-Entwickler haben noch diverse weitere potenzielle Fehlerquellen untersucht, haben aber letztendlich alle als harmlos eingeschätzt.

Weinmann kann zwar den meisten Argumenten der OpenSSL-Entwickler folgen, er weist aber darauf hin, dass einige Szenarien dabei nicht beachtet wurden. Alle Argumente gelten nur dann, wenn die OpenSSL-eigenen Kryptofunktionen genutzt werden. Aber die Bignum-Berechnungsfunktionen können auch von anderen Bibliotheken genutzt werden. So nutzt beispielsweise die Java-Implementierung unter Android zur Verschlüsselung eine Bibliothek namens Spongy Castle, diese wiederum greift auf die Bignum-Funktionen von OpenSSL zurück.

Der Code für elliptische Kurven in OpenSSL wurde vor nicht allzu langer Zeit stark überarbeitet und durch eine optimierte Version ersetzt. Die Betrachtungen der OpenSSL-Entwickler gelten allerdings nur für den neuen Code, ältere Versionen - Weinmann nennt 1.0.1e - sind möglicherweise von ganz anderen Problemen betroffen.

Carry-Übertrag sehr fehleranfällig

Wie sich herausstellte, sind Fehler beim Carry-Übertrag extrem häufig, die überwiegende Zahl der Rechenfehler in Bignum-Bibliotheken tritt beim Carry-Übertrag auf. So behob die 2012 veröffentlichte Version 5.0.4 einen Rechenfehler bei bestimmten Multiplikationen mit dem Carry-Übertrag. Auch in der NaCl-Verschlüsselungsbibliothek wurde ein Fehler in der Implementierung von Ed25519-Signaturen gefunden, der ebenfalls mit dem Carry-Übertrag zusammenhing. Ein Sicherheitsproblem trat dort nicht auf, da der fehlerhafte Code lediglich bei der Schlüsselerzeugung und bei Signaturen genutzt wird und somit keine vom Angreifer kontrollierten Daten betroffen sind. Die Wahrscheinlichkeit für ein zufälliges Auftreten ist vernachlässigbar gering.

Das einzige Beispiel, in dem gezeigt werden konnte, dass ein Software-Rechenfehler auch ganz praktisch ausgenutzt werden kann, ist ein Paper aus dem Jahr 2011. Genutzt wurde dabei ein Fehler in der sehr alten OpenSSL-Version 0.9.8g. Mittels einiger gezielter Anfragen konnte damit der Schlüssel eines Schlüsselaustauschverfahrens mittels ECDH extrahiert werden.

Fehlerhafter Code an riskanter Stelle in GnuPG 

eye home zur Startseite
MartinPaul 09. Aug 2015

Ich meine meine Grammatik ist nicht nur wegen dem Smartphone das ich zum antworten nutze...

DerVorhangZuUnd... 07. Aug 2015

Danke für den Hinweis. Diese Implementierung kannte ich noch nicht. Trotzdem finde ich...



Anzeige

Stellenmarkt
  1. STAHLGRUBER GmbH, Poing, Raum München
  2. Wolters Kluwer Deutschland GmbH, Hürth bei Köln
  3. BG-Phoenics GmbH, München
  4. SICK AG, Reute bei Freiburg im Breisgau


Anzeige
Blu-ray-Angebote
  1. (u. a. The Big Bang Theory, The Vampire Diaries, True Detective)
  2. (u. a. Fast & Furious 1-7 Blu-ray 26,49€, Indiana Jones Complete Blu-ray 14,76€, The Complete...
  3. (u. a. The Revenant 7,97€, James Bond Spectre 7,97€, Der Marsianer 7,97€)

Folgen Sie uns
       


  1. ZTE

    Chinas großes 5G-Testprojekt läuft weiter

  2. Ubisoft

    Far Cry 5 bietet Kampf gegen Sekte in und über Montana

  3. Rockstar Games

    Waffenschiebereien in GTA 5

  4. Browser-Games

    Unreal Engine 4.16 unterstützt Wasm und WebGL 2.0

  5. Hasskommentare

    Bundesrat fordert zahlreiche Änderungen an Maas-Gesetz

  6. GVFS

    Windows-Team nutzt fast vollständig Git

  7. Netzneutralität

    Verbraucherschützer wollen Verbot von Stream On der Telekom

  8. Wahlprogramm

    SPD fordert Anzeigepflicht für "relevante Inhalte" im Netz

  9. Funkfrequenzen

    Bundesnetzagentur und Alibaba wollen Produkte sperren

  10. Elektromobilität

    Qualcomm lädt E-Autos während der Fahrt auf



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Quantencomputer: Nano-Kühlung für Qubits
Quantencomputer
Nano-Kühlung für Qubits
  1. IBM Q Mehr Qubits von IBM
  2. Quantencomputer Was sind diese Qubits?
  3. Verschlüsselung Kryptographie im Quantenzeitalter

XPS 13 (9365) im Test: Dells Convertible zeigt alte Stärken und neue Schwächen
XPS 13 (9365) im Test
Dells Convertible zeigt alte Stärken und neue Schwächen
  1. Schnittstelle Intel pflegt endlich Linux-Treiber für Thunderbolt
  2. Atom C2000 & Kaby Lake Updates beheben Defekt respektive fehlendes HDCP 2.2
  3. UP2718Q Dell verkauft HDR10-Monitor ab Mai 2017

Calliope Mini im Test: Neuland lernt programmieren
Calliope Mini im Test
Neuland lernt programmieren
  1. Arduino Cinque RISC-V-Prozessor und ESP32 auf einem Board vereint
  2. MKRFOX1200 Neues Arduino-Board erscheint mit kostenlosem Datentarif
  3. Creoqode 2048 Tragbare Spielekonsole zum Basteln erhältlich

  1. Re: gesamtwirtschaftlich gesehen günstiger...

    Squirrelchen | 06:16

  2. Re: Warum nicht früher?

    Crass Spektakel | 05:50

  3. Zu schnell

    Crass Spektakel | 05:43

  4. Wäre dies eine Energiesparlösung gegenüber einem...

    Signator | 03:56

  5. Re: 1400W... für welche Hardware?

    Ach | 03:47


  1. 17:40

  2. 16:40

  3. 16:29

  4. 16:27

  5. 15:15

  6. 13:35

  7. 13:17

  8. 13:05


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel