Mật mã học: Encryption & Hashing
Quảng cáo • Advertisement
📢 Sponsor Ad
Google AdSense
lesson.content.title
lesson.content.subtitle
🎯 Mục tiêu bài học
Tại sao HTTPS lại an toàn? Tại sao Bitcoin không thể bị hack? Tất cả là nhờ toán học.
1. Hashing (Hàm băm) - Một đi không trở lại
Biến đầu vào bất kỳ thành chuỗi ký tự độ dài cố định.
- Đặc điểm: Không thể dịch ngược (One-way). Dù máy tính mạnh nhất cũng không tìm được $x$ từ $Hash(x)$.
- Ứng dụng: Lưu password, Checksum (kiểm tra toàn vẹn file).
- Thuật toán: MD5 (đã toang), SHA-1 (đã toang), SHA-256 (Bitcoin đang dùng, an toàn).
Nghịch lý ngày sinh (Birthday Paradox) & Va chạm Hash
Tại sao SHA-1 bị khai tử? Vì Google đã tìm ra 2 file PDF khác nhau hoàn toàn nhưng có cùng mã Hash SHA-1 (SHAttered attack).
Nếu Hash bị trùng (Collision) -> Chữ ký số vô dụng. Hacker có thể tráo file hợp đồng giả vào mà hệ thống vẫn báo "Signature Valid".
Salt & Pepper (Muối và Tiêu)
Nếu User đặt pass là "123456", thì Hash luôn ra e10adc.... Hacker dùng bảng Rainbow Table tra ngược ra ngay.
- Salt: Chuỗi ngẫu nhiên sinh ra cho từng user, lưu kèm trong DB.
Pass:Hash("123456" + "user1_salt"). - Pepper: Chuỗi bí mật lưu cứng trong Code (Server), không lưu trong DB. Cả 2 kết hợp lại cực khó hack.
2. Symmetric Encryption (Mã hóa đối xứng)
Dùng 1 chìa khóa duy nhất cho cả Đóng và Mở.
- Ưu điểm: Cực nhanh. Dùng để mã hóa file lớn.
- Nhược điểm: Làm sao để gửi chìa khóa cho người nhận mà không bị hacker bắt được giữa đường? (Vấn đề phân phối khóa).
- Thuật toán: AES (Chuẩn Mỹ), DES (Cổ lỗ sĩ).
3. Asymmetric Encryption (Mã hóa bất đối xứng) - RSA
Dùng cặp chìa khóa (Key Pair).
- Public Key: Công khai cho cả thế giới. Dùng để Mã hóa.
- Private Key: Giữ bí mật tuyệt đối. Dùng để Giải mã.
- Ví dụ: Bạn muốn gửi thư tình cho Lan. Bạn lấy Public Key của Lan khóa hòm thư lại. Chỉ có Lan (có Private Key) mới mở được. Bố mẹ Lan bắt được hòm thư cũng bó tay.
4. Lab 16: RSA Math Walkthrough (Toán lớp 5)
Hãy thử làm máy tính tạo Key RSA.
- Chọn 2 số nguyên tố: $p=3, q=11$.
- Tính $n = p imes q = 33$. (Đây là Modulus).
- Tính $phi(n) = (p-1)(q-1) = 2 imes 10 = 20$.
- Chọn số $e$ (Public Exponent) sao cho nguyên tố cùng nhau với 20. Chọn $e=3$ (hoặc 7).
👉 Public Key: (e=3, n=33). - Tính $d$ (Private Exponent) sao cho $(d imes e) % 20 = 1$.
$3 imes 7 = 21$. 21 chia 20 dư 1. Vậy $d=7$.
👉 Private Key: (d=7, n=33).
Thử Mã hóa: Gửi số $m=5$.
$$ C = m^e % n = 5^3 % 33 = 125 % 33 = 26 $$
Gửi số 26 đi.
Thử Giải mã: Nhận số $C=26$.
$$ m = C^d % n = 26^7 % 33 = 8031810176 % 33 = 5 $$
👉 Ra đúng số 5 ban đầu! Ảo thuật toán học!
5. Hybrid Encryption (Dùng trong HTTPS/TLS)
RSA rất chậm (chậm hơn AES 1000 lần). Nên thực tế dùng kết hợp:
- Dùng RSA để trao đổi khóa AES (Session Key) một cách an toàn.
- Sau khi 2 bên có Session Key, dùng AES để truyền dữ liệu cho nhanh.
Q: Digital Signature hoạt động ngược lại với Mã hóa thế nào?
A: Mã hóa: Dùng Public Key người nhận để khóa -> Bảo mật (Confidentiality).
Chữ ký số: Dùng Private Key của mình để khóa (ký) -> Xác thực (Authentication/Integrity). Vì ai cũng có thể dùng Public Key của mình để mở ra kiểm tra "À đúng là ông này ký rồi".
6. Perfect Forward Secrecy (PFS)
Vấn đề: Nếu Hacker thu thập TOÀN BỘ traffic được mã hóa RSA trong 2 năm, rồi một ngày hack được Private Key của Server -> Hacker giải mã được toàn bộ traffic của 2 năm qua!
Giải pháp (PFS): Mỗi session dùng một khóa tạm thời riêng biệt (dùng Diffie-Hellman). Private Key của Server chỉ dùng để xác thực, không dùng để mã hóa session. Key session hết là mất, dù Server bị mất Private Key thì traffic cũ vẫn an toàn.
📝 Luyện tập Part B (Exam Drills):
- Câu hỏi: Thuật toán mã hóa đối xứng nào là chuẩn mực an toàn hiện nay?
Đáp án
AES (Advanced Encryption Standard). - Câu hỏi: Trong HTTPS, RSA được dùng chủ yếu để làm gì?
Đáp án
Để trao đổi khóa đối xứng (Session key) và xác thực Server.
Quảng cáo • Advertisement
📢 Ad Space
Google AdSense