Collision-Resistance

從物理模擬信號生成兩個密鑰:類似於時變信號的加密雜湊

  • December 9, 2016

我們可以從同一來源生成兩個密鑰嗎?

這個想法是我們有隨時間變化的信號。我們擷取一個幾毫秒的視窗, $ t $ . 我可以以一定的速度斬斷信號值 $ N_S $ 並得到 $ tN_S/1000 $ 樣品。我設置了一個門檻值,並將 0 和 1 分配給低於和高於它的值。由於這個信號是共享的,我得到一個長度的密鑰 $ tN_S/1000 $ 位。

現在密鑰的長度取決於 $ N_S $ 對於給定的視窗。我們確實同意,如果我減少這個,跟踪原始數據會變得更加困難 $ N_S $ .

我的問題是我可以使用這個時變信號生成兩個不同的密鑰。方法可以是使用不同的功能說:數字化和衍生。我可以將導數編碼為一些位。

這兩個函式可以給出兩個單獨的序列。現在的問題是我不能說我已經獲得了額外的安全級別,因為: 信號可能會受到損害,這會損害這兩個功能的結果。這就是一般 cyrpoto 密鑰管理中發生的情況。另一點是我可以使用第一種方法(門檻值)來生成反向信號並猜測第二個序列的輸出,因此它對生成該序列毫無用處!

我的觀點是反向生成信號的可行性取決於採樣率。如果它很高,則可以破壞第二個序列。但是如果採樣足夠低,那麼回生成將是不穩定的,因此無法正確猜測第二個序列。

我覺得可以優化採樣,並且通過一個過程生成的密鑰無法擷取源的全部實力,我可以從信號中生成更多密鑰,即使它的長度很短,仍然是安全的。

文獻中是否已經研究過從信號中生成兩個秘密的方法?

散列是一種在密鑰管理中有效的做法,但無論我們提前生成多少散列密鑰,安全級別都是由父密鑰決定的。但是如果我們從一個物理信號中生成兩個密鑰(假設這個信號是共享的和足夠隨機的,並且不能被竊聽者猜到),系統的安全級別可以提高嗎?

如果沒有,在這種時間序列信號上是否有類似的散列函式?如果不是一種方式功能,我們如何比較選擇兩個這樣的功能的可行性?互相關是一個不錯的選擇嗎?

您似乎一次嘗試解決多個問題。讓我們將問題分解為至少兩個子問題:

  1. 首先你要提取熵;
  2. 然後,您想使用熵或隨機數生成器創建兩個密鑰。

提取熵

從源中提取熵涉及白化技術。如果熵量很低,您可能希望將此熵用作 DRBG(確定性隨機位生成器)的輸入。

您可能還想包含其他熵源或標識符,如果您使用的是 DRBG,則可能會增加隨機性。

讓我們用 $ K_{master} $ . $ K_{master} $ 不必將其格式化為密鑰,它只是一堆共同保持最小熵的位。

創建兩個單獨的鍵

好的,所以現在您需要兩個相互獨立的單獨鍵。這比您想像的要容易;您可以簡單地使用基於散列函式的 KBKDF,例如 HKDF $ K_1 = \operatorname{KBKDF}(K_{master}, \text{“1”}, l) $ 和 $ K_2 = \operatorname{KBKDF}(K_{master}, \text{“2”}, l) $ (在哪裡 $ l $ 是所需的位數 $ K_1 $ 和 $ K_2 $ .

HKDF 首先將密鑰中的熵顯式提取(“壓縮”)為固定大小的輸出,該輸出取決於所使用的散列算法。然後它將提取的資訊擴展為足夠的關鍵材料 $ K_1 $ 和 $ K_2 $ . 當然,強度受到輸入密鑰材料中的熵和使用的散列函式的限制(但是 SHA-256 或更高版本應該足以滿足任何正常使用)。

您可以通過將特定於設備的機密附加或添加到 IKM 的 $ K_{master} $ 你從增白熵源中得到的。

最重要的是,揭示 $ K_1 $ 或者 $ K_2 $ 攻擊者不會向攻擊者提供有關其他密鑰或輸入密鑰材料的任何資訊(假設它有足夠的熵不會被暴力破解)。


通過這種方式,您可以專注於從源中獲取熵的最佳方式。盡量不要像您建議的那樣創建任何依賴於其他數據的數據。

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