Zum Hauptinhalt Zur Navigation

Daniel J. Bernstein: Ein langweiliger C-Compiler für bessere Crypto

Der Kryptograph Daniel J. Bernstein fordert einen C-Compiler mit klar definierter Semantik, der kein undefiniertes Verhalten von Code erlaubt. Das soll das Schreiben und Überprüfen von Code klar vereinfachen und somit bessere Kryptographie ermöglichen.
/ Sebastian Grüner
36 Kommentare News folgen (öffnet im neuen Fenster)
DJB wünscht sich einen langweiligen C-Compiler. (Bild: Wikimedia/Ordercrazy)
DJB wünscht sich einen langweiligen C-Compiler. Bild: Wikimedia/Ordercrazy / CC0 1.0

In einer E-Mail schlägt der Kryptograph Daniel J. Bernstein, besser bekannt als DJB, die Schaffung eines langweiligen C-Compilers vor(öffnet im neuen Fenster) . Denn zurzeit enthalte der C-Standard für bestimmte Situationen sehr viel undefiniertes und unspezifiziertes Verhalten. Der von DJB geforderte Compiler böte für eben all jene Situationen aber eine "sorgfältig erstellte Semantik" , die beibehalten werde.

Laut Bernstein änderten sowohl Clang als auch GCC zurzeit vollkommen willkürlich das Verhalten derartiger nichtdefinierter Programme. Dem aktuellen Standard zufolge müssten jedoch sämtliche tatsächlich vorkommende C-Programme als nichtdefiniert gelten. Darüber hinaus würden neue Compiler-Optimierungen oft neue Sicherheitslücken in dem Objektcode produzieren. Das heißt, selbst derzeit durchgeführte Code-Überprüfungen mit positivem Abschluss könnten durch künftige Optimierungen am Compiler wieder zunichtegemacht werden.

Der von DJB nun ersonnene Compiler sollte diese Probleme eben vermeiden, was besonders wichtig für kryptographische Funktionen sei. Der klare Fokus auf Vorhersagbarkeit sollte es dementsprechend erleichtern, Code zu schreiben, diesen zu überprüfen und zudem auch formal verifizieren zu können. Der Kryptograph vermutet, dass solch ein Compiler schnell viele Nutzer finden würde.

In der Vergangenheit hatte Bernstein wiederholt die Position vertreten , nicht allein die Programmierer für Fehler in Programmen zu beschuldigen, sondern stattdessen Algorithmen und nun eben auch Werkzeuge so zu erstellen, dass diese schon von vornherein eine möglichst große Sicherheit bieten.


Relevante Themen