Tôi hiểu rằng đã có một số câu hỏi tương tự ở đây nhưng câu hỏi của tôi hơi khác một chút ở chỗ tôi muốn chia AES 256 bit thành hai khóa 128 bit và sau đó sử dụng một khóa AES 128 bit khác để mã hóa hai khóa 128 bit để vận chuyển phím giữa hai bộ xử lý. điều này có an toàn để làm không?
Nó chỉ cung cấp khả năng bảo mật 128-bit, bởi vì kẻ tấn công chỉ cần phá khóa vận chuyển 128-bit. Điều này an toàn, nhưng bạn không nhận được bất kỳ sự bảo mật nào khi sử dụng khóa 256 bit.
Nếu bạn sử dụng hai khóa 128 bit riêng biệt, thì thực sự sẽ hơi phức tạp một chút. Nếu kẻ tấn công có một số cách xác minh độc lập rằng chúng đã giải mã chính xác từng nửa của khóa 256 bit—ví dụ: nếu thuật toán mã hóa khóa được xác thực—thì chúng có thể giải mã bằng
- Tìm khóa 128 bit đầu tiên bằng vũ lực ($2^{128}$ bước);
- Tìm khóa 128 bit thứ hai bằng vũ lực ($2^{128}$ bước);
đó là $2^{128} + 2^{128} = 2 \times 2^{128} = 2^{129}$ các bước và do đó bạn chỉ nhận được bảo mật 129-bit.
Tuy nhiên, nếu thuật toán mã hóa khóa không cung cấp cách xác minh việc giải mã chính xác và khóa 256 bit là ngẫu nhiên, cuộc tấn công đó không hoạt động vì không có cách nào xác minh ở bước #1 rằng bạn đã có khóa chính xác cho nửa đầu. Thuật toán brute force sau đó trở thành:
- Đối với mỗi giá trị có thể (trong số $2^{128})$ của khóa đầu tiên:
- Đối với mỗi giá trị có thể (trong số $2^{128}$) của khóa thứ hai:
- Hãy thử giải mã từng nửa khóa được vận chuyển bằng tổ hợp đó, sau đó giải mã thư bằng khóa 256 bit mà bạn nhận được.
Và đây là $2^{128} \times 2^{128} = 2^{128 + 128} = 2^{256}$ các bước và không tốt hơn là chỉ tấn công khóa 256 bit bằng vũ lực.
Các thuật toán mã hóa thường được đề xuất ngày nay được gọi là "AEAD" (mã hóa được xác thực với dữ liệu được liên kết), thuộc loại đầu tiên và do đó bạn chỉ nhận được độ mạnh 129 bit. Bạn phải sử dụng các thuật toán cũ hơn, không phải AEAD để vận chuyển các nửa khóa.