Bảo mật 22/09/2026 5 phút

Hàm băm mật mã: dấu vân tay một chiều của dữ liệu — đo bằng openssl

Hàm băm biến dữ liệu bất kỳ thành một chuỗi cố định như dấu vân tay. Nhưng nhiều người nhầm nó là mã hóa. Bài mở đầu sê-ri mật mã đo thật bốn tính chất bằng openssl: cùng đầu vào cho cùng digest, đổi một ký tự thì digest khác hoàn toàn (chỉ 2/64 ký tự trùng), kích thước luôn cố định, và vì sao MD5 đã vỡ còn SHA-256 thì chưa.

Bảo mật 22/09/2026 5 phút

Vì sao KHÔNG lưu mật khẩu bằng SHA trần: salt, hàm cố ý chậm — đo thật

SHA-256 rất tốt để kiểm toàn vẹn, nhưng dùng nó lưu mật khẩu là sai lầm nguy hiểm — vì nó quá nhanh. Bài này đo thật: SHA-256 chạy 2,3 triệu hash/giây (kẻ bẻ khóa mơ ước), còn PBKDF2 cố ý chậm chỉ 10/giây — chậm hơn 231.000 lần mà người đăng nhập không hề thấy. Cùng salt để rainbow table vô dụng.

Bảo mật 22/09/2026 5 phút

HMAC: xác thực toàn vẹn kèm khóa bí mật — và vì sao đừng tự chế bằng SHA(key+msg)

Hash trần chỉ chống lỗi ngẫu nhiên, không chống kẻ địch: ai cũng sửa thông điệp rồi tính lại hash. HMAC trộn một khóa bí mật vào hàm băm nên chỉ người có khóa mới tạo được mã đúng. Bài này đo thật bằng openssl: sai khóa hay sửa một chữ số đều làm HMAC khác hẳn, và vì sao SHA256(key+msg) tự chế dính length-extension attack.

Bảo mật 22/09/2026 5 phút

AES và chế độ mã hóa: vì sao ECB lộ mẫu dữ liệu — thấy tận byte

AES mã hóa từng khối 16 byte; chế độ quyết định cách ghép các khối, và chọn sai thì mã hóa mà vẫn lộ thông tin. Bài này đo thật: cùng bốn khối giống hệt, ECB cho bốn khối mã GIỐNG HỆT (lộ mẫu — như ảnh chim cánh cụt kinh điển), còn CBC cho bốn khối khác nhau. Kèm vai trò của IV: cùng bản rõ, IV khác thì bản mã khác.

Bảo mật 22/09/2026 5 phút

AES-GCM: mã hóa vừa giấu vừa chống sửa — và vì sao nonce không được lặp

CBC giấu được nội dung nhưng không biết bản mã có bị sửa. AES-GCM giải quyết: mã hóa và tạo tag xác thực trong một bước, sửa một byte là giải mã từ chối. Bài này đo thật bằng python cryptography: bản mã kèm tag, tamper cho InvalidTag, và cái bẫy chết người — lặp nonce làm lộ XOR hai bản rõ mà không cần khóa.

Bảo mật 22/09/2026 5 phút

RSA: mã hóa bất đối xứng — hai khóa, và vì sao không mã được dữ liệu lớn

AES mã nhanh nhưng cả hai bên phải chung một khóa bí mật — làm sao trao khóa qua mạng không lộ? RSA giải: mỗi người một cặp khóa công khai + riêng. Bài này đo thật bằng openssl: ai cũng mã bằng khóa công khai, chỉ khóa riêng giải được; giải sai khóa thất bại; và giới hạn cốt tử — RSA chỉ mã được vài trăm byte nên thực tế dùng mã hóa lai.