This is pretty good. You can probably skip to the &quot;Strange Symmetry&quot; section and read from there.<p>Learning about elliptic curves made a lot of abstract algebra click for me, in ways it hadn&#x27;t when I was just working with multiplicative groups for RSA and the like. That in turn made a lot of linear algebra make sense for me.<p>The right place to start with elliptic curves with with standard Diffie Hellman, which you can nail down in 10 minutes with in a Ruby or Python REPL. The first part of this old blog post has a step-by-step:<p><a href="http:&#x2F;&#x2F;www.securityfocus.com&#x2F;blogs&#x2F;267" rel="nofollow">http:&#x2F;&#x2F;www.securityfocus.com&#x2F;blogs&#x2F;267</a><p>When you get a feel for how DH works with simple multiplicative groups, to get to elliptic curve, you can just sort of abstract DH out from &quot;numbers modulo a prime&quot; to &quot;things that behave like numbers modulo a prime&quot;. Think of both residues mod-p and points on a elliptic curve mod-p as subclasses of a parent class with an abstract method like &quot;multiply&quot;. As long as you have an object with a compatible interface, you can theoretically do DH on it (though not necessarily securely).<p>So for ECDH, instead of raising a generator number to a secret power and sharing the residue, we multiply an pre-agreed, standardized curve point by a secret scalar number and share the resulting point.<p>Another thing I found relieving when I was first learning ECC was to be reminded that most implementors don&#x27;t write ECC point multiplication from first principles. There are cheat sheets, like the Explicit Formulas Database, where people have already worked out the fastest way to perform basic operations on curves:<p><a href="https:&#x2F;&#x2F;hyperelliptic.org&#x2F;EFD&#x2F;" rel="nofollow">https:&#x2F;&#x2F;hyperelliptic.org&#x2F;EFD&#x2F;</a><p>For instance, here&#x27;s the addition and doubling formulas for points on Montgomery curves:<p><a href="https:&#x2F;&#x2F;hyperelliptic.org&#x2F;EFD&#x2F;g1p&#x2F;auto-montgom.html" rel="nofollow">https:&#x2F;&#x2F;hyperelliptic.org&#x2F;EFD&#x2F;g1p&#x2F;auto-montgom.html</a><p>The reason ECC keys are shorter than RSA and DH keys is that there are techniques, most notably index calculus, that can solve problems on simple finite field multiplicative groups but can&#x27;t effectively solve them with curve points.† That&#x27;s why we use elliptic curves, of all things, in cryptography: they&#x27;re a mathematical object that be coaxed into behaving like simple multiplicative groups, for the purposes of Diffie Hellman and Schnorr signatures, that resist a set of mathematical techniques that are driving key sizes for RSA and DSA up.<p>Adam Langley wrote my favorite intro to curves, here:<p><a href="https:&#x2F;&#x2F;www.imperialviolet.org&#x2F;2010&#x2F;12&#x2F;04&#x2F;ecc.html" rel="nofollow">https:&#x2F;&#x2F;www.imperialviolet.org&#x2F;2010&#x2F;12&#x2F;04&#x2F;ecc.html</a><p>There&#x27;s a little bit of material that you might want to pull from Nick Sullivan&#x27;s post into this, to have the best possible curve explanation. Both things are worth reading.<p>† <i>There are also tricky attacks against some curve structures that attempt to reframe problems against the underlying finite field of the curve.</i>