Understanding ECDSA
47 points
3 hours ago
| 3 comments
| avidthinker.github.io
| HN
This article is basically an exercise in understanding ECDSA (Elliptic Curve Digital Signature Algorithm) from scratch. All I assume is some basic math and a willingness to pick up a bit of abstract math along the way. I try to explain everything as intuitively as possible, but, despite that, the article still demands some serious effort from the reader.

When I analyzed the Extended Euclidean Algorithm, one thing led to another, and I ended up writing a little intro to generating functions. You can even jump to that part and ignore the rest, if you want! Other readers may instead choose to skip that section altogether, as it's self-contained.

mkornaukhov
25 minutes ago
[-]
I've recently understood how RSA works and thought it was a cool achievement. But this article with "basic" math... Not so enjoyable for just a dev =)
reply
NetMageSCW
2 hours ago
[-]
The article would be a lot better if it was what it said on the tin, instead of being filled with lots of unnecessary (as described in the article) digressions. If you couldn’t restrain yourself to sticking to the subject, at least put the digressions behind links or footnotes or pop-ups where they don’t detract from reading about the actual claimed intended subject.
reply
joezydeco
3 hours ago
[-]
Your definition of "basic math" greatly differs from mine...
reply
j16sdiz
2 hours ago
[-]
> abstract algebra is not a requirement.

and talks about fields and groups

reply
mrkeen
19 minutes ago
[-]
They're just spooky names for simple concepts - and the article defines them on first use. If abstract algebra were a requirement, they'd skip these definitions.

Paraphrasing 'Group' from the article to see if I've understood it:

A set of elements G, and some operation ⊕, where

  (g1 ⊕ g2) is also in G. // "Type-safety"

  Some g0 exists such that (gn ⊕ g0) == (g0 ⊕ gn) == gn // "Zero"

  For every g, there's some inverse gi such that (g ⊕ gi) == (gi ⊕ g) == g0 // "Cancelling-out"

  a ⊕ (b ⊕ c) == (a ⊕ b) ⊕ c // "Associative"

  If (a ⊕ b) == (b ⊕ a) then the group is also "abelian/commutative"
reply