Blowfish

密码学中,Blowfish是一种带密钥的对称块密码,由Bruce Schneier于1993年制作,自1993年以来,Blowfish被包含(拼凑)在大量的加密产品中。Blowfish在软件中具有很好的加密率,直到2008年还没有发现对它的密码分析攻击模型。不过,现在AES加密算法受到了更多的关注。

施耐尔将Blowfish作为一种通用算法,用来替代旧的DES算法,消除其他加密算法的问题和困难。在Blowfish发布的时候,很多其他算法都是专有的,或者是秘密。施奈尔曾表示:"Blowfish是没有专利的,在所有国家都将保持这种状态。该算法在此被置于公共领域,任何人都可以自由使用。"

该设计的主要特点包括依赖于密钥的S盒和一个非常复杂的密钥时间表。Blowfish是很多人使用的最快的块密码器之一,除了更换密钥的时候。每一个新的密钥都需要进行预处理,这与加密大约4千字节的文本所需的时间相同,这与其他块状密码相比非常缓慢。这就阻止了它在某些应用中的使用(如在最小的嵌入式系统中,如早期的智能卡),但在其他应用中并不是问题。在其中一个应用中,它实际上是好的:OpenBSD中使用的密码加密方法使用了一种来自Blowfish的算法,它利用了缓慢的密钥时间表;其想法是,所需的额外的计算努力给了防止字典攻击的保护。参见密钥加强。

Blowfish的块大小为64位,密钥长度从0到448位不等,它是一个16轮的Feistel密码,使用大的密钥依赖性S-box。它的结构与CAST-128类似,后者使用固定的S-box。

1996年,Serge Vaudenay发现了一种已知明文攻击,需要28r+1个已知明文才能破解,其中r是回合数。此外,他还发现了一类弱密钥,只需要24r+1个已知明文,就可以通过同样的攻击来检测和破解。这种攻击不能用来对付常规的Blowfish,它假设了密钥依赖性S盒的知识。Vincent Rijmen在他的博士论文中介绍了一种二阶差分攻击,可以破除四轮,再无其他。但除了蛮力搜索外,仍然没有已知的方法可以破解全部16轮。1996年已发现已发表的C代码中的一个符号扩展错误。

直到2008年,还没有公开的关于Blowfish全轮版本的良好密码分析。然而,在2007年,Bruce Schneier指出,虽然Blowfish仍在使用,但他建议使用新的Twofish算法来代替。

相关网页

问题和答案

问:什么是Blowfish?
答:Blowfish是布鲁斯-施奈尔(Bruce Schneier)在1993年创造的一种带密钥的对称块状密码。此后,它被纳入许多加密产品中。

问:Blowfish是用来做什么的?
答:Blowfish是作为一种通用的算法,以取代旧的DES算法,并消除其他加密算法的问题和困难。

问: Blowfish的密钥长度可以有多长?
答:Blowfish的密钥长度可以从0到448位。

问:Blowfish的设计有什么特点?
答:设计的一些特点包括依赖于密钥的S-boxes和一个非常复杂的密钥时间表。

问: 有没有已知的对Blowfish全轮版本的密码分析?
答:截至2008年,除了暴力搜索外,还没有已知的方法来破解完整的16轮密码。

问: Serge Vaudenay发现了针对Blowfish的什么类型的攻击?
答:Serge Vaudenay发现了一种已知明文攻击,需要28r+1个已知明文才能破解,其中r是回合数。他还发现了一类弱钥匙,只需24r+1个已知明文就能被检测到并被这种攻击所破解。

问:Bruce Schneier现在是否建议使用Twofish而不是Blowfish?
答:是的,Bruce Schneier建议现在使用Twofish而不是Blowfish,因为与DES等旧算法甚至AES等新算法相比,Twofish的安全措施有所改进。

AlegsaOnline.com - 2020 / 2023 - License CC3