Tin nhắn có thể bị chặn trước đó. Nó không phải là một lỗ hổng cho phép khám phá chìa khóa?
Không, để chọn đúng khóa (xem phần 1 bên dưới). AES-256 được thiết kế để chống lại những Tấn công bằng văn bản đã biết. Đó là một giả thuyết tiêu chuẩn, và thực sự $2^{256}$ lớn đến mức không có gì phải lo lắng khi có thể tìm thấy khóa bằng cách tìm kiếm nó (nói một cách dễ hiểu, sự lãng phí tài nguyên được gọi là khai thác bitcoin cho đến nay đã thực hiện công việc tương đương với ít hơn $2^{100}$ mã hóa AES). Chúng tôi an toàn ngay cả khi chúng tôi đưa ra giả thuyết Máy tính lượng tử liên quan đến mật mã bao giờ trở thành một thứ.
Các biện pháp bảo vệ duy nhất mà người ta cần để chống lại việc khám phá khóa trong AES-256 là
- Chọn khóa về một cách thống nhất một cách ngẫu nhiên. Một mật khẩu sẽ không làm, kéo dài phím sẽ không cắt nó.
- Không tiết lộ nó; xem bắt buộc XKCD.
- Ngăn chặn việc trích xuất nó từ bất kỳ thiết bị nào mà nó được lắp vào.Đây là phần khó: làm thế nào bạn chắc chắn PC của bạn không bị nhiễm một số trojan? Và sau đó có tấn công kênh phụ và tấn công lỗi.
Giả sử, tải trọng dài 40 bit. Vì AES đang làm việc với khối dài 16 byte, nên thêm 11 byte nonce ngẫu nhiên duy nhất có hợp lý không hay toàn bộ suy đoán này không đáng để bỏ công sức?
có nữa lý do chính đáng để chèn một số ngẫu nhiên dọc theo thông điệp được mã hóa: cần phải chống lại Tấn công bằng văn bản được chọnvà đặc biệt là ngăn chặn các đối thủ kiểm tra xem hai bản rõ có giống hệt nhau chỉ bằng cách so sánh các bản mã của chúng hay không.
Ngoài ra, lưu ý rằng các ứng dụng điển hình yêu cầu tính bảo mật của bản rõ cũng yêu cầu tính toàn vẹn của nó, nghĩa là mã hóa xác thựcvà mã hóa AES thẳng với phổ biến các chế độ hoạt động của mật mã khối chỉ mã hóa sẽ không cung cấp điều đó ngay cả với IV/nonce ngẫu nhiên. Hơn nữa, một số ứng dụng yêu cầu ngăn chặn chống lại phát lạivà mã hóa được xác thực trực tiếp sẽ không cung cấp điều đó.
Chọn một thuật toán mật mã không phải là việc dễ làm. Xin lỗi, nhưng điều đó không nên được cố gắng bởi một người phải đặt câu hỏi hiện tại.