Eine allgemeine Kryptobibliothek für Hersteller von IT-Sicherheits- und VS-Produkten

René Korthaus Daniel Neus

15. Deutscher IT-Sicherheitskongress Bonn, den 18.05.2017 Motivation

ı Kryptographie ist fundamentaler Baustein sicherer Systeme ı Sicherheitsziele: Vertraulichkeit, Integrität, Authentizität, Nichtabstreitbarkeit § Beispiele: IPSec, TLS, Festplattenverschlüsselung ı Umsetzung einer Kryptobibliothek jedoch fehlerträchtig § Auswahl geeigneter Verfahren § Implementierung (z.B. Padding Oracle, Timing-Angriffe) § Programmierfehler (z.B. ) § Außerdem: Fehler bei der Benutzung (z.B. Sony Playstation 3 Hack) ı Entwicklung einer allgemeinen Kryptobibliothek in Zusammenarbeit mit dem BSI § Berücksichtigt Empfehlungen aus relevanten technischen Richtlinien ı Beschaffung und Bewertung einer geeigneten Kryptobibliothek entfällt ı Einfachere Erbringung der Nachweise für VS-Zulassung

18.05.2017 Eine allgemeine Kryptobibliothek 2 BSI Projekt 197 Sichere Implementierung einer allgemeinen Kryptobibliothek ı Überblick über existierende Kryptobibliotheken ı Sichere Implementierung aller geläufigen und empfohlenen Kryptoprimitive, Protokolle und Standards (wie X.509 und TLS) ı Beschränkung auf notwendige Funktionalitäten und Schnittstellen ı Modulares Design ı Unterstützung kryptographischer Hardware, wie z.B. Smartcard, TPM, HSM ı Dokumentation ı Kryptographische Spezifikation ı Testsuite ı Wartung und Support (2017-2020+)

18.05.2017 Eine allgemeine Kryptobibliothek 3 Vorauswahl von Kryptobiliotheken Kriterien ı Funktionale Kriterien § Algorithmen und Protokolle nach TR-02102, BNetzA Algorithmenkatalog ı Nicht-funktionale Kriterien § Statische Registrierung von Implementierungen § Lizenzen § Ansprechpartner für Sicherheitslücken § Aktivität der Entwickler/Häufigkeit von Releases § Kompatibilität mit OpenSSL-Schnittstellen § Testsuite § Bindings für andere Sprachen § Portierbarkeit § Dokumentation / Handbücher

18.05.2017 Eine allgemeine Kryptobibliothek 4 Vorauswahl von Kryptobiliotheken Ergebnisse Rangliste: 1. Botan (43) 10. Poco (27,5) 2. OpenSSL (42,5) 12. Libtomcrypt (27 / kein TLS) 3. NSS (38,5) 13. Libgcrypt (26,5 / kein TLS) 4. (38 / Berkeley DB) 14. Nettle (24 / kein TLS) 5. WolfSSL (38 / GPLv2) 15. Beecrypt (17,5 / kein TLS) 6. LibreSSL (37,5) 16. S2n (17) 7. mbed TLS (37) 17. Libsodium (15,5 / kein TLS) 8. GnuTLS (35) 18. NaCl (10,5 / kein TLS) 9. MatrixSSL (33) 10. Crypto++ (27,5 / kein TLS)

18.05.2017 Eine allgemeine Kryptobibliothek 5 Detaillierte Analyse Kriterien (Auswahl) ı Seitenkanalresistenz ı Design und Komplexität ı Fehler in der TLS-Protokollvalidierung ı Plattformunterstützung ı Unterstützung kryptographischer Hardware ı Zufallszahlengeneratoren ı Unterstützung der PKCS Standards 1, 10, 11 und 12 ı Testabdeckung ı Grad und Qualität der Dokumentation ı Fehlende und zu entfernende Algorithmen ı Nutzung von Continuous Integration (CI)

18.05.2017 Eine allgemeine Kryptobibliothek 6 Ausgewählte Ergebnisse Modularität

Botan LibreSSL NSS

• Sehr flexibel • Nur noch sehr wenige Flags • 671744 LOC • Viele Module verfügbar, die vorhanden (gegenüber • 32 Module einfach konfiguriert werden OpenSSL) • Viele zyklische können • 264926 LOC Abhängigkeiten • Liste von Modulen ist • 7 Module • Keine Engine oder Konzept einsehbar (anders als bei zum Austausch/zur OpenSSL) Blockierung von Funktionen • 71675 LOC • Funktionen sauber in Pakete unterteilt

Stand: Mai 2015

18.05.2017 Eine allgemeine Kryptobibliothek 7 Ausgewählte Ergebnisse Testabdeckung

ı GCC mit --coverage flag ı Statistik generiert mit lcov

Botan LibreSSL NSS

Zeilen 77,2% 28,3% 47,6%

Funktionen 74,5% 31,3% 58%

Stand: Mai 2015

18.05.2017 Eine allgemeine Kryptobibliothek 8 Weiterentwicklung von Botan

ı BSI Modulpolicy hinzugefügt ı Codekomplexität reduziert ı Compilerwarnungen und Fehler aus statischer/dynamischer Analyse behoben ı NIST kompatiblen HMAC_DRBG Zufallszahlengenerator hinzugefügt ı Seitenkanalanalysen ı Fehlende Algorithmen hinzugefügt: KDF, ECIES, ECGDSA, ECKCDSA, Merkle Signaturen, GMAC, Encrypt-then-MAC, Compressed Points Extension ı Smartcard und HSM Unterstützung über PKCS#11 hinzugefügt ı Testabdeckung verbessert ı Dokumentation erstellt und verbessert: § Architektur-Dokumentation, Testspezifikation, Krypto-Dokumentation ı Sehr viele kleine Verbesserungen ı Alle Änderungen sind in das Originalprojekt eingeflossen (80+ pull requests in 13 Monaten)

18.05.2017 Eine allgemeine Kryptobibliothek 9 Seitenkanal & TLS Angriffe

ı Fuzzing-, Timing-, Crypto- und TLS-Angriffe ı PKCS#1 v1.5 + OAEP -> Dekodierung nicht in konstanter Zeit ı TLS-CBC -> Padding Oracle gefunden ı Lucky13: verwundbar (öffentlich bekannt) ı FREAK: nicht verwundbar (keine export Ciphersuites) ı Logjam: nicht verwundbar (DH >= 1024) ı DROWN: nicht verwundbar (kein SSLv2) ı AES-GCM nonce reuse: nicht verwundbar ı Insecure renegotiation: nicht verwundbar ı POODLE: nicht verwundbar ı CRIME: nicht verwundbar ı BEAST: nicht verwundbar

18.05.2017 Eine allgemeine Kryptobibliothek 10 Seitenkanal & TLS Angriffe Lucky 13 ı Padding-Oracle Angriff ı Timing-Unterschiede basierend auf der Anzahl der validierten Bytes in HMAC

Ciphertext

Entschlüsselung fehlgeschlagengültig / ungültig

Server

18.05.2017 Eine allgemeine Kryptobibliothek 11 Seitenkanal & TLS Angriffe Lucky 13 ı Botan anfällig, Gegenmaßnahme aus dem Paper implementiert ı Beispiel: HMAC-SHA384 ı Angriff jetzt viel schwieriger (1200 ticks -> 50 ticks) ı Deaktivierung von CBC-Ciphersuites möglich

18.05.2017 Eine allgemeine Kryptobibliothek 12 Pflege und Wartung (2017-2020)

ı Pflege und Wartung der Bibliothek auf Abruf (30 PT/Jahr) ı Änderungen an umgesetzten Standards ı Neue wissenschaftliche Erkenntnisse zu einzelnen Kryptoverfahren ı Neue Einsatzszenarien ı Beheben von Sicherheitslücken (in Standards, ähnlicher Kryptobibliothek) (max. 4 Wochen) ı Beheben von funktionalen Fehlern oder Sicherheitslücken in Botan (max. 4 Wochen)

ı Freigabe neuer Botan-Versionen in regelmäßigen Abständen § Prüfung aller Änderungen § Dokumentation kryptographisch relevanter Teile § Veröffentlichung von signierten Releases

18.05.2017 Eine allgemeine Kryptobibliothek 13 Zusammenfassung

ı Entwicklung einer allgemeinen Kryptobibliothek in Zusammenarbeit mit dem BSI § Analyse existierender Kryptobibliothek und Auswahl von Botan § Anpassung an Anforderungen aus Technischen Richtlinien des BSI § Untersuchungen auf Seitenkanäle § Ergänzungen und Verbesserungen (z.B. Compilerwarnings, PKCS#11, Testabdeckung) § Wartung und Support bis mindestens 2020

ı Verfügbarkeit: ://github.com/Rohde-Schwarz-Cybersecurity/botan ı Handbuch: https://botan.randombit.net/manual

ı Weitere Fragen: § René Korthaus § Daniel Neus

18.05.2017 Eine allgemeine Kryptobibliothek 14