6 Basic cryptography techniques for SSI


Brent Zundel and Sajida Zouarhi

    Cryptography is the fuel that powers all of self-sovereign identity (SSI). The goal of this chapter is to help you be conversant in the basic building blocks of cryptography: hash functions, encryption, digital signatures, verifiable data structures, and proofs, as well as common patterns for how they are combined to create the cryptographic magic SSI delivers. Cryptography as a topic is too broad and complex to summarize in a few pages. We intend this chapter to be a reference and a refresher for those readers who understand the basic cryptographic techniques explained here and an index of what may be studied in more depth for those who have had less exposure to cryptography. Your guides will be two technical cryptographers with direct experience in the SSI space: Brent Zundel, senior cryptography engineer at Evernym, and Sajida Zouarhi, engineer and researcher with ConsenSys. Brent also serves as co-chair of the W3C Decentralized Identifier Working Group that is producing the DID standard (the subject of chapter 8).

    6.1 Hash functions

    6.1.1 Types of hash functions

    6.1.2 Using hash functions in SSI

    6.2 Encryption

    6.2.1 Symmetric-key cryptography

    6.2.2 Asymmetric-key cryptography

    6.3 Digital signatures

    6.4 Verifiable data structures

    6.4.1 Cryptographic accumulators

    6.4.2 Merkle trees

    6.4.3 Patricia tries

    6.4.4 Merkle-Patricia trie: A hybrid approach

    6.5 Proofs

    6.5.1 Zero-knowledge proofs

    6.5.2 ZKP applications for SSI