Twitter | Pretraživanje | |
Hector Martin 16. sij
To clarify the Windows crypto fail: The problem isn't in signature validation. The problem is the *root store/cache*. CryptoAPI considers an (attacker-supplied) root CA to be in the trust store if its public key and serial match a cert in the root store, Ignoring curve params.
Reply Retweet Označi sa "sviđa mi se"
Hector Martin
So it's not that Windows uses the wrong curve parameters or anything like that, it's that at some point the key used to index into a validated cert cache is (serial, pub) when it should be (serial, pub, params). As they say, one of the hardest problems in CS is caching.
Reply Retweet Označi sa "sviđa mi se" More
Dan Kaminsky 17. sij
Odgovor korisniku/ci @marcan42
Presumably, only for ECC...ah, because only ECC has params significant/agile in this manner?
Reply Retweet Označi sa "sviđa mi se"
Hector Martin 17. sij
Odgovor korisniku/ci @dakami
Yup.
Reply Retweet Označi sa "sviđa mi se"
Rohit Mothe 17. sij
Odgovor korisniku/ci @marcan42
Maybe I'm missing something but based on my tests it seems that even the serial doesn't need to be the same? Just a public key match seems enough to trigger it
Reply Retweet Označi sa "sviđa mi se"
Hector Martin 17. sij
Odgovor korisniku/ci @rohitwas
Could be, the PoC I saw was explicitly cloning the serial so I assumed that much was needed.
Reply Retweet Označi sa "sviđa mi se"
Kevin Hill 17. sij
Odgovor korisniku/ci @marcan42
Is it easier to find params that generate an arbitrary pub key than to find a pub key given the params? Aren't both roughly just at hard? What am I missing?
Reply Retweet Označi sa "sviđa mi se"
Hector Martin 17. sij
Odgovor korisniku/ci @CyborgTribe
What you're trying to find is the private key given the public key. You cannot find the original private key for the original params, but you can trivially craft parameters in such a way to make a private key of 1 "happen" to correspond to the original public key.
Reply Retweet Označi sa "sviđa mi se"
Tavian Barnes 16. sij
Odgovor korisniku/ci @marcan42
Why are the params not part of the serial?
Reply Retweet Označi sa "sviđa mi se"
Hector Martin 16. sij
Odgovor korisniku/ci @tavianator
What do the params have to do with the serial? The serial is just an arbitrary serial number.
Reply Retweet Označi sa "sviđa mi se"
Conrado Gouvea 17. sij
Odgovor korisniku/ci @marcan42 @sleevi_
I wonder why does it even touch the supplied CA certificate. Shouldn't it simply get the CA certificate from the trusted store, keyed by the signer Subject/KeyID listed in the child certificate?
Reply Retweet Označi sa "sviđa mi se"
James Forshaw 17. sij
Odgovor korisniku/ci @conradoplg @marcan42 @sleevi_
I'd suspect it's because the chain verification is distinct from whether the chain is trusted by policy. Therefore you supply the full chain with the bogus cert, which checks out okay. Then the trust is checked, it compares AuthKeyIDs and find a matching trusted root. Job done!
Reply Retweet Označi sa "sviđa mi se"