我知道:永远不要做你自己的加密。
但这个问题只是理论上的问题。
假设您与服务器进行Diffie-Hellmann密钥交换以生成共享密钥x
。
然后使用像sha3这样的加密哈希函数来生成伪随机比特流,如下所示:p_i = sha3(x||p_(i-1))
。
要加密数据,只需使用相应的p_i
对所有传出数据包进行加密。
我意识到otp的密钥流必须完全随机以确保不可破坏性,但这个方案至少会像底层哈希函数或DH一样难以破解吗?
在我看来应该是, 但我是新来加密所以请证明我错了:)
由于共享密钥仅用于一个会话,并且假设散列函数是随机预言,因此没有使用密钥流两次。通过在每x
中包含p_i
,攻击者必须中断(不仅发现冲突)第一个发送的数据包以解密剩余的会话,打破任何其他数据包很可能是冲突并且不会泄露所需的x
,只提供此数据包的内容。
此外,打破任何数据包至少需要明文知识,但它只给你这个特定的哈希值,而不是前一个/下一个哈希值。
谢谢,
扎普
答案 0 :(得分:0)
你设计了另一个Stream Cypher。它会起作用吗?可能是的,如果正确实施的话。它会安全吗?几乎肯定不是。为了安全起见,只要明文,OTP就需要一个密钥。除非您的共享秘密与明文一样长,否则您的密码容易受到暴力攻击。它可能还有其他漏洞。
ETA:您可能也想研究Bernstein的Snuffle cypher。
答案 1 :(得分:0)
阅读此link,对此类构造进行安全性分析。