<p><strong>Chapter 1</strong> Introduction</p> <p>1.1 Opinions, Products</p> <p>1.2 Roadmap to the Book</p> <p>1.3 Terminology</p> <p>1.4 Notation</p> <p>1.5 Cryptographically Protected Sessions</p> <p>1.6 Active and Passive Attacks</p> <p>1.7 Legal Issues</p> <p> 1.7.1 Patents</p> <p> 1.7.2 Government Regulations</p> <p>1.8 Some Network Basics</p> <p> 1.8.1 Network Layers</p> <p> 1.8.2 TCP and UDP Ports</p> <p> 1.8.3 DNS (Domain Name System)</p> <p> 1.8.4 HTTP and URLs</p> <p> 1.8.5 Web Cookies</p> <p>1.9 Names for Humans</p> <p>1.10 Authentication and Authorization</p> <p> 1.10.1 ACL (Access Control List)</p> <p> 1.10.2 Central Administration/Capabilities</p> <p> 1.10.3 Groups</p> <p> 1.10.4 Cross-Organizational and Nested Groups</p> <p> 1.10.5 Roles</p> <p>1.11 Malware: Viruses, Worms, Trojan Horses</p> <p> 1.11.1 Where Does Malware Come From?</p> <p> 1.11.2 Virus Checkers</p> <p>1.12 Security Gateway</p> <p> 1.12.1 Firewall</p> <p> 1.12.2 Application-Level Gateway/Proxy</p> <p> 1.12.3 Secure Tunnels</p> <p> 1.12.4 Why Firewalls Don't Work</p> <p>1.13 Denial-of-Service (DoS) Attacks</p> <p>1.14 NAT (Network Address Translation)</p> <p> 1.14.1 Summary</p> <p><strong>Chapter 2</strong> Introduction to Cryptography</p> <p>2.1 Introduction</p> <p> 2.1.1 The Fundamental Tenet of Cryptography</p> <p> 2.1.2 Keys</p> <p> 2.1.3 Computational Difficulty</p> <p> 2.1.4 To Publish or Not to Publish</p> <p> 2.1.5 Earliest Encryption</p> <p> 2.1.6 One-Time Pad (OTP)</p> <p>2.2 Secret Key Cryptography</p> <p> 2.2.1 Transmitting Over an Insecure Channel</p> <p> 2.2.2 Secure Storage on Insecure Media</p> <p> 2.2.3 Authentication</p> <p> 2.2.4 Integrity Check</p> <p>2.3 Public Key Cryptography</p> <p> 2.3.1 Transmitting Over an Insecure Channel</p> <p> 2.3.2 Secure Storage on Insecure Media</p> <p> 2.3.3 Authentication</p> <p> 2.3.4 Digital Signatures</p> <p>2.4 Hash Algorithms</p> <p> 2.4.1 Password Hashing</p> <p> 2.4.2 Message Integrity</p> <p> 2.4.3 Message Fingerprint</p> <p> 2.4.4 Efficient Digital Signatures</p> <p>2.5 Breaking an Encryption Scheme</p> <p> 2.5.1 Ciphertext Only</p> <p> 2.5.2 Known Plaintext</p> <p> 2.5.3 Chosen Plaintext</p> <p> 2.5.4 Chosen Ciphertext</p> <p> 2.5.5 Side-Channel Attacks</p> <p>2.6 Random Numbers</p> <p> 2.6.1 Gathering Entropy</p> <p> 2.6.2 Generating Random Seeds</p> <p> 2.6.3 Calculating a Pseudorandom Stream from the Seed</p> <p> 2.6.4 Periodic Reseeding</p> <p> 2.6.5 Types of Random Numbers</p> <p> 2.6.6 Noteworthy Mistakes</p> <p>2.7 Numbers</p> <p> 2.7.1 Finite Fields</p> <p> 2.7.2 Exponentiation</p> <p> 2.7.3 Avoiding a Side-Channel Attack</p> <p> 2.7.4 Types of Elements used in Cryptography</p> <p> 2.7.5 Euclidean Algorithm</p> <p> 2.7.6 Chinese Remainder Theorem</p> <p>2.8 Homework</p> <p><strong>Chapter 3</strong> Secret Key Cryptography</p> <p>3.1 Introduction</p> <p>3.2 Generic Block Cipher Issues</p> <p> 3.2.1 Blocksize, Keysize</p> <p> 3.2.2 Completely General Mapping</p> <p> 3.2.3 Looking Random</p> <p>3.3 Constructing a Practical Block Cipher</p> <p> 3.3.1 Per-Round Keys</p> <p> 3.3.2 S-boxes and Bit Shuffles</p> <p> 3.3.3 Feistel Ciphers</p> <p>3.4 Choosing Constants</p> <p>3.5 Data Encryption Standard (DES)</p> <p> 3.5.1 DES Overview</p> <p> 3.5.2 The Mangler Function</p> <p> 3.5.3 Undesirable Symmetries</p> <p> 3.5.4 What's So Special About DES?</p> <p>3.6 3DES (Multiple Encryption DES)</p> <p> 3.6.1 How Many Encryptions?</p> <p> 3.6.1.1 Encrypting Twice with the Same Key</p> <p> 3.6.1.2 Encrypting Twice with Two Keys</p> <p> 3.6.1.3 Triple Encryption with Only Two Keys</p> <p>3.6.2 Why EDE Rather Than EEE?</p> <p>3.7 Advanced Encryption Standard (AES)</p> <p> 3.7.1 Origins of AES</p> <p> 3.7.2 Broad Overview</p> <p> 3.7.3 AES Overview</p> <p> 3.7.4 Key Expansion</p> <p> 3.7.5 Inverse Rounds</p> <p> 3.7.6 Software Implementations of AES</p> <p>3.8 RC4</p> <p>3.9 Homework</p> <p><strong>Chapter 4</strong> Modes of Operation</p> <p>4.1 Introduction</p> <p>4.2 Encrypting a Large Message</p> <p> 4.2.1 ECB (Electronic Code Book)</p> <p> 4.2.2 CBC (Cipher Block Chaining)</p> <p> 4.2.2.1 Randomized ECB</p> <p> 4.2.2.2 CBC</p> <p> 4.2.2.3 CBC Threat—Modifying Ciphertext Blocks</p> <p> 4.2.3 CTR (Counter Mode)</p> <p> 4.2.3.1 Choosing IVs for CTR Mode</p> <p> 4.2.4 XEX (XOR Encrypt XOR)</p> <p> 4.2.5 XTS (XEX with Ciphertext Stealing)</p> <p>4.3 Generating MACs</p> <p> 4.3.1 CBC-MAC</p> <p> 4.3.1.1 CBC Forgery Attack</p> <p> 4.3.2 CMAC</p> <p> 4.3.3 GMAC</p> <p> 4.3.3.1 GHASH</p> <p> 4.3.3.2 Transforming GHASH into GMAC</p> <p>4.4 Ensuring Privacy and Integrity Together</p> <p> 4.4.1 CCM (Counter with CBC-MAC)</p> <p> 4.4.2 GCM (Galois/Counter Mode)</p> <p>4.5 Performance Issues</p> <p>4.6 Homework</p> <p><strong>Chapter 5</strong> Cryptographic Hashes</p> <p>5.1 Introduction</p> <p>5.2 The Birthday Problem</p> <p>5.3 A Brief History of Hash Functions</p> <p>5.4 Nifty Things to Do with a Hash</p> <p> 5.4.1 Digital Signatures</p> <p> 5.4.2 Password Database</p> <p> 5.4.3 Secure Shorthand of Larger Piece of Data</p> <p> 5.4.4 Hash Chains</p> <p> 5.4.5 Blockchain</p> <p> 5.4.6 Puzzles</p> <p> 5.4.7 Bit Commitment</p> <p> 5.4.8 Hash Trees</p> <p> 5.4.9 Authentication</p> <p> 5.4.10 Computing a MAC with a Hash</p> <p> 5.4.11 HMAC</p> <p> 5.4.12 Encryption with a Secret and a Hash Algorithm</p> <p>5.5 Creating a Hash Using a Block Cipher</p> <p>5.6 Construction of Hash Functions</p> <p> 5.6.1 Construction of MD4, MD5, SHA-1 and SHA-2</p> <p> 5.6.2 Construction of SHA-3</p> <p>5.7 Padding</p> <p> 5.7.1 MD4, MD5, SHA-1, and SHA2-256 Message Padding</p> <p> 5.7.2 SHA-3 Padding Rule</p> <p>5.8 The Internal Encryption Algorithms</p> <p> 5.8.1 SHA-1 Internal Encryption Algorithm</p> <p> 5.8.2 SHA-2 Internal Encryption Algorithm</p> <p>5.9 SHA-3 f Function (Also Known as KECCAK-f)</p> <p>5.10 Homework</p> <p><strong>Chapter 6</strong> First-Generation Public Key Algorithms</p> <p>6.1 Introduction</p> <p>6.2 Modular Arithmetic</p> <p> 6.2.1 Modular Addition</p> <p> 6.2.2 Modular Multiplication</p> <p> 6.2.3 Modular Exponentiation</p> <p> 6.2.4 Fermat's Theorem and Euler's Theorem</p> <p>6.3 RSA</p> <p> 6.3.1 RSA Algorithm</p> <p> 6.3.2 Why Does RSA Work?</p> <p> 6.3.3 Why Is RSA Secure?</p> <p> 6.3.4 How Efficient Are the RSA Operations?</p> <p> 6.3.4.1 Exponentiating with Big Numbers</p> <p> 6.3.4.2 Generating RSA Keys</p> <p> 6.3.4.3 Why a Non-Prime Has Multiple Square Roots of One</p> <p> 6.3.4.4 Having a Small Constant e</p> <p> 6.3.4.5 Optimizing RSA Private Key Operations</p> <p> 6.3.5 Arcane RSA Threats</p> <p> 6.3.5.1 Smooth Numbers</p> <p> 6.3.5.2 The Cube Root Problem</p> <p> 6.3.6 Public-Key Cryptography Standard (PKCS)</p> <p> 6.3.6.1 Encryption</p> <p> 6.3.6.2 The Million-Message Attack</p> <p> 6.3.6.3 Signing</p> <p>6.4 Diffie-Hellman</p> <p> 6.4.1 MITM (Meddler-in-the-Middle) Attack</p> <p> 6.4.2 Defenses Against MITM Attack</p> <p> 6.4.3 Safe Primes and the Small-Subgroup Attack</p> <p> 6.4.4 ElGamal Signatures</p> <p>6.5 Digital Signature Algorithm (DSA)</p> <p> 6.5.1 The DSA Algorithm</p> <p> 6.5.2 Why Is This Secure?</p> <p> 6.5.3 Per-Message Secret Number</p> <p>6.6 How Secure Are RSA and Diffie-Hellman?</p> <p>6.7 Elliptic Curve Cryptography (ECC)</p> <p> 6.7.1 Elliptic Curve Diffie-Hellman (ECDH)</p> <p> 6.7.2 Elliptic Curve Digital Signature Algorithm (ECDSA)</p> <p>6.8 Homework</p> <p><strong>Chapter 7</strong> Quantum Computing</p> <p>7.1 What Is a Quantum Computer?</p> <p> 7.1.1 A Preview of the Conclusions</p> <p> 7.1.2 First, What Is a Classical Computer?</p> <p> 7.1.3 Qubits and Superposition</p> <p> 7.1.3.1 Example of a Qubit</p> <p> 7.1.3.2 Multi-Qubit States and Entanglement</p> <p> 7.1.4 States and Gates as Vectors and Matrices</p> <p> 7.1.5 Becoming Superposed and Entangled</p> <p> 7.1.6 Linearity</p> <p> 7.1.6.1 No Cloning Theorem</p> <p> 7.1.7 Operating on Entangled Qubits</p> <p> 7.1.8 Unitarity</p> <p> 7.1.9 Doing Irreversible Operations by Measurement</p> <p> 7.1.10 Making Irreversible Classical Operations Reversible</p> <p> 7.1.11 Universal Gate Sets</p> <p>7.2 Grover's Algorithm</p> <p> 7.2.1 Geometric Description</p> <p> 7.2.2 How to Negate the Amplitude of |k⟩</p> <p> 7.2.3 How to Reflect All the Amplitudes Across the Mean</p> <p> 7.2.4 Parallelizing Grover's Algorithm</p> <p>7.3 Shor's Algorithm</p> <p> 7.3.1 Why Exponentiation mod n Is a Periodic Function</p> <p> 7.3.2 How Finding the Period of ax mod n Lets You Factor n</p> <p> 7.3.3 Overview of Shor's Algorithm</p> <p> 7.3.4 Converting to the Frequency Graph—Introduction</p> <p> 7.3.5 The Mechanics of Converting to the Frequency Graph</p> <p> 7.3.6 Calculating the Period</p> <p> 7.3.7 Quantum Fourier Transform</p> <p>7.4 Quantum Key Distribution (QKD)</p> <p> 7.4.1 Why It's Sometimes Called Quantum Encryption</p> <p> 7.4.2 Is Quantum Key Distribution Important?</p> <p>7.5 How Hard Are Quantum Computers to Build?</p> <p>7.6 Quantum Error Correction</p> <p>7.7 Homework</p> <p><strong>Chapter 8</strong> Post-Quantum Cryptography</p> <p>8.1 Signature and/or Encryption Schemes</p> <p> 8.1.1 NIST Criteria for Security Levels</p> <p> 8.1.2 Authentication</p> <p> 8.1.3 Defense Against Dishonest Ciphertext</p> <p>8.2 Hash-based Signatures</p> <p> 8.2.1 Simplest Scheme – Signing a Single Bit</p> <p> 8.2.2 Signing an Arbitrary-sized Message</p> <p> 8.2.3 Signing Lots of Messages</p> <p> 8.2.4 Deterministic Tree Generation</p> <p> 8.2.5 Short Hashes</p> <p> 8.2.6 Hash Chains</p> <p> 8.2.7 Standardized Schemes</p> <p> 8.2.7.1 Stateless Schemes</p> <p>8.3 Lattice-Based Cryptography</p> <p> 8.3.1 A Lattice Problem</p> <p> 8.3.2 Optimization: Matrices with Structure</p> <p> 8.3.3 NTRU-Encryption Family of Lattice Encryption Schemes</p> <p> 8.3.3.1 Bob Computes a (Public, Private) Key Pair</p> <p> 8.3.3.2 How Bob Decrypts to Find m </p> <p> 8.3.3.3 How Does this Relate to Lattices?</p> <p> 8.3.4 Lattice-Based Signatures</p> <p> 8.3.4.1 Basic Idea</p> <p> 8.3.4.2 Insecure Scheme</p> <p> 8.3.4.3 Fixing the Scheme</p> <p> 8.3.5 Learning with Errors (LWE)</p> <p> 8.3.5.1 LWE Optimizations</p> <p> 8.3.5.2 LWE-based NIST Submissions</p> <p>8.4 Code-based Schemes</p> <p> 8.4.1 Non-cryptographic Error-correcting Codes</p> <p> 8.4.1.1 Invention Step</p> <p> 8.4.1.2 Codeword Creation Step</p> <p> 8.4.1.3 Misfortune Step</p> <p> 8.4.1.4 Diagnosis Step</p> <p> 8.4.2 The Parity-Check Matrix</p> <p> 8.4.3 Cryptographic Public Key Code-based Scheme</p> <p> 8.4.3.1 Neiderreiter Optimization</p> <p> 8.4.3.2 Generating a Public Key Pair</p> <p> 8.4.3.3 Using Circulant Matrices</p> <p>8.5 Multivariate Cryptography</p> <p> 8.5.1 Solving Linear Equations</p> <p> 8.5.2 Quadratic Polynomials</p> <p> 8.5.3 Polynomial Systems</p> <p> 8.5.4 Multivariate Signature Systems</p> <p> 8.5.4.1 Multivariate Public Key Signatures</p> <p>8.6 Homework</p> <p><strong>Chapter 9</strong> Authentication of People</p> <p>9.1 Password-based Authentication</p> <p> 9.1.1 Challenge-Response Based on Password</p> <p> 9.1.2 Verifying Passwords</p> <p>9.2 Address-based Authentication</p> <p> 9.2.1 Network Address Impersonation</p> <p>9.3 Biometrics</p> <p>9.4 Cryptographic Authentication Protocols</p> <p>9.5 Who Is Being Authenticated?</p> <p>9.6 Passwords as Cryptographic Keys</p> <p>9.7 On-Line Password Guessing</p> <p>9.8 Off-Line Password Guessing</p> <p>9.9 Using the Same Password in Multiple Places</p> <p>9.10 Requiring Frequent Password Changes</p> <p>9.11 Tricking Users into Divulging Passwords</p> <p>9.12 Lamport's Hash</p> <p>9.13 Password Managers</p> <p>9.14 Web Cookies</p> <p>9.15 Identity Providers (IDPs)</p> <p>9.16 Authentication Tokens</p> <p> 9.16.1 Disconnected Tokens</p> <p> 9.16.2 Public Key Tokens</p> <p>9.17 Strong Password Protocols</p> <p> 9.17.1 Subtle Details</p> <p> 9.17.2 Augmented Strong Password Protocols</p> <p> 9.17.3 SRP (Secure Remote Password)</p> <p>9.18 Credentials Download Protocols</p> <p>9.19 Homework</p> <p><strong>Chapter 10</strong> Trusted Intermediaries</p> <p>10.1 Introduction</p> <p>10.2 Functional Comparison</p> <p>10.3 Kerberos</p> <p> 10.3.1 KDC Introduces Alice to Bob</p> <p> 10.3.2 Alice Contacts Bob</p> <p> 10.3.3 Ticket Granting Ticket (TGT)</p> <p> 10.3.4 Interrealm Authentication</p> <p> 10.3.5 Making Password-Guessing Attacks Difficult</p> <p> 10.3.6 Double TGT Protocol</p> <p> 10.3.7 Authorization Information</p> <p> 10.3.8 Delegation</p> <p>10.4 PKI</p> <p> 10.4.1 Some Terminology</p> <p> 10.4.2 Names in Certificates</p> <p>10.5 Website Gets a DNS Name and Certificate</p> <p>10.6 PKI Trust Models</p> <p> 10.6.1 Monopoly Model</p> <p> 10.6.2 Monopoly plus Registration Authorities (RAs)</p> <p> 10.6.3 Delegated CAs</p> <p> 10.6.4 Oligarchy</p> <p> 10.6.5 Anarchy Model</p> <p> 10.6.6 Name Constraints</p> <p> 10.6.7 Top-Down with Name Constraints</p> <p> 10.6.8 Multiple CAs for Any Namespace Node</p> <p> 10.6.9 Bottom-Up with Name Constraints</p> <p> 10.6.9.1 Functionality of Up-Links</p> <p> 10.6.9.2 Functionality of Cross-Links</p> <p> 10.6.10 Name Constraints in PKIX Certificates</p> <p>10.7 Building Certificate Chains</p> <p>10.8 Revocation</p> <p> 10.8.1 CRL (Certificate Revocation list</p> <p> 10.8.2 Online Certificate Status Protocol (OCSP)</p> <p> 10.8.3 Good-Lists vs. Bad-Lists</p> <p>10.9 Other Information in a PKIX Certificate</p> <p>10.10 Issues with Expired Certificates</p> <p>10.11 DNSSEC (DNS Security Extensions)</p> <p>10.12 Homework</p> <p><strong>Chapter 11</strong> Communication Session Establishment</p> <p>11.1 One-way Authentication of Alice</p> <p> 11.1.1 Timestamps vs. Challenges</p> <p> 11.1.2 One-Way Authentication of Alice using a Public Key</p> <p>11.2 Mutual Authentication</p> <p> 11.2.1 Reflection Attack</p> <p> 11.2.2 Timestamps for Mutual Authentication</p> <p>11.3 Integrity/Encryption for Data</p> <p> 11.3.1 Session Key Based on Shared Secret Credentials</p> <p> 11.3.2 Session Key Based on Public Key Credentials</p> <p> 11.3.3 Session Key Based on One-Party Public Keys</p> <p>11.4 Nonce Types</p> <p>11.5 Intentional MITM</p> <p>11.6 Detecting MITM</p> <p>11.7 What Layer?</p> <p>11.8 Perfect Forward Secrecy</p> <p>11.9 Preventing Forged Source Addresses</p> <p> 11.9.1 Allowing Bob to Be Stateless in TCP</p> <p> 11.9.2 Allowing Bob to Be Stateless in IPsec</p> <p>11.10 Endpoint Identifier Hiding</p> <p>11.11 Live Partner Reassurance</p> <p>11.12 Arranging for Parallel Computation</p> <p>11.13 Session Resumption/Multiple Sessions</p> <p>11.14 Plausible Deniability</p> <p>11.15 Negotiating Crypto Parameters</p> <p> 11.15.1 Suites vs. à la Carte</p> <p> 11.15.2 Downgrade Attack</p> <p>11.16 Homework</p> <p><strong>Chapter 12</strong> IPsec</p> <p>12.1 IPsec Security Associations</p> <p> 12.1.1 Security Association Database</p> <p> 12.1.2 Security Policy Database</p> <p> 12.1.3 IKE-SAs and Child-SAs</p> <p>12.2 IKE (Internet Key Exchange Protocol)</p> <p>12.3 Creating a Child-SA</p> <p>12.4 AH and ESP</p> <p> 12.4.1 ESP Integrity Protection</p> <p> 12.4.2 Why Protect the IP Header?</p> <p> 12.4.3 Tunnel, Transport Mode</p> <p> 12.4.4 IPv4 Header</p> <p> 12.4.5 IPv6 Header</p> <p>12.5 AH (Authentication Header)</p> <p>12.6 ESP (Encapsulating Security Payload)</p> <p>12.7 Comparison of Encodings</p> <p>12.8 Homework</p> <p><strong>Chapter 13</strong> SSL/TLS and SSH</p> <p>13.1 Using TCP</p> <p>13.2 StartTLS</p> <p>13.3 Functions in the TLS Handshake</p> <p>13.4 TLS 1.2 (and Earlier) Basic Protocol</p> <p>13.5 TLS 1.3</p> <p>13.6 Session Resumption</p> <p>13.7 PKI as Deployed by TLS</p> <p>13.8 SSH (Secure Shell)</p> <p> 13.8.1 SSH Authentication</p> <p> 13.8.2 SSH Port Forwarding</p> <p>13.9 Homework</p> <p><strong>Chapter 14</strong> Electronic Mail Security</p> <p>14.1 Distribution Lists</p> <p>14.2 Store and Forward</p> <p>14.3 Disguising Binary as Text</p> <p>14.4 HTML-Formatted Email</p> <p>14.5 Attachments</p> <p>14.6 Non-cryptographic Security Features</p> <p> 14.6.1 Spam Defenses</p> <p>14.7 Malicious Links in Email</p> <p>14.8 Data Loss Prevention (DLP)</p> <p>14.9 Knowing Bob's Email Address</p> <p>14.10 Self-Destruct, Do-Not-Forward,</p> <p>14.11 Preventing Spoofing of From Field</p> <p>14.12 In-Flight Encryption</p> <p>14.13 End-to-End Signed and Encrypted Email</p> <p>14.14 Encryption by a Server</p> <p>14.15 Message Integrity</p> <p>14.16 Non-Repudiation</p> <p>14.17 Plausible Deniability</p> <p>14.18 Message Flow Confidentiality</p> <p>14.19 Anonymity</p> <p>14.20 Homework</p> <p><strong>Chapter 15</strong> Electronic Money</p> <p>15.1 ECASH</p> <p>15.2 Offline eCash</p> <p> 15.2.1 Practical Attacks</p> <p>15.3 Bitcoin</p> <p> 15.3.1 Transactions</p> <p> 15.3.2 Bitcoin Addresses</p> <p> 15.3.3 Blockchain</p> <p> 15.3.4 The Ledger</p> <p> 15.3.5 Mining</p> <p> 15.3.6 Blockchain Forks</p> <p> 15.3.7 Why Is Bitcoin So Energy-Intensive?</p> <p> 15.3.8 Integrity Checks: Proof of Work vs. Digital Signatures</p> <p> 15.3.9 Concerns</p> <p>15.4 Wallets for Electronic Currency</p> <p>15.5 Homework</p> <p><strong>Chapter 16</strong> Cryptographic Tricks</p> <p>16.1 Secret Sharing</p> <p>16.2 Blind Signature</p> <p>16.3 Blind Decryption</p> <p>16.4 Zero-Knowledge Proofs</p> <p> 16.4.1 Graph Isomorphism ZKP</p> <p> 16.4.2 Proving Knowledge of a Square Root</p> <p> 16.4.3 Noninteractive ZKP</p> <p>16.5 Group Signatures</p> <p> 16.5.1 Trivial Group Signature Schemes</p> <p> 16.5.1.1 Single Shared Key</p> <p> 16.5.1.2 Group Membership Certificate</p> <p> 16.5.1.3 Multiple Group Membership Certificates</p> <p> 16.5.1.4 Blindly Signed Multiple Group Membership Certificates</p> <p> 16.5.2 Ring Signatures</p> <p> 16.5.3 DAA (Direct Anonymous Attestation)</p> <p> 16.5.4 EPID (Enhanced Privacy ID)</p> <p>16.6 Circuit Model</p> <p>16.7 Secure Multiparty Computation (MPC)</p> <p>16.8 Fully Homomorphic Encryption (FHE)</p> <p> 16.8.1 Bootstrapping</p> <p> 16.8.2 Easy-to-Understand Scheme</p> <p>16.9 Homework</p> <p><strong>Chapter 17</strong> Folklore</p> <p>17.1 Misconceptions</p> <p>17.2 Perfect Forward Secrecy</p> <p>17.3 Change Encryption Keys Periodically</p> <p>17.4 Don't Encrypt without Integrity Protection</p> <p>17.5 Multiplexing Flows over One Secure Session</p> <p> 17.5.1 The Splicing Attack</p> <p> 17.5.2 Service Classes</p> <p> 17.5.3 Different Cryptographic Algorithms</p> <p>17.6 Using Different Secret Keys</p> <p> 17.6.1 For Initiator and Responder in Handshake</p> <p> 17.6.2 For Encryption and Integrity</p> <p> 17.6.3 In Each Direction of a Secure Session</p> <p>17.7 Using Different Public Keys</p> <p> 17.7.1 Use Different Keys for Different Purposes</p> <p> 17.7.2 Different Keys for Signing and Encryption</p> <p>17.8 Establishing Session Keys</p> <p> 17.8.1 Have Both Sides Contribute to the Master Key</p> <p> 17.8.2 Don't Let One Side Determine the Key</p> <p>17.9 Hash in a Constant When Hashing a Password</p> <p>17.10 HMAC Rather than Simple Keyed Hash</p> <p>17.11 Key Derivation</p> <p>17.12 Use of Nonces in Protocols</p> <p>17.13 Creating an Unpredictable Nonce</p> <p>17.14 Compression</p> <p>17.15 Minimal vs. Redundant Designs</p> <p>17.16 Overestimate the Size of Key</p> <p>17.17 Hardware Random Number Generators</p> <p>17.18 Put Checksums at the End of Data</p> <p>17.19 Forward Compatibility</p> <p> 17.19.1 Options</p> <p> 17.19.2 Version Numbers</p> <p> 17.19.2.1 Version Number Field Must Not Move</p> <p> 17.19.2.2 Negotiating Highest Version Supported</p> <p> 17.19.2.3 Minor Version Number Field</p> <p><strong>Glossary</strong></p> <p><strong>Math</strong></p> <p>M.1 Introduction</p> <p>M.2 Some definitions and notation</p> <p>M.3 Arithmetic</p> <p>M.4 Abstract Algebra</p> <p>M.5 Modular Arithmetic</p> <p> M.5.1 How Do Computers Do Arithmetic?</p> <p> M.5.2 Computing Inverses in Modular Arithmetic</p> <p> M.5.2.1 The Euclidean Algorithm</p> <p> M.5.2.2 The Chinese Remainder Theorem</p> <p> M.5.3 How Fast Can We Do Arithmetic?</p> <p>M.6 Groups</p> <p>M.7 Fields</p> <p> M.7.1 Polynomials</p> <p> M.7.2 Finite Fields</p> <p> M.7.2.1 What Sizes Can Finite Fields Be?</p> <p> M.7.2.2 Representing a Field</p> <p>M.8 Mathematics of Rijndael</p> <p> M.8.1 A Rijndael Round</p> <p>M.9 Elliptic Curve Cryptography</p> <p>M.10 Rings</p> <p>M.11 Linear Transformations</p> <p>M.12 Matrix Arithmetic</p> <p> M.12.1 Permutations</p> <p> M.12.2 Matrix Inverses</p> <p> M.12.2.1 Gaussian Elimination</p> <p>M.13 Determinants</p> <p> M.13.1 Properties of Determinants</p> <p> M.13.1.1 Adjugate of a Matrix</p> <p> M.13.2 Proof: Determinant of Product is Product of Determinants</p> <p>M.14 Homework</p> <p><strong>Bibliography</strong></p> <p> </p> <p> </p> <p>9780136643609 TOC 8/2/2022</p> <p> </p>