When Will We See Collisions for SHA-1?
schneier.com
schneier.com
2xAMD 7970 : 8000Mhash/s ~= 2^33
Seconds per year ~= 2^24
Total Hashes ~= 2^57
1kW * $0.15/kWh * 1 year ~= $1315
Rig cost (guess) ~= $2000
Total cost ~= $3315
Price for 2^60 hashes in a year:
2^60 / 2^57 * $3155 ~= $25000If you assume a 6X discount in 2021, then it will be <5k. Still, it takes a year, or more money for machines. Corrections welcome. Trying to run sixteen 7970s for a year straight is probably a total crap shoot.
The hash rate is from http://www.codinghorror.com/blog/2012/04/speed-hashing.html .
[EDIT: I wouldn't be shocked if FPGAs could do it with 1/10th the power and heat, with the same variable cost (hardware & power) but with an additional fixed cost to build the devices; I'm basing this estimate on bitcoin mining boards like these: https://en.bitcoin.it/wiki/Mining_hardware_comparison ]
Which is about 2,500X the processing power of an AMD 7970. Bitcoin is hashing SHA256, which is about as computationally expensive as SHA-1 (or maybe even cheaper, according to comments on the linked blog post).
Much of the Bitcoin computational power comes from large mining operations controlled by individuals. Their processing power is easily diverted elsewhere, if the profit motive is there...
If I want it to be considered reasonable valid proof that I did, indeed, have the data leading to the hash when the notary signed it, and I want stuff I sign today to be acceptable 10 years from now, would you consider HMAC-MD5 viable? How about HMAC-SHA1? I guess plain MD5 and SHA1 are out of the question according to this article.
Speed is not a concern here, so I would be happy with HMAC-SHA3 or anything else... Also, I keep reading that multiple signatures (MD5 + SHA1) are only as strong as the strongest one, but that does not make any sense to me - If you have two differently seeded (initial internal state) MD5 hashes, it should already be much harder to exploit (perhaps not double the number of bits, but surely a large load factor)?
You hash your data, and send the hash to them. They embed the hash in a long hash-chain, and publish the current head of the hash chain in Financial Times every month. Once the hash chain head has been published, it is impossible to forge the signed content without destroying all copies of the newspaper in existence.
It seems that the service is free for basic use, only availability SLAs and customer support is paid.
C_{4P}(SHA-2-512, SHA-3-512) should remain solid for a long long time. Your point of failure is, now, the signature scheme. To last for decades, do not use RSA or DSA. Use elliptic curve DSA or similar (EdDSA comes to mind).
RSA and DSA are based on the integer factorization and finite field discrete logarithm problems, respectively. The number field sieve has a complexity (very roughly) proportional to 2^(b^(1/3)), for b-bit keys. This means that keys have to be proportional to 2^(b^3) to achieve b-bit security. For a concrete example, 256-bit security requires ~16384 RSA/DSA keys (this is using a less rough approximation of the NFS complexity).
On the other hand, well-chosen elliptic curve groups have (or appear to) much less structure than the above. In generic groups, the best we can do to solve the discrete logarithm are generic attacks, like Rho or BSGS. Those run in time proportional to 2^(b/2). Therefore, we only need keys of size 2^(2b) to achieve b-bit security (512-bit keys for 256-bit security). Bit for bit, elliptic curves are much more efficient to deliver the same level of security. This results in other advantages, like tolerable speed.
As I understand it, ECC is also significantly faster.
(And in a related issue - does anyone know why smart card deployment in the US is so far behind Europe? Why is it that I need to get a PGPcard from germany and can't find anything comparable in the US?)
Thanks!
[1]: http://news.yahoo.com/butterfly-labs-announces-next-generati...
The analysis that's given includes estimates of decreasing computation cost from Moore's law, but no corresponding estimate of decreasing cost from patterns found in the SHA-1 hash function.
Also, why does the cost estimate focus on commodity CPUs, rather than GPUs, which are much better at the (parallel) computations that hash attacking involves?
* number of cores per CPU
* number of CPUs per server
* any improvements in cryptanalysis
* instruction set improvements (arm sha1, gpus)
Will only make his number even scarier.
The reason why I wouldn't take into account better attacks is because that's much harder to predict than Moore's law. Also, this is supposed to be more of a worst case scenario, so even if no advances are found it will cost at least that much.
So the ARM 8 SHA-1 instruction contributes to making itself obsolete? :-)
That said, the ARM threat is under estimated since the power budget is so much lower and the cost per CPU is also lower. So 10,000 ARM8 cores with SHA hardware are cheaper than 10,000 x86 cores doing the calculation in software.
https://www.varnish-cache.org/docs/trunk/phk/varnish_does_no...
http://dl.acm.org/citation.cfm?id=2000108
ftp://ftp.cs.utexas.edu/pub/dburger/papers/ISCA11.pdf
They use existing data to model CPU perofrmance increase and conclude with "Through 2024, only 7.9 average speedup is possible across commonly used parallel workloads, leaving a nearly 24-fold gap from a target of doubled performance per generation."
Also wouldn't an n-tuple of multiple hash methods and the file size be even more impossible to replicate than a single hash, but not be that much harder to generate initially?
You publish the hash in advance, and after elections you only publish the right PDF file, thereby "proving" your clairvoyance.
More seriously: You can get a notary (e.g. Microsoft Authenticode) to sign one file, and then provide another with the same hash.
For now, it only helps you with planned fraud, not after-the-fact forgery.
> It takes about half an hour on average on a standard PC to find a collision.
That's not a whole lot of time.
Edit: it really does work, too:
$ md5 msg[12].txt
MD5 (msg1.txt) = bd1ba334fdd5bf3836b9b8c4bfebae16
MD5 (msg2.txt) = bd1ba334fdd5bf3836b9b8c4bfebae16
$ openssl sha1 msg[12].txt
SHA1(msg1.txt)= fd5bb8044dc51ab2deef608fabf3b7dcb7a84c17
SHA1(msg2.txt)= 7d490719b22f9a0e365e4fab4e3ab551b4a8898e
Took about half an hour on my MacBook Air, just as promised.For example, PGP v4 Key IDs are a subset of PGP v4 Key Fingerprints. PGP v4 Key Fingerprints are SHA1 hashes of some protocol information and the key material (for more detailed information see RFC4880 section 12.2). So, a proper collision, with other properly constructed packets, could yield two seemingly "identical" keys. Therefor, they may be able to produce a fake PGP key that you think belongs to a person you trust and want to communicate privately with but actually does not.
Hash function collisions can be similarly exploited with digital certificate protocols (like SSL web certs). So, a crime syndicate may be able (depending upon how badly certain hash functions are broken) to produce a fake SSL certificate for your bank's website that your browser thinks in valid. Or even worse, they may be able to produce a fake root CA singing certificate that your browser thinks is valid.
It's more complex than just "can compute hash collisions = fake certs" because there's a very limited amount of information hashed in both certs and PGP keys. The more data that is hashed the easier it is to find a collision. With PGP much of the data has to be very specific like version and algorithm designation flags and valid cryptographic values for the algorithm designated. It's safe to say "very limited flexible data = very difficult to find a collision".
Therefor, these calculations are interesting and do suggest that everyone should move away from using SHA1. But, the calculations to determine when a criminal or an anti-sec use case would be possible are much more complex and involve many more variables.
Does the collision attacker get a hash of something used for security, and then look for another input that returns the same hash? Isn't it possible that they found the original input? Why is it important that its a collision?
There are a wide array of attacks. Using the method just described and the existence of a hash collision to fake a signature, rather than a key pair, in some cases can be much easier. Depending upon the protocol and procedures used, it may also be possible to use a different method such as providing the true authorized signer with any content that shares a collision with something you'd like the authorized signer to sign (but that they would not normally sign). This can be especially true when the signing procedure is fully automated (For example, some CA's SSL certificate acquisition process is fully automated).
The reason that the collision is important is because many cryptosystem implementations (and humans of course) use hashes as unique identifiers of key pair material (PGP Keys & PKI certs).
That's what I'm wonder at the value for.
Otherwise your're totally accurate.
Imagine if somebody at the NSA/CIA firgures out that all pn were really p!