Web 22/09/2026 5 phút

Cookie và session: cách web nhớ bạn, và ba thuộc tính chặn tấn công

HTTP không có trạng thái — mỗi request độc lập, server không tự biết ai gửi. Cookie là cách vá: server gửi Set-Cookie, client tự gửi lại ở mọi request sau. Bài này đo thật luồng session bằng curl, và mổ ba thuộc tính bảo mật sống còn: HttpOnly chống XSS trộm cookie, Secure buộc HTTPS, SameSite chống CSRF.

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.