Định nghĩa vấn đề
Mục tiêu của mật mã là ước tính một quá trình theo đó
crypt(x)
truyền tải không có thông tin về x nhưng tồn tại một hàm decrypt
sao cho
decrypt(crypt(x)) == x
Nếu việc giải mã và mật mã chỉ được thực hiện trong cùng một hoạt động của cùng một chương trình, bạn có thể thực hiện điều này một cách hoàn hảo bằng cách sử dụng trạng thái ẩn:
var map = {}; // A hidden hashmap.
function crypt(x) {
var k = unique_unforgeable_value();
map[k] = x;
return k;
}
function decrypt(k) { return map[k]; }
Trong thực tế, crypt
và decrypt
được gọi bởi các chương trình khác nhau hoặc các lần chạy khác nhau của cùng một chương trình, vì vậy chúng ta cần xấp xỉ crypt
bằng cách sử dụng hàm xác định có đầu ra không thể phân biệt được với các bit ngẫu nhiên - nó không thể bị ép (theo nghĩa mã hóa Shannon) do đó không có bit cấu trúc bổ sung nào có thể được sử dụng để thu thập thông tin về x.
de c r yp t ∘ c r yp t = i de n t i t y
Câu trả lời
Bằng cách giới thiệu một thuật toán có thể nén đơn giản với một bí mật không thể nén được
crypt = crypt_algo(secret)
decrypt = decrypt_algo(secret)
chúng ta có thể ước chừng mục tiêu trên. crypt
vàdecrypt
có nội dung thông tin cao do nội dung thông tin bí mật cao mặc dù crypt_algo
và decrypt_algo
có nội dung thông tin thấp.
secret
cần phải được giữ từ những kẻ tấn công để làm việc này vì nếu không, kẻ tấn công có thể chỉ đơn giản là làm món cà ri ở trên. Thuật toán không cần phải giữ bí mật vì nó chỉ cung cấp một phần nhỏ nội dung thông tin của hàm bị cong.
Hãy cẩn thận
"Bảo mật mật mã phải dựa vào khóa bí mật thay vì thuật toán bí mật."
Tôi không đồng ý với thay vì .
Bạn có thể có được một số biện pháp phòng thủ chuyên sâu bằng cách giữ bí mật cả hai, nhưng thử nghiệm crypt_algo
rất khó, vì vậy, trong lịch sử, các thuật toán bí mật được phát triển trong nhà bởi những người nghiệp dư đã bị tấn công tồi tệ hơn khi bị tấn công so với những số lượng lớn đã được xem xét cẩn thận bởi số lượng lớn chuyên gia mật mã. Đây là lý do tại sao bảo mật bằng cách che khuất đã nhận được một tên xấu xứng đáng. "Sự tối nghĩa" ở đó đề cập đến các nỗ lực giữ bí mật thuật toán để thay thế cho các khóa bảo vệ đúng cách.