3 ms·
The way Dual_EC works, to exploit it you need a TLS extension that has the server send "large nonces", which you use along with knowledge of the backdoor key to
by cryptonector 5y ago
The way Dual_EC works, to exploit it you need a TLS extension that has the server send "large nonces", which you use along with knowledge of the backdoor key to recover RNG state and so recover the server's Diffie-Hellman keys.
Now, if the backdoor is in place but no one was using it, no one would know if the public backdoor key got changed. But the attacker gets to decrypt all these sessions. OTOH, if NSA was trying to use the backdoor and noticed it wasn't working, they might start looking into it and find the hack.
So being able to make a very small source code change (32 bytes of public key material in this case) that has this impact is fantastic because that change is small enough that no one might have notice for a long time (which is apparently what actually happened).
But you're right, if you can change the source code then you can add a backdoor anyways, so Dual_EC being backdoored is not what was fatal to the Juniper systems. What was fatal to them is that they had poor internal security.
Still, an intentional backdoor key is plausibly -likely even- easier to replace than a backdoor is to add. So this is a decent argument against intentional backdoors. But it's not really a devastating argument against intentional backdoors.
Intentional backdoors are bad for political reasons too -- or good, maybe, depending on your point of view. Intentional backdoors are bad because the key to the backdoor can leak, and when that happens it can be very hard to fix -- this is devastating to security of the backdoored system, so I think it is a devastating argument against intentional backdoors, especially for a backdoor where exploitation is passive, like Dual_EC.
Dual_EC was a fine covert key escrow system for U.S. government systems, but there was no need to make it covert if it was only for that.
EDIT: But the real problem with Dual_EC is that it's terribly slow. /s