科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航



ZDNet>网络频道>ZD评测>对称加密算法技术概述(1)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

对称加密算法技术的详细概述

来源: 2007年12月17日

关键字:文件夹加密 加密工具 文件加密 加密 加密软件 加密技术

一、网络安全


1.网络安全

(1) 网络的安全问题:有以下四个方面

A.  端-端的安全问题,主要指用户(包括代理)之间的加密、鉴别和数据完整性维护。

B.  端系统的安全问题,主要涉及防火墙技术

C.  安全服务质量问题,主要指如何保护合法用户的带宽,防止用户非法占用带宽。

D.  安全的网络基础设施,主要涉及路由器、DNS服务器,以及网络控制信息和管理信息

的安全问题。

(2)网络的安全服务:有以下五个方面

A.身份认证:这是考虑到在网络的应用环境下,验证身份的双方一般是通过网络而非直接交互,所以传统的验证手段如根据对方的指纹等方法

就无法应用。同时大量的黑客随时都可能尝试向网络渗透,截获合法用户的口令并冒充顶替,以合法身份入网。所以应该提供一种安全可靠的

身份认证的手段。

B.授权控制:授权控制是控制不同用户对信息资源的访问权限。授权控制是以身份认证为基础的。通过给不同用户的提供严格的不同层次和不

同程度的权限,同时结合可靠的身份认机制,可以从很大程度上减少非法入侵事件发生的机会。

C.数据加密:数据加密技术顾名思义。在互联网上应用加密技术来保证信息交换的可靠性已经的到了人们普遍的认可,已经进入了应用阶段。

目前的加密技术主要有两大类:一类是基于对称密钥加密的算法,另一类是基于非对称密钥加密的算法。它们都已经达到了一个很高的强度,

同时加密算法在理论上也已经相当的成熟,形成了一门独立的学科。而从应用方式上,一般分成软件加密和硬件加密。前者成本低而且实用灵

活,更换也方便;而后者加密效率高,本身安全性高。在应用中,可以根据不同的需要来进行选择。

D.数据完整性:数据完整性是指通过网上传输的数据应该防止被修改、删除、插入、替换或重发,以保证合法用户接收和使用该数据的真实性

E.防止否认:在网上传输数据时,网络应提供两种防止否认的机制:一是防止发送方否认自己发送过的信息,而谎称对方收到的信息是别人冒

名或篡改过的;二是防止接收方否认自己收到过信息。利用非对称加密技术可以很好的实现第一个否认机制。

二、加密技术

(1) 加密技术的产生和发展

A.  古代,目前记录的比较早的是一个在公元前2世纪,由一个希腊人提出来的,26个字母放在一个5×5的表格里,这样所有的源文都可以行列

号来表示。

B.  近代,在第二次世界大战里,密码机(如紫罗兰)得到了比较广泛的已经技术,同时破译密码的技术也得到了发展,出现了一次性密码技术

。同时密码技术也促进了计算机的发展。

C.  现代,由于计算机和计算机网络的出现,对密码技术提出了更高的需求。密码学的论文和会议不断的增加,以密码技术为主的商业公司开

始出现,密码算法层出不穷,并开始走向国际标准化的道路,出现了DES,AES等国家(美国的)标准。同时各个国家和政府对密码技术也越来越

重视,都加密技术的出口和进口都作了相当严格的规定。

(2) 加密技术的分类

A.对称加密技术

a.  描述

对称算法(symmetric algorithm),有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密钥中推

算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的。所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接

收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密

钥的保密性对通信性至关重要。


b.特点分析

    对称加密的优点在于算法实现后的效率高、速度快。

    对称加密的缺点在于密钥的管理过于复杂。如果任何一对发送方和接收方都有他们各自商议的密钥的话,那么很明显,假设有N个用户进行

对称加密通信,如果按照上述方法,则他们要产生N(N-1)把密钥,每一个用户要记住或保留N-1把密钥,当N很大时,记住是不可能的,而保留

起来又会引起密钥泄漏可能性的增加。常用的对称加密算法有DES,DEA等。

B.非对称加密技术

a.描述

非对称加密(dissymmetrical encryption),有时又叫公开密钥算法(public key algorithm)。这种加密算法是这样设计的:用作加密的密

钥不同于用作解密的密钥,而且解密密钥不能根据加密密钥计算出来(至少在合理假定的长时间内)。之所以又叫做公开密钥算法是由于加密

密钥可以公开,即陌生人可以得到它并用来加密信息,但只有用相应的解密密钥才能解密信息。在这种加密算法中,加密密钥被叫做公开密钥

(public key),而解密密钥被叫做私有密钥(private key)。

b.特点分析

非对称加密的缺点在于算法实现后的效率低、速度慢。

非对称加密的优点在于用户不必记忆大量的提前商定好的密钥,因为发送方和接收方事先根本不必商定密钥,发放方只要可以得到可靠的接收

方的公开密钥就可以给他发送信息了,而且即使双方根本互不相识。但为了保证可靠性,非对称加密算法需要一种与之相配合使用的公开密钥

管理机制,这种公开密钥管理机制还要解决其他一些公开密钥所带来的问题。常用的非对称加密算法有RSA等。

(3) 关于密码技术

密码技术包括加密技术和密码分析技术,也即加密和解密技术两个方面。在一个新的加密算法的研发需要有相应的数学理论证明,证明这个算

法的安全性有多高,同时还要从密码分析的角度对这个算法进行安全证明,说明这个算法对于所知的分析方法来说是有防范作用的。


三、对称加密算法分析

对称加密算法的分类

   对称加密算法可以分成两类:一类为序列算法(stream algorithm):一次只对明文中单个位(有时为字节)加密或解密运算。另一类为分

组算法(block  algorithm):一次明文的一组固定长度的字节加密或解密运算。

    现代计算机密码算法一般采用的都是分组算法,而且一般分组的长度为64位,之所以如此是由于这个长度大到足以防止分析破译,但又小

到足以方便使用。

1.DES加密算法 (Data Encryption Standard )


(1)算法简介

1973 年 5 月 15 日,美国国家标准局 (NBS) 在“联邦注册”上发布了一条通知,征求密码算法,用于在传输和存储期间保护数据。IBM 提交

了一个候选算法,它是 IBM 内部开发的,名为 LUCIFER。在美国国家安全局 (NSA) 的“指导”下完成了算法评估之后,在 1977 年 7 月 15

日,NBS 采纳了 LUCIFER 算法的修正版作为新的数据加密标准。

原先规定使用10年,但由于新的加密标准还没有完成,所以DES算法及其的变形算法一直广泛的应用于信息加密方面。

(2) 算法描述 (包括加密和解密)

Feistel结构(画图说明)。

DES 的工作方式:可怕的细节

DES 将消息分成 64 位(即 16 个十六进制数)一组进行加密。DES 使用“密钥”进行加密,从符号的角度来看,“密钥”的长度是 16 个十六进制数(或 64 位)。但是,由于某些原因(可能是因为 NSA 给 NBS 的“指引”),DES 算法中每逢第 8 位就被忽略。这造成密钥的实际大小变成 56 位。编码系统对“强行”或“野蛮”攻击的抵抗力与其密钥空间或者系统可能有多少密钥有直接关系。使用的位数越多转换出的密钥也越多。密钥越多,就意味着强行攻击中计算密钥空间中可能的密钥范围所需的时间就越长。从总长度中切除 8 位就会在很大程度上限制了密钥空间,这样系统就更容易受到破坏。

DES 是块加密算法。这表示它处理特定大小的纯文本块(通常是 64 位),然后返回相同大小的密码块。这样,64 位(每位不是 0 就是 1)有 264 种可能排列,DES 将生成其中的一种排列。每个 64 位的块都被分成 L、R 左右两块,每块 32 位。

DES 算法使用以下步骤:

1. 创建 16 个子密钥,每个长度是 48 位。根据指定的顺序或“表”置换 64 位的密钥。如果表中的第一项是 "27",这表示原始密钥 K 中的第 27 位将变成置换后的密钥 K+ 的第一位。如果表的第二项是 36,则这表示原始密钥中的第 36 位将变成置换后密钥的第二位,以此类推。这是一个线性替换方法,它创建了一种线性排列。置换后的密钥中只出现了原始密钥中的 56 位。

2. 接着,将这个密钥分成左右两半,C0 和 D0,每一半 28 位。定义了 C0 和 D0 之后,创建 16 个 Cn 和 Dn 块,其中 1<=n<=16。每一对 Cn 和 Dn 块都通过使用标识“左移位”的表分别从前一对 Cn-1 和 Dn-1 形成,n = 1, 2, ..., 16,而“左移位”表说明了要对哪一位进行操作。在所有情况下,单一左移位表示这些位轮流向左移动一个位置。在一次左移位之后,28 个位置中的这些位分别是以前的第 2、3……28 位。

通过将另一个置换表应用于每一个 CnDn 连接对,从而形成密钥 Kn,1<=n<=16。每一对有 56 位,而置换表只使用其中的 48 位,因为每逢第 8 位都将被忽略。

 3.编码每个 64 位的数据块。

64 位的消息数据 M 有一个初始置换 IP。这将根据置换表重新排列这些位,置换表中的项按这些位的初始顺序描述了它们新的排列。我们以前见过这种线性表结构。使用函数 f 来生成一个 32 位的块,函数 f 对两个块进行操作,一个是 32 位的数据块,一个是 48 位的密钥 Kn,连续迭代 16 次,其中1<=n<=16。用 + 表示 XOR 加法(逐位相加,模除 2)。然后,n 从 1 到 16,计算 Ln = Rn-1 Rn = Ln-1 + f(Rn-1,Kn)。即在每次迭代中,我们用前一结果的右边 32 位,并使它们成为当前步骤中的左边 32 位。对于当前步骤中的右边 32 位,我们用算法 f XOR 前一步骤中的左边32 位。

要计算 f,首先将每一块 Rn-1 从 32 位扩展到 48 位。可以使用选择表来重复 Rn-1 中的一些位来完成这一操作。这个选择表的使用就成了函数 f。因此 f(Rn-1) 的输入块是 32 位,输出块是 48 位。f 的输出是 48 位,写成 8 块,每块 6 位,这是通过根据已知表按顺序选择输入中的位来实现的。

我们已经使用选择表将 Rn-1 从 32 位扩展成 48 位,并将结果 XOR 密钥 Kn。现在有 48 位,或者是 8 组,每组 6 位。每组中的 6 位现在将经历一次变换,该变换是算法的核心部分:在叫做“S 盒”的表中,我们将这些位当作地址使用。每组 6 位在不同的 S 盒中表示不同的地址。该地址中是一个 4 位数字,它将替换原来的 6 位。最终结果是 8 组,每组 6 位变换成 8 组,每组 4 位(S 盒的 4 位输出),总共 32 位。

f 计算的最后阶段是对 S 盒输出执行置换 P,以得到 f 的最终值。f 的形式是 f = P(S1(B1)S2(B2)...S8(B8))。置换 P 根据 32 位输入,在以上的过程中通过置换输入块中的位,生成 32 位输出。 

解密只是加密的逆过程,使用以上相同的步骤,但要逆转应用子密钥的顺序。DES 算法是可逆的

(2)算法的安全性分析

在知道一些明文和密文分组的条件下,从理论上讲很容易知道对DES进行一次穷举攻击的复杂程度:密钥的长度是56位,所以会有 种的可能的密钥。

在1993年的一年一度的世界密码大会上,加拿大北方电信公司贝尔实验室的 Michael Wiener 描述了如何构造一台专用的机器破译DES,该机器利用一种每秒能搜索5000万个密钥的专用芯片。而且此机器的扩展性很好,投入的经费越多则效率越高。用100万美元构造的机器平均3.5小时就可以破译密码。

如果不用专用的机器,破译DES也有其他的方法。在1994年的世界密码大会上,M.Matsui 提出一种攻克DES的新方法--"线性密码分析"法。它可使用平均 个明文及其密文,在12台HP9000/735工作站上用此方法的软件实现,花费50天时间完成对DES的攻击。

如前所述DES作为加密算法的标准已经二十多年了,可以说是一个很老的算法,而在新的加密算法的国际标准出现之前,许多DES的加固性改进算法仍有实用价值,在本文的3.4节详细的描述,同时考虑的以上所述DES的安全性已受到了威胁。


(4) 算法的变体

三重DES(TDEA),使用3个密钥,执行3次DES算法:

加密:C = Ek3[Dk2[Ek1[P]]]

解密:P = Dk1[Ek2[Dk3[C]]]

特点:安全性得到增强,但是速度变慢。

2.AES
自 20 世纪 70 年代以来一直广泛使用的“数据加密标准”(DES) 日益显出衰老的痕迹,而一种新的算法 -- Rijndael -- 正顺利地逐渐变成

新标准。这里,Larry Loeb 详细说明了每一种算法,并提供了关于为什么会发生这种变化的内幕信息。

DES 算法是全世界最广泛使用的加密算法。最近,就在 2000 年 10 月,它在其初期就取得的硬件方面的优势已经阻碍了其发展,作为政府加

密技术的基础,它已由“高级加密标准”(AES) 中包含的另一种加密算法代替了。AES 是指定的标准密码系统,未来将由政府和银行业用户使

用。AES 用来实际编码数据的加密算法与以前的 DES 标准不同。我们将讨论这是如何发生的,以及 AES 中的 Rijndael 算法是如何取代 DES

的算法的。

 “高级加密标准”成就

但直到 1997 年,美国国家标准技术局 (NIST) 才开始打着 AES 项目的旗帜征集其接任者。1997 年 4 月的一个 AES 研讨会宣布了以下 AES

成就的最初目标:

·                     可供政府和商业使用的功能强大的加密算法

·                     支持标准密码本方式

·                     要明显比 DES 3 有效

·                     密钥大小可变,这样就可在必要时增加安全性

·                     以公正和公开的方式进行选择

·                     可以公开定义

·                     可以公开评估

AES 的草案中最低可接受要求和评估标准是:

A.1 AES 应该可以公开定义。

A.2 AES 应该是对称的块密码。

A.3 AES 应该设计成密钥长度可以根据需要增加。

A.4 AES 应该可以在硬件和软件中实现。

A.5 AES 应该 a) 可免费获得。

A.6 将根据以下要素评价符合上述要求的算法:

1.                  安全性(密码分析所需的努力)

2.                  计算效率

3.                  内存需求

4.                  硬件和软件可适用性

5.                  简易性

6.                  灵活性

7.                  许可证需求(见上面的 A5)

Rijndael:AES 算法获胜者

1998年8月20日NIST召开了第一次AES侯选会议,并公布了15个AES侯选算法。经过一年的考察,MARS,RC6,Rijndael,Serpent,Twofish共5种算法通过了第二轮的选拔。2000 年 10 月,NIST 选择 Rijndael(发音为 "Rhine dale")作为 AES 算法。它目前还不会代替 DES 3 成为政府日常加密的方法,因为它还须通过测试过程,“使用者”将在该测试过程后发表他们的看法。但相信它可以顺利过关。Rijndael 是带有可变块长和可变密钥长度的迭代块密码。块长和密钥长度可以分别指定成 128、192 或 256 位。

Rijndael 中的某些操作是在字节级上定义的,字节表示有限字段 GF(28) 中的元素,一个字节中有 8 位。其它操作都根据 4 字节字定义。

加法照例对应于字节级的简单逐位 EXOR。

在多项式表示中,GF(28) 的乘法对应于多项式乘法模除阶数为 8 的不可约分二进制多项式。(如果一个多项式除了 1 和它本身之外没有其它约数,则称它为不可约分的。)对于 Rijndael,这个多项式叫做 m(x),其中:m(x) = (x8 + x4 + x3 + x + 1) 或者十六进制表示为 '11B'。其结果是一个阶数低于 8 的二进制多项式。不像加法,它没有字节级的简单操作。

不使用 Feistel 结构!

在大多数加密算法中,轮回变换都使用著名的 Feistel 结构。在这个结构中,中间 State 的位部分通常不做更改调换到另一个位置。(这种

线性结构的示例是我们在 DES 部分中讨论的那些表,即使用固定表的形式交换位。)Rijndael 的轮回变换不使用这个古老的 Feistel 结构。

轮回变换由三个不同的可逆一致变换组成,叫做层。(“一致”在这里表示以类似方法处理 State 中的位。)

线性混合层保证了在多个轮回后的高度扩散。非线性层使用 S 盒的并行应用,该应用程序有期望的(因此是最佳的)最差非线性特性。S 盒是

非线性的。依我看来,这就 DES 和 Rijndael 之间的密钥概念差异。密钥加法层是对中间 State 的轮回密钥 (Round Key) 的简单 EXOR,如

以下所注。

Rijndael算法

 

加密算法

Rijndael算法是一个由可变数据块长和可变密钥长的迭代分组加密算法,数据块长和密钥长可分别为128,192或256比特。

数据块要经过多次数据变换操作,每一次变换操作产生一个中间结果,这个中间结果叫做状态。状态可表示为二维字节数组,它有4行,Nb列,

且Nb等于数据块长除32。如表2-3所示。

   

a0,0
 a0,1
 a0,2
 a0,3
 a0,4
 a0,5
 
a1,0
 a1,1
 a1,2
 a1,3
 a1,4
 a1,5
 
a2,0
 a2,1
 a2,2
 a2,3
 a2,4
 a2,5
 
a3,0
 a3,1
 a3,2
 a3,3
 a3,4
 a3,5
 

 

    数据块按a0,0 , a1,0 , a2,0 , a3,0 , a0,1 , a1,1 , a2,1 , a3,1 , a0,2…的顺序映射为状态中的字节。在加密操作结束时,密文按

同样的顺序从状态中抽取。

    密钥也可类似地表示为二维字节数组,它有4行,Nk列,且Nk等于密钥块长除32。算法变换的圈数Nr由Nb和Nk共同决定,具体值列在表2-4

中。

表3-2  Nb和Nk决定的Nr的值

Nr
 Nb = 4
 Nb = 6
 Nb = 8
 
Nk = 4
 10
 12
 14
 
Nk = 6
 12
 12
 14
 
Nk = 8
 14
 14
 14
 

3.2.1圈变换

   加密算法的圈变换由4个不同的变换组成,定义成:

Round(State,RoundKey){ByteSub(State);ShiftRow(State);MixColumn(State);AddRoundKey(State,RoundKey); (EXORing a Round Key to

the State)}

     加密算法的最后一圈变换与上面的略有不同,定义如下:

FinalRound(State,RoundKey){ByteSub(State);ShiftRow(State);AddRoundKey(State,RoundKey);}

  ByteSub变换

ByteSub变换是作用在状态中每个字节上的一种非线形字节变换。这个S盒子是可逆的且由以下两部分组成:

把字节的值用它的乘法逆替代,其中‘00’的逆就是它自己。

经(1)处理后的字节值进行如下定义的仿射变换:

 

y0       1 1 1 1 1 0 0 0       x0            0

y1       0 1 1 1 1 1 0 0       x1            1

y2       0 0 1 1 1 1 1 0       x2            1

y3       0 0 0 1 1 1 1 1       x3            0

y4   =  1 0 0 0 1 1 1 1       x4     +     0

y5       1 1 0 0 0 1 1 1       x5            0

y6       1 1 1 0 0 0 1 1       x6            1

y7       1 1 1 1 0 0 0 1       x7            1

ShiftRow变换

在ShiftRow变换中,状态的后3行以不同的移位值循环右移,行1移C1字节,行2移C2字节,行3移C3字节。

移位值C1,C2和C3与加密块长Nb有关,具体列在表2-5中:

表3-3 不同块长的移位值

Nb
 C1
 C2
 C3
 
4
 1
 2
 3
 

 

MixColumn变换

在MixColumn变换中,把状态中的每一列看作GF(28)上的多项式与一固定多项式c(x)相乘然后模多项式x4+1,其中c(x)为:

c(x) =‘03’x3 + ‘01’x2 + ‘01’x + ‘02’


圈密钥加法

在这个操作中,圈密钥被简单地使用异或操作按位应用到状态中。圈密钥通过密钥编制得到,圈密钥长等于数据块长Nb。 

在这个表示法中,“函数”(Round, ByteSub, ShiftRow,...) 对那些被提供指针 (State, RoundKey) 的数组进行操作。ByteSub 变换是非线性字节交换,各自作用于每个 State 字节上。在 ShiftRow 中,State 的行按不同的偏移量循环移位。在 MixColumn 中,将 State 的列视为GF(28) 多项式,然后乘以固定多项式 c( x ) 并模除 x4 + 1,其中 c( x ) = '03' x3 + '01' x2+ '01' x + '02'。这个多项式与 x4 + 1 互质,因此是可逆的。

轮回密钥通过密钥计划方式从密码密钥 (Cipher Key) 派生而出。它有两个组件:密钥扩展 (Key Expansion) 和轮回密钥选择 (Round Key Selection)。轮回密钥的总位数等于块长度乘以轮回次数加 1(例如,块长度等于 128 位,10 次轮回,那么就需要 1408 个轮回密钥位)。

密码密钥扩充成扩展密钥 (Expanded Key)。轮回密钥是通过以下方法从这个扩展密钥中派生的:第一个轮回密钥由前 Nb(Nb = 块长度)个字组成,第二个由接着的 Nb 个字组成,以此类推。

加密算法由以下部分组成:初始轮回密钥加法、Nr-1 个轮回和最后一个轮回。在伪 C 代码中:

Rijndael(State,CipherKey){KeyExpansion(CipherKey,ExpandedKey);AddRoundKey(State,ExpandedKey);For( i=1 ; i<Nr ; i++ ) Round

(State,ExpandedKey + Nb*i);FinalRound(State,ExpandedKey + Nb*Nr).}

如果已经预先执行了密钥扩展,则可以根据扩展密钥指定加密算法。

Rijndael(State,ExpandedKey){AddRoundKey(State,ExpandedKey);For( i=1 ; i<Nr ; i++ ) Round(State,ExpandedKey +

Nb*i);FinalRound(State,ExpandedKey + Nb*Nr);}

由于 Rijndael 是可逆的,解密过程只是颠倒上述的步骤。

最后,开发者将仔细考虑如何集成这种安全性进展,使之成为继  Rijndael 之后又一个得到广泛使用的加密算法。AES 将很快应一般商业团体

的要求取代 DES 成为标准,而该领域的发展进步无疑将追随其后。

 

3.IDEA加密算法

(1) 算法简介

    IDEA算法是International Data Encryption Algorithmic 的缩写,意为国际数据加密算法。是由中国学者朱学嘉博士和著名密码学家

James Massey 于1990年联合提出的,当时被叫作PES(Proposed Encryption Standard)算法,后为了加强抵抗差分密码分,经修改于1992年

最后完成,并命名为IDEA算法。

(2) 算法描述

这个部分参见论文上的图

(3) 算法的安全性分析

安全性:IDEA的密钥长度是128位,比DES长了2倍多。所以如果用穷举强行攻击的话,

么,为了获得密钥需要 次搜索,如果可以设计一种每秒能搜索十亿把密钥的芯片,并且

采用十亿个芯片来并行处理的话,也要用上 年。而对于其他攻击方式来说,由于此算法

比较的新,在设计时已经考虑到了如差分攻击等密码分析的威胁,所以还未有关于有谁

发现了能比较成功的攻击IDEA方法的结果。从这点来看,IDEA还是很安全的。


4.总结

几种算法的性能对比

算法
 密钥长度
 分组长度
 循环次数
 
DES
 56
 64
 16
 
三重DES
 112、168
 64
 48
 
AES
 128、192、256
 128
 10、12、14
 
IDEA
 128
 64
 8
 

 

速度:在200MHz的奔腾机上的对比。

 
 C++
 DJGP(++pgcc101)
 
AES
 30.2Mbps
 68.275Mbps
 
DES(RSAREF)
 10.6Mbps
 16.7Mbps
 
3DES
 4.4Mbps
 7.3Mbps
 

 

Celeron 1GHz的机器上AES的速度,加密内存中的数据

128bits密钥:

 
 C/C++ (Mbps)
 汇编(Mbps)
 
Linux 2.4.7
 93
 170
 
Windows2K
 107
 154
 

256bits密钥:

 
 C/C++ (Mbps)
 汇编(Mbps)
 
Linux 2.4.7
 76
 148
 
Windows2K
 92
 135

 

安全性

1990年以来,特制的"DES Cracker"的机器可在几个小时内找出一个DES密钥。换句话说,通过测试所有可能的密钥值,此硬件可以确定用于加

密信息的是哪个密钥。假设一台一秒内可找出DES密钥的机器(如,每秒试255个密钥),如果用它来找出128-bit AES的密钥,大约需要149万亿

年。


四、对称加密应用

在保密通信中的应用。(保密电话)


附加内容

安全哈希算法(SHA)

由NIST开发出来的。

此算法以最大长度不超过264位的消息为输入,生成160位的消息摘要输出。主要步骤:

1.  附加填充位

2.  附加长度

3.  初始化MD缓冲区,为160位的数据

A=67452301

B=EFCDAB89

C=89BADCFE

D=10325476

E=C3D2E1F0

4.  处理512位消息块,将缓冲虚数据和消息块共同计算出下一个输出

5.  输出160位摘要

此外还有其他哈希算法,如MD5(128位摘要),RIPEMD-160(160位摘要)等。

推广二维码
邮件订阅

如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

重磅专题