Rsa

GCM 的成本是多少?RSA/PKI 是如何對 GCM 標籤進行簽名的?

  • January 18, 2021

我主要是想了解加密、散列和簽名的管道。

我已經閱讀了這個問題,描述了 GCM 的成本,據我所知,它可以以犧牲安全為代價來配置空間效率,但最多為 196 位。

IETF 的這篇文章描述了 TLS 的成本,似乎指出 GMAC/MAC 的長度為 128 位 - 我將其理解為平均值

-----------------------------------------------------------------
AES_128_GCM, AES_256_GCM
-----------------------------------------------------------------
Per-packet overhead (TLS 1.0, 1.1, 1.2)                  29 bytes
  TLS header                                             5 bytes
  Explicit Nonce                                         8 bytes
  GMAC                                                  16 bytes
-----------------------------------------------------------------

我的第一個問題是:如果我們使用密碼套件 TLS_AES_128_GCM_SHA256;並且 GCM 正在使用 Encrypt-then-MAC (這似乎總是?)並配置為使用 128 位標籤;AES_128 以 128 位塊加密明文;那麼 GCM 是否會在這些塊中的每一個上添加一個 128 位標記(因此,將最終適合 L3 數據包的數據有效負載的密文數量減半)?或者,每個標籤是否被異或(或以某種方式轉換)到下一個標籤,以產生單個 128 位標籤 (2),這是所有先前操作的結果?

GCM 的維基百科頁面反复提到“身份驗證”,但它似乎使用它來代替“完整性” - 即。確保數據在傳輸過程中沒有被操縱/損壞。我對三種類型的 EtM/MtE/EaM 函式、AEAD 和 PKI 有非常基本的了解……所以我的第二個(多部分,抱歉……)問題是:

在這個過程中,SHA 和 RSA(或任何簽名算法)究竟是如何/在哪裡使用的?

我知道 SHA 是一種散列算法 - 在最初的 DHKE 期間在 HKDF 中使用。它還用於創建大塊數據的小散列/“指紋”,例如證書 - 我認為然後由私鑰/公鑰 RSA 密鑰對的私鑰簽名,以便“驗證”每條消息/會話.

(1) RSA 私鑰是在生成標籤後用於對標籤/標籤進行簽名,還是在標籤本身的生成中使用?

(2) 發送方的 RSA 私鑰是用來“簽署”每個塊的****每個標籤,還是只是加密整個明文有效負載後的單個 128 位標籤?

(3) 客戶端是否在傳遞其公鑰後也對雜湊/MAC 進行簽名,還是通常僅由已簽名 RSA 證書的伺服器/所有者完成?

該執行緒似乎聲明使用對稱密鑰,但討論讓我更加困惑。

如果我們使用密碼套件 TLS_AES_128_GCM_SHA256; 並且 GCM 正在使用 Encrypt-then-MAC(似乎總是?)並配置為使用 128 位標籤;AES_128 以 128 位塊加密明文;那麼 GCM 是否會在這些塊中的每一個上添加一個 128 位標記(因此,將最終適合 L3 數據包的數據有效負載的密文數量減半)?

不,GCM 是在整個記錄上執行的;因此 GCM 標籤添加的成本是每條記錄 128 位。即給定GCM加密操作明文(即原始未加密記錄)、AAD(由記錄頭加上記錄序號組成)和nonce(記錄中給出的8個字節加上4來自密鑰協商步驟的字節),它產生密文(與明文完全一樣長)和一個 16 字節的 GCM 標籤。TLS 不擔心 GCM 執行此操作的操作。

您引用的表給出了每條記錄的成本(但是,它被錯誤地標記為每個數據包;TLS 記錄不對應於“數據包”;每個 TCP 數據包(段)可能有多個記錄,或者單個記錄可能擴展到多個數據包)。

在這個過程中,SHA 和 RSA(或任何簽名算法)究竟是如何/在哪裡使用的?

在記錄加密/解密過程中根本不涉及 SHA 和 RSA,因此您的三個選項都沒有描述這種情況。它們可以(並且通常是)在連接設置階段使用(驗證伺服器是他聲稱的身份(以及可選的客戶端),並且還生成 GCM 使用的對稱密鑰。

引用自:https://crypto.stackexchange.com/questions/87614