FPGARelated.com
Blogs

Mathematics and Cryptography

Mike December 14, 20151 comment

The mathematics of number theory and elliptic curves can take a life time to learn because they are very deep subjects.  As engineers we don't have time to earn PhD's in math along with all the things we have to learn just to make communications systems work.  However, a little learning can go a long way to helping make our communications systems secure - we don't need to know everything. The following articles are broken down into two realms, number theory and elliptic curves.  The number theory articles cover basic polynomial math over Galois Fields which are especially suited for digital electronics.  The elliptic curve articles cover the basics of how high level math can be used to create a secure key exchange between two computers on a network.

The left column covers number theory.  The first article is a gentle introduction to number theory. The basics are discussed in Polynomial Math which goes into a bit of detail.  A more FPGA friendly method is described in On Clock Cycle Polynomial Math. The Polynomial Inverse article describes an alternative method of computing an inverse shown in Polynomial Math which is also FPGA friendly.

The right column covers elliptic curve cryptography.  The first article is a general description and covers the core mathematical operations.  The second article describes more secure ways to exchange secret keys using public channels.  And the last article describes digital signatures which have many uses.

Number Theory

Elliptic Curve Cryptography

Number Theory for Codes Elliptic Curve Cryptography
Polynomial Math Elliptic Curve Key Exchange
One Clock Cycle Polynomial Math
Elliptic Curve Digital Signatures
Polynomial Inverse

When the time comes that you actually need to know any of this, you will be able to find a lot of books that cover number theory or elliptic curve mathematics.  There are a few that do both, and a great one to start with is "A Course in Number Theory and Cryptography" by Neal Koblitz. You will also find a lot of articles written in IEEE journals that focus on very specific problems and their solutions.  

Once you've implemented a few subroutines and gotten them to work, you will be on your way to being an expert.  The most important thing is to not be afraid to start.  The mathematics can seem daunting, but the reality is nothing more than AND, XOR and shift.  The translation from math to code is what makes engineering fun, especially when things actually work.  



[ - ]
Comment by drmikeDecember 22, 2015
That is $GF(2^4)$ x $GF(2^3)$. It is probably better to use hex notation for the $GF(2^4)$ elements rather than decimal index. So "15" is "0x7" and "3" is "0xE". Otherwise, very nice!!
Happy new year!

To post reply to a comment, click on the 'reply' button attached to each comment. To post a new comment (not a reply to a comment) check out the 'Write a Comment' tab at the top of the comments.

Please login (on the right) if you already have an account on this platform.

Otherwise, please use this form to register (free) an join one of the largest online community for Electrical/Embedded/DSP/FPGA/ML engineers: