Điểm:1

RSA mã hóa khóa AES. Còn AES IV thì sao?

lá cờ pl

Tôi cần chuyển khóa AES một cách an toàn cho máy khách từ xa. Những gì tôi đã làm cho đến nay là tạo một khóa AES ngẫu nhiên và mã hóa nó bằng khóa công khai RSA của máy khách (phần đệm PKCS#1 v1.5 được thư viện RSA mà tôi đang sử dụng, CryptJS đảm nhận).

Tôi đã không nhận ra rằng AES yêu cầu khóa mà còn cả IV. Tôi không biết cách chính xác để đối phó với IV là gì. Tôi có nên mã hóa nó và về cơ bản gửi qua hai đốm màu được mã hóa không? (một cho khóa AES và một cho IV). Hoặc tôi có thể nối IV vào khóa AES một cách an toàn và mã hóa mảng byte kết quả không?

Tôi đang sử dụng RSA 2048bit nên tôi chắc chắn có thể mã hóa tải trọng dài 128+128=256bit.

Có ý nghĩa bảo mật nào không nếu tôi nối IV vào khóa AES và RSA mã hóa mảng byte kết quả?

Tôi không thể tìm thấy bất kỳ thực hành tốt nhất về điều này. Tôi thậm chí không biết liệu có an toàn không khi chỉ gửi IV mà không mã hóa nó.

Eugene Styer avatar
lá cờ dz
IV không nhất thiết phải là bí mật (xem https://crypto.stackexchange.com/questions/8592/iv-security-clarification). Tôi thấy không có vấn đề gì khi đưa nó vào mã hóa RSA, nhưng điều đó là không cần thiết.
Gianluca Ghettini avatar
lá cờ pl
Nắm bắt tốt! Hãy trả lời câu hỏi (nếu bạn muốn) và tôi sẽ chấp nhận nó
Fractalice avatar
lá cờ in
Gửi chúng một cách riêng biệt có khả năng gây ra các vấn đề về bảo mật vì kẻ tấn công có thể kết hợp các IV và khóa với nhau.
Fractalice avatar
lá cờ in
Ngoài ra, lý tưởng nhất là người gửi cũng phải có khóa chung dành cho "máy khách từ xa" và thông báo RSA phải được ký. Mặt khác, kẻ thù có thể chỉ cần mã hóa khóa AES của riêng họ bằng khóa RSA công khai và gửi tới "máy khách từ xa".
Fractalice avatar
lá cờ in
Và tất nhiên, mã hóa RSA phải được đệm an toàn (OAEP) và mã hóa AES phải được xác thực (AES-GCM).
Maarten Bodewes avatar
lá cờ in
@Fractalice Bạn có thể xem [câu trả lời do Eugene đưa ra](https://crypto.stackexchange.com/a/95591/1172). Nó dường như mâu thuẫn với bình luận đầu tiên của bạn ...
Fractalice avatar
lá cờ in
@MaartenBodewes nếu IV ở bên trong (như Eugene gợi ý) thì có vẻ như khó có thể làm điều gì xấu, nếu RSA được giải mã và kiểm tra đúng cách.
Fractalice avatar
lá cờ in
@GianlucaGhettini xin lưu ý rằng máy chủ giải mã PKCS v1.5 cho phép giải mã các bản mã tùy ý cho kẻ tấn công... (cuộc tấn công của Bleichenbacher).
Điểm:4
lá cờ dz

Điều này có thể sẽ bị đóng dưới dạng trùng lặp, nhưng IV không nhất thiết phải là bí mật. Không chắc chắn về phương pháp hay nhất, nhưng tôi thấy không có vấn đề gì khi đưa IV vào mã hóa RSA.

Điểm:1
lá cờ in

Bạn thậm chí không cần IV ngẫu nhiên nếu bạn đã có khóa bí mật ngẫu nhiên thay đổi cho mỗi tin nhắn. Vì vậy, bất kỳ câu trả lời nào cũng sẽ không sai về cơ bản, vì không có yêu cầu bảo mật nào đối với IV. Tuy nhiên, tôi sẽ đề nghị bạn đọc câu trả lời này được cung cấp bởi chú gấu thân thiện của chúng tôi trước khi bạn gặp một CON VẬT ít thân thiện hơn.

Tuy nhiên, tôi sẽ không bao gồm IV với khóa đầu vào AES vì một lý do cụ thể: nó sẽ không tương thích với bất kỳ phần cứng hoặc HSM nào (hoặc bất kỳ kho khóa nào khác) thực hiện gói khóa (tức là mã hóa khóa bằng khóa gói, trong trường hợp của bạn là khóa công khai RSA). Vì vậy, nếu bạn quyết định rằng bạn cần điều đó, bạn phải thay đổi giao thức. Nếu không, bạn phải giải mã và lưu trữ khóa trong phần mềm. Thành thật mà nói, đây không phải là một vấn đề lớn, vì dù sao thì dữ liệu cũng sẽ nằm trong bộ nhớ, nhưng đó là điều cần xem xét.

Nếu bạn nhấn mạnh vào một IV ngẫu nhiên thì bạn có thể sử dụng, ví dụ: một hàm băm trên khóa được bọc (tức là bản mã RSA) dưới dạng IV hoặc bạn có thể lấy nó từ chính vật liệu của khóa được bọc (sử dụng Hàm dẫn xuất khóa hoặc KDF). Cách thứ hai có lẽ là một trong những cách tiếp cận được hầu hết các nhà mật mã học sử dụng ở đây, mặc dù nó khó hiểu và khó thực hiện hơn (ví dụ: RSA-KEM, sau đó là HKDF-Extract, sau đó là 2 lần HKDF-Expand - một lần cho khóa, một lần cho IV - mặc dù điều này có thể không tương thích với nhiều phần cứng).


Như đã chỉ ra trong các nhận xét, việc có một thông báo được xác thực thường khá quan trọng. Điều đó thường sẽ yêu cầu đăng nhập rồi mã hóa, tuy nhiên, chế độ này dễ bị tấn công tiên tri đệm trên cả PKCS#1 và CBC nếu bạn định sử dụng chế độ đó. Nếu bạn chỉ xem xét một người nhận và tính bảo mật cũng như tính toàn vẹn thì mã hóa-rồi-ký có thể phù hợp hơn với bạn.

Tất nhiên, điều này cũng yêu cầu một cặp khóa RSA (đáng tin cậy) ở người nhận, cuối cùng, tất cả là về quản lý khóa.

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