Điểm:3

Các thuật toán không phải FIPS có được phép thực thi trong hệ thống tuân thủ FIPS không?

lá cờ cn

Nếu một phần mềm đang chạy ở chế độ FIPS và sử dụng các mô-đun mật mã được FIPS chứng nhận, thì nó có được phép thực thi bất kỳ thuật toán không phải FIPS nào ngay cả khi tính bảo mật của hệ thống không phụ thuộc duy nhất vào chúng không?

Ví dụ: giả sử bạn có một hệ thống trao đổi hai cặp khóa ECDH: một cặp khóa Curve25519 và một cặp khóa NIST P-384. Thỏa thuận khóa được thực hiện bằng cách sử dụng cả hai cặp khóa và sau đó các bí mật kết quả được nối và băm với SHA-384.

Về mặt mã hóa, tôi không thấy có vấn đề gì vì kết quả của SHA-384(K0 | K1) mạnh bằng đường cong mạnh nhất. Điều này là do SHA-384(một bí mật | một giá trị đã biết) là một bí mật, có nghĩa là nếu kẻ tấn công bẻ khóa nói curve25519 thì họ vẫn không biết kết quả của bí mật đó được băm với một bí mật khác mà họ không biết.

Câu hỏi của tôi là liệu FIPS có cho phép điều này hay không, hay liệu nó chỉ phải thực thi các thuật toán và mã được FIPS chứng nhận hay không. Bạn có thể coi bí mật chia sẻ được tính toán của đường cong25519 là "muối" hay gì đó không?

Chỉnh sửa: xem xét rằng kết quả của thỏa thuận không phải FIPS với ví dụ: Curve25519 có thể được trộn lẫn với bí mật "chính thức" dưới dạng muối, ví dụ: HMAC-SHA384(muối, chìa khóa).

Điểm:4
lá cờ my

Trên thực tế, đường cong25519 đang trên đường được phê duyệt FIPS (NIST SP 800-186), nhưng đó không phải là điều bạn đang hỏi.

Để trả lời câu hỏi của bạn, vâng, NIST đã tuyên bố rằng họ cho phép thuật toán không được phê duyệt song song với trao đổi khóa ưa thích của họ. Hiện tại, quy trình được phê duyệt chính thức của họ sẽ yêu cầu xử lý chia sẻ khóa không được phê duyệt khác với quy trình được phê duyệt; tuy nhiên họ lưu ý rằng điều này sẽ thay đổi trong phiên bản tiếp theo của NIST SP 800-56C.

Tuyên bố thực tế của họ (từ https://csrc.nist.gov/Projects/post-quantum-cryptography/faqs) không chỉ áp dụng cho mật mã hậu lượng tử (một số văn bản đưa ra các ví dụ về hậu lượng tử đã được loại bỏ):

Có thể thực hiện chế độ thiết lập khóa kết hợp trong chế độ hoạt động được FIPS 140 phê duyệt không? (đã thêm vào 28/1/20)

Chế độ thiết lập khóa kết hợp ... được định nghĩa ở đây là sơ đồ thiết lập khóa là sự kết hợp của hai hoặc nhiều thành phần mà chính chúng là sơ đồ thiết lập khóa mật mã. Thuộc tính mong muốn là các khóa được tạo bởi lược đồ thiết lập khóa kết hợp vẫn an toàn nếu ít nhất một trong các lược đồ thành phần được bảo mật...

Các tiêu chuẩn NIST hiện tại ... có thể hỗ trợ một số cấu trúc thiết lập khóa kết hợp trong âFIPS mode,â như được định nghĩa trong FIPS 140. Ví dụ: giả sử rằng giá trị Z là bí mật chung được tạo trong mật mã được NIST phê duyệt lược đồ và giá trị T được tạo hoặc phân phối thông qua (các) lược đồ khác... Sau đây là các cách khác nhau để kết hợp giá trị T trong quy trình phái sinh khóa nhằm đạt được chế độ kết hợp được các tiêu chuẩn hiện hành cho phép:

Đối với bất kỳ phương pháp dẫn xuất khóa một bước nào được chỉ định trong SP 800-56C, đầu vào được xác định là SuppPrivInfo có thể được đưa vào trường FixedInfo (tùy chọn) và T có thể được đưa vào trường đó. Trong bất kỳ phương pháp dẫn xuất chính nào được chỉ định trong SP 800-56C, cho dù là một bước hay trích xuất sau đó mở rộng, giá trị T có thể được bao gồm trong trường muối. Ngoài ra, NIST có kế hoạch kết hợp một cấu trúc thiết lập khóa kết hợp sạch hơn và do đó thích hợp hơn trong bản sửa đổi tương lai của SP 800-56C:

Trong bất kỳ phương pháp dẫn xuất khóa nào được chỉ định trong SP 800 - 56C, bản sửa đổi sẽ cho phép ghép Z và T, ví dụ: Z||T, để đóng vai trò là bí mật chung thay vì Z. Điều này sẽ yêu cầu chèn T vào mã hóa cho lược đồ và mã xác thực FIPS 140 có thể cần phải được sửa đổi.

lá cờ cn
Sau đó, có vẻ như câu trả lời có thể là có, miễn là việc tạo ra khóa cuối cùng được thực hiện tuân theo những gì họ muốn và sử dụng hàm băm/KDF tuân thủ FIPS.
poncho avatar
lá cờ my
@AdamIerymenko: điều đó đúng và NIST đang tìm cách phê duyệt các công trình giống như $\operatorname{SHA384}( K_0 \mathbin\| K_1 )$
Điểm:1
lá cờ mc

Khi bạn nói FIPS trong ngữ cảnh này, tôi cho rằng ý của bạn là FIPS 140, nếu điều đó đúng, thì sẽ có một số trường hợp hạn chế mà bạn có thể sử dụng các thuật toán không được FIPS phê duyệt mà vẫn tuân thủ FIPS.

Hãy nhìn vào Hướng dẫn thực hiện, có một phần "Các trường hợp ví dụ về các thuật toán mật mã không được phê duyệt được cho phép trong chế độ FIPS". Tôi không nghĩ rằng ví dụ của bạn đáp ứng bất kỳ tình huống nào trong ba tình huống được nêu trong tài liệu.

lá cờ cn
"Sử dụng thuật toán được phê duyệt, không được phê duyệt hoặc độc quyền cho mục đích không liên quan đến bảo mật hoặc không cần thiết cho thuật toán mật mã được phê duyệt"? Điều gì xảy ra nếu kết quả của một trao đổi khóa không liên quan được coi là bổ sung hoặc "muối" trong hàm dẫn xuất khóa?
Swashbuckler avatar
lá cờ mc
@AdamIerymenko Tôi không quen thuộc với tất cả các chỉ thị NIST cho các thuật toán như vậy, nhưng tôi đoán là nó sẽ không tuân thủ FIPS. Đối với những thứ như PBKDF2, muối được cho là từ RNG được FIPS phê duyệt, vì vậy chắc chắn không tuân thủ trong trường hợp đó. Bạn phải đọc tài liệu NIST cho KDF cụ thể mà bạn quan tâm và xem nó nói gì.
Swashbuckler avatar
lá cờ mc
Bất kỳ thứ gì bổ sung, nhưng vẫn liên quan đến bảo mật đều không thể tuân thủ FIPS. Triết lý là bất kỳ thứ gì không tuân thủ FIPS đều là văn bản thuần túy, vì vậy nếu bạn coi phần bổ sung đó là văn bản thuần túy và nó vẫn an toàn thì có thể không sao.
lá cờ cn
Trên thực tế, hãy xem [phần 8.2 tại đây](https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-56Cr2.pdf). "Khuyến nghị này không yêu cầu sử dụng giá trị muối được chọn ngẫu nhiên. Đặc biệt, nếu không có cách nào để chọn giá trị muối và chia sẻ nó với tất cả những người tham gia trong giao dịch thiết lập khóa, thì Khuyến nghị này chỉ định rằng một giá trị muối được xác định trước chuỗi byte mặc định (ví dụ: tất cả bằng 0) được sử dụng làm giá trị muối." Có thể không sao đối với HMAC(salt, key) trong đó bí mật chia sẻ C25519 ECDH (hoặc hàm băm của nó) được sử dụng làm muối. Sẽ hỏi xung quanh.

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