我目前正在构建一个Web应用程序,并希望对后端的所有数据进行加密。我当时在考虑使用AES-256加密,但不确定它的安全性。我进行了数学运算后感觉很安全。他告诉我,他知道只有两种加密方案无法破解,而AES并不是其中一种。他说肯定了,把它放进去,但是只知道外面有人可以破解它。

我用谷歌搜索了关于AES的一切信息,并且发现了它,并且只有我能找到是本文:完整AES-256上的区分器和相关密钥攻击(扩展版)。可以肯定地说AES已经被破解了,但仍然具有实际用途,对吗?我相信它是$ 2 ^ {231} $而不是$ 2 ^ {256} $。

那又是什么呢?实际使用是否安全?他只是知道大多数人不知道的东西吗?如果我的Web应用程序数据库凭据以某种方式公开,并且黑客获得了原始的加密数据,那么我如何确保他将无法在一生中对其进行解密?

评论

与其专注于选择的算法(选择此处推荐的任何方法,您都可以-AES256都可以),而是专注于威胁模型并防御攻击者。加密本身并不能解决任何问题,更大的问题是要使用一切必需的东西来创建有意义的东西。

假设您没有在这里整理东西,我必须说我不确定您的大学教授在说“ AES-256可以被破解”时是“网络安全专家”。 (如果,我敢肯定,那里有很多3个字母的代理机构都希望听到这个消息。)从我的角度来看,来自教授的这种说法令人担忧,表明他/她相当不专业,即使不是对于负责对信息安全人员进行教育的某人,危险地无知。

我对他说尚未破解的那两种算法非常感兴趣

@JacobHenning我们中的有些人这样做了……但是由于我们的听众遍布世界各地,所以归结为不同的国家以及他们各自的政府和/或军事技术领域。同样,大多数具有这种联系的人也不允许这样标识(出于通常的逻辑原因)。但是,即使我们都是非军人……众所周知,直到今天,美国仍在积极使用AES进行SECRET和TOP SECRET数据的安全保护,这就是为什么我实际上对这样的说法表示怀疑-除非其中一位教授指出有关的论文或参考。其他所有内容都只是无根据的声明,有待证明。

@JacobHenning对您来说,最合乎逻辑的方法是向教授询问相应的参考文献。毕竟,这是他们工作的一部分-为您提供论文/参考文献以供学习。这样做避免了您可能误解了他们所指的情况和/或澄清了他们可能以导致您在此处得到Q的方式解释过的事情的情况。从我的角度来看,这将是最具建设性的事情:排除误解的可能性。也许它们是指操作模式或其他方法,而不是AES算法本身?他们确实有机会...

#1 楼


他告诉我,他知道只有两种加密方法可以破解,而AES并不是其中一种加密方法。


这告诉我您问了您的教授错误的问题。您询问了网络安全专家,是否可以破解某个算法,答案始终是肯定的,除了少数不便使用的算法,例如以完全正确的方式使用的“一次性使用便笺本”。即使在这种情况下,也要担心一些漏洞。

AES-256是一种算法。它可以被打破。如果您查看加密技术的历史,那么每种算法最终都会被破坏。这就是我们制作新算法的原因。问题是弄清楚数学将其破解需要多长时间。

真正要问的问题是“您的威胁模型是什么?”您想阻止哪种攻击?您是在日记上创建数字锁以保护其安全,以防止您的妹妹被撬开,还是爱德华·斯诺登(Edward Snowden)在数家拥有数十亿美元资金的三个信件机构的追赶下? 256当前被标记为足以在美国政府中用于传输TOP SECRET / SCI信息。这几乎是他们可以清除的最高分类级别,因此美国政府非常有信心,没有人可以在保护我们国家最大机密的时间范围内突破AES-256。

(嗯,真正的意思是,他们相信美国政府以外的任何人都不会破坏AES-256;您认为美国政府本身是否可以破坏AES-256的说法取决于您的威胁模型...以及您是否参与有关重型锡纸是否可以制造更好的帽子的讨论)

评论


$ \ begingroup $
我肯定会和他谈谈您的威胁模型。这实际上是任何安全工作的基石。您还可以询问关于aes破碎的情况。历史表明,加密算法通常会在很长一段时间内被破坏,并且我们发现谈论某个算法在多个位中的破坏程度是合理的。这也将使您的教授有机会谈论不同类型的攻击。
$ \ endgroup $
–Cort Ammon
17年4月13日在2:02

$ \ begingroup $
根据Wikipedia的说法,即使是国家安全局(NSA)都使用它,“ ...是国家安全局(NSA)批准的第一个(也是唯一的)公开密码,用于NSA认可的加密模块中时,该密码是最高机密信息(请参阅安全性如下)。” zh.wikipedia.org/wiki/Advanced_Encryption_Standard
$ \ endgroup $
–帕特里克·法夫尔(Patrick Favre)
17年4月13日在10:39

$ \ begingroup $
“您问网络安全专家是否可以破解算法,答案始终是肯定的,...。”这可能是给定的答案,但这并不意味着它是真的。破坏算法,破坏算法的实现或规避它(在某些较大的上下文中,例如,操作模式,协议等)之间存在巨大差异。
$ \ endgroup $
– tylo
17年4月13日在12:19

$ \ begingroup $
@tylo始终是正确的答案,除非专家有证据证明某个特定算法由于“破损”的定义而无法破译。例如,在某些情况下,OTP决不能被定义打破。现在,如果我将时态从“可能”更改为“是”,那么我认为您的说法正确。 “可能”必须包括未来的可能性,历史表明,未来对加密算法完全不了解。
$ \ endgroup $
–Cort Ammon
17年4月13日在15:18

$ \ begingroup $
该答案不正确(或者至少非常不清楚)。严格来说,我们不知道明天不会破坏AES,因为它在信息理论上不是安全的。但是,这并不意味着即使在原则上,任何实际的对手都可以打破AES。这不仅仅是关于“弄清楚数学”的问题。诸如此类的答案会使业余爱好者感到困惑,应避免使用。 Bodewes的答案是正确的,而且更好。
$ \ endgroup $
– K.G.
17年4月14日在9:24

#2 楼

据我们所知,尚未破解AES-256-分组密码。它甚至还没有接近崩溃。另一方面,我们不能证明它是安全的。这意味着可以找到能够破解AES的算法。大多数密码不能被证明是安全的。从信息论的角度来看,只有一小部分算法(如一次性密码键盘)是安全的。

您所指向的论文是有关的关键攻击。这些攻击确实是可能的,并且它们将特定用例的AES强度降低到理论上破坏密码的值。基本上,您不应该使用AES-256构建哈希函数。实际上,为了实现机密性,即使使用量子密码分析进行攻击,AES-256仍然被认为是安全的。

拥有安全的分组密码本身并不能提供任何安全性。您需要一个安全系统,并且对于该安全系统,您可能需要安全协议。并且在该协议中,您可能需要一种方案或一种操作模式(例如GCM)。而且该加密方案可能需要分组密码。那个分组密码可能是AES-256。

AES-256算法本身需要一个受良好保护的秘密密钥和安全的实现,例如在需要时防止侧边通道攻击的保护,才被视为安全。例如,可以使其符合FIPS。

尽管AES-256算法被认为是安全的,但这并不意味着您的方案,协议或系统是安全的。为此,您需要一个威胁模型,并证明它实际上对所有可能的攻击媒介都是安全的。


TL; DR:在构建安全系统时,可以使用AES-256,它被认为是即使无法证明这一点也是安全的。该系统的其他方面比AES-256更有可能发生故障-本身就是分组密码。

评论


$ \ begingroup $
最后一个回答提到这些攻击通常是相关密钥攻击。其他所有答案都忽略了这一点。
$ \ endgroup $
– Aleph
17年4月13日在7:26

$ \ begingroup $
“基本上,您不应该使用AES-256来构建哈希函数。” –有点宽泛。遵循标准Merkle-Damgård构造的哈希函数将受到影响,但是还有其他方法可以根据分组密码制作哈希函数,尽管我现在将在此稍作讨论。
$ \ endgroup $
– Arne Vogel
19年6月25日在6:21

#3 楼


那有什么用呢?使用安全与否?


您似乎在逐句更改要问的内容。您询问它是否破裂,询问它是否安全使用,询问它是否“实用”。 256位安全性。您问它是否安全-安全性不是一个肯定/否的问题,它是231位安全性,并且普遍的看法是128位+是“相当安全”,而90位则几乎被破坏了。


他肯定地说,把它放进去,但是只是知道外面有人可以破解它。


这种想法似乎持续存在,因为您无法证明不存在的东西。没有任何信息表明AES实际上已被破坏。如果您有数万亿美元的资产,最好聘请安全专家在某个地方找到弱点,以将复杂性降低到可管理的水平,而不是构建大型计算机集群。确实,这就是某些三个字母的代理机构破坏某些算法(尤其是其实现)的方式。这当然不适用于AES-256,所以我们希望如此,但是无数种实现被破坏了,因为它们滥用了某些东西。


我如何保护我的Web应用不受专业黑客的攻击?


这与加密或加密无关。误解是加密可以为您提供安全性。我们应该问的是,它为您提供了什么样的安全保障。它可以保护您的房屋免于烧毁吗?最后我没有听到。

将加密和密码学视为一种工具。它可以用作烟雾探测器/不燃材料制造所。

如果您不更换电池,烟雾探测能防止您发生任何事情吗?否。用不燃材料制成的房屋如果用全木料盖起来,是否可以防止任何事情?不会。相反,加密有其依赖性(只有应该知道密钥的人才知道密钥),以及加密所带给您的东西(没有密钥的人无法读取消息)。

所以您问的问题不应该是“ AES-256是否安全并且可以驱除黑客吗?”而是“我应该使用什么工具/技术来预防/检测X?”,只有这样,您才应该专注于工具来完成这项工作。

评论


$ \ begingroup $
感谢@axapaxa的回复。您可能会说,我不太常涉足密码学。那是因为我是一名Web开发人员。显然,加密将不是我们拥有的唯一安全层。实际上,这是我们最后采取的安全措施。但是,由于这种特定情况的详细信息,黑客入侵和解密我们的数据库是最大的风险和最坏的情况。谢谢您的帮助!
$ \ endgroup $
–雅各布·亨宁(Jacob Henning)
17年4月13日在1:34



$ \ begingroup $
@JacobHenning如果您想拥有安全层,请雇用专家来设计这些层。加密不是安全层,您似乎仍然不了解。如果密钥紧挨数据,那么加密就一文不值。这是您最好的知识。另外,如果您存储密码,请阅读如何存储密码(不要加密密码)。
$ \ endgroup $
–axapaxa
17年4月13日在16:24

$ \ begingroup $
@JacobHenning,一个专业的黑客不会花时间对加密进行抨击。他们将找到一种解决加密的方法(例如,通过诱骗您的Web应用程序为其解密数据库)。
$ \ endgroup $
–马克
17-4-13在22:34



$ \ begingroup $
我知道,仅加密并不能帮助我,但是我仍然需要确保所使用的加密实际上是安全的。
$ \ endgroup $
–雅各布·亨宁(Jacob Henning)
17-4-14在4:19



$ \ begingroup $
@JacobHenning我要再说一遍,但请其他人帮助您。因为“ AES256”本身既不安全也不安全,即使您使用密钥进行了正确的操作...在很多情况下,如果AES对于一个非常特殊的情况来说是a)合适的和/或b)是安全的,这就是太久了,无法在此处将其写入答案。如果不了解详细信息,数据库设计,代码,可能的托管人环境,用户类型等,那么“是”或“否”毫无意义。即使一切正常,仅AES就是工具,而不是安全层或其他任何东西。
$ \ endgroup $
– deviantfan
17-4-14在4:27



#4 楼

也许这不是一个完整的答案,但我认为您可能会在更仔细地分析自己的问题时找到有价值的见解:


它是$ 2 ^ {231} $而不是$ 2 ^ {256} $
那又能带来什么呢?


这不是$ 256-231 = 25 $位,而从$ 256 $(〜10%)中安全性降低了但是$ 2 ^ {25} = 33.554.432 $的乘积方式。

添加一位不会给您的安全性加1(即攻击者破解您的加密邮件所需的时间),但会加倍!
这可能有点违反直觉,但是在加密中,我们不会遭受收益递减的影响,而会享受不断增加的收益。添加的密钥长度中的“最后”位最大程度地提高了您的安全性,因为它将实现之前的所有位数加倍。

如果选择AES密钥长度为


用于加密/解密的有效计算的最小值
足以防止破坏代码(例如,暴力攻击需要3.000.000年)

安全损失(即您已经发现)会将其降低到1-2个月内将其分解的实际范围。

我不知道AES密钥长度定义使用了什么实际时间假设。但是,您的教授可能已经告诉您,他作为专家的估计是,已知安全漏洞
质的计算能力增加了(更好的硬件),因为安全性假设进行了
对计算能力的投资(将更多的硬件链接在一起)

使AES对于某些攻击者几乎可以破坏。不确定,那是否真的是他的意图。

现在我想起来了,有2种牢不可破的加密方案让我觉得他很可能是“一次密码”和“量子加密”。因此,根据他的回答,我会特别强调这样的


他肯定地说,把它放进去,但是只是知道外面有人可以破解它。


后一部分可能对威胁模型分析有影响。为此,我想添加一个强制性XKCD:



https://xkcd.com/538/
实际实际情况:没人在乎关于他的秘密。 (而且,我很难为5美元找到那把扳手。)

评论


$ \ begingroup $
修改有关实际使用中的实际漏洞的图形说明。
$ \ endgroup $
–布拉德
17年4月13日在13:54

#5 楼

如果我记得几年前,AES256曾被破坏,但并没有取得重大进展。破解是指找到一种比暴力破解密钥更快的方法。虽然我不确定是否是AES256,但我知道其中一种流行的加密系统已损坏,但仅减少了略微破坏它所需的预期时间。据我所知,到目前为止尚未破解的唯一算法是Serpent和DES。现在我知道每个人都会说DES已损坏,但实际上它并没有损坏,而是硬件的发展超出了我们不再认为它安全的程度。这意味着我们遍历DES的所有可能组合并找到所使用的密钥是微不足道的。这就是为什么3-DES被视为安全的原因,因为它本质上是连续使用3次的相同算法。这也是一个警示性的故事,因为在任何时候我们都可以看到硬件发展到了对于暴力电流算法来说变得微不足道的程度。起草DES时,他们无法想象有足够强大的计算机来执行此操作,而现在这样的硬件已变得如此普遍,以至于在教授加密时,我们可以作为练习来完成。因此,实际上,您所能做的就是利用您所了解的全部知识,并希望它能在一段合理的时间内持续您的生活。就像它们来自内存一样。)

评论


$ \ begingroup $
如果您不确定它是AES-256(我在答案中实际上已经提到过,您一定没有读过),请不要回答。唯一没有破坏的算法是Serpent和DES?那么其他AES候选对象和无数其他算法又如何呢?硬件,因此攻击其他算法(例如AES-256)变得微不足道了吗?我不会屏住呼吸。您的“事实”不只是一点点,而且是完全错误的。
$ \ endgroup $
–马腾·博德威斯♦
17年4月18日在0:05