Vorbemerkung Zu Projekt 197 „Sichere Implementierung Einer Allgemeinen Kryptobibliothek – Arbeitspaket 1: Sichtung Und Analyse Bestehender Kryptobibliotheken“
Total Page:16
File Type:pdf, Size:1020Kb
Bundesamt für Sicherheit in der Informationstechnik Postfach 20 03 63, 53133 Bonn Vorbemerkung zu Projekt 197 „Sichere Implementierung einer allgemeinen Kryptobibliothek – Arbeitspaket 1: Sichtung und Analyse bestehender Kryptobibliotheken“ Zielsetzung bei der Untersuchung der Kryptobibliotheken Ziel des Projektes „Sichere Implementierung einer allgemeinen Kryptobibliothek“ ist die Bereitstellung einer quelloffenen, sicheren, übersichtlichen, kontrollierbaren und gut dokumentierten Kryptobibliothek, die für möglichst viele Einsatzszenarien des BSI geeignet ist und auch in Anwendungen mit erhöhtem Sicherheitsbedarf eingesetzt werden kann. In der (hier im Ergebnis vorliegenden) ersten Projektphase wurden bestehende Open Source Kryptobibliotheken gesichtet und analysiert, um einen für das BSI geeigneten Kandidaten für eine Weiterentwicklung zu identifizieren. Dazu wurde eine Liste von Kriterien mit Gewichtungen zusammengestellt, die spezifisch im Hinblick auf das Gesamtprojekt ausgewählt wurden. Der Fokus des Projekts war dabei klar auf eine Vorarbeit für die folgende Entwicklung einer sicheren Kryptobibliothek beschränkt. So stellt die folgende Sichtung der Bibliotheken keine eigenständige Studie zu Sicherheitseigenschaften von Kryptobibliotheken dar, da sowohl die Vorauswahl der Bibliotheken als auch die Methodik und die Aufbereitung der Analyse sowie die Ermittlung und Untersuchung der Kandidaten für die Weiterentwicklung nur auf den internen Gebrauch im Rahmen der Durchführung des Gesamtprojekts ausgerichtet war. Die vorliegenden Projektergebnisse beruhen somit nicht auf einer allgemeingültigen oder vollumfänglichen Untersuchung und sind insbesondere keine offizielle Bewertung von Open Source Kryptobibliotheken durch das BSI. Mit der im Projektverlauf weiterentwickelten Bibliothek Botan (siehe https://github.com/Rohde- Schwarz-Cybersecurity/botan) steht jetzt eine Kryptobibliothek zur Verfügung, die den grundsätzlichen Vorstellungen des BSI entspricht und die zum Einsatz in Sicherheitsprodukten empfohlen wird. Botan steht unter der Simplified BSD Lizenz und kann freizügig sowohl für offene als auch für kommerzielle Anwendungen verwendet werden. Insbesondere sind auf GitHub alle Dokumente zu finden, die im Rahmen der Weiterentwicklung im Projekt entstanden sind und die Sicherheitseigenschaften von Botan ausführlich dokumentieren. ZUSTELL- UND LIEFERANSCHRIFT: Bundesamt für Sicherheit in der Informationstechnik, Godesberger Allee 185-189, 53175 Bonn Eine Studie im Auftrag des Bundesamtes für Sicherheit in der Informationstechnik Projekt 197 Sichere Implementierung einer allgemeinen Kryptobibliothek Arbeitspaket 1: Sichtung und Analyse bestehender Kryptobibliotheken Version 1.0.0 / 2017-02-15 2 Zusammenfassung In diesem Projekt wird die sichere Implementierung einer allgemeinen Kryptobibliothek realisiert, die alle gängigen und für den breiten kryptographischen Einsatz notwendigen kryptographischen Primitive beinhaltet. Dazu zählen unter anderem symmetrische und asymmetrische Verschlüsselungs- und Signaturverfahren, PRFs, Hashfunktionen und RNGs. Zusätzlich müssen verbreitete Sicherheitsstandards wie X.509-Zertifikate oder SSL/TLS unterstützt werden. Diese Bibliothek soll dann auch Herstellern von VS-Produkten zur Verfügung stehen, womit der Evaluierungsaufwand des BSI für solche Produkte erheblich reduziert wird. Dieser Bericht ist das Ergebnis der Sichtung und Analyse bestehender Kryptobibliotheken. Es wird zunächst die Untersuchungsmethodik erläutert. Anschließend werden die Analyseergebnisse vorgestellt und es wird ein geeigneter Kandidat für eine Weiterentwicklung präsentiert. Die Analyse wurde im Zeitraum August 2015 bis November 2015 durchgeführt. Autoren Copyright Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung außerhalb der engen Grenzen des Urhebergesetzes ist ohne Zustimmung des BSI unzulässig und strafbar. Dies gilt insbesondere für Vervielfältigung, Übersetzung, Mikroverfilmungen und die Einspeicherung und Verarbeitung in elektronischen Systemen. 3 4 Sichere Implementierung einer allgemeinen Kryptobibliothek Sichtung und Analyse bestehender Kryptobibliotheken 5 6 Änderungshistorie Version Autor Kommentar Datum 1.0 Initiale Dokumentenversion erstellt 2017-02-15 7 8 Inhaltsverzeichnis 1 Vorauswahl der Kryptobibliotheken..............................................................................................13 1.1 Methodik.................................................................................................................................14 1.2 Analyse....................................................................................................................................18 1.2.1 Beecrypt..........................................................................................................................18 1.2.2 Botan...............................................................................................................................21 1.2.3 Cryptlib...........................................................................................................................24 1.2.4 Crypto++.........................................................................................................................27 1.2.5 GnuTLS...........................................................................................................................30 1.2.6 Libgcrypt.........................................................................................................................33 1.2.7 LibreSSL.........................................................................................................................36 1.2.8 Libsodium.......................................................................................................................39 1.2.9 Libtomcrypt.....................................................................................................................42 1.2.10 MatrixSSL.....................................................................................................................45 1.2.11 mbed TLS......................................................................................................................48 1.2.12 NaCl..............................................................................................................................51 1.2.13 Nettle.............................................................................................................................54 1.2.14 NSS...............................................................................................................................57 1.2.15 OpenSSL.......................................................................................................................60 1.2.16 Poco...............................................................................................................................63 1.2.17 s2n.................................................................................................................................66 1.2.18 WolfSSL........................................................................................................................69 1.3 Ergebnis..................................................................................................................................73 2 Detaillierte Analyse der vorausgewählten Bibliotheken...............................................................75 2.1 Methodik.................................................................................................................................75 2.2 Analyse....................................................................................................................................75 2.2.1 Implementierung von SCA-Gegenmaßnahmen..............................................................75 2.2.1.1 RSA-Blinding..........................................................................................................75 Botan..........................................................................................................................75 LibreSSL....................................................................................................................76 NSS............................................................................................................................77 2.2.1.2 Bleichenbacher-Angriff..........................................................................................77 Botan..........................................................................................................................78 LibreSSL....................................................................................................................79 NSS............................................................................................................................80 2.2.1.3 Invalid Curve Angriffe...........................................................................................81 Botan..........................................................................................................................81 LibreSSL....................................................................................................................81 NSS............................................................................................................................82 2.2.1.4 Small Subgroup Angriffe........................................................................................82 Botan..........................................................................................................................82