Diplomarbeit Sicherheitsuntersuchung des Hardware
Transcription
Diplomarbeit Sicherheitsuntersuchung des Hardware
Rheinisch-Westfälische Technische Hochschule Aachen Fachbereich Informatik Diplomarbeit Sicherheitsuntersuchung des Hardware-Sicherheitsmoduls CryptoServerr für den Einsatz als SecurityServer in unsicheren Netzen Michael Schüler 21. März 2007 Erstprüfer: Prof. Dr.-Ing. Felix Freiling Zweitprüfer: Prof. Dr.-Ing. Heiko Mantel Betreuer: Dipl.-Ing. Andreas Philipp, Utimaco Safeware AG 2 Ich versichere, dass ich die Arbeit selbständig verfasst und keine anderen als die angegebenen Quellen und Hilfsmittel benutzt, sowie Zitate kenntlich gemacht habe. Aachen, 21. März 2007 (Michael Schüler) 4 Zusammenfassung Diese Arbeit beschreibt die Analyse des Hardware-Sicherheitsmoduls Safeguard CryptoServerr der Utimaco Safeware AG in Bezug auf dessen Eignung als SecurityServer in unsicheren Netzen. Im Rahmen dieser Analyse wurde das Security-API der Utimaco, das Cryptographic Services Interface (CSI), per Fernzugriff einem ausführlichen Black-Box-Test unterzogen. Zunächst wurden die in den letzten Jahren entstandenen Angriffe auf Security-APIs zusammengetragen. Die auf den CryptoServerr anwendbaren Angriffe wurden genauer analysiert. Nur unter Umgehung der im CSI zwingend notwendigen Authentisierung, konnten zwei dieser Angriffe den CryptoServerr kompromittieren. Daher wurden in einem zweiten Schritt neue, speziell an das CSI angepasste Angriffsszenarien entwickelt und anschließend auf den CryptoServerr angewendet. Einer dieser Angriffe konnte den CryptoServerr unter bestimmten Voraussetzungen kompromittieren. 6 Abstract This work describes the analysis of Utimaco’s hardware security module Safeguard CryptoServerr concerning its suitability as a SecurityServer in unattended networks. This analysis is performed as a remote black box test on Utimaco’s Security API – the Cryptographic Services Interface (CSI). At first, recent attacks on Security APIs are brought together. Those attacks that are applicable to the CryptoServerr are further analyzed. Only two of those attacks have been successful. Even though in both cases it has been necessary to circumvent the authentication, which is mandatory for using the CSI, beforehand. Thus, new attacks are developed in a second step, that are well adapted for Utimaco’s CSI. Afterwards, these attacks are applied to the CryptoServerr . Under special circumstances, one of these attacks may compromise Utimaco’s CryptoServerr . Inhaltsverzeichnis Inhaltsverzeichnis 8 Abbildungsverzeichnis 10 Tabellenverzeichnis 11 1 Einleitung 1.1 Motivation . . . . . 1.2 Problemstellung . . 1.2.1 Zielsetzung 1.2.2 Abgrenzung 1.3 Ergebnisse . . . . . 1.4 Struktur der Arbeit . . . . . . 12 12 13 13 13 14 14 . . . . . . . . . . . . . . . . 15 15 15 15 16 17 17 17 18 19 19 20 21 22 23 24 24 . . . . . . 25 25 25 25 26 34 35 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 Hintergrund 2.1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . 2.2 Vorarbeiten zur Analyse kryptografischer Systeme 2.2.1 Kryptanalyse und Protokollanalyse . . . . 2.2.2 Angriffe auf Seitenkanäle . . . . . . . . . . 2.2.3 API-Angriffe . . . . . . . . . . . . . . . . . 2.3 Hardware-Sicherheitsmodule . . . . . . . . . . . . 2.3.1 Definition . . . . . . . . . . . . . . . . . . . 2.3.2 Arten . . . . . . . . . . . . . . . . . . . . . . 2.3.3 Hersteller . . . . . . . . . . . . . . . . . . . 2.3.4 Schnittstellen . . . . . . . . . . . . . . . . . 2.4 Der CryptoServerr . . . . . . . . . . . . . . . . . . 2.4.1 Aufbau . . . . . . . . . . . . . . . . . . . . . 2.4.2 Das Cryptographic Services Interface (CSI) . . 2.4.3 Policy . . . . . . . . . . . . . . . . . . . . . . 2.4.4 Was ist ein SecurityServer? . . . . . . . . . . 2.5 Zusammenfassung . . . . . . . . . . . . . . . . . . 3 Angriffe 3.1 Einleitung . . . . . . . . . . . . . 3.2 Bekannte Angriffe . . . . . . . . . 3.2.1 Angriffe auf Finanz-APIs 3.2.2 Allgemeine Angriffe . . . 3.3 Neue Angriffsszenarien . . . . . 3.3.1 Session Hijacking . . . . . 8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Inhaltsverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 36 37 37 4 Analyse des CryptoServersr 4.1 Einleitung . . . . . . . . . . . . . . . . . . . 4.2 Bekannte Angriffe . . . . . . . . . . . . . . . 4.2.1 Type System/Key Separation Attack 4.2.2 Meet-in-the-Middle Attack . . . . . 4.2.3 Key Import Attack . . . . . . . . . . 4.2.4 Differential Protocol Analysis . . . . 4.2.5 Timing Attacks . . . . . . . . . . . . 4.2.6 Known Keys in the System . . . . . 4.3 Neue Angriffsszenarien . . . . . . . . . . . 4.3.1 Session Hijacking . . . . . . . . . . . 4.3.2 Man-in-the-Middle . . . . . . . . . . 4.3.3 Buffer Overflow . . . . . . . . . . . . 4.3.4 Lunchtime Attack . . . . . . . . . . . 4.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 39 39 39 41 41 41 41 42 43 43 47 48 51 52 5 Zusammenfassung und Ausblick 5.1 Aufgabenstellung . . . . . . . 5.2 Ergebnisse . . . . . . . . . . . 5.3 Schwierigkeiten . . . . . . . . 5.4 Ausblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 53 53 54 55 3.4 3.3.2 Man-in-the-Middle 3.3.3 Buffer Overflow . . 3.3.4 Lunchtime Attack . Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . A Verwendete Schlüssel im CryptoServerr 56 B Taof: fuzz.xml 58 Literaturverzeichnis 65 Glossar 67 9 Abbildungsverzeichnis 10 2.1 2.2 2.3 2.4 2.5 Arten von Hardware-Sicherheitsmodulen . . . . . . Foto des CryptoServersr . . . . . . . . . . . . . . . . Schichten des CryptoServersr . . . . . . . . . . . . . Foto des CryptoServerr LAN . . . . . . . . . . . . . Schematische Darstellung des CryptoServerr LAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 20 21 22 23 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 Anweisungsblock: GetChallenge . . . . . . . . . . . . Antwortblock: Challenge . . . . . . . . . . . . . . . . . Anweisungsblock: GetSessionKey (SHA-1-Passwort) Antwortblock: Session Information . . . . . . . . . . . Anweisungsblock: GetSessionKey (RSA Signatur) . . Anweisungsblock: Secure Messaging . . . . . . . . . . Antwortblock: Secure Messaging . . . . . . . . . . . . Taof – The art of fuzzing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 44 44 45 45 45 46 49 Tabellenverzeichnis 2.1 Hersteller von Hardware-Sicherheitsmodulen . . . . . . . . . . . . . . . . . . 19 3.1 Übersicht: Anwendbarkeit allgemeiner Angriffe . . . . . . . . . . . . . . . . . 38 A.1 Verwendete Schlüssel im CryptoServerr . . . . . . . . . . . . . . . . . . . . . 57 11 1 Einleitung 1.1 Motivation „Das Internet ist vom reinen Kommunikationsmedium zur zentralen Schnittstelle vernetzter Geschäftsprozesse geworden. Vielfältige Arten von Transaktionen werden heute elektronisch abgewickelt und gesteuert.“ [Uti06b] Dazu gehören die Datenerfassung und Datenbearbeitung in CRM- und ERP-Systemen, die Einkaufsorganisation, die Korrespondenz via E-Mail, elektronische Finanztransaktionen und die elektronische Steuererklärung. Auch im privaten Bereich werden Transaktionen vermehrt elektronisch abgewickelt. Als Beispiele seien hier das Online-Shopping und Online-Banking, das Aufladen von PrepaidKarten am Geldautomaten und die Bearbeitung von Patientendaten mit der elektronischen Gesundheitskarte (eGK) genannt. Diese Umstellung auf elektronische Geschäftsprozesse bringt, verstärkt durch die zunehmende Auslagerung ganzer Anwendungen an Application Service Provider (ASP), neue Angriffspunkte für Datendiebstahl und Wirtschaftsspionage. Die zum Einsatz kommenden Anwendungen und die in Unternehmen vorhandene IT-Infrastruktur wird immer komplexer, wodurch zunehmend mehr Schwachstellen entstehen. Die Absicherung dieser Prozesse ist heutzutage daher unverzichtbar. Das Basiswerkzeug zur Sicherung elektronischer Systeme ist die Kryptografie. Eines der wichtigsten Elemente der Kryptografie ist der kryptografische Schlüssel. Jedes der oben genannten Systeme benutzt mindestens einen, viele sogar mehrere Schlüssel – und alle wären ohne kryptografische Schlüssel undenkbar. Das Problem ist, dass die Sicherheit, die kryptografische Systeme bieten, mit der Sicherheit der verwendeten Schlüssel steigt und fällt. Daher müssen auch diese Schlüssel selbst wieder abgesichert werden: "They have to be stored securely, used securely, and then destroyed securely." [Sch04] Dieses Problem der sicheren Speicherung, sicheren Benutzung und sicheren Zerstörung kryptografischer Schlüssel versuchen Hardware-Sicherheitsmodule zu lösen. Diese erzeugen und speichern intern Schlüssel und bieten kryptografische Funktionen – unter Benutzung dieser Schlüssel – über definierte Schnittstellen (so genannte Security-APIs) nach außen an. 12 1 Einleitung In den letzten Jahren wurden viele Schwachstellen in solchen Security-APIs aufgedeckt und konkrete Angriffe auf diese Schwachstellen entwickelt. Kaum ein Hersteller von HardwareSicherheitsmodulen, dessen Security-API analysiert wurde, blieb dabei von der Aufdekkung von Schwachstellen in seinem Produkt verschont. 1.2 Problemstellung Der SafeGuard CryptoServerr , ein insbesondere in Deutschland weit verbreitetes Hardware-Sicherheitsmodul der Utimaco Safeware AG, und dessen proprietäres Security-API, das Cryptographic Services Interface (CSI), soll im Rahmen dieser Diplomarbeit untersucht werden. Ein besonderer Fokus soll dabei auf Schwachstellen im Bezug auf die Einsatztauglichkeit des CryptoServersr als SecurityServer in unsicheren Netzen liegen. 1.2.1 Zielsetzung Der Untersuchung des CryptoServersr liegt ein Szenario zu Grunde, in dem der potentielle Angreifer lediglich entfernten (engl.: remote) Zugriff auf das Gerät hat. Er ist aber sehrwohl in der Lage den Netzwerkverkehr zum und vom CryptoServerr mitzuschneiden und ggf. auch zu manipulieren (in der Literatur oft als man-in-the-middle bezeichnet). Zudem hat er in gewissen zeitlichen Grenzen (Szenario „Mittagspause“) direkten physikalischen Zugriff auf weitere Rechner im Netzwerk, die mit dem CryptoServerr kommunizieren. Die zu untersuchende Software ist vollständig closed source, d.h. die Quelltexte sind nicht öffentlich verfügbar. Auch ein potentieller Angreifer hat keinen Zugriff auf diese. Daher sollen auch alle Untersuchungen im Rahmen dieser Arbeit als reine Black-Box-Tests, d.h. ohne Kenntnis der Quelltexte, durchgeführt werden. Ziel der Untersuchung ist es nun herauszufinden, ob – und wenn ja inwieweit und unter welchen Voraussetzungen – ein Angreifer in diesem Szenario an vertrauliche Informationen, die innerhalb des CryptoServersr gespeichert sind (wie etwa kryptografische Schlüssel), gelangen kann. 1.2.2 Abgrenzung In dem in Abschnitt 1.2.1 beschriebenen Szenario hat der Angreifer keinen direkten physikalischen Zugriff auf den CryptoServerr . Dadurch können nicht alle Klassen von Angriffen (diese werden in Abschnitt 2.2 aufgeführt) angewandt werden. Insbesondere entfällt der Großteil der in Abschnitt 2.2.2 aufgeführten Angriffe auf Seitenkanäle. So ist weder 13 1 Einleitung eine Leistungsanalyse, noch eine Analyse der elektromagnetischen Strahlung, noch eine Fehlerfallanalyse möglich. Zeitmessungen werden über ein Netzwerk zwar ungenauer als direkte Messungen, können aber dennoch eine ausreichende Präzision aufweisen [BB03]. Darüber hinaus soll der Bereich des sogenannten Social Engineerings in dieser Arbeit nicht näher betrachtet werden. 1.3 Ergebnisse Unter der Voraussetzung, dass die zur Benutzung des Cryptographic Services Interfaces (CSI) des CryptoServersr zwingend erforderliche vorherige Authentisierung bereits umgangen wurde, können mit Hilfe der in Abschnitt 4.2.2 analysierten Meet-in-the-Middle Attack 56 Bit lange DES-Schlüssel geknackt werden. Die Key Import Attack (Abschnitt 4.2.3) führt unter dieser Voraussetzung ebenfalls zu (dem Angreifer) bekannten Schlüsseln innerhalb des CryptoServersr . Ohne eine vorherige Authentisierung vorauszusetzen ist ausschließlich der in Abschnitt 4.3.2 untersuchte Man-in-the-Middle Angriff erfolgreich: Dem Benutzer des CSI kann damit ein bekannter Sitzungsschlüssel untergeschoben werden, was unter bestimmten Voraussetzungen zu einem dem Angreifer bekannten Schlüssel im CryptoServerr führen kann. Für den Einsatz des CryptoServersr als SecurityServer in unsicheren Netzen ist dieser Man-in-the-Middle Angriff daher besonders kritisch. 1.4 Struktur der Arbeit Nach der allgemeinen Einleitung in diesem Kapitel (Kapitel 1) präsentiert Kapitel 2 zunächst eine Übersicht über die Methoden zum Angriff kryptografischer Systeme. Im weiteren Verlauf werden das Konzept der Hardware-Sicherheitsmodule und der CryptoServerr im speziellen vorgestellt. In Kapitel 3 werden bekannte Angriffe auf Security-APIs vorgestellt und deren Anwendbarkeit auf den CryptoServerr untersucht. Anschließend werden spezifisch für das CryptoServerr CSI neue Angriffsszenarien entwickelt. Kapitel 4 beschäftigt sich schließlich mit der eigentlichen Analyse des CryptoServersr . Hier werden die in Kapitel 3 vorgestellten Angriffe auf den CryptoServerr angewendet und die Ergebnisse ausgewertet. Eine Zusammenfassung der im Rahmen dieser Arbeit gewonnenen Erkenntnisse findet sich in Kapitel 5, welches abschließend auch Auskunft zu möglichen Folgearbeiten gibt. 14 2 Hintergrund 2.1 Einleitung In diesem Kapitel wird das Hintergrundwissen vermittelt, welches für das Verständnis der in den beiden folgenden Kapiteln präsentierten und analysierten Angriffe auf Hardware-Sicherheitsmodule notwendig ist. Dazu geht es zunächst auf Vorarbeiten im Bereich der Analyse kryptographischer Systeme, allgemein und im Speziellen der Analyse von SecurityAPIs, ein (Abschnitt 2.2). In Abschnitt 2.3 folgt eine Erläuterung des Konzepts HardwareSicherheitsmodul. Das Kapitel schließt in Abschnitt 2.4 mit einer detaillierten Beschreibung des Hardware-Sicherheitsmoduls CryptoServerr der Utimaco Safeware AG, welches der Gegenstand der in dieser Arbeit durchgeführten Sicherheitsuntersuchung ist. 2.2 Vorarbeiten zur Analyse kryptografischer Systeme Kryptografische Systeme und Angriffe auf diese Systeme gibt es schon seit vielen tausend Jahren [Kah96]. Die verschiedenen heute bekannten Angriffsmethoden sollen im Folgenden kurz vorgestellt werden. Den Anfang bilden die ältesten Methoden Kryptanalyse und Protokollanalyse (Abschnitt 2.2.1). Es folgen die Angriffe auf Seitenkanäle (Abschnitt 2.2.2). Abschließend wird das noch recht junge Feld der API-Angriffe beleuchtet (Abschnitt 2.2.3). 2.2.1 Kryptanalyse und Protokollanalyse Die älteste Methode kryptografische Systeme anzugreifen ist die Kryptanalyse: „the science and art of breaking [cryptographic ciphers]“ [And01, S. 74], also die Wissenschaft und Kunst kryptografische Codes zu brechen. Obgleich bereits die alten Ägypter und auch Julius Caesar einfache Verschlüsselungsalgorithmen verwendeten, stammt die erste schriftlich belegte Kryptanalyse erst aus dem 9. Jahrhundert: „A Manuscript on Deciphering Cryptographic Messages“ von Abu Yusuf Yaqub ibn Ishaq al-Sabbah Al-Kindi (vgl. [Ren04, S. 100f]). 15 2 Hintergrund Aktuellere Beispiele der Kryptanalyse sind die 1993 von Biham et al. [BS93] und Preneel et al. [PNRB93] vorgestellten Angriffe auf den Data Encryption Standard (DES). Die Analyse des Advanced Encryption Standards (AES) respektive des zugrunde liegenden RijndaelAlgorithmus ist Gegenstand aktueller Forschung [SPQ03, DKR04, Kel04]. Weitere Verfahren werden in [And01] und [MOV96] beschrieben. Werden nicht direkt kryptografische Primitiven angegriffen, sondern Protokolle, die diese verwenden, spricht man von Protokollanalyse. Aktuelle Forschungsbeispiele hierzu sind die Überlegungen Meadows zu kryptografisch sicheren Protokollen [Mea03] und die Analyse des Kerberos-Protokolls durch Long et al. [LF06]. 2.2.2 Angriffe auf Seitenkanäle Ein Seitenkanal (engl.: side-channel [KSWH00]) entsteht, wenn bei der Benutzung einer Implementierung einer kryptografischen Funktion zusätzliche, nicht beabsichtigte Informationen austreten. Diese zusätzlichen Informationen können sehr verschiedener Natur sein. Bei den von Kocher [Koc96] beschriebenen Angriffen über Zeitmessungen (engl.: timing attacks) lassen sich Informationen über einen kryptografischen Schlüssel daraus ableiten, wie lange ein Algorithmus exakt für eine Operation mit einem privaten Schlüssel (z.B. dem Verschlüsseln einer Nachricht) benötigt. Ähnlich wird auch bei der von Kocher et al. [KJJ98, KJJ99] entwickelten Leistungsanalyse (engl.: power analysis) verfahren. Nur wird in letzterem Fall nicht die Zeit gemessen, die für eine Operation benötigt wird, sondern die elektrische Leistung, die während dieser Operation verbraucht wird. Eine wiederum völlig andere Klasse ist die Fehlerfall-Analyse (engl.: fault analysis), welche 1997 zunächst von Boneh et al. [BDL97] für Public-Key Verfahren vorgestellt und kurz darauf von Biham et al. [BS97] auf symmetrische Verschlüsselungsverfahren ausgeweitet wurde. Hierbei werden absichtlich Fehler in eine kryptografische Operation oder Berechnung eingebracht. Dies kann etwa dadurch geschehen, dass ein Kabel/eine Leiterbahn durchtrennt oder eine einzelne Speicherzelle (z.B. durch einen Laser- oder Röntgenstrahl) zerstört wird. Ein weiterer Seitenkanal kann elektromagnetische Strahlung sein, welche bei der Berechnung kryptografischer Funktionen entsteht. Erste Ergebnisse der elektromagnetischen Analyse (engl.: electromagnetic analysis) stellten Rao et al. [RR01] im Mai 2001 vor, die ersten konkreten Angriffe lieferten wenige Tage später Gandolfi et al. [GMO01]. Einen detaillierteren Überblick über die verschiedenen Seitenkanäle einschließlich ihrer Angriffe bietet [Clu03a, S. 10-21]. 16 2 Hintergrund 2.2.3 API-Angriffe Gerade bei der Betrachtung Hardware-basierter Sicherheit wurden in den letzten Jahren die Security-APIs verschiedener sogenannter Hardware-Sicherheitsmodule (HSM) unterschiedlicher Hersteller kompromittiert. Den Grundstein zu diesen Forschungen legte Anderson 2000 im Rahmen eines Workshops zum Thema „Security Protocols“ mit seinem Artikel „The Correctness of Crypto Transaction Sets“ [And00]. Der erste Angriff auf eine Security-API, die Common Cryptographic Architecture (CCA) der IBM 4758 [IBM], gelang Bond Ende 2000 [Bon00]. Anfang 2001 folgten weitere Angriffe auf die IBM CCA und das Visa Security Module [Bon01]. In den folgenden Jahren entwickelten insbesondere Bond und Clulow immer neue Angriffe, die detailliert in [Bon04] bzw. [Clu03a] beschrieben sind. Einen guten Überblick bietet [ABCS06]. 2.3 Hardware-Sicherheitsmodule 2.3.1 Definition Ein Hardware-Sicherheitsmodul (HSM) ist ein manipulationssicherer (engl.: tamper-resistant) kryptografischer Prozessor, der über einen (zumindest kleinen) internen und ebenfalls manipulationssicheren Speicher verfügt. Seine Funktionen bietet er über eine definierte externe Schnittstelle an. Diese Funktionen können zum Beispiel das Erzeugen kryptografischer Schlüssel, das Ver- oder Entschlüsseln von Nachrichten unter Benutzung eines intern gespeicherten Schlüssels oder die Verifikation einer PIN sein. Sämtliche Berechnungen führt das HSM intern durch. Der Benutzer der Schnittstelle erhält lediglich das Ergebnis der Berechnung (z.B. die Mitteilung, dass ein neuer Schlüssel erzeugt wurde, die verschlüsselte Nachricht, eine Meldung ob die PIN korrekt war, etc.). Eingesetzt werden HSMs u.a. beim elektronischen Zahlungsverkehr in Banken, im Telekommunikationswesen, bei der Mauterfassung, der elektronischen Gesundheitskarte und beim Bezahlfernsehen (Pay-TV). 17 2 Hintergrund 2.3.2 Arten Hardware-Sicherheitsmodule existieren in verschiedenen Ausführungen. Die zur Zeit am weitesten verbreitete Variante ist die Smartcard. Dabei handelt es sich um eine Plastikkarte mit integriertem Chip, in dem ein Mikroprozessor und ein kleiner Speicher enthalten sind. Solche Karten werden beispielsweise beim Online-Banking via HBCI, beim Pay-TV und zunehmend auch beim elektronischen Zahlungsverkehr im Einzelhandel eingesetzt. USB-Token unterscheiden sich hauptsächlich in der hardwareseitigen Schnittstelle und somit in der äußeren Form von Smartcards. Auf funktioneller Seite sind sie dagegen nahezu identisch. Diese Token werden unter anderem zur Authentifikation eines Benutzers am PC und bei der elektronischen Steuererklärung verwendet. Etwas leistungsfähiger als Smartcards und Token sind die Trusted Platform Modules (TPM). Diese finden sich zunehmend fest verdrahtet in neueren PCs. Anwendungsgebiete sind insbesondere das digitale Rechtemanagement (DRM) bei online erworbenen Musikstücken und Filmen. Sie können aber auch für eigene digitale Signaturen oder die Verschlüsselung von Daten eingesetzt werden. Die „großen“ Hardware-Sicherheitsmodule unterscheiden sich im Formfaktor, besonders aber in ihrer Leistungsfähigkeit und dem zur Verfügung stehenden Speicherplatz deutlich von ihren kleineren Artgenossen. Sie existieren meist als Steckkarte mit PCI oder PCI-X Schnittstelle oder als externes Gerät mit LAN-Anschluss. Diese HSMs werden vor allem beim elektronischen Zahlungsverkehr in Banken, aber auch zum Beispiel im Telekommunikationswesen und bei der Mauterfassung eingesetzt. Im Rahmen dieser Arbeit soll ein großes HSM untersucht werden. Daher liegt der Fokus im Folgenden ausschließlich auf diesen Modulen. Die verschiedenen Varianten von Hardware-Sicherheitsmodulen sind in Abbildung 2.1 dargestellt. (a) Smartcard & Token (b) TPM (c) HSM Abbildung 2.1: Arten von HSMs (Quelle: Utimaco Safeware AG) 18 2 Hintergrund 2.3.3 Hersteller Der Pionier bei der kommerziellen Entwicklung von HSMs war IBM, die 1974 die auf Finanz-Transaktionen spezialisierte 3600er Serie herausbrachte [Bon04, S. 45-47]. Bis zu diesem Zeitpunkt waren Hardware-Sicherheitsmodule ausschließlich im militärischen Umfeld anzutreffen. Das erste HSM mit Unterstützung für DES-Schlüssel folgte 1977 mit dem IBM 3845. Die ersten Konkurrenzprodukte folgten erst 1985 mit dem von Racal SPS (heute zu Thales gehörend) produzierten Visa Security Module und der von Eracom (heute zu SafeNet gehörend) auf dem Markt gebrachten PC crypto card. Auch heute gibt es weltweit nur ein knappes Dutzend Hersteller großer Hardware-Sicherheitsmodule. Die Wichtigsten sind in Tabelle 2.1 aufgelistet. Hersteller aep Networks Futurex IBM HP Atalla nCipher Prism SafeNet Thales e-Security Utimaco Safeware Homepage http://www.aepnetworks.com/products/products.aspx http://www.futurex.com/index.php?Itemid=38 http://www-03.ibm.com/security/cryptocards/ http://www.hp.com/go/atalla/ http://www.ncipher.com/cryptographic_hardware/ http://www.prism.co.za/incognito.aspx http://www.safenet-inc.com/products/pki/index.asp http://www.thales-esecurity.com http://www.utimaco.de/hsm/ Tabelle 2.1: Hersteller von Hardware-Sicherheitsmodulen 2.3.4 Schnittstellen Wie in Abschnitt 2.3.1 erwähnt, bieten Hardware-Sicherheitsmodule ihre Funktionen über definierte Schnittstellen, so genannte Application Programming Interfaces (APIs), an. Es gibt inzwischen eine Vielfalt solcher APIs. Diese reichen von sehr allgemeinen Standard-APIs – wie dem Public-Key Cryptography Standard (PKCS) #11 der RSA Laboratories [RSA04], Suns Java Cryptography Extension (JCE) [Sun], Microsofts CryptoAPI [Micb] und Cryptographic API: Next Generation (CNG) [Mica], sowie dem OpenSSL Toolkit des OpenSSL Project [Ope] – bis hin zu hochspezialisierten APIs – beispielsweise der auf Finanz-Transaktionen spezialisierten Electronic Funds Transfer at Point of Sale (EFTPOS) API. 19 2 Hintergrund Aufgrund des Protokoll-Overheads der Standard-Schnittstellen (PKCS #11, CSP, ...) bieten viele HSM-Hersteller selbst proprietäre APIs an. Die bekannteste ist IBMs Common Cryptographic Architecture (CCA) [IBM03]. Aber auch andere Hersteller, wie nCipher mit der nCore API [nCi05a, nCi05b] und Utimaco mit dem Cryptographic Services Interface (CSI) [BH06a], bieten eigene APIs an. Bei diesen Schnittstellen handelt es sich in der Regel um allgemeine APIs zur Bereitstellung von Security-relevanten Funktionen. Eine Besonderheit stellt die IBM CCA dar. Hierbei handelt es sich um eine allgemeine API, die sukzessive um Finanz-Transaktionen erweitert wurde. Das CSI der Utimaco, welches aufgrund seiner Beschränkung auf das Wesentliche und der daraus resultierenden Übersichtlichkeit ebenfalls eine Besonderheit darstellt, wird in Abschnitt 2.4.2 genauer beschrieben. 2.4 Der CryptoServerr In diesem Abschnitt soll der SafeGuard CryptoServerr , das Hardware-Sicherheitsmodul der Utimaco Safeware AG [Utib], genauer beschrieben werden. Abbildung 2.2 zeigt ein Foto dieses HSMs. Abbildung 2.2: Der CryptoServerr (Quelle: Utimaco Safeware AG) 20 2 Hintergrund 2.4.1 Aufbau Der CryptoServerr existiert in zwei Varianten: Die PCI-Version ist zum Einbau in Einzelplatzsysteme gedacht. Die LAN-Version ist eine erweiterte Variante zum direkten Betrieb des CryptoServersr im Netzwerk und kann direkt über TCP/IP angesprochen werden. Da im Inneren des CryptoServerr LAN wiederum der CryptoServerr PCI zum Einsatz kommt, betrachten wir hier zunächst die PCI-Variante. Die PCI-Variante besteht im Wesentlichen aus einem Prozessor (CPU) mit internem Speicher, weiterem zusätzlichen Speicher (RAM und Flash Memory), einem Zufallszahlengenerator, einer Echtzeituhr, zwei seriellen Schnittstellen und einer Batterie. Mit Ausnahme der seriellen Schnittstellen und der Batterie sind alle Komponenten zusammen von einem Metallschild und einer speziellen – Manipulationen-erkennenden – Folie (engl.: tamper detection foil) umhüllt und in einer Keramik eingegossen. Die Batterie dient dazu, intern gespeicherte kryptografische Schlüssel auch bei deaktivierter externer Stromversorgung zu erhalten. Abbildung 2.3 zeigt die verschiedenen Schichten des CryptoServersr . Abbildung 2.3: Schichten des CryptoServersr (Quelle: Utimaco Safeware AG) Je nach Anwendungsgebiet bietet der CryptoServerr eine wohldefinierte externe SoftwareSchnittstelle. Das Software-Konzept des CryptoServersr ist modular und besteht aus verschiedenen Firmware-Modulen, die jeweils verschiedene interne und/oder externe Schnittstellen bieten. Es gibt Module, die auf jedem CryptoServerr vorhanden sein müssen, wie etwa das Betriebssystem, aber auch solche, die spezielle Kundenwünsche implementieren. Einzelne Firmware-Module können vom Kunden geladen, ersetzt oder gelöscht werden. Dieser benötigt hierzu den – kundenspezifischen – Initialisierungsschlüssel. 21 2 Hintergrund Der SafeGuard CryptoServerr LAN (Abbildung 2.4) vereint einen oder mehrere CryptoServerr PCI in einer Kommunikationseinheit. Diese Kommunikationseinheit basiert auf einem gehärteten (engl.: hardened) Linux und erweitert den CryptoServerr um die Fähigkeit der Kommunikation in Netzwerken. Abbildung 2.4: Der CryptoServerr LAN (Quelle: Utimaco Safeware AG) Neben TCP/IP unterstützt der CryptoServerr LAN auch UDP/IP und IP-Multicast. Aufgrund seiner höheren Verlässlichkeit ist TCP/IP jedoch das bevorzugte Protokoll. Zur Konfiguration des Linux-Betriebssystems und zur Statusanzeige enthält der CryptoServerr LAN ein kleines Display und 6 Tasten. Außerdem verfügt er über eine LANSchnittstelle (Ethernet) sowie serielle Schnittstellen (u.a. zum Anschluss eines Pinpads). Abbildung 2.5 zeigt eine schematische Übersicht. Weitere Informationen zum Aufbau des CryptoServersr hält [OKH06] bereit, der CryptoServerr LAN ist ausführlich in [LDVH06] beschrieben. 2.4.2 Das Cryptographic Services Interface (CSI) Das Cryptographic Services Interface (CSI) ist eine der verfügbaren externen Software-Schnittstellen des CryptoServersr . Es besteht aus zwei Ebenen: Der Transportebene und einem API für C. Auf der Transportebene können Byte-Ströme, die Anweisungen und/oder Antworten enthalten, direkt an das PCI-Interface des CryptoServersr geschickt werden. Das API bietet diese Funktionen auf einer höheren Ebene an und setzt die Funktionsaufrufe wiederum in Byte-Ströme um. Auch die LAN-Variante des CryptoServersr kann mit diesem API angesprochen werden. 22 2 Hintergrund Abbildung 2.5: Schematische Darstellung des CryptoServerr LAN (Quelle: Utimaco Safeware AG) Das CSI bietet kryptografische Funktionen wie Schlüsselgenerierung, symmetrische Verund Entschlüsselung von Daten, Signieren von Daten, Verifikation von Signaturen, HashAlgorithmen und Zufallszahlengenerierung. Eine Benutzerverwaltung bietet das CSI selbst nicht, hierzu existieren jedoch weitere Schnittstellen auf Transportebene und als C APIs [Her06, Her03a]. Eine vollständige Beschreibung des CSI findet sich in [BH06a]. 2.4.3 Policy Die Sicherheits-Policy des CryptoServersr unterscheidet sich zwar je nach Anwendungsgebiet leicht, ist im Wesentlichen aber doch immer ähnlich: Nur autorisierte Personen dürfen die Funktionen des CryptoServersr benutzen, nicht-autorisierte Personen dürfen insbesondere keinerlei Erkenntnisse über die intern gespeicherten Schlüssel erlangen können. Autorisierte Personen sind in diesem Fall jene, die sich mit einem Benutzernamen sowie entweder einem Passwort, einem passwortgeschützten kryptografischen Schlüssel oder einer pingeschützten Smartcard authentifizieren können und auf dem CryptoServerr über entsprechende Berechtigungen verfügen. Um diese Berechtigungen durchsetzen zu können, speichert die Benutzerverwaltung des CryptoServersr intern einen Authentifikations-Zustand, aufgeschlüsselt in acht Gruppen (Gruppe 0 bis Gruppe 7). Jedem Benutzer wiederum kann in jeder dieser acht Gruppen 23 2 Hintergrund ein Authentifikations-Level von 0 (keine Berechtigungen) bis 3 (maximale Berechtigungen) zugewiesen werden. Für Aufgaben der Benutzerverwaltung ist beispielsweise ein Authentifikations-Level von 2 in Gruppe 7 nötig, zur Benutzung von Funktionen aus dem CSI ein Authentifikations-Level von 2 in Gruppe 1. Die Berechtigungen zweier gleichzeitig angemeldeter Benutzer summieren sich dabei, so dass beispielsweise auch zwei gleichzeitig angemeldete Benutzer mit einem Authentifikations-Level von 1 in Gruppe 7 eine Benutzung der Benutzerverwaltung erlauben. So wird der Einsatz des 4-Augen-Prinzips ermöglicht. Weitere Informationen zum Thema Authentifikation im CryptoServerr finden sich in [Her03a]. 2.4.4 Was ist ein SecurityServer? Der SecurityServer ist ein Produkt-Paket, welches aus einem CryptoServerr (wahlweise als PCI- oder LAN-Version), einem Pinpad und einer Produkt-CD [Utia] besteht. Die ProduktCD enthält neben der Dokumentation zum CryptoServerr und Administrations-Tools insbesondere auch verschiedene Schnittstellen, über die der CryptoServerr angesprochen werden kann. Zu diesen Schnittstellen gehören eine zum Public Key Cryptography Standard #11 (PKCS #11) der RSA Laboratorien kompatible Schnittstelle, ein Crypto Service Provider (CSP) für Microsoft’s CryptoAPI, sowie das proprietäre CSI. In Zukunft soll außerdem ein zur JavaTM Cryptographic Extension (JCE) kompatibles API mitgeliefert werden. 2.5 Zusammenfassung Am Anfang dieses Kapitels wurde ein geschichtlicher Hintergrund über die Analyse kryptografischer Systeme gezeichnet. Es folgte eine Definition des Konzepts Hardware-Sicherheitsmodul. Die verschiedenen Arten von HSMs wurden erläutert. Ebenso wurden die unterschiedlichen Hersteller und Schnittstellen von Hardware-Sicherheitsmodulen aufgezeigt. Abschließend wurden mit dem CryptoServerr und dem Cryptographic Services Interface (CSI) ein spezielles HSM und dessen Security-API genauer beschrieben. Damit ist nun das – zum Verständnis der im folgenden Kapitel beschriebenen Angriffe notwendige – Hintergrundwissen vorhanden. 24 3 Angriffe 3.1 Einleitung Dieses Kapitel beschäftigt sich mit konkreten Angriffen auf Hardware-Sicherheitsmodule. Im ersten Schritt (Abschnitt 3.2) werden bereits bekannte, von anderen Autoren entwickelte Angriffe vorgestellt und die Anwendbarkeit dieser Angriffe auf den CryptoServerr untersucht. Im zweiten Schritt (Abschnitt 3.3) werden neue Angriffsszenarien entwickelt, welche die Eigenheiten des CryptoServersr und seiner Security-API CSI berücksichtigen. 3.2 Bekannte Angriffe Betrachtet man nun die Angriffsmöglichkeiten auf Security-APIs, so existieren zwei verschiedene Kategorien von Angriffen. Die erste Kategorie umfassst solche Angriffe, die nur auf Finanz-APIs (vgl. Abschnitt 2.3.4) angewendet werden können. Diese werden in Abschnitt 3.2.1 aufgelistet. Die zweite Kategorie bilden die auch auf allgemeine Security-APIs anwendbaren Angriffe. Diese werden in Abschnitt 3.2.2 kurz beschrieben und deren Anwendbarkeit auf den CryptoServerr bzw. das CSI untersucht. Detailliertere Informationen zu allen beschriebenen Angriffen finden sich in [Bon04] und [Clu03a]. 3.2.1 Angriffe auf Finanz-APIs Insbesondere viele der von Clulow entdeckten Angriffe können nur auf Finanz-APIs angewendet werden. Beim CSI handelt es sich jedoch nicht um eine spezielle Finanz-API. Daher sind diese Angriffe hierauf nicht anwendbar und sollen hier nur der Vollständigkeit halber aufgelistet werden. Das Ziel eines solchen Angriffs ist fast immer das Ausspähen der PIN zu einer bestimmten Kontonummer. Genauere Informationen können [Clu03a] entnommen werden, die jeweiligen Seiten sind in Klammern angegeben. • Decimalisation Table Attack (S. 70-80), [Bon04, S. 28-29, 107-114] 25 3 Angriffe • Exhaustive Pin Search (S. 73) • The Code Book Attack (S. 73) • ANSI X9.8 (ISO-0) Attack (S. 75-76) • Extended ANSI X9.8 Attack (S. 76-78) • Key Separation Attack #1 (S. 80-82) • Key Separation Attack #2 (S. 82-84) • Clulow’s Check Value Attack(S. 84-85) 3.2.2 Allgemeine Angriffe Die nicht auf spezielle API-Typen zugeschnittenen Angriffe sollen in diesem Abschnitt kurz erläutert und deren Anwendbarkeit auf den CryptoServerr (CS) bzw. das CSI geklärt werden. Diese Angriffe stammen ebenfalls ausnahmslos aus den Federn von Bond und Clulow. XOR to Null Key Attack Viele Security-APIs besitzen eine Funktion zum Importieren eines kryptografischen Schlüssels aus zwei (evtl. verschlüsselten) Schlüsselhälften. Dabei wird der eigentliche Schlüssel aus den beiden Hälften gewonnen, in dem die beiden Hälften ggf. zunächst entschlüsselt und anschließend per XOR zu einem Schlüssel vereinigt werden. Übergibt man einer solchen Funktion nun zweimal die gleiche Schlüsselhälfte (egal, ob verschlüsselt oder nicht) führt dies – nach der Definition von XOR – zwangsläufig zu einem Schlüssel, der nur aus Nullen besteht. Somit erhält man einen bekannten Schlüssel im System. Das CSI enthält eine solche Funktion nicht. Daher ist dieser Angriff nicht anwendbar. Das Master-Box-Key-Management des CryptoServersr bietet zwar eine entsprechende Funktion, nimmt die beiden Schlüsselhälften jedoch jeweils nur von einer Smartcard entgegen. Das entsprechende Pinpad muss dazu direkt an die serielle Schnittstelle des CryptoServersr angeschlossen werden – somit ist ein physischer Zugang zum CS zwingend erforderlich. Anwendbar auf CSI: nein Anwendbar auf CS: ja 26 (bei physischem Zugang) 3 Angriffe Type System/Key Separation Attack Hardware-Sicherheitsmodule unterscheiden intern häufig verschiedene Schlüsseltypen. So wird etwa zwischen Datenschlüsseln (engl.: data keys) – mit denen benutzerdefinierte Daten ver- und entschlüsselt werden dürfen – und Transportschlüsseln (engl.: key encryption keys (KEK)) – zum verschlüsselten Im-/Export eines anderen Schlüssels – differenziert. Häufig existieren zudem verschiedene Benutzergruppen, so dass bestimmte Benutzer zwar Daten ver- und entschlüsseln, aber keine Schlüssel importieren dürfen. Unterscheidet nun ein HSM nicht streng zwischen diesen beiden Schlüsseltypen, könnte ein solcher Benutzer beispielsweise einen exportierten Schlüssel als Daten der Funktion zum Entschlüsseln übergeben. Als Schlüssel könnte er den entsprechenden Transportschlüssel wählen. Das Ergebnis wäre dann der Schlüssel im Klartext. Der Benutzer hätte somit unter Umständen einen bekannten Schlüssel innerhalb des HSM. Das CSI verwendet ein solches Typensystem. Dieser Angriff muss daher untersucht werden. Auf das Key-Management des CryptoServersr selbst ist der Angriff nicht anwendbar, da hier kein entsprechendes Typensystem existiert. Anwendbar auf CSI: ja Anwendbar auf CS: nein Meet-in-the-Middle Attack Die Idee der Meet-in-the-Middle Attack ist, dass es oftmals genügt, einen Schlüssel eines bestimmten Typs zu kennen, um alle Schlüssel dieses Typs zu kompromittieren. Der erste Schritt ist daher, eine große Anzahl verschiedener Schlüssel eines Typs zu erzeugen. Um einen einfachen DES-Schlüssel zu knacken, sollten etwa 216 Schlüssel erzeugt werden. Im zweiten Schritt verschlüsselt man den gleichen bekannten Klartext mit jedem dieser Schlüssel und berechnet einen Hash-Wert zu jedem Ergebnis. Diese Hash-Werte werden schließlich, zusammen mit einem Verweis auf den jeweiligen Schlüssel, in einer HashTabelle gespeichert. Im Anschluss führt man eine vereinfachte Brute-Force Suche durch: Der bekannte Klartext wird mit dem aktuellen Schlüssel verschlüsselt und der zugehörige Hash-Wert berechnet. Abschließend vergleicht man den aktuellen Hash-Wert mit allen Werten in der HashTabelle. Wird eine Übereinstimmung gefunden, so hat man einen bekannten Schlüssel im System. 27 3 Angriffe Der zu durchsuchende Schlüsselraum, bei einfachen DES-Schlüsseln 256 , verringert sich so 256 216 = 240 Schlüssel. Im Durchschnitt wird ein solcher Schlüssel damit nach Iterationen gefunden. auf 240 2 = 239 Dieser Angriff ist auf das CSI anwendbar und muss daher untersucht werden. Auf das KeyManagement des CryptoServersr ist der Angriff nicht anwendbar, da hier nie mehr als ein Schlüssel eines Typs existieren kann. Der alte Schlüssel wird hier grundsätzlich durch den neuen Schlüssel ersetzt. Anwendbar auf CSI: ja Anwendbar auf CS: nein Key Conjuring Attack Die sogenannten monotonen HSMs (engl.: monotonic HSMs) bilden eine spezielle Klasse von Hardware-Sicherheitsmodulen. Module dieser Klasse speichern nur wenige MasterSchlüssel intern. Alle übrigen Schlüssel werden extern auf dem Host-Computer abgelegt, verschlüsselt unter einem der Master-Schlüssel. Ein Beispiel für ein solches HSM ist die IBM 4758. Die extern abgelegten Schlüssel müssen dann bei Verwendung als Parameter an das HSM übergeben werden. Module dieser Klasse sind „anfällig für nicht-autorisierte Schlüsselgenerierung“ [Bon04]. Dies ist insbesondere bei Schlüsseln aus der DES-Familie leicht möglich. Hier genügt es, einen Zufallswert entsprechender Länge als verschlüsselten Schlüssel anzugeben. Das vom HSM entschlüsselte Ergebnis ist dann wiederum zufällig und hat mit einer Wahrscheinlichkeit von 1 : 28 die korrekte Parität. Der CryptoServerr gehört nicht zu den monotonen HSMs, er speichert alle Schlüssel intern. Daher ist dieser Angriff auf den CS nicht anwendbar. Anwendbar auf CSI: nein Anwendbar auf CS: nein 3DES Key Binding Attack Es existieren drei verschiedene Varianten des DES-Algorithmus: Das einfache DES mit einer Schlüssellänge von 56 Bit, sowie 3DES mit 112 bzw. 168 Bit Schlüssellänge. In den Anfängen von Hardware-Sicherheitsmodulen wurde häufig nur das einfache DES unterstützt. Einige Hersteller haben später eine 3DES-Unterstützung nachgerüstet. Dazu kombinierten sie zwei bzw. drei einfache DES-Schlüssel zu einem 3DES-Schlüssel. Die Teile wurden als linke 28 3 Angriffe und rechte Hälfte bzw. linkes, mittleres und rechtes Drittel markiert und separat gespeichert. Einfache DES-Schlüssel konnten mit Hilfe eines 112-Bit 3DES-Schlüssels simuliert werden, bei dem beide Hälften identisch waren. In einigen HSMs war es nun aufgrund einer unzureichenden Bindung der zwei Schlüsselhälften eines 112-Bit 3DES-Schlüssels möglich, auch „echte“ 3DES-Schlüssel mit identischen Schlüsselhälften zu erzeugen. Unter Benutzung der zuvor bereits beschriebenen Meet-in-the-Middle Attack lässt sich ein solcher 3DES-Schlüssel mit dem nur doppelten des für einfache DES-Schlüssel nötigem Aufwand berechnen [Bon04, S. 28]. Clulow nennt diesen Angriff Key Integrity Attack [Clu03a, S. 43-44]. Sowohl jeder Master-Key, als auch jeder mit Hilfe des CSI erzeugte 3DES-Schlüssel, wird im CryptoServerr als eine Einheit gespeichert. Daher kann dieser Angriff auf den CryptoServerr nicht angewandt werden. Anwendbar auf CSI: nein Anwendbar auf CS: nein Related Keys Attack Ähnliche Schlüssel (engl.: related keys) sind nach der Definition von Bond [Bon04, S. 88] zwei oder mehr Schlüssel, bei denen die Differenz bitweise bekannt ist. Bei einer Gruppe ähnlicher Schlüssel hängt die Sicherheit aller Schlüssel dieser Gruppe an der Sicherheit jedes einzelnen. Außerdem sind solche Gruppen nach [Bon04] anfälliger für Brute-ForceAngriffe, wie etwa der Meet-in-the-Middle Attack. Zwei ähnliche Schlüssel in einem HSM können durch das häufig vorhandene Kommando zum Import eines Schlüssel aus mehreren Schlüsselteilen gewonnen werden. Dazu ändert man einen Teil geringfügig und importiert den vollständigen Schlüssel dann einmal mit dem korrekten und einmal mit dem verändertem Teil. Nur das Master-Box-Key-Management des CryptoServersr verfügt über eine solche Funktion. Der Master-Box-Key (MBK) wird jedoch grundsätzlich von seinem Nachfolger überschrieben. Es kann daher keine Gruppe ähnlicher Schlüssel im CS erzeugt werden. Anwendbar auf CSI: nein Anwendbar auf CS: nein 29 3 Angriffe Bond’s Check Value Attack Fast alle Security-APIs bieten eine Funktion zur Berechnung von Kontrollwerten (engl.: check values) über einzelne Schlüssel. Zur Berechnung dieser Kontrollwerte wird – bei symmetrischen Schlüsseln – intern häufig eine konstante Zeichenkette mit dem entsprechenden Schlüssel verschlüsselt und das Ergebnis, vollständig oder gekürzt, als Kontrollwert ausgegeben. Insbesondere ungekürzte Kontrollwerte über einfache DES-Schlüssel erlauben einen vereinfachten Brute-Force- oder Meet-in-the-Middle-Angriff. Das CSI bietet keine Funktion zur Berechnung von Kontrollwerten, daher kann dieser Angriff auf den CryptoServerr nicht angewendet werden. Anwendbar auf CSI: nein Anwendbar auf CS: nein Key Import Attack Dieser Angriff macht sich eventuelle Schwächen im Typensystem bei exportierten Schlüsseln zunutze. Ist der Typ eines exportierten Schlüssels nicht fest kryptografisch in diesem verankert, so ist es möglich, einen solchen Schlüssel unter einem anderen als dem ursprünglichen Typ wieder zu importieren. War der Schlüssel beispielsweise ursprünglich vom Typ KEK und importiert man ihn anschließend als Datenschlüssel, so ist es nun möglich, jeden beliebigen – unter dem Schlüssel exportierten – Schlüssel mit einer einfachen Entschlüsselungsoperation zu dechiffrieren. Eine evtl. vorhandene Zugangskontrolle zu einem Klartext-Export kann so umgangen werden. Das CSI benutzt ein solches Typensystem und bietet Funktionen sowohl zum Im- und Export von Schlüsseln als auch zum Dechiffrieren von verschlüsselten Daten. Das KeyManagement des CS selbst bietet dagegen keine Möglichkeiten zum Entschlüsseln – hier ist der Angriff daher nicht anwendbar. Anwendbar auf CSI: ja Anwendbar auf CS: nein Import/Export Loop Attack IBMs Common Cryptographic Architecture unterscheidet zwischen Key Encryption Keys für den Import (IMPORTER) und für den Export (EXPORTER) von Schlüsseln. Der zu einem EXPORTER passende IMPORTER ist dabei in der Regel nicht auf dem selben HSM verfügbar, 30 3 Angriffe da diese Schlüsseltypen nur für den Austausch von Schlüsseln zwischen verschiedenen HSMs gedacht sind. (Die IBM 4758 speichert ohnehin fast alle Schlüssel extern auf dem Host-Rechner, so dass solche Schlüssel zu Backup-Zwecken auch nicht benötigt werden.) Die im vorherigen Abschnitt beschriebene Key Import Attack ist im Kontext der IBM CCA daher in der Form nur mit exportierten Schlüsseln eines anderen Hardware-Sicherheitsmoduls möglich. Die Import/Export Loop Attack erweitert diesen Angriff nun dahin gehend, dass die von einem HSM exportierten Schlüssel am selben HSM – unter einem anderen Typ – wieder importiert werden können. Dieser Angriff nutzt spezielle Eigenheiten des Typensystems der IBM CCA aus, welches sich (da patentgeschützt) stark von den Typensystemen anderer HSMs unterscheidet. Außerdem ist ein vorheriges Key Conjuring erforderlich, welches beim CryptoServerr nicht möglich ist. Daher soll der Angriff hier nicht näher erläutert und statt dessen auf [Bon04, S. 97] verwiesen werden. Anwendbar auf CSI: nein Anwendbar auf CS: nein Combined Attack Dieser Angriff kombiniert die Meet-in-the-Middle Attack mit der Related Key Attack mit dem Ziel, so auch 168-Bit 3DES-Schlüssel kompromittieren zu können. Da die Related Key Attack im Umfeld des CryptoServersr nicht anwendbar ist, stellt dieser Angriff keine Gefahr für CryptoServerr dar. Anwendbar auf CSI: nein Anwendbar auf CS: nein Exhaustive Key Search Unter der Bezeichnung Exhaustive Key Search beschreibt Clulow in [Clu03a, S. 72] eine simple Brute-Force-Suche. Erfolg verspricht diese Suche einzig bei einfachen DES-Schlüsseln. Bei Schlüsseln mit größeren Schlüssellängen (ab etwa 112 Bit) ist ein solcher Angriff mit der heutigen Rechenleistung jedoch praktisch unmöglich. Im CryptoServerr kommen praktisch nur 3DES-Schlüssel mit mindestens 112 Bit Schlüssellänge oder stärkere Schlüssel vor. Daher soll dieser Angriff, obwohl theoretisch anwendbar, in dieser Arbeit nicht weiter untersucht werden. 31 3 Angriffe Anwendbar auf CSI: ja (aber praktisch unmöglich) Anwendbar auf CS: ja (aber praktisch unmöglich) Differential Protocol Analysis Bei diesem Angriff handelt es sich um einen der in Kapitel 2.2.2 erwähnten Angriffe auf Seitenkanäle aus dem Bereich der Fehlerfall-Analyse. Dabei werden die Eingabeparameter, die den Funktionen der zu untersuchenden API übergeben werden, methodisch variiert und eventuelle Veränderungen in den Ausgabeparametern beobachtet. Anhand dieser Veränderungen wird dann versucht, auf ein Geheimnis zu schließen. Der von Bond in [Bon04, S. 89-91] beschriebene Angriff ist auf Finanz-APIs ausgerichtet und kann somit auf das CSI nicht direkt angewendet werden. Daher soll er hier nicht genauer beschrieben werden. Prinzipiell ist ein solcher Angriff jedoch auch auf den CryptoServerr möglich und muss daher durchaus weiter untersucht werden. Anwendbar auf CSI: ja Anwendbar auf CS: ja Timing Attacks Auch die Timing Attacks gehören zu den Angriffen auf Seitenkanäle. Dieser Angriff nutzt aus, dass Vergleichsoperationen über lange Zeichenketten oft als Schleifen oder unter der Benutzung der C-Funktion memcpy() implementiert sind. Die Zeitunterschiede für die Berechnung bei verschiedenen Eingaben sind dabei oft messbar. Durch diese Messungen kann unter Umständen auf ein Geheimnis (in der Regel ein kryptografischer Schlüssel) geschlossen werden. Dieser Angriffstyp ist insbesondere in der – rechenintensiveren – asymmetrischen Kryptografie problematisch. Hier sind aber bereits Gegenmaßnahmen bekannt. Insbesondere ist hier das so genannte Blinding [Clu03a, S. 14], [Her03b, S. 33] zu erwähnen, das auch im CryptoServerr eingesetzt werden kann. Da Blinding im CryptoServerr nicht standardmäßig eingeschaltet ist, sind Angriffe über Zeitmessungen auf das CSI prinzipiell möglich. Direkte Angriffe auf das Master-Box-KeyManagement sind allerdings nicht möglich, da hier zum einen ausschließlich symmetrische Schlüssel zum Einsatz kommen und zum anderen eine exakte Zeitmessung aufgrund der erforderlichen Benutzerinteraktion schwierig wird. Anwendbar auf CSI: ja Anwendbar auf CS: nein 32 3 Angriffe Dual Security Officer Attack Einige Hardware-Sicherheitsmodule verlangen für bestimmte, besonders kritische Operationen, wie den Austausch eines Master-Keys, die Autorisation durch zwei Sicherheitsbeauftragte. Für andere Operationen, wie z.B. das Reaktivieren nach einem Stromausfall, ist jedoch die Autorisation durch einen Sicherheitsbeauftragten ausreichend. Die durch die Doppel-Autorisation erreichte Sicherheit soll durch diesen Angriff aufgebrochen werden. Dabei tauscht der Angreifer zunächst das echte Hardware-Sicherheitsmodul samt evtl. vorhandener Pinpads, etc. gegen gefälschte, unter seiner Kontrolle befindliche, Modelle aus. Anschließend behauptet er gegenüber einem der Sicherheitsbeauftragten, dass, z.B. nach einem selbst ausgelösten Feueralarm, ein Stromausfall aufgetreten ist und bittet ihn das Modul erneut zu aktivieren. Diese Autorisation wird von dem gefälschten Modul als erster Teil einer Doppel-Autorisation an das echte Modul weitergeleitet. Hat der erste Sicherheits-Beauftragte den Raum wieder verlassen, wendet sich der Angreifer unter dem gleichen Vorwand schließlich an den zweiten Sicherheits-Beauftragten. Auch dessen Autorisation wird – von ihm unbemerkt – automatisch an das echte HSM weitergeleitet, welches nun auch für besonders sicherheitskritische Operationen autorisiert ist. Dieser Angriff ist nicht direkt auf den CryptoServerr übertragbar und erfordert sowohl Social Engineering als auch physischen Zugang zum HSM. Daher soll dieser Angriff in der vorliegenden Arbeit nicht näher untersucht werden. Anwendbar auf CSI: nein Anwendbar auf CS: nein M-of-N Security Officer Attack Dieser Angriff bedient sich der Tatsache, dass HSMs häufig nicht über ein vertrauenswürdiges Display (engl.: trusted display) verfügen. Eine Authentifikation via Smartcard erfolgt daher fast immer über ein externes Pinpad – welches von einem Angreifer gegen ein gefälschtes Modell ausgetauscht werden kann. Das gefälschte Pinpad kann dann zum Beispiel in definierten Abständen vorgeben, die eingesteckte Smartcard nicht lesen zu können oder eine falsche PIN erhalten zu haben, und daraufhin zu einem neuen Versuch auffordern. Ist zur Autorisierung einer Operation die Authentifikation mehrerer Sicherheitsbeauftragter (m − aus − n Smartcards-Schema) erforderlich, so kann die Autorisierung aus dem zweiten Versuch als erster Teil in eine nächste Autorisierungsrunde übernommen werden. 33 3 Angriffe Folgendes Beispiel aus [Bon04, S. 153] für m = 4 veranschaulicht diesen Angriff (X steht für Autorisierung durch Person X, * für eine vollständige Autorisierung und X’ für einen aus einer vorherigen Runde übernommenen Autorisierungsversuch): 1. ABCD*D 2. D’ABC*CD 3. C’D’AB*BCD 4. B’C’D’A*ABCD* Dieser Angriff ist zwar auf den CryptoServerr übertragbar, erfordert jedoch physischen Zugang zum HSM. Daher soll er hier nicht weiter untersucht werden. Anwendbar auf CSI: nein Anwendbar auf CS: ja (bei physischem Zugang) Known Keys in the System Hierbei handelt es sich nicht um einen klassischen Angriff, sondern um eine „Was-wärewenn-Analyse“. Clulow betrachtet unter dieser Überschrift in [Clu03a, S. 40] die Risiken, die durch einen bekannten Schlüssel eines bestimmten Typs im HSM entstehen. Die größte Gefahr birgt seiner Meinung nach ein bekannter EXPORTER, da mit dessen Hilfe alle im HSM vorhandenen (und exportierbaren) Schlüssel unter ihm exportiert und anschließend mit ihm entschlüsselt werden könnten. Zudem könnten so weitere Schlüssel mit den gewünschten Eigenschaften im HSM erzeugt und als exportierbar markiert werden. Diese Analyse ist auch im Hinblick auf den CryptoServerr selbst und das CSI interessant. Anwendbar auf CSI: ja Anwendbar auf CS: ja 3.3 Neue Angriffsszenarien Viele der im vorherigen Abschnitt beschriebenen Angriffe sind auf den CryptoServerr und dessen Cryptographic Services Interface nicht oder nur eingeschränkt anwendbar, da sich insbesondere das CSI schon in seiner Komplexität stark von anderen Security-APIs, wie zum Beispiel IBM’s Common Cryptographic Architecture, unterscheidet. Um trotzdem eine möglichst umfassende Sicherheitsuntersuchung zu gewährleisten, war es erforderlich neue Angriffsszenarien zu erarbeiten. Diese werden im Folgenden vorgestellt. 34 3 Angriffe 3.3.1 Session Hijacking Sollen Befehle über das Cryptographic Services Interface an den CryptoServerr gesendet werden, so muss zunächst eine Session aufgebaut werden. Dies geschieht über eine Folge von fünf Befehlen: 1. Zunächst wird mit dem Befehl cs_open() eine Verbindung zum CryptoServerr (lokal oder im LAN) aufgebaut. Neben der Adresse des CS wird der Funktion ein Zeiger auf einen Integer-Wert als Parameter übergeben. Letzterer enthält nach erfolgreichem Verbindungsaufbau eine Zahl, welche die Verbindung eindeutig kennzeichnet und bei allen weiteren Befehlen angegeben werden muss. 2.-4. In diesen Schritten werden die drei Kommandos cs_push_cmds(), cs_push_sm() und cs_push_auth() ausgeführt. Hierdurch werden auf dem Host verschiedene Module des CSAPI, u.a. das Authentifikationsmodul des CryptoServersr , geladen. 5. Mit einem der Befehle cs_login_pwd() bzw. cs_login_sign() erfolgt schließlich die Authentifikation mittels Benutzername und Passwort bzw. Benutzername und RSA Signatur. Beide Befehle liefern einen Sitzungskontext (engl.: session context) als Parameter zurück, der auch den Sitzungsschlüssel (engl.: session key) enthält, mit dessen Hilfe alle weiteren Kommandos authentifiziert werden. Annahme 1: Ein Benutzer baut eine gültige Session zu einem CryptoServerr LAN auf. Annahme 2: Der Angreifer hat die Möglichkeit, den gesamten Netzwerkverkehr zwischen dem Benutzer und dem CS LAN mitzuschneiden. Außerdem kann er eigene Pakete sowohl an den Benutzer als auch den CS LAN senden. Frage: Kann der Angreifer die Session übernehmen und (a) parallel zu dem Benutzer Befehle an den CS senden? (b) die Verbindung aus Sicht des Benutzers trennen und an dessen Stelle mit dem CS kommunizieren? 3.3.2 Man-in-the-Middle Dieses Szenario folgt aus dem vorherigen durch eine Erweiterung von Annahme 2 und stellt einen klassischen Man-in-the-Middle (MITM) Angriff dar: Annahme 2’: Der Angreifer hat die Möglichkeit, den gesamten Netzwerkverkehr zwischen dem Benutzer und dem CS LAN mitzuschneiden und alle Pakete nach Belieben und transparent für die beiden Kommunikationspartner zu modifizieren bevor sie den jeweiligen 35 3 Angriffe Empfänger erreichen. Außerdem kann er eigene Pakete sowohl an den Benutzer als auch an den CS LAN senden. Die Fragestellung entspricht der im zuvor beschriebenen Szenario. 3.3.3 Buffer Overflow Über die Hälfte aller kritischen Sicherheitslücken in Software beruhen inzwischen auf einem Pufferüberlauf (engl.: buffer overflow) [VM01]. Bill Gates titulierte diesen Angriffstyp gar als "attack of the decade" (engl., „Angriff des Jahrzehnts“). Es existieren zwei Varianten des Buffer Overflows. Die einfachere und ältere ist der Stack Overflow [One96]. Die ersten Angriffe, die einen Stack Overflow ausnutzten, fanden bereits 1988 statt [KPSS01]. Heutzutage sind die etwas komplizierteren Heap Overflows verbreiteter [Lin06]. Das Grundprinzip ist jedoch bei allen Pufferüberläufen gleich: Durch ein „unglückliches Zusammenspiel von schlechten Programmiersprachen und schlechter Programmierung“ [Fre05] können mehr Daten in einen Puffer geschrieben werden, als der zugehörige Speicherbereich eigentlich fassen kann. Dadurch werden Informationen im nachfolgenden Speicherbereich überschrieben. Da dieser Speicherbereich nicht notwendigerweise auch für Daten vorgesehen ist, sondern beispielsweise eine Rücksprungadresse enthalten kann, führen solche Fehler häufig zu Sicherheitslöchern. Eine ausführliche Beschreibung von Buffer Overflows würde den Rahmen dieser Arbeit sprengen. Für weitere Informationen zum Thema Buffer Overflows sei daher an die in diesem Abschnitt bereits erwähnte Literatur verwiesen. Im vorliegenden Fall des Cryptographic Services Interface (CSI) und der mit dieser API angesprochenen Module im CryptoServerr sind, wie in Abschnitt 1.2.1 erläutert, keine Quelltexte verfügbar. Dies erschwert eine manuelle Suche nach potentiellen Buffer Overflows erheblich. Aus diesem Grund soll hierfür das sogenannte Fuzzing (auch: Fuzz testing) angewandt werden. "Fuzzing is the art of automatic bug finding" [Spr05], also die Kunst, automatisch Sicherheitslücken aufzudecken. Dazu bedient es sich einer Variante der in Abschnitt 2.2.2 beschriebenen Fehlerfall-Analyse, der fault injection: Durch das automatisierte Variieren der Eingabeparameter der zu testenden Funktion wird versucht, Sicherheitslücken aufzudecken [Jur06]. 36 3 Angriffe 3.3.4 Lunchtime Attack Die Authentifikation der Benutzer gegenüber dem CSI kann per Passwort oder RSA Signatur erfolgen. Bevorzugt wird dabei die RSA Signatur verwendet. Zur Berechnung der Signatur ist ein privater RSA Schlüssel erforderlich für dessen Geheimhaltung der jeweilige Benutzer respektive die den Schlüssel verwendende Anwendung verantwortlich ist. Hieraus entstehen verschiedene Probleme: Benutzer sind häufig nicht ausreichend auf die Wichtigkeit der Geheimhaltung solcher privater Schlüssel sensibilisiert. Anstatt auf spezialisierte Speichermodule – wie z.B. USB-Token – werden die Schlüssel oft einfach auf der Festplatte des eigenen PCs gespeichert. Zur Berechnung der für die Authentifikation benötigten Signatur muss die Anwendung (bzw. API) den privaten Schlüssel in den Arbeitsspeicher laden – dies geschieht in der Regel im Klartext. Die meisten Benutzer lassen ihre PCs (beispielsweise) während der Mittagspause eingeschaltet. Häufig werden sie während dessen nicht einmal gesperrt. Ein Angreifer könnte sich also während dieser Zeit physikalischen Zugang zu einem solchen PC verschaffen – etwa als Techniker „verkleidet“ ist dies in vielen Unternehmen leicht möglich. Die zu klärende Frage lautet nun: Ist es in der kurzen, dem Angreifer zur Verfügung stehenden, Zeit möglich, den privaten Schlüssel in einer möglicherweise großen Menge von Daten – auf der Festplatte oder im Arbeitsspeicher – zu lokalisieren und zu extrahieren? Dieser Angriff basiert auf einer Idee aus dem Artikel „Playing hide and seek with stored keys“ von Adi Shamir und Nicko van Someren [SS99]. 3.4 Zusammenfassung In diesem Kapitel wurden bekannte und neue Angriffe auf Hardware-Sicherheitsmodule vorgestellt. Die in Abschnitt 3.2 beschriebenen bekannten Angriffe wurden zudem auf ihre Anwendbarkeit auf den CryptoServerr untersucht. Dabei wurde zwischen der Anwendbarkeit eines Angriffs auf die Schlüsselverwaltung (key management, KM) des CryptoServersr und der Anwendbarkeit eines Angriffs auf das Cryptographic Services Interface (CSI) unterschieden. Die Entwicklung neuer Angriffe war nötig, da sich das CSI stark von anderen SecurityAPIs unterscheidet und viele der bekannten Angriffe hier daher nicht anwendbar sind. Diese neuen Angriffe wurden in Abschnitt 3.3 ausführlich beschrieben. 37 3 Angriffe Tabelle 3.1 gibt einen Überblick über die Anwendbarkeit der bekannten Angriffe. Dabei besagt +, dass ein Angriff angewandt werden kann, ein - zeigt an, dass er nicht angewendet werden kann. Die neuen Angriff sind allesamt auf das CSI anwendbar, da sie speziell an Type System Attack Meet-in-the-Middle Attack Key Conjuring Attack 3DES Key Binding Attack Related Keys Attack Bond’s Check Value Attack Key Import Attack Import/Export Loop Attack Combined Attack Exhaustive Key Search Differential Protocol Analysis Timing Attacks Dual Security Officer Attack M-of-N Security Officer Attack Known Keys in the System Anwendbar auf: CSI KM XOR to Null Attack dessen Eigenheiten angepasst wurden. + + - + - - - - - + - - - + + + + + - - + + + Tabelle 3.1: Übersicht: Anwendbarkeit allgemeiner Angriffe Obwohl theoretisch anwendbar, werden die XOR to Null Attack und die M-of-N Security Officer Attack nicht weiter untersucht. Diese erfordern physischen Zugang zum CryptoServerr , was in dem hier untersuchten Szenario aber ausgeschlossen wurde (vgl. Abschnitt 1.2.2). Die Exhaustive Key Search wird ebenfalls nicht genauer untersucht, da es sich hierbei um eine einfache Brute-Force-Suche handelt und diese bei der im CryptoServerr fast ausschließlich verwendeten Schlüssellänge von mindestens 112 Bit praktisch unmöglich ist. Die übrigen anwendbaren bekannten sowie die neu entwickelten Angriffe werden im nächsten Kapitel nun weitergehend in Bezug auf die von Ihnen ausgehende Gefahr für den CryptoServerr analysiert. 38 4 Analyse des CryptoServersr 4.1 Einleitung Dieses Kapitel befasst sich mit der Analyse des CryptoServersr . Untersucht werden die im vorangegangenen Kapitel beschriebenen Szenarien, sofern diese auf den CryptoServerr anwendbar sind. Die Gliederung orientiert sich dabei an der von Kapitel 3. Somit werden zunächst die Ergebnisse zur Untersuchung der bekannten Angriffe vorgestellt (Abschnitt 4.2). Anschließend werden die neu entwickelten Angriffsszenarien analysiert (Abschnitt 4.3). Erfolgreich war der in Abschnitt 4.3.2 diskutierte Man-in-the-Middle Angriff, sowie – mit Einschränkungen – die Meet-in-the-Middle Attack (Abschnitt 4.2.2) und die Key Import Attack (Abschnitt 4.2.3). 4.2 Bekannte Angriffe In diesem Abschnitt dokumentiere ich die Ergebnisse der Untersuchung des CryptoServersr bzgl. der in Abschnitt 3.2 beschriebenen und auf den CS bzw. das CSI anwendbaren Angriffe (vgl. [Sch07]). Für alle diese Angriffe – ob erfolgreich oder nicht – gilt eine Einschränkung. Das CSI verfügt über eine Zugangskontrolle, über die jedes einzelne Kommando abgesichert wird. Die folgenden Untersuchungen nehmen an, dass diese Zugangskontrolle bereits überwunden wurde. Ohne diese Annahme wäre keiner der Angriffe erfolgreich durchführbar. 4.2.1 Type System/Key Separation Attack Wie im vorherigen Kapitel erläutert, ist dieser Angriff ausschließlich auf das CSI anwendbar. Innerhalb des CSI müssen alle Funktionen untersucht werden, bei denen der Typ eines verwendeten Schlüssels sicherheitsrelevant ist. Im einzelnen sind dies die folgenden Funktionen: 39 4 Analyse des CryptoServersr 1. Wrap Key: cs_wrap_key() 2. Unwrap Key: cs_unwrap_key() 3. DES Encryption in ECB Mode: cs_DEScryptECB() 4. DES Encryption in CBC Mode: cs_DEScryptCBC() 5. AES Encryption in ECB Mode: cs_AEScryptECB() 6. AES Encryption in CBC Mode: cs_AEScryptCBC() 7. DES MAC Calculation: cs_DEScalc_mac() 8. AES MAC Calculation: cs_AEScalc_mac() 9. Sign Data with RSA: cs_RSAsign() 10. Verify RSA Signature: cs_RSAverify() 11. Sign Data with ECDSA: cs_ECDSAsign() 12. Verify ECDSA Signature: cs_ECDSAverify() Die in den ersten beiden Funktionen zur Verschlüsselung benutzen Schlüssel müssen vom Typ KEK, die verschlüsselten Schlüssel müssen als exportierbar markiert sein. Die in den übrigen Funktionen verwendeten Schlüssel dürfen dagegen nicht vom Typ KEK sein. Ergebnisse Die Funktionen cs_wrap_key() und cs_unwrap_key() akzeptieren zum Verschlüsseln ausschließlich Schlüssel vom Typ KEK. Exportiert werden außerdem nur Schlüssel, die als exportierbar markiert sind. Die symmetrischen Funktionen cs_DEScryptECB() und cs_DEScryptCBC() akzeptieren ausschließlich DES-Schlüssel, die nicht vom Typ KEK sind. Auch die Funktionen cs_AEScryptECB() und cs_AEScryptCBC() arbeiten nur mit AES-Schlüsseln, welche nicht vom Typ KEK sind. Die Funktionen cs_DEScalc_mac() bzw. cs_AEScalc_mac() akzeptieren nur reine DES- bzw. AES-Datenschlüssel. Die asymmetrischen Funktionen cs_RSAsign() und cs_RSAverify(), beziehungsweise cs_ECDSAsign() und cs_ECDSAverify() arbeiten ausschließlich mit RSA- beziehungsweise ECDSA-Schlüsseln, welche nicht vom Typ KEK sind. Das CSI überprüft also grundsätzlich penibel den Typ und Algorithmus eines jeden Schlüssels. Es ist damit gegen die Type System/Key Separation Attack immun. 40 4 Analyse des CryptoServersr 4.2.2 Meet-in-the-Middle Attack Der CryptoServerr kann intern über 50.000 3DES-Schlüssel speichern [Uti05]. Da diese Schlüssel mindestens die doppelte Länge von einfachen DES-Schlüsseln aufweisen, muss der interne Speicher für mindestens 100.000 einfache DES-Schlüssel ausreichen. Zum Knakken eines einfachen DES-Schlüssels mit Hilfe der Meet-in-the-Middle Attack ist es erforderlich 216 = 65.536 DES-Schlüssel zu erzeugen. Dies ist im CryptoServerr problemlos möglich. Außerdem können über das CSI Message Authentication Codes berechnet werden, welche die Hash-Werte aus dem originalen Angriff von Bond [Bon04] ersetzen können. Das CSI des CryptoServersr ist somit anfällig für die Meet-in-the-Middle Attack. In leicht abgewandelter Form kann sie problemlos angewandt werden. 4.2.3 Key Import Attack Der Schlüssel mit der ID 2222 1124 ist ein exportierbarer KEK (siehe Anhang A). Mit Hilfe der Funktion cs_wrap_key() kann dieser Schüssel exportiert werden (z.B. nach d:\temp\kek.wrap). Die Funktion cs_unwrap_key() verlangt schließlich den Typ des zu importierenden Schlüssel als Parameter. Hier kann nun problemlos auch ein anderer als der ursprüngliche Typ angegeben werden. Im Beispiel wurde der exportierte Schlüssel unter der ID 2222 2222 erneut als exportierbarer Datenschlüssel importiert. Ab sofort kann jeder unter dem KEK mit der ID 2222 1124 exportierte Schlüssel mit Hilfe des Schlüssels mit der ID 2222 2222 entschlüsselt werden. Für diesen Angriff ist das CSI somit anfällig. 4.2.4 Differential Protocol Analysis Die im Kapitel 3.3.3 beschriebene Methode des Fuzzings bedient sich einer Variante der Differential Protocol Analysis. Daher soll letztere an dieser Stelle nicht gesondert betrachtet werden. Es sei stattdessen auf Abschnitt 4.3.3 verwiesen. Zur Anfälligkeit des CSI und des CryptoServersr selbst für diesen Angriffstyp kann an dieser Stelle daher noch keine Aussage gemacht werden. 4.2.5 Timing Attacks Dieser Seitenkanalangriff wurde nicht näher untersucht, da dies den Rahmen der Diplomarbeit gesprengt hätte. 41 4 Analyse des CryptoServersr 4.2.6 Known Keys in the System Welchen Nutzen kann ein Angreifer aus einem ihm bekannten Schlüssel im CryptoServerr ziehen? Diese Frage lässt sich nicht generell beantworten, sondern hängt von der Art des Schlüssels ab, den der Angreifer kennt. Es sind drei Fälle zu unterscheiden: Der Angreifer kennt... a) einen Datenschlüssel b) einen Key Encryption Key (KEK) c) den Master Box Key (MBK) Diese drei Fälle werden im Folgenden separat untersucht. Bekannter Datenschlüssel Ein bekannter Datenschlüssel ist zunächst einmal – verglichen mit anderen Schlüsseltypen – am wenigsten problematisch. Je nachdem ob es sich bei dem bekannten Schlüssel um einen symmetrischen oder asymmetrischen Schlüssel handelt, können mit diesem Schlüssel zwar verschlüsselte Daten dechiffriert oder digitale Signaturen gefälscht werden. Allerdings ist dieses Problem nach Bekanntwerden dieses Missstandes relativ einfach und schnell zu beheben. Es genügt, den kompromittierten Schlüssel zu löschen und durch einen neuen Schlüssel zu ersetzen. (Zusätzlich sollten natürlich Nachforschungen betrieben werden, um herauszufinden, wie der Schlüssel überhaupt kompromittiert werden konnte. Anschließend sollten entsprechende Gegenmaßnahmen eingeleitet werden.) Ernster wird die Lage, falls der kompromittierte Schlüssel exportiert werden kann und die verwendete Security-API, wie das CSI, anfällig für die in Kapitel 3.2.2 beschriebene Key Import Attack ist. In diesem Fall ist es dem Angreifer möglich einen bekannten KEK zu erhalten. In diesem Fall gelten alle der im folgenden Abschnitt beschriebenen Erkenntnisse analog. Bekannter Key Encryption Key Ein bekannter Key Encryption Key (häufig auch EXPORTER genannt) unterminiert die Sicherheit aller als exportierbar markierten Schlüssel im CryptoServerr . 42 4 Analyse des CryptoServersr Als erste Gegenmaßnahme müssen alle als exportierbar markierten Schlüssel einschließlich des kompromittierten Key Encryption Keys ausgetauscht werden. Außerdem sind natürlich auch die im vorherigen Abschnitt beschriebenen zusätzlichen Maßnahmen höchst ratsam, um einen erneuten Angriff nach dem gleichen Schema abwehren zu können. Bekannter Master Box Key Der Master Box Key, ein symmetrischer Schlüssel mit einer Länge von 24 Bytes (3DES oder AES), ist eine Besonderheit des CryptoServersr und hat zwei verschiedene Anwendungsgebiete. Zum einen kann er innerhalb des CSI als Key Encryption Key zum Sichern und Wiederherstellen sämtlicher vom CSI benutzter Schlüssel dienen. Zum anderen kann er, völlig unabhängig vom CSI, zum vollständigen Sichern der Benutzerdatenbank des CryptoServersr verwendet werden. Eine weitere Besonderheit dieses Schlüssels ist, dass er nicht im CryptoServerr selbst, sondern in einem an diesen angeschlossenen Pinpad erzeugt und verteilt auf zwei Smartcards gespeichert wird. Anschließend kann er von diesen beiden Smartcards in den CryptoServerr geladen werden. Der Vorteil dieser Methode ist, dass er problemlos auch in weitere CryptoServerr geladen werden kann, was den Schlüssel- und Benutzerkontenaustausch zwischen verschiedenen Modulen ermöglicht. Eine Kompromittierung dieses Schlüssels birgt daher noch größere Risiken, als das Bekanntwerden eines „normalen“ KEK. Neben den als exportierbar markierten Schlüsseln ist hier auch die Benutzerdatenbank gefährdet – ggf. sind sogar mehrere CryptoServerr auf einmal kompromittiert. Unter Benutzung der mit Version 1.2.3 des CSI [BH06b] eingeführten Backup-Funktion können mit Hilfe des MBK sogar nicht als exportierbar markierte Schlüssel gesichert werden. Eine vollständige Neu-Initialisierung der betroffenen Module ist in diesem Fall ratsam. 4.3 Neue Angriffsszenarien Dieser Abschnitt widmet sich der Analyse der selbst entwickelten Angriffsszenarien, welche in Abschnitt 3.3 vorgestellt wurden. 4.3.1 Session Hijacking Wie der Aufbau einer Session auf API-Ebene abläuft ist bereits in Abschnitt 3.3.1 beschrieben. Für den Angriff auf diesen Verbindungsaufbau wichtiger und interessanter ist aber, 43 4 Analyse des CryptoServersr welche Informationen dabei auf der Byteebene zwischen Host und CryptoServerr ausgetauscht werden. So werden beispielsweise beim Laden der Module des CSAPI (Schritte 2.-4.) überhaupt keine Informationen ausgetauscht. Die Authentifizierung sowie der eigentliche Aufbau der Session erfolgen erst durch einen der Befehle cs_login_pwd() bzw. cs_login_sign(). Dazu werden (unter der Annahme, dass kein Fehler auftritt) insgesamt vier TCP-Datenpakete ausgetauscht. Aufbau einer Session Zunächst schickt der Host eine Challenge-Anfrage (GetChallenge) an den CryptoServerr (Abbildung 4.1). ACH 00 00 08H 02H 00 00 00H 1 Byte 3 Bytes 1 Byte 3 Bytes Abbildung 4.1: GetChallenge Daraufhin erhält er die 8 Byte lange Challenge zusammen mit einer diese eindeutig kennzeichnenden ID zurückgeschickt (Abbildung 4.2). AAH 00 00 10H 02H CH-ID 00 00H Challenge 1 Byte 3 Bytes 1 Byte 1 Byte 2 Bytes 8 Bytes Abbildung 4.2: ChallengeResponse Im zweiten Schritt sendet der Host den Namen des zu authentisierenden Nutzers, die ID der Challenge, einen Hash über die letzten Length2 Bytes des Datenpakets konkateniert mit der empfangenen Challenge und dem Passwort des Benutzers, sowie seinen Wert aus der ersten Phase des Diffie-Hellman-Schlüsselaustausches [DH76, RSA93] an den CS (Abbildung 4.3). ACH Length1 01H user 00H CH-ID 00 14H hash 00 00 00H 1 Byte 3 Bytes 1 Byte 8 Bytes 1 Byte 1 Byte 2 Bytes 20 Bytes 3 Bytes ··· 9CH Length2 00 83H 0AH 00H 03 01 04H dh_y_host 1 Byte 3 Bytes 2 Bytes 1 Byte 1 Byte 3 Bytes (Length2 - 11) Bytes ··· mit hash 20 Bytes := SHA-1( 9CH ··· dh_y_host Challenge password 1 Byte ··· (Length2 - 11) Bytes 8 Bytes 16 Bytes Abbildung 4.3: GetSessionKey (SHA-1-Passwort) 44 ) 4 Analyse des CryptoServersr Der CryptoServerr antwortet mit der Session-ID, der ersten Sequenz-Nummer der Session und seinem Wert aus der ersten Phase des Diffie-Hellman-Protokolls (Abbildung 4.4). 9AH Length ID seq_nr dh_y_cs 1 Byte 3 Bytes 2 Bytes 16 Bytes (Length - 22) Bytes Abbildung 4.4: Session Information In der zweiten Phase des Diffie-Hellman-Protokolls berechnen Host und CS nun – unabhängig von einander – den gemeinsamen geheimen Schlüssel K aus dem eigenen geheimen (x bzw. y) und dem vom jeweils anderen erhaltenen öffentlichen Wert (gy bzw. g x ): K := ( g x )y = g xy = gyx = ( gy ) x mit Diffie-Hellman-Parameter g Neben der Authentisierung mittels Passwort unterstützt das CSI auch die Authentisierung mittels RSA-Signatur. In diesem Fall unterscheidet sich das dritte Datenpaket minimal von dem in Abbildung 4.3 dargestellten. Anstelle des Hash-Werts wird die Signatur über die Konkatenation der letzten Length2 Bytes des Pakets mit der Challenge gesendet (Abbildung 4.5). ACH Length1 01H user 00H CH-ID ksize signature 00 00 00H 1 Byte 3 Bytes 1 Byte 8 Bytes 1 Byte 1 Byte 2 Bytes ksize Bytes 3 Bytes ··· 9CH Length2 00 83H 0AH 00H 03 01 04H dh_y_host 1 Byte 3 Bytes 2 Bytes 1 Byte 1 Byte 3 Bytes (Length2 - 11) Bytes ··· Abbildung 4.5: GetSessionKey (RSA Signatur) Übertragen von Befehlen und Daten Alle folgenden Kommandos an den CryptoServerr , die kryptografische Dienste anfordern, werden von nun an ausschließlich verschlüsselt übertragen (Abbildung 4.6). Dabei wird der zuvor im Rahmen des Diffie-Hellman-Protokolls berechnete Schlüssel K verwendet. ECH Length ID 01 00H MAC filler Enc. Command Data 1 Byte 3 Bytes 2 Bytes 2 Bytes 8 Bytes lf Bytes n Bytes mit lf=8-lp, wobei Enc. Command Data MAC n Bytes 8 Bytes := eK ( Pad Command Data 00H . . . 00H lp Bytes m Bytes 8 Bytes ) mit lp, so dass n=(lp+m) ein Vielfaches von 8 ist. Abbildung 4.6: Secure Messaging: Anweisung 45 4 Analyse des CryptoServersr Die Antworten auf solche Befehle werden ebenfalls verschlüsselt übermittelt (Abbildung 4.7). Verschlüsselung und Berechnung der MAC erfolgen analog zu Abbildung 4.6. EAH Length ID 01 00H MAC filler Enc. Answer Data 1 Byte 3 Bytes 2 Bytes 2 Bytes 8 Bytes lf Bytes n Bytes Abbildung 4.7: Secure Messaging: Antwort Angriffsmöglichkeiten Belauscht der Angreifer den Netzwerkverkehr zwischen Host und CryptoServerr während des Aufbaus der Sitzung, so kennt er zwar die ID der Session und die erste Sequenznummer (aus der er die aktuelle Sequenznummer berechnen kann). Um übertragene Befehle und Daten verstehen und eigene Befehle und Daten an den CryptoServerr senden zu können, benötigt er aber außerdem den Schlüssel K der Sitzung (engl.: session key). An diesen Schlüssel gelangt der Angreifer aber nur, wenn es ihm gelingt das Diffie-Hellman-Protokoll zu kompromittieren. Bei nicht ausreichend sorgsamer Implementierung des Diffie-Hellman-Protokolls, ist dies nach [RS00] durchaus möglich. Allerdings ist es nach Raymond et al. in den meisten Szenarien ebenso möglich den Angriff zu verhindern. Möglich ist eine Kompromittierung beispielsweise dann, wenn einer der Werte dh_y_host und dh_y_cs aus der ersten Phase des Diffie-Hellman-Protokolls 1 ist. Sei dh_y_host = g x und dh_y_cs = g x mit geheimen Werten x und y, dann gilt mit g x = 1 und y beliebig: ( g x ) y = 1y = 1 Für gy = 1 und x beliebig gilt dies analog. Der Angreifer selbst kann im hier betrachteten Szenario keine zwischen dem Host und dem CryptoServerr ausgetauschten Datenpakete löschen oder ändern. Er kann diese Pakete nur mitlesen und muss daher darauf hoffen, dass einer der beiden oben genannten Werte zufällig 1 ist. Aufgrund der vom CSI verwendeten Länge für diese Werte von 128 Bit ist dies jedoch hinreichend unwahrscheinlich. Eine Kompromittierung des hier eingesetzten Diffie-Hellman-Protokolls ist also durch reines Mithören nicht möglich. Somit ist auch die Übernahme der Session ebenso wenig möglich, wie das parallele Nutzen dieser Session. Das hier erprobte Session hijacking ist somit nicht erfolgreich. 46 4 Analyse des CryptoServersr 4.3.2 Man-in-the-Middle Wie in Abschnitt 3.3.2 beschrieben, erhält der Angreifer in diesem Szenario – verglichen mit dem zuvor beschriebenen – nun zusätzlich die Fähigkeit, zwischen dem Host und dem CryptoServerr ausgetauschte Datenpakete zu löschen und zu verändern. Das bedeutet, dass der Angreifer beispielsweise einen oder beide der DiffieHellman-Werte dh_y_host und dh_y_cs austauschen kann. Insbesondere kann er diese durch den Wert 1 ersetzten. Angriff 1 Der Wert dh_y_host kann mit Hilfe entsprechender Tools (hier kam der Winsock Packet Editor Pro [Bra] zum Einsatz) durch 1 ersetzt werden. Aufgrund der Absicherung der Integrität dieses Wertes mittels Hash-Wert (in dem unter anderem auch das – dem Angreifer nicht bekannte – Passwort des Nutzers eingeflochten ist, vgl. Abbildung 4.3) bemerkt der CryptoServerr diese Manipulation jedoch sofort. Die Verbindung mit dem Host wird daraufhin mit dem Fehlercode 0xB0830013 („authentication failed“) beendet. Der Angriff ist nicht erfolgreich. Angriff 2 Für den vom CryptoServerr kommenden Wert dh_y_cs ist dieser Angriff dagegen – zumindest teilweise – erfolgreich. Das CSI überprüft den ankommenden Wert nicht wie in [RS00] empfohlen und setzt daraufhin den aktuellen Session key auf 1. Die Kommunikation mit dem CryptoServerr funktioniert allerdings auch in diesem Fall nicht, da der CS mit dem korrekten Session key verschlüsselte Kommandos erwartet. Aus seiner Sicht ist das Diffie-Hellman-Protokoll ja unverändert abgelaufen. Er weist daher alle (aus seiner Sicht) falsch verschlüsselt ankommenden Befehle mit dem Fehlercode 0xB0830021 („secure messaging failed“) ab. Einen kleinen Nutzen kann der Angreifer aber trotzdem aus diesem Angriff ziehen: Wenn er verhindert, dass nachfolgende Pakete vom Host den CryptoServerr erreichen und er selbst statt dessen mit einem gültigen Fehlercode [Uti06a] antwortet, kann er unter Umständen eigentlich für den CS gedachte Informationen mitlesen. Sicherheitskritisch ist dies insbesondere dann, wenn der Benutzer mit dem Kommando cs_import_key() einen neuen Schlüssel im Klartext importieren will. Der Angreifer fängt das erste Paket ab, schickt dem Host den Fehlercode 0xB0830024 („internal buffer overflow“) zurück und beendet abschließend die Verbindung. Unternimmt der Benutzer 47 4 Analyse des CryptoServersr anschließend einen zweiten Versuch, lässt der Angreifer alle Pakete unverändert passieren und erhält so einen bekannten Schüssel im CryptoServerr . Die daraus resultierenden Gefahren wurden bereits in Abschnitt 4.2.6 diskutiert. Die Session selbst kann auch als „man in the middle“ nicht vollständig übernommen werden. Dem Host kann jedoch ein bekannter Schlüssel untergeschoben werden. Dieser Angriff ist damit teilweise erfolgreich. Gegenmaßnahmen Als erste Gegenmaßnahme müssen, wie in [RS00] empfohlen, die im Rahmen des DiffieHellman-Protokolls ausgetauschten Nachrichten vom CSI auf ungewöhnliche Werte überprüft werden. Insbesondere darf weder dh_y_host noch dh_y_cs noch K den Wert 1 haben. Weiterhin müssen sowohl dh_y_host als auch dh_y_cs kleiner p − 1 und größer als 1 sein (2 ≤ g ≤ p − 2). Dies ist wichtig, da im Diffie-Hellman-Protokoll grundsätzlich modulo p gerechnet wird. Alle gα·( p−1)· x und alle gα·( p−1)·y mit α ≥ 1 sind damit äquivalent zu 1 modulo p (mit g x = dh_y_host und gy = dh_y_cs). Als zweite Möglichkeit kann zusätzlich auch der vom CryptoServerr kommende Wert dh_y_cs kryptografisch abgesichert werden. Im Falle der Authentifikation mittels Passwort kann ein Hash-Wert über dh_y_cs und das Passwort (respektive dessen Hash-Wert) berechnet werden. Findet die Authentifikation via RSA-Signatur statt, kann der CryptoServerr seinen Wert dh_y_cs verschlüsselt übermitteln – der öffentliche Schlüssel des Nutzers ist ihm bekannt und darf in diesem Fall auch ausschließlich ihm und dem Nutzer bekannt sein. 4.3.3 Buffer Overflow Wie in Abschnitt 3.3.3 erläutert, soll zur Untersuchung des CSI auf mögliche Buffer Overflows die Technik des Fuzzings angewendet werden. Es macht dabei wenig Sinn, die Funktionen des APIs selbst zu fuzzen. Denn diese werden zunächst lokal ausgewertet und in Bytefolgen umgewandelt, welche schließlich an den CryptoServerr LAN geschickt werden. Das Ergebnis wäre daher mehr ein Test des lokal laufenden Teils des API, als des – wesentlich interessanteren – Teils des CSI, welcher im CryptoServerr selbst läuft. Aus diesem Grund setzt die Analyse direkt auf der Ebene der Byteströme an: Es wird direkt die Payload der an den CryptoServerr LAN gesendeten TCP-Pakete gefuzzt. Zu diesem Zweck kamen zwei Tools zum Einsatz. 48 4 Analyse des CryptoServersr Analyse mit Taof Den Anfang machte das in Python geschriebene Tool Taof – The art of fuzzing von Rodrigo Marcos in der Version 0.3 [Mar07]. Dabei handelt es sich um einen generischen Fuzzer für Netzwerkprotokolle. Der Fuzzing-Prozess verläuft hier in drei Phasen. Die erste Phase dient der Datensammlung. Taof schaltet sich hier als eine Art Man-in-theMiddle in die Datenübertragung zwischen Host und Zielrechner (im vorliegenden Fall dem CryptoServerr ) und protokolliert sämtliche übertragenen Daten. Dazu lauscht er auf einem benutzerdefinierten Port und leitet die Pakete nach der Protokollierung an das anzugebende Ziel weiter (vgl. Abbildung 4.8(a)). Bei jeder Protokollierung legt Taof für die Protokolldateien einen neuen Ordner an, dessen Name den aktuellen Jahrestag sowie die aktuelle Uhrzeit enthält. (a) Netzwerk-Einstellungen (b) Fuzzing-Positionen Abbildung 4.8: Taof – The art of fuzzing In der zweiten Phase präsentiert Taof sämtliche abgefangenen Pakete vom Host zum Zielrechner. Dabei zeigt er ausschließlich die Payload des Pakets an. Hier kann der Benutzer nun beliebige Bereiche markieren und für jeden einzelnen Bereich angeben, welche Pufferüberlauf-Testfälle angewendet werden sollen (vgl. Abbildung 4.8(b)). Diese Angaben speichert Taof im XML-Format im jeweiligen Protokollordner, so dass diese wiederverwendbar sind. Anhang B zeigt die im Rahmen dieser Arbeit verwendete Konfiguration. 49 4 Analyse des CryptoServersr Zum Schluss ist nur noch ein Knopfdruck nötig, um dass Fuzzing selbst zu starten. Taof spielt nun sämtliche intern gespeicherten Szenarien an den vom Benutzer festgelegten Positionen durch und protokolliert den gesamten Prozess, einschließlich der Antworten vom Zielrechner, in einer einfachen Textdatei. Zur einfacheren Analyse dieser Textdatei wurde ein eigenes Tool geschrieben, welches diese Datei in ein für Menschen leichter lesbares Format konvertiert. Untersucht wurde der gesamte Prozess, der durchlaufen wird, wenn ein CSI-Befehl an den CryptoServerr geschickt wird. Dieser Prozess besteht aus fünf TCP-Paketen in Richtung des CryptoServersr : 1. Verbindungsaufbau 2. Anfordern einer Challenge 3. Authentifikation und Übermittlung des eigenen Diffie-Hellman Wertes 4. Senden des verschlüsselten Befehls 5. Beenden der Session Die Konfiguration der Fuzz-Punkte entspricht denen in der in Anhang B dargestellten XML-Datei. Zur Auswertung der von Taof während des Fuzzens generierten Report-Datei kamen die bereits erwähnte Eigenentwicklung sowie das Tool GREP for Windows (eine Portierung des Unix-Tools GNU grep zur zeilenbasierten Textsuche und Textfilterung) von Tim Charron [Cha01] zum Einsatz. Ergebnis: Es wurden keine Sicherheitslücken gefunden. Analyse mit CSI Fuzz Als zweites kam eine CSI Fuzz getaufte Eigenentwicklung zum Einsatz. Diese Entwicklung war notwendig, da im Laufe der Auswertung der von Taof generierten Report-Datei klar wurde, dass der CryptoServerr die von Taof generierten Pakete nur bis zu der in den Bytes 2 bis 4 der Payload kodierten Längenangabe interpretiert hat. Der über diese Länge hinausgehende Teil wurde schlicht verworfen und Taof selbst bot keine Möglichkeit diese automatisch anzupassen. Bei CSI Fuzz handelt es sich nun um ein in C geschriebenes Tool für Linux, welches dieses Manko behebt. Die zum Fuzzen benutzen Integer-, String- und Format-String-Listen 50 4 Analyse des CryptoServersr wurden dabei aus dem Taof-Quelltext übernommen. Zusätzlich enthält CSI Fuzz eine Liste zu überprüfender MACs. Bei den enthaltenen TCP-Routinen handelt es sich um leicht angepasste Varianten der TCP-Bibliothek des Fuzzing-Tools SPIKE [Ait02, Ait]. CSI Fuzz ist konkret auf das Fuzzing des CSI der Utimaco spezialisiert und erwartet daher als einzigen Parameter die IP-Adresse und optional den Port des anzugreifenden CryptoServersr . Dazu wird zunächst eine gültige Session aufgebaut. Das eigentliche Fuzzing erfolgt dann auf das TCP-Paket mit den eigentlichen (verschlüsselten) Anweisungen. Dabei wird zunächst die Session-ID verändert. In einem zweiten Schritt wird eine gültige Session-ID festgelegt und stattdessen der Message Authentication Code (MAC) gefuzzt. Abschließend wird der Kommandoblock selbst gefuzzt, wobei dies mit verschiedenen MACs durchgespielt wird. Bei der Auswertung der von CSI Fuzz generierten Report-Datei kam das im vorherigen Abschnitt bereits erwähnte Tool GNU grep zum Einsatz. Zusätzlich wurde das Unix-Tool GNU sed, ein Editor zur nicht-interaktiven Textbearbeitung, verwendet. Ergebnis: Es wurden keine Sicherheitslücken gefunden. 4.3.4 Lunchtime Attack Aus zeitlichen Gründen verweise ich an dieser Stelle nur auf die Arbeiten von Janssens et al. [JBP+ 00, Jan00]. Hier wurde ein dem in Abschnitt 3.3.4 sehr ähnliches Szenario angenommen. Untersucht wurden der Apache SSL Server (Version 1.3.12) unter Linux, sowie der Microsoft Internet Explorer (Version 5.01), Microsoft Outlook Express (Version 5.01), der Netscape Navigator (Version 4.76) und der Netscape Messenger (Version 4.76) unter Microsoft Windows 2000. Außerdem wurde das Windows 2000 Encrypted File System (EFS) untersucht. In allen Fällen war es möglich, die von diesen Anwendungen verwendeten privaten Schlüssel (es wurden nur RSA-Schlüssel untersucht) im Hauptspeicher des Rechners oder der Windows-Auslagerungsdatei (Swap-File) in kurzer Zeit zu lokalisieren. Die privaten Signatur-Schlüssel, die vom CSI verwendet werden, wurden zwar nicht explizit untersucht. Da es sich aber auch hierbei um RSA-Schlüssel handelt, ist die Wahrscheinlichkeit groß, dass sich die Ergebnisse aus [JBP+ 00] direkt auf diesen Fall übertragen lassen. 51 4 Analyse des CryptoServersr 4.4 Zusammenfassung In diesem Kapitel wurde der CryptoServerr in Bezug auf die in Kapitel 3 beschriebenen und auf den CS anwendbaren Angriffe analysiert. Nicht genauer untersucht wurden dabei die Timing Attacks und die Lunchtime Attack, da dies den Rahmen der Diplomarbeit gesprengt hätte. Der Schwerpunkt lag stattdessen auf der Analyse des Session Hijackings, des Man-in-theMiddle Angriffs und der Buffer overflows. Erfolgreich war hier ausschließlich der Man-inthe-Middle Angriff. Außerdem wurden die Type System/Key Separation Attack, die Meet-in-the-Middle Attack und die Key Import Attack unter die Lupe genommen. Die beiden zuletzt genannten Angriffe sind dabei erfolgreich – allerdings nur unter der Voraussetzung, dass die beim CSI zwingend erforderliche Authentisierung bereits umgangen wurde. Auch die Frage, welchen Nutzen ein Angreifer aus einem ihm bekannten Schlüssel im CryptoServerr ziehen kann, wurde in diesem Kapitel beantwortet. Das nächste und letzte Kapitel fasst die in dieser Arbeit gewonnenen Erkenntnisse zusammen und schließt mit einem Ausblick auf weiterführende Arbeiten. 52 5 Zusammenfassung und Ausblick 5.1 Aufgabenstellung Im Rahmen der Diplomarbeit wurde der SafeGuard CryptoServerr der Utimaco Safeware AG auf seine Eignung als SecurityServer in unsicheren Netzen untersucht. Dazu wurde das Cryptographic Services Interface (CSI), das proprietäre Security-API der Utimaco, einer ausführlichen Sicherheitsüberprüfung unterzogen. Die Untersuchung war als reiner Blackbox-Test ausgelegt und erfolgte ausschließlich per Fernzugriff (engl.: remote access) auf das Untersuchungsobjekt, da ein solches Szenario die Möglichkeiten eines potentiellen Angreifers in einem unsicheren Netz bestmöglich nachbildet. 5.2 Ergebnisse In einem ersten Schritt wurden zunächst die in den vergangenen Jahren von Bond und Clulow entwickelten Angriffe zusammengestellt und deren Anwendbarkeit auf das CSI überprüft (Abschnitt 3.2). Dabei wurde schnell klar, dass ein Großteil dieser Angriffe ausschließlich auf solche APIs anwendbar ist, die über explizite Funktionen für Finanztransaktionen verfügen. Das CSI verfügt jedoch nicht über solche Funktionen. Außerdem deckten diese Angriffe nicht die Besonderheiten des CSI beim Verbindungsaufbau sowie der Benutzerauthentifizierung ab. Daher wurden die vier neuen Angriffsszenarien Session Hijacking, Man-in-the-Middle, Buffer Overflow und Lunchtime Attack entwickelt (Abschnitt 3.3). Die von Bond und Clulow entwickelten Angriffe setzen voraus, dass zur Benutzung der anzugreifenden Security-API keine Benutzerauthentifizierung erforderlich ist. Daher konnten diese Angriffe nur unter der Annahme analysiert werden, dass diese Authentifizierung bereits erfolgreich umgangen wurde. Der CryptoServerr ist in diesem Fall verwundbar für die Meet-in-the-Middle Attack (Abschnitt 4.2.2) und die Key Import Attack (Abschnitt 4.2.3). Allerdings hat der Angreifer unter diesen Voraussetzungen ohnehin die volle Kontrolle über das CSI. Der Erfolg dieser Angriffe ist daher in der Praxis ohne Bedeutung. 53 5 Zusammenfassung und Ausblick An der Benutzerauthentifizierung selbst sowie an dem gesamten Prozess des Verbindungsaufbaus setzten die neuen Angriffsszenarien an. Erfolgreich war hier nur der Man-in-theMiddle Angriff. Das Session Hijacking und die Suche nach Buffer Overflows waren dagegen nicht erfolgreich. Die Lunchtime Attack wurde nicht näher untersucht, da dies den Rahmen der Diplomarbeit gesprengt hätte. Die Ergebnisse einer anderen Arbeit, in der ein sehr ähnliches Szenario untersucht wurde, legen jedoch nahe, dass dieser Angriff durchaus erfolgsversprechend ist (Abschnitt 4.3.4). Zu den erfolgreichen neuen Angriffsszenarien, und damit nur im Hinblick auf den Manin-the-Middle Angriff, wurden Gegenmaßnahmen aufgezeigt. In Bezug auf die von Bond und Clulow entwickelten Angriffe war dies nicht notwendig, da die zur Verwendung des Cryptographic Services Interfaces zwingend erforderliche Benutzerauthentifizierung hier bereits einen ausreichenden Schutz bietet. Sobald die empfohlenen Gegenmaßnahmen zur Verhinderung des Man-in-the-Middle Angriffs implementiert wurden und ggf. sichergestellt wird, dass die Lunchtime Attack nicht erfolgreich ist, ist der SafeGuard CryptoServerr für den Einsatz als SecurityServer in unsicheren Netzen geeignet. Wünschenswert ist aus Sicht des Autors allerdings eine Erweiterung der Benutzerverwaltung des CSI dahin gehend, dass verschiedene Benutzergruppen mit unterschiedlichen Rechten unterstützt werden. In der derzeitigen Version des CSI haben alle Benutzer die gleichen, und zwar alle, Rechte. Jeder Benutzer kann so zum Beispiel Schlüssel exportieren und importieren. Das Typensystem des CSI wird damit, unter Berücksichtigung der Key Import Attack, teilweise hinfällig und schützt allenfalls vor versehentlichen Fehlern. Betrachten wir beispielsweise eine Policy, welche eine strikte Trennung zwischen den Personen, die kryptografische Schlüssel verwalten, und denen, die mit Hilfe dieser Schlüssel Signaturen erzeugen, fordert. Eine solche Policy ist zum Beispiel in Zertifizierungsstellen (engl.: certification authority, CA) durchaus denkbar. Im CSI ist sie derzeit aber nicht umsetzbar. 5.3 Schwierigkeiten Zu Beginn der Literaturrecherche entdeckte der Autor schnell die ausführlichen und in dieser Arbeit viel zitierten Arbeiten von Bond (insbesondere [Bon04]) und Clulow (insbesondere [Clu03a]). Mit fortschreitender Analyse kristallisierte sich jedoch heraus, das viele der 54 5 Zusammenfassung und Ausblick dort beschriebenen Angriff – entgegen erster Erwartungen – nicht auf den CryptoServerr anwendbar sind (siehe auch Abschnitt 5.2). Die Schwierigkeiten beim Man-in-the-Middle Angriff waren hauptsächlich technischer Natur. Das Problem war hier, ein Möglichkeit zu finden, TCP-Pakete abfangen und während der Übertragung (engl.: on-the-fly) ändern zu können. Nachdem mit dem Winsock Packet Editor Pro [Bra] ein entsprechendes Tools aufgetan worden war, vereinfachte sich dieser Prozess erheblich. Sehr zeitaufwendig war die Analyse der Buffer overflows mittels Fuzzing. Es existiert inzwischen zwar eine Vielzahl von Tools und Frameworks zum Fuzzen verschiedenster Software (vgl. [Thr]) – viele dieser Tools und Frameworks sind jedoch schlecht dokumentiert und/oder für die Analyse des CSI nicht geeignet. Letzteres hing damit zusammen, dass das CSI eigene Längenangaben in der Payload transportiert, die allesamt auch Teile der Payload einschließen, welche vor dieser Längenangabe stehen. Mit der Konstruktion solcher TCP-Pakete waren alle untersuchten Fuzzer überfordert. Somit war hier eine zeitraubende Eigenentwicklung erforderlich. 5.4 Ausblick Sollte das CSI irgendwann einmal eine differenziertere Zugangskontrolle (z.B. verschiedene Benutzergruppen mit unterschiedlichen Rechten innerhalb des CSI) anbieten, muss darauf geachtet werden, dass insbesondere die Key Import Attack dann nicht mehr möglich ist. Dies wäre beispielsweise realisierbar, indem zu jedem Schlüssel auch dessen Typ (kryptografisch abgesichert) mit exportiert wird. Wie im vorherigen Abschnitt erwähnt, wurde die Lunchtime Attack in dieser Arbeit nicht näher untersucht. Die Ergebnisse aus [JBP+ 00] legen jedoch nahe, dass ein solcher Angriff durchaus erfolgsversprechend ist. Eine genaue Untersuchung, zum Beispiel im Rahmen einer Studienarbeit, wäre daher durchaus interessant. Gleiches gilt für Angriffe über Zeitmessungen, die in der vorliegenden Diplomarbeit ebenfalls nicht näher betrachtet wurden. Nach [BB03] sind Timing Attacks auch über ein Netzwerk durchaus möglich. In dieser Arbeit wurde ausschließlich das proprietäre Cryptographic Services Interface des SafeGuard CryptoServersr untersucht. Das Paket SecurityServer umfasst aber noch weitere Security-APIs (vgl. Abschnitt 2.4.4). PKCS #11 wurde in seiner allgemeinen Form bereits von Clulow analysiert [Clu03b], die konkrete zu diesem Standard kompatible Implementierung der Utimaco wurde von ihm jedoch nicht betrachtet. Gezielte Analysen dieser Implementierung, wie auch der Implementierungen der JCE und des CSP für den CryptoServerr stehen daher noch aus. 55 A Verwendete Schlüssel im CryptoServerr Die Tabelle zeigt die zur Analyse des CryptoServersr verwendeten Schlüssel. Ein X in einer der beiden letzten Spalten bedeutet, dass das entsprechende Attribut gesetzt ist. Typ Länge ID DES 8 Byte 1111 1111 KEK? X 1111 1112 16 Byte 1111 1113 X 1111 1114 X X 1111 1123 X 1111 1124 X 16 Byte X 1111 1133 X 1111 1134 X X 2222 1113 X 2222 1114 X X 2222 1123 X 2222 1124 X 512 Bit X 2222 1133 X 2222 1134 X X 3333 1111 3333 1112 56 X 2222 1131 2222 1132 RSA X 2222 1121 2222 1122 32 Byte X 2222 1111 2222 1112 24 Byte X 1111 1131 1111 1132 AES X 1111 1121 1111 1122 24 Byte Exportable? X A Verwendete Schlüssel im CryptoServerr Typ Länge ID KEK? RSA 512 Bit 3333 1113 X 3333 1114 X 1024 Bit X 3333 1123 X 3333 1124 X X 3333 1133 X 3333 1134 X 192 Bit X 3333 1143 X 3333 1144 X X 4444 1113 X 4444 1114 X X 4444 1123 X 4444 1124 X X 4444 1133 X 4444 1134 X X 4444 1141 X 4444 1142 521 Bit X 4444 1131 4444 1132 384 Bit X 4444 1121 4444 1122 256 Bit X 4444 1111 4444 1112 224 Bit X 3333 1141 3333 1142 ECDSA X 3333 1131 3333 1132 2048 Bit X 3333 1121 3333 1122 1536 Bit Exportable? 4444 1143 X 4444 1144 X X 4444 1151 X 4444 1152 4444 1153 X 4444 1154 X X Tabelle A.1: Verwendete Schlüssel im CryptoServerr 57 B Taof: fuzz.xml <?xml version="1.0" ?> <conversation dest_host="10.17.0.147" dest_port="288" local_host="0.0.0.0" local_port="288" proto="tcp" time="11:53:34" > <request ID="1" as_is="0" time="11:53:37"> <fuzz bo="1" checklen="0" dict="0" from="4" fs="0" lformat="0" lfrom="0" lto="0" lvalue="0" obo="1" to="6"/> <fuzz bo="1" checklen="0" dict="0" from="6" fs="0" lformat="3" lfrom="0" lto="0" lvalue="0" obo="1" to="7"/> <fuzz bo="1" checklen="0" dict="0" from="7" fs="0" lformat="3" lfrom="0" lto="0" lvalue="0" obo="1" to="8"/> <fuzz bo="1" checklen="1" dict="0" from="1" fs="1" lformat="3" lfrom="0" lto="8" lvalue="0" obo="1" to="4"/> </request> <request ID="2" as_is="0" time="11:53:37"> <fuzz bo="1" checklen="0" dict="0" from="4" fs="0" lformat="3" lfrom="0" lto="0" lvalue="0" obo="1" to="5"/> <fuzz bo="1" checklen="0" dict="0" from="5" fs="0" lformat="3" lfrom="0" lto="0" lvalue="0" obo="1" to="8"/> <fuzz bo="1" checklen="1" dict="0" from="1" fs="1" lformat="3" lfrom="0" lto="8" lvalue="0" obo="1" to="4"/> </request> <request ID="3" as_is="0" time="11:53:38"> <fuzz bo="1" checklen="0" dict="0" from="5" fs="1" lformat="3" lfrom="0" lto="0" lvalue="0" obo="0" to="13"/> <fuzz bo="1" checklen="0" dict="0" from="14" fs="0" lformat="3" lfrom="0" lto="0" lvalue="0" obo="1" to="15"/> <fuzz bo="1" checklen="0" dict="0" from="17" fs="1" lformat="3" lfrom="0" lto="0" lvalue="0" obo="1" to="37"/> 58 B Taof: fuzz.xml <fuzz bo="1" checklen="0" dict="0" from="44" fs="0" lformat="3" lfrom="0" lto="0" lvalue="0" obo="1" to="46"/> <fuzz bo="1" checklen="0" dict="0" from="46" fs="0" lformat="3" lfrom="0" lto="0" lvalue="0" obo="1" to="47"/> <fuzz bo="1" checklen="0" dict="0" from="47" fs="0" lformat="3" lfrom="0" lto="0" lvalue="0" obo="1" to="48"/> <fuzz bo="1" checklen="0" dict="0" from="48" fs="0" lformat="3" lfrom="0" lto="0" lvalue="0" obo="1" to="51"/> <fuzz bo="1" checklen="0" dict="0" from="51" fs="1" lformat="3" lfrom="0" lto="0" lvalue="0" obo="1" to="179"/> <fuzz bo="1" checklen="1" dict="0" from="1" fs="1" lformat="3" lfrom="0" lto="179" lvalue="0" obo="1" to="4"/> </request> <request ID="4" as_is="0" time="11:54:02"> <fuzz bo="1" checklen="0" dict="0" from="4" fs="1" lformat="3" lfrom="0" lto="0" lvalue="0" obo="1" to="6"/> <fuzz bo="1" checklen="0" dict="0" from="6" fs="0" lformat="3" lfrom="0" lto="0" lvalue="0" obo="1" to="8"/> <fuzz bo="1" checklen="0" dict="0" from="8" fs="1" lformat="3" lfrom="0" lto="0" lvalue="0" obo="1" to="16"/> <fuzz bo="1" checklen="0" dict="0" from="16" fs="1" lformat="3" lfrom="0" lto="0" lvalue="0" obo="1" to="32"/> <fuzz bo="1" checklen="1" dict="0" from="1" fs="1" lformat="3" lfrom="0" lto="32" lvalue="0" obo="1" to="4"/> </request> <request ID="5" as_is="0" time="11:54:06"> <fuzz bo="1" checklen="0" dict="0" from="4" fs="0" lformat="3" lfrom="0" lto="0" lvalue="0" obo="1" to="6"/> <fuzz bo="1" checklen="0" dict="0" from="6" fs="0" lformat="3" lfrom="0" lto="0" lvalue="0" obo="1" to="7"/> <fuzz bo="1" checklen="0" dict="0" from="7" fs="0" lformat="3" lfrom="0" lto="0" lvalue="0" obo="1" to="9"/> <fuzz bo="1" checklen="1" dict="0" from="1" fs="1" lformat="3" lfrom="0" lto="9" lvalue="0" obo="1" to="4"/> </request> </conversation> 59 Literaturverzeichnis [ABCS06] A NDERSON , R OSS, M IKE B OND, J OLYON C LULOW und S ERGEI S KOROBOGA TOV : Cryptographic Processors – A Survey. Proceedings of the IEEE, 94(2):357–369, Februar 2006. [Ait] A ITEL , D AVE: SPIKE – a Fuzzer Creation http://www.immunitysec.com/resources-freesoftware.shtml (Letzter Kit. Zu- griff: 15.03.2007). [Ait02] A ITEL , D AVE: The Advantages of Block-Based Protocol Analysis for Security Testing. Technischer Bericht, Immunity, Inc., New York, NY, USA, Februar 2002. [And00] A NDERSON , R OSS: The Correctness of Crypto Transaction Sets. Security Protocols: 8th International Workshops Cambridge, UK, LNCS 2133:125–141, April 2000. [And01] A NDERSON , R OSS: Security Engineering – A Guide to Building Dependable Distributed Systems. John Wiley & Sons, Inc, Cambridge, UK, Januar 2001. [BB03] B RUMLEY, D AVID und D AN B ONEH: Remote Timing Attacks are Practical. In: Proceedings of the 12th USENIX Security Symposium, Seiten 1–14, Washington, DC, USA, August 2003. Stanford University. [BDL97] B ONEH , D AN, R ICHARD A. D E M ILLO und R ICHARD J. L IPTON: On the importance of checking cryptographic protocols for faults. Journal of Cryptology, 14(2):101– 119, 1997. [BH06a] B OLLICH , C HRISTIAN und R AINER H ERBERTZ: CryptoServer – Cryptographic Service Interface — Firmware Module CSI – Interface Specification, Version 1.2.1. Utimaco Safeware AG, Aachen, Deutschland, August 2006. [BH06b] B OLLICH , C HRISTIAN und R AINER H ERBERTZ: CryptoServer – Cryptographic Service Interface — Firmware Module CSI – Interface Specification, Version 1.2.3. Utimaco Safeware AG, Aachen, Deutschland, November 2006. [Bon00] B OND , M IKE: A Chosen Key Difference Attack on Control Vectors. University of Cambridge, November 2000. [Bon01] B OND , M IKE: Attacks on Cryptoprocessor Transaction Sets. In: K OÇ , Ç ETIN K AYA, D AVID N ACCACHE und C HRISTOF PAAR (Herausgeber): Cryptographic Hardware and Embedded Systems – CHES 2001, Third International Workshop, Band 2162 60 Literaturverzeichnis der Reihe Lecture Notes in Computer Science, Seiten 220–234, Paris, France, Mai 2001. Springer. [Bon04] B OND , M ICHAEL: Understanding Security APIs. Doktorarbeit, University of Cambridge, Cambridge, UK, Januar 2004. [Bra] B RADYOK: Winsock Packet Editor Pro. http://wpepro.net/ (Letzter Zugriff: 15.03.2007). [BS93] B IHAM , E LI und A DI S HAMIR: Differential Cryptanalysis of the Full 16-Round DES. Lecture Notes in Computer Science, 740:487–496, 1993. [BS97] B IHAM , E LI und A DI S HAMIR: Differential Fault Analysis of Secret Key Cryptosystems. Advances in Cryptology - Crypto ’97, LNCS 1294:513–525, 1997. [Cha01] C HARRON , T IM: GREP for Windows, Version 2.0d. http://www.interlog.com/~tcharron/grep.html (Letzter Zugriff: 15.03.2007), Januar 2001. [Clu03a] C LULOW, J OLYON: The Design and Analysis of Cryptographic Application Programming Interfaces for Security Devices. Masterthesis, University of Natal, Durban, Südafrika, Januar 2003. [Clu03b] C LULOW, J OLYON: On the Security of PKCS #11. In: C. D. WALTER ET AL . (Her- ausgeber): CHES Workshop 2003, LNCS 2779, Seiten 411–425. Springer-Verlag Berlin Heidelberg, September 2003. [DH76] D IFFIE , W HITFILED und M ARTIN E. H ELLMAN: New Directions in Cryptography. IEEE Transaction on Information Theory, 22(6):644–654, November 1976. [DKR04] D OBBERTIN , H ANS, L ARS R. K NUDSEN und M ATTHEW J. B. R OBSHAW: The Cryptanalysis of the AES - A Brief Survey. In: D OBBERTIN , H ANS, V INCENT R IJ MEN und A LEKSANDRA S OWA (Herausgeber): Advanced Encryption Standard – AES, 4th International Conference, AES 2004, Band 3373 der Reihe Lecture Notes in Computer Science, Seiten 1–10, Bonn, Deutschland, Mai 2004. Springer. [Fre05] F REILING , F ELIX C. ( GEB . G ÄRTNER ): Teil 12: Privilegeskalation. In: Folien zur Vorlesung „Verlässliche Verteilte Systeme 1“. RWTH Aachen, Wintersemester 2004/2005. [GMO01] G ANDOLFI , K ARINE, C HRISTOPHE M OURTEL und F RANCIS O LIVIER: Electromagnetic Analysis: Concrete Results. Cryptographic Hardware and Embedded Systems - CHES 2001, LNCS 2162:251–261, Mai 2001. [Her03a] H ERBERTZ , R AINER: CryptoServer 2000 – Firmware Module CMDS – Interface Specification, Version 1.00.03. Utimaco Safeware AG, Aachen, Deutschland, Mai 2003. 61 Literaturverzeichnis [Her03b] H ERBERTZ , R AINER: CryptoServer 2000 – Firmware Module VRSA – Interface Specification, Version 1.1.0. Utimaco Safeware AG, Aachen, Deutschland, Oktober 2003. [Her06] H ERBERTZ , R AINER: CryptoServer – Application Interface (CSAPI), Version 1.2.0. Utimaco Safeware AG, Aachen, Deutschland, Juni 2006. [IBM] IBM: Homepage for Cryptographic Hardware Products. http://www- 03.ibm.com/security/cryptocards/ (Letzter Zugriff: 15.03.2007). [IBM03] IBM: IBM PCI Cryptographic Coprocessor – CCA Basic Services Reference and Guide Release 2.41. IBM Corporation, Charlotte, NC, USA, September 2003. [Jan00] J ANSSENS , D IRK: KeyGrab T00. Proposed Solution, November 2000. [JBP+ 00] J ANSSENS , D IRK, R ONNY B JONES, B ART P RENEEL, J OOS VANDERWALLE und J ORIS C LAESSENS: KeyGrab T00 – The search for keys continues... Whitepaper, Utimaco Safeware AG, KU Leuven, Dezember 2000. [Jur06] J URANI Ć , L EON: Using fuzzing to detect security vulnerabilities. Technischer Bericht INFIGO-TD-01-04-2006, Infigio Information Security, Zagreb, Kroatien, April 2006. [Kah96] K AHN , D AVID: The Codebreakers – The Comprehensive History of Secret Communication from Ancient Times to the Internet. Scribner, New York, NY, USA, 2. Auflage, 1996. [Kel04] K ELIHER , L IAM: Refined Analysis of Bounds Related to Linear and Differential Cryptanalysis for the AES. In: D OBBERTIN , H ANS, V INCENT R IJMEN und A LEKSAN DRA S OWA (Herausgeber): AES Conference, Band 3373 der Reihe Lecture Notes in Computer Science, Seiten 42–57. Springer, 2004. [KJJ98] K OCHER , PAUL C., J OSHUA J AFFE und B ENJAMIN J UN: Introduction to Differential Power Analysis and Related Attacks. Technischer Bericht, Cryptography Research, Inc., San Francisco, CA, USA, 1998. [KJJ99] K OCHER , PAUL C., J OSHUA J AFFE und B ENJAMIN J UN: Differential Power Analysis. Advances in Cryptology - Crypto ’99, LNCS 1666:388–397, 1999. [Koc96] K OCHER , PAUL C.: Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems. Advances in Cryptology - Crypto ’96, LNCS 1109:104– 113, 1996. [KPSS01] K ALLNIK , S TEPHAN, D ANIEL PAPE, D ANIEL S CHRÖTER und S TEFAN S TROBEL: Das Sicherheitsloch – Buffer-Overflows und wie man sich davor schützt. c’t - magazin für computertechnik, 23/2001:216ff, 2001. 62 Literaturverzeichnis [KSWH00] K ELSEY, J OHN, B RUCE S CHNEIER, D AVID WAGNER und C HRIS H ALL: Side Channel Cryptanalysis of Product Ciphers. Journal of Computer Security, 8(23):141–158, 2000. [LDVH06] L INNEWEBER , F RANK, B ERND D OETSCH, R ALF V ENNEMANN und R AINER H ERBERTZ: CryptoServer LAN – User Manual, Version 2.1.1. Utimaco Safeware AG, Aachen, Deutschland, Januar 2006. [LF06] L ONG , B ENJAMIN W. und C OLIN J. F IDGE: Formally Analysing a Security Protocol for Replay Attacks. In: 17th Australian Software Engineering Conference (ASWEC 2006), Seiten 171–180, Sydney, Australien, Januar 2006. IEEE Computer Society. [Lin06] L INDNER , F ELIX "FX": Ein Haufen Risiko – Pufferüberläufe auf dem Heap und wie man sie ausnutzt. c’t - magazin für computertechnik, 9/2006:186–192, 2006. [Mar07] M ARCOS , R ODRIGO: Taof – The art of fuzzing, Version 0.3. http://sourceforge.net/projects/taof/ (Letzter Zugriff: 15.03.2007), Februar 2007. [Mea03] M EADOWS , C ATHERINE: What Makes a Cryptographic Protocol Secure? The Evolution of Requirements Specification in Formal Cryptographic Protocol Analysis. In: D EGANO , P IERPAOLO (Herausgeber): Programming Languages and Systems: 12th European Symposium on Programming, ESOP 2003, Band 2618 der Reihe Lecture Notes in Computer Science, Seiten 10–21, Warschau, Polen, April 2003. Springer. [Mica] M ICROSOFT: Cryptography API: Next Generation. http://msdn2.microsoft.com/en-us/library/aa376210.aspx (Letzter Zugriff: 15.03.2007). [Micb] M ICROSOFT: Cryptography: CryptoAPI. http://msdn2.microsoft.com/en- us/library/aa380255.aspx (Letzter Zugriff: 15.03.2007). [MOV96] M ENEZES , A LFRED J., PAUL C. VAN O ORSCHOT und S COTT A. VANSTONE: Handbook of Applied Cryptography. CRC Press, Boca Raton, FL, USA, 5. Auflage, Dezember 1996. [nCi05a] N C IPHER : CipherTools nCore Developer Guide, Version 4.0.73. nCipher Corporati- on Ltd., Cambridge, UK, September 2005. [nCi05b] N C IPHER : CipherTools nCore Developer Reference, Version 4.0.102. nCipher Corpo- ration Ltd., Cambridge, UK, Dezember 2005. [OKH06] O TT, G ESA, S VEN K ALTSCHMIDT und R AINER H ERBERTZ: CryptoServer – Administration Guide, Version 1.2.8. Utimaco Safeware AG, Aachen, Deutschland, Juni 2006. [One96] O NE , A LEPH: Smashing The Stack For Fun And Profit. Phrack, 7(49), November 1996. 63 Literaturverzeichnis [Ope] O PEN SSL P ROJECT: Homepage des OpenSSL Project. http://www.openssl.org/ (Letzter Zugriff: 15.03.2007). [PNRB93] P RENEEL , B ART, M ARNIX N UTTIN, V INCENT R IJMEN und J OHAN B UELENS: Cryptanalysis of the CFB mode of the DES with a reduced number of rounds. In: S TINSON , D. (Herausgeber): Advances in Cryptology, Proceedings Crypto’93, Seiten 212–223. Springer-Verlag Heidelberg, Oktober 1993. [Ren04] R ENES , J OSEPH M.: Frames, Designs, and Spherical Codes in Quantum Information Theory. Doktorarbeit, University of New Mexico, Albuquerque, NM, USA, April 2004. [RR01] R AO , J OSYULA R. und PANKAJ R OHATGI: EMpowering Side-Channel Attacks. Technischer Bericht 2001/037, IBM T.J. Watson Research Center, Yorktown Heights, NY, USA, Mai 2001. [RS00] R AYMOND , J EAN -F RANÇOIS und A NTON S TIGLIC: Security Issues in the DiffieHellman Key Agreement Protocol. Dezember 2000. [RSA93] RSA L ABORATORIES: PKCS #3: Diffie-Hellman Key-Agreement Standard. RSA Laboratories, Redwood City, CA, USA, November 1993. [RSA04] RSA L ABORATORIES: PKCS #11 v2.20: Cryptographic Token Interface Standard. RSA Laboratories, Redwood City, CA, USA, Juni 2004. [Sch04] S CHNEIER , B RUCE: Secrets & Lies – Digital Security in a Networked World. Wiley Publishing, Inc., Indianapolis, Indiana, USA, 2. Auflage, 2004. [Sch07] S CHÜLER , M ICHAEL: Anwendung bekannter Angriffe auf den CryptoServerr . Technischer Bericht, Utimaco Safeware AG, Aachen, Deutschland, Februar 2007. [SPQ03] S TANDAERT, F RANCOIS -X AVIER, G ILLES P IRET und J EAN -J ACQUES Q UISQUA TER : Cryptanalysis of Block Ciphers: A Survey. Technischer Bericht CG-2003/2, UCL Crypto Group, Laboratoire de Microélectronique, Université catholique de Louvain, Louvain-la-Neuve, Belgien, Mai 2003. [Spr05] S PRUNDEL , I LJA VAN: Fuzzing: Breaking software in an automated fashion. In: 22nd Chaos Communication Congress (22C3), Dezember 2005. [SS99] S HAMIR , A DI und N ICKO VAN S OMEREN: Playing ’Hide and Seek’ with Stored Keys. In: F RANKLIN , M ATTHEW K. (Herausgeber): Financial Cryptography, Third International Conference, FC ’99, Anguilla, British West Indies, Band LNCS 1648, Seiten 118–124. Springer-Verlag, Februar 1999. [Sun] S UN M ICROSYSTEMS: Java Cryptography Extension (JCE) Homepage. http://java.sun.com/products/jce/index.jsp (Letzter Zugriff: 15.03.2007). [Thr] T HREAT M IND: FuzzingTools. http://www.scadasec.net/secwiki/FuzzingTools (Letzter Zugriff: 15.03.2007). 64 Literaturverzeichnis [Utia] U TIMACO S AFEWARE AG: CryptoServer. Produkt-CD. [Utib] U TIMACO S AFEWARE AG: Homepage für Hardware Sicherheitsmodule. http://www.utimaco.de/hsm/ (Letzter Zugriff: 15.03.2007). [Uti05] U TIMACO: CryptoServer – Product brochure. Utimaco Safeware AG, 2005. [Uti06a] U TIMACO: CryptoServer – Error Reference. Utimaco Safeware AG, Aachen, Deutschland, August 2006. [Uti06b] U TIMACO: HSM Lösungsbroschüre. Utimaco Safeware AG, 2006. [VM01] V IEGA , J OHN und G ARY M C G RAW: Building Secure Software – How to Avoid Security Problems the Right Way. Addison-Wesley Professional, September 2001. 65 Literaturverzeichnis 66 Glossar Begriff Beschreibung CRM Customer Relationship Management. Verwaltung von Kundenbeziehungen in einem Unternehmen. ERP Enterprise Recource Planning. Unternehmerische Aufgabe, betriebliche Resourcen möglichst effizient zu einzuplanen. HBCI Homebanking Computer Interface. Ein offener Standard für den Bereich Online-Banking. Java Eine objektorientierte Programmiersprache, die auf allen Systemen läuft. LAN Local Area Network. Lokales Computernetzwerk in Firmen oder Privathaushalten. MAC Message Authentication Code. Code zur Sicherstellung von Integrität und Authentizität elektronischer Nachrichten. Payload Die Nutzdaten in einem IP- oder TCP-Paket. PIN Personal Identifikation Number. Ziffernfolge, die als Passwort benutzt wird. Pinpad Lesegerät für Smartcards mit integrierter Tastatur zur PIN-Eingabe. Policy (Sicherheits-)Richtlinie in einem Unternehmen oder einer Organisation. Smartcard Plastikkarte mit integriertem Mikroprozessor und Speicher. 67 Glossar Begriff Beschreibung TCP Transmission Control PProtocol. Protokoll zum verbindungsorientierten Austausch von Daten zwischen Computern. Zertifizierungsstelle 68 Organisation, die digitale Zertifikate ausgibt.