Es gibt mehrere interessante Aspekte an der ganzen Sache.

Erstens: Der Code sah sauber aus. Das war ein Logik-Bug. Der Code sah richtig aus. Man musste wirklich die Materie verstanden haben, um zu verstehen, dass es da ein Problem gibt. Kudos an die NSA, dass sie das überhaupt gesehen haben.

Zweitens: Es hieß initial, der Bug ginge 20 Jahre oder so zurück. Das stimmt wohl doch nicht. Der Bug wurde 2015 eingebaut. Das finde ich ja nun wieder hochinteressant. Denn wir reden hier von ECDSA. ECDSA war damals schon angeschossen, weil es so fragil ist, und es so einfach ist, damit einen Totalschaden zu produzieren. Die Playstation war über ihr DSA gehackt worden. djb hatte bereits mit explizitem Hinweis auf die Fragilität von ECDSA und den NIST-Kurven seinen Gegenvorschlag Ed25519 publiziert. Und unter diesen Umständen haben die den Code nochmal angefasst und ihn schlimmer gemacht. Dazu muss man wissen, dass Krypto-Code so der am wenigsten volatile Code überhaupt ist. Alle sind sich bewusst, wie kritisch da jedes Bit und jeder CPU-Zyklus ist, und keiner will da irgendwas anfassen. Das ist auch bei Microsoft so. Insofern wollte ich das alles erstmal gar nicht glauben. Allerdings gibt es einen Grund, doch den Krypto-Code anzufassen, nämlich wenn sich die Spec ändert, oder man noch einen Aspekt aus der Spec implementieren muss, den man vorher nicht supported hat.

In diesem Fall war das das Feature, dass im Handshake die Kurvenparameter übertragen werden, und nicht bloß die paar hart eingebrannten NIST-Kurven verwendet werden können.

So und jetzt kommt der echt peinliche Teil. Hier ist die Spec. Die sagt ausdrücklich:

implicitCurve and specifiedCurve MUST NOT be used in PKIX

specifiedCurve, which is of type SpecifiedECDomain type (defined in [X9.62]), allows all of the elliptic curve domain parameters to be explicitly specified. This choice MUST NOT be used.

Bleibt die Frage, wieso die NSA das publik macht. Den einen Grund dafür kann man gerade gut beobachten. Die lassen sich als Helden feiern. Zum ersten Mal in ihrer Geschichte haben sie etwas Positives gemacht. Und einige Deppen glauben ihnen jetzt vielleicht sogar ihr Blablah, dass sie eine neue Seite aufschlagen wollen und ab jetzt wichtige Lücken nicht ausnutzen sondern melden wollen. Das ist natürlich absurd.

Ich glaube ja, die NSA hat das gemeldet, weil ihr eigener Arsch gefährdet war. Die NSA hat nämlich in den USA eine Doppelrolle und erledigt auch den Teil mit, den bei uns das BSI separat macht. Die schreiben die Anforderungsdefinitionen für Militär und Behörden. Und da haben sie reingeschrieben, dass Elliptische Kurven total geil und sicher sind, als bei uns noch Rüdi auf dem Congress gewettert hat, was das für eine unbewiesene spekulative Voodoo-Technologie sei, und dass man lieber bei RSA bleiben soll. Die haben sich damals ziemlich fett auf elliptische Kurven committed, und das Militär ist ihren Empfehlungen gefolgt. Microsoft hat Support für elliptische Kurven überhaupt nur eingebaut, soweit ich weiß, weil die NSA das den Behörden in die Anforderungen geschrieben hatte, und Microsoft gerne weiter Behörden beliefern können wollte.

Wenn jetzt also rauskommt, dass es einen Bug gibt, in einem von der NSA empfohlenen "sicheren" System, das der inhärenten Fragilität des Systems geschuldet ist, dann beschädigt das den Ruf der NSA.

Übrigens, bei solchen Bugs müsst ihr immer einen Spruch im Hinterkopf behalten: Wenn schon das A-Team solche Fehler hat, wie sieht dann erst der Code des B-Teams aus?

Ich behaupte daher: Das Verhalten der NSA ist ohne plötzlich aufkeimenden Altruismus zu erklären.