Hãy tưởng tượng bạn khóa nhà bằng một ổ khóa tự thiết kế. Không ai biết cấu tạo bên trong, và bạn tin rằng đó là điều giữ nhà an toàn. Nhưng nếu một ngày ai đó tìm ra cơ chế hoạt động, kẻ đó không chỉ vào được nhà bạn mà còn vào được nhà của tất cả mọi người dùng cùng loại ổ khóa. Đây chính là bài học cốt lõi mà Auguste Kerckhoffs, nhà mật mã học người Hà Lan, đúc kết từ năm 1883: an ninh của một hệ thống mã hóa phải phụ thuộc vào tính bí mật của chìa khóa, không phải vào việc giấu thuật toán.
Grokking: Kerckhoffs's principle, tại sao giấu thuật toán không phải bảo mật?
Nguyên lý Kerckhoffs khẳng định: bảo mật phải dựa vào chìa khóa bí mật, không phải giấu thuật toán. Từ bài học Enigma đến AES hiện đại, thiết kế mở luôn an toàn hơn bảo mật bằng sự mờ ám.

Nguyên lý Kerckhoffs là gì?
Trong bài viết gốc "La Cryptographie Militaire", Kerckhoffs đưa ra sáu nguyên tắc cho các hệ thống mật mã quân sự. Trong đó, nguyên tắc thứ hai được hậu thế ghi nhớ nhiều nhất: hệ thống không cần phải bí mật, nó có thể rơi vào tay đối phương mà không gây ra vấn đề gì, miễn là chìa khóa vẫn được giữ kín. Nói cách khác, hệ thống phải được thiết kế trên giả định kẻ tấn công biết rõ cách nó hoạt động.
Hơn nửa thế kỷ sau, nhà toán học Claude Shannon tái khẳng định nguyên lý này bằng một câu ngắn gọn hơn: "Kẻ thù biết hệ thống" (the enemy knows the system). Câu này được gọi là "Shannon's maxim" và trở thành kim chỉ nam cho toàn bộ ngành mật mã học hiện đại.
Enigma: bài học đắt giá về "bảo mật bằng sự mờ ám"
Máy Enigma của Đức Quốc xã trong Thế chiến II là minh chứng điển hình cho cái giá phải trả khi đặt niềm tin vào "bảo mật bằng sự mờ ám". Quân đội Đức tin rằng độ phức tạp cơ học của Enigma, với hàng triệu tổ hợp rotor, đủ sức ngăn đối phương giải mã. Họ đặt niềm tin vào việc giữ bí mật thiết kế thay vì cải thiện quy trình quản lý chìa khóa.
Thực tế diễn ra khác hoàn toàn. Marian Rejewski, nhà toán học Ba Lan, đã suy luận ra cấu trúc logic của máy Enigma mà không cần chạm vào bất kỳ rotor nào, chỉ bằng phân tích toán học thuần túy. Khi quân Đồng minh thu được các máy Enigma nguyên vẹn cùng sổ mã từ tàu ngầm U-110, việc giải mã trở nên có hệ thống và nhanh chóng hơn. Điểm mấu chốt là thuật toán đã bị lộ. Khi bản thân thiết kế có điểm yếu, sự bí mật không thể cứu được cả hệ thống.
Thiết kế mở: tại sao công khai lại an toàn hơn?
Nguyên lý Kerckhoffs dẫn tới một hệ quả tưởng như nghịch lý: thuật toán mã hóa tốt nhất là thuật toán được công khai hoàn toàn. Lý do rất thực tế: khi hàng nghìn chuyên gia trên thế giới cùng rà soát một thuật toán, lỗ hổng sẽ được phát hiện và vá nhanh hơn nhiều so với khi chỉ một nhóm nhỏ tiếp cận nó. AES (Advanced Encryption Standard) được NIST lựa chọn sau cuộc thi công khai kéo dài 5 năm, trong đó các ứng viên bị hàng trăm nhà nghiên cứu "mổ xẻ" trước khi Rijndael chiến thắng. Tương tự, RSA, SHA-256 và TLS đều là những tiêu chuẩn được công bố chi tiết.
Ở chiều ngược lại, các thuật toán độc quyền như CSS (Content Scramble System) dùng để bảo vệ DVD đã bị bẻ gãy chỉ sau vài năm, vì thiết kế yếu không được cộng đồng kiểm chứng.
Ứng dụng trong phát triển phần mềm
Nguyên lý này không chỉ áp dụng cho mật mã học mà còn cho bất kỳ hệ thống bảo mật nào. Khi thiết kế cơ chế xác thực API, đừng dựa vào việc giấu điểm cuối (endpoint) hay đặt tên tham số khó đoán. Hãy dùng các chuẩn đã được kiểm chứng như OAuth 2.0, JWT với thuật toán ký công khai, và dồn phần bí mật vào khóa, như secret key hoặc private key. Nếu một hệ thống sụp đổ chỉ vì ai đó đọc được mã nguồn, hệ thống đó đã sai từ khâu thiết kế.
Nguyên lý Kerckhoffs nhắc rằng: thay khóa thì dễ, còn thay thuật toán sau khi nó đã lộ ra cực kỳ tốn kém. Hãy thiết kế hệ thống sao cho thứ duy nhất cần giữ bí mật là thứ rẻ nhất và dễ thay thế nhất.





