#1 楼
重要的是要区分内部使用XOR作为组件运算的密码(几乎全部使用)和
与明文的长度相同,则它是一个时间片,因此从某种意义上说,是的,是的,通过“足够的随机性”,您可以安全地使用XOR加密。
这样做的问题是,只有在密钥与纯文本完全一样的情况下才适用,并且是完全统一的随机变量。
如果不是,那么您基本上已经创建了Vigenere
密码,这很容易被破坏。有趣且不幸的是,OTP的“可证明的安全性”如何愚弄人们的思考
他们可以走一两个小捷径,但仍然可以得到一些安全的东西。
通常,实现简单XOR密码的人会通过使用硬编码密钥加重他们的错误,在这种情况下,一个已知的纯文本/密文对就足以解密任何内容。
这可能主要是因为,如果您使用的是某种预构建的
crypto工具包,那么将AES与您的
RSA密钥管理等结合使用,比使用像样的密钥分发方案要容易得多然后将XOR与安全共享的密钥一起使用。
#2 楼
如果用于对您的纯文本进行XOR的密钥比您的纯文本短,那么重复将被放弃。如果密钥确实是随机的,并且从未重用过,那么它实际上是一次性的。XOR加密的历史名称是Vernam cipher。
基于XOR的密码固有存在错误
为确保密钥足够随机,您需要付出的努力是您需要付出更多的努力才能提出一个更安全的算法。通过使用XOR,存在一个非常薄弱的环节,您必须付出大量努力才能确保安全。
如果您正在做类似其他文章的操作,则将密钥从消息的哈希中删除,则您的密钥现在就是哈希输出的长度(SHA-1为160位,512 SHA-512的位)。如果保证您的消息小于哈希的长度,那么您就可以了。如果有任何更长的消息,则攻击者有一个起点。
评论
$ \ begingroup $
但这仅适用于短信,对吗?如果我们有一个可执行文件或图像文件,该怎么办?它仍然脆弱吗?
$ \ endgroup $
– Soumya
2011年7月12日在23:42
$ \ begingroup $
@ Soumya92,即使它是图片或exe文件,这些文件格式也是众所周知的,因此您仍然可以对其进行攻击。
$ \ endgroup $
–坦古雷纳
2011年7月13日在0:44
#3 楼
我有一种感觉,我将在这里写很多:定义“足够”。您必须回答的问题是“您想保护什么,对您来说有多少价值”?通常,密钥短于加密的总明文的普通XOR密码相当弱,并且解密方法或多或少都是琐碎的。因此,如果那里有很多价值,那就不够用了。但是,就其通常的目的而言,这是足够的(或鉴于存在像我这样的怪胎),这是足够的:防止某人受到冒犯,而不必采取有目的的步骤来同意阅读某本书。 br />做出此决定的好方法是:基于风险做出决定。根据定义,风险是$$ R = P·H $$
其中$ R $是风险,$ P $是发生意外事件的概率, $ H $是该意外事件的危害或后果。对于H,货币几乎始终是一种很好的衡量标准。
现在,请考虑选择密码规则。在一次尝试蛮力攻击中猜出密码的可能性约为$ 2 ^ {-h(p)} $,其中$ h(p)$是满足某些密码规则的密码$ p $的熵,并且该值以位为单位。 (而且,熵是满足规则的可能密码数量的$ \ log_2 $,谁说安全性很复杂?)老式的全小写字母密码,长度为\\ le 8 $个字符,大约38位。 ATM卡4位数密码的熵大约只有13位。每个帐户每年从猜出的PIN码中获得的收益约为\ $ 10。 4位PIN码足够吗?
$$ R = 2 ^ {-13}·\ $ 3000 $$
或约\ $ 0.36。足够。
(流行测验:对于显然拥有9900万美元支票账户余额的人来说呢?)为什么?因为随着密文长度的增加,成功解密消息的概率接近1。因此风险接近H。但是,如果您要加密的内容的值接近0,那么风险也接近0,因此XOR加密可能是合适的。
评论
$ \ begingroup $
存在非线性风险度量-即使您的公式表示风险相同,许多人还是喜欢仅少量(高概率)而不是大量(低概率)。
$ \ endgroup $
–PaŭloEbermann
2011年7月13日,在1:25
$ \ begingroup $
对于您的ATM卡/ PIN码示例,您假设每个帐户的卡每年被盗一次,然后仅尝试使用一个PIN码。
$ \ endgroup $
–PaŭloEbermann
2011年7月13日在14:25
$ \ begingroup $
正确,实用程序加权。由于每个人都有不同的实用程序功能,因此不是很有用。
$ \ endgroup $
–查理·马丁(Charlie Martin)
2011年7月13日在19:20
$ \ begingroup $
@Paulo,您说对了,可以执行更进一步的操作,例如通过3次尝试失败后阻止PIN的规则。但是,重点仍然是要确定风险为驱动因素。
$ \ endgroup $
–查理·马丁(Charlie Martin)
2011年7月13日在19:22
$ \ begingroup $
“使用频率分析可以轻松解密简单的XOR密码”-当您不重用关键数据时,这不适用,对吗?
$ \ endgroup $
–JamesTheAwesomeDude
18/12/13在20:46
#4 楼
仅XOR的最著名示例是一次性填充(或至少是其一种实现)。它只需要一个随机密钥流,并将其与纯文本流进行XOR运算即可创建密码流。一次性填充也是唯一可证明的完美密码,在其中知道任何数量的密文和明文都无助于了解任何其他明文。举一个更实际的例子:输出反馈模式和使用块密码创建流密码的计数器模式本质上也只是XOR:它们各自从密钥中创建密钥流,然后将密钥流与明文进行XOR来创建密文,或者将密钥流与
流密码的OTP和OFM / CTR都有相同的问题,这只是XOR所固有的:如果您正在执行MITM攻击并且可以猜测(部分)纯文本,您可以替换密文的相应部分以将纯文本修改为您选择的内容,而根本不了解密钥。
这是否是真正的问题取决于您的应用程序,可以通过将加密与消息验证码(MAC)。
#5 楼
但是实际上,如果要(安全地)将一个包含随机字节的1 TB磁盘发送给朋友,那么您将拥有一个非常安全的通道,可以进行多达1 TB的通信,足够长的时间。评论
$ \ begingroup $
这不是问题的答案。
$ \ endgroup $
– Maeher
20-2-20在12:13
评论
$ \ begingroup $
我有点困惑。不管密码是一次性密码还是非密码密码,对P加密(或XOR)真的很安全吗?您能否恢复撤消P和X的XOR的秘密购买?我认为我们这里所说的“秘密”也许是您无法从中恢复密钥的东西。例如,一个密钥流/ KS,其中KS = F(Secret,Nonce / IV)。
$ \ endgroup $
–stdout
19-10-20在11:01