Điểm:1

Có thể tránh IV bản rõ trong AES không?

lá cờ ke

Kịch bản

Sử dụng AES 256 với chế độ CBC. (Xác thực được thực hiện riêng. Bỏ qua ở đây.)

Mục tiêu (giải thích thêm sau)

Để tránh gửi IV không được mã hóa.

Nhưng vì điều này đang được thực hiện bằng cách sử dụng .NET có chức năng buộc chúng tôi phải sử dụng IV, nên chúng tôi không thể chỉ thêm 16 byte ngẫu nhiên vào trước rồi loại bỏ 16 byte đầu tiên sau khi giải mã.

Kế hoạch

Thêm 16 byte ngẫu nhiên ("IV1"), và bên cạnh đó, hãy sử dụng 16 byte có giá trị bằng 0 làm IV ("IV0"). Sau đó gửi bản mã mà không có 16 byte đầu tiên.

Việc giải mã sẽ được thực hiện bởi người nhận trước tiên xác định khối đầu tiên của bản mã sẽ là (đối với khóa AES đó, cho bất kỳ tin nhắn) bằng cách mã hóa thứ gì đó theo cách đã nói ở trên (chỉ được thực hiện một lần cho mỗi khóa) và lấy 16 byte đầu tiên của bản mã thu được.

Sau đó, họ thêm các byte đó vào bản mã đã cắt-nhận-được để lấy bản mã chưa cắt ban đầu, sau đó giải mã nó bằng IV ("IV0") trong số 16 byte giá trị 0 (tức là chúng sử dụng chức năng giải mã của .NET, cung cấp cho nó IV cần thiết là 16 số 0 đó).

Sau đó, chúng loại bỏ 16 byte đầu tiên của kết quả (được nhận từ .NET sau khi .NET loại bỏ 16 byte đầu tiên đầu tiên là IV) vì đó là 16 byte ngẫu nhiên được thêm vào trước ("IV1").

Nhưng tại sao?

Giao tiếp IV trong bản rõ mang lại lợi thế cho kẻ tấn công vũ phu - chúng chỉ có thể giải mã một khối (16 byte) và so sánh nó với IV để kiểm tra xem khóa có đúng không. (Có lẽ có nhiều kênh tấn công hơn mà tôi không biết.)

Vì vậy, câu hỏi của tôi là

Kế hoạch này có vẻ ổn, hay có một số cạm bẫy trong đó?

Marc Ilunga avatar
lá cờ tr
Câu hỏi như vậy, có vẻ khó trả lời đúng. Có lẽ một cải tiến có thể thêm một thực tế là khóa không phải ngẫu nhiên mà xuất phát từ không gian entropy thấp như bạn đã đề cập trong nhận xét của mình cho câu trả lời đầu tiên?
Maarten Bodewes avatar
lá cờ in
Thông thường IV ** là ** có tiền tố cho tin nhắn.Tuy nhiên, IV không mang lại cho kẻ tấn công bất kỳ lợi thế nào hơn bất kỳ khối bản mã nào khác vì nó đóng vai trò là vectơ cho khối tiếp theo. Điều này được truyền tải bởi [câu trả lời của Fractalice](https://crypto.stackexchange.com/a/96314/1172). Đối với bất kỳ mật mã nào, chúng tôi giả định rằng kẻ tấn công có thể biết (một phần) bản rõ. Như vậy, việc ẩn IV không tạo ra bất kỳ sự khác biệt nào, nó được coi là công khai.
lá cờ ke
@MaartenBodewes `Thông thường IV được đặt trước tin nhắn. ` - Từ khóa ở đây là "thường". Nếu đây là trường hợp của CBC và IV không được thực hiện nữa - quan điểm của tôi trong câu hỏi sẽ đúng. I E. giao tiếp IV trong bản rõ sẽ giúp kẻ tấn công có lợi thế trong việc cưỡng bức khóa. Vì IV là XORd với bản rõ trước khi mã hóa - không phải vậy. Như nhận xét của Fractalice ngụ ý.
Maarten Bodewes avatar
lá cờ in
Bạn vẫn đang hiểu lầm. IV được gửi **và** nó được XOR'ed với bản rõ trước khi mã hóa, do đó, nó được coi là có sẵn cho kẻ thù. Tất cả các mật mã hiện đại nên cung cấp khả năng bảo vệ chống lại các cuộc tấn công bằng văn bản rõ đã chọn. Điều này được gọi là IND-CPA: không thể phân biệt dưới cuộc tấn công bằng văn bản đã chọn và nó được cung cấp bởi hầu hết nếu không muốn nói là tất cả các chế độ hoạt động ngoại trừ ECB. Không có * cạnh * nào đạt được nếu mật mã được bảo mật IND-CPA và việc cưỡng bức vũ phu đối với AES hoàn toàn phụ thuộc vào kích thước khóa - đối với AES-256 chắc chắn là sự bảo vệ rộng rãi.
lá cờ ke
@MaartenBodewes Cảm ơn bạn đã làm rõ, tuy nhiên, tôi nghĩ rằng tôi nên làm rõ hơn những gì tôi nghĩ lúc đầu (điều mà bây giờ tôi biết là sai). Tôi nghĩ rằng IV hoạt động như thế này (trong CBC): a) Thêm IV vào trước bản rõ. b) Mã hóa mà không cần XOR khối đầu tiên bằng bất kỳ thứ gì. Nếu đây là trường hợp thực tế, sẽ không cần gửi IV, chỉ cần làm cho nó ngẫu nhiên và người nhận sẽ chỉ cần giải mã và vứt bỏ khối đầu tiên. Cảm ơn một lần nữa.
Maarten Bodewes avatar
lá cờ in
Không có nhiều khác biệt trong việc sử dụng IV thông thường, điểm khác biệt duy nhất là IV thực tế hiện là IV *được mã hóa*. Nó thực sự đôi khi được sử dụng để ngẫu nhiên hóa một giá trị truy cập để IV không thể đoán trước được đối với kẻ thù. Biết IV hay không không quan trọng, nhưng đối với CBC, IV ngẫu nhiên (giả) không thể đoán trước là bắt buộc. *Tốt nhất là* IV sẽ được mã hóa bằng một khóa khác.Lưu ý rằng bản rõ có thể là tất cả các số không và vì kẻ tấn công biết trước bất kỳ khối được mã hóa nào (công khai nhưng không thể đoán trước), nên việc rò rỉ IV vẫn sẽ không tạo ra sự khác biệt.
Điểm:4
lá cờ in

Tôi không hoàn toàn hiểu kế hoạch, nhưng:

Trong CBC, mỗi khối bản mã đóng vai trò IV cho khối tiếp theo. Vì vậy, kẻ tấn công bruteforce có thể tấn công khối tiếp theo, vì khối bản mã sẽ được gửi rõ ràng.

Bạn có thực sự sợ rằng ai đó sẽ tấn công khóa 256 bit không? Điều này là không thể.

Ngoài ra, vui lòng cân nhắc sử dụng mã hóa được xác thực để ngăn chặn những kẻ tấn công đang hoạt động.

lá cờ ke
`kẻ tấn công bruteforce có thể tấn công khối tiếp theo` - chúng kiểm tra một khóa và nhận được kết quả. Làm thế nào để họ biết đó là một trong những chính xác? AFAIK AES sẽ chỉ chuyển đổi 16 byte thành 16 byte. Luôn. Không bao giờ bị lỗi (ngoại trừ lỗi cuối cùng do phần đệm). Tôi có lầm không?
lá cờ ke
`Bạn có thực sự sợ rằng ai đó sẽ tấn công một khóa 256 bit không?` - Không phải là một khóa ngẫu nhiên. Khóa dựa trên mật khẩu dễ nhớ mà người dùng không quan tâm đến bảo mật chọn (nghĩ là "password1", v.v.).
lá cờ ke
`vui lòng cân nhắc sử dụng mã hóa được xác thực` - Như tôi đã đề cập trong câu hỏi của mình: `Việc xác thực được thực hiện riêng. Bỏ qua ở đây.`.
Fractalice avatar
lá cờ in
Nếu kẻ tấn công không biết gì về bản rõ, làm sao bạn có thể kiểm tra khối đầu tiên bằng bản rõ IV? Lưu ý rằng khối bản mã đầu tiên được giải mã là thông điệp IV xor, vì vậy kẻ tấn công chỉ nhận được một ứng cử viên thông điệp trên mỗi lần đoán khóa. Và, như bạn đã nhận thấy - khối cuối cùng thường có văn bản gốc đã biết - phần đệm, cho phép thực hiện bruteforce như vậy cuối cùng.
lá cờ ke
Cảm ơn. Tôi đã bị đánh lừa bởi các hướng dẫn nói rằng IV chỉ đơn giản là được thêm vào trước văn bản gốc. Nếu đó là trường hợp, lo lắng của tôi sẽ được thành lập. Như vậy, IV là XORd với khối đầu tiên thay thế (trong CBC) để giải quyết vấn đề đó. Cảm ơn một lần nữa.
Fractalice avatar
lá cờ in
@ispiro IV thực sự được gửi rõ ràng, đó là "IV" cho khối đầu tiên. "IV" cho khối thứ hai là khối bản mã đầu tiên, khối này cũng được gửi rõ ràng.CBC được thiết kế như vậy và không có vấn đề gì với điều đó. Nó chỉ phải là không thể đoán trước.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.