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

Mã hóa file bằng mật khẩu: ghép AES, PBKDF2 và salt lại — đo thật bằng openssl

Người dùng nhớ mật khẩu, nhưng AES-256 cần khóa nhị phân 32 byte — khoảng cách đó do hàm dẫn khóa (KDF) lấp. Bài này mã hóa một file thật bằng openssl với AES-256-CBC + PBKDF2: xem header Salted__ tự chứa salt, giải mã đúng ra nội dung còn sai mật khẩu thì bad decrypt, và cùng file+mật khẩu hai lần cho bản mã khác nhau nhờ salt ngẫu nhiên.