当前位置:文档之家› 密码学对称加密算法

密码学对称加密算法

对称加密算法一、网络安全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 的最终值。

相关主题