Điểm:2

AES CBC: Khi nào sử dụng IV mới

lá cờ cn

Tôi đang cố gắng tìm hiểu thời điểm sử dụng IV mới cho giao tiếp AES-CBC và liệu phương pháp của tôi có an toàn hay không.

Đây là Trích dẫn từ Thomas Pornin từ một câu hỏi tương tự:

Vì vậy, tóm lại: bạn phải chọn một IV mới, ngẫu nhiên (có trình tạo mật mã mạnh) bất cứ khi nào bạn chuẩn bị mã hóa dữ liệu bản rõ thu được sau khi đã gửi qua dây khối được mã hóa trước đó.

Tôi cần làm rõ về điều này. Thiết lập hiện tại của tôi là hai thiết bị giao tiếp với nhau bằng sơ đồ lệnh/câu trả lời (chính và phụ). Slave có một trình tạo số ngẫu nhiên thực sự.

Ý tưởng của tôi là, chủ yêu cầu IV từ nô lệ mà sau đó nó sử dụng để mã hóa lệnh. Slave giải mã lệnh và sau đó sử dụng bản mã cuối cùng của lệnh làm IV để mã hóa, về cơ bản xem lệnh và câu trả lời dưới dạng một luồng liên tục. Sau khi truyền câu trả lời, nô lệ tạo một IV mới mà sau đó chủ có thể yêu cầu lại.

Điều này có an toàn không? Cảm ơn!

lá cờ cn
Vì dường như bạn chưa thiết lập kênh an toàn giữa chủ và nô lệ yêu cầu IV từ nô lệ qua kênh không được bảo vệ có nghĩa là kẻ tấn công có thể thao túng (-> đã chọn) IV. Điều tồi tệ hơn mọi trình tạo ngẫu nhiên giả mà bạn có thể sử dụng cục bộ.
earthling avatar
lá cờ cn
Bạn có nghĩa là sử dụng xác thực như HMAC? Tôi đã bỏ qua điều này cho ví dụ này, hãy coi nó là hiện tại.
kelalaka avatar
lá cờ in
Nguy hiểm.... [Tại sao CBC với IV có thể dự đoán được coi là không an toàn trước cuộc tấn công bằng văn bản gốc đã chọn?](https://crypto.stackexchange.com/q/3883/18298)
earthling avatar
lá cờ cn
Nếu IV được yêu cầu được truyền đi với xác thực, ví dụ: HMAC, kẻ thù không thể buộc tái sử dụng IV, phải không?
foreverska avatar
lá cờ cn
Điều tốt nhất tôi có thể giải thích điều này là bạn có nghĩa là nô lệ được yêu cầu gửi IV theo HMAC và chủ không tiếp tục nếu HMAC không thành công. Nếu kẻ tấn công (giả vờ là nô lệ) chỉ phát đi phát lại cùng một thông báo HMACed thì điều đó sẽ vượt qua bước kiểm tra này và buộc IV phải sử dụng lại. Trừ khi chủ nhân đưa ra một thách thức phải được đưa vào IV. Vì vậy, bạn có một cơ chế phản hồi thách thức cho cơ chế phản hồi thách thức của mình như một biện pháp hỗ trợ ban đầu cho mã hóa được sử dụng kém. Trường hợp tốt nhất của bạn là sử dụng mã hóa theo quy định (với IV hoàn toàn ngẫu nhiên) và bao gồm thử thách dưới dạng văn bản gốc.
Điểm:3
lá cờ cn

Có thể không khôn ngoan nếu để người tham gia khác chọn IV của bạn. Nếu không có gì khác, kẻ tấn công có thể buộc tái sử dụng IV.

Phổ biến hơn, các lược đồ thách thức và phản hồi đặt thách thức bên trong văn bản thuần túy và để khóa/IV được sử dụng theo quy định. Việc người tham gia khác có thể mã hóa một thử thách được chọn ngẫu nhiên thường là bằng chứng về quyền sở hữu khóa.

Bạn dường như có một số lo ngại rằng phản hồi từ nô lệ theo một cách nào đó sẽ được gắn với phản hồi của chủ. Một giao thức phổ biến mà tôi có thể nghĩ đến ở đây sẽ là giao thức bánh cóc kép. Trong đó (đại khái) các văn bản đơn giản thông báo một bước dẫn xuất quan trọng mà cả hai bên theo dõi một cách độc lập.

Điểm:2
lá cờ fr

Nếu bạn không có một kênh an toàn, thì bạn không thể tin tưởng vào IV mà phía bên kia đang gửi cho bạn, vì kẻ tấn công rất có thể can thiệp vào nó. Ngay cả khi bạn có một kênh an toàn, phía bên kia có thể không được coi là đặc biệt đáng tin cậy.

Nếu thiết bị chính của bạn có một số loại CSPRNG, cho dù được cung cấp bởi trình tạo số ngẫu nhiên thực sự hay không, bạn có thể sử dụng thiết bị đó. Mặt khác, nếu bạn có thể có một số loại bộ đếm liên tục, một cách dễ dàng để xử lý việc này là sử dụng hàm dẫn xuất khóa như HKDF. Chỉ cần sử dụng khóa dùng chung của bạn làm đầu vào entropy trong hàm dẫn xuất khóa, sử dụng bộ đếm làm muối, sau đó tạo cả hai một khóa mới và IV cho mỗi tin nhắn. Gửi bộ đếm thay vì IV cùng với tin nhắn và phía bên kia có thể lấy được khóa của bạn.

Điều này có thể hoạt động ngay cả khi bạn không có bộ đếm liên tục nếu thiết bị chính có đồng hồ đáng tin cậy. Bạn có thể sử dụng dấu thời gian cộng với bộ đếm tạm thời hơn hoặc bất kỳ loại dữ liệu nào khác được đảm bảo không lặp lại và sử dụng dữ liệu đó trong HKDF. Sau đó, bạn chỉ cần gửi nó cùng với tin nhắn và cả hai bên có thể đồng ý về khóa bí mật và IV.

Như foreverska đã đề cập, bạn cũng có thể sử dụng giao thức bánh cóc kép, mặc dù điều này phức tạp hơn. Nó cũng yêu cầu cả hai bên, ít nhất là ban đầu, phải có CSPRNG, vì bạn cần một CSPRNG cho các khóa Diffie-Hellman.

Đă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.