Just a quick note: we have a good idea of how many people make it through these challenges versus how many start. As long as that ratio stays remotely sane --- and as long as the whole Internet doesn't secretly turn out to be full of people who can bust out crypto attacks better than most vulnerability researchers can, which is a concern because an English professor finished these --- we'll donate $20 to PIH or Watsi for everyone who finishes.
Sean, Marcin, and I are watching the cryptopals at matasano address, so if you have questions or get stuck on one of the later problems, don't hesitate to ask; the worst that'll happen is we'll take too long to reply.
Update: We WILL get to you. We're definitely getting your emails. All of your emails. All of the emails. Give us a little bit though.
Thanks for opening this opportunity up to the community! :)
EDIT: Dumb question, but for scheduling purposes, what's an order-of-magnitude estimate for a block of 8 questions? Is this like a weekend-hackable thing, part-time during the week, month sabbatical, or what?
It is a freakin' blast watching people work through these. The pleasure is ours.
Regarding time commitments: it is hugely variable, mostly I think because different people put different priorities on finishing. The first set should go very quickly.
I would love it if these took a month of work, but people have gotten through them in a couple days, and there's some delay built in there because of email.
The bit about priorities is spot on. I got the first set done with Ruby in a week's spare hours. The execution speed (and some of your other posts) have me motivated to learn Go, so set two is on hold until I get comfortable with brute forcing ciphers in a statically typed language. If I were European I'd probably be done by now :)
If you already know ruby, have you considered using JRuby for this? I wouldn't besmirch anyone trying to pick up a new language, but I am curious to hear if there were any technical reasons for going with something else.
Just for the fun of it, really. I'm sure MRI or JRuby would suffice given properly considered execution strategies. Optimizations have been half the fun for me so far with MRI 1.9.
I've been having a blast, despite not putting any time into it (I'm on problem 14 or so because of work). The first two blocks of 8 shouldn't require much time (hours). The instructions so far are rather complete; you aren't left wondering (like on Project Euler sometimes) how to approach something. Most of my time has been spent code golfing.
I agree. I once asked a mechanic in my military unit a question about a car problem, it quickly turned into an hour-long lecture on thermodynamics and ambient heat. The guy is absolutely brilliant.
(Not necessarily responding to the parent comment directly.)
The wall between STEM and the humanities is, if not artificial, quite porous, and it's in the interest of every intelligent person to bring it down.
In general, there's been quite a bit of interest in quantitative approaches to the humanities lately. Try googling for J.E.H. Smith's proposal for a data-driven survey of world philosophy, or look into Franco Moretti's work on "distant reading" in Graphs, Maps, Trees. The latter was even profiled in the New York Times Magazine several years ago.
I also like to trot out the example of Hugh Kenner, a protege of Marshall McLuhan who was one of the 20th century's great scholars of Modernism, particularly of Joyce and Pound — and who was also a contributor to Byte.
I've been meaning to try these but have been avoiding the scheduling headache… but it just sounds like too much fun, so I finally sent you guys an email. I'll make time for it somehow. Thank you for doing this, you guys are awesome.
I sent an e-mail to you about 3 weeks ago asking if I could please try out the crypto challenge, and received no response. Should I try again or does your update refer to the fact that you're just backed up at the moment? Thanks!
EDIT: Apologies, it was only 10 days ago. So I'll assume you all are just a little backed up with the volume of requests.
Our website is so secure that I don't even understand how it works. It turns out we have a load balancer. I only updated one of the static servers. Go me!
"In a stimulating paper "On the Cruelty of Really Teaching Computer Science,"[35]Edsger Dijkstra examines the implications of one central, controlling assumption: that computers are radically novel in the history of the world. Given this assumption, it follows that programming these unique machines will be radically different from other practical intellectual activities. This, Dijkstra believes, is because the assumption of continuity we make about the behavior of most materials and artifacts does not hold for computer systems. For most things, small changes lead to small effects, larger changes to proportionately larger effects. If I nudge the accelerator pedal a little closer to the floor, the vehicle moves a little faster. If I press the pedal hard to the floor, it moves a lot faster. As machines go, computers are very different.
A program is, as a mechanism, totally different from all the familiar analogue devices we grew up with. Like all digitally encoded information, it has, unavoidably, the uncomfortable property that the smallest possible perturbations -- i.e., changes of a single bit -- can have the most drastic consequences.[36]"
I like the switch statement so much I made a "nobound_switch()" in my compiler.
MOV RBX,[RBP]
SUB RBX,10
CMP RBX,20
JA $100
JMP 0x70000000[RBX*8]
MOV RBX,[RBP]
SUB RBX,10
JMP 0x70000000[RBX*8]
I think I combine the sub with the JMP offset, but this is for explaining the idea.
Liberals will absolutely hate me. They like to pretend BIG-O is simple and we can forget efficiency. They love faggotry, not efficiency.
-----
Niggers think mine is homemade. Ironic. No, it will be the envy of all the good programmers. A compiler cannot make this optimization -- only the programmer can make this optimization. It's a run-time value (more or less impossible to anticipate)
---
Fuck, man! the judges are niggers!
Don't embarass yourselves defending your weak position. It is almost never the case that SWITCH() is not integer and JMP table codable. You sound pathetic, unless you WANT to teach bad. Hash tables are mistaught.
Tangential note: if you noticed that this was quite well-written for a blog post, and if you've never heard of Maciej Cegłowskiv[1], then you should absolutely start reading his blog, Idle Words[2]. The essays are simply sublime. Even though he only occasionally writes about tech stuff (it's mostly about his extensive travels), this is hands down my favorite blog and I await every new post eagerly.
My absolute favorite is Białowieża Forest [1] - I died laughing many many times, and I even learned a thing or two along the way. For me, nothing beats enlightening educational entertainment such as this.
We got an overwhelming response to this, which is awesome. Good news/bad news. Bad first: slight delay, while we change up the way we manage the email responses (we're pulling the emails into Mailgun, which is fantastic btw). The good news is we should have everyone squared away by the middle of this afternoon, and should be much more responsive moving forward.
We're really looking forward to watching people run through the challenges. We'll post aggregate stats when everything's done.
I have to say, I've been hearing about the challenges for several months and have been far too intimidated to attempt them as I'm a total newb on the crypto side of things.
After reading this article though, I figured it would be safe to assume that I'll learn as I go through them.
64 comments
[ 3.6 ms ] story [ 209 ms ] threadSean, Marcin, and I are watching the cryptopals at matasano address, so if you have questions or get stuck on one of the later problems, don't hesitate to ask; the worst that'll happen is we'll take too long to reply.
Update: We WILL get to you. We're definitely getting your emails. All of your emails. All of the emails. Give us a little bit though.
EDIT: Dumb question, but for scheduling purposes, what's an order-of-magnitude estimate for a block of 8 questions? Is this like a weekend-hackable thing, part-time during the week, month sabbatical, or what?
Regarding time commitments: it is hugely variable, mostly I think because different people put different priorities on finishing. The first set should go very quickly.
I would love it if these took a month of work, but people have gotten through them in a couple days, and there's some delay built in there because of email.
If I were working on them full time I'm confident I could get as far as I am now (mostly finished the third set) in about a week.
Occupations aren't necessarily a good signal for intelligence or domain expertise... even a patent clerk will surprise you once and a while. ;)
Good troll either way.
The wall between STEM and the humanities is, if not artificial, quite porous, and it's in the interest of every intelligent person to bring it down.
In general, there's been quite a bit of interest in quantitative approaches to the humanities lately. Try googling for J.E.H. Smith's proposal for a data-driven survey of world philosophy, or look into Franco Moretti's work on "distant reading" in Graphs, Maps, Trees. The latter was even profiled in the New York Times Magazine several years ago.
I also like to trot out the example of Hugh Kenner, a protege of Marshall McLuhan who was one of the 20th century's great scholars of Modernism, particularly of Joyce and Pound — and who was also a contributor to Byte.
EDIT: Apologies, it was only 10 days ago. So I'll assume you all are just a little backed up with the volume of requests.
In any case, I have received them now, so thanks for sharing them.
I'll save it for later if it does.
http://www.matasano.com/articles/crypto-challenges/
I'm lookin!
In the real world, if you build a bookshelf and forget to tighten one of the screws all the way, it does not burn down your house
As a programmer, my core strengths have always been knowing how to apologize to users, and composing funny tweets.
Great article, OP. I laughed and learned.
"In a stimulating paper "On the Cruelty of Really Teaching Computer Science,"[35]Edsger Dijkstra examines the implications of one central, controlling assumption: that computers are radically novel in the history of the world. Given this assumption, it follows that programming these unique machines will be radically different from other practical intellectual activities. This, Dijkstra believes, is because the assumption of continuity we make about the behavior of most materials and artifacts does not hold for computer systems. For most things, small changes lead to small effects, larger changes to proportionately larger effects. If I nudge the accelerator pedal a little closer to the floor, the vehicle moves a little faster. If I press the pedal hard to the floor, it moves a lot faster. As machines go, computers are very different.
A program is, as a mechanism, totally different from all the familiar analogue devices we grew up with. Like all digitally encoded information, it has, unavoidably, the uncomfortable property that the smallest possible perturbations -- i.e., changes of a single bit -- can have the most drastic consequences.[36]"
http://en.wikipedia.org/wiki/Avalanche_effect
Liberals will absolutely hate me. They like to pretend BIG-O is simple and we can forget efficiency. They love faggotry, not efficiency.
-----
Niggers think mine is homemade. Ironic. No, it will be the envy of all the good programmers. A compiler cannot make this optimization -- only the programmer can make this optimization. It's a run-time value (more or less impossible to anticipate)
---
Fuck, man! the judges are niggers!
Don't embarass yourselves defending your weak position. It is almost never the case that SWITCH() is not integer and JMP table codable. You sound pathetic, unless you WANT to teach bad. Hash tables are mistaught.
I think I want to try, but given the current front-page status of this I think I will wait a week or so before emailing for my instructions.
I don't even know if I can manage to take this on...but we'll see :)
[1] http://idlewords.com/about.htm
[2] http://idlewords.com/
http://idlewords.com/2010/03/scott_and_scurvy.htm
[1]: http://idlewords.com/2012/02/bia%C5%82owie%C5%BCa_forest.htm
Love it.
How long am I likely to have to wait to receive them? It's been 5 hours so far
Again, I'm not meaning to be rude, I just want to know if I should set aside time to do them this evening, this weekend, or in a couple of weeks
We got an overwhelming response to this, which is awesome. Good news/bad news. Bad first: slight delay, while we change up the way we manage the email responses (we're pulling the emails into Mailgun, which is fantastic btw). The good news is we should have everyone squared away by the middle of this afternoon, and should be much more responsive moving forward.
We're really looking forward to watching people run through the challenges. We'll post aggregate stats when everything's done.
After reading this article though, I figured it would be safe to assume that I'll learn as I go through them.
Awesome work guys! Cant thank you enough!
I'm using this challenge to help me teach myself Python. As it turns out, it's a great language for these types of problems!