Eine allgemeine Kryptobibliothek für Hersteller von IT-Sicherheits- und VS-Produkten
René Korthaus
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. Heartbleed) § 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. Cryptlib (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: https://github.com/Rohde-Schwarz-Cybersecurity/botan ı Handbuch: https://botan.randombit.net/manual
ı Weitere Fragen: § René Korthaus
18.05.2017 Eine allgemeine Kryptobibliothek 14