Điểm:2

Có thể sử dụng thẻ xác thực AES-GCM làm chức năng dẫn xuất khóa không?

lá cờ na

Tôi muốn xây dựng một cây dẫn xuất khóa xác định, trong đó gốc được lưu trữ an toàn trong một dịch vụ tập trung và các lá được nhúng trong vô số thiết bị. Khi một thiết bị muốn giao tiếp với back-end, thiết bị sẽ cung cấp ID và muối của nó, đồng thời các dịch vụ tập trung sẽ lấy khóa dành riêng cho thiết bị từ khóa gốc cũng như ID và muối của thiết bị.

Thông thường, tôi sẽ ưu tiên HKDF hoặc một chức năng phái sinh khóa nổi tiếng khác cho mục đích này. Nhưng vì chúng tôi dự định chạy toàn bộ dịch vụ trên một nhà cung cấp đám mây, nên lựa chọn lưu trữ khóa an toàn của chúng tôi bị hạn chế hơn.

Azure Key Vault có hỗ trợ thử nghiệm cho AES-GCM trên các HSM được quản lý của họ. Ý tưởng của tôi là sử dụng muối của thiết bị làm đầu vào nonce (IV) của AES-GCM và ID thiết bị làm đầu vào dữ liệu được liên kết và không có văn bản gốc làm đầu vào. Là đầu ra của AES-GCM, tôi sẽ sử dụng thẻ được tạo làm khóa giả ngẫu nhiên xác định:

$\text{KDF}(key, salt, id) := \text{AES-GCM-encryption}(key, \epsilon, salt, id)$

ở đâu $key$ là bí mật gốc toàn cầu được lưu trữ trong kho khóa, $\epsilon$ là chuỗi rỗng được sử dụng làm đầu vào GCM văn bản gốc, $muối$ là một giá trị 96 bit được sử dụng như $nonce$ trong GCM và $id$ là một chuỗi xác định thiết bị có độ dài thay đổi mà không thiết bị nào chia sẻ với thiết bị khác và được sử dụng làm đầu vào dữ liệu liên quan trong GCM.

Công trình đó có an toàn không...

  • giả sử muối / nonce là duy nhất trên toàn cầu trong toàn bộ thời gian tồn tại của khóa và trên tất cả các ID thiết bị?
  • giả sử muối/"nonce" chỉ là duy nhất cho một ID cụ thể và có thể có một số thiết bị vô tình chia sẻ cùng một loại muối (do xung đột của các giá trị ngẫu nhiên)?

Theo trực giác, tôi khá chắc chắn rằng với một loại muối duy nhất trên toàn cầu, cấu trúc này phải là một hàm dẫn xuất khóa an toàn. Nhưng điều này khó đạt được đối với trường hợp sử dụng mà chúng tôi nghĩ đến.

Maarten Bodewes avatar
lá cờ in
Bạn có đang sử dụng nonce làm khóa không? Không phải nó có kích thước 128 bit sao? Và tại sao bạn lại gọi nó là nonce nếu nó là chìa khóa? Nó được tạo ra/quản lý như thế nào?
Perseids avatar
lá cờ na
À, thật tệ, tôi quá quan tâm đến phần còn lại đến nỗi quên mất thông tin quan trọng trong công thức.Nonce là muối trong danh pháp HKDF và thực sự có một khóa được tạo và sao lưu bên ngoài Kho lưu trữ khóa và được lưu trữ không thể xuất trong Kho lưu trữ khóa.
Perseids avatar
lá cờ na
Ồ và một tác dụng phụ đáng tiếc khác của thiết lập này là cấp độ thứ hai của cây (tức là kết quả của dẫn xuất đầu tiên) đã rời khỏi môi trường bảo mật. Lý tưởng nhất là chỉ có thông tin đường dẫn (id và muối cho mỗi dẫn xuất) sẽ được cung cấp bởi máy chủ ứng dụng, nhưng tôi không thấy cách thực hiện điều đó mà không có hỗ trợ phái sinh khóa đặc biệt của môi trường bảo mật. (Hầu hết các HSM chuyên dụng đều có thể làm như vậy, nhưng giao diện được quản lý mà các nhà cung cấp đám mây cung cấp thì không.)
Điểm:3
lá cờ us

Đầu tiên, để xác định việc xây dựng. AES-GCM khi được sử dụng theo cách được đề xuất tương đương với $$\operatorname{KDF}(K,S,I)=\operatorname{AES}_K(S\|0^{32})\oplus \operatorname{GHASH}_{\operatorname{AES}_K(0^{ 128})}(I)$$

ở đâu $\operatorname{GHASH}_H(M)\approx \sum_i H^iM_i$ cho các khối tin nhắn $M_i$ kích thước 128-bit và các phép nhân và cộng được thực hiện trong trường hữu hạn 128-bit với biểu diễn đa thức. Đây là một xấp xỉ của GHASH sẽ hoạt động cho cuộc thảo luận dưới đây của chúng tôi.

Công trình đó có an toàn không...

Tôi sẽ gọi cấu trúc KDF này là an toàn nếu nó hoạt động giống như một PRF ở cả hai đầu vào, tuân theo các ràng buộc đã đặt tên, tức là các đầu vào duy nhất tạo ra các đầu ra giả ngẫu nhiên độc lập.

[Giả sử] muối/nonce là duy nhất trên toàn cầu trong toàn bộ thời gian tồn tại của khóa và trên tất cả các ID thiết bị?

Như bạn có thể thấy từ biểu thức trên, giả sử muối của bạn là duy nhất, thao tác AES sẽ che giấu bất kỳ kết quả GHASH nào và đầu ra sẽ có vẻ ngẫu nhiên và không thể đoán trước. Tuy nhiên, đưa ra câu trả lời cho phần tiếp theo, có một câu hỏi đặt ra là liệu dữ liệu liên quan có cung cấp bất kỳ lợi ích hữu ích nào hay không, bên cạnh khả năng che khuất một chút sự kiện va chạm muối.

[Giả sử] muối / "nonce" chỉ là duy nhất cho một ID cụ thể và có thể có một số thiết bị vô tình chia sẻ cùng một loại muối (do xung đột của các giá trị ngẫu nhiên)?

Tiếc là không có. Nếu hai dẫn xuất sử dụng cùng một $(K,S)$ cặp với hai khác nhau $I,I'$ truy vấn và đối thủ tìm hiểu các khóa đầu ra tương ứng $k,k'$, sau đó một đối thủ có thể học $k\oplus k' = \operatorname{GHASH}_{\operatorname{AES}_K(0^{128})}(I) \oplus \operatorname{GHASH}_{\operatorname{AES}_K(0^{ 128})}(I')\approx \sum_i H^i(I'_i\oplus I_i)$ đó là một biểu hiện mà từ đó một kẻ thù có thể phục hồi $H=\operatorname{AES}_K(0^{128})$ cho phép họ phục hồi $k\oplus \operatorname{GHASH}_{\operatorname{AES}_K(0^{128})}(I) = \operatorname{AES}_K(S\|0^{32})$ và từ đó dự đoán khóa dẫn xuất cho bất kỳ $I$ cho cái này cố định $(K,S)$ đôi.

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