Lý thuyết
Nhắc lại thật nhanh
Ở Bài 6–7, thuật toán là dãy bước rõ ràng, có thể có vòng lặp. Mã hóa cũng là một thuật toán: một dãy bước biến bức thư thành dạng người ngoài không đọc được. Điều đặc biệt là thuật toán ấy cần thêm một điều bí mật.
1. Giấu thư khác mã hóa
| Cách | Ý tưởng | Ví dụ trong video | Nếu bị phát hiện |
|---|---|---|---|
| Giấu | Làm cho không ai biết có bức thư | Histiaeus viết lên da đầu người hầu, chờ tóc mọc (khoảng năm 499 TCN) | Ai cũng đọc được ngay |
| Mã hóa | Bức thư vẫn nằm đó, nhưng người ngoài đọc không hiểu | Gậy Sparta, mẹo dịch chữ của Caesar | Vẫn chưa đọc được nếu không có khóa |
Mã hóa là biến thông điệp thành dạng người ngoài đọc không hiểu, theo một quy tắc. Người nhận làm ngược lại để đọc, gọi là giải mã. Điều bí mật chung giữa người gửi và người nhận gọi là khóa.
| Từ | Nghĩa |
|---|---|
| Bản rõ | Bức thư gốc, ai cũng đọc được |
| Bản mã | Bức thư sau khi mã hóa |
| Khóa | Điều bí mật để mã hóa và giải mã |
2. Cách thứ nhất: đổi chỗ các chữ (gậy Sparta)
Người Sparta quấn một dải da thật khít quanh cây gậy, vòng này sát vòng kia. Họ viết thư dọc theo thân gậy, hết hàng này sang hàng khác. Thân gậy chỉ đủ chỗ cho một số hàng nhất định, nên mỗi vòng da nằm dưới đúng một chữ của mỗi hàng. Khi tháo dải da ra, các chữ nằm lộn xộn.
Ví dụ: bản rõ HOP LUC BAY GIO (họp lúc bảy giờ), viết không dấu, liền nhau. Gậy có 3 hàng quanh thân:
| Cột 1 | Cột 2 | Cột 3 | Cột 4 | |
|---|---|---|---|---|
| Hàng 1 | H | O | P | L |
| Hàng 2 | U | C | B | A |
| Hàng 3 | Y | G | I | O |
Mỗi cột trong bảng là một vòng da. Vì vậy dải da khi tháo ra đọc theo từng cột: H‑U‑Y, O‑C‑G, P‑B‑I, L‑A‑O, thành bản mã HUYOCGPBILAO.
Người nhận có cây gậy to đúng bằng thì quấn lại, các chữ tự xếp về hàng và đọc được. Ở đây, khóa là độ to của cây gậy (số hàng). Các chữ cái giữ nguyên, chỉ đổi chỗ.
3. Cách thứ hai: thay chữ (mẹo của Caesar)
Theo sử gia Suetonius, Julius Caesar thay mỗi chữ cái bằng chữ đứng sau nó 3 vị trí. Khi tới cuối bảng chữ cái thì quay vòng về đầu.
| Bản rõ | A | B | C | D | E | … | W | X | Y | Z |
|---|---|---|---|---|---|---|---|---|---|---|
| Bản mã (khóa 3) | D | E | F | G | H | … | Z | A | B | C |
Mã hóa DOI TOI (đợi tôi): D→G, O→R, I→L, T→W, nên bản mã là GRL WRL.
Giải mã thì làm ngược lại: lùi mỗi chữ 3 vị trí. GRL WRL → DOI TOI.
Ở đây, khóa là con số 3. Các chữ cái bị thay bằng chữ khác nhưng vẫn giữ chỗ.
| Gậy Sparta | Mẹo của Caesar | |
|---|---|---|
| Kiểu mã hóa | Đổi chỗ | Thay chữ |
| Khóa | Độ to của gậy | Số vị trí dịch |
| Chữ cái trong bản mã | Vẫn là các chữ của bản rõ | Đã đổi sang chữ khác |

4. Thuật toán và khóa là hai thứ khác nhau
Thuật toán "dịch mỗi chữ đi một số vị trí" có thể ai cũng biết. Thứ phải giữ bí mật là khóa: dịch mấy vị trí. Đổi khóa là có ngay một cách mã mới mà không cần nghĩ ra thuật toán mới.
| Bản rõ | Khóa 1 | Khóa 3 | Khóa 5 |
|---|---|---|---|
| MEO | NFP | PHR | RJT |
Ngày nay cũng vậy: các thuật toán mã hóa được công bố cho mọi người kiểm tra. Sự an toàn nằm ở khóa.
5. Điểm yếu: khóa có quá ít khả năng
Tùng chộp được mẩu giấy GL DQ NHP và kiên nhẫn thử lần lượt từng khóa:
| Thử lùi | Kết quả | Có nghĩa không? |
|---|---|---|
| 1 | FK CP MGO | Không |
| 2 | EJ BO LFN | Không |
| 3 | DI AN KEM | Có: đi ăn kem! |
Bảng chữ cái có 26 chữ, dịch 26 vị trí thì về lại chữ cũ, nên mẹo của Caesar chỉ có 25 khóa dùng được. Thử hết 25 khóa là chắc chắn tìm ra. Cách đoán này gọi là thử hết các khóa (vét cạn). Gậy Sparta cũng thế: cứ thử từng cỡ gậy là có lúc trúng.
Bài học: khóa càng ít khả năng thì càng dễ bị đoán.
6. Hôm nay: khóa khổng lồ và mật khẩu của bạn
Tin nhắn, trang web có ổ khóa nhỏ trên trình duyệt, Wi‑Fi nhà bạn đều được mã hóa. Khác với Caesar, khóa ngày nay là những con số rất dài, số khả năng nhiều đến mức máy tính thử suốt hàng triệu năm cũng không hết.
Mật khẩu của bạn cũng là một chiếc khóa. Số khả năng tăng rất nhanh khi mật khẩu dài hơn:
| Loại mật khẩu | Số khả năng |
|---|---|
| Mã PIN 4 chữ số | 10 × 10 × 10 × 10 = 10.000 |
| Mã PIN 6 chữ số | 1.000.000 |
| 8 chữ cái thường (a–z) | 26 mũ 8, khoảng 208 tỷ |
Thêm 2 chữ số vào mã PIN, số khả năng tăng 100 lần. Vì vậy:
- Chọn mật khẩu dài, khó đoán. Tránh 123456, ngày sinh, tên mình.
- Không cho ai biết mật khẩu, kể cả bạn thân. Mất khóa thì mã hóa cũng vô ích.
Ghi nhớ
- Giấu là làm cho không ai biết có bức thư. Mã hóa là bức thư vẫn ở đó nhưng người ngoài đọc không hiểu.
- Khóa là điều bí mật chung giữa người gửi và người nhận. Có khóa thì giải mã được.
- Gậy Sparta đổi chỗ chữ (khóa: độ to gậy). Caesar thay chữ, dịch 3 vị trí, quay vòng cuối bảng (khóa: số 3).
- Thuật toán có thể công khai, khóa phải bí mật.
- Caesar chỉ có 25 khóa nên thử hết là ra. Khóa ngày nay và mật khẩu tốt có số khả năng khổng lồ.