APP下载

数据加密基本方法

2010-09-01王晓英

赤峰学院学报·自然科学版 2010年7期
关键词:密码学明文加密算法

王晓英

(赤峰学院 数学学院,内蒙古 赤峰 024000)

数据加密基本方法

王晓英

(赤峰学院 数学学院,内蒙古 赤峰 024000)

本文对数据加密的概念和方法进行了介绍,首先概述了数据加密的起源和发展,其次介绍了密码系统的概念、分类以及密码分析方法,最后对分组密码进行了全面的概述,包括工作模式、设计原则以及现有结构等.

数据加密;密码系统;算法;模式

1 引言

数据加密在网络安全中起着重要作用.在缺乏保护的情况下,用户在网络上存储和传输的任何信息,都存在被篡改和泄露的可能性.这就要求我们不仅需要保护商业通信中的经济信息,而且还需要个人信息.因此,世界上许多大公司和研究机构,都在致力于解决国际互联网上的安全问题的研究.

安全问题解决不好,小到个人利益受损,大到国家巨额财富流失.鉴于数据信息安全越来越重要,以近代密码学为基础的数据加密技术应运而生,并快速发展.从D E S、M D 5到R S A,再到椭圆曲线加密、混沌加密,以及最先进的量子加密,无不说明数据加密在信息传输中的重要地位.

2 数据加密的起源和发展

在计算机中,我们经常需要一种措施来保护我们的数据,防止被一些怀有不良用心的人所看到或者破坏.于是,我们需要对数据进行加密处理,使得非法途径获得数据的人无法破译[3].

数据加密过程可以简单概括成:“把数据A表达成B”;而反加密过程(破译或解密)是:“把数据B恢复成A”.

数据加密的术语包括:“明文”指原始的或未加密的数据;“密文”指明文加密后的形式,是加密算法的输出信息,无密钥的用户无法理解,用于数据的存储以及传输.

加密算法通常是公开的,如果算法的保密性是基于算法的保密,这种算法称为受限制的算法.受限制的算法具有历史意义,但按现代密码学的标准,其保密性远远不够.而且,受限制的密码算法不可能进行质量控制或标准化.每个用户组织必须有他们自己的唯一算法.这样的组织不可能采用流行的硬件或软件产品.但窃听者却可以买到这些流行产品并学习算法,于是用户不得不自己编写算法并予以实现,如果这个组织中没有好的密码学家,那么他们就无法知道他们是否拥有安全的算法.所以受限制加密算法不能广泛应用.

2.1 数据加密的起源数据加密技术起源于古代的密码学.密码到底产生于何时,很难给出确切时间,但是在人类社会产生之初,就有了暗号的使用,它是密码学的雏形.密码的使用和人类拥有文字的时间几乎一样长.

在我国可以考证的文献里面[4],战国时代己经有了密码的使用,特使在送信的时候,会将特殊约定的文书(已经不是明文),拆分成三段,由三个不同的信使分三路送往目的地,这样即便其中一部分文书被截获,也不会被识破其玄机.国外关于密码的应用也可追溯到4000年前的古巴比伦.

2.2 密码的发展

从古至今,密码学的发展己经有几千年的历史,随着密码学的发展其应用范围也越来越广,包括军事、外交、商业、网络以及人们的日常生活的各个领域.同时随着集成电路、计算机和通信技术的飞速发展以及网络技术的广泛应用,基于公共通信设施和计算机网络的个人通信、多媒体通信、电子邮件、电子自动转账系统和自动零售业务网得以蓬勃发展,信息的安全和保护问题显得愈发重要.虽然密码学的研究已有数千年的历史,但是直到1949年,S h a n n o n发表的“保密系统的信息理论”为私钥密码体制建立了理论基础,密码学从此成为一门科学[5].

密码学作为保护信息的手段,经历了三个发展时期.它最早应用在军事和外交领域,随着科技的发展而逐渐进入人们的生活中.在手工阶段,人们只需通过纸和笔对字符进行加密.随着工业革命的兴起,密码学也进入了机器时代、电子时代.与人手操作相比,电子密码机使用了更优秀复杂的加密手段,同时也拥有更高的加密解密效率.其中最具有代表性的就是E N I G M A.E N I G M A是德国在1919年发明的一种加密电子器,它被证明是有史以来最可靠的加密系统之一.二战期间它开始被德军大量用于铁路、企业当中,使德军保密通讯技术处于领先地位.在这个时期虽然加密设备有了很大的进步,但是密码学的理论却没有多大的改变,加密的主要手段仍是替代和换位.

计算机的出现使密码进行高度复杂的运算成为可能[6].直到1976年,为了适应计算机网络通信和商业保密要求产生的公开密钥密码理论,密码学才在真正意义上取得了重大突破,进入近代密码学阶段.近代密码学改变了古典密码学单一的加密手法,融入了大量的数论、几何、代数等丰富知识,使密码学得到更蓬勃的发展.

到了现在,世界各国仍然对密码的研究高度重视,已经发展到了现代密码学时期.密码学己经成为结合物理、量子力学、电子学、语言学等多个专业的综合科学,出现了如“量子密码”、“混沌密码”等先进理论,在信息安全中起着十分重要的角色.

3 密码系统

一个密码系统通常由以下几个部分组成:

图1 一般密码系统的构成

(1)明文空间M,它是全体明文的集合. (2)密文空间C,它是全体密文的集合.

(3)密钥空间K,它是全体密钥的集合.其中每一个密钥K均由加密密钥K和解密密钥K'组成,既K=.

(4)加密算法E,它是一族由M到C的加密变换. (5)解密算法D.它是一族由C到M的解密变换.

对于明文空间M中的每一个明文M,加密算法E在密钥K的控制下将明文M加密成密文C=E(M,K),而解密算法D在密钥K'的控制下将密文C解密出同一明文M:M=D (C,K')=D(E(M,K),K').对于每一个确定的密钥,加密算法将确定一个具体的加密变换,解密算法将确定一个具体的解密变换,且解密变换是加密变换的逆变换.

4 密码系统的分类

4.1 根据密钥分

通常,基于密钥的算法,密码系统分为两类:对称算法和公开密钥算法.

对称算法表现为:K=K’,就是加密密钥能够从解密密钥中推算出来,反过来也成立.在大多数对称算法中,加、解密的密钥是相同的.这些算法也叫做私钥算法或单密钥算法,它要求发送者和接收者在安全通信之前,商定一个密钥.对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都能对消息进行加懈密.只要通信需要保密,密钥就必须保密.对称算法的原理比较直观,计算处理的速度快,有广泛的应用.典型的算法主要有R C 2,R C 4,D E S,T E A等.

公开密钥算法(非对称算法)用做加密的密钥不同于用做解密的密钥,而且解密密钥不能根据加密密钥计算出来(至少在合理假定的长时间内).之所以叫做公开密钥算法,是因为加密密钥能够公开,即陌生者能够用加密密钥加密信息,但只有用相应的解密密钥才能解密信息.加密密钥叫做公开密钥,解密密钥叫做私人密钥.公开密钥算法比较复杂,需要大量的计算工作,不太适合对大信息量内容进行处理.因此,通常仅使用此方法对重要信息进行加密.目前主要使用R S A等公开密钥方法.

对称加密算法实现简单,处理速度快,但对密钥管理的保密性要求很高;公开密钥算法不需要经过安全渠道传递密钥,简化了对密钥的管理,但运算量大、处理速度慢.

4.2 根据明文的处理方式分

根据对明文的处理方式和密钥的使用不同,可将密码体制分为分组密码和序列密码.

分组密码是将明文按一定的位长分组,明文组和密钥全部经过加密运算得到密文组,解密时密文组和密钥经过解密运算还原成明文组.这个固定长度被叫做块大小,块越大,保密性能越好,但加解密的算法和设备就越复杂,块的大小一般为64或128字节.典型的分组密码标准有D E S、I D E A、A E S和T E A等.

序列密码是一次只对明文中的单个位 (有时对字节)运算的算法.加密时,将一段类似于噪声的伪随机序列与明文序列模2加后作为密文序列,这样即使对于一段全“0”或全“1”的明文序列,经过序列密码加密后也会变成类似于随机噪声的混乱序列.在接收端,用相同的随机序列与密文序列模2加便可恢复明文序列.序列密码的优点是运算速度快,缺点是密钥变换过于频繁,密钥分配较难.应用最广泛的序列密码为R C 4.

序列密码的加密、解密算法简单,适合于硬件实现,但加密时对每一位数据都进行耗时的位操作,不适合软件实现.分组密码由于具有易于标准化和便于软硬件实现等固有的特点,在网络安全中更加通用,但加密算法的保密性及复杂度受到块大小的约束.

5 密码分析

密码分析是在不知道密钥的情况下,恢复出明文.成功的密码分析能恢复出消息的明文或密钥.密码分析也可以发现密码体制的弱点.

常用的密码分析攻击有6类[4],每一类都假设密码分析者知道所用的加密算法的全部知识:

5.1 密文攻击.分析者有一些消息的密文,这些消息都用同一加密算法加密.密码分析者的任务是恢复尽可能多的明文,或者最好是能推算出加密消息的密钥,以便可采用相同的密钥解除其他被加密的消息.

5.2 已知明文攻击.分析者不仅可得到一些消息的密文,而且也知道这些消息的明文.分析者的任务就是用加密信息推出用来加密的密钥或导出一个算法,此算法可以对用同一密钥加密的任何新的消息进行解密.

5.3 选择明文攻击.分析者不仅可得到一些消息的密文和相应的明文,而且他们也可选择被加密的明文.这比已知明文攻击更有效.因为密码分析者能选择特定的明文块去加密,那些块可能产生更多关于密钥的信息,分析者的任务是推出用来加密消息的密钥或导出一个算法,此算法可以对用同一密钥加密的任何新的消息进行解密.

5.4 自适应选择明文攻击.这是选择明文攻击的特殊情况.分析者不仅能选择被加密的明文,而且也能基于以前加密的结果修正这个选择.在选择明文攻击中,密码分析者还可以选择一大块被加密的明文.而在自适应选择密文攻击中,可选取较小的明文块,然后再基于第一块的结果选择另一明文块,以此类推.

5.5 选择密文攻击.密码分析者能选择不同的被加密的密文,并可得到对应的解密的明文,例如密码分析者存取一个防窜改的自动解密盒,密码分析者的任务是推出密钥.这种攻击主要用于公开密钥算法,有时也可有效地用于对称算法.

5.6 选择密钥攻击.这种攻击并不表示密码分析者能够选择密钥,它只表示密码分析者具有不同密钥之间的关系的有关知识.

衡量一个密码系统的安全性有两种基本方法,一是实际安全性,二是理论安全性.一个密码,如果无论密码分析者截获多少密文,用什么技术都无法破译,则称该密码系统理论上是安全的.这是香农著名的“一次一密”密码.如果一个密码,破译该系统所需要的努力超过了敌手的破译能力(如时间、空间和资金等资源),或破译该系统的难度等价于解数学上的某个已知难题,则称该密码系统在实际中是安全的.对于我们更有意义的是实际不可破译的密码系统.

6 分组密码

从目前的情况来看,使用传统的方法进行加密容易被破解.如广泛使用的m序列,只需知道2 n个比特(n为寄存器的级数)的码元就能破译该系统.再比如,美国的加密标准D E S(56比特)已经于1997年6月17日被攻破.另据报道1024比特的R S A也可能在2010年被攻破.由此可见,网络信息安全领域急切希望拥有更安全、方便、有效的信息保护手段.目前国际上正在探讨使用一些非传统的方法进行信息加密与隐藏,其中混沌理论就是被采纳和得到广泛研究的方法之一.

密码技术是信息安全技术的核心,它主要由密码编码技术和密码分析技术两个分支构成.密码编码技术的主要任务是寻求产生安全性高的有效密码算法和协议,以满足对消息进行加密认证的要求.密码分析技术的主要任务是破译密码或伪造论证信息,实现窃取机密信息或进行诈骗破坏活动.根据被加密明文的处理方式不同,密码体制可分为分组密码(B l o c kC i p h e r)和序列密码(S t r e a m C i p h e r).在应用密码学中分组密码显得更加重要[3],这主要是因为:(1)分组密码容易被标准化,因为在今天的数据网络通信中,信息通常是被成块地处理和传输的;(2)使用分组密码容易实现同步,因为一个密文组的传输错误不会影响其它组,丢失一个密文组不会对随后组的正确解密产生影响.这就是说,传输错误不会扩散.而这恰恰是序列密码的缺陷;(3)由于两个数据加密标准D E S和A E S的广泛使用,促进了分组密码的发展.

分组密码是一个密钥控制下的变换,该变换把一个明文(密文)分组转换成一个密文(明文)分组.分组密码将明文消息P划分成相继的数据块P1、P2、…,并将每个Pi用同一密钥加密,每组的比特长度称为分组长度,通常为8的倍数,譬如D E S和I D E A密码的分组长度均为64比特.

6.1 分组密码的工作模式

在实际应用中,分组密码体制的安全性往往还取决于加密算法的工作模式,它通常由基本密码、一些反馈和一些简单运算组合而成.目前已提出了多种分组密码的工作模式,比如电子密码本(E C B)模式、密码分组链接(C B C)模式、密码反馈(C F B)模式、输出反馈模式(O F B)、级联模式(C M)、计数器模式、分组链接模式 (B C)、扩散密码分组链接模式( (P C B C)、明文差分的密文分组链接模式(C B C P D)和非线性函数输出反馈模式(O F B N L F)等,但其中最主要和最基本的模式有4种,即E C B、C B C、C F B、O F B模式.

6.2 分组密码的设计原则

一个好的分组密码应该是既难破译又容易实现,加密函数E(*,k)和解密函数D(*,k)都必须是很容易计算的,但是要从方程c=E(p,k)和p=D(c,k)中解出密钥k是一个很困难的问题.一般而言,在设计分组密码时应遵循以下几条原则[7]:6.2.1安全性

安全性是分组密码的最重要的设计准则,它要求即使攻击者知道分组密码的内部结构,仍不能破译该密码.这也意味着,不存在针对该密码的某种攻击方法,其工作量小于穷检索密钥.概括的说就是从任何角度都难以攻破.其中两个最重要的角度是:(1)对于一个正在使用的加密算法,即使攻击者获得许多精心选择的“明文、密文”对,他仍无法“接近”密钥:(2)即使攻击者获得许精心选择的“明文、密文”对,他仍无法“接近”一个新密文所对应的明文.

6.2.2 有效性

效率准则与安全准则互补,它是指在执行加、解密时所需要占用的资源量,是另一个值得考虑的问题.分组密码算法不是各种计算部件的任意堆积,而是一种精巧的组合,使其在满足安全性的同时尽可能简单快速.

6.2.3 透明性和灵活性

透明性是要求算法是可证明安全的,其安全强度与迭代次数的关系尽可能地容易分析.这就要求算法尽可能使用通用部件,避免黑盒.灵活性是要求算法的实现可以适应多种计算环境;明文分组长度可以伸缩;算法可以移植和变形. 6.2.4加、解密相似性

加、解密相似即加密算法和解密算法相同,仅仅密钥编排不同.这就是说,如果记E(*,K)和D(*,K)为使用密钥K的加密算法和解密算法,则对任意密钥K,存在密钥K*,使得D(*,K)=E(*,K).加解密相似性的好处是大大节省存储空间和其它计算资源,并大幅降低成本.这也是分组密码设计所追寻的方向.

6.3 分组密码的结构

分组密码算法不应是各种计算部件的随意堆积,而应是一种精巧的组合.对于不同的设计思路,有不同的组合方式.设计的关键在于如何实现混乱与扩散.分组密码的结构类型通常可分为[8]:

6.3.1 代替置换结构(SPN网络)

由Feistel等人首先提出代替置换结构(SPN)(如图2所示),由多个子代替非线性变换((S盒)迭代轮和简单的比特置换组成,能有效的实现Shannon所描述的混乱与扩散.通过设计不同的代替与置换部件,就能很容易的得到不同的密码系统.在这种算法的每一轮中,首先轮输入被作用于一个山子密钥控制的可逆函数S,然后再被作用于一个置换(或一个可逆的线性变换).SPN的结构非常清晰,S一般被称为混淆层,主要起混淆的作用.P一般被称为扩散层,胜要起扩散作用.在明确S和P的某些密码指标后,设计者能估计SPN型密码抵抗差分密码分析和线性密码分析的能力.许多密码分析方法对迭代密码的第一轮和最后一轮的处理方法与中间轮不一样,一般都是首先猜测几比特密钥,然后剥去密码的第一轮和最后一轮,再将攻击施加于剩下的轮上.有鉴于此,为提高密码的安全性,我们认为可以对第一轮和最后一轮特殊对待,给第一轮加一个密钥控制的前期变换,给最后一轮加一个密钥控制的后期变换.例如,MARS和E2等算法都采用了这样的措施.

图2 三轮SPN结构(分组长度16比特,4*4S盒)

在传统的分组密码算法中,采用SPN结构的比较多,如SAFER、SHARK和SQUARE都是基于SPN结构的分组密码.

6.3.2 Feistel结构

Feistel密码是一类特殊的迭代分组密码,是由Horst Feistel在设计Lucifer分组密码时发明的.由于DES中也采用了Feistel结构(图3所示),Feistel密码有时也叫DES型密码.在一个Feistel密码中,一个明文分组被分割成两部分(在DES中为两个相等的部分).在子密钥的作用下,轮函数f应用于其中的一部分,轮函数的输出与另一部分做XOR运算,再将这两部分交换.除第一轮和最后一轮没有交换外,其余各轮都做相同的运算.Feistel密码的一个非常好的特征是具有相同的加密和解密结构,只需使用与加密相反顺序的子密钥就可以轻松解密.当然也可以设计不含Feistel结构的迭代密码,其加密和解密(使用适当几次重复次序或计算)是相同的,如IDEA.

图3 Feistel结构

许多分组密码采用了Feistel结构,例如FEAL、GOST、LOKI、Blowfish和RC5等.对一个分组长度为2n比特的r轮Feistel型密码,它的加密过程如下:

1)给定明文P,记P=L0R0,这里L0是P的左边n比特,R0是P的右边n比特;

2)进行r轮完全相同的运算后,在这里数据和密钥相结合.则第i轮的消息分组LiRi由下式计算:

其中,茌表示两个比特串的异或,F:GF(2)n×GF(2)n→GF(2)n是轮函数,K1,…,Kr是由种子密钥K生成的子密钥.

3)输出密文C=RrLr.在加密的最后一轮.为了使算法同时用于加密、解密,略去“左右交换”.

“加解密相似”是Feistel密码的实现优点,但Feistel密码的扩散比较慢.例如,DES算法需要两轮才能改变输入的每个比特.

6.3.3 其它结构

还有很多运用其它结构的分组密码,其中许多是基于一些有趣的理论基础,如IDEA就是在不同的代数群上的混合运算,BEAR和LION采用的是3轮非平衡Feistel结构.最新的高级数据加密标准AES采用的就是一种被称为密钥交替的结构.

〔1〕杨义先,等.网络信息安全与保密.北京:北京邮电大学出版社,1999.

〔2〕冯登国.国内外信息安全研究现状及其发展趋势.网络安全技术与应用,2001(1):8-13.

〔3〕胡向东,魏琴芳.应用密码学教程.北京:电子工业出版社,2005:1-100.

〔4〕章照止.现代密码学基础.北京:北京邮电大学出版社,2004:20-120.

〔5〕C.E.Shannon.Communication theory of secrecy systems.Bell System Technical Journal,1949,28(4):656-715.

〔6〕卢开澄.计算机密码学——计算机网络中的数据保密与安全(第3版).北京:机械工业出版社,2003:50-150.

〔7〕杨波.现代密码学.北京:清华大学出版社,2003.

〔8〕M.Y.Rhce.Cryptography and Secure Communication,M cGraw-Hill Book Co.,1994.

T P 393.08

A

1673-260X(2010)07-0024-04

猜你喜欢

密码学明文加密算法
图灵奖获得者、美国国家工程院院士马丁·爱德华·海尔曼:我们正处于密钥学革命前夕
密码学课程教学中的“破”与“立”
奇怪的处罚
HES:一种更小公钥的同态加密算法
奇怪的处罚
应用型本科高校密码学课程教学方法探究
基于小波变换和混沌映射的图像加密算法
四部委明文反对垃圾焚烧低价竞争
对称加密算法RC5的架构设计与电路实现
基于Arnold变换和Lorenz混沌系统的彩色图像加密算法