Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Security 最好的核导弹密码系统是什么?_Security_Encryption_Cryptography - Fatal编程技术网

Security 最好的核导弹密码系统是什么?

Security 最好的核导弹密码系统是什么?,security,encryption,cryptography,Security,Encryption,Cryptography,你在潜水艇上,有一条加密的信息你想读。两个人必须同时使用他们的密钥才能获得纯文本。最好使用的加密原语是什么?以下两种实现是否合适 plain_text=decrypt(Key1 XOR key2,ciper_text,IV) plain_text=decrypt(Key1,decrypt(key2,ciper_text,IV2),IV1) (假设AES-256-CBC带有CMAC块,如果这对您很重要。)XOR’键,而最简单的方法可能不是最好的。我认为生成的密钥不够随机-如果有人使用密钥1能够

你在潜水艇上,有一条加密的信息你想读。两个人必须同时使用他们的密钥才能获得纯文本。最好使用的加密原语是什么?以下两种实现是否合适

plain_text=decrypt(Key1 XOR key2,ciper_text,IV)

plain_text=decrypt(Key1,decrypt(key2,ciper_text,IV2),IV1)

(假设AES-256-CBC带有CMAC块,如果这对您很重要。)

XOR’键,而最简单的方法可能不是最好的。我认为生成的密钥不够随机-如果有人使用密钥1能够得到生成的密钥,他们可能能够导出密钥2

为了使组合更加复杂,也许某种一次性pad将是一个不错的计划。对于这种系统,重复使用密钥可能不是一个好主意:)

下面是重用密钥导致问题的示例:

更新

我刚刚吹掉了布鲁斯·施奈尔的《绝妙》副本上的灰尘,并查看了第3.6节“秘密分裂”。这是一个不同的场景,但他建议简单地将密钥与消息进行异或是安全的:

这里有一个协议,Trent可以在Alice和Bob之间分割消息:

(1) Trent生成一个随机位字符串R,长度与消息M相同

(2) Trent XOR M和R生成S

M⊕ R=S

(3) 特伦特给 R给爱丽丝,S给鲍勃


注:他没有提到这是否适用于防御导弹发射系统;)

有了这个,我看不出你怎么能实现这样一个要求,即任何两个级别足够的人——加在一起——都能够阅读消息

除此之外:根据底层的加密算法,拥有一半的异或密钥可能会允许派生完整密钥的一部分,从而显著削弱保护

然后,IANAC:)

第二个选项:

plain_text=decrypt(Key1,decrypt(key2,ciper_text,IV2),IV1)
不遵守双方必须同时使用钥匙的要求。Key2必须在Key1之前使用,但一旦发生这种情况,第一方(Key1的拥有者)可以等待破译,直到她选择的时间,将第二方排除在循环之外。这可能是应用程序的问题,也可能不是

正如Cocowalla引用Schneier的话所指出的,XOR是有效的,除非其中一方可以获得组合密钥(解密方可能能够保守这个秘密),而另一方的密钥有其他用途。如果密钥在统计上不是独立的,XOR的速度意味着密钥组合步骤容易受到引导暴力强制的影响(
decrypt
仍然是一个瓶颈)。如果密钥是独立的,那么就不需要计算出任何一个部分密钥,知道一个部分密钥也不能帮助计算出组合密钥,因此暴力攻击也可以以组合密钥为目标,忽略部分。正如caf提到的,计算另一个部分密钥是没有意义的,因为它需要组合密钥;而且,你只能发射一次核武器。如果一个密钥只与另一个密钥结合使用(并且我们不会对不同的系统重复使用密码,对吗?),那么XOR是安全的

有两种密码系统允许n取k密钥在同时使用时对消息进行解密,但我记不清它们的名称,而且我的
应用密码
副本也不在手边

编辑:多亏了Cocowalla,该方案的名称是“(m,n)阈值方案”。关于一个可视示例,请阅读丹尼尔·斯托勒鲁(Daniel Stoleru)在《多布斯博士》(Dr.Dobbs)杂志上发表的“”一文。由Naor和Shamir创建,并在94年的EUROCRYPT上展示(根据)


维基百科列出了更多的例子:使用n个点,其中秘密是k-1次多项式;使用k-k超平面,其中秘密是交叉点。

通过对键进行异或运算,可以保证键1中的每一位都可能被键2中的每一位修改(反之亦然)。这意味着Key1的持有者无法计算Key2或XORing Key1/Key2的结果

说明这一点的另一种方式是,Key1的持有者必须强制执行每一个可能的位组合,以耗尽可用的键空间。他已经拿着一把钥匙,这对他一点帮助都没有


还有其他方法可以将两个密钥组合在一起,但当密钥长度相同时,只需简单的异或即可。

将两个随机生成的密钥异或组合在一起以获得最终密钥肯定是安全的。这种方法的一般形式称为“”,有一些安全算法允许您生成n个方案中的m个方案,其中生成n个共享,任何m都足以推导出原始密钥


最著名的方案是,生成一个以键为常数的随机m-1次多项式,然后在n个位置进行采样,并将其作为键共享给个体。

在考虑解决方案之前,您可能需要考虑需求。在给定的场景中,如果需要两个人解密消息,那么要求这样做是合理的

  • 每个人都看不到对方的钥匙
毕竟,你想避免一个人只是选择了一个随机的密文,假装这只是进来的,看到了另一个人的密钥,然后注意到密文一定是一个骗局。 这一要求使得使用选项1进行解密变得困难。 因为你使用的是MAC电脑,所以你可能也想要它

  • 两人都确信解密的消息是合法的
这似乎排除了选项2。毕竟,Key2的持有者怎么知道Key1的持有者解密正确,而不是仅仅用他选择的一个替换合法的明文呢

我必须承认,对于您描述的情况,我不知道一个好的解决方案。一个可能的方案可能是这样的:密文是元组c1、c2、d1、d2,其中