This document discusses message authentication and the different functions that can be used for message authentication: message encryption, hash functions, and message authentication codes (MACs). It outlines the security requirements for message authentication and describes how symmetric and public-key encryption, hash functions, and MACs can provide authentication. It provides details on how MACs work and their properties. It also discusses hash functions and how they are used for message integrity checks, message authentication codes, and digital signatures.