
| Cipher Suite Ansammlung von Authentifizierungs-, Verschlüsselungs- und Integritätsalgorithmen zur Kommunikation zwischen Client und Server. Beim SSL-Handshake einigen sich beide Kommunikationspartner auf eine gemeinsame Cipher Suite. |
| SSL Secure Sockets Layer. SSL ist ein Standardprotokoll für die sichere Netzwerkverbindung. Es verwendet dabei die öffentliche Schlüssel-Kryptographie in Verbindung mit der symmetrischen Verschlüsselung. |
Weiterführende Links
Mit dem Einsatz von Oracle Advanced Security (ASO) für die sichere Kommunikation zwischen Client und Server kommt neben den schon existierenden, symmetrischen Verschlüsselungsverfahren der beiden DBMS-Standard-Pakete DBMS_OBFUSCATION_TOOLKIT und DBMS_CRYPTO auch die SSL-Verschlüsselung in Frage. Durch die ASO-Installation werden automatisch die entsprechenden SSL-Bibliotheken sowie der Oracle Wallet Manager auf dem Client und dem Server installiert.
Im Gegensatz zu den DBMS-Standardpaketen verwendet SSL für die Authentifizierung und den Verbindungsaufbau einen asymmetrischen Schlüssel. Dieses Verfahren hat den Vorteil, dass es für den Angreifer praktisch unmöglich ist, diesen Schlüssel zu berechnen. Der Nachteil ist, dass die Erstellung dieses Schlüssels im Vergleich zu den DBMS-Standard-Paketen mehr Konfigurationsaufwand erfordert.
Bei der SSL-Verschlüsselung kann man generell sowohl die Verschlüsselung zwischen Client und Server betrachten als auch die zwischen dem Oracle Application Server und der zugehörigen Datenbank auf einem weiteren Rechner. Neben der ein- und beidseitigen Authentifizierung der Rechner lässt sich die SSL-Technologie ebenso zur Verschlüsselung der zu übertragenden Daten verwenden.
Damit garantiert ist, dass beim Einsatz von asymmetrischen, kryptographischen Systemen keine falschen bzw. untergeschobenen Schlüssel verwendet werden, wird ein Zertifikat benötigt.
Dieses Zertifikat erstellt eine vertrauenswürdige Stelle (so genannte Zertifizierungsstellen wie z. B. die Bundesnetzagentur, VeriSign, Trustcenter u. a.) in Form einer digitalen Garantieerklärung. Diese Garantieerklärung gibt es in unterschiedlichen Qualitätsstufen. Der Benutzer entscheidet letztendlich selbst durch die Auswahl der jeweiligen Qualitätsstufe, welche Sicherheit er haben möchte.
Das Zertifikat ähnelt einem Personalausweis in digitaler Form. Auch beim Personalausweis garantiert die vertrauenswürdige Stelle "Staat", dass die Unterschrift, die sich auf dem Ausweis befindet, auch tatsächlich zu der Person gehört, deren Stammdaten und Passbild sich auf dem Ausweis befinden. Beim Zertifikat ist damit gewährleistet, dass der verwendete, öffentliche Schlüssel auch zum zugehörigen Empfänger der verschlüsselten Nachricht bzw. zum Sender einer elektronisch signierten Nachricht gehört.
Diese Daten sind in der Regel mit dem privaten Schlüssel der Zertifizierungsstelle signiert und können somit mit dem öffentlichen Schlüssel der Zertifizierungsstelle überprüft werden.
Zertifikate für nicht mehr sichere Schlüssel können über eine so genannte CERTIFICATE REVOCATION LIST gesperrt werden. Um die Echtheit des Zertifikates zu garantieren, wird dem Zertifikat eine digitale Signatur einer vertrauenswürdigen Organisation oder Instanz (z. B. einer Behörde) aufgeprägt. Durch deren Signatur kann die Integrität und Echtheit des Zertifikates nachgewiesen werden.
Da auch der öffentliche Schlüssel einer Zertifizierungsstelle schließlich mittels eines Zertifikats überprüfbar sein muss, ist es notwendig, dass eine oberste Zertifizierungsinstanz existiert. In Deutschland übernimmt die Bundesnetzagentur für Elektrizität, Gas, Telekommunikation, Post und Eisenbahnen diese Funktion. Die Bundesnetzagentur führt eine Liste aller akkreditierten Anbieter von Zertifizierungsdiensten.
Bei der Nutzung von Oracle Advanced Security werden Zertifikate von VeriSign, RSA, Entrust und GTE CyberTrust automatisch als Initialwert generiert, sobald ein neues Wallet erstellt wird.
Für die Nutzung der SSL-Verschlüsselung unter Oracle ist es notwendig, folgende Konfigurationsschritte vorzunehmen:
![]() |
| Abb. 1: Komponenten der Verschlüsselung. (vergrößern) |
Wallet erstellen
Auf dem Client und auf dem Server muss ein Wallet erstellt werden. Dieses dient später zur Aufnahme der unterzeichneten Zertifikate. Das Wallet selbst wird über ein Passwort geschützt. Die Erstellung des Wallets ist einfach über den Oracle Wallet Manager möglich. Die Lage des Wallets wird für den Client in der sqlnet.ora hinterlegt (siehe Abbildung 1). Seine Erstellung kann über die Nutzung des ORAPKI erfolgen.
Digitales ZertifikatMit dem Wallet Manager wird anschließend eine Zertifizierungsanforderung erstellt. Das Zertifikat wird von einer öffentlichen "CERTIFICATION AUTHORITY" [1] unterzeichnet.
Zertifikate einfügenüber den Wallet Manager in das generierte Wallet gelegt, welches unter /etc/ORACLE/ WALLETS/oracle als änderbarer DEFAULT-Wert abgespeichert wird. Ab Oracle 10g können diese drei Schritte auch über die Kommandozeile geschehen. Die erfolgt mit dem Tool ORAPKI.
WALLET_LOCATION = (SOURCE=(METHOD=File) (METHOD_DATA= (DIRECTORY=<Pfadangabe>))) |
| Abb. 2: Wallet Parameter für listener.ora und sqlnet.ora. |
Konfiguration des Listeners
Auf der Server-Seite muss nun die listener.ora erweitert werden. Es muss ein zusätzlicher Listener definiert werden, der über das TCPS-Protokoll arbeitet. Der Standardport hierfür ist 2483. Damit der Listener Zugriff auf das Wallet erhält, muss dieses mittels WALLET_LOCATION in der listener.ora und sqlnet.ora "verknüpft" werden (siehe Abbildung 2).
Bei dem Parameter SSL_CLIENT_AUTHENTICATION ist zu beachten, dass beim Einsatz der Cipher Suite mit der Nutzung eines Diffie Hellman Algorithmus zur Authentifizierung, wie z. B. bei Radius oder Kerberos, dieser Parameter auf FALSE gesetzt werden muss. Dieser Parameter wird in der sqlnet.ora gesetzt. Für die SSL-basierte Authentifizierung kann jedoch dieser Parameter auf TRUE gesetzt werden. Durch diesen Parameter wird eine beidseitige Authentifizierung gewährleistet.
Konfiguration des ClientsSSL_CLIENT_AUTHENTICATION =TRUE WALLET_LOCATION = (SOURCE=(METHOD=File) (METHOD_DATA= (DIRECTORY=<Pfadangabe>))) |
| Abb. 3: Wallet Parameter und SSL_CLIENT_AUTHENTICATION in der sqlnet.ora beim Client. |
Nachdem der Client ebenfalls sein Zertifikat in einem Wallet abgelegt hat, müssen die tnsnames.ora und die sqlnet.ora angepasst werden. Es muss ein zusätzlicher TNS-Alias für die sichere Verbindung erstellt werden, dessen Eigenschaften (Protokoll, Host, Port) deckungsgleich mit den Angaben des SSL-Listeners auf Server-Seite sind. Des Weiteren muss in der sqlnet.ora des Clients die Lage des Wallets angegeben werden. Dies geschieht auf die gleiche Weise, wie in der listener.ora (siehe Abbildung 3).
Ein großer Vorteil des SSL-Protokolls ist die Möglichkeit, jedes höhere Protokoll auf Basis des SSL-Protokolls zu implementieren. Damit ist eine Unabhängigkeit von Applikationen und Systemen gewährleistet. Ein weiterer Vorteil liegt in der sehr hohen Absicherung des Datenverkehrs.
Der Nachteil der SSL-verschlüsselten Übertragung besteht darin, dass sie durch den erhöhten Netzwerkverkehr langsamer ist, weil mehr Daten übertragen werden müssen. Hinzu kommen die aufwendigen Berechnungen, die im Vergleich zu symmetrischen Verschlüsselungsverfahren (z. B. DBMS-Standard-Pakete) zu einer verstärkten Auslastung der CPU führen.
SSL im Zusammenspiel mit Oracle Net hilft bei Problemen, die bei einer ungesicherten Datenverbindung zwischen Client und Server bestehen, wie z. B. das Abhören von sensiblen Daten oder das Verfälschen von SQLNet Paketen mit anderen Informationsgehalten. Die inzwischen erfolgte Implementierung des Kommandozeilentools (ORAPKI) und der grafischen Oberflächen im Wallet Manager der Oracle Umgebung unterstützt den Administrator beim Einsatz von SSL. Als gravierender Nachteil ist der hohe administrative Aufwand durch Anpassungen der Dateien zu nennen. Ebenso sollten die benötigten Kenntnisse im Bereich der Verschlüsselung schon vorhanden sein.
Klaus Günther (info@ordix.de).