[DE] Das letzte Geheimnis

 Um die Kommunikation zwischen mehreren IT-Systemen zu sichern läuft man immer wieder in das Problem des letzten Geheimnisses.


Wir wollen eine Kommunikation aufbauen, die zum einen abhörsicher ist, zum anderen beide Seiten eindeutig identifizieren soll. Der erste Teil ist dank asynchroner Verschlüsselung nicht mehr schwer. Jede Seite hält einen öffentlichen Schlüssel der anderen Seite. Da niemand dazwischen, ohne den privaten Schlüssel die Daten lesen kann sind die Daten vor fremden 'Ohren' sicher.

Der zweite Teil wird gelöst, indem sich jede Seite durch ein Geheimnis, z.B. Passwort identifiziert. Auch hier kommen asynchrone Schlüssel zur Anwendung. Eine Zeichenfolge wird verschlüsselt und dem gegenüber geschickt. Kann dieser die Zeichen entschlüsseln, wurde er erfolgreich identifiziert.

Was aber, wenn ein System kompromittiert wird? Wenn ein Dritter Zugriff auf Datenbank oder Dateisystem bekommt, oder Programmcode auf dem gesicherten System ausführen kann. Er kann private Schlüssel und Passwörter abgreifen und sich über die gleichen Mechanismen wie das eigentlich freundliche System in die Kommunikation einschleichen.

Das letzte Geheimnis liegt also immer irgendwo auf einem System und kann dort abgegriffen werden. Es gibt kein Szenario, bei dem dieses letzte Problem der Sicherheit nicht von anderen gefunden und missbraucht werden kann. Das Abgreifen wird dem Angreifer nur erschwert. Zum Beispiel durch ein Dongle, eine externe Hardware, die sensible Daten schützt. Was hält den Angreifer ab, diese Hardware ebenfalls zu nutzen?

Ein erfolgsversprechendes Konzept ist ein Geheimnis, das immer beim Start des Programms manuell eingegeben werden muss. Abgesehen davon, dass es sehr unpraktisch ist, ist durch eine simplen 'core dump' das Geheimnis schon fast offengelegt. Dabei wird der Speicher eines Programms auf die Festplatte kopiert und kann eingesehen werden. Der motivierte Angreifer findet darin das Geheimnis.

Die gezeigten Verfahren sind allerdings vergleichsweise sicher, denn der Aufwand in einem core dump von mehreren Gigabytes ein 10 Zeichen Passwort zu finden muss ein attraktives Ziel rechtfertigen.

Aber auch das EC-Karten-Prinzip kann schon helfen, günstiger als ein Dongle und weniger aufwendig als ein manuelles Passwort. Dabei wird wie bei einer EC-Karte vorgegangen. Die Karte ist vergleichsweise einfach zu bekommen. Ein Griff in eine fremde Handtasche genügt. Für den geübten Taschendieb keine Herausforderung. Allerdings ist die Karte ohne PIN fast nutzlos. Doch dieser ist unerreichbar, da im  Kopf des Inhabers gespeichert.

Genauso können Geheimnisse leicht gesichert werden. Der private Schlüssel auf der Festplatte. Dieser mit einem einfachen Algorithmus gesichert. Der PIN dafür befindet sich im Programmcode, hier möglichst verschleiert durch obfuscation. Das kann einen Angreifer die Motivation nehmen oder auch seine Fähigkeiten übersteigen.



Kommentare

Beliebte Posts aus diesem Blog

Sonatype Nexus fails with random "peer not authenticated" errors behind ingress

[mhus lib] Reorg in generation 7 nearly finished

[mhus lib] Implemented Bearer JWS tokens