Oracle SSL und Smartcard Jürgen Kühn Security Consultant Stuttgart, 31.3.2009 Basel Baden Bern Lausanne Zürich Düsseldorf Frankfurt/M. Freiburg i. Br. Hamburg München Stuttgart
Agenda SSL Oracle SSL EUS mit SSL User sind immer im Spiel. Smartcard Fazit Oracle SSL und Smartcard 2
Authentisierung Standard Passwort Starke Authentisierung SSL Zwei-Faktor Authentisierung Smartcard Token Oracle SSL und Smartcard 3
Umgebung Datenbanken ohne EUS Datenbanken mit EUS SSL SSL SSL Client PKCS#11 Oracle Internet Directory Oracle SSL und Smartcard 4
SSL / TLS Secure Sockets Layer (SSL) Transport Layer Security (TLS) Nachfolger von SSL 3.0 Sichere Kommunikation Webserver / Browser Client / Server Server / Server Sicherung einer Verbindung durch Authentisierung Verschlüsselung Integritätsprüfung Public Key Kryptographie Oracle SSL und Smartcard 5
Asymmetrische Verschlüsselung Öffentlicher Schlüssel Originaltext Verschlüsselter Text Verschlüsseln Entschlüsseln Privater Schlüssel Oracle SSL und Smartcard 6
Digital signieren und/oder verschlüsseln Sender Empfänger Signiert mit privatem Schlüssel Signierter Text Überprüft Signatur mit öffentlichem Schlüssel des Absenders Oracle SSL und Smartcard Verschlüsselt mit öffentlichem Schlüssel des Empfängers Verschlüsselter Text 7 Entschlüsselt mit seinem privatem Schlüssel
Zertifikat Angaben zum Schlüsselinhaber Öffentlicher Schlüssel des Benutzers Name der Zertifizierungsstelle XY-CA Signatur der Zertifizierungsstelle Oracle SSL und Smartcard 8
SSL Hybrides Protokoll Authentisierung mittels asymmetrischen Schlüsseln Server Authentisierung üblich Client Authentisierung optional Bei Oracle: Auch gar keine Authentisierung möglich Dann wird nur verschlüsselt Verschlüsselung der Nutzdaten mit symmetrischen Schlüsseln Client und Server einigen sich auf Session Keys Ableitung aus ausgetauschten Zufallszahlen Austausch von mit asymmetrischen Schlüsseln verschlüsselten Teilschlüsseln Oracle SSL und Smartcard 9
Funktionsweise von SSL Der SSL Handshake: 3 4 Prüfen des Serverzertifikates Generierung des Premaster Keys 1 2 Seitenanfrage mit Client SSL Initialisierungsdaten Server SSL Initialisierungsdaten / Zertifikat 6 Entschlüsseln des Premaster Keys und berechnen des Master Keys 6 Berechnen des Master Keys Senden des Premaster Keys verschlüsselt mit dem 5 öffentlichen Schlüssel des Servers 7 Berechnen des Session Keys 7 Berechnen des Session Keys 8 Meldung next messages will be encrypted 9 Handshake beendet 10 Meldung next messages will be encrypted 11 Handshake beendet Oracle SSL und Smartcard 10
SSL Komponenten Private und öffentliche Schlüssel X.509 Zertifikate XY-CA Certification Authority (CA) Certificate Revocation Lists (CRL) Sicherer Speicherort für private Schlüssel Smartcard Token Public Key Infrastructure (PKI) Oracle SSL und Smartcard 11
Agenda SSL Oracle SSL EUS mit SSL User sind immer im Spiel. Smartcard Fazit Oracle SSL und Smartcard 12
Wallet SSL bei Oracle erfordert ein Oracle Wallet Auf dem Client Auf dem Server Ein Server kann auch ein Client sein PKCS#12 Datei mit Privatem Schlüssel Öffentlichem Schlüssel User Certificate oder Server Certificate Trusted Certificates Root Certificates Quelle: www.sicherheit-360.de Das Wallet muss alle CA Zertifikate der Zertifikatskette enthalten Oracle SSL und Smartcard 13
SSL Konfiguration auf dem Datenbankserver (1) Wallet erstellen oder öffnen Oracle Wallet Manager Falls Datenbank in OID registriert ist, das vorhandene Wallet nutzen Certificate Request für den Server erstellen Certificate Request von der CA signieren lassen Für PoC eignet sich OpenSSL Einfach zu nutzen Auf den meisten Unix und Linux Varianten bereits vorhanden Trusted Certificates in Wallet importieren Server Certificate in Wallet importieren Erst Trusted Certificates importieren Oracle SSL und Smartcard 14
SSL Konfiguration auf dem Datenbankserver (2) Oracle SSL und Smartcard 15
SSL Konfiguration auf dem Datenbankserver (3) Net Manager Speicherort für Wallet angeben Optional angeben: Cipher Suites Revocation Check SSL Version Client Authentisierung Modifiziert sqlnet.ora Oracle SSL und Smartcard 16
SSL Konfiguration auf dem Datenbankserver (4) sqlnet.ora SQLNET.AUTHENTICATION_SERVICES= (BEQ, TCPS) WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = /u01/app/oracle/admin/demo/wallet) ) ) SSL_VERSION = 0 SSL_CIPHER_SUITES= (SSL_RSA_WITH_AES_256_CBC_SHA) SSL_CLIENT_AUTHENTICATION = TRUE Oracle SSL und Smartcard 17
SSL Konfiguration auf dem Datenbankserver (5) Listener für SSL konfigurieren In listener.ora Port für TCPS Protocol eintragen (Default 2484) LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCPS)(HOST = dbserver)(port = 2484)) ) (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(port = 1521)) ) ) SSL_CLIENT_AUTHENTICATION = FALSE SSL_CLIENT_AUTHENTICATION auf FALSE lassen Die Datenbank, nicht der Listener führt die Authentisierung durch Oracle SSL und Smartcard 18
SSL Konfiguration auf dem Client (1) Neues Wallet erstellen Certificate Request für den Benutzer erstellen Certificate Request von der CA signieren lassen Trusted Certificates in Wallet importieren User Certificate in Wallet importieren Oracle SSL und Smartcard 19
SSL Konfiguration auf dem Client (2) Oracle SSL und Smartcard 20
SSL Konfiguration auf dem Client (3) Net Manager Speicherort für Wallet angeben Optional angeben: Cipher Suites Revocation Check SSL Version Server DN Übereinstimmung Modifiziert sqlnet.ora Oracle SSL und Smartcard 21
SSL Konfiguration auf dem Client (4) Server DN Match in sqlnet.ora einschalten SQLNET.AUTHENTICATION_SERVICES= (BEQ, TCPS, NTS) WALLET_LOCATION = (SOURCE = (METHOD = FILE) (METHOD_DATA = (DIRECTORY = "C:\Dokumente und Einstellungen\Administrator\ORACLE\WALLETS") ) ) SSL_VERSION = 0 SSL_CIPHER_SUITES= (SSL_RSA_WITH_AES_256_CBC_SHA) SSL_SERVER_DN_MATCH = TRUE Problem mit Leerzeichen im Pfadnamen unter Windows Temporäres Verzeichnis ohne Leerzeichen im Namen wählen Manuell in sqlnet.ora anpassen Oracle SSL und Smartcard 22
SSL Konfiguration auf dem Client (5) Servereintrag in tnsnames.ora eintragen DEMO = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCPS)(HOST = dbserver)(port = 2484)) (ADDRESS = (PROTOCOL = TCP)(HOST = dbserver)(port = 1521)) ) (SECURITY = (SSL_SERVER_CERT_DN = cn=dbserver.domainora, ou=anyunit, o=anycompany, l=anycity, st=germany, c=de ) ) ) TCPS Port in tnsnames.ora eintragen Den TCPS Port vor dem TCP Port eintragen Der Client prüft nicht, ob ein TCPS Port eingetragen ist, wenn er vorher einen TCP Port gefunden hat Oracle SSL und Smartcard 23
SSL Benutzer Benutzer in der Datenbank anlegen > sqlplus / as sysdba SQL> create user ssluser1 identified externally as 'cn=ssluser1,dc=domainora'; SQL> grant create session to ssluser1; Mit SSL anmelden > sqlplus /@demo SQL> show user USER is "SSLUSER1" SQL> select sys_context('userenv', 'external_name') from dual; cn=ssluser1,dc=domainora Oracle SSL und Smartcard 24
Agenda SSL Oracle SSL EUS mit SSL User sind immer im Spiel. Smartcard Fazit Oracle SSL und Smartcard 25
Enterprise User Authentisierung Client EUS DB OID 1. User meldet sich an 2. DB kennt User nicht, kennt aber globale User 3. DB meldet sich an OID an 4. OID authentisiert DB 5. DB sucht User im OID und liest orclpassword des Users 6. OID liefert orclpassword des Users 7. DB vergleicht orclpassword und gehashtes übergebenes Passwort des Users 8. DB liest EUS relevante Daten des Users 9. OID liefert EUS relevante Daten des Users 10. Session mit globalen Rollen und external_name Oracle SSL und Smartcard 26
EUS mit SSL (1) Enterprise User kuehn2 in OID anlegen Enterprise Rollen mittels Enterprise Security Manager zuweisen Zertifikat für kuehn2 erzeugen Zertifikate in Wallet importieren Zertifikat in OID schreiben Benutzer kuehn2 Attribut usercertificate Zuordnung des OID Benutzers zum an der Datenbank angemeldeten Benutzer nur mittels DN möglich Übereinstimmung DN im Zertifikat mit DN im OID? Oracle SSL und Smartcard 27
EUS mit SSL (2) Oracle SSL und Smartcard 28
EUS mit SSL (3) LDIF File mit Zertifikatsdaten erstellen und in OID importieren dn: cn=kuehn2,cn=users,dc=domainora,dc=com changetype: modify add: usercertificate usercertificate:: MIIDwzCCAyygAwIBAgIBBTANBgkqhkiG9w0BAQQFADBpMQswCQYDVQQGEwJERTEQMA4GA1UECBMHR2VybW FueTEQMA4GA1UEBxMHQW55Q2l0eTETMBEGA1UEChMKQW55Q29tcGFueTEQMA4GA1UECxMHQW55VW5pdDEP MA0GA1UEAxMGQ2FTZWxmMB4XDTA5MDExMjExNDQxMVoXDTEwMDExMjExNDQxMVowbjELMAkGA1UEBhMCRE UxFDASBgNVBAgTC0RldXRzY2hsYW5kMRAwDgYDVQQHEwdBbnlDaXR5MRMwEQYDVQQKEwpBbnlDb21wYW55 MRAwDgYDVQQLEwdBbnlVbml0MRAwDgYDVQQDEwd1c2VyMTAxMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMI IBCgKCAQEAoajSalMHMT07q0uZPM6tm/PaPgjvvJKRL7sz0LdM7cM+w9mmZwhOhxNfqIR/Nxmjdqr8yBvN OXkv6BVMyIjwS5F9gM98VcBMo3kmD2vRlDYt6xCiwna1Ozexam2fPJ9kX+N6CsAVc0fhoc4IyZcYjhrUiu hd6tkc7twd4fzonztcyu2m3vc8wypxx1o5hxwdxx7qdpkq4zbh9qqyi0jqp3avkdt8en2cdr0a0g6c9ssq Qe/vJ3su5IxvBCVgYH+uGwD+0CW7PEnGT0XB4wJVK1/x16M9zAxJYrfBMv7Z4maw+eY5ZubQkNqLlj7h3+ 4wVWnpgqq8dB8Vvb5Qx2Y32wIDAQABo4HxMIHuMAkGA1UdEwQCMAAwLAYJYIZIAYb4QgENBB8WHU9wZW5T U0wgR2VuZXJhdGVkIENlcnRpZmljYXRlMB0GA1UdDgQWBBTTD3yUuGznm1biThD3Kv5wrxrvTDCBkwYDVR 0jBIGLMIGIgBQzSDgimGCZnctb02I50yts1TsWaqFtpGswaTELMAkGA1UEBhMCREUxEDAOBgNVBAgTB0dl cm1hbnkxedaobgnvbactb0fueunpdhkxezarbgnvbaotckfueunvbxbhbnkxedaobgnvbastb0fuevvuax QxDzANBgNVBAMTBkNhU2VsZoIBADANBgkqhkiG9w0BAQQFAAOBgQBO5GC6VLppiemsWbuD6nM/BvYXrZO1 BLZQROLrtOwUZIb4JOxm1SFiDel0mrpbC6nKmRL0T1Q34SkkMRnjm8KsA4SHmcd+zWwak7sm+TIFdpG/qj 3O4i+52kySKYv/C7ndBsZYg4bvAdf0U+MLxePQcFa5Yx1jkewb256uyCKR6w== ldapmodify -h oid1 -p 389 -D "cn=orcladmin" -w <password of orcladmin> -f kuehn2.ldif Oracle SSL und Smartcard 29
EUS mit SSL (4) An Datenbank anmelden > sqlplus /@demo SQL> show user USER is "GUEST" SQL> select sys_context('userenv', 'external_name') from dual; cn=kuehn2,cn=users,dc=domainora,dc=com Oracle SSL und Smartcard 30
Agenda SSL Oracle SSL EUS mit SSL User sind immer im Spiel. Smartcard Fazit Oracle SSL und Smartcard 31
Kundensituation Authentisierung mit vorhandener PKI Karte gewünscht Erfüllte Voraussetzungen PKCS#15 Struktur PKCS#11 Treiber Die Karte enthält drei Schlüsselpaare Digital Signature Encryption Non Repudiation Laut Oracle sind nur Hardware Security Modules (HSM) von ncipher zertifiziert Ab 11g auch safenet Oracle SSL und Smartcard 32
PKCS#11 Wallet erstellen PKCS#11 Software Bibliothek angeben Smartcard Passwort eingeben Trusted Certificates von der Karte exportieren Benutzerzertifikat von der Karte exportieren Digital Signature Encryption Non Repudiation Trusted Certificates in Wallet importieren Benutzerzertifikat in Wallet importieren Welches? Oracle SSL und Smartcard 33
PKCS#11 Wallet nutzen SSL Benutzer mit DN als externally in der Datenbank anlegen Smartcard in Leser stecken Mit SQL*Plus an Datenbank anmelden Smartcard Passwort eingeben Connected Encryption Zertifikat und Non- Repudiation Zertifikat konnten nicht importiert werden Digital Signature Zertifikat konnte importiert werden, aber Oracle SSL und Smartcard 34
Smartcard (1) Test mit Vasco Digipass 860 Betriebssystem CardOS M4 Trivadis Token Erfüllt Voraussetzungen PKCS#15 Struktur PKCS#11 Treiber CmP11.dll Hat zwei Schlüsselpaare für Digital Signature Encryption Test mit leerem Token Generieren von Schlüsselpaaren auf dem Token Oracle SSL und Smartcard 35
Smartcard (2) Alle Schlüsselpaare sind technisch gleich RSA Private Key und Public Key Wählbare Schlüssellänge Organisatorische Einschränkung der Schlüsselverwendung Abgebildet in Attributen des Zertifikats Key Usage Extended Key Usage Oracle SSL und Smartcard 36
Schlüsselpaar und Zertifikat für Benutzer token3 Oracle SSL und Smartcard 37
PKCS#11 Wallet erstellen Wallet vom Typ PKCS11 erstellen PKCS#1 Software Bibliothek angeben Smartcard Passwort eintragen Oracle SSL und Smartcard 38
Wallet von Benutzer token3 Oracle SSL und Smartcard 39
Schlüsselpaar und Zertifikat für Benutzer token2 Oracle SSL und Smartcard 40
Wallet von Benutzer token2 Oracle SSL und Smartcard 41
Schlüsselverwendung (1) Digitale Signatur: (digital signature) Der öffentliche Schlüssel soll für digitale Signaturen verwendet werden, die nicht den Zweck der Nichtabstreitbarkeit erfüllen sollen, d.h. eher kurzfristigen Charakter haben. Nichtabstreitbarkeit: (non repudiation) Der Schlüssel soll für digitale Signaturen eines Nichtabstreitbarkeitsservice verwendet werden, d.h. eher langfristigen Charakter besitzt, z.b. Notariatsservice. Schlüsselverschlüsselung: (key encipherment) Der Schlüssel soll für die Verschlüsselung von anderen Schlüsseln oder Sicherheitsinformation verwendet werden, ev. im Zusammenspiel mit encipher only und decipher only kann die Verwendung eingeschränkt werden. Datenverschlüsselung: (data encipherment) Der Schlüssel zur Verschlüsselung von Benutzerdaten (außer andere Schlüssel) verwendet werden. Oracle SSL und Smartcard Quelle:www.cryptoshop.com 42
Schlüsselverwendung (2) Attribut KeyUsage Critical Flag kritisch: nicht kritisch: nur angegebene Verwendung nur informativ, keine Einschränkung Verwendungszweck Einschränkung des Schlüsselverwendungszwecks id-ce-keyusage OBJECT IDENTIFIER ::= { id-ce 15 } KeyUsage ::= BIT STRING { digitalsignature (0), nonrepudiation (1), keyencipherment (2), dataencipherment (3), keyagreement (4), keycertsign (5), crlsign (6), encipheronly (7), decipheronly (8) } Oracle SSL und Smartcard 43
Schlüsselverwendung (3) Hex Darstellung am Beispiel Trivadis Token KeyUsage Bit Value (hex) digitalsignature 0 80 nonrepudiation 1 40 keyencipherment 2 20 dataencypherment 3 10 Oracle SSL und Smartcard 44
KeyUsage Oracle SSL nur bei bestimmten KeyUsage Values möglich Oracle SSL und Smartcard 45
Schlüsselverwendung in Wallet Oracle SSL und Smartcard 46
Stand der Dinge Umsetzung (noch) nicht möglich Aus Advanced Security Administrator s Guide If you do not have a certificate with SSL usage, then an ORA-28885 error (No certificate with required key usage found) is returned. Wenn autologin nicht eingeschaltet ist ORA-01017: invalid username/password; logon denied Wenn autologin eingeschaltet ist Absturz Info von Oracle PKCS#11 Wallets müssen keine Zertifikate enthalten. Alle Zertifikate werden von der Karte gelesen Oracle SSL und Smartcard 47
PKCS#11 Wallet ohne Zertifikate Oracle SSL und Smartcard 48
Test mit 11g Client Neues PKCS#11 Wallet lässt sich nicht anlegen Wallet ist und bleibt leer Alle Menüs grau Wallet Manager lässt sich nach dem Versuch nicht mehr beenden Nach Beenden mit Task Manager Problembericht an Microsoft Mit vorhandener Wallet Fehler ORA-01017: invalid username/password; logon denied Mit und ohne autologin Oracle SSL und Smartcard 49
11g Wallet Manager Hilfe Außerdem können Wallets von Oracle Wallet Manager ID-Daten in Hardware Security Modules speichern, die APIs benutzen, die der PKCS #11 Spezifikation entsprechen. Wenn der PKCS11 Wallet-Typ beim Erstellen des Wallets ausgewählt wurde, werden alle Schlüssel, die in diesem Wallet gespeichert sind, in einem Verschlüsselungsgerät oder -Token gespeichert, wie z.b. SmartCards, das entfernt werden kann, oder in anderen Typen von portablen Hardware-Geräten, in denen private Schlüssel gespeichert und/oder Verschlüsselungsvorgänge ausgeführt werden. Hinweis: Auch wenn Oracle Advanced Security und Oracle Wallet Manager vollständig mit PKCS#12 konform sind, kommt es möglicherweise zu Kompatibilitätsproblemen bei Fremdprodukten - wie z. B. Netscape Communicator und Microsoft Internet Explorer Oracle SSL und Smartcard 50
Was sagt der Kunde Oracle speichert die PIN der Smartcard in der Wallet Kunde hat Field Support eingeschaltet Oracle SSL und Smartcard 51
Fazit SSL mit Standard Wallets funktioniert gut Setzt PKI voraus Enterprise User Security mit SSL Authentisierung möglich Eindeutige Zuordnung von Benutzern auch bei EUS Klärungsbedarf bei Smartcard Unterstützung Oracle SSL und Smartcard 52
Fragen und Diskussion? www.trivadis.com Basel Baden Bern Lausanne Zürich Düsseldorf Frankfurt/M. Freiburg i. Br. Hamburg München Stuttgart