Sea of Signature Schemes
The full article was originally published by HelloIOTA. Read the full article here.
Cryptocurrency includes the word “crypto” because it uses cryptographic functions to sign and secure transactions.
As we’ll be doing throughout this piece, let’s defer to a security source for a brief explanation of hash functions: “A cryptographic hash function is an algorithm that takes an arbitrary amount of data input, a credential, and produces a fixed-size output of enciphered text called a hash value, or just ‘hash.’ That enciphered text can then be stored instead of the password itself, and later used to verify the user.”
And now an easy depiction and explanation of a private key signing from Wikipedia:
Alice signs a message—”Hello Bob!”—by appending to the original message a version encrypted with her private key. Bob receives both the message and signature. He uses Alice’s public key to verify the authenticity of the message, i.e. that the message, decrypted using the public key, exactly matches the original message.
Scrolling through a list of hash functions, it quickly becomes apparent that there are a bunch of functions, and it doesn’t make things easier when the naming conventions are this foreign to non-cryptographers. In the class of unkeyed cryptographic hash functions are families like BLAKE, MD, RIPEMD, and SHA. Within SHA are SHA-1, SHA-224, SHA-256, SHA-384, SHA-512, and SHA-3. BLAKE is a similar story with BLAKE-256, BLAKE-512, BLAKE2s, and so on. Other classes like the keyed cryptographic hash functions include names like HMAC and KMAC. Checksums and universal hash function families are two other prominent classes. And that’s only the surface layer. Picking out a few of the hash functions and digging deeper reveals names like “quasigroup operation”, “Keccak”, “HAIFA structure”, and “Merkle–Damgård construction”. With all of this lingo, it might be easier to understand with simple visuals. Here’s what a SHA-256 looks like: