Key-Derivation

“按鍵拉伸”有沒有權威的定義?

  • June 13, 2013

這主要是一個術語問題,但我認為最好在這裡提出和回答。瀏覽網際網路後,我遇到了許多完全不同的術語“鍵拉伸”定義,想知道研究文獻中是否有關於如何使用該術語的共識,或者,也許,應該完全避免,因為沒有達成共識。

一些含義:

  1. 密鑰拉伸是將 KDF 或 PRF 應用於某些輸入的方法,以產生任意長度的輸出。有些使用RFC 5931gnu.org。相同的特性在例如RFC 5869中稱為密鑰擴展
  2. 通過增加推導過程的複雜性來拉伸輸入的熵。在維基百科和著名作者 Bruce Schneier、David Wagner 等人的這篇論文中發現了這一點。但是,這些作者似乎打算特別在需要第一個功能(密鑰擴展)時使用此功能。
  3. 在應用 KDF 之前,增加輸入的長度,例如通過將其與公共鹽連接。據稱,這個功能和第二個功能有時都被稱為“關鍵強化”

是否有更好的術語更容易被正確理解,而不必每次使用時都重複定義?第一個是Key Expansion,第二個是Key Hardening,第三個是Salting

另一方面,術語密鑰擴展似乎也經常用於描述密碼算法密鑰調度的特徵,當輸入密鑰擴展為輪密鑰時。最好有一個術語來區分 KDF 的輸出和密鑰調度的中間輸出。

在我的實踐中(智能卡,經常使用 DES 和越來越多的 AES)

  • 密鑰擴展通常用於指定分組密碼中子密鑰的產生。這個過程通常只是一個比特提取,作為算法的Key Schedule的一部分。
  • 密鑰多樣化幾乎完全是從其序列號(或其他標識符)和主密鑰生成設備密鑰的過程。這種轉換必須使得某些設備的密鑰洩露不會洩露主密鑰或其他設備的密鑰。
  • 密鑰派生是從另一個密鑰生成密鑰的通用術語。它通常用於密鑰多樣化,或將一個密鑰擴展為多個不同功能的密鑰的過程(例如,用於 CBC 加密的機密密鑰和用於 CBC-MAC 的完整性密鑰),或從長期的關鍵。密鑰派生一詞傾向於暗示派生密鑰不會從原始密鑰中洩漏(如密鑰多樣化中所示)。

此外,我將密鑰加強密鑰強化(專門)或密鑰拉伸(不太具體)理解為密鑰的有目的的計算密集型轉換,通過可參數化的因素有效地增加其對暴力搜尋的抵抗力,例如在PBKDF2Scrypt . 正如問題中所述,Key Stretching在這個意義上得到了證明。但是我也看到了Key Stretching用於從一個密鑰中獲取多個密鑰的過程,而不是打算減慢蠻力搜尋的速度。

而且我將密鑰加鹽理解為向密鑰(低熵,例如密碼)添加(公共或輕度秘密)鹽的古老過程,因此至少相同的密鑰不會退化為相同的密碼,沒有指示故意引入計算密集型轉換,如關鍵強化

我不是權威,英語是我的第二語言,我對Key Stretching的通常含義有所改變。

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