我正在设计加密算法.该算法是对称的(单键).
你如何用比特来衡量算法强度?密钥长度是算法的强度吗?
编辑:
第1课:不设计加密算法,AES和其他由学者设计和标准化是有原因的
第2课:加密算法强度不是以位为单位测量的,密钥大小是.算法的强度取决于其设计.通常,使用较大密钥大小的算法更难以暴力,因此更强.
mfa*_*nto 15
首先,这对于任何严重的事情都是如此吗?如果是,立即停止.不要这样做.设计算法是世界上最难的事情之一.除非你有多年的破解密码经验,否则你不会设计任何远程安全的东西.
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是有史以来最破碎的密码之一.它为学习分组密码密码分析提供了一个很好的起点.源代码可用,上面有无数的论文,所以如果你遇到困难,你总能"查找答案".
您可以比较同一算法的密钥长度.算法之间没有多大意义.
如果算法是好的(并且很难证明对于自己开发的东西),那么使用更长的密钥大小会更安全.添加一位应该(再次,如果算法是好的)加倍强制它(因为现在有两倍的可能键).
但更重要的一点是,这只适用于"好"算法.如果您的算法被破坏(即,由于其中存在一些设计缺陷,可以在不尝试所有密钥的情况下解密),那么使密钥更长可能并没有多大帮助.
如果你告诉我你发明了一个1024位密钥的算法,我无法判断它是否比已发布的256位算法更好或更差(我在安全方面犯错并假设更糟).
如果你的竞争对手有两种算法,告诉裁判,密钥大小并不能帮助他们决定哪一种更好.
归档时间: |
|
查看次数: |
8338 次 |
最近记录: |