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

ChaCha20-Poly1305: mã hoá dòng + xác thực trong một bước, và sự thật về tốc độ

ChaCha20-Poly1305 hay được giới thiệu là 'nhanh hơn AES' — nhưng đo thật trên máy có tăng tốc AES phần cứng thì AES-GCM lại nhanh gấp đôi. Bài này dựng demo thật bằng python cryptography: mã hoá AEAD sinh tag 16 byte, lật 1 bit ciphertext bị bắt ngay (InvalidTag), đổi AAD cũng bị bắt, và đo tốc độ trung thực trên CPU có lệnh AES.

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

mTLS: khi server cũng đòi client trình chứng chỉ — xác thực hai chiều tận tầng TLS

HTTPS thường chỉ có client xác minh server. mTLS lật thêm một nửa: server cũng bắt client trình chứng chỉ hợp lệ. Bài này tự dựng một CA nội bộ bằng openssl, ký cert cho server và client, rồi đo output thật ba tình huống: client hợp lệ bắt tay thành công, client không cert bị từ chối, và client giả cùng tên nhưng CA khác cũng bị chặn — vì danh tính đến từ chữ ký CA, không phải cái tên.

Lập trình 22/09/2026 6 phút

MVCC và VACUUM: vì sao UPDATE làm bảng phình 9 lần dù số dòng không đổi

PostgreSQL không sửa dòng tại chỗ — mỗi UPDATE tạo một phiên bản mới và để lại 'xác chết' (dead tuple). Bài này đo thật: một bảng 100.000 dòng sau 8 lần UPDATE toàn bộ phình từ 3.5MB lên 31MB với 799.810 dead tuple, dù vẫn đúng 100.000 dòng sống. VACUUM dọn dead tuple (dead về 0) nhưng không trả đĩa; chỉ VACUUM FULL trả bảng về 3.5MB — nhưng khoá cả đọc. Hiểu MVCC để không bị bloat bất ngờ.