Điểm:0

CMAC có an toàn khi không có IV và cùng khóa không? (chỉ xác thực)

lá cờ cn

Tôi hơi không chắc chắn về CMAC và GMAC và có lẽ ai đó có thể giúp tôi. Theo như tôi biết, CMAC không sử dụng IV [SP 800-38B ch. 6.2]. Có an toàn không nếu tôi sử dụng cùng một khóa cho các tin nhắn khác nhau? ...và tại sao tôi cần IV cho GMAC? Điều gì xảy ra ở đây nếu tôi sử dụng lại IV và cùng một khóa?

Trong trường hợp của tôi, tôi không mã hóa bất kỳ tin nhắn nào, tôi chỉ tạo một MAC mà tôi đính kèm vào tin nhắn (văn bản gốc). Đây có phải là dễ bị tổn thương?

...Với UMAC, VMAC hoặc Poly1305 Tôi cũng đọc được rằng một bộ (key, nonce) chỉ có thể được sử dụng một lần. Nhưng với OpenSSL, tôi không thể chỉ định nonce với Poly1305. ...bằng cách nào đó tất cả những điều này làm tôi bối rối.

Điểm:2
lá cờ my

Có an toàn không nếu tôi sử dụng cùng một khóa cho các tin nhắn khác nhau?

Chắc chắn rồi; sẽ không phải là một MAC tốt nếu một khóa có thể được sử dụng cho một tin nhắn.

và tại sao tôi cần IV cho GMAC?

Bởi vì CMAC và GMAC có nội bộ khác nhau.

Với CMAC, những gì bạn làm chủ yếu là tính toán giống như mã hóa chế độ CBC, ngoại trừ việc bạn chỉ giữ lại khối cuối cùng (và đó là MAC). Tôi đã nói chủ yếu bởi vì nếu bạn chỉ thực hiện thao tác này (được gọi là CBCMAC), điều này sẽ cho phép kẻ tấn công chơi một số trò chơi bằng cách mở rộng thông báo - để ngăn chặn điều đó, CMAC xor trong một số dữ liệu bí mật với khối cuối cùng, làm hỏng các trò chơi đó .

Lý do chúng tôi yêu cầu IV khác biệt (và không thể đoán trước) trong chế độ CBC là để khối ban đầu không bị rò rỉ thông tin; CMAC không xuất khối chế độ CBC ban đầu (trừ khi thông báo nằm gọn trong một khối và ngay cả khi vậy, xor của dữ liệu bí mật sẽ ngăn chặn bất kỳ rò rỉ nào như vậy) và vì vậy CMAC không chia sẻ mối lo ngại về IV.


Đối với GMAC, điều đó hoàn toàn khác; với điều đó, bạn chuyển đổi một cách hợp lý tin nhắn thành các hệ số của đa thức $M_k, M_{k-1}, ..., M_1$; sau đó bạn chuyển đổi IV thành thuật ngữ không đổi $M_0$ trong một khóa bí mật, sau đó đánh giá đa thức (trong trường hữu hạn) tại một điểm bí mật $H$, tức là bạn tính toán:

$$M_kH^k + M_{k-1}H^{k-1} + ... + M_1 H^1 + M_0$$

và đó là MAC. Lưu ý rằng kẻ tấn công biết mọi thứ, ngoại trừ các giá trị bí mật $H$ (là hằng số đối với một khóa nhất định) và $M_0$ (và cái sau phụ thuộc vào IV).

Bây giờ, nếu bạn có hai MAC cho hai thông báo khác nhau với cùng một IV, $M_0$ các giá trị sẽ giống nhau; bạn có thể trừ chúng ra và sau đó giải quyết $H$ - cung cấp cho bạn tất cả các bí mật và do đó bạn có thể tạo thông báo có giá trị MAC hợp lệ theo ý muốn.

Và, ở cấp độ khá cao mà tôi đã mô tả, Poly1305 cũng hoạt động theo cách tương tự (và do đó, có cùng điểm yếu đối với việc lặp lại IV).

Trong trường hợp của tôi, tôi không mã hóa bất kỳ tin nhắn nào, tôi chỉ tạo một MAC mà tôi đính kèm vào tin nhắn (văn bản gốc). Đây có phải là dễ bị tổn thương?

Bất kỳ MAC tốt nào cũng được - đó thực sự là trường hợp sử dụng mà MAC phải giải quyết [1]. CMAC vẫn ổn - GMAC và Poly1305 cũng sẽ ổn nếu bạn tránh lặp lại IV.

[1]: Tất nhiên, giả sử rằng người gửi và người nhận chia sẻ cùng một khóa bí mật - nếu bạn cần thứ gì đó mà người nhận không thể tạo các thông báo có vẻ hợp lệ, bạn sẽ cần xem xét chữ ký.

SBond avatar
lá cờ cn
rất rất cảm ơn. Bạn đã giúp tôi rất nhiều. Chúc một ngày tốt lành và luôn khỏe mạnh :)
Điểm:0
lá cờ tr

Tôi hơi không chắc chắn về CMAC và GMAC, và có lẽ ai đó có thể giúp tôi. Theo như tôi biết, CMAC không sử dụng IV [SP 800-38B ch. 6.2]. Có an toàn không nếu tôi sử dụng cùng một khóa cho các tin nhắn khác nhau? ...và tại sao tôi cần IV cho GMAC? Điều gì xảy ra ở đây nếu tôi sử dụng lại IV và cùng một khóa?

Hai cấu trúc sử dụng hai khối/logic cơ bản khác nhau. Do đó, họ có các yêu cầu bảo mật khác nhau. Cụ thể là:

  1. CMAC: Chúng ta có thể mô tả một cách trừu tượng CMCA như một công trình xây dựng PRF an toàn cho các đầu vào có độ dài thay đổi. Tại sao, bởi vì PRF an toàn cũng là MAC an toàn. Nhưng để đối phó với CMAC có độ dài thay đổi áp đặt rằng đầu vào thực tế cho các hàm MAC là không có tiền tố. tức là (w.l.o.g) không có đầu vào $x,y$ như vậy mà $y$ bắt đầu với $x$. Tuy nhiên, trong CMAC, yêu cầu này không phải là tuyệt đối; thay vào đó, một sơ đồ mã hóa ngẫu nhiên được sử dụng, đảm bảo rằng việc thiếu tiền tố không có tiền tố xảy ra với xác suất rất thấp.Vì vậy, tóm lại, một phiên bản trừu tượng của CMAC sử dụng mã hóa không có tiền tố ngẫu nhiên $e$ với một chìa khóa $k_1$, một PRF an toàn cho đầu vào dài nhưng không có tiền tố $F$ với một chìa khóa $k$. Trên một tin nhắn $m$, mac được tính là $\tau = F(k, e(m,k_1))$
  • Để biết chi tiết thực tế và dẫn xuất chính, hãy tham khảo tiêu chuẩn mà bạn cũng đã tham khảo.
  1. GMAC: Xem câu trả lời đầu tiên để biết chi tiết.

Do đó, chúng ta có thể thấy rằng CMAC không yêu cầu bất kỳ IV nào, trong khi GMAC thì có và quan trọng hơn, tính bảo mật phụ thuộc vào việc không sử dụng lại IV.

Đối với OpenSSL, có thể hữu ích khi xem cách họ sử dụng Poly1305? Có lẽ trong chacha20_poly1305

SBond avatar
lá cờ cn
Cảm ơn bạn đã trả lời và thời gian quý báu của bạn. :)

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