AES、CMAC 和“3 pass 身份驗證協議”解釋
我正在努力了解如何在 NFC 標籤環境中正確使用身份驗證系統,因此我發布此執行緒以澄清一些概念。(提前,這不是我的領域,所以假設知識差距)
**AES :**它是一種基於對稱密鑰的加密算法(雙方有相同的密鑰,可以加密和解密文本),消息被分成 10 部分,然後每個部分都將被加密(使用主密鑰,並經過多次轉換是在矩陣上製作的),然後全部連接在一起。
該標準僅用於加密,不應用任何授權功能。
我想只有主密鑰用於完成加密。
(我從主密鑰中閱讀了一些關於“密鑰生成”的執行緒,所以它們可能被用於算法中嗎?它根本不相關嗎?)
它用於避免“被動攻擊”。
**CMAC :**這裡的差距,我不知道是哪一個。(或者可能沒有)
它是一種身份驗證協議(MAC),其中輸入是密文(以前使用的AES),能夠滿足身份驗證部分。(AES算法涵蓋的數據完整性)。
它是一個身份驗證協議(MAC),但輸入是一個切碎的純文字(以前沒有使用過 AES),然後該協議與一些 AES 塊一起使用,以滿足身份驗證和完整性部分。
真正歡迎對 CMAC 是什麼的解釋。(我開始認為這與 Encrypt-then-MAC 程序有關)
避免一些“主動攻擊”很方便。
**3-Pass-Mutual-Authentication :**我認為這只是一個程序,當 CMAC 用於雙方但很多次時,如果所有設備都給出肯定響應,則驗證兩個設備。(我知道還有更多步驟,但我試圖弄清楚這個的一般觀點)
任何澄清所有這些的資訊都將不勝感激,我知道它們都是相關的,但我看不到整體觀點。
AES 是一種分組密碼。它將輸入塊置換(映射)為 16 字節的輸出塊。使用的排列取決於密鑰。AES 必須在諸如 CBC 之類的操作模式中使用,以便能夠為動態大小的消息提供機密性。CBC 通常用於智能卡環境。CBC 為(被動)竊聽者提供保密性。
AES-CMAC 是基於 AES-CBC 的 MAC。它提供數據完整性和真實性。這是對 CBC-MAC 的更改,以使其對動態大小的消息安全。重用 CBC 對於嵌入式環境當然是一個好主意(而不是依賴於通常在軟體中實現散列的 HMAC)。
有時,在與智能卡或標籤通信時(例如,在發送沒有機密數據的命令時),您可能只需要 MAC。在這種情況下,您可以直接在明文(命令)上執行 MAC。如果數據需要保密,那麼通常使用 encrypt-than-mac 而不是 mac-then-encrypt。在避免 CBC 填充預言攻擊時,這一點尤其重要。
通常消息保護由從主密鑰派生的會話密鑰執行。
3-pass 相互認證也可以使用加密或 MAC。沒有單一的 3-pass 協議,有多種協議使用主密鑰或派生(會話)身份驗證密鑰、加密或 MAC。該協議用於實體認證而不是消息安全。在此協議中使用的、在消息交換之前的(隨機)值可用於導出其他會話密鑰。
每個會話每對實體(例如卡和讀卡器)可能有多達 6 個會話密鑰。一個密鑰可用於實體認證,一個用於加密,一個用於 MAC。這 3 個密鑰可以有兩組:一組用於發送消息,一組用於接收(驗證)消息。這些可以從一個主密鑰直接或間接生成。然而,通常主密鑰直接用於實體身份驗證,從會話密鑰列表中刪除兩個密鑰。