2010-08-09 43 views
6

Đã có nhiều câu hỏi liên quan đến thế hệ IV, mã hóa và chia sẻ IV giữa người gửi và người nhận, nhưng tôi muốn tạo một bài đăng rõ ràng về cách tốt nhất để gửi IV từ người gửi đến người nhận.Gửi IV cùng với văn bản mã hóa, an toàn?

Từ tất cả các bài đăng mà tôi đã thấy cho đến giờ, tôi không chắc chắn liệu có an toàn khi gửi IV trong "bản rõ" bằng cách thêm nó vào văn bản mã hóa hay không. Vì vậy, câu hỏi đầu tiên là, có an toàn không?

Thứ hai, có cách nào an toàn hơn để chia sẻ IV giữa người gửi và người nhận khi liên lạc bằng cách trao đổi tin nhắn không?

Chúc mừng

+0

Tôi biết đây là câu hỏi cũ, nhưng nếu câu trả lời của tôi hữu ích, bạn có thể chấp nhận câu trả lời đó không? Cảm ơn rất nhiều. – mfanto

+0

Có, sẽ làm như vậy vui vẻ :) – Mystic

Trả lời

11

Có, gửi an toàn cho IV là an toàn. Đây là bằng chứng về lý do tại sao:

Đi chế độ CBC ví dụ:

alt text

Bạn có thể thấy rằng bản mã của một khối được XORed với plaintext của khối tiếp theo. Lý do chúng ta cần một IV là bởi vì trên khối đầu tiên, không có bản mã trước để sử dụng. Nếu có một nguy cơ bảo mật với IV bị bí mật, thì nguy cơ bảo mật sẽ xuất hiện cho mọi khối sau, vì bản mã có vai trò giống như IV.

Mặc dù vậy, bạn cần chắc chắn rằng bạn đã MAC. Tùy thuộc vào cách bạn thực hiện các mã xác thực thông báo, một người nào đó giả mạo với IV có thể giả mạo với bản rõ nguyên nhân về giải mã. Mã hóa một mình không cung cấp tính toàn vẹn của thông điệp.

Ngoài ra, đối với thế hệ IV, nó phụ thuộc vào yêu cầu của bạn. Nhưng thường xuyên nhất, IV của bạn cần phải được ngẫu nhiên và không thể dự đoán được.

+0

Cảm ơn mattjf. Lời giải thích hay. Trên một lưu ý liên quan, mối quan hệ giữa kích thước của bản rõ gốc và bản mã kết quả là gì? Tôi có lẽ sẽ cần phải biết kích thước nếu tôi sẽ được giải nén các bộ phận liên quan trở lại. – Mystic

+2

Vâng, tiếc là câu trả lời là, nó phụ thuộc. Tùy thuộc vào mật mã và chế độ bạn sử dụng, nó sẽ thay đổi. CBC là chế độ phổ biến nhất, yêu cầu IV và yêu cầu được in lên đến kích thước khối. Vì vậy, giả sử bạn muốn mã hóa 4 byte với AES CBC. Bạn sẽ cần 16 byte cho IV, và những 4 byte cần phải được đệm đến 16 byte, với tổng số 32 byte. Bạn có thể sử dụng Ciphertext Stealing để ngăn chặn việc mở rộng khối, hoặc bạn có thể sử dụng chế độ CTR AES.Làm thế nào bạn MACing dữ liệu của bạn? Bạn cần đảm bảo không ai có thể giả mạo dữ liệu được mã hóa của bạn. – mfanto

+0

Tiếp tục: Nếu bạn có thể cung cấp cho các nguyên thủy bạn đang bị ràng buộc để sử dụng, chúng tôi có thể đưa ra đề xuất tốt hơn. Nhưng, trung thực, bạn không nên thiết kế hệ thống mật mã. Bạn có thể sử dụng một tiêu chuẩn hoặc giao thức hiện có không? Chính xác thì bạn đang cố đạt được điều gì? – mfanto

1

Có, an toàn khi làm trong văn bản thuần tuý mà không nên lặp lại.

2

Có, nó an toàn. Nhiều giao thức như WEP và WPA sẽ truyền IV ở dạng văn bản thuần túy. Đây thường là một yêu cầu vì không thể giải mã thông điệp mà không biết iv. Các cuộc tấn công WEP phổ biến nhất liên quan đến việc chụp hàng ngàn IV, nhưng điều này là do RC4 là dễ bị tổn thương đến một Related Key Attack. Nếu bạn đang sử dụng một mật mã đối xứng an toàn thì bạn không phải lo lắng.

Một lỗ hổng đã biết mà tôi biết liên quan đến IV là CWE-329, yêu cầu IV là ngẫu nhiên và this is why đây là vấn đề. Một vấn đề tiềm năng khác là mã hóa 2 thông điệp với cùng một IV. Đây là một vấn đề bởi vì kẻ tấn công có thể xác định một tin nhắn văn bản mã hóa khác bằng cách mã hóa nhiều tin nhắn đã biết, có thể đoán một cách hiệu quả về những gì một văn bản mã hóa đã chụp có thể không biết khóa.

Các vấn đề liên quan