-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodern.html
More file actions
265 lines (247 loc) · 24.2 KB
/
modern.html
File metadata and controls
265 lines (247 loc) · 24.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Modern Cryptography — The Cipher Museum</title>
<link rel="icon" href="favicon.svg" type="image/svg+xml">
<meta name="description" content="From AES and RSA to quantum cryptography — explore how modern encryption protects the digital world.">
<meta property="og:title" content="Modern Cryptography — The Cipher Museum">
<meta property="og:description" content="From AES and RSA to quantum cryptography — explore how modern encryption protects the digital world.">
<meta property="og:type" content="website">
<meta property="og:url" content="https://ciphermuseum.com/modern.html">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Modern Cryptography — The Cipher Museum">
<meta name="twitter:description" content="From AES and RSA to quantum cryptography — explore how modern encryption protects the digital world.">
<meta name="theme-color" content="#0a0a0f">
<link rel="canonical" href="https://ciphermuseum.com/modern.html">
<link rel="stylesheet" href="css/museum.css">
<style>
.modern-cards{display:none}
@media(max-width:768px){
.modern-table-wrap{display:none}
.modern-cards{display:flex;flex-direction:column;gap:1rem}
.mc{background:var(--s3);border:1px solid var(--s4);border-radius:var(--r);padding:1rem}
.mc-name{font-family:var(--fd);font-size:.95rem;color:var(--gold-lt);margin-bottom:.6rem}
.mc-row{display:flex;gap:.4rem;margin-bottom:.4rem;font-size:.85rem;line-height:1.6}
.mc-row:last-child{margin-bottom:0}
.mc-label{font-family:var(--fm);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--tx3);min-width:5.5rem;flex-shrink:0;padding-top:.15rem}
.mc-val{color:var(--tx2)}
}
</style>
</head>
<body>
<a class="skip-link" href="#main-content">Skip to main content</a>
<nav class="museum-nav" aria-label="Primary"><div class="nav-inner">
<a href="index.html" class="nav-logo"><svg class="nav-logo-icon" viewBox="0 0 32 32" fill="none"><circle cx="16" cy="16" r="14" stroke="currentColor" stroke-width="1.5"/><circle cx="16" cy="16" r="8" stroke="currentColor" stroke-width="1"/><circle cx="16" cy="16" r="2" fill="currentColor"/><line x1="16" y1="2" x2="16" y2="6" stroke="currentColor" stroke-width="1.5"/><line x1="16" y1="26" x2="16" y2="30" stroke="currentColor" stroke-width="1.5"/><line x1="2" y1="16" x2="6" y2="16" stroke="currentColor" stroke-width="1.5"/><line x1="26" y1="16" x2="30" y2="16" stroke="currentColor" stroke-width="1.5"/></svg><span class="nav-logo-text">The Cipher Museum</span></a>
<ul class="nav-links"><li><a href="index.html">Entrance</a></li><li><a href="museum-map.html">Museum Map</a></li><li><a href="timeline.html">Timeline</a></li>
<li><a href="challenges.html">Challenges</a></li>
<li><a href="glossary.html">Glossary</a></li>
<li><a href="cryptanalysis.html">Cryptanalysis Techniques</a></li>
<li><a href="further-reading.html">Further Reading</a></li><li><a href="modern.html" class="active">Modern Crypto</a></li></ul>
</div></nav>
<main id="main-content" tabindex="-1">
<div class="page-hero">
<div class="breadcrumb"><a href="index.html">Entrance</a><span>›</span>Modern Cryptography</div>
<span class="page-eyebrow">Beyond the Museum</span>
<h1 class="page-title">Modern Cryptography</h1>
<p class="page-tagline">Not just ciphers — an entirely different discipline</p>
<p style="max-width:680px;font-size:1.1rem;color:var(--tx2);line-height:1.9;position:relative;z-index:1;">Every exhibit in this museum is a <strong>cipher</strong> — a reversible method for turning plaintext into ciphertext and back. Modern cryptography includes ciphers (AES, ChaCha20), but also key exchange protocols, digital signatures, and hash functions that are <em>not ciphers at all</em>. This page maps the journey from classical failure to modern practice.</p>
</div>
<div class="section">
<div class="section-head"><span class="section-eyebrow">The Complete Journey</span><h2 class="section-title">Classical → Modern: What Each Failure Taught</h2></div>
<div class="panel modern-table-wrap" style="margin-bottom:3rem;">
<div class="panel-body" style="padding:0;overflow-x:auto;-webkit-overflow-scrolling:touch">
<table class="cipher-table">
<thead><tr><th>Classical Cipher Type</th><th>Fatal Weakness</th><th>Modern Solution</th><th>Modern Example</th></tr></thead>
<tbody>
<tr><td>Caesar / Monoalphabetic</td><td>Frequency analysis — letter mapping preserved</td><td>Non-linear S-boxes destroy all frequency patterns</td><td>AES SubBytes</td></tr>
<tr><td>Homophonic Substitution</td><td>Still monoalphabetic — poor distribution leaks info</td><td>Uniformly random output: every ciphertext byte equally likely</td><td>AES with proper IV</td></tr>
<tr><td>Polyalphabetic / Vigenère</td><td>Repeating key creates detectable periodicity</td><td>Non-repeating pseudorandom keystreams, nonce + counter</td><td>ChaCha20, AES-GCM</td></tr>
<tr><td>Transposition (Rail Fence, Columnar)</td><td>Letters preserved — anagram attacks work</td><td>Substitution combined with permutation every round</td><td>AES ShiftRows + MixColumns</td></tr>
<tr><td>Playfair / Hill (block)</td><td>Small blocks leak digraph statistics; linear algebra solvable</td><td>128-bit blocks, non-linear operations, round keys</td><td>AES (128-bit block)</td></tr>
<tr><td>Fractionation (Bifid, ADFGVX)</td><td>Coordinate mixing insufficient with static key square</td><td>Multiple rounds of mixing with key-derived round keys</td><td>AES 10–14 rounds</td></tr>
<tr><td>Military layered (ADFGVX, VIC)</td><td>Substitution + transposition — each layer still attackable</td><td>10–14 rounds of 4 operations — computationally infeasible to reverse</td><td>AES, Camellia, SM4</td></tr>
<tr><td>Rotor machines (Enigma, Lorenz)</td><td>Physical key distribution; operator errors; structural flaws</td><td>Public-key cryptography eliminates need for shared secret distribution</td><td>RSA, Diffie-Hellman, ECDH</td></tr>
<tr><td>One-Time Pad</td><td>Impractical key management — reuse is catastrophic</td><td>Computationally secure with short key; KDFs for key derivation</td><td>AES-256, X25519 key exchange</td></tr>
</tbody>
</table>
</div>
</div>
<!-- Mobile card layout (replaces table at ≤768px) -->
<div class="modern-cards" style="margin-bottom:3rem;">
<div class="mc">
<div class="mc-name">Caesar / Monoalphabetic</div>
<div class="mc-row"><span class="mc-label">Weakness</span><span class="mc-val">Frequency analysis — letter mapping preserved</span></div>
<div class="mc-row"><span class="mc-label">Solution</span><span class="mc-val">Non-linear S-boxes destroy all frequency patterns</span></div>
<div class="mc-row"><span class="mc-label">Example</span><span class="mc-val">AES SubBytes</span></div>
</div>
<div class="mc">
<div class="mc-name">Homophonic Substitution</div>
<div class="mc-row"><span class="mc-label">Weakness</span><span class="mc-val">Still monoalphabetic — poor distribution leaks info</span></div>
<div class="mc-row"><span class="mc-label">Solution</span><span class="mc-val">Uniformly random output: every ciphertext byte equally likely</span></div>
<div class="mc-row"><span class="mc-label">Example</span><span class="mc-val">AES with proper IV</span></div>
</div>
<div class="mc">
<div class="mc-name">Polyalphabetic / Vigenère</div>
<div class="mc-row"><span class="mc-label">Weakness</span><span class="mc-val">Repeating key creates detectable periodicity</span></div>
<div class="mc-row"><span class="mc-label">Solution</span><span class="mc-val">Non-repeating pseudorandom keystreams, nonce + counter</span></div>
<div class="mc-row"><span class="mc-label">Example</span><span class="mc-val">ChaCha20, AES-GCM</span></div>
</div>
<div class="mc">
<div class="mc-name">Transposition (Rail Fence, Columnar)</div>
<div class="mc-row"><span class="mc-label">Weakness</span><span class="mc-val">Letters preserved — anagram attacks work</span></div>
<div class="mc-row"><span class="mc-label">Solution</span><span class="mc-val">Substitution combined with permutation every round</span></div>
<div class="mc-row"><span class="mc-label">Example</span><span class="mc-val">AES ShiftRows + MixColumns</span></div>
</div>
<div class="mc">
<div class="mc-name">Playfair / Hill (block)</div>
<div class="mc-row"><span class="mc-label">Weakness</span><span class="mc-val">Small blocks leak digraph statistics; linear algebra solvable</span></div>
<div class="mc-row"><span class="mc-label">Solution</span><span class="mc-val">128-bit blocks, non-linear operations, round keys</span></div>
<div class="mc-row"><span class="mc-label">Example</span><span class="mc-val">AES (128-bit block)</span></div>
</div>
<div class="mc">
<div class="mc-name">Fractionation (Bifid, ADFGVX)</div>
<div class="mc-row"><span class="mc-label">Weakness</span><span class="mc-val">Coordinate mixing insufficient with static key square</span></div>
<div class="mc-row"><span class="mc-label">Solution</span><span class="mc-val">Multiple rounds of mixing with key-derived round keys</span></div>
<div class="mc-row"><span class="mc-label">Example</span><span class="mc-val">AES 10–14 rounds</span></div>
</div>
<div class="mc">
<div class="mc-name">Military layered (ADFGVX, VIC)</div>
<div class="mc-row"><span class="mc-label">Weakness</span><span class="mc-val">Substitution + transposition — each layer still attackable</span></div>
<div class="mc-row"><span class="mc-label">Solution</span><span class="mc-val">10–14 rounds of 4 operations — computationally infeasible to reverse</span></div>
<div class="mc-row"><span class="mc-label">Example</span><span class="mc-val">AES, Camellia, SM4</span></div>
</div>
<div class="mc">
<div class="mc-name">Rotor machines (Enigma, Lorenz)</div>
<div class="mc-row"><span class="mc-label">Weakness</span><span class="mc-val">Physical key distribution; operator errors; structural flaws</span></div>
<div class="mc-row"><span class="mc-label">Solution</span><span class="mc-val">Public-key cryptography eliminates need for shared secret distribution</span></div>
<div class="mc-row"><span class="mc-label">Example</span><span class="mc-val">RSA, Diffie-Hellman, ECDH</span></div>
</div>
<div class="mc">
<div class="mc-name">One-Time Pad</div>
<div class="mc-row"><span class="mc-label">Weakness</span><span class="mc-val">Impractical key management — reuse is catastrophic</span></div>
<div class="mc-row"><span class="mc-label">Solution</span><span class="mc-val">Computationally secure with short key; KDFs for key derivation</span></div>
<div class="mc-row"><span class="mc-label">Example</span><span class="mc-val">AES-256, X25519 key exchange</span></div>
</div>
</div>
<div class="section-head"><span class="section-eyebrow">Shannon's Framework</span><h2 class="section-title">Confusion & Diffusion</h2></div>
<div class="cd-grid" style="display:grid;grid-template-columns:1fr 1fr;gap:2rem;margin-bottom:3rem;">
<div class="panel" style="border-color:var(--gold-b);">
<div class="panel-head" style="background:var(--gold-glow);border-color:var(--gold-b);"><span class="panel-icon">🌀</span><span class="panel-title" style="color:var(--gold);">Confusion</span></div>
<div class="panel-body">
<p>Making the relationship between key and ciphertext as complex as possible. Caesar has zero confusion: C = P + 3. One known pair reveals the entire key.</p>
<p style="margin-top:.75rem;"><strong>Modern solution:</strong> AES S-boxes are highly non-linear. Every output bit depends on every input bit in a way that can't be described by any simple mathematical relationship.</p>
</div>
</div>
<div class="panel" style="border-color:var(--gold-b);">
<div class="panel-head" style="background:var(--gold-glow);border-color:var(--gold-b);"><span class="panel-icon">🌊</span><span class="panel-title" style="color:var(--gold);">Diffusion</span></div>
<div class="panel-body">
<p>Spreading each plaintext bit's influence across many ciphertext bits. Caesar has zero diffusion: change one letter, change exactly one ciphertext letter.</p>
<p style="margin-top:.75rem;"><strong>Modern solution:</strong> AES avalanche effect — after 2 rounds, every output bit depends on every input bit. After 10 rounds, changing 1 bit changes ~50% of all output bits.</p>
</div>
</div>
</div>
<div class="section-head"><span class="section-eyebrow">The Modern Landscape</span><h2 class="section-title">What Replaced Classical Cryptography</h2></div>
<div class="callout" style="margin-bottom:2.5rem;border-color:var(--gold-b);background:var(--gold-glow);">
<span class="callout-icon">⚠️</span>
<div class="callout-body"><p><strong>Taxonomy note:</strong> Only the first category below — symmetric ciphers — contains actual <em>ciphers</em> (reversible plaintext↔ciphertext transformations). Key exchange, public-key cryptography, and hash functions are <strong>cryptographic primitives</strong>, not ciphers. They solve different problems: establishing shared secrets, proving identity, and verifying integrity.</p></div>
</div>
<div class="callout" style="margin-bottom:2.5rem;border-color:var(--gold-b);background:var(--gold-glow);">
<span class="callout-icon">🏛️</span>
<div class="callout-body"><p><strong>Looking for the exhibits?</strong> The five core modern primitives — <a href="ciphers/des.html" style="color:var(--gold);">DES</a>, <a href="ciphers/diffie-hellman.html" style="color:var(--gold);">Diffie-Hellman</a>, <a href="ciphers/rsa.html" style="color:var(--gold);">RSA</a>, <a href="ciphers/aes.html" style="color:var(--gold);">AES</a>, and <a href="ciphers/sha256.html" style="color:var(--gold);">SHA-256</a> — each have a full four-part exhibit page in <a href="halls/modern-crypto.html" style="color:var(--gold);">Hall XI · Modern Cryptography</a>. This page provides the wider context: the journey from classical failure to modern practice, and the primitives (ChaCha20, ECDH, post-quantum) that sit alongside the canonical five.</p></div>
</div>
<!-- ── 🔐 Ciphers ── -->
<div style="margin-bottom:2.5rem;">
<div style="font-family:var(--fm);font-size:.6rem;letter-spacing:.25em;text-transform:uppercase;color:var(--gold);margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--s4);">🔐 Ciphers — Plaintext → Ciphertext → Plaintext</div>
<div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;">
<a href="ciphers/aes.html" class="panel" style="text-decoration:none;color:inherit;display:block;"><div class="panel-head"><span class="panel-icon">📦</span><span class="panel-title">AES-256 (Symmetric) <span style="color:var(--gold);font-size:.7rem;">→ exhibit</span></span></div><div class="panel-body"><p>128-bit blocks, 256-bit key, 14 rounds. 2²⁵⁶ possible keys with no known practical attack. Protects everything from HTTPS to full-disk encryption.</p>
<figure class="figure" style="margin-top:1rem;">
<img src="images/artifacts/aes-encryption-simplified.png" alt="Simplified diagram of AES encryption showing the substitution-permutation round structure" loading="lazy">
<figcaption class="figure-caption">AES encryption — simplified view of the substitution-permutation rounds that protect modern data. Illustration: Google Gemini AI</figcaption>
</figure>
</div></a>
<div class="panel"><div class="panel-head"><span class="panel-icon">🌊</span><span class="panel-title">ChaCha20 (Stream Cipher)</span></div><div class="panel-body"><p>Designed by Daniel Bernstein. 256-bit key, 64-bit nonce. XORs plaintext with a cryptographically random, never-repeating keystream.</p></div></div>
</div>
</div>
<!-- ── 🔑 Key Exchange ── -->
<div style="margin-bottom:2.5rem;">
<div style="font-family:var(--fm);font-size:.6rem;letter-spacing:.25em;text-transform:uppercase;color:var(--gold);margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--s4);">🔑 Key Exchange — Creating a Shared Secret</div>
<div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;">
<a href="ciphers/diffie-hellman.html" class="panel" style="text-decoration:none;color:inherit;display:block;"><div class="panel-head"><span class="panel-icon">🤝</span><span class="panel-title">Diffie-Hellman Key Exchange <span style="color:var(--gold);font-size:.7rem;">→ exhibit</span></span></div><div class="panel-body"><p>Derives a shared secret over a public channel. Based on the discrete logarithm problem. <em>Not a cipher — it does not encrypt data.</em></p>
<figure class="figure" style="margin-top:1rem;">
<img src="images/artifacts/public-key-diffie-hellman-diagram.png" alt="Diagram illustrating the Diffie-Hellman key exchange protocol" loading="lazy">
<figcaption class="figure-caption">Diffie-Hellman key exchange — how two parties establish a shared secret over an insecure channel. Illustration: Google Gemini AI</figcaption>
</figure>
</div></a>
</div>
</div>
<!-- ── 🔓 Public-Key Cryptography ── -->
<div style="margin-bottom:2.5rem;">
<div style="font-family:var(--fm);font-size:.6rem;letter-spacing:.25em;text-transform:uppercase;color:var(--gold);margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--s4);">🔓 Public-Key Cryptography — Asymmetric Encryption & Signatures</div>
<div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;">
<a href="ciphers/rsa.html" class="panel" style="text-decoration:none;color:inherit;display:block;"><div class="panel-head"><span class="panel-icon">🔑</span><span class="panel-title">RSA (Asymmetric) <span style="color:var(--gold);font-size:.7rem;">→ exhibit</span></span></div><div class="panel-body"><p>Rivest, Shamir, Adleman (1977). Two keys — public (encrypt) and private (decrypt) — secured by the difficulty of factoring large primes. Used in TLS, email, and digital signatures.</p>
<figure class="figure" style="margin-top:1rem;">
<img src="images/artifacts/public-key-cryptography-diagram.png" alt="Diagram illustrating the principles of public key cryptography" loading="lazy">
<figcaption class="figure-caption">Public key cryptography — asymmetric encryption using public and private key pairs. Illustration: Google Gemini AI</figcaption>
</figure>
</div></a>
</div>
</div>
<!-- ── #️⃣ Hash Functions ── -->
<div style="margin-bottom:2.5rem;">
<div style="font-family:var(--fm);font-size:.6rem;letter-spacing:.25em;text-transform:uppercase;color:var(--gold);margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--s4);">#️⃣ Hash Functions — One-Way Fingerprints</div>
<div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;">
<a href="ciphers/sha256.html" class="panel" style="text-decoration:none;color:inherit;display:block;"><div class="panel-head"><span class="panel-icon">🔒</span><span class="panel-title">SHA-256 (Hash Function) <span style="color:var(--gold);font-size:.7rem;">→ exhibit</span></span></div><div class="panel-body"><p>Produces a fixed 256-bit fingerprint of any input. One-way: given the hash, you cannot recover the input. Collision-resistant: finding two inputs with the same hash requires 2¹²⁸ operations. Used in digital signatures, certificate verification, blockchain. <em>Not a cipher — it cannot be reversed.</em></p>
<figure class="figure" style="margin-top:1rem;">
<img src="images/artifacts/hashing-avalanche-effect-diagram.png" alt="Diagram showing the avalanche effect in hash functions where small input changes produce completely different outputs" loading="lazy">
<figcaption class="figure-caption">The avalanche effect — changing a single input bit transforms the entire hash output. Illustration: Google Gemini AI</figcaption>
</figure>
</div></a>
</div>
</div>
<!-- ── 🔮 Future ── -->
<div style="margin-bottom:3rem;">
<div style="font-family:var(--fm);font-size:.6rem;letter-spacing:.25em;text-transform:uppercase;color:var(--gold);margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--s4);">🔮 The Future — Post-Quantum Cryptography</div>
<div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;">
<div class="panel"><div class="panel-head"><span class="panel-icon">🔮</span><span class="panel-title">Post-Quantum Cryptography</span></div><div class="panel-body"><p>Quantum computers will break RSA and Diffie-Hellman. NIST is standardizing quantum-resistant algorithms: CRYSTALS-Kyber (key exchange) and CRYSTALS-Dilithium (signatures), based on lattice problems believed to resist quantum attacks.</p></div></div>
</div>
</div>
<div class="callout callout-mystery">
<span class="callout-icon">🎓</span>
<div class="callout-body"><p><strong>The museum's final lesson:</strong> Every classical cipher failed because it relied on obscurity or physical key distribution. Modern cryptography replaced both with mathematical hardness and public-key mathematics — and expanded far beyond ciphers into protocols, signatures, and proofs.</p></div>
</div>
<div class="section-head" style="text-align:left;margin-top:3rem;">
<span class="section-eyebrow">Continue Learning</span>
<h2 class="section-title">Resources</h2>
</div>
<div style="display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem;margin-bottom:2rem;">
<div class="panel">
<div class="panel-head"><span class="panel-icon">🛠️</span><span class="panel-title">CrypTool-Online</span></div>
<div class="panel-body"><p>Free browser-based cryptography toolkit. Encrypt and decrypt with dozens of classical and modern ciphers. Visualize algorithms step by step.</p></div>
</div>
<div class="panel">
<div class="panel-head"><span class="panel-icon">📖</span><span class="panel-title">The Code Book</span></div>
<div class="panel-body"><p>Simon Singh’s <em>The Code Book</em> traces the history of cryptography from ancient Egypt to quantum computing. The definitive popular introduction to the field.</p></div>
</div>
<div class="panel">
<div class="panel-head"><span class="panel-icon">🎬</span><span class="panel-title">Cryptography I (Stanford)</span></div>
<div class="panel-body"><p>Dan Boneh’s free Coursera course covers modern cryptographic primitives: stream ciphers, block ciphers, MACs, public-key encryption, and key exchange.</p></div>
</div>
</div>
</div>
</main>
<footer class="museum-footer">
<div class="footer-grid">
<div class="footer-brand"><span class="footer-logo-text">The Cipher Museum</span><p class="footer-brand-desc">Open-source cryptography education. MIT License. GitHub Pages.</p></div>
<div><div class="footer-col-title">Final Hall</div><ul class="footer-links"><li><a href="halls/unbreakable.html">The Unbreakable</a></li><li><a href="ciphers/one-time-pad.html">One-Time Pad</a></li><li><a href="ciphers/enigma.html">Enigma Machine</a></li></ul></div>
<div><div class="footer-col-title">Navigate</div><ul class="footer-links"><li><a href="museum-map.html">Museum Map</a></li><li><a href="timeline.html">Timeline</a></li>
<li><a href="challenges.html">Challenges</a></li>
<li><a href="glossary.html">Glossary</a></li>
<li><a href="cryptanalysis.html">Cryptanalysis Techniques</a></li>
<li><a href="further-reading.html">Further Reading</a></li><li><a href="index.html">Museum Entrance</a></li></ul></div>
</div>
<div class="footer-bottom"><span class="footer-copy">© The Cipher Museum · MIT License</span></div>
</footer>
<script src="js/nav.js" defer></script>
<script src="js/lightbox.js"></script>
</body></html>