IT-Sicherheit und Zufallszahlengeneratoren – III

In den letzten beiden Artikeln dieser Miniserie

IT-Sicherheit und Zufallszahlengeneratoren – II
IT-Sicherheit und Zufallszahlengeneratoren – I

habe ich ein paar Ausführungen zu der Frage gemacht: "Warum sind Zufallszahlen hoher Qualität wichtig?". Im letzten Beitrag bin ich am Beispiel der Programmiersprache "PHP" darauf eingegangen, dass SW- und Web-Entwicklern in den Standardbibliotheken ihrer Sprachen oftmals keine software-basierten Zufallszahlen-Generatoren [PRNGs] zur Verfügung stehen, die eine hinreichende Qualität der Zufallszahlenverteilung liefern.

Ein Maß für die Qualität von Zufallszahlen ist die sogenannte statistische "Entropie". Je höher diese Entropie ist, desto besser erfüllt die Verteilung der Zufallszahlen in einem Zielraum die Kriterien einer vollständig musterfreien statistischen - also zufälligen - Verteilung. [In der physikalischen Natur erfüllen vor allem bestimmte Quantensysteme die Ansprüche an eine Abfolge rein zufälliger Ereignisse, die mit einer statistischen Verteilung von Meßwerten maximaler Entropie versehen sind.

 
Ich hatte im zweiten Artikel ein Beispiel aus meiner eigenen praktischen Erfahrung zum Einsatz eines PHP PRNG-Verfahrens erwähnt, in dem die Entropie völlig unzureichend war. Im Beispiel nutzten Spammer ihre Kenntnisse über den Einsatz eines bestimmten PRNG-Algorithmen in einer Web 2.0-Anwendung, um nach einer einfachen statistische Analyse für ein Captcha-Verfahren zuverlässige Vorhersagen der generierten alphanumerischen Sequenzen zu machen.

Ich möchte in diesem Artikel nun exemplarisch ein paar weitere Sicherheitsverfahren auflisten und kurz andiskutieren, bei denen der statistische Zufall auf die eine oder andere Weise besonders bedeutsam für die IT-Sicherheit ist. Im Falle der für die moderne IT so bedeutsamen Kryptierungsverfahren gehe ich dabei auch kurz auf potentielle Bedrohungen ein.

Den Abschluss bilden Links zu vielen Artikeln, die ich mir bei der einen oder anderen Gelegenheit mal zum Thema Zufallsgeneratoren und Kryptographie zu Gemüte geführt habe. (Leider und interessanterweise musste ich bei der Gelegenheit feststellen, dass früher funktionierende, öffentlich zugängliche Links zu vielen guten und interessanten Kursunterlagen amerikanischer Universitäten in den letzten Monaten deaktiviert oder mit Zugangsschutz versehen wurden.)

Passwörter und "Zufall"

Das einfachste Beispiel für ein letztlich auf pseudo-statistischen Methoden beruhendes Sicherheitsverfahren liefert der Passwortschutz für Daten oder Applikationen. Der Algorithmus ist hier stocksimpel:

Wenn das übergebene Passwort mit einem Vergleichswert übereinstimmt, wird der Zugang zu einem Geheimnis (schutzbedürftige Daten) oder zu einem sicherheitsrelevanten Verfahren gewährt. Je länger und komplexer ein Passwort ist,

  • umso geringer ist vordergründig die statistische Wahrscheinlichkeit, das Passwort zu erraten
  • und umso höher schätzt man subjektiv den Aufwand ein, es durch systematisches Durch-Probieren ["Brute Force" Angriff] von lexikalischen Wörtern mit Ergänzungen oder systematische Variation von Zeichen unter Berücksichtigung menschlicher und sprachbezogener Häufigkeitsverteilungen zu finden.

Diese Argumente ziehen in Wirklichkeit aber nur bei einer wirklich zufälligen Verteilung der genutzten alphanumerischen Zeichensequenzen. Das Zufallselement liegt hier beim Erzeuger des Passwortes selbst. Im Idealfall bedient sich der Passwort-Erzeuger eines statistischen Generators für die alphanumerische Zeichensequenz des Passworts. Ein solches Vorgehen fördert aber nicht gerade die Merkbarkeit der vielen Passwörter, die man im heutigen IT-Alltag benötigt.

Die statistische Verteilung der durch Menschen erzeugten Passwörter ist allein schon aus diesem Grund in den seltensten Fällen wirklich zufällig. Zudem ist die Zufälligkeit sehr durch Merkmale einer Spache, durch allzu menschliche Sprach-, Lebens- und Merkgewohnheiten, psychologische Gesetzmäßigkeiten sowie natürlich durch die begrenzte Länge der Passwörter/Passphrases eingeschränkt.

Deshalb ist das "Cracken" von Passwörtern für Angreifer durch "Brute-Force-Methoden", in denen menschliche Gewohnheiten berücksichtigt wurden, leider oft erschreckend einfach.

Warum ist diese Erkenntnis von fundamentaler Bedeutung?
Auch der sichere, praktische Einsatz vieler Kryptoverfahren - wie etwa PGP - hängt letztlich von Passwörtern - etwa von Passwörtern zum Öffnen privater Krypto-Schlüssels aus einer Verschlüsselungshülle oder aber von Zugangspasswörtern zu Datenspeichern für die privaten Schlüssel - ab. Es nutzt deshalb nichts, hochsichere Datenverbindungen zwischen Computersystemen im Internet aufzubauen oder Mails zu verschlüsseln, wenn der eigene Computer, der eigen Router oder die privaten Kryptoschlüssel selbst nur durch einfach zu erratende Passwörter/Passphrases geschützt sind. Siehe auch:

http://iso-blog.anracom.com/2013/10/open-source-sicherheit-und-die-sicherheit-des-umfelds/
http://iso-blog.anracom.com/2013/12/sind-asymmetrische-verschlusselungsverfahren-irgendwie-sicherer/

Wir stoßen hier also wieder auf einen generellen Punkt, den wir schon im ersten Artikel aufgegriffen hatten:

Auch bei Kryptoverfahren, in denen Schlüssel auf der Basis von hochwertigen RNGs erzeugt werden, ist die technische Verfahrenssicherheit insgesamt letztlich von der sicheren Verwahrung der privaten Keys - also vom sicherheitstechnischen Umfeld (Betriebssystem, Malware und Intrusion-Schutz, verschlüsselte Ablage, etc.) abhängig. Einen unrühmlichen Beleg für diese Tatsache lieferte zuletzt das Malheuer im Bundestagsnetz. Die Sicherheit auch komplexester Verschlüsselungsverfahren ist in der technischen Einsatzpraxis oft auf elementare Verfahren wie Passwortschutz zurückgeworfen und kann daher of t indirekt über ein unsicheres Einsatzumfeld angegriffen werden.

Es sollte einem daher immer bewusst sein: Auch eine hohe Qualität von Zufallszahlen als Basis von eingesetzten Sicherheits- und Verschlüsselungsverfahren allein erzeugt noch keine hinreichende IT-Sicherheit.

Deshalb müssen Zertifizierungs- und Prüfverfahren zur IT-Sicherheit zwingend immer die gesamte Kette von Sicherheitsvorkehrungen in einem Einsatzumfeld betrachten.

Kryptographie-Verfahren, Schlüsselgenerierung und Zufallszahlen

In Kryptographieverfahren werden Schlüssel und (symmetrische oder asymmetrische) Verschlüsselungsverfahren benutzt, um aus normalen Texten unleserliche "kryptierte" Texte zu erzeugen. Ein potentieller Gegner darf den erforderlichen Schlüssel für das kryptierte Geheimnis selbst dann nicht ermitteln können,

  • wenn er Einsichtnahme in einen abgefangenen kryptierten Text bekommt,
  • wenn ihm das eingesetzte Krypto-Verfahren bekannt sein sollte oder er es erraten sollte,
  • wenn er zusätzlich die Möglichkeit hat, das eingesetzte Krypto-Verfahren auf vorgegebene Texte wiederholt anzuwenden und die resultierenden Ergebnisse mit aufwändigen statistischen Methoden nach Mustern zu analysieren.

Der erste Punkt ist trivial. Er beschreibt das zu erreichende Ziel des Einsatzes eines Kryptoverfahrens. Die eigentliche Herausforderung liegt in den letzten beiden Punkten. Auch wenn das Krypto-Verfahren vom Gegner für vorgegebene Texte sehr, sehr oft - bei den heutigen Möglichkeiten hunderte Millionen oder Milliarden mal - auf bekannte Texte angewendet wird, dürfen sich keine Anhaltspunkte (Muster) ergeben, die Hinweise auf die Schlüsselstruktur oder Schlüsselzusammensetzung liefern.

Umgekehrt darf auch das Einsetzen systematisch generierter Schlüssel in den Dekodierungsalgorithmus des bekannten Verschlüsselungsverfahrens nicht zu einem Erraten des Schlüssels in endlicher Zeit führen. Beachte: Da IT-Kryptoverfahren algorithmisch arbeiten, wäre eine Forderung nach beliebiger Wiederholbarkeit letztlich sinnlos. Was aber heißt "sehr, sehr oft"? Das misst sich an den heutigen technischen Möglichkeiten:

Das Erkennen eines Musters oder das Erraten des Schlüssels darf bei Einsatz heutiger Supercomputer nicht mit einer signifikanten, sondern nur verschwindend kleinen Wahrscheinlichkeit möglich sein. Der Aufwand für ein systematisches Probieren muss in Hochsicherheitsumgebungen also auch angesichts der Leistungsfähigkeit von Supercomputern extrem hoch werden. Das wiederum bedeutet:

Der Schlüssel des eingesetzten Kryptoverfahrens muss durch durch ein geeignetes Verfahren aus der Menge aller möglichen Schlüssel statistisch und auch bei extrem vielen (!) Wiederholungen zumindest aus der Sicht von Analysatorprogrammen hinreichend "zufällig" ausgewählt werden.

In Verschlüsselungsverfahren spielt deshalb die Erzeugung von Zufallszahlen als Basis der Erzeugung zufälliger Schlüssel - im Sinne einer programmtechnischen ablaufenden Auswahl zufälliger Schlüssel aus der Menge aller möglichen Schlüssel - eine zentrale und eminent wichtige Rolle.

In der technischen Praxis ist deshalb für die Qualität von Kryptoverfahren die Verfügbarkeit hochwertiger Zufallszahlengeneratoren oder aber der Zugriff auf eine Zufallszahlenquelle hoher Entropie bei der Generierung der Krypto-Schlüssel ausschlaggebend. Ein Mangel an Entropie kann in diesem Zusammenhang nicht oder nur schwer durch andere oder zusätzliche Verfahrenseigenschaften ausgeglichen werden (siehe zu evtl. Maßnahmen 2 Links am Ende des Artikels).

Eine interessante Frage ist in diesem Zusammenhang übrigens, wie groß eigentlich die Menge der potentiellen Schlüssel im Vergleich zur Länge (Zeichenanzahl) der zu kryptierenden Texte sein sollte. Hierfür muss ich wegen der mathematischen Komplexität aber auf die Fachliteratur - s. die Links am Ende des Texts - verweisen.

Alle guten Verschlüsselungsverfahren erhöhen jedenfalls unter Nutzung eines statistischen Inputs hoher Entropie und unter Ausnutzung mathematischer Verfahren (Stichworte: Primzahlfaktorisierungsproblem für Produkte aus hinreichend großen Primzahlen) den Aufwand, der von einem Angreifer bei systematischen Versuchen und bekanntem Algorithmus durchzuführen ist, um durch systematische Analyse oder Probieren einen Zugang zur verschlüsselten Informationen zu bekommen. Ferner ist im Zuge einer konkreten technischen Implementierung eines Krypto- oder Sicherheitsverfahrens dafür zu sorgen, das ein systematische, wiederholtes Ausprobieren von Schlüsseln am angegriffenen System wirksam behindert wird.

Bedrohung etablierter Kryptographieverfahren?

Nebenbei lernen wir so auch, durch welche Umstände die Sicherheit von Kryptoalgorithmen systematisch bedroht werden kann. Stichworte sind:

  • Unzureichende mathematische Verfahren als Basis des Verschlüsselungsalgorithmus.
  • Gezielte Verwässerung der technischen Umsetzungsvorgaben für die praktische Implementierung von Kryptoalgorithmen unter bestimmten Betriebssystemen.
  • Unzureichende Prinzipien der technischen Zufallszahlengenerierung (im besonderen bei Einsatz von SW-PRNGs) und/oder fehlender Zugriff auf eine Quelle von Zufallszahlen hoher Entropie.
  • Schlampige Absicherung des Umfelds / menschliches Versagen in der Praxis.
  • Unterschätzung der Leistung moderner Supercomputer und begrenzte Länge von Schlüsseln.
  • Eine zufällige oder gezielt herbeigeführte Kombination aus allen genannten Defiziten.

Ich hatte mit Hilfe diverser Links schon im letzten Artikel angedeutet, dass man womöglich ein Fragezeichen hinter die Zuverlässigkeit des im Internet so wichtigen SSL/TLS-Verfahrens setzen konnte und kann.

Um ein Gefühl dafür zu bekommen, welche sonstigen Methoden und Techniken zur Korrumpierung von Verschlüsselungsverfahren (u.a. durch Ausnutzung einer unzureichenden Zufallszahlen-Entropie) - aus welchen guten oder schlechten Gründen auch immer - für möglich erachtet werden, sei auf folgende Links hingewiesen:

http://www.theguardian.com/world/2013/sep/05/nsa-gchq-encryption-codes-security
http://www.theguardian.com/world/2013/sep/05/nsa-how-to-remain-secure-surveillance
http://www.nytimes.com/interactive/2013/09/05/us/documents-reveal-nsa-campaign-against-encryption.html?_r=0
http://blog.cryptographyengineering.com/2013/09/on-nsa.html
http://www-cs-faculty.stanford.edu/~eroberts/cs201/projects/ethics-of-surveillance/tech_encryptionbackdoors.html
 
http://rt.com/usa/nsa-weak-cryptography-rsa-110/
http://www.heise.de/security/meldung/Mehr-Details-zur-Hintertuer-im-Zufallszahlengenerator-Dual-EC-DRBG-2159523.html
http://www.heise.de/security/meldung/NIST-beerdigt-umstrittenen-Zufallszahlengenerator-Dual-EC-DRBG-2731747.html

http://securityaffairs.co/wordpress/17577/intelligence/nsa-bullrun-program-false-perception-security.html
http://www.newyorker.com/online/blogs/elements/2013/09/the-nsa-versus-encryption.html

 
Dass heute auch in internationale Zusammenarbeit (z.B. unter Nicht-EU-Staaten) zur gezielten Dekodierung verschlüsselter Dateninhalte investiert wird, deuten beispielsweise folgende Artikel an:

 
Für mich ist im Kontext des hier behandelten Themas gar nicht die ethische oder politische Kritik an den in den Artikeln angesprochenen Vorhaben und Maßnahmen relevant. Viel wichtiger erscheint mir die Feststellung, dass offenbar überhaupt an der (massenweisen ?) Dekryptierung von Daten, die mit modernen, mathematisch fundierten Verfahren verschlüsselt wurden, gearbeitet wird. Man kann das u.a. als Hinweis darauf deuten, dass es in der Praxis mit der Qualität der heute eingesetzten Zufallszahlenverfahren oder Zufallszahlen-Quellen wohl nicht so weit her sein dürfte.

Gute Quellen von Zufallszahlen als nationale Aufgabe?

Die obigen Artikel verdeutlichen im Umkehrschluss auch, warum man die Bereitstellung hochwertiger Zufallszahlengeneratoren und Zufallszahlenquellen als Aufgabe mit größter Bedeutung für Staaten und die sie tragende Informationsgesellschaft - im Besonderen im Kontext eines zunehmenden E-Governments - verstehen kann und muss. Ein Beispiel hierfür liefert etwa der angemahnte Einsatz von hochwertigen Zufallszahlen im Zusammenhang mit dem deutschen Signaturgesetz:

 
Wichtige Arbeit im Zusammenhang mit Kryptoalgorithmen und zugehörigen RNGs leistet hierzulande u.a. das BSI, das auch Empfehlungen herausgibt:

 
Leider klappt es anscheinend und womöglich auch bei bestem Willen mit der Bereitstellung hochwertiger PRNGs nicht immer ganz so wie gewünscht. Auch bzgl. empfohlener Prüfverfahren zur Qualität von Zufallszahlen stellen interessierte Zeitgenossen offenbar Fragen:

 
Das alles zeigt nur, wie wichtig eine ständige Kontrolle publizierter Verfahren durch unabhängige Fachkundige wohl ist. Zumindest punktuell fördert das BMI Forschung im Bereich der Zufallszahlengenerierung:

 
Egal wie man zu den bisher zitierten Artikeln und ihren Inhalten steht: Als Fazit aus den zusammengestellten Links dürfte hoffentlich sehr deutlich geworden sein, dass gerade Krypto-Algorithmen ohne Quellen hoher Entropie für Zufallszahlen wenig wert sind.

Hashes

Interessant ist im Zusammenhang mit den oben bereits erwähnten Passwörtern auch die maschinelle Erzeugung von sogenannten "Hashes":

Hier besteht einer der Einsatzbereiche u.a. darin, ein Passwort oder gar eine Signatur durch einen "one-way"-Algorithmus so in eine scheinbar zufällige, aber eindeutige Folge von Zeichen zu verwandeln, dass man selbst bei bekanntem Erzeugungsalgorithmus aus der erzeugten Sequenz das ursprüngliche Passwort nur mit gigantischem Aufwand zurück ermitteln kann. Den erzeugten Hash-String kann man dann immer noch mit dem Hash vergleichen, der aufgrund eines in einem sicherheitsrelevanten Verfahren eingegebenen Passwortes oder einer elektronischen Signatur erzeugt wird.

Auch hier hängt die Sicherheit von 2 Faktoren ab:

  • Der mathematischen Qualität des Hashing-Algorithmus,
  • aber ganz offenkundig auch von einem zusätzlichen Zufallsinput in den Hash-Algorithmus selbst.

Denn die Hash-Generierung darf einerseits keine Muster aufweisen und sie muss andererseits auch "kollisionsfrei" sein: zwei unterschiedliche Imputs (Passwörter) dürfen nicht zu gleichen oder in statistischem Sinne zu "ähnlichen" Hashes führen. Diese Anforderungen lassen sich in Kombination nur durch den Einsatz von Zufallszahlen erfüllen.

Dass leider auch moderne Hash-Verfahren anfällig sind - insbesondere gegenüber Brute-Force-Angriffen - und sich in manchen Anwendungsbereichen sogar für "Denial of Service"-Angriffe nutzen lassen, belegen u.a. folgende Links:

 

Captcha-Verfahren

Auch ein Blick auf Captcha-Verfahren macht die Bedeutung von "Zufälligkeit" deutlich:

Sie stellen eine Variante von sog. Challenge-Response-Verfahren dar, in denen eine statistisch generierte Information von einem (hoffentlich menschlichen) Anwender aufgrund seines speziellen Wissens und oft kombiniert mit menschlichen Mustererkennungsfähigkeiten zur Beantwortung einer Frage genutzt und an eine autorisierende Instanz zurückgesendet werden muss.

Wir haben bereits im letzten Artikel an einem entsprechenden Beispiel diskutiert, dass eine unzureichende Entropie von Zufallszahlengeneratoren zur Vorhersagbarkeit der generierten Captcha-Zeichen/Nummern/Aufgaben-Folgen führen kann.

Zusammenfassung

Wichtige Sicherheitsverfahren, die insbesondere zur Absicherung von Kommunikation im Internet eingesetzt werden, kommen ohne qualitativ hochwertige Quellen für Zufallszahlen nicht aus. Eine unzureichende Entropie von RNGs oder technischen Quellen von Zufallszahlen, die bei der Generierung Kryptierungs-Schlüsseln einegsetzt werden, eröffnet potentiellen Angreifern mit hinreichendem Wissen und Ressourcen Möglichkeiten, Verschlüsselungsverfahren anzugreifen und letztlich die Inhalte verschlüsselter Information zu dekodieren.

In einem weiteren Artikel wende ich mich - sobald ich dazu Zeit finde - ein wenig anderen Quellen von Zufallszahlen als den bereits kritisierten SW-PRNGs in der IT zu.

Weiterführende Links

Elementare Definitionen

 

Heranführung an die Bedeutung von Zufallszahlen in einem einführenden Kurs

 

Grundlagen

http://www.seifried.org/security/cryptography/20000126-random-numbers.html
http://www.jochen-rondorf.de/fh/zufall_im_rechner.pdf
http://www.tu-chemnitz.de/urz/lehre/rs/rs02/krypto/crrng.htm
http://www.staff.uni-mainz.de/pommeren/Kryptologie/
https://www.st.cs.uni-saarland.de/edu/secdesign/randgen.pdf
 
https://calomel.org/entropy_random_number_generators.html
http://blog.cryptographyengineering.com/2012/02/random-number-generation-illustrated.html
http://blog.cryptographyengineering.com/2012/03/surviving-bad-rng.html
http://www.techsupportalert.com/content/encryption-not-enough.htm
http://cacr.uwaterloo.ca/hac/
especially
http://cacr.uwaterloo.ca/hac/about/chap5.pdf
http://www.std.com/~cme/P1363/ranno.html
http://cseweb.ucsd.edu/~mihir/cse207/s-prg.pdf
http://www.ceilers-news.de/serendipity/217-RSA-und-die-schwachen-Schluessel,-Teil-3-Die-Gefahren.html

 

Liste umfangreicher spezieller Artikel der Universität Stanford
http://crypto.stanford.edu/pbc/notes/crypto/

Umfangreiche Liste von grundlegenden Artikeln aus den 90ern
http://erngui.com/rng/

Angriffsverfahren auf unzureichende PRNGs aus wissenschaftlicher Sicht
https://www.schneier.com/paper-prngs.pdf

Auswege bei unzureichender Entropie?

 

"/dev/urandom" und "haveged" als Quellen von Zufallszahlen für Linux Systeme

 

Artikel über PGP und die dortige Verwendung von PRNGS

 

Die Kommentarfunktion ist geschlossen.