[Cryptography 101] Mã hóa cổ điển: Từ mật thư tuổi thơ đến nền tảng của bảo mật hiện đại
Chào anh em! Hôm nay chúng ta tạm gác lại mấy cái Framework xịn xò hay Docker, Kubernetes sang một bên để nói về một thứ "xưa như diễm" nhưng lại là tổ tiên của mọi hệ thống bảo mật ngày nay: Mã hóa cổ điển.
Nếu bạn từng chơi trò viết mật thư bằng nước chanh hay thay chữ cái bằng những ký hiệu kỳ quặc hồi tiểu học, chúc mừng, bạn đã chạm tay vào "nhập môn" mật mã học rồi đấy!
1. Mã hóa cổ điển thực chất là gì?
Nói một cách đơn giản, mã hóa cổ điển là các phương pháp thay đổi thông tin ban đầu (Plaintext) thành một dạng không đọc được (Ciphertext) bằng những quy tắc toán học hoặc logic đơn giản.
Đặc điểm nhận dạng của các cụ "mã hóa" đời đầu này là:
- Thủ công: Thường được thực hiện bằng bút, giấy hoặc các công cụ cơ khí đơn giản (không có máy tính đâu nhé).
- Bảo mật dựa trên thuật toán: Ngày nay chúng ta giữ kín "Key", nhưng thời xưa, người ta thường cố gắng giữ kín cả "cách mã hóa" (Thuật toán).
- Dùng chung một khóa (Symmetric Key): Người gửi và người nhận dùng chung một quy tắc để khóa và mở.
2. Hai "bí kíp" võ công chính trong mã hóa cổ điển
A. Phép thay thế (Substitution Cipher)
Mỗi chữ cái trong bản rõ sẽ được thay thế bằng một chữ cái hoặc ký hiệu khác theo một quy luật cố định
Ví dụ kinh điển: Mật mã Caesar. Bạn chỉ cần dịch chuyển bảng chữ cái đi bước.
Với : Chữ A thành D, B thành E...
Từ VIBLO sẽ biến thành YLEOR.
Ưu điểm: Dễ hiểu, dễ dùng.
Nhược điểm: Dễ bị "bắt bài" bằng phương pháp Phân tích tần suất (Frequency Analysis) – vì trong một ngôn ngữ, các chữ cái như E hay A thường xuất hiện nhiều hơn hẳn.
B. Phép hoán vị (Transposition Cipher)
Chúng ta giữ nguyên các chữ cái nhưng... đảo lộn vị trí của chúng.
- Hãy tưởng tượng bạn viết chữ theo hàng ngang nhưng lại đọc theo hàng dọc. Bản thân các chữ cái không đổi, chỉ có "thứ tự" bị xáo trộn khiến người ngoài nhìn vào tưởng là một đống lộn xộn.
3. Những cái tên "vang bóng một thời"
Nếu định viết bài sâu hơn, bạn không thể bỏ qua những cái tên này:
Vigenère Cipher: Được mệnh danh là "mật mã không thể bị giải" trong suốt hàng thế kỷ. Nó dùng một từ khóa (Keyword) để thay đổi giá trị dịch chuyển cho từng chữ cái. Đây là bước tiến lớn so với Caesar.
Playfair Cipher: Mã hóa theo từng cặp chữ cái thay vì đơn lẻ. Nó từng được quân đội Anh sử dụng trong Thế chiến I.
Enigma: "Trùm cuối" của kỷ nguyên mã hóa cơ khí. Một cỗ máy với các bánh xe quay (rotors) biến ảo hàng tỷ khả năng. Câu chuyện phá giải Enigma của Alan Turing chính là cột mốc khai sinh ra máy tính hiện đại mà anh em mình đang dùng đấy!
4. Tại sao chúng ta vẫn nên biết về nó?
Nhiều anh em sẽ bảo: "Giờ dùng AES-256 hay RSA hết rồi, học mấy cái đồ cổ này làm gì?". Thực ra, hiểu về mã hóa cổ điển giúp bạn:
Nắm vững tư duy logic: Hiểu được cách dữ liệu bị biến đổi từ gốc.
Hiểu về lỗ hổng: Tại sao các thuật toán cũ lại dễ bị bẻ gãy? (Tần suất chữ cái, độ dài khóa ngắn...).
Cảm hứng: Rất nhiều thuật toán hiện đại thực chất là sự kết hợp phức tạp (với số vòng lặp khổng lồ) của chính phép thay thế và hoán vị này.
Tạm kết
Mã hóa cổ điển giống như những viên gạch đầu tiên xây dựng nên tòa lâu đài bảo mật ngày nay. Tuy bây giờ nó chỉ còn mang tính chất giải trí hoặc giáo dục, nhưng cái tư duy "che giấu thông tin" của nó vẫn luôn là tôn chỉ của mọi Developer khi xây dựng hệ thống.
Anh em có muốn mình làm một bài hướng dẫn code thử thuật mã Caesar hay Vigenère bằng Python/JavaScript không? Comment bên dưới nhé, nếu đủ "nhiệt" mình sẽ lên bài luôn!
All rights reserved