我正在设计加密算法。该算法是对称的(单键)。
如何根据比特来衡量算法强度?密钥长度是算法的强度吗?
编辑:
第1课:不要设计加密算法,AES等 由学者设计和标准化的原因
第2课:加密算法强度不是以位为单位测量的,密钥大小是。算法的强度取决于其设计。一般来说,使用较大密钥大小的算法更难以蛮力,因此更强。
答案 0 :(得分:13)
首先,这对于任何严重的事情都是如此吗?如果是,立即停止。不要这样做。设计算法是世界上最难的事情之一。除非您有多年打破密码的经验,否则您不会设计任何远程安全的东西。
AES和RSA有两个非常不同的用途。差异不仅仅是签约。 RSA是一种公钥算法。我们将它用于加密,密钥交换,数字签名。 AES是对称分组密码。我们将其用于批量加密。 RSA很慢。 AES非常快。大多数现代密码系统使用混合方法使用RSA进行密钥交换,然后使用AES进行批量加密。
通常,当我们说“128位强度”时,我们指的是密钥的大小。这是非常具有欺骗性的,因为算法的强度远远超过它的关键大小。换句话说,仅仅因为你有一百万位密钥,它就没有任何意义。
算法的强度既可以根据密钥大小来定义,也可以根据密码分析攻击来定义。我们说如果存在比蛮力更好的攻击,则算法会被破坏。
因此,使用AES和128位密钥,如果没有小于2 ^ 128的攻击,则AES被认为是“安全的”。如果有,我们认为它“破碎”(在学术意义上)。其中一些攻击(供您搜索)包括差分密码分析,线性密码分析和相关的密钥攻击。
我们如何强制算法也取决于它的类型。通过尝试每个可能的密钥,强制使用像AES这样的对称分组密码。但是对于RSA,密钥的大小是模数的大小。我们不会通过尝试每一个可能的密钥来破坏它,而是考虑因素。因此,RSA的强度则取决于数论的当前状态。因此,钥匙的大小并不总能告诉你它的实际强度。 RSA-128非常不安全。通常,RSA密钥大小为1024位+。
使用56位密钥的DES比任何曾经设计的业余密码都要强大。如果您对设计算法感兴趣,首先应该打破其他人。 Bruce Schenier有一个密码分析自学课程,可以帮助你入门:http://www.schneier.com/paper-self-study.html
FEAL是有史以来最破碎的密码之一。它为学习分组密码密码分析提供了一个很好的起点。源代码可用,上面有无数的论文,所以如果你遇到问题,你总能“查找答案”。
答案 1 :(得分:5)
您可以比较同一算法的密钥长度。算法之间没有多大意义。
如果算法是好的(并且很难证明对于自己开发的东西),那么使用更长的密钥大小会更安全。添加一位应该(再次,如果算法是好的)加倍强制它(因为现在有两倍的可能键)。
但是,更重要的一点是,这只适用于“好”的算法。如果你的算法被破坏了(也就是说它可以在没有尝试所有密钥的情况下解密,因为它有一些设计缺陷),那么使密钥更长可能没什么用。如果你告诉我你发明了一个1024位密钥的算法,我无法判断它是否比已发布的256位算法更好或更差(我在安全方面犯错并假设更糟)。
如果你的竞争对手有两种算法,告诉裁判,密钥大小并不能帮助他们决定哪一种更好。
答案 2 :(得分:2)
哦,伙计,这是一个非常棘手的问题。一个是肯定的 - 密钥长度显示无有关加密算法的强度。
我只能想到加密算法强度的两种衡量标准:
Warning - this criteria is just for playing arround, doesn't shows real encryption scheme strength !
强> 所以真正的衡量标准是第一,但第二,你可以玩得开心。
答案 3 :(得分:1)
假设算法是合理的并且它使用整个键范围......
将每个关键字节的唯一字节值的数量增加到字节数的幂。
因此,如果您只使用ASCII字符A-Z,a-z,0-9,即62个唯一值 - 使用这些值的10字节密钥为62 ^ 10。如果使用全部256个值0x00 - 0xFF,则10字节密钥为256 ^ 10(或每个字节10 * 8位= 2 ^ 80)。
答案 4 :(得分:1)
“安全位”由NIST(美国国家标准与技术研究院)定义,在: NIST SP 800-57第1部分,第5.6.1节“可比算法强度”。
NIST的SP 800-57第1部分的各种修订: http://csrc.nist.gov/publications/PubsSPs.html#800-57-part1
当前版本: http://csrc.nist.gov/publications/nistpubs/800-57/sp800-57_part1_rev3_general.pdf
“强度”定义为“打破算法”所需的工作量,而5.6.1继续在某种程度上描述该标准。 表2在同一部分中列出了各种算法的不同密钥大小(包括AES,RSA和ECC)实现的“安全性”。
严格确定新算法的相对强度需要认真工作。
答案 5 :(得分:0)
我快速而又脏的定义是“AES需要具有相同平均破解时间的位数”。您可以随时使用您喜欢的任何尺寸,例如操作,停留时间等等。如果您的理解40位AES消息需要花费很长时间(比128位AES少2 ^ 88),那么无论您使用64,000位密钥,它都是40位强。
这是诚实的,当然,在加密世界中很难找到。对于欢闹,请将其与普通的RSA密钥进行比较。
显然,它并不是那么艰难和快速,而且每次有人发现更好的裂缝时它都会下降,但这就是任意“比特强度”测量的本质。操作强度是一个更具体的措施。