我正在设计一个加密算法。该算法是对称的(单键)。
如何用比特来度量算法的强度?密钥长度是算法的强度吗?
编辑:
第1课:不要设计加密算法,AES和其他加密算法是出于某种原因由学术界设计和标准化的
第2课:加密算法的强度不是以位来衡量的,密钥大小是。算法的强度取决于算法的设计。一般来说,使用更大的密钥大小的算法更难蛮力,因此更强。
发布于 2011-03-18 06:23:19
首先,这是为了什么严重的事情吗?如果是的话,现在就停下。不要这样做。设计算法是世界上最困难的事情之一。除非你有多年的破译密码经验,否则你将不会设计任何远程安全的东西。
AES和RSA有两个截然不同的用途。不同之处不仅仅是签署。RSA是一种公钥算法。我们用它进行加密,密钥交换,数字签名。AES是一种对称分组密码。我们用它进行批量加密。RSA非常慢。AES非常快。大多数现代密码系统采用RSA作为密钥交换的混合方式,然后使用AES进行批量加密。
通常,当我们说“128位强度”时,我们指的是键的大小。这是难以置信的欺骗性,因为有更多的力量,一个算法的大小,它的关键。换句话说,仅仅因为你有一个百万位的密钥,它就没有任何意义。
定义了算法的强度,既考虑了算法的密钥大小,又考虑了算法对密码分析攻击的抵抗能力。我们说,如果存在比暴力更好的攻击,那么算法就会被破坏。
因此,使用AES和128位密钥,如果没有少于2^128工作的攻击,AES就被认为是“安全的”。如果有,我们认为它是“坏的”(在学术意义上)。其中一些攻击(用于搜索)包括差分密码分析、线性密码分析和相关的密钥攻击。
我们如何蛮力一个算法也取决于它的类型。像AES这样的对称分组密码是通过尝试每一个可能的密钥来强制的。对于RSA来说,密钥的大小就是模数的大小。我们不会通过尝试每一个可能的键来破坏这一点,而是考虑因素。因此,RSA的强度取决于当前的数论状态。因此,键的大小并不总是告诉你它是实际的力量。RSA-128是非常不安全的。典型的RSA密钥大小为1024位+。
拥有56位密钥的DES比几乎所有业余密码设计的都要强大。
如果你对设计算法感兴趣,你应该从破坏其他人开始。Bruce有一个密码分析的自学课程,可以让您开始学习:http://www.schneier.com/paper-self-study.html。
FEAL是有史以来破译次数最多的密码之一。它为学习分组密码分析提供了一个很好的起点。源代码是可用的,并且有无数已发表的论文,所以如果你陷入困境,你总是可以“查找答案”。
发布于 2011-03-18 06:00:46
您可以比较同一算法的密钥长度。在算法之间,它没有太多的意义。
如果算法是好的(而且很难证明它是本土的),那么使用更长的密钥大小,它就更安全了。添加一个比特(如果算法很好的话)应该是暴力强制的两倍(因为现在有两倍多的可能键)。
然而,更重要的一点是,这只适用于“好”算法。如果您的算法被破坏了(也就是说,它可以在不尝试所有密钥的情况下被解密,因为它存在一些设计缺陷),那么延长密钥可能不会有多大帮助。
如果你告诉我你发明了一种带有1024位密钥的算法,我无法判断它是否比发布的256位算法更好或更糟(我在安全方面会犯错误,假设情况会更糟)。
如果你在竞争中有两种算法,告诉评委关键的大小并不能帮助他们决定哪一种更好。
发布于 2011-03-18 09:23:54
哦,天哪,这是个很难的问题。一个是确定密钥长度显示,nothing,关于加密算法强度的.
我只能想出两种加密算法强度的衡量标准:
Warning - this criteria is just for playing arround, doesn't shows real encryption scheme strength !
因此,真正的衡量首先是第一,但在第二,你可以玩的乐趣。
https://stackoverflow.com/questions/5348580
复制相似问题