Dan Boneh
Professor of Computer Science and Electrical Engineering, Stanford University. Co-director of the Stanford Computer Security Lab, Ph.D. - Princeton.

Salvatore Stolfo
Professor of Computer Science, Columbia University. Ph.D. - NYU Courant Institute.

Ron Rivest
Professor of Electrical Engineering and Computer Science at MIT. Ph.D. Stanford.

Note: the following books are not recommended by Professor Rivest. They are books that have been used as reference texts in one/some courses he has taught.

Cryptography is the study of techniques for secure communication and the protection of information. It is a fundamental concept in computer science and engineering, and it is used to protect sensitive information from unauthorized access and to ensure the integrity of data. Cryptography is used in a wide range of applications, including data encryption, digital signature, and authentication.

One of the main branches of cryptography is symmetric-key cryptography, also known as secret key cryptography. In symmetric-key cryptography, the same key is used for both encryption and decryption. The key must be kept secret and secure, as anyone who has access to it can decrypt the data. Symmetric-key algorithms are fast and efficient but the key management can be a security risk.

Another branch of cryptography is public-key cryptography, also known as asymmetric-key cryptography. In public-key cryptography, a pair of keys is used, one for encryption and one for decryption. The encryption key is publicly available, while the decryption key is kept secret. Public-key algorithms are slower than symmetric-key algorithms, but they provide a secure method of exchanging keys and authenticating users.

One of the most widely used public-key algorithm is the RSA algorithm. RSA is a public-key algorithm that is based on the mathematical properties of large prime numbers. RSA is widely used for secure data transmission, such as in internet protocols like HTTPS and SSH.

Another important concept in cryptography is message integrity, which is the ability to detect whether a message has been tampered with during transmission. Hash functions, such as SHA-256, are commonly used for message integrity. Hash functions take an input (or “message”) and produce a fixed-size string of characters, called a “hash.” If the input is changed, the resulting hash will also be different, allowing the recipient to detect tampering.

Cryptography also deals with the concept of digital signature, which is a way to ensure the authenticity and integrity of a digital message or document. Digital signature schemes use the concepts of public-key cryptography to provide a way for a sender to sign a message, and for a recipient to verify the signature.

In conclusion, cryptography plays a critical role in computer science and engineering, providing the necessary tools to ensure the security and integrity of data. Cryptography is used in a wide range of applications, from data encryption and digital signature to authentication. The field of cryptography is constantly evolving, as new security threats and technologies emerge, and it is crucial to keep up with the latest developments in order to ensure the security of sensitive information.