I'm wondering what and where cryptographic functions are used in IOTA? Because from what I understand Tangle is mostly based on DAGs where the tips are chosen using MCMC algorithm which is bayesian type of algorithm. I don't see how cryptography is used in IOTA at all. The only place I can see it being used is for public and private key cryptography and for the PoW algorithm at the end of transaction validation schema. Is the PoW algorithm some kind of special one or is it also SHA family based?
As the whole implementation uses ternary arithmetic, it uses ternary algorithms.
For hashing there are three ternary algorithms in use or planned to be used:
- CURL-T (the original one) where weaknesses were found and therefore it is now only used for Proof of Work
- KERL, which is basically a ternary wrapper around Keccak (SHA-3) and which is used for all asymmetric key crypto
- Troika, which is currently being reviewed and tried to be broken, which is supposed to replace CURL-T and KERL once it has been proven "good enough" (estimated somewhen in 2020 or later)
For asymmetric cryptography, a "quantum-proof" one-time signature scheme is used; more precisely the Winternitz signature scheme. Which means you have to make sure never to receive funds to an address that has already been spent.
For signing multiple messages (currently only used for signing Coordinator milestones), the Merkle signature scheme is used (with a depth of 20, i. e. about one million signatures are possible before the Coordinator key needs to be replaced).