roo*_*ook 21 security encryption cryptography
您在潜艇上,并且有一条您想要阅读的加密消息.两个人必须同时使用他们的密钥才能获得纯文本.什么是最好的加密原语?以下两种实现是否合适?
plain_text=decrypt(Key1 XOR key2,ciper_text,IV)
plain_text=decrypt(Key1,decrypt(key2,ciper_text,IV2),IV1)
Run Code Online (Sandbox Code Playgroud)
(假设AES-256-CBC带有CMAC块,如果它对您很重要.)
Nic*_*son 18
将两个随机生成的密钥拼凑在一起以获得最终秘密肯定是安全的.这种情况的一般形式称为" 秘密共享 ",并且有一些安全算法允许您生成'm of n'方案,其中您生成n个共享,并且任何m都足以推导出原始密钥.
最着名的方案是Shamir的秘密共享,并涉及生成随机m-1次多项式,其中密钥为常数,然后在n个位置对其进行采样,并将其作为关键共享给予个体.
通过对密钥进行异或,您可以保证Key1中的每个位都可能被Key2中的每个位修改(反之亦然).这意味着Key1的持有者无法计算Key2或XORing Key1/Key2的结果.
说明这一点的另一种方式是Key1的持有者必须强制每一个可能的位组合来耗尽可用的密钥空间.他已经拥有其中一把钥匙的事实根本不能帮助他.
还有其他方法可以将两个键组合在一起,但是当键长度相同时,只需要一个简单的XOR.