Hacker News new | ask | show | jobs
by coldpie 4484 days ago
Just as a specific example, I had this experience with Bayes' Theorem <http://en.wikipedia.org/wiki/Bayes%27_theorem>. As an informal paper for my computer security class, we used Bayes' theorem to implement aimbot detection in a simple FPS. It sounds like a big, complicated theorem with a special name that some genius had to come up with and has complicated notation involving probabilities and logic symbols.

And then it's basically (paraphrasing with reckless abandon) just the probably of your event divided by the total probability space. Lots of words and jargon and theory given in countless papers and articles, and it pretty much just boils down to intuitive addition, multiplication, and division.

And our aimbot detector actually worked pretty damn well! Just gather some data points to determine probabilities, plug them into the simple formula, and it was always correct in our test cases.

3 comments

"and it pretty much just boils down to intuitive addition, multiplication, and division."

Or does it? After all, probability is one of the very first mathematical tools to be divised, but a rigorous theoretical underpinning for probability and statistics had to wait until measure theory, millenia later. And this was not for want of trying.

Part of what makes things "boil down" to the simple and intuitive is years of hard work. Reading Newtons original work on the calculus is painful and convoluted, it took many hands to polish it to the point you might have seen it in.

If we've done our jobs well as mathematicians, eventually the essence of an idea will be easy to understand an apply. If you really want to understand it though, you may have to dig into some much deeper work. And often, as with many thing is in mathematics, human intuition will just tend to be wrong about it (e.g. the Monty Hall problem).

It's the same with the crypto we rely on. There are some quite complex mathematical underpinnings for the primitives, but once understand their properties all the common protocols are actually incredibly trivial. DSA and various other iconic crypto protocols are just linear algebra using these new mathematical primitives. The complexity is about the same as using hash functions to build hash tables. Making protocols secure is actually mostly an implementation challenge (as it is with hash tables), and keeping systems secure, pragmatically, is about key management and social challenges.

I was incredibly proud when I noticed, just through algebraic manipulation, without reading it anywhere first, that you should be able to extract the public key used to create an an ECDSA signature. Schnorr signatures don't have this property. This is kind of sad in a way becaue it's trivial, but you have no know how the primitive functions and the difference between a field and a group.

Thanks. I reported this bug nearly two years ago :)

https://news.ycombinator.com/item?id=4112327