One-Time-Pad
為某些數據創建密鑰的 OTP 是否是一種安全的秘密共享方案?
假設我有一些數據已使用已知的安全算法和密鑰 k 加密。我想將密鑰的“片段”分發給我的 n 個同事,並且只有在使用所有密鑰時才能訪問數據。
我創建了一個一次性鍵盤並異或密鑰,然後將該 OTP 提供給同事 1,並為每個同事重複此操作。我對此有幾個問題:
- 一旦密鑰被加密,那塊最初是密鑰是否重要,或者現在所有塊都相等?
- 假設我的同事都在沒有我的情況下見面,總共有 n-1 個鍵,他們可以用集體數據做些什麼嗎?
- 創建這麼多一次性便箋簿是否會以某種方式造成漏洞,或者 OTP 的強度是否適用於隨後創建的每個片段?
既然您提到一次性密碼,我將處理一次性密碼 (OTP) 秘密拆分,而不是更複雜的方案。在這種情況下,您不會將密鑰分割成碎片,而是創建長度完全相同的其他密鑰,然後將原始密鑰丟棄。重新創建原始密鑰的唯一方法是將所有生成的密鑰重新組合在一起。這裡有一個很好的教程。你應該能夠從這個提取物中理解方法: -
一次拿一顆子彈:-
- 所有新鍵都同樣重要。如果沒有所有新密鑰,您將無法重新組裝原始密鑰。一把失去的鑰匙不會給你任何東西。
- 除了第 1 點,他們無能為力。如果您使用了字節,則每個原始關鍵字元仍然具有 1/256 的確定性。顯然,如果密鑰只有一個字節長,這將無法抵禦暴力攻擊。所以使用長密鑰或密鑰派生函式,但這會偏離 OTP 的精神純度。
- 您可能會使用一個一次性墊來溢出原始密鑰。您不會創建其他密鑰。如果您的 OTP 生成器設備產生真正的隨機性,那麼額外 OTP 的存在不會造成任何數學漏洞。您當然需要確保許多新密鑰的安全,因為它們都是必需的。這本身可能就是一個問題。有更複雜的密鑰拆分技術不需要 OTP,並且可以拆分一個秘密,然後只需要一個密鑰子集來重新組合原始密鑰。在某些情況下,您可能會認為這更安全(如果某些特工要被敵人消滅)。