信息安全技术 参考PPT.ppt
第1章信息安全技术概述,安全攻击,信息在存储、共享和传输中,可能会被非法窃听、截取、篡改和破坏,这些危及信息系统安全的活动称为安全攻击安全攻击分为主动攻击和被动攻击被动攻击的特征是对传输进行窃听和监测。被动攻击的目的是获得传输的信息,不对信息作任何改动被动攻击主要威胁信息的保密性常见的被动攻击包括消息内容的泄漏和流量分析等,主动攻击则意在篡改或者伪造信息、也可以是改变系统的状态和操作主动攻击主要威胁信息的完整性、可用性和真实性常见的主动攻击包括伪装、篡改、重放和拒绝服务,常见的安全攻击,消息内容的泄漏消息的内容被泄露或透露给某个非授权的实体流量分析(TrafficAnalysis)通过分析通信双方的标识、通信频度、消息格式等信息来达到自己的目的篡改指对合法用户之间的通信消息进行修改或者改变消息的顺序伪装指一个实体冒充另一个实体重放将获得的信息再次发送以期望获得合法用户的利益拒绝服务(denialofservice)指阻止对信息或其他资源的合法访问。,安全机制,阻止安全攻击及恢复系统的机制称为安全机制OSI安全框架将安全机制分为特定的安全机制和普遍的安全机制一个特定的安全机制是在同一时间只针对一种安全服务实施一种技术或软件一般安全机制和特定安全机制不同的一个要素是,一般安全机制不能应用到OSI参考模型的任一层上,特定的安全机制包括加密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制和公证普遍的安全机制包括可信功能机制、安全标签机制、事件检测机制、审计跟踪机制、安全恢复机制与安全服务有关的机制是加密、数字签名、访问控制、数据完整性、认证交换、流量填充、路由控制和公证。与管理相关的机制是可信功能机制,安全标签机制,事件检测机制,审计跟踪机制和安全恢复机制,安全目标,信息安全的目标是指能够满足一个组织或者个人的所有安全需求通常强调CIA三元组的目标,即保密性Confidentiality、完整性Integrity和可用性Availability由于这些目标常常是互相矛盾的,因此需要在这些目标中找到一个合适的平衡点。例如,简单地阻止所有人访问一个资源,就可以实现该资源的保密性,但这样做就不满足可用性。,安全需求,可用性Availability确保授权的用户在需要时可以访问信息完整性Integrity保护信息和信息处理方法的准确性和原始性保密性Confidentiality确保信息只被授权人访问可追溯性Accountability确保实体的行动可被跟踪保障Assurance是对安全措施信任的基础,保障是指系统具有足够的能力保护无意的错误以及能够抵抗故意渗透,安全需求之间的关系,,安全需求之间的关系,保密性依赖于完整性,如果系统没有完整性,保密性就失去意义同样完整性也依赖于保密性,如果不能保证保密性,完整性也将不能成立可用性和可追溯性都由保密性和完整性支持上面提到的这些安全需求都依赖于保障,安全服务模型,安全服务是加强数据处理系统和信息传输的安全性的一种服务,是指信息系统为其应用提供的某些功能或者辅助业务安全机制是安全服务的基础安全服务是利用一种或多种安全机制阻止安全攻击,保证系统或者数据传输有足够的安全性图1.3是一个综合安全服务模型,该模型揭示了主要安全服务和支撑安全服务之间的关系模型主要由三个部分组成支撑服务,预防服务和恢复相关的服务,支撑服务是其他服务的基础,主要包括--鉴别(Identification)它表示能够独特地识别系统中所有实体--密钥管理该服务表示以安全的方式管理密钥。密钥常常用于鉴别一个实体--安全性管理(Securityadministration)系统的所有安全属性必须进行管理。如安装新的服务,更新已有的服务,监控以保证所提供的服务是可操作的--系统保护系统保护通常表示对技术执行的全面信任,预防服务能够阻止安全漏洞的发生,包括--受保护的通信该服务是保护实体之间的通信--认证(Authentication)保证通信的实体是它所声称的实体,也就是验证实体身份--授权(Authorization)授权表示允许一个实体对一个给定系统作一些行动,如访问一个资源。--访问控制AccessControl防止非授权使用资源,即控制谁访问资源,在什么条件下访问,能够访问什么等--不可否认(Non-repudiation)它是与责任相关的服务,指发送方和接受方都不能否认发送和接收到的信息。--交易隐私(Transactionprivacy)该服务保护任何数字交易的隐私,检测与恢复服务主要是关于安全漏洞的检测,以及采取行动恢复或者降低这些安全漏洞产生的影响,主要包括--审计Audit当安全漏洞被检测到时,审计安全相关的事件是非常重要的。它是在系统发现错误或受到攻击时能定位错误和找到攻击成功的原因,以便对系统进行恢复--入侵检测Intrusiondetection该服务主要监控危害系统安全的可疑行为,以便尽早地采用额外的安全机制来使系统更安全--整体检验Proofofwholeness整体检验服务主要是检验系统或者数据仍然是否是完整的--恢复安全状态Restoresecurestate该服务指当安全漏洞发生时,系统必须能够恢复到安全的状态,安全目标、需求、服务和机制之间的关系,,安全目标、需求、服务和机制之间的关系,全部安全需求的实现才能达到安全目标不同的安全服务的联合能够实现不同的安全需求一个安全服务可能是多个安全需求的组成要素同样,不同的安全机制联合能够完成不同的安全服务一个安全机制也可能是多个安全服务的构成要素表1.1表示了一些安全服务和安全需求之间的关系,表1.1说明了不是所有的安全需求都强制性地要求所有安全服务但是这些安全服务并不是完全可以忽略因为这些安全服务可能间接地使用如上表中的鉴别和密钥管理两个安全服务仅仅是完整性、保密性和可追溯性所要求的,不是可用性和保障必须的,但可用性是依赖于完整性和保密性。保障则与可用性、完整性、保密性和可追溯性相关所以一个密钥管理服务将影响所有的安全需求,信息安全模型,大多数信息安全涉及通信双方在网络传输过程中的数据安全和计算机系统中数据安全。图1.5是一个典型的网络安全模型。,从网络安全模型可以看到,设计安全服务应包括下面的四个方面的内容--设计一个恰当的安全变换算法,该算法应有足够强安全性,不会被攻击者有效地攻破。--产生安全变换中所需要的秘密信息,如密钥。--设计分配和共享秘密信息的方法。--指明通信双方使用的协议,该协议利用安全算法和秘密信息实现系统所需要安全服务,网络安全协议,通过对TCP/IP参考模型各层增加一些安全协议来保证安全。这些安全协议主要分布在最高三层,主要有网络层的安全协议IPSec传输层的安全协议SSL/TLS应用层的安全协议SHTTP(Web安全协议)、PGP电子邮件安全协议、S/MIME电子邮件安全协议、MOSS电子邮件安全协议、PEM电子邮件安全协议、SSH(远程登录安全协议)、Kerberos网络认证协议等上面提到的一些协议将在本书的后面章节进行详细介绍,第2章对称加密技术,主要知识点--对称密码模型--密码攻击--古典加密技术--数据加密标准--高级加密标准--流密码--分组密码工作模式--随机数的产生--对称密码的密钥分配,密码技术主要分为对称密码技术和非对称密码技术对称密码技术中,加密密钥和解密密钥相同,或者一个密钥可以从另一个导出非对称密码技术则使用两个密钥,加密密钥和解密密钥不同,非对称密码技术则产生于20世纪70年代20世纪70年代以前的加密技术都是对称加密技术,这个时期的加密技术也称为古典加密技术。古典加密技术一般将加密算法保密,而现代的对称加密技术则公开加密算法,加密算法的安全性只取决于密钥,不依赖于算法,密码学的基本概念,密码学(Cryptology)包括密码编码学(Cryptography),和密码分析学(Cryptanalysis)密码编码学是研究加密原理与方法,使消息保密的技术和科学,它的目的是掩盖消息内容密码分析学则是研究破解密文的原理与方法密码分析者(Cryptanalyst)是从事密码分析的专业人员被伪装的原始的消息Message称为明文(Plaintext)将明文转换为密文过程称为加密(Encryption),加了密的消息称为密文(Ciphertext)把密文转变为明文的过程称为解密(Decryption)从明文到密文转换的算法称为密码Cipher一个加密系统采用的基本工作方式叫做密码体制Cryptosystem在密码学中见到“系统或体制”System、“方案”Scheme和“算法”Algorithm等术语本质上是一回事加密和解密算法通常是在一组密钥(Key)控制下进行的,分别称为加密密钥和解密密钥如果加密密钥和解密密钥相同,则密码系统为对称密码系统,对称密码模型,对称密码也称传统密码,它的特点是发送方和接收方共享一个密钥对称密码分为两类分组密码BlockCiphers和流密码StreamCiphers分组密码也称为块密码,它是将信息分成一块组,每次操作如加密和解密是针对一组而言流密码也称序列密码,它是每次加密或者解密一位或者一个字节,一个对称密码系统也称密码体制有五个组成部分组成。用数学符号来描述为S={M,C,K,E,D},如图3.2所示。1明文空间M,是全体明文的集合。2密文空间C,表示全体密文的集合。3密钥空间K,表示全体密钥的集合,包括加密密钥和解密密钥。4加密算法E,表示由明文到密文的变换。5解密算法D,表示由密文到文明的变换。,对明文M用密钥K,使用加密算法E进行加密常常表示为EkM,同样用密钥K使用解密算法D对密文C进行解密表示为DkC在对称加密体制中,密解密密钥相同,有C=EkMM=DkC=DkEkM,密码体制至少满足的条件,1已知明文M和加密密钥K时,计算C=EkM容易2加密算法必须足够强大,使破译者不能仅根据密文破译消息,即在不知道解密密钥K时,由密文C计算出明文M是不可行的3由于对称密码系统双方使用相同的密钥,因此还必须保证能够安全地产生密钥,并且能够以安全的形式将密钥分发给双方4对称密码系统的安全只依赖于密钥的保密,不依赖于加密和解密算法的保密,密码攻击,分析一个密码系统是否是安全,一般是在假定攻击者知道所使用的密码系统情况下进行分析的如密码分析者可以得到密文,知道明文的统计特性,加密体制,密钥空间及其统计特性这个假设称为Kerckhoff假设分析一个密码系统的安全性一般是建立在这个假设的基础上对称密码体制的攻击有两种方法密码分析和穷举攻击BruteForceSearch,密码分析是依赖加密算法的性质和明文的一般特征等试图破译密文得到明文或试图获得密钥的过程穷举攻击则是试遍所有可能的密钥对所获密文进行解密,直至得到正确的明文;或者用一个确定的密钥对所有可能的明文进行加密,直至得到所获得的密文,穷举攻击,穷举攻击是最基本也是比较有效的一种攻击方法从理论上讲,可以尝试所有的密钥穷举攻击的代价与密钥大小成正比密码算法可以通过增大密钥位数或加大解密(加密)算法的复杂性来对抗穷举攻击表3.1是穷尽密钥空间所需的时间。从表中我们可以发现,当密钥长度达到128位以上时,以目前的资源来说,穷举攻击将不成功,密码攻击类型,密码分析是基于Kerckhoff假设密码分析者所使用的策略取决于加密方案的性质以及可供密码分析者使用的信息根据密码分析者所知的信息量,把对密码的攻击分为唯密文攻击,已知明文攻击,选择明文攻击,选择密文攻击,选择文本攻击,唯密文攻击(Ciphertext-OnlyAttack)密码分析者知道加密算法和待破译的密文.已知明文攻击(Known-PlaintextAttack)密码分析者除知道加密算法和待破译的密文外,而且也知道,有一些明文和同一个密钥加密的这些明文所对应的密文即知道一定数量的明文和对应的密文选择明文攻击(Chosen-PlaintextAttack)密码分析者知道加密算法和待破译的密文,并且可以得到所需要的任何明文所对应的密文,这些明文和待破译的密文是用同一密钥加密得来的,即知道选择的明文和对应的密文。如在公钥密码体制中,攻击者可以利用公钥加密他任意选定的明文,选择密文攻击(Chosen-CiphertextAttack)密码分析者知道加密算法和待破译的密文,密码分析者能选择不同的被加密的密文,并可得到对应的解密的明文,即知道选择的密文和对应的明文。解密这些密文所使用的密钥与解密待破解的密文的密钥是一样的。这种攻击主要用于公钥密码算法。选择文本攻击(ChosenTextAttack)选择文本攻击是选择明文攻击和选择密文攻击的结合。密码分析者知道加密算法和待破译的密文,并且知道任意选择的明文和它对应的密文,这些明文和待破译的密文是用同一密钥加密得来的,以及有目的选择的密文和它对应的明文,解密这些密文所使用的密钥与解密待破解的密文的密钥是一样的。,如果一个密码系统能够抵抗选择明文攻击,那么它也能抵抗唯密文攻击和已知明文攻击在这几种攻击类型中,唯密文攻击难度最大,因为攻击者可利用的信息最少对密码设计者而言,被设计的加密算法一般要能经受得住已知明文的攻击如果无论攻击者有多少密文,由一个加密算法产生的这些密文中包含的信息不足以唯一决定对应的明文,也无论用什么技术方法进行攻击都不能被攻破,这种加密算法是绝对安全UnconditionalSecurity除一次一密(One-TimePad)外,没有绝对安全的加密算法,一般来说,加密算法的使用者应该挑选满足下列标准中的一个或两个的算法1破译该密码的成本超过被加密信息的价值。2破译该密码的时间超过该信息有用的生命周期。如果满足上述的两个准则,一个加密算法就可认为是在计算上安全(ComputationalSecurity)的计算上安全是指在计算能力有限的的情况下如计算所需时间比宇宙生存时间还长,无法破解此密文目前的加密算法一般是计算上安全的,密码分析方法,当密钥长度增加到一定的大小时,穷举攻击变得不实际比较流行的密码分析方法是线性密码分析和差分密码分析线性分析是一种已知明文攻击线性分析是一种统计攻击,它以求线性近似为基础。通过寻找现代密码算法变换的线性近似来攻击用这种方法只需要知道243个已知明文的情况下就可以找到DES的密钥,差分密码分析在许多方面与线性密码分析相似它与线性密码分析的主要区别在于差分密码分析包含了将两个输入的异或与其相对应的两个输出的异或相比较差分密码分析也是一个选择明文攻击差分密码分析出现于20世纪70年代,但在1990年才公开发表它的基本思想是通过分析明文对的差值与密文对的差值的影响来恢复某些密钥位差分分析可用来攻击任何由迭代一个固定的轮函数的结构的密码,古典加密技术,古典加密技术主要使用代换或者置换技术代换是将明文字母替换成其他字母、数字或者符号置换则保持明文的所有字母不变,只是打乱明文字母的位置和次序古典代换加密技术分为两类单字母代换密码,它将明文的一个字符用相应的一个密文字符代替。多字母代换密码,它是对多于一个字母进行代换单字母代换密码中又分为单表代换密码和多表代换密码,单表代换密码只使用一个密文字母表,并且用密文字母表中的一个字母来代替一个明文字母表中的一个字母多表代换密码是将明文消息中出现的同一个字母,在加密时不是完全被同一个固定的字母代换,而是根据其出现的位置次序,用不同的字母代换,单表代换密码,设M和C分别表示为含n个字母的明文字母表和密文字母表。M{m0,m1,,mn-1}C{c0,c1,,cn-1}如果f为一种代换方法,那么密文为CEkmc0c1cn-1fm0fm1fmn-1单表代换密码常见的方法有加法密码,乘法密码和仿射密码,加法密码,对每个c,m∈Zn,加法密码的加密和解密算法是CEkmmkmodnMDkcc-kmodnk是满足0kn的正整数。若n是26个字母,加密方法是用明文字母后面第k个字母代替明文字母Caesar密码是典型的加法密码,由JuliusCaesar发明,最早用在军方。将字母表中的每个字母,用它后面的第3个字母代替,Caesar密码举例明文meetmeafterthetogaparty密文PHHWPHDIWHUWKHWRJDSDUWB对每个明文字母m,用密文字母c代换,那么Caesar密码算法如下加密CEmm3mod26解密MDcc–3mod26移位可以是任意的,如果用k(1≤k≤25)表示移位数,则通用的Caesar密码算法表示为加密CEkmmkmod26解密MDkcc–kmod26,Caesar密码安全性,对密码的分析是基于Kerckhoff假设假设攻击者知道使用Caesar密码加密。如果攻击者只知道密文,即唯密文攻击,只要穷举测试所有可能字母移位的距离,最多尝试25次如果攻击者知道一个字符以及它对应的密文,即已知明文攻击,那么攻击者很快就通过明文字符和对应的密文字符之间的距离推出密钥这个例子说明一个密码体制安全至少要能够抵抗穷举密钥搜索攻击,普通的做法是将密钥空间变得足够大。但是,很大的密钥空间并不是保证密码体制安全的充分条件,下面的例子可以说明这一点,对Caesar密码进行改进,假设密文是26个字母的任意代换,密钥是明文字母到密文字母的一个字母表,密钥长度是26字长下面用一个密钥句子构造一个字母代换表密钥句子为themessagewastransmittedanhourago,按照密钥句子中的字母依次填入字母表(重复的字母只用一次),未用的字母按自然顺序排列原字母表abcdefghijklmnopqrstuvwxyz代换字母表THEMSAGWRNIDOUBCFJKLPQVXYZ,若明文为pleaseconfirmreceipt使用上面的代换字母表,则密文为CDSTKSEBUARJOJSESRCL使用上面的方法代换,总共有264x1026种密钥从表3.1可以看到穷举搜索这么多的密钥很困难但这并不表示该密码不容易破解破解这类密码的突破点是由于语言本身的特点是充满冗余的,每个字母使用的频率不相等单表代换密码没有改变字母相对出现的频率明文字母的统计特性在密文中能够反映出来,当通过统计密文字母的出现频率,可以确定明文字母和密文字母之间的对应关系,英文字母中单字母出现的频率,单字母按照出现频率的大小可以分为下面5类1e出现的频率大约为0.1272t,a,o,I,n,s,h,r出现的频率大约在0.06-0.09之间3d,l出现的频率约为0.044c,u,m,w,f,g,y,p,b出现的频率大约在0.015-0.028之间5v,k,j,x,q,z出现的频率小于0.01双字母和三字母组合都有现成的统计数据,常见的双字母组合和三字母组合统计表能够帮助破解密文。频率最高的30个双字母(按照频率从大到小排列)thheineranreedonesstenattonthandoueangasortiisetitartesehiof频率最高的20个3字母(按照频率从大到小排列)theingandherereentthanthwasethfordthhatsheioninthissthersver,破解举例,例3.1已知下面的密文式由单表代换生产的UZQSOVUOHXMOPVGPOZPEVSGZWSZOPFPESXUDBMETSXAIZVUEPHZHMDZSHZOWSFPAPPDTSVPQUZWYMXUZUHSXEPYEPOPDZSZUFPOMBZWPFUPZHMDJUDTMOHMQ,试破译该密文首先统计密文中字母出现的频率,然后与英文字母出现频率比较。密文中字母的相对频率统计如下,将统计结果与图3.3进行比较,可以猜测密文中P与Z可能是e和t,密文中的S,U,O,M出现频率比较高,可能与明文字母中出现频率相对较高的a,o,I,n,s,h,r这些字母对应密文中出现频率很低的几个字母C,K,L,N,R,I,J可能与明文字母中出现频率较低的字母v,k,j,x,q,z对应。就这样边试边改,最后得到明文如下itwasdisclosedyesterdaythatseveralinalbutdirectcontactshavebeenmadewithpoliticalrepresentativesofthevietconginmoscow在尝试过程中,如果同时使用双字母和三字母的统计规律,那么更容易破译密文。如上面的密文中出现最多的双字母是ZW,它可能对应明文双字母出现频率较大的th,那么ZWP就可能是the,这样就更容易试出明文。,乘法密码,对每个c,m∈Zn,乘法密码的加密和解密算法是CEkmmkmodnMDkcck-1modn其中k和n互素,即gcdk,n1,否则不存在模逆元,不能正确解密乘法密码的密码空间大小是φn,φn是欧拉函数。乘法密码的密钥空间很小,当n为26字母,则与26互素的数是1、3、5、7、9、11、15、17、19、21、23、25,即φn12因此乘法密码的密钥空间为12。乘法密码也称采样密码,因为密文字母表是将明文字母按照下标每隔k位取出一个字母排列而成。,乘法密码举例,例3.2假设选取密钥为9,使用乘法密码的加密算法,那么明文字母和密文字母的代换表构造如下,若明文为amanliberalinhisviews那么密文为AENVUJKXUNLUGHUKQG,仿射密码,加法密码和乘法密码结合就构成仿射密码,仿射密码的加密和解密算法是CEkmk1mk2modnMDkck1-1c-k2modn仿射密码具有可逆性的条件是gcdk,n1。当k10时,仿射密码变为加法密码,当k20时,仿射密码变为乘法密码。仿射密码中的密钥空间的大小为nφn,当n为26字母,φn12,因此仿射密码的密钥空间为1226312。,仿射密码举例,例3.3设密钥K7,3,用仿射密码加密明文hot。三个字母对应的数值是7、14和19。分别加密如下773mod2652mod2607143mod26101mod26237193mod26136mod266三个密文数值为0、23和6,对应的密文是AXG。,多表代换密码,用单表代换密码加密后的密文具有明文的特征,通过统计密文中字母出现的频率能够比较方便地破解密文要提高密码的强度,应该让明文结构在密文中尽量少出现多表代换密码和多字母代换密码能够减少这种密文字母和明文字母之间的对应关系多表代换密码是对每个明文字母信息采用不同的单表代换,如果明文字母序列为mm1m2,令ff1,f2,为代换序列,则对应的密文字母序列为CEkmf1m1f2m2若代换系列为非周期无限序列,则相应的密码为非周期多表代换密码这类密码对每个明文字母都采用不同的代换表或密钥进行加密,称作是一次一密密码one-timepadcipher,这是一种在理论上唯一不可破的密码实际中经常采用周期多表代换密码,它通常只使用有限的代换表,代换表被重复使用以完成对消息的加密,周期多表代换密码此时代换表系列为ff1,f2,,fd,f1,f2,,fd,在对明文字母序列为mm1m2进行加密时,相应的密文字母系列为CEkmf1m1f2m2fdmdf1md1f2md2fdm2d当d1时,多表代换密码变为单表代换密码。,维吉尼亚密码,维吉尼亚Vigenre密码是一种周期多表代换密码,由1858年法国密码学家维吉尼亚提出维吉尼亚密码常常使用英文单词作为密钥字,密钥则是密钥字的重复比如密钥字是computer,用它加密明文senderandrecipientshareacommonkey。那么密钥为明文senderandrecipientshareacommonkey密钥computercomputercomputercomputerc,维吉尼亚密码加密过程简述如下--写下明文,表示为数字形式;--在明文之上重复写下密钥字,也表示为数字形式;--加密相对应的明文给定一个密钥字母k和一个明文字母m,那么密文字母则是mkmod26计算结果所对应的字母,维吉尼亚密码举例,例3.5设密钥字是cipher,明文串是thiscryptosystemisnotsecure,求密文。在明文下面重复写密钥字,组成密钥。明文Mthiscryptosystemisnotsecure密钥Kcipherciphercipherciphercip将明文和密钥转化为数字明文M19,7,8,18,2,17,24,15,19,14,18,24,18,19,4,12,8,18,13,14,19,18,4,2,20,17,4密钥K2,8,15,7,4,17,2,8,15,7,4,17,2,8,15,7,4,17,2,8,15,7,4,17,2,8,15,对每个明文数字和对应的密钥数字,使用cimikimod26加密得到密文数字为C21,15,23,25,6,8,0,23,8,21,22,15,21,1,19,19,12,9,15,22,8,25,8,19,22,25,19于是密文为VPXZGIAXIVWPUBTTMJPWIZITWZT,维吉尼亚密码的安全性,维吉尼亚密码是将每个明文字母映射为几个密文字母如果密钥字的长度是m,明文中的一个字母能够映射成这m个可能的字母中的一个密文中字母出现的频率被隐蔽了,它的安全性明显比单表代换密码提高了维吉尼亚密码的密钥空间比较大,对于长度是m的密钥字,密钥空间为26m当m5,密钥空间所含密钥的数量大于1.1x107,一次一密,一次一密是非周期多表代换密码使用与明文一样长且无重复的随机密钥来加密明文,并且该密钥使用一次后就不再使用一次一密的安全性是取决于密钥的随机性但产生大规模随机密钥是一件很困难的事情,目前还没有很好的办法来解决这个问题密钥分配也是一个难点,由于密钥不允许重复使用,因此存在大量的密钥分配问题。一次一密在实际中很少使用,主要是用于高度机密的低带宽信道,多字母代换密码,前面介绍的密码都是以单字母作为代换对象多字母代换密码每次对多个字母进行代换多字母代换的优点是容易隐藏字母的自然出现频率,有利于对抗统计分析Playfair密码和Hill密码都是多字母代换密码,Playfair密码,Playfair密码是将明文中双字母音节作为一个代换单元Playfair算法是基于一个由密钥组成的一个55阶矩阵假设密钥是monarchy,构建矩阵的方法是将密钥(去掉重复的字母)从左到右、从上到下填入矩阵中,再将剩余的字母按照字母表的顺序依次填入在该矩阵中,字母i和j暂且当一个字母。这样可以构成如下的密钥矩阵。,Playfair的加密原则,每次以两个字母为一个单位进行操作。1如果这两个字母一样,则在中间插入一个字母x事先约定的一个字母,如“balloon”变成“balxloon”。2如果明文长度不是2的倍数,则在最后填入一个实现约定的字母x。如“table”变为“tablex”。3如果两个字母在矩阵的同一行,用它右边的字母来代替最后一个字母的右边是第1个字母,如“ar”加密变为“RM”。4如果两个字母在同一列,用它下面的字母来代替它最底下的字母的下一个是该列第1个字母,如“mu”加密变为“CM”。5其他的字母都用它同一行,另一个字母的同一列相交的字母代替,如“hs”加密变为“BP”,“ea”变为“IM”或者“JM”由加密者自行决定,Playfair加密举例,例3.6假设密钥是cipher,使用Playfair算法加密Playfaircipherwasactuallyinventedbywheatston由密钥词cipher可构建密钥矩阵将明文按照两个字母分组为playfaircipherwasactualxlyinventedbywheatstonx则密文为BSDWRBCAIPHECFIKQBHOQFSPMXEKZCMUHFDXYIIFUTUQLZ,,Playfair密码的安全性,Playfair密码的安全性比单表代换密码提高了许多双字母共有26x26676组合,因此频率统计分析表中需要676条统计数据Playfair密码中比单表代换更好地隐藏了明文中单字母的结构在第一次世界大战中被英军作为最好的密码系统使用,在第二次世界大战中也曾经被美军和盟军大量使用当然现在看来,该密码的安全性是很低的,它还明文的部分特征,只要给定几百个字母的密文情况下,该加密方法就可以破解,Hill密码,该密码是1929年由数学家lesterHill发明的一种多字母代换密码加密算法将m个明文字母替换成m个密文字母Hillm密码表示m个明文字母为一组这种代换由m个线性方程决定如果m3,则该密码系统可以表示为,用向量或者矩阵表示为其中C和M是长度为3的列向量,分别代表密文和明文,K是一个33的矩阵,代表加密密钥运算按照模26执行。,Hillm密码加密过程,将明文字母以m个字母为单位进行分组,若最后一组没有m个字母,则补足没有任何实际意义的哑字母(双方事先可以约定这些字母),并用数字表示这些字母;选择一个m阶可逆方阵K,称为Hillm密码的加密矩阵;对每m个字母为一组的明文字母,用它对应的值构成一个m维向量;计算密文的值Ckmmod26,然后反查字母表的值,得到对应的m个密文字母;同样明文的其他组的密文。,置换密码,代换密码是将明文字母用不同的密文字母代替置换密码则保持明文的所有字母不变,只是打乱明文字母的位置和次序置换密码实现方法有很多.下面介绍一种列置换加密方法假如用密钥network,加密明文permutationcipherhidethemessagebyrearrangingtheletterorder,将明文按照密钥的长度一行一行地写成一个矩阵,然后按照密钥字母对应的数值从小到大,按照列读出即为密文,在密钥network中,字母对应的数字从小到大排列是eknortw,按照这个顺序读出上面矩阵的列即是密文EIEHGRGTRAPESEIEDPTHTAANTEUCIEYNEOTIDSRGLRROREERTEMNHMBAHR置换密码比较简单,经不起已知明文攻击但是置换密码与代换密码相结合,可以得到效果很好的密码。,数据加密标准,美国国家标准局NBS,即现在的国家标准和技术研究所NIST于1973年5月向社会公开征集标准加密算法并公布了它的设计要求--算法必须提供高度的安全性--算法必须有详细的说明,并易于理解--算法的安全性取决于密钥,不依赖于算法--算法适用于所有用户--算法适用于不同应用场合--算法必须高效、经济--算法必须能被证实有效,1974年8月27日,NBS开始第二次征集,IBM提交了算法LUCIFER,该算法由Feistel领导的团队研究开发,采用64位分组以及128位密钥IBM用改版的Lucifer算法参加竞争,最后获胜,成为数据加密标准DataEncryptionStandard,DES1976年11月23日,采纳为联邦标准,批准用于非军事场合的各种政府机构。1977年1月15日,数据加密标准,即FIPSPUB46正式发布DES是分组密码的典型代表,也是第一个被公布出来的加密标准算法。现代大多数对称分组密码也是基于Feistel密码结构,DES加密过程,DES同时使用了代换和置换两种技巧它用56位密钥加密64位明文,最后输出64位密文整个过程分为两大部分组成一是加密过程,另一是子密钥产生过程图3.4是DES加密算法简图,图3.4左半边的处理过程可以分三个部分164位明文经过初始置换被重新排列,然后分左右两半,每半各32位;2左右两半经过16轮置换和代换迭代,即16次实施相同的变换。然后再左右两半互换;3互换后的左右两半合并,再经过逆初始置换输出64位密文。图3.4右半部则由56位密钥,产生16个48位子密钥,分别供左半边的16轮迭代加密使用,初始置换,初始置换InitialPermutation,IP是数据加密的第1步将64位的明文按照图3.5置换。置换表中的数字表示输入位在输出中的位置,置换后将数据M分成两部分左半部分L0和右半部分R0各32位。划分方法原则是偶数位移到左半部,奇数位移到右半部,即,DES每轮结构,上一轮的右边Ri-1直接变换为下一轮的左边Li上一轮的左边Li-1与加密函数F异或后作为下一轮的右边Ri加密函数F则是上一轮右边Ri-1和子密钥Ki的函数。即LiRi–1RiLi–1⊕FRi–1,Ki,加密函数F本质上是Ri-1和子密钥Ki的异或,如图3.7所示但由于它们的位数不一样,不能直接运算从上式可以看出加密函数F是32位,而Ri-1是32位,子密钥Ki是48位,因此Ri-1和Ki不能直接异或DES这样处理这个问题,先用扩展置换E如图3.8所示将Ri-1扩展为48位,与48位子密钥异或,输出48位,再使用8个S盒压缩成32位,然后经置换函数P如图3.9所示输出32位的加密函数F。,加密函数F的计算过程,图3.8扩展置换E,图3.9置换函数P,S盒,在加密函数计算过程中使用了8个S盒S盒是DES保密性的关键所在S盒是一种非线性变换,也是DES中唯一的非线性运算S盒有6位输入,4位输出48位数据经过8个S盒后输出32位数据每个S盒都由4行表示为0,1,2,3和16列0,1,,15组成,如图3.10所示,每行都是全部的16个长为4比特串的一个全排列每个比特串用它对应的二进制整数表示,如1001用9表示。对每个S盒,将6位输入的第一位和最后一位组成一个二进制数,用于选择S盒中的一行。用中间的4位选择S盒16列中的某一列,行列交叉处的十进制数转换为二进制数可得到4位输出。例如对于S1盒而言,如果输入为011001,则行是01十进制1,即S盒的第2行,列110012,即S盒的第13列,该处的值是9,转换为二进制数为1001,即为该S盒的输出,DES子密钥产生,DES加密过程共迭代16轮,每轮用一个不同的48位子密钥子密钥由算法的56位密钥产生DES算法的输入密钥长度是64位,但只用了其中的56位如图3.11所示,图中无阴影部分,也就是每行的第8位被忽略,主要用于奇偶校验,也可以是随意设置子密钥的产生过程如图3.12所示,图3.11DES的输入密码,56位密钥首先经过置换选择1如图3.13所示将其位置打乱重排将前28位作为C0如图3.13的上面部分,后28位D0如图3.13的下面部分,接下来经过16轮,产生16个子密钥每一轮迭代中,Ci-1和Di-1循环左移1位或者2位,如图3.14所示Ci-1和Di-1循环左移后变为Ci和Di,将Ci和Di合在一起的56位,经过置换选择2如图3.15所示,从中挑出48位作为这一轮的子密钥再将Ci和Di循环左移后,使用置换选择2产生下一轮的子密钥,如此继续,产生所有16个子密钥。,图3.14每轮左移次数的规定,图3.15置换选择2,DES解密,DES解密过程与加密过程本质上一致加密和解密使用同一个算法,使用相同的步骤和相同的密钥主要不同点是将密文作为算法的输入,但是逆序使用子密钥ki,即第1轮使用子密钥k16,第2轮使用子密钥k15,最后一轮使用子密钥k1,DES的强度,从发布时起,DES就备受争议争论的焦点主要集中在密钥的长度、迭代次数以及S盒的设计等方面DES的安全性是依赖S盒,但是S盒设计详细标准至今没有公开有人怀疑S盒里隐藏