🔐 Giới thiệu về Công nghệ Mật mã – Từ Cổ điển đến Hiện Đại
Nếu hỏi “bảo mật thông tin” bắt đầu từ đâu, câu trả lời gần như chắc chắn sẽ dẫn bạn đến mật mã học (cryptography). Đây là nghệ thuật (và khoa học) biến thông tin từ dạng dễ đọc thành dạng không thể đọc được nếu không có “chìa khóa” phù hợp. Ngày xưa, mục tiêu gần như duy nhất của mật mã là giữ bí mật nội dung – ví dụ như Caesar Cipher của La Mã. Nhưng thời đại số đã mở rộng phạm vi của mật mã ra rất nhiều:
💡 Ví dụ thực tế: Khi bạn tải phần mềm từ Cisco hoặc Microsoft, nhà cung cấp thường cho kèm một “chuỗi băm” (hash value). Bạn có thể tự tính lại chuỗi băm từ file tải xuống. Nếu giá trị khớp, bạn chắc chắn file không bị chỉnh sửa hay chèn mã độc.
🌀 Thuật toán Băm – Xác thực mà không cần lộ dữ liệu
Băm (Hashing) là một kỹ thuật cốt lõi để đảm bảo tính toàn vẹn dữ liệu. Thay vì so sánh nguyên file, ta so sánh một “dấu vân tay” duy nhất được sinh ra từ nội dung file.
Đặc điểm của hàm băm:
Ví dụ với SHA-256:
"Changing the way we work, live, play and learn" = d8a04ed6a21ff9c71020490a864aa09ce8afb81198d5ee69ff 8d92f69035dfb0
"Changing the way we work, live, play and learn." = 9d85598ccf40898b5f0b5743edf71a0139d7bc502c985f6cbc be1f8cc0efbdd9
Chỉ thêm một dấu “.”, toàn bộ giá trị băm thay đổi hoàn toàn.
⚠️ Vấn đề Va chạm Băm (Hash Collision)
Vì giá trị băm có độ dài cố định, số khả năng đầu ra là hữu hạn. Khi hai dữ liệu khác nhau cho cùng một giá trị băm, đó là va chạm băm.
💡 CRC được thiết kế để phát hiện lỗi ngẫu nhiên, không phải chống sửa đổi cố ý. Các thuật toán băm mật mã (MD5, SHA, …) được thiết kế để chống lại cả các thay đổi ác ý.
🛠️ Các Thuật toán Băm Phổ biến
Không còn an toàn (deprecated):
Khuyến nghị dùng:
🎯 Ứng dụng Thực tế trong Công việc IT
Nếu hỏi “bảo mật thông tin” bắt đầu từ đâu, câu trả lời gần như chắc chắn sẽ dẫn bạn đến mật mã học (cryptography). Đây là nghệ thuật (và khoa học) biến thông tin từ dạng dễ đọc thành dạng không thể đọc được nếu không có “chìa khóa” phù hợp. Ngày xưa, mục tiêu gần như duy nhất của mật mã là giữ bí mật nội dung – ví dụ như Caesar Cipher của La Mã. Nhưng thời đại số đã mở rộng phạm vi của mật mã ra rất nhiều:
- Bảo mật (Confidentiality) – Chỉ những ai được cấp quyền mới đọc được thông tin.
- Tính toàn vẹn dữ liệu (Integrity) – Mọi thay đổi dù là nhỏ nhất trên dữ liệu đều phải bị phát hiện.
- Xác thực nguồn gốc (Authentication) – Biết chắc dữ liệu đến từ đúng nguồn, không bị giả mạo.
- Không thể chối bỏ (Non-repudiation) – Người gửi không thể phủ nhận việc đã gửi dữ liệu.
💡 Ví dụ thực tế: Khi bạn tải phần mềm từ Cisco hoặc Microsoft, nhà cung cấp thường cho kèm một “chuỗi băm” (hash value). Bạn có thể tự tính lại chuỗi băm từ file tải xuống. Nếu giá trị khớp, bạn chắc chắn file không bị chỉnh sửa hay chèn mã độc.
🌀 Thuật toán Băm – Xác thực mà không cần lộ dữ liệu
Băm (Hashing) là một kỹ thuật cốt lõi để đảm bảo tính toàn vẹn dữ liệu. Thay vì so sánh nguyên file, ta so sánh một “dấu vân tay” duy nhất được sinh ra từ nội dung file.
Đặc điểm của hàm băm:
- Một chiều (One-way) – Dễ tính toán từ dữ liệu → giá trị băm, nhưng gần như không thể đảo ngược. Giống như xay hạt cà phê: xay thì dễ, nhưng ghép lại hạt nguyên vẹn gần như bất khả thi.
- Đầu ra cố định (Fixed length) – Dù dữ liệu vào dài bao nhiêu, kết quả băm luôn có độ dài cố định (VD: SHA-256 luôn ra 256 bit).
- Hiệu ứng tuyết lở (Avalanche effect) – Thay đổi 1 bit dữ liệu → giá trị băm thay đổi hoàn toàn.
Ví dụ với SHA-256:
"Changing the way we work, live, play and learn" = d8a04ed6a21ff9c71020490a864aa09ce8afb81198d5ee69ff 8d92f69035dfb0
"Changing the way we work, live, play and learn." = 9d85598ccf40898b5f0b5743edf71a0139d7bc502c985f6cbc be1f8cc0efbdd9
Chỉ thêm một dấu “.”, toàn bộ giá trị băm thay đổi hoàn toàn.
⚠️ Vấn đề Va chạm Băm (Hash Collision)
Vì giá trị băm có độ dài cố định, số khả năng đầu ra là hữu hạn. Khi hai dữ liệu khác nhau cho cùng một giá trị băm, đó là va chạm băm.
- Với CRC-32 (32 bit), chỉ có ~4 tỉ giá trị → kẻ tấn công dễ tìm va chạm.
- Với SHA-256 (256 bit), số khả năng đầu ra khổng lồ (~1.16 × 10^77) → cực kỳ khó xảy ra va chạm.
💡 CRC được thiết kế để phát hiện lỗi ngẫu nhiên, không phải chống sửa đổi cố ý. Các thuật toán băm mật mã (MD5, SHA, …) được thiết kế để chống lại cả các thay đổi ác ý.
🛠️ Các Thuật toán Băm Phổ biến
Không còn an toàn (deprecated):
- MD5 – 128 bit. Dễ bị tấn công tìm va chạm. Không nên dùng trong bảo mật.
- SHA-1 – 160 bit. Từng được coi là an toàn, nhưng đã bị chứng minh có thể tìm va chạm.
Khuyến nghị dùng:
- SHA-2 family – Cải tiến mạnh từ SHA-1, nhiều biến thể:
- SHA-256 – 256 bit (phổ biến, dùng nhiều trong TLS, chữ ký số)
- SHA-384 – 384 bit
- SHA-512 – 512 bit (dùng cho hệ thống yêu cầu bảo mật cực cao)
🎯 Ứng dụng Thực tế trong Công việc IT
- Xác thực tải xuống phần mềm – Kiểm tra file ISO, firmware trước khi cài đặt.
- Chữ ký số (Digital Signature) – Dùng hàm băm trước khi mã hóa bằng khóa riêng để tạo chữ ký.
- Bảo vệ mật khẩu – Hệ thống không lưu mật khẩu dạng thô, mà lưu giá trị băm kèm “muối” (salt).
- Phát hiện thay đổi file – IDS/IPS hoặc công cụ giám sát integrity (Tripwire, OSSEC).