Stream-Cipher

您可以使用帶有 XOR 的 SHAKE256_XOF 來製作流密碼嗎?

  • March 21, 2022

SHAKE256_XOF是基於 SHA3-512 的可擴展輸出函式。SHAKE256_XOF 可用於創建具有 256 位安全性的無限長位字元串。例如:

from Crypto.Hash.SHAKE256 import SHAKE256_XOF

shake = SHAKE256_XOF()
shake.update(b'key' + b'nonce')

for _ in range(10):
   print(shake.read(16).hex())
18068a140f4c0f1f85f17da13b049155
1fc6d25b11833480dae5fba50b8b73db
bf4284c0d9a32b9b374ae82d5c0514c6
...

SHAKE256_XOF 是一個偽隨機函式,因此它的輸出與明文進行異或應該會產生密文。我的理解是,這將是一個不對稱的流密碼。除了可能之外,我很難找到這方面的研究,Bruce Schneier說: “我知道沒有對特定單向雜湊函式作為分組密碼的密碼分析分析;在你信任其中任何一個之前等待這樣的分析。” 最後,這個密碼可以通過 SHA3-512 作為種子的一部分進行身份驗證。這導致了最終的算法:

from Crypto.Hash.SHAKE256 import SHAKE256_XOF
from Crypto.Hash import SHA3_512

xor = lambda lhs, rhs: bytes(a ^ b for a, b in zip(lhs, rhs))

plaintext = b'plaintext'
key = b'key'
nonce = b'nonce'
digest = SHA3_512.new().update(plaintext).digest()

e_shake = SHAKE256_XOF().update(key + nonce + digest)
cipher_text = xor(e_shake.read(len(plaintext)), plaintext)

d_shake = SHAKE256_XOF().update(key + nonce + digest)
d_plaintext = xor(d_shake.read(len(cipher_text)), cipher_text)

print(d_plaintext)
  1. 有沒有關於使用 SHAKE256_XOF 作為密碼的文獻?
  2. 這種方法在安全性方面與 AES256 相比如何?
  3. 這種密碼有什麼弱點或缺點?顯然,使用 SHA3-512 進行身份驗證意味著它無法一次有效地加密,解密需要計算 SHA3-512 摘要來進行身份驗證(我正在學習身份驗證加密的工作原理,歡迎提出建議和回饋) .
  4. 它是否比 AES256 提供任何可能的優勢?
  5. AES256 具有 128 位抵抗理論量子攻擊的能力。這個密碼會保持對min(key_length/2, 256)SHAKE256_XOF所具有的理論量子攻擊的抵抗力嗎?

在Cryptographic Sponge Functions (本答案簡稱 CSF)的第 3.2 節“海綿函式的使用模式”中,作者列出了用於不同目的的幾種“操作模式”,流密碼應用程序就是其中之一。這是表格:

有沒有關於使用 SHAKE256_XOF 作為密碼的文獻?

好吧,這篇論文已經涵蓋了你。

這種方法在安全性方面與 AES256 相比如何?

這種方法在野蠻力量方面具有同等強度。無論是計數器模式 (CTR) 還是密碼回饋模式 (CFB),SHAKE 流密碼的周期都比 AES-256 更長。

這種密碼有什麼弱點或缺點?顯然,使用 SHA3-512 對其進行身份驗證意味著它不能一次有效地加密,並且解密需要計算 SHA3-512 摘要來進行身份驗證(我正在學習經過身份驗證的加密是如何工作的,因此歡迎提出建議和回饋)。

實際上,如果您查看“雙工”模式(CSF 論文也涵蓋了該模式),AEAD 實際上更容易一次性實現。

它是否比 AES256 提供任何可能的優勢?

我提到了 2(週期長度,1-pass)。它還具有比固定寬度分組密碼更好的參數可擴展性,因此我將其視為第 3 個。

AES256 具有 128 位抵抗理論量子攻擊的能力。這個密碼是否會保持對min(key_length/2, 256)SHAKE256_XOF 所具有的理論量子攻擊的抵抗力。

可能吧,但我數學不太好。

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