This chapter covers:
- The difference between authenticating people and data.
- User authentication, protocols to authenticate users based on passwords or keys.
- User-aided authentication, protocols to secure connections between devices thanks to human help.
In the introduction of this book, I boiled cryptography down to two concepts: confidentiality and authentication. In real-world applications, confidentiality is (usually) the least of your problems; authentication is where most of the complexity arises. I know I’ve already talked a lot about authentication throughout this book, but it can be a confusing concept as it is used with different meanings in cryptography. For this reason, this chapter starts with an introduction of what authentication really is about.
As usual with cryptography, no protocol is a panacea, and the rest of the chapter will teach you a large number of authentication protocols that are used in real-world applications.
By now, you have heard of authentication many times, so let’s recap. You’ve seen:
- authentication in cryptographic primitives like message authentication codes (covered in chapter 3) and authenticated encryption (covered in chapter 4)
- authentication in cryptographic protocols like TLS (covered in chapter 9) and Signal (covered in chapter 10) where one or more participants of a protocol can be authenticated.