1、第第7 7章章 密码学在网络密码学在网络安全中的作用安全中的作用7.1 无线移动网络中的密码技术无线移动网络中的密码技术7.2 无线局域网络中的密码技术无线局域网络中的密码技术7.3 密码学在密码学在Internet安全技术中的应用安全技术中的应用习题习题 7实践练习实践练习 7: IPSec协议与协议与IPSec的安全服务的安全服务 现代密码学伴随网络的兴起而诞生,随着网络的发展而得到广泛的应用。实用化技术不同于单纯原理性讨论,实际情况是复杂的,理论上的基本方法常被变通使用,或者是多种方法结合使用。其次,实用技术不仅应追求效果上的最佳,往往还须考虑实际可行性,综合权衡经济成本等多种因素。本章
2、将对无线移动网络、无线局域网和Internet安全技术中如何应用密码学原理,怎样结合实际情况创新使用加密算法及其一些实际应用做概要介绍。 7.1无线移动网络中的密码技术无线移动网络中的密码技术 移动通信的发展大致经历了三个阶段。第一代(1G)是模拟移动通信系统,几乎没有采用安全技术。第二代(2G)是数字移动通信系统,如欧洲全球移动通信系统GSM(GlobalSystemforMobileCommunication),对安全性有了较大的改进。第三代(3G)是宽带移动通信系统,定义了更加完善的安全特征与鉴权服务7.1.1GSM中的认证与加密中的认证与加密 全球移动通信系统(GSM)是目前全世界广泛
3、使用的数字蜂窝式无线通信系统。为了防止非法用户接入系统以及区分用户的等级,手机入网时需要登记注册,合法用户首先应购买通信公司的用户识别卡(SIM),上面有国际移动用户识别码IMSI(不不是呼叫号码)和个人用户密码号Ki,同样的,IMSI和Ki也被保存在(或发送到)通信公司鉴权中心(AUC)。 每个移动用户都有一个唯一的国际移动用户识别码IMSI,它只在第一次入网时传送一次,或者在出错时再使用。基站与手机之间频繁联络使用的是临时移动用户身份号TMSI,它是由网络随机生成并临时分配给用户的一个号码,在每次通话时将TMSI加密后传给用户。使用TMSI能避免用户唯一的身份码IMSI的泄露。同时,每次通
4、话使用的TMSI都不同,就避免了由TMSI窃听用户通信的可能。由于TMSI与用户没有确定的对应关系,因此无法根据TSMI跟踪用户,对用户所在位置起到了保密作用。 GSM安全算法主要有三个,即A3、A5和A8,分别用于鉴权、加密和生成密钥。三个算法的实现细节是非公开的,这里仅介绍用法。GSM系统鉴权与加、解密流程如图7.1所示。 1对用户的认证和鉴权对用户的认证和鉴权 GSM系统对移动用户合法性的鉴权采用了询问/响应认证协议。当移动台申请位置更新时,或者当移动台发出呼叫或被呼时,立即触发鉴权。鉴权过程主要涉及GSM系统的AUC、HLR(原籍位置寄存器)、MSC/VLR(移动交换中心/访问位置寄存
5、器)以及MS(移动台)。鉴权开始,MSC/VLR向用户发送一个128bit的随机数RAND,MS使用此RAND以及鉴权密钥Ki(Ki存储在SIM卡中),通过A3算法计算出符号响应SRES2,并发回给BS(基站)。MSC/VLR也会用同样的RAND和Ki计算出一个符号响应SRES1,比较两者相同与否便可决定是否允许该用户接入网络。 图7.1 GSM的加密与解密流程 2生成加密密钥生成加密密钥 在鉴权程序计算SRES的同时,移动交换中心和移动台通过算法A8也在计算加密密钥KC,密钥KC的长度是64bit。A8的输入仍然是随机数RAND和鉴权密钥Ki。由于每次使用的随机数都不同,因此每次产生的加密密
6、钥KC也不同,以增强保密性。系统启动加密模式前,移动交换中心和移动台均将KC暂存。 3.数据加密和解密数据加密和解密 为了确保用户信息(话音或数据业务)以及与用户有关的信令信息的保密性,在BS(基站)和MS(手机)之间无线接入部分的信息将被加密传输。启动加密后,MSC/VLR将把加密模式命令M通过BS发送给MS。MS收到后,以M(加密模式)和TDMA(时分多址)帧编号为输入,以KC为密钥,通过加密算法A5将消息加密,消息以密文方式无线发送给BS。MSC/VLR采用相同算法对此解密,恢复M以验证测试的正确性。验证通过后,无线链路上往返的信息均以KC为密钥,使用A5算法进行加、解密。7.1.23G
7、中的安全算法中的安全算法3335 国际标准化机构3GPP(3G合作伙伴项目,3GPartnershipProject)提出的3G安全结构中,重点描述了网络接入的安全问题,实现了包括认证和密钥协商算法,以及与无线数据链路层信令数据、用户数据的数据加密和数据完整性算法,其核心均建立在密码技术的基础之上。安全体系中定义了12种密码算法,分别是: f0 随机数生成函数;f1 网络鉴权函数 f1*重同步消息函数; f 2用户鉴权函数 f 3加密密钥生成函数;f 4完整性密钥生成函数 f 5正常情况下用的匿名密钥生成函数; f 5*生成重同步时匿名密钥的函数 f 6加密国际移动用户识别码(IMUI); f
8、 7对用户身份进行解密 f 8数据加密算法;f 9数据完整性算法 密钥协商算法用于USIM(用户业务识别模块)、VLR/SGSN(访问位置寄存器/服务GPRS支持节点)和HLR(归属位置寄存器)之间的双向认证及密钥分配,利用 f 0 f 5*算法实现。其中: f 0算法仅在AUC(鉴权中心)中执行,用于产生随机数RAND。 f 1算法为网络鉴权函数,用于计算网络鉴权时的XMAC-A。 f 1*算法为重同步消息函数,支持重同步功能,保证从f 1*的函数值无法反推出f 1。 f 5算法为密钥生成函数,用于计算匿名密钥AK,对鉴权序列号SQN加解密,以防止被位置跟踪。 f 5*算法为密钥生成函数,用
9、于计算重同步时的匿名密钥。 f 6和f 7算法用于增强用户身份保密。 f 8和f 9算法对空中接口的数据进行加密和完整性保护。 上述算法中,除 f 8和 f 9是通过分组密码算法KASUMI构造得到的标准化算法外,其他算法函数还没有标准化,因此运营商可自由选择算法来满足基本要求或遵从建议中的基于Rijndael密码(见本书第3章)的解决方案。在UE(移动用户设备)和RNC(无线网络控制器)之间的无线链路上,f8用来对用户数据和信令数据加密;f9用来保证信令信息的完整性,并对信令来源进行认证。下面分别对KASUMI算法和f8、f9算法做简单介绍。 1KASUMI算法算法3638 KASUMI算法
10、是基于日本三菱公司的分组密码MISTY1算法的改进版本,是一种分组加密算法,它的设计遵循了三条原则:在安全性上有足够的数学基础;算法的软件实现在任何处理器上都足够快;算法的硬件实现也足够快。这个算法在设计上能够对抗差分和线性密码分析,其安全性是可证明的,目前主要应用于3G的安全算法 f 8和 f 9之中。 KASUMI算法中密钥长度为128bit,对64bit的输入分组进行如图7.2所示的8轮迭代加密运算,输出长度仍为64bit。 首先,输入数据I被分为32bit的左右两部分,即L0和R0,第i轮加密算法为,81,2, )(111iRK,LfRL,LRiiiiiii(7-1) 第i轮将上一轮输
11、出的左半部Li-1作为该轮的右半部Ri-1;而第i轮的左半部由第i-1轮输出的右半部Ri-1与第i轮的轮函数fi的结果进行异或运算得到(RKi为第i轮的子密钥)。经过8轮的迭代后,L8和R8相串联得到64 bit的字符串输出。 图7.2 KASUMI算法流程 其中,轮函数fi以Li1和RKi为参数,输入32bit,输出32bit。密钥RKi由三个一组的子密钥(KLi,KOi,KIi)组成,其中KLi为32bit,KOi和KIi均为48bit,共128bit。轮函数fi包括一个输入、输出均为32bit的非线性混合函数FO和一个输入、输出均为32bit的线性混合函数FL,函数FO以KOi和KIi为
12、密钥,函数FL以KLi为密钥。轮函数fi在不同的奇偶轮有不同的表达形式。 对于1,3,5,7轮: fi(I, RKi)=FO(FL(I, KLi),KOi,KIi) (7-2)对于2,4,6,8轮: fi(I,RKi)=FL(FO(I,KOi,KIi),KLi) (7-3) 下面对算法中各个函数的结构进行简单说明。 1)FL函数 FL函数的结构如图7.3所示,该函数接收并处理32bit的输入数据I和32bit的子密钥KLi。子密钥KLi被分成两个各16bit的子密钥KLi,1和KLi,2。同样,输入数据也被分为两个16bit的左右两部分L和R。定义ROL表示循环移位,算法可表达为 )ROL()
13、ROL(21, i, iKLRLLKLLRR(7-4)最后以RL作为32bit的输出值。图7.3中, 为与运算; 为或运算; 为异或运算; 为循环左移1位的运算; 为循环右移1位的运算。XY表示两序列相连接。 图7.3 FL函数 2)FO函数 FO函数结构见图7.4,该函数由一个输入、输出均为16bit的非线性混合函数FI(FI函数下段介绍)进行3轮重复运算而构成。FO函数在两组密钥KOi和KIi控制下对32bit输入进行处理。输入数据I被分成各16bit的两部分L0和R0,而两组48bit的密钥KOi和KIi均被分成三个16bit的子密钥KOi,1、KOi,2、KOi,3和KIi,1、KIi
14、,2、KIi,3。对于三轮运算中的每一轮,算法可表达为3)(1 )FI(111jRL,RKI,KOLRjjjj , ij , ijj(7-5)FO函数最后得到输出是32bit的L3R3。 图7.4 FO函数 3)FI函数 FI函数结构见图7.5,它是一个由非线性处理过程构成的4轮结构。输入数据I被分为两个不等长的两部分:9bit的L0和7bit的R0。密钥KIi,j也被分为7bit的KIi,j,1和9bit的KIi,j,2。函数中包含了两个S盒。S7为7bit输入7bit输出;S9为9bit输入9bit输出,两者均为线性逻辑运算。处理过程中还使用了非线性扩展函数ZE和收缩函数TR。ZE(x)将
15、7bit输入数据后面补两位零得到9bit的输出;TR(x)将9bit输入数据删除最前面两位得到7bit的输出。计算过程可表示为 )(Z9)(7 )(Z9)TR(7 3422311123003342321201RRRELSRKIRTRLSRRELSRRLSLRL,KIRL,RL., j , i., j , i(7-6)最后以16bit的L4R4为输出。 KASUMI算法与第4章介绍的Camellia算法都是由日本三菱公司参与开发的对称密钥加密算法。读者不难发现,两者的具体算法是完全不同的。Camellia以字节或字为操作单元,通过软件来实现,其性能更高,可以普遍适用于8bit或32bit的处理器
16、(如智能卡或嵌入式系统等)。KASUMI算法则主要用于能源供给有限的移动通信系统,以确保文本或语音信息的保密性。图7.5 FI函数 2数据加密算法数据加密算法 f 8 在移动通信中,用户数据和信令数据的保密采用序列加密方法。f 8的作用实际上是一个密钥流发生器,它以密钥序列号等参数为输入,运用多级KASUMI算法生成序列密钥流。在发送端将待加密明文数据流与密钥流进行逐位异或运算,得到密文流;在接收端则将密文流与同样的密钥流进行异或运算,得到明文数据流。加密和解密的全过程见图7.6。系统采用同步技术,使解密过程密钥流的初始位置与密文准确定位。 f 8算法产生密钥流的基本流程见图7.7。 图7.6
17、 加、解密过程图7.7 f 8算法流程 (1)初始化:首先填写64bit的初始化参数向量,其中包括序列密钥号COUNT-C、5bit的承载标识符BEARER、1bit的上下行标识位DIRECTION、明文长度LENGTH等信息。设CK表示128bit的原始密钥,KM为密钥修正符(取值为十六进制数的32个5,共128bit),二者相异或后作为KASUMI算法模块的控制密钥,而64bit的初始化参数向量作为KASUMI算法模块的输入数据,计算得到64bit的输出数据,存在寄存器A中。 (2)序列密钥的分组结构:设明文长度为LENGTH,那么序列密钥的长度也应当有同样的长度。而KASUMI算法模块一
18、次只能输出64bit的数据,因此采用分组计算,再将结果相连接。设BLOCKS表示分组的总数目,则BLOCKS=LENGTH/64, 方括号表示进位取整。用n表示分组序号,n=1,2,BLOCKS,其中第n个分组记做KSBni,i=0,1,2,63。将来这些分组连接起来之后,序列密钥KS与各分组的对应关系是: KS64(n-1)+i=KSBni (7-7)(3)各个分组的计算:以原始密钥CK为控制,通过KASUMI算法模块来计算产生第n个分组的序列密钥KSBni。KASUMI算法模块的输入来自寄存器A的64bit数据与n-1的模2加,再加上一个分组输出的64 bit数据。即 (7-8)式中:BL
19、KCNT=n-1。CK1KSBBLKCNTAKASUMKSBnnI 3数据完整性算法数据完整性算法 f 9 为了对移动用户设备和无线网络控制中心之间无线链路上的信令信息进行完整性保护和信源认证,发送端通过f9算法对信令信息、密钥序列号等输入参数计算出消息认证码MAC-I,附加在信令信息后一起发送到接收端。接收端也将收到的信令数据用f9算法进行同样的计算,算出消息认证码XMAC-I,将它与所收到的MAC-I进行比较,验证数据的完整性。其过程如图7.8所示。 f 9算法流程见图7.9,其原理是KASUMI算法的反复迭代。 图7.8 MAC-I/XMAC-I生成过程图7.9 f 9算法流程 (1)数
20、据分组:首先将来自无线网络控制中心(RNC)的信令数据MESSAGE加上前缀与后缀信息,如密钥序列号COUNT-I、上下行标识位DIRECTION,以及来自RNC的32bit的随机数FRESH,最后添上一个1和若干个0,使总比特数凑够64的整数倍。然后按每个分组64bit将数据分组。其中第n组表示为 PSni(n=0,1,2,BLOCKS-1;i=0,1,2,63) (7-9)其中,BLOCKS表示分组的总数目,取决于信令的长度。 (2)迭代压缩:以PS0为输入,IK为原始密钥,通过KASUMI模块计算得到64bit的输出数据;将它与PS1模2加后作为第二级KASUMI模块的输入,仍然以IK为
21、密钥,计算出第二 级的输出。同样,第n级的输出与PSn模2加后作为第n+1级KASUMI模块的输入,计算得出第n+1级的输出。最后将各级输出数据累加起来。 迭代工作可以在两个64bit的寄存器A和B中完成:A和B初始值清零,A用来存储每级KASUMI模块的输出,每计算新的一级时它都被新的结果刷新:IKnPSAKASUMIA(7-10)与此同时,每计算一级的时候,B也被累加(模2加)一次:ABB(7-11)交替进行式(7-10)与(7-11),直至处理过全部分组。 (3)消息认证码的产生:引入密钥修正符KM(128bit),赋值为十六进制数的32个“A”,将它与原始密钥IK相异或后,作为KASU
22、MI模块的控制,而前面计算的结果,即64bit的B作为KASUMI模块的输入,计算得到64bit的输出,将右边32bit舍弃,保留左边的32bit,这就是最终求得的消息认证码。 7.2无线局域网中的密码技术无线局域网中的密码技术 IEEE(电气电子工程师协会)提出一系列WLAN(无线局域网)的技术解决方案,其中IEEE802.11b是目前多数无线局域网产品支持的主流标准。为了保证移动站和AP(接入点)之间通信的安全性,802.11b采用了有线对等保密WEP(WiredEquivalentPrivacy)机制。这曾经是保障WLAN数据传输安全的核心部分。但是后来很多研究表明,WEP协议设计本身存
23、在一些难以克服的缺陷。为此,IEEE802.11i任务小组致力于开发新的安全标准,在正式版本出台前,提出了无线局域网保护性接入WPA(WiFiProtectedAccess)作为过渡方案。任务小组最终于2004年6月发布了802.11i标准。该标准增强了WLAN中的数据加密和认证性能,并且针对WEP加密机制的安全漏洞做了多方面的改进。本节对WEP和IEEE802.11i标准中的部分数据保密技术作简单介绍。 7.2.1WEP算法算法37 WEP的设计目标是对无线传输数据提供机密性、访问控制和数据完整性的安全服务。 1WEP的数据加的数据加/解密解密 WEP对MAC层的数据进行序列加密,算法比较简
24、单,如图7.10所示。 图7.10 WEP加密算法 WEP的密钥k为40bit(或104bit),与24bit的随机数初始化向量IV(InitializationVector)连接后输入给伪随机数发生器(采用RC4算法),产生与待传输数据等长的密钥序列ks。为了进行完整性校验,先对明文m计算循环冗余校验CRC,得到32bit校验码ICV。m与ICV连接后,与ks逐位异或即得到密文c,算法为 c=RC4(IVk) ( mCRC(m) (7-12)最后将密文c连接在IV后成为发送方实际发送的数据。 因为采用序列加密算法,接收方与发送方密钥相同,解密算法与加密也是相同的。接收方收到数据信息后,从中提
25、取IV和密文c,相同的方法生成密钥流,与密文模2加便得到明文m、校验和ICV(见图7.11)。算法为 RC4(IVk) c= RC4(IVk) RC4(IVk) ( mCRC(m) = mCRC(m) (7-13) 图7.11 WEP解密算法 为了防止数据被修改,最后仍然使用CRC算法对恢复的明文进行差错校验。只有计算得到的ICV和解密恢复的ICV匹配才接收该信息。CRC算法属于纠检错编码,不展开介绍,请参考相关书籍。 WEP的操作过程中,存在以下不足: (1)WEP加密中使用的24bit初始向量IV以明文形式与加密数据一起传送。而24bit的随机数共有224=16777216种取值,随着发送
26、数据包的增加,IV会在较短时间内出现重复。 (2)由于WLAN本身的特点,在无线设备上手动设置密钥后通常不再改变。 (3)为了进行完整性校验,采用CRC-32计算得到校验和ICV。但是循环冗余校验算法CRC-32是非加密性的线性运算,主要用于检测因突发错误而对传输数据造成的随机错码。 由于这些特点,有很多文献分析了WEP中存在的安全漏洞。为了改进WEP加密机制的各种缺陷,IEEE组织发布了被认为是无线局域网络安全问题的最终解决方案802.11i标准。 2RC4算法算法 WEP的序列密钥是用RC4算法产生的,现在介绍RC4算法。 RC4算法是RonRivest1987年为RSA数据安全公司开发的
27、序列密码技术。RC4算法实际上是一个序列密钥发生器,并且它并不是通过移位寄存器电路来产生伪随机密码的,当时它享有专利。可是7年后,有人把它的源代码匿名张贴到网上,迅速传遍了全世界的FTP站点,并被拥有合法拷贝的用户确认代码无误。RSA安全公司想要维护权益时为时已晚,因为打官司的花费并不比购买许可证少,也就放弃了。从此RC4就成了公开的程序,成为一种应用非常广泛的序列密码算法。 RC4加密算法包括两个核心部分,分别是伪随机数生成算法PRGA(PseudoRandomNumberGeneratorAlgorithm)和密钥生成算法KSA(KeySchedulingAlgorithm)。 1)伪随机
28、数生成算法(PRGA) 首先创建一个256个字节的数组S,并进行线性填充:S0=0,S1=1,S255=255。同时密钥也被不断重复地填充到另一个256个字节的数组K中:K0,K1,K255。然后,将两数组按以下方式进行置换: j =0 For i=0,255 j=(j+Si+Ki) mod 256 Swap(Si,Sj) 完成置换后,输入密钥就不再使用,数组S中就是生成的256个字节伪随机数。 2)密钥生成算法(KSA) 为了生成长度可变的伪随机序列密钥,从S数组出发,引入两个初值为0的记数器i和j,只需按以下程序操作,每循环一轮,就能生成一个随机字节(8bit): i=(i+1)mod25
29、6 j=(j+Si)mod256 Swap(Si,Sj) t=(Si+Sj)mod256 Output St RC4算法十分简单,程序不过数行,软件和硬件都容易实现;而且运行速度快,大约比DES快10倍。RC4已被广泛应用于商业密码产品中,例如LotusNotes、苹果机的AQCE、Oracle安全SDL数据库、移动通信的WEP以及安全套接字层SSL(SecureSocketsLayer)等。 7.2.2IEEE802.11i 为了解决WLAN技术自身存在的安全上的缺陷,给无线用户提供足够的安全保护,IEEE802.11i任务组致力于制定新一代安全标准802.11i。在这个标准中,为了增强WL
30、AN的数据加密和认证性能,定义了健壮安全网络RSN(RobustSecurityNetwork)的概念;在数据保密和完整性方面,定义了TKIP(TemporalKeyIntegrityProtocol)和CCMP(CounterMode/CBCACProtocol)两种机制。TKIP是RSNA(RobustSecurityNetworkAssociation)的可选算法,设计初衷是通过升级固件和驱动程序来提高使用WEP加密机制的设备的安全性,因此是一个暂时的过渡方案。而CCMP机制能够提供可靠的保密性、认证性、完整性,并能抵抗重放攻击,是实现RSN的高级要求。但是由于它建议使用的AES对硬件要
31、求比较高,CCMP无法在现有设备基础上升级实现,因而限制了它的广泛使用。 1TKIP加加/解密机制解密机制 TKIP加/解密算法的核心仍然沿用了WEP算法,即仍然是基于RC4加密算法,仍使用初始向量IV,并且要计算校验码ICV,但对WEP作了很大改进。TKIP将WEP密钥的长度由40bit加长到128bit,初始化向量IV的长度由24bit加长到48bit,大体相对于802.11b中的WEP,其改进之处在于: (1)使用Michael算法生成64bit的消息完整性认证码MIC(MessageIntegrityCode)。 (2)初始化向量IV用于记录序列计数器 TSC(TKIPSequence
32、Counter)的数值,其中的低16bit参与加密密钥流的生成。这样,每个数据包有不同的加密密钥流。同时该计数器的输出值被加密在数据包的IV域内,以实现对WEP数据包格式的兼容。 (3)为了防止WEP协议中出现的使用RC4算法弱密钥现象,TKIP采用了混合加密函数。将临时密钥TK(TemporalKey)、序列计数器TSC和初始化向量IV混合后生成加密器的输入包WEPseed。 1)TKIP加密 (1)MIC。 计算消息完整性认证码MIC是实现TKIP体系的第一步。计算MIC的Michael算法要求使用64bit的密钥,计算之前密钥被转换为32bit的K0和K1,输入参数有消息服务数据单元MS
33、DU(MessageServiceDataUnit)的明文数据、发送方地址TA、目的地址DA、优先级等,这些数据按约定的次序连接并输入到加密算法模块中后,计算得到64bit的MIC校验码。这种完整性校验能用于防止伪造攻击。 (2)分段(Fragment)。 消息认证码MIC被连接在消息服务数据单元MSDU的数据之后,由于数据比较长,在传送时将(MSDUMIC)分割为若干个消息协议数据单元MPDU(MACProtocolDataUnit)。每发送出一个MPDU,序列计数器TSC的值自动递增。 (3)密钥混合函数(KeyMixingFunction)。 密钥混合分为两个阶段,在第一阶段,128bi
34、t长的临时密钥TK(TemporalKey)、发送方的MAC地址TA,以及TSC的高32bit被送入一个S盒中进行运算,生成80bit的中间过程密钥TTAK(TKIPmixedTransmitAddressandKey);在第二阶段,以中间过程密钥、临时密钥以及TSC的低16位作为输入,产生128bit的WEP种子。加密每一个MPDU时,TKIP都采用相同算法计算出不同的WEP种子。 (4)WEP加密。 TKIP算法在进行WEP加密之前先把输入数据包WEPseed分解成两部分,分别作为加密器的初值WEPIV和RC4的密钥,然后把它们和消息协议数据单元MPDU的明文一起发送给WEP模块。WEP的
35、序列加密操作与前文所述相同,最后的输出是对MPDU加密后产生的密文以及校验码ICV。加密过程如图7.12所示。 2)TKIP解密 作为序列加/解密方式,TKIP的解密过程与加密过程是类似的(见图7.13)。 图7.12 TKIP加密算法图7.13 TKIP解密算法 (1)在利用WEP解密MPDU之前,需要先从WEPIV和扩展的IV中提取出TSC序列号和密钥ID。为了抵抗重放攻击,如果TSC不符合既定排序规则,则该MPDU被丢弃,否则根据密钥ID定位TK,并通过混合函数来创建WEPseed。 (2)TKIP把WEPseed分解成WEPIV和RC4密钥,并和MPDU一起送入WEP模块进行解密。 (
36、3)如果WEP检查ICV正确,则将该MPDU重组成MSDU。重组成功则校验MIC值,否则丢弃该MSDU。 (4)通过计算得到MIC后,将其与收到的MIC逐位比较。如果与接收到的MICI相同,则校验成功,TKIP就把MSDU传递给上层协议。如果不同,则校验失败,丢弃该MSDU。 2CCMP加加/解密机制解密机制 CCMP机制是IEEE802.11i使用的最强安全算法,基于高级加密标准AES和CCM(CounterModewithCBCMAC)认证方式。它是WLAN安全长远的解决方案,能解决WEP中出现的所有问题。 CCMP中的AES使用128bit密钥,它的加密块大小是128bit。CCM定义于
37、RFC3610,是一种通用模式,可以和任意分组加密算法一起使用。它使用Counter模式提供数据保密,并采用加密块链接方式的消息认证码CBC-MAC(CipherBlockChainingMessageAuthentieationCode)来提供数据认证和数据完整性服务。参照802.11i可知,对每一个会话,CCM都需要一个新的临时密钥TK及一个唯一的随机值Nonce,为此CCMP为每个数据包引 入了48bit的包号码PN(PacketNumber)。CCMP中仍然包括MIC,但是不使用WEP的ICV。 1)CCMP加密 (1)递增的PN值。为了使每个MPDU都获得新的PN,在加密不同包的时候
38、PN递增。即使是同样的临时密钥TK,PN也不会重复使用。 (2)构造附加鉴别数据AAD(AdditionalAuthenticationData)。通过对MPDU头部(也就是MAC的头部)指定域的内容进行提取和重组生成附加鉴别数据AAD。AAD可以是176bit或224bit。生成后再经CCM加密,以便为AAD中的数据提供完整性保护。 (3)构造Nonce。 利用PN、A2和MPDU优先级的值计算CCM的Nonce。其中A2是MPDU中地址2域中的内容。MPDU优先级则置为0,为以后的使用预留,Nonce长为104bit。 (4)构造CCMP头。 参照IEEE802.11i标准,MPDU明文经
39、过CCMP加密得到密文。密文首部要附加CCMP头才会被发送出去。提取PN、密钥ID中指定位的数据,对包括预留位(置为0)在内的内容进行封装、重组得到CCMP头。CCMP头长度是64bit。 (5)CCM加密。 CCM与AES分组密码联合使用进行加密生成密文和MIC,加密操作的输入为128bit的TK、Nonce、MPDU数据以及AAD。通过该加密模块的运算,不仅对明文和AAD提供了认证性和完整性保护,还确保了明文数据的机密性。 经过上述操作,MPDU在原基础上又扩展了128bit,其中CCMP头和MIV各占一半。最后,将MAC头部、CCMP头部、加密数据和MIC连接在一起组成待发送消息。算法过
40、程见图7.14。 图7.14 CCMP加密算法 2)CCMP解密 CCMP解密过程如图7.15所示。解密过程与加密过程的方法相同,时序相反。步骤如下: (1)解析加密的MPDU,获取计算AAD和Nonce值要用到的有用信息。 (2)用与加密相同的算法,由MAC的头部信息重新生成AAD。 (3)利用A2、PN和优先级计算Nonce值。 (4)从消息中获取用以完整性校验的MIC值。 (5)CCM解密,利用TK、AAD、Nonce、MIC和MPDU的密文来恢复MPDU的明文,并通过校验AAD来验证MPDU明文的数据完整性。 (6)把从CCM生成的MPDU头部和MPDU明文数据连接起来,即可构造出明文
41、MPDU。 从CCMP头提取PN,并验证其数值的实时性,由此可使CCMP具有抗重放攻击的性能。 图7.15 CCMP解密算法 7.3密码学在密码学在Internet安全技术中的应用安全技术中的应用 TCP/IP协议是Internet上的主要协议族,是将不同的计算机和网络联系起来的纽带。但是它本身也存在一些安全缺陷,一方面,TCP/IP协议的安全和控制机制只是依赖于对IP地址的认证;另一方面,TCP/IP不能保证所传数据的保密性,协议包中的数据以明文的形式传送。这意味着,如果网络通信中不附加安全通信协议和机制,只依靠TCP/IP协议族,就不能可靠地为网络上传输的消息提供机密性、完整性和真实性等保
42、障。 TCP/IP协议族分为五层,如图7.16所示。在此基础上,已经开发和提出了许多能够提供网络安全性的方法和机制。根据在TCP/IP协议族的不同位置,安全机制可以分为以下三类:图7.16 TCP/IP协议分层 (1)基于网络层,保证IP数据报安全性的IPSec(IPSecurity)协议。 (2)基于传输层,解决TCP、UDP传输协议数据安全问题的协议,包括SSL(安全套接层)协议和TLS(传输层安全)协议等。(3)基于应用层,针对特定的网络服务(如HTTP、电子邮件、文件传输等),将相关安全协议直接嵌入到应用程序中的安全机制。例如针对HTTP的SHTTP(SecureHTTP)协议;针对安
43、全电子邮件的PGP、S/MIME协议;针对安全信用卡交易的SET(安全电子交易)协议等。 这些安全机制中都大量使用了对称加密、公钥加密、数字签名及身份认证等现代密码算法。本节就几种典型机制:IPSec、SSL以及面向电子邮件安全的PGP和S/MIME,介绍其密码算法及其应用。 7.3.1IP安全协议安全协议(IPSec)39 1994年,IETF成立了一个Internet安全协议工作组,负责IP安全协议和密钥管理机制的制定。经过多年工作,工作组提出了一系列IP安全协议标准及相关扩展,这些协议总称为IPSecurity协议,简称IPSec。IPSec的基本架构文档是RFC240140,其中定义了
44、IPSec基本结构,所有具体的实施方案均建立在此基础上。IPSec主要包括鉴别头AH(AuthenticationHeader)协议、封装安全载荷ESP(EncapsulatingSecurityPayload)协议,以及Internet密钥交换IKE(InternetKeyExchange)协议。基于密码学等技术,IPSec提供了一种标准的、包容广泛的安全机制,用它可以为IP层及上层协议提供安全服务,从而支持IP数据报的认证、完整性和机密性。同时这些机制均独立于具体算法,所以具体实现时系统可在IPSec定义的范围内选择合适的安全策略,灵活决定所需的算法和密钥。 IPSec在TCP/IP协议分
45、层中的位置如图7.17所示。 IPSec协议有两种操作模式,传输模式和隧道模式。传输模式下,保护的是IP层载荷,在IP头与上层协议头(如TCP、UDP)之间插入安全协议(AH/ESP)头,当要求两个主机端到端进行安全通信时,通常使用传输模式。隧道模式下,要保护的整个IP包都被封装到一个新的IP数据报中,即加上一个新的外层IP头,安全协议(AH或ESP)头介于外层和内层IP头之间。隧道模式通常用于有安全网关(防火墙或路由器)的网络配置中。两个安全协议AH和ESP都支持这两种工作模式。 图7.17 IPSec在TCP/IP协议层 1基本协议基本协议AH和和ESP AH和ESP可以单独使用,AH主要
46、负责认证,ESP主要负责保密。它们也可以一起使用,一起使用时把加密和认证结合起来,在主机之间传输具有认证和机密性的IP包。RFC240241对鉴别头AH进行了定义。AH用于为IP包提供数据完整性、数据源身份认证等服务,能防止传输过程中对数据包内容的修改、地址欺骗攻击以及信息重放攻击等。AH头格式如图7.18所示,其中: 下一个头用来描述AH后面的头类型。 载荷长度表示认证数据的长度,它以32bit为一个字,其值等于字数减2。 图7.18 AH封装格式 安全参数索引用以标识安全关联。 序列号是一个单调递增的计数器数值,用来防止IP包重放攻击。 认证数据域是一个变长域,包含了数据报文的鉴定数据,称
47、为完整性校验值(ICV),是AH的核心。ICV是将传输过程中变化的域和认证数据域置零后,对其余所有数据通过鉴别算法计算后得到的。其长度必须是32位字长的整数倍,如果不满足这个条件,则在数据后添加填充字段。AH中默认的鉴别是消息鉴别码MAC,当前规定的支持算法是HMAC-MD5-96和HMAC-SHA-1-96。经过HMAC计算,前者产生128bit的散列值,后者产生160bit的散列值,均选取其高96bit(认证数据的默认长度)作为校验值ICV。 2)ESP 对ESP进行了定义。ESP用于为IP数据报提供保密性和抗重放服务。通过对数据包的全部数据和加载内容进行全加密来保证传输信息的机密性,使只
48、有拥有密钥的用户才能解密内容。由于ESP实际上加密了所有的数据,因而它比AH需要更多的处理时间,从而导致性能下降。ESP头格式见图7.19。其中的认证数据是ICV,它对除身份验证数据本身之外的整个ESP头进行计算。 图7.19 ESP封装格式 作为可选功能,ESP也可以提供和AH相同的数据完整性和鉴别服务,但是在具体实现上和AH稍有不同。AH对外部IP头各部分都进行身份鉴别,以此检验数据的完整性;而ESP并不鉴别外部IP头,只对外部IP头之后的内容进行身份鉴别。ESP目前要求必须支持加密块链CBC(CipherBlockChaining)模式的DES加密算法。在解释域,文档还对ESP支持的很多
49、其他算法分配了标识符,可以方便地使用它们。这些算法包括:三重DES、IDEA、RC5、CAST、Blowfish等。ESP最主要的加密算法是数据加密标准(DES),DES最高支持56bit的密钥,而3DES使用3套密钥加密,相当于使用最高到168bit的密钥。 2密钥管理密钥管理43 除了前述两个核心协议AH和ESP之外,IPSec的另一个重要组成是密钥管理。在密钥管理过程中,IPSec协议使用Internet密钥交换协议(IKE)。AH的鉴别算法和ESP加密算法都需要密钥,若同时使用两协议则需要的密钥更多,为4个,即各一对发送/接收密钥。 在IPSec中进行密钥交换有两种方法:一种是使用IK
50、E协议进行自动密钥交换;一种是手工模式。手工模式只适用于小规模的或者用硬件实现的IPSec,大多数情况下都需要使用IKE协议通过公用网络进行密钥交换。 Internet安全关联和密钥管理协议ISAKMP规定了一个认证和密钥交换的框架,定义了所有用于建立安全关联和执行密钥管理功能的协议结构,并且与具体的密钥交换方法、加密、鉴别算法相独立。Internet密钥交换协议IKE使用ISAKMP语言来定义密钥交换,因此是ISAKMP框架的实例化。IKE的功能包括加密算法、密钥协商、密钥生成、密钥交换及管理等,现已成为主要的密钥管理标准。 IKE使用了两个阶段的ISAKMP。第一阶段建立IKE安全联盟(I