Security 这种生成对称密钥的技术是否存在严重问题?

Security 这种生成对称密钥的技术是否存在严重问题?,security,encryption,cryptography,protocols,rsa,Security,Encryption,Cryptography,Protocols,Rsa,我使用的是从布鲁斯·施奈尔和尼尔斯·弗格森的一本书中借来的一种技巧。基本上可以归结为: 鲍勃这样做: pubk_A=Alice的公钥 熵=来自加密质量PRNG的字节 加密的\u熵=RSA\u Encryptpubk\u A(熵) 散列熵=SHA2-512(熵) 加密\u keyBA=散列\u熵[0:32] 加密\u nonceBA=散列\u熵[32:48] hmac_keyBA=散列熵[48:64] Bob然后将加密的信息发送给Alice 然后Alice这样做: privk_A=Alice的私

我使用的是从布鲁斯·施奈尔和尼尔斯·弗格森的一本书中借来的一种技巧。基本上可以归结为:


鲍勃这样做:

pubk_A=Alice的公钥

熵=来自加密质量PRNG的字节

加密的\u熵=RSA\u Encryptpubk\u A(熵)

散列熵=SHA2-512(熵)

加密\u keyBA=散列\u熵[0:32]
加密\u nonceBA=散列\u熵[32:48]
hmac_keyBA=散列熵[48:64]

Bob然后将加密的信息发送给Alice

然后Alice这样做:

privk_A=Alice的私钥

熵=RSA\u-k\u A(加密的\u熵)

散列熵=SHA2-512(熵)

加密\u keyBA=散列\u熵[0:32]
加密\u nonceBA=散列\u熵[32:48]
hmac_keyBA=散列熵[48:64]


这对于生成可用于从Bob到Alice通信的密钥非常有用。但我需要可以双向使用的钥匙。我想用这种方式修改算法:


Bob利用熵来实现这一点:

pubk_B=鲍勃的公钥

hashed_entropyBA=SHA2-512(SHA2-256(pubk_A)+熵

加密\u keyBA=散列\u熵[0:32]
加密\u nonceBA=散列\u熵[32:48]
hmac_keyBA=散列熵[48:64]

hashed_entropyAB=SHA2-512(SHA2-256(pubk_B)+熵

加密\u keyAB=散列\u熵[0:32]
加密\u nonceAB=散列\u熵[32:48]
hmac_keyAB=散列熵[48:64]

Alice可以在通过解密加密的熵获得熵后,在她这边做同样的事情


如您所见,现在有两组键,一组用于Bob与Alice之间的通信,另一组用于Alice与Bob之间的通信


这有什么问题吗?我在冒什么安全风险?系统的安全性是否比我现在让一方稍微调整一下的安全性要低还是高?有没有更好的方法来处理这个问题而不增加往返行程?

Alice和Bob都有一个用于双向通信的共享密钥不应该有问题阳离子。事实上,这很像。唯一需要考虑的是,您不能将相同的
iv+主密钥
组合与任何数据包一起使用。还有这个iv

Schneier/Ferguson协议的一个改进是使用,这将消除对
hmac_密钥的需要。这将减少握手中使用的带宽和每个数据包的cpu使用


就您的协议变体而言,您仍然必须依赖于传输
加密的\u熵=RSA\u Encryptpubk\u A(熵)
。这是一个重要的步骤,因为您需要一个共享密钥。在密钥生成中使用已知值
pubk_a
让我感到困扰。请记住,应该假设攻击者知道任何公钥。使用sha256不会使该值变得更随机或更难使用暴力。因此对于这三种计算,
sha512(sha256(pubk_A)+熵)
sha512(pubk_A+熵)
sha512(熵)
。这意味着这是一种资源浪费,因为您没有获得比攻击者更大的优势。

Alice和Bob拥有用于双向通信的共享密钥应该不会有问题。事实上,这非常类似。唯一需要考虑的是,您不能使用相同的
iv+主密钥这是任何一包。还有这个iv

Schneier/Ferguson协议的一个改进是使用,这将消除对
hmac_密钥的需要。这将减少握手中使用的带宽和每个数据包的cpu使用


就您的协议变体而言,您仍然必须依赖于传输
加密的\u熵=RSA\u Encryptpubk\u A(熵)
。这是一个重要的步骤,因为您需要一个共享密钥。在密钥生成中使用已知值
pubk_a
让我感到困扰。请记住,应该假设攻击者知道任何公钥。使用sha256不会使该值变得更随机或更难使用暴力。因此对于这三种计算,
sha512(sha256(pubk_A)+熵)
sha512(pubk_A+熵)
sha512(熵)
。这意味着这是对资源的浪费,因为你没有获得比攻击者更大的优势。

我喜欢阅读实用的加密技术。交叉发布。这可能应该在那里得到答案。@Jeff Ferland:我真的很讨厌堆栈以这种方式分裂。这使得找出问题应该在哪里变得更加困难我注意到,在security.stackexchange上几乎没有人看过它。com@Omnifarious:我理解你对主题碎片化的担忧。不幸的是,在我看来,另一种选择更糟糕。信噪比,或者你感兴趣的问题与你的问题相比e如果对它不感兴趣,它会急剧减少,以至于人们会离开,因为这样做不值得再费心了。堆栈溢出对我来说已经开始有这种感觉了,即使主题是碎片化的。@Gilbert Le Blance:我积极地使用标记过滤来处理这个问题。我已经要求了一大堆标记永远不要看到关于的问题。“有趣的问题”选项卡也是一个很好的尝试。不幸的是,它完全忽略了我对一个问题最感兴趣的事情,那就是它根本没有答案(上浮或不上浮)。我喜欢阅读实用密码学。交叉发布。这可能应该在那里得到回答。@Jeff Ferland:我真的很讨厌stack以这样的方式分裂。这让我很难弄清楚它是什么