加密与解密技术

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

加密与解密技术

计算机网络的广泛应用,产生了大量的电子数据,这些电子数据需要传输到网络的许多地方,并存储起来。对于这些数据,有意的计算机犯罪和无意的数据破坏成为最大的威胁。原则上来说,对电子数据的攻击有两种形式,一种称为被动式攻击,就是非法地从传输信道上截取信息,或从存储载体上偷窃、复制信息。另一种称为主动进攻,就是对于传输或存储的数据进行恶意的删除、篡改。实践证明,密码技术是防止数据攻击的一种有效而经济的方法。

我们把消息的发送者称为信源;消息的目的地称为信宿;没有加密的消息称为明文;加密后的消息称为密文;用来传输消息的通道称为信道。通信时,明文M

通过变换E得到密文C,即C=E(u, v, …, w; m)。这个过程称为加密,参数u, v, …, w称为密钥。这里所说的变换E,就是加密算法。从密文C恢复到明文M,这个过程称为解密。解密算法D是加密算法E的逆运算。

加密密钥与解密密钥相同,或者加密密钥与解密密钥可以简单相互推导的密码体制称为对称密码体制。现代密码学修正了密钥的对称性,加密、解密密钥是不同的,也是不能(在有效的时间内)相互推导的,称为非对称密码体制。

1.对称密钥密码体制及典型算法

对称算法(SymmetricAlgorithm),有时又称为传统密码算法,在大多数对称算法中,加密密钥与解密密钥是相同的,所以也称为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信至关重要。

对称加密的优点在于算法实现的效率高、速度快。对称加密的缺点在于密钥的管理过于复杂。常用的对称加密算法有DES、IDEA等。

1) DES算法简介

DES(Data Encryption Standard:数据加密标准)是由IBM公司研制的一种加密算法,美国国家标准局于1977年公布把它作为非机要部门使用的数据加密标准。二十年来,它一直活跃在国际保密通信的舞台上,扮演了十分重要的角色。

DES是一个分组加密算法,它以64位为分组对数据加密;同时DES也是一个对称算法。它的密钥长度是56位(因为每个第8位都用作奇偶校验),密钥可以是任意56位的数,而且可以任意时候改变。其保密性依赖于密钥。

DES算法分如下3个步骤进行。

(1) 对给定的64位的明文x, 通过一个初始置换函数IP来排列x, 从而构造出长为64位的串X0,记X0为IP(X)= L0R0,L0为表示X0的前32位,R0表示X0的后32位。

(2) 计算16次迭代,设前i-1次迭代结果为Xi-1= Li-1Ri-1,则第i轮迭运算为:

Li= Ri-1, Ri= Li+1+f(Ri-1, ki)

其中,Li-1表示Xi-1的前32位,Ri-1表示Xi-1的后32位,+表示两位串的“异或”运算,f主要是由一个称为S盒的置换构成。Ki是一些由初始的56位经过密钥编排函数产生的48位长的块。

(3) 对位串L0R0作逆置换IP-1得密文y,y= IP-1(L16R16),置换IP-1是IP 的逆置换。

DES算法的示意图如下所示

2) IDEA算法简介

国际数据加密算法(InternationalData Encryption Algorithm, IDEA)是1992年来学嘉等人设计的算法。该算法的前身是1990年公布的推荐加密标准(ProposedEncryption Standard, PES)算法。

IDEA分组长度为64b,密钥长度为128b。其使用的运算非常简单,只需要异或,模216加和模(216+1)乘,这些算法都很容易使用硬件或者软件实现(而DES 算法便于用硬件实现,难以用软件实现),所有运算都是使用基于16b数运行,很容易在现在16b, 32b, 64b的CPU上实现。由于这一特性,使用软件实现的IDEA算法的运算速度比DES算法要快。由于IDEA算法使用的密钥长度是128b,远远大于DES算法的56b,对于128b的密钥来说,使用穷举法攻击是不现实的。

2不对称密码加密算法

不对称密码加密算法又称为双密钥和公钥密码体制,是于1976年由Diffie和Hellman提出的。与对称密码体制相比,非对称密码体制有两个不同的密钥,其中一个密钥称为私钥;另一个密钥公开,不需要保密。

公钥密码系统的工作方式为:任何人都可以将自己加密的公钥公布在网络或其他可以公开的地方。其他人欲传送信息给接收方时,可使用该接收方所公布的公钥将信息加密之后传送给接收方。接收方收到加密后的信息时,就可以利用拥有的与此公钥相对应的私钥,将该加密信息解决出来。所以公开密钥密码系统的通信双方,一需要事先通过安全秘密管理交换密钥,即可进行通信。

RSA密码体制是一个常用的非对称的密码体制,它是一个既用于数据加密也能用于数字签名的算法。

RSA的安全性依赖于大素数分解。公钥和私钥都是两个大素数(大于100个十进制位)的函数。据猜测,从一个密钥和密文推断出明文的难度等同于分解两个大素数的积。

1)密钥的产生

(1)选择两个大素数,p和q。

(2)计算n=p*q

(3)随机选择加密密钥e,e必须满足以下条件:

GCD(e, ¢(N))=1

其中¢为Euler's Function, ¢(N)为小于N,且与N互质的整数的个数。在此¢(N)=(p-1)*(q-1)(也有些做法是取LCM((p-1)*(q-1)))。

(4)利用Euclid算法计算解密密钥d, 满足d=e(-1) mode ¢(N)。

产生出加密公钥e,N与解密密钥d之后,使用者将e及N公开,就可以使用它们来执行加解密的工作了。

2)加密程序

使用者将其欲加密的信息M,在取得对方的公钥e及N之后,执行模(mod,即同余的运算,C=M mod N,C等于M除以N的余数)指数运算,就可获得密文C。

C=M(e上标) mod N (a)

然后通过网络传送到通信的对方。

3)解密程序

相关文档
最新文档