# Learning elliptic curve cryptography for specific application

I would like to develop a protocol for specific purpose. This protocol will utilize asymmetric cryptography in which one private key can be paired with numerous public keys: messages encrypted with any of those public keys can be decrypted by that one private key.

That seems to be feasible with elliptic cryptography as per this question and answer.

The obstacle is that, although I am a software engineer, I currently cannot just implement that solution because I do not thoroughly understand it. I do have a basic idea of how asymmetric cryptography works in say SSH and HTTPS. But, in the linked question, all those formulas, equations, expressions and the specific use of verbs "define", "broadcast" etc. make very little sense to me.

Assuming no issues with self-education and tenacity, what would be the quickest pathway to learn the knowledge I need? How to avoid studying branches of cryptography not necessary for what I want to implement? Which resources should I start digging through?

• Hello there! What's your background in number theory? The difficulty I see is that you envision a project that involves upfront several topics which need to be learned prior to --as well as beyond-- getting into elliptic curve. But terms such as broadcast have the same meaning as elsewhere (e.g., IT & communications). You broadcast a public key (and in other contexts an address in lieu of, and derived from, the public key) so that anyone knows where to transmit information to you. Commented Aug 15, 2019 at 14:49
• @IñakiViggers Never studied number theory seriously. If it is one of the prerequisites for cryptography — happy to start with it. Commented Aug 15, 2019 at 15:20
• Number theory and discrete math / group theory is generally thought to be one of the prerequisites, yes. But please expect a relatively large learning curve in case you start from basic high school math... Commented Aug 15, 2019 at 18:27
• Are you sure you need to spend a few years learning cryptography and how to implement it without making fatal mistakes? Maybe you should use an existing library, such as libsodium, or an existing protocol (or protocol framework), such as NOISE? If you had asked this question on security.SE instead of here, the answer you would have received would have either been DO NOT ROLL YOUR OWN CRYPTO! or DO NOT BE A DAVE!. Commented Aug 16, 2019 at 11:45
• No, the question that @A. Hersean rised are not addressed there at all. Commented Aug 17, 2019 at 4:05

Consider this an oversimplified, though hopefully useful outline of the path to take.

Proficiency in calculations modulo n is a must. That includes results such as Lagrange's theorem, exponentiation, the Extended Euclidean algorithm, and quadratic residues (most likely I am missing some important items here). The essential concepts from group theory are largely embedded in this stage.

Besides its usefulness elsewhere (or I should say everywhere in asymmetric cryptography), a knowledge of the aforementioned items will put you at the right place for understanding the Discrete Logarithm Problem (DLP). The DLP epitomizes the impracticality of searching for, or computing, the discrete logarithm. This is important to understand because the safety of elliptic curves (EC) is premised on that computational impracticality.

A concise, introductory definition of elliptic curves is here. My first exposure to EC was pages 60-64 of Mastering Bitcoin, by Andreas M. Antonopoulos, but there is plenty of alternative resources that cover everything I've mentioned hitherto.

Upon learning about the DLP, textbooks cover El Gamal cryptosystem. Understanding this topic is relevant to EC because of the analogies between the idea behind El Gamal and the digital signing of messages (for instance, as used in Bitcoin).

Hash functions, AES, and key exchange protocols are further topics that oftentimes are combined with --or on top of-- EC but without being part of EC itself.

Note that nowhere have I mentioned RSA, factorization algorithms/heuristics, or the Pohlig-Hellman algorithm, since I am mindful that you are interested only in the requisites for dealing with EC.

To make this answer more self-contained, I will repeat my comment that other concepts you read in the answer to which you linked are similar to any context from telecommunications. For instance, the notion of broadcasting refers to divulging certain information --such as your address or public key-- that will let any counterparty know where to send you a message that only you can read/decrypt (by means of your private key). Boradcasting means no other thing in cryptography.

• Very useful, thank you. Will see if more answers come along before accepting. Commented Aug 16, 2019 at 12:26