Programming Contest! And The Winners are…
Now that everyone’s CPU and GPU clusters have cooled down, we’re ready to announce the contest winners!
Everyone can still sleep well at night: SHA1 was brutally assaulted, but its walls remain inviolate. The winning Hamming Distance was 30 – which given the time and resources available was a terrific achievement. That means the winner generated a hash that matched 130 bits of the 160 bits of the challenge hash!
@seibert leaped into an early lead on Monday afternoon and held it alone until, with 75 minutes left in the contest, @hashbreaker crashed in with a HD31 entry. The leaderboard was tied. Then with a few minutes left in the contest, @CodingCrypto jumped in with the sole HD30 entry FTW! @seibert won the coin-toss vs. @hashbreaker for second place – congrats to all the finalists!
First Place: @CodingCrypto with BuGS bugs bUgs BUGs BLAnK BlAnK blANK BlaNK BuGS BUgS buGS bugS FkCjV using a 10 machine cluster of mixed CPU and GPU execution. A Hamming Distance of 30. @CodingCrypto wins the iPhone 3GS and $2k in Engine Yard Cloud credit.
Second Place: @seibert with lINeS lInUX ligHTtpD lIb leheY LIBRaRY libcRyPt linK layer LeSK linus laYOuT j | 39 using 4 high end NVIDIA cards and a CUDA program written by Steve Worley. A Hamming Distance of 31. @seibert gets the second place iPhone 3GS! |
Greg Lehey is a FreeBSD contributor and Michael Lesk wrote lex and uucp for Unix
\@CodingCrypto was an international team from the Technical University of Eindhoven, San Diego Super Computer Center, University of Illinois at Chicago, National Taiwan University, and Academia Sinica, Taiwan. @seibert was Stan Seibert, a postdoctoral researcher at Los Alamos National Laboratory.
There were a bunch of neat things we learned during the contest:
- A clutch of desktop GPUs is silly fast for these kinds of calculations. Most of the higher scorers were using some kind of GPU rig from Nvidia or ATI.
- Using browser-based javascript engines to crowd-source your computations delivers better than average performance, but couldn’t compete with a multi-GPU rig.
- If you’re crowd-sourcing, better check the inputs! One of the crowd-sourcers was thrilled to receive a result with a reported hamming distance of zero! Only to discover one of his crowd-sourcers had hacked his javascript to report back this (incorrect) result.
Shout-Outs and Miscellanea!
- http://jazzychad.com/engineyard/ and http://digitalworkboxlabs.com/ did very cool automated leaderboards
- The excellent and creative crowdsourcers
- The Nvidia CUDA hivemind collaboration with some gnarly CUDA code
- @antirez who did the math on hash collision probabilities
- @rkneufeld with his HD34 entry “ruby ruBy RuBY RuBy rUBy ruBY ruby ruby ruby ruby ruby ruby 3:OID”
- And finally, the OCD-like HD33 entry from @hashbreaker: “CoWS coWS CowS cOWS DiRTY DIrtY DirTy DIRtY COWS COWS cOwS cOWS bvpDq”
We thought our sample challenge phrase would give Ruby on Rails folks a small advantage since it was a DHH quote, as was our second sample phrase. It wasn’t impossible to figure out what other possible phrases we might use, and start crunching away on the dictionary excerpt last week (it had enough entropy). But alas, it did not appear anyone took advantage of the head-start.
The dictionary was made up of notable programmers, computer scientists, cryptologists, major internet RFC’s, Ruby and Rails community Twitter handles, ruby and rails function calls, and a mishmash of random things like xkcd.
Hope you enjoyed the contest! We’ll be doing another related blog post next week with a bit more information on some of the creative solutions people came up with, complete with code and stories.
Stay tuned for our September contest, but no more with the brute-forcing! The next contest will entail some creative Ruby programming!
Share your thoughts with @engineyard on Twitter