APP下载

密码学在《网络安全协议》课程中的应用分析*

2020-11-20池亚平李冬冬

北京电子科技学院学报 2020年2期
关键词:数字签名哈希完整性

范 洁 池亚平 李冬冬

北京电子科技学院,北京市 100070

引言

网络安全协议是基于密码学的通信协议,是将密码技术应用于网络安全的纽带。 网络安全协议的研究目标都与安全性有关,例如,认证主体的身份;在主体之间分配会话密钥;实现机密性、完整性、不可否认性、公平性等。

《网络安全协议》课程是信息安全专业的必修课,在授课过程中如何讲清楚密码学相关知识在某个具体安全协议中的应用,如通信双方是否进行密钥协商,何时进行身份认证,如何实现信息传输的机密性、完整性、不可否认性,一直是课程的授课重点。 结合《网络安全协议》课程十余年的授课经验,本文以IPSec、SSL、S/MIME、PGP等安全协议为例深入剖析密码学技术在是如何在具体的协议通信过程中保障数据的安全传输,实现了信息安全专业特色课程《密码学》与《网络安全协议》课程的有机结合。

1 TCP/IP 安全体系结构

TCP/IP 协议族是目前整个互联网的基础,但由于TCP/IP 协议族最初的设计目标是实现网络的互联互通,没有综合的考虑网络互联之后的安全通信的需求。 在互联网不断发展的基础上,网络通信所面临的安全威胁日益严重。 为了解决TCP/IP 协议族自身带来的网络通信安全问题,Internet 工程任务组(IETF)不断地改进现有协议和设计新的安全通信协议。 目前TCP/IP协议族各层都有相关的安全协议标准,为各层通信提供安全保障,初步形成了完整的TCP/IP 安全体系结构[1,3],如图1 所示。

2 加密技术在网络安全协议中的应用

对称加密体制是指发送方对明文加密时使用的密钥和接收方对密文解密时使用的密钥是同一个密钥。 非对称加密体制也称公开密钥密码体制,于1976 年由Diffie 和Hellman 提出,采用一对密钥即加密密钥和解密密钥。 一个是可以公开的,称为公钥;另一个为用户专用,称为私钥。

目前,对称加密技术和非对称加密技术在网络安全协议中的应用都很多,其中对称加密技术具有加密效率高的优点,但发送方和接收方之间需要提前共享密钥。 非对称加密技术,加密和解密速度慢,但是发送方和接收方之间无须共享密钥,一般只是用在小数据加密。

2.1 对称加密技术在IPSec 和SSL 中的应用

IPSec、SSL 协议对数据实现机密性保护时,采用的都是对称加密算法。 其中IPSec 协议中的IKE 协议和SSL 中的握手协议具备密钥协商的功能。 IKE 协商出的密钥可以供IPSec 中的ESP 协议和AH 协议使用,IKE 将密钥协商结果存储在SAD(安全关联数据库)中,ESP 在对数据进行加密和计算完整性保护的MAC 值时从SAD 中读取所需的对称密钥即可;SSL 中的握手协议协商出的密钥可以供SSL 中的记录协议在对数据加密和计算完整性保护的MAC 值时使用。

ESP 协议和SSL 协议对数据实现机密性保护时,采用的都是对称加密技术。 IPSec ESP 标准要求所有的ESP 实现要支持密码分组链方式(CBC)的DES 作为缺省的算法。 SSL2.0 协议和SSL3.0 协议支持的加密算法包括RC4、RC2、IDEA 和DES 等。

2.2 对称加密和非对称加密体制在应用层安全协议中的结合应用

公开密钥算法的加密和解密的速度较慢,不适用于加密大的文件或数据,但可以用于加密小数据。 对称加密算法的加密和解密速度都很快,但需要解决发送方和接收方之间安全的传递密钥的问题。 由于对称加密算法的密钥长度都很小(如DES 算法密钥64bit,AES 算法密钥长度128bit),可以利用公钥加密技术来解决对称加密算法的密钥传递和共享问题。 发送方在对数据进行加密之前,首先随机产生一个会话密钥K,用K 去加密需要传输的明文数据M,产生密文C。 然后用接收方的公钥去加密会话密钥K,被加密的会话密钥称为数字信封。 发送发将密文C 和数字信封一起传递给接收方,接收方收到之后先用自己的私钥解密数字信封,得到会话密钥K,再用K 去解密密文C,得到明文M。

对称和非对称加密体制的结合应用加密具体过程如图2 所示,解密具体过程如图3 所示。

S/MIME(Simple Multipurpose Internet Mail Exchange,安全多用途邮件扩展)、PGP(Pretty Good Privacy,完美隐私)是目前应用较多的电子邮件安全协议,这两个标准都没有密钥协商机制,因此发送方和接收方传输数据之前不能安全协商出双方都认可的对称密钥。 S/MIME、PGP在对数据进行加密时采用了对称密钥和非对称密钥体制(公开密钥体制)相结合的技术,即发送方随机产生一个对称密钥K 用于对需要传输的数据进行加密,然后用接收方的公钥对K 进行加密形成数字信封传递给接收方。 接收方收到后先用自己的私钥解密数字信封获得对称密钥K,然后用K 解密加密后的数据恢复出明文。

S/MIME 标准和PGP 支持安全电子邮件的收发,在对数据进行加密时都用到了数字信封技术,通信之前,发送端需要安全获得接收方的公钥。 S/MIME 要求邮件发送方和接收方都具有X.509 格式的数字证书,PGP 要求邮件发送方和接收方都具有公私密钥对。

3 完整性保护技术在网络安全协议中的应用

哈希函数是保护数据完整性的基础,哈希函数和密码技术相结合,可以为数据提供传输过程中的完整性验证。 消息认证码方法是哈希函数和对称密钥体制相结合的完整性保护技术,在IPSec、SSL、SSH、SNMPV3 等安全协议中广泛应用,要求通信双方安全共享一个密钥K。 数字签名是哈希函数和非对称密钥体制相结合的完整性保护技术,在应用层的安全电子交易协议SET、电子邮件安全协议S/MIME 及PGP 中广泛应用,接收方为了验证发送方的签名,要求安全获得发送方的公钥或数字证书。 目前消息认证码方法在网络安全协议中的应用要多于数字签名技术,但数字签名技术在商业领域的应用更广泛,如数字签名在我国各大商业银行的网上银行业务中的应用。

3.1 哈希函数

哈希函数(Hash Function)也称单向散列函数、杂凑函数,是将任意长度的消息M 映射成一个固定长度散列值h 的函数:

从本质上说,哈希函数就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。哈希函数具有如下特性:①给定M,很容易计算h。 ②给定h,反推M 很难。 ③给定M,要找到另一消息M′(M 和M′ 不相同) 并满足H M( ) =H(M′) 很难。

目前常见的哈希算法有MD5 算法和SHA-1 算法。 哈希函数主要用于数字签名和消息认证码,以实现对数据的完整性保护。

3.2 消息认证码方法在IPSec/SSL 中的应用

消息认证码(Message Authentication Code,MAC)是密码学中用来保证完整性的重要方法。消息验证码有两种计算方式,一种是利用已有的加密算法,比如DES 算法等直接对摘要值进行加密处理;另一种是使用专用的MAC 算法。 本文重点介绍专用的MAC 算法。

与密钥相关的单向散列函数通常称为MAC,即消息认证码:

M 为可变长的消息;K 为通信双方共享的密钥;C 为哈希函数。 MAC 可为拥有共享密钥的双方在通信中验证消息的完整性;也可被单个用户用来验证其存储的文件是否被改动。 使用MAC 方法产生MAC 值和验证MAC 值的过程如图4 所示。 发送方和接收方之间需要共享一个密钥,C 是一个密钥相关的哈希函数,M 和K 一起作为C 的输入,计算得到的哈希值称为消息验证码MAC 值。 发送方将消息验证码和原文M一起发送。

接收方收到后,首先将原文M 和MAC 值分离,利用原文M 和共享密钥K 进行和发送方一样的操作,利用C 函数计算消息认证码MAC值,将计算得到MAC 值和收到的MAC 值进行比较,二者相同,则说明M 在传送过程中没有被篡改;二者不相同,则说明M 在传送过程中被篡改,完整性遭到了破坏。

HMAC (key-hashed Message Authentication Code)方法是消息认证码方法的一种实现,是目前信息安全领域普遍认同的MAC 算法。 在HMAC 中定义了如何用一个秘密密钥和来产生和验证MAC 值。 设给定一段需要计算其MAC值的数据text 和一个共享密钥K,要求得到的MAC 值的长度为t 字节,具体的计算过程为:

其中:H 为散列函数,如SHA-1,MD5;B 为计算消息摘要时输入块的字节长度(如对于SHA-1, B=64)。 ipad 为将数值0x36 重复B 次后得到的一个长度为B 字节的数据,opad 为将数值0x5c 重复B 次后得到的长度为B 字节的数据。 K 为发送方和接收方之间的共享密钥。 K0为在密钥K 的左边附加若干个后得到的长度为B 字节的密钥。 t 为MAC 值的字节数,设散列函数H 的散列值的长度为L 字节,当t 的长度小于L 时,取哈希函数散列值左边的t 个字节作为MAC 值[1,7]。

IPSec 协议、SSL 协议、SSH 协议在对数据进行完整性保护时采用的都是消息认证码方法或者类HMAC 方法。 HAMC 方法要求发送方和接收方之间共享一个对称密钥,在IPSec 中IKE 协议协商获得的用于完整性保护的密钥供HMAC 使用,IPSec规定了两个完整性验证方法HMAC-MD5-96,HMAC-SHA1-96,即取哈希值的前96 个bit 作为MAC 值。 《网络安全协议》课程实践环节,要求学生在Windows 环境下配置两台计算机的IPSec 安全策略并启用安全策略进行通信,可捕获明文的AH 协议的数据包,分析出AH 包中含有96bit 的MAC 值,如图5 中横线所示处为MAC 值。

在SSL/TLS 协议中握手协议协商得到的用于完整性保护的密钥供HMAC 方法使用,SSL/TLS 协议在实现完整性保护时采用的是类HMAC 方法,将HMAC 计算过程中的异或运算改为连接。 SSL 协议中的记录协议(RecordLayer)负责对应用层的数据进行完整性保护和机密性保护,发送方先计算MAC 值附加在原文的后面,再对原文和MAC 值进行加密保护。 因此在SSL 协议通信过程中通过Wireshark捕获到的数据包无法分析出其中的MAC 值,只能看到被加密后的数据。

3.3 数字签名技术在电子邮件安全协议中的应用

数字签名技术是公钥密码体制的一项重要应用,可用于认证数据的发送源,也可用于数据的完整性校验,要求发送端有一对密钥对,自己持有的私钥和可对外公开的公钥。 设发送方A有一个文件M 需要发送给接收方B,A 产生数字签名的过程和B 验证数字签名的过程如图6所示。

应用层协议中的电子邮件安全相关协议S/MIME、PGP 及安全电子交易协议SET 协议,在保证数据传输过程中的完整性时,使用的都是数字签名方法。 下图是《网络安全协议》课程实验过程中,使用基于S/MIME 标准的Microsoft outlook 软件发送签名邮件产生的签名邮件信息。

4 密钥协商机制在安全协议中的应用

密钥协商机制的思想是通信双方交换生成密钥的素材,并各自利用这些素材在本地生成共享密钥。 密钥协商算法被设计为即便攻击者获得了这些素材,也无法生成密钥。 最为著名的密钥协商算法就是Diffie-Hellman 交换。

4.1 Diffie-Hellman 密钥交换方法

Diffie-Hellman 使用模幂运算,算法的安全性在于在有限域上计算离散对数非常困难。 通信双方共享模数p 和p 的本原根g,其中p 是一个大素数,g 满足以下条件,对于任意Z <p,存在W,使得gwmodp = Z。 所以,能够产生1 到p- 1 的所有数字。 设x <p,计算X=gxmodp,将x 作为私钥,X 作为公钥。

设A 和B 为通信双方,想在不安全的信道上交换密钥,密钥协商步骤如下:

(1) Alice 和Bob 协商一个大素数p 及p 的本原根g,g 和p 可以公开;

(2) Alice 秘密产生一个随机数x,计算X =gxmodp,然后把X 发送给Bob;

(3) Bob 秘密产生一个随机数y,计算Y =gymodp,然后把Y 发送给Alice;

(4) Alice 计算K = Yxmodp;

(5) Bob 计算K′= Xymodp。

K 和K′是恒等的,因为K = Yxmodp =( gy)xmodp = ( gx)ymodp=Xymodp=K′,K 和K’即为A 和B 共同协商出的密钥

Diffie-Hellman 密钥交换容易遭受中间人攻击,在A 和B 的密钥协商过程中。 A 发送公开值X 给B,攻击者C 截获X 并把自己产生的公开值X’发送给B。 B 发送公开值Y 给A,C 截获它然后把自己的公开值Y’发送给A。 A 和C 计算出二人之间的共享密钥k1。 B 和C 计算出另外一对共享密钥k2。 Diffie-Hellman 密钥交换遭受中间人攻击原理如图8 所示,图中实线代表在攻击者C 存在下实际的密钥协商消息传递过程,虚线代表A 和B 自认为的密钥协商消息传递过程。 造成中间人攻击的原因是Diffie-Hellman 密钥交换过程中不认证对方的身份。

4.2 IPsec 中的密钥协商

IKE(Internet Key Exchange)协议是IPSec 中密钥管理协议,主要用途是协商通信双方的加密及鉴别算法、加密及鉴别密钥、通信的保护模式(传输模式或隧道模式)等;SSL 协议中的握手协议的主要用途是对客户机和服务器之间进行身份验证,协商加密算法、MAC 算法和密钥。 IKE和SSL 中的握手协议在进行密钥协商时,都采用了基于Diffie-Hellman 的密钥协商算法,但为了避免Diffie-Hellman 密钥协商过程中易遭受中间人攻击的缺陷,都对Diffie-Hellman 的密钥协商过程作了改进。 下面以IKE 为例,说明其密钥协商过程。

IKE 的功能包括SA 协商、密钥生成和身份认证,从协议分层上讲属于应用层协议,基于UDP,使用端口号500。 IKE 的密钥协商分两个阶段实现。 第一阶段建立IKE 本身使用的安全信道SA(采用ISAKMP),此阶段的工作模式有两种,即主模式和积极(野蛮)模式,较为安全的模式是主模式,在主模式下,通信双方的身份认证过程是在受保护下进行的。 第二阶段的密钥协商利用第一阶段已建立的安全信道SA 建立IPSec 通信中供AH 或ESP 使用的SA。 IKE 定义了四种认证方法(1)基于数字签名的方法(2)基于公钥加密的方法(3)改进的基于公钥加密的方法(4)基于预共享密钥的方法。 基于预共享密钥验证方法的主模式下,IKE 密钥协商第一阶段的消息序列如图9 所示。

图9 中第一第二条消息用于协商IKE SA 需要的各项参数,包括加密算法、Hash 算法、认证方法、Diffie-Hellman 组的选择等;第三第四条消息中的KE 载荷,用于Diffie-Hellman 的公钥参数和随机数的传递。 最后两条消息用于身份认证,认证方式不同,数据包格式也不同。 前四条消息都是明文传递,最后两条消息中的HDR*表明消息是加密传输的,即IKE 密钥协商过程中的身份认证是加密进行的。

其中第三第四个消息的具体格式如图10 所示,交换Diffie-Hellman 算法生成共享密钥所需要的基本信息,之后进行复杂的密码计算,使得通信两端的主机各自生成完全一样的共享“主密钥”,用于保护其后的通信过程。

IKE 第一阶段产生的主密钥也会用于对第二阶段密钥交换消息进行加密保护和完整性保护,所以IKE 第二阶段密钥协商的过程是安全的,第二阶段协商出的密钥结果供AH 协议或ESP 协议使用。 限于篇幅,本文不再赘述IKE第二阶段的密钥协商过程。 IKE 的密钥交换过程,若只是依靠理论讲解,学生理解起来比较抽象。 在《网络安全协议》课程的实践环节,通过让学生配置两台主机的IPSec 安全策略,利用Wireshark 工具抓取并分析IKE 的密钥协商过程数据包,更有助于学生理解抽象的密钥协商原理及数据,具体结果如图11 所示。 序号98 至103的数据包为IKE 密钥协商第一阶段的6 条消息,序号104 至107 的数据包为IKE 第二阶段的数据包,图中横线处代表的是IKE 第一阶段的第4条消息数据的解析。

5 总结

设计网络安全协议的最终目的是满足互联网通信过程中的机密性、完整性、可用性、不可否认性、真实性等安全目标,网络安全协议除具备一般通信协议的特点外,以密码学为基础是其最重要的特征。 通过运用加密技术、消息验证码技术、数字签名技术,网络安全协议可将用户产生的明文数据转变为密文的附加签名值或MAC 值的数据,可以抵抗数据传输过程中的嗅探攻击、篡改攻击等。 《网络安全协议》课程授课,在讲授各层安全协议基本通信序列、数据包格式的基础上,更应该分析密码学相关技术在具体的安全协议中的应用,并通过实践环节加深学生对理论知识的理解。 本文在深入研究各层网络安全协议原理的基础上,总结了加密技术在相关网络安全协议中的具体应用,展现了消息验证码和数字签名两种完整性保护技术在相关网络安全协议中的应用情形,并以IKE 为例分析了网络安全协议中的密钥协商机制。 这对于信息安全从业人员深入理解密码学技术在各层网络安全协议中的具体应用具有一定的参考价值。

猜你喜欢

数字签名哈希完整性
基于特征选择的局部敏感哈希位选择算法
关于防火门耐火完整性在国标、英标、欧标和美标中的比对分析
哈希值处理 功能全面更易用
交通运输行业数字签名系统的设计与实现分析
文件哈希值处理一条龙
ELM及IS/OS完整性对年龄相关性黄斑变性预后视力的影响
更正说明
数字签名技术在计算机安全防护中的应用
关于电子商务中安全数字签名的研究
巧用哈希数值传递文件