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