Block-Cipher

分組密碼中的調整有什麼用途?

  • October 9, 2013

很少有分組密碼模式有額外的參數和調整,尤其是那些保留格式的。

現在,該部落格條目的評論部分錶示,此類調整可用於信用卡號的 BIN 號、到期日期等。

如何使用調整來執行此類檢查?

可以使用哪些其他方式進行調整?

首先讓我們非常精確地看一下無需調整的塊密碼以完全理解它:

正常的塊密碼 $ E_k(x) $ 有塊大小 $ n $ 和密鑰大小 $ k $ 是輸入塊的排列。

我的意思是什麼?讓我們首先在這裡解決這個詞的排列。通常,排列意味著重新排列集合中的元素。所以集合的所有排列的集合 $ {0, 1, 2} $ 是:

$$ {{0, 1, 2}, {0, 2, 1}, {1, 0, 2}, {1, 2, 0}, {2, 0, 1}, {2, 1, 0}} $$ 在數學中,置換函式通過重新排列輸入域將輸入域映射到輸出域(注意,這意味著輸入域必須等於輸出域)。例如,如果我們有排列 $ f : {0, 1, 2} \rightarrow {0, 1, 2} $ ,然後該函式將通過重新排列將輸入域的每個元素映射到輸出域的一個元素。因此,如果我們將輸入域重新排列為 $ {2, 1, 0} $ , 然後 $ f(0) = 2, f(1) = 1, f(2) = 0 $ .

這意味著函式 $ f $ 完全取決於您選擇哪種重排。這就是關鍵所在,它決定了使用什麼重排。

總結一下, $ E_k(x) : {0,1}^k\times{0,1}^n\rightarrow{0,1}^n $ 需要一個 $ n $ -bit 輸入字元串和一個 $ k $ 位鍵,選擇所有集合的重新排列 $ n $ -位字元串( $ {0,1}^n $ ) 由鍵確定並在此重新排列的集合中查找輸入字元串。

請注意,這一切都非常抽象,而且我們正在談論的集合是巨大的。這意味著在現實世界的算法中,沒有任何集合被重新排列甚至儲存,它們只是描述發生了什麼的心理工具。作為一個如何工作的例子,定義 $ f(x) = 2-x $ 並與上面的範例進行比較。

現在我們了解了一個塊密碼,知道調整的作用不應該太難。它的功能與密鑰完全相同:它確定使用的排列。你現在可能會想:key和tweak有什麼區別?答案在於我們尚未涵蓋的內容:安全性。

除了我們在上面看到的塊密碼的數學定義之外,還有一個安全方面。為一個 $ n $ -bit 輸入塊有 $ (2^n)! $ 可能的排列,顯然 $ k $ 位密鑰不可能選擇所有可能的排列。然而,如果輸入塊可能被對手選擇(注意可能不會選擇密鑰),則安全塊密碼被定義為在某些預定義的工作限制(安全參數)內與隨機預言機無法區分的功能。

如果輸入塊和調整可能被對手選擇(很明顯,調整也傳遞給預言機),則安全的可調整分組密碼被定義為在某個預定義的工作限制內與隨機預言機無法區分的功能。

用外行的話來說,關鍵是秘密——調整不是。


這種功能的實際應用是巨大的。可以使用它(OCB3)、散列結構(BLAKE2、Skein)、高效的全盤加密等實現更有效的加密和身份驗證操作模式。

它有用的最重要原因是您可以克服電子密碼本的限制。通過將調整用作小計數器,您可以使塊密碼的每次呼叫本質上都是一個與任何先前呼叫無關的獨特函式。這對於安全性來說是非常令人欣慰的。

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