对我来说,这听起来是个很好的主意,但是对于所有的玫瑰色的想法,它需要在现实中有一些基础。以下是假设系统的步骤(其中突出了假设部分):
用户运行程序加密文件。
提示输入用户密码。
假想部分(是否安全?):
我是否正确地认为:
总之,它安全吗?
人们能看到这个想法有什么缺陷吗?
发布于 2015-10-08 15:55:32
首先,我想向您介绍这个答案。从那里复制TL;DR:
多个加密解决了一个大部分不存在的问题。
您最好使用一个精心选择的算法。
尽管如此,以下是你的一些问题的答案:
在这个假想的场景中,更长的密码增加了更多的加密层,从而增加了更多的安全性,从而鼓励了更长的密码(双重积极特性)?
通常情况下,更多层等于更好的加密(cf ),这是不正确的。级联密码:第一位的重要性)。特别是,在这些情况下,可以证明它是强大的,甚至一个层,它被假定键是独立的。你的钥匙显然不是独立的。
没有一个文件(假设每个密码是不同的)会以相同的方式加密两次吗?
如果您所说的“相同方式”是指进入相同的密文,那么对于任何安全加密算法(高概率)来说都是如此。如果你指的是同样的级联,那么很可能是这样,如果你有和不同符号一样多的技术。例如,all等都给出了不同的算法。否则,一些不同的密码仍然会导致相同的级联。
密码是唯一的主要漏洞?
不,算法还可以通过实现错误甚至算法中的弱点泄露密码信息。而且你实现的算法越多,其中一个错误发生的几率就越高。作为这种错误的一个例子:
程序通过密码中的每个符号在每个阶段用不同的算法加密文件。
如果没有定时攻击,这可能几乎是不可能实现的,因此,在攻击者能够观察到加密/解密某物所需的时间的任何情况下,即使无法恢复整个密码,他们也可以了解有关密码的信息,缩小蛮力或字典攻击范围。
但是,如果您希望使用多个算法来防止中断,我建议:
例如,您可以使用AES-GCM(ChaCha20(m)),并使用氪派生密钥。
发布于 2016-06-08 22:08:14
我想我能发现一个隐含的假设,即你所做的可能会很容易地把这件事搞砸:
encyrpt(key, encrypt(key, plaintext) = decrypt(key, encrypt(key, plaintext)) = plaintext。因此,为了便于论证,我们假设:
更糟糕的是,流密码是基于带有伪随机密钥流的纯文本的XOR。由于XOR是一种关联和可交换的操作,所以我前面提到的“自取消”属性意味着:
因此,任何密码都可以重写为等效的密码,其中只包含每个符号的一个实例,每个符号在原始密码中出现奇数次。这意味着这组真正不同的密码将相当于字母的幂集--例如,如果有26个不同的符号,不管你选择的密码有多长,只有2^26种真正不同的选择!
这可能是一个最坏的例子,但我认为这是最容易解释的潜在陷阱之一。从现在开始,事情只会变得更复杂!
发布于 2016-09-05 14:52:07
@JFlynn --请考虑以下情况:您有3种加密算法的列表。第一个算法--让我们称它为仙境--是一个不可破解的密码,它的密文是高度可识别的--你一眼就能看出密文是用Wonderland生成的,但是你不能告诉任何关于明文的信息。第二个算法=我们称之为LookingGlass -是一个保留明文特征的强密码。也许是某种模拟密码。第三种算法是Vignere密码。
你破坏了Vigenere密码。您知道您已经破坏了它,因为结果的明文看起来像仙境密文的LookingGlass加密。这给了你密码。一旦你知道密码,游戏就结束了。
你真的认为这比仅仅使用不可破解的仙境密码本身更强大吗?我不知道。(因为很明显,事实并非如此。)
https://crypto.stackexchange.com/questions/29700
复制相似问题