First of all I want to stress the fact that I am not a cryptographer, I wish to become one in the future though. What you will read below are my assumptions and the really quick research I have made (you may have read somewhere that in order to learn something you have to write it down…).
With that out of the way, let’s get started.
When reading a book on cryptography, you may encounter the term cryptographic primitives, but most of the time, at least in the ones that I have read there is no specific or formal definition for it.
Knowing that cryptography has a strong mathematical background, I thought that the term may have carried over from it. However, looking at the definitions outlined by Wikipedia for Primitive under the Mathematics category, you can see that there are different kinds of primitives and that they are very heterogeneous in nature.
On the other hand, if you look at the defitions of primitives under the Computing category, you will see that the following words are a common denominator: ‘the simplest…’
So cryptographic primitives are the simplest, low-level cryptographic algorithms that are used to build cryptographic protocols (I know, taken directly from Wikipedia…)
Therefore thinking of them like that actually simplifies things in the already complex world of cryptography.
And for completeness, here you have the most common cryptographic primitives:
- One-way hash function, sometimes also called as one-way compression function—compute a reduced hash value for a message (e.g., SHA-256)
- Symmetric key cryptography—compute a ciphertext decodable with the same key used to encode (e.g., AES)
- Public key cryptography—compute a ciphertext decodable with a different key used to encode (e.g., RSA)
- Digital signatures—confirm the author of a message
- Mix network—pool communications from many users to anonymize what came from whom
- Private information retrieval—get database information without server knowing which item was requested
- Commitment scheme—allows one to commit to a chosen value while keeping it hidden to others, with the ability to reveal it later
- Cryptographically secure pseudorandom number generator
Now go encrypt/decrypt something!
Update (02/20/2018): The book A Handbook of Applied Cryptography probably has the best treatment of what cryptographic primitives are.
If you would like to make any clarifications please leave them in the comments below. 🙂