◆钟焰涛 黄万巧 杨炎 张瑶 郝琦
(1.深圳市网安计算机安全检测技术有限公司广东 518071;2.广东安证计算机司法鉴定所广东 518071)
随着互联网在人们日常社会生活中应用越来越广泛,网络攻击事件也日渐普遍,并逐渐引发网络安全相关风险。为了保障互联网络的安全性,安全协议应运而生。其中传输层安全( transport layer security,TLS)协议是应用最广的安全通信协议[1],该协议基于网络传输层,并为应用层提供服务,其作用是为点对点的通信双方建立安全通信信道。目前该协议的最新版本是1.3版[2],于2018年8月由IETF(国际互联网工程任务组)正式发布。新版本通过支持强度更高的密码算法具有更高的安全性,同时具有降低网络延迟等优良特性。
自TLS 1.3草案阶段起直到协议的正式发布,已经有许多针对该协议的安全性分析成果。Bhargavan和Leurent[21]对TLS1.2 客户端身份验证的证书转发攻击进行了研究,并进一步将攻击扩展到针对TLS 1.3服务器身份验证和通道绑定的证书。研究成果公开后,为避免上述攻击对协议安全性的影响,IETF修订了最终发布的协议正式版。Krawczyk[23]提出一个能将单向认证密钥交换协议转变为互相认证密钥交换协议的协议编译器,并针对TLS 1.3协议引入广义的密钥交换模型。Li等[22]提出一个新的安全模型,并证明TLS1.3在该模型中的安全性。Dowling 等[20]在2015年的ACM CCS 会议上对基于Diffie-Hellman 的握手协议进行分析,并提出“多级密钥交换安全”概念,证明其可以结合任意密钥协议,记录层所使用的会话密钥安全性得以证明。Bhargavan等[24]分析了TLS1.3 记录协议,并基于参数计算了协议中不同密码套件的具体安全性指标,完成可证明安全的 TLS1.3记录协议的工程实现。
基于密码技术的网络安全防护措施受到量子计算发展的大力冲击[3]。前述对 TLS1.3协议的安全性分析都没有考虑到量子计算攻击的影响。量子计算机能够通过运行量子算法快速解决一些经典计算机无法有效解决的数学问题,对当前广泛应用的密码体系产生严重威胁。量子算法中最著名的是Shor算法[4]和Grover算法[5],其中Shor算法可以在多项式时间内解决大整数分解问题、离散对数问题,严重威胁在TLS1.3中所使用的RSA[6]、ECDSA[7]等密码算法的安全性。
本文针对量子算法发展的现状,使用 ProVerif工具[8]对 TLS1.3协议进行分析,并依据分析结果,提出在TLS1.3协议中使用基于格密码方案来实现抗量子计算攻击,提升协议的安全性和运行效率。
TLS1.3协议由三部分组成:握手协议、警告协议和记录协议。如图1所示,该协议在TCP /IP协议簇中的位置介于应用层、TCP层之间,可用于封装上层多种应用协议。
图1 TLS1.3协议在TCP/IP协议族中的位置
TLS 1.3的握手协议用于通信双方生成会话状态参数,包括密码算法名、TLS协议版本、双方标识、密码算法公开参数等信息。握手协议成功之后,TLS的记录协议使用由握手协议生成的安全参数进行安全通信。数据发送方将上层数据传输单元进行合理分片,对数据分片有选择性地压缩,进一步对数据分片计算消息认证码MAC、加密,得到TLS层的数据传输单元,交给下层协议进行传输;对应的,数据接收方收到加密数据快后,将数据块解密后验证MAC码,并重组为上层数据传输单元后递交给上层应用协议。
Shor算法是开创性的整数分解算法[4],该算法在1994年提出以后吸引了众多研究,同时也掀起了量子计算机研究的热潮。Shor算法充分展现了量子算法在解决某些经典问题时的计算优势,算法核心思想是利用因子分解问题的特殊结构,把整数因子分解问题变换为求特定函数周期的问题,并使用量子算法快速地求解函数周期,进而找到整数的分解因子。
因为互联网中广泛使用的RSA公钥密码体制、Diffie Hellman密钥交换协议、椭圆曲线公钥密码体系所依赖的数学困难问题可以很容易转化为前述特定函数周期问题,因此Shor算法对密码学有重大影响,严重威胁现有的网络信息安全格局[17]。
尽管大规模通用的量子计算机能不能实现、什么时候才能实现还存在较大争议,但各国政府、大型研究机构均已发起了设计抵抗量子计算模型的公钥密码算法的研究计划,希望能够用抗量子攻击的密码算法逐步替代现有密码算法,以确保量子计算时代的信息安全。该研究方向通常被称为“后量子密码学(Post-Quantum Cryptogra- phy)”[9],是目前非常活跃的新兴密码学研究方向。美国国家安全局(NSA)2015年8月宣布抗量子密码算法的迁移计划[10];同年NIST发起举行了“后量子网络安全研讨会”,并于2017征集后量子公钥密码算法[11],力图推进后量子密码学的标准化工作,目前已经初见成效。
用于构建后量子密码系统的底层数学工具包括:纠错码[13]、哈希函数[12]、超奇异椭圆曲线同源问题[16]、格[14]、多变量方程[15]等。其中基于格的密码是最通用的一类,在格密码中几乎可以实现所有经典密码概念。本文使用基于格密码方案对TLS1.3协议进行改进,实现协议的抗量子计算攻击安全性。
使用协议分析工具 Proverif软件[8](版本:2.01)模拟量子计算攻击场景下的TLS1.3协议。当攻击者具有量子计算能力时,可以使用量子算法破解RSA问题和离散对数问题,实现对协议中所使用的数字签名算法和密钥协商协议进行攻击,计算出签名私钥并从公开参数获取临时秘密值,并破坏 Diffie-Hellman密钥协商协议的安全性。以下代码模拟攻击者的密钥破解能力和秘密值破解能力:
fun Quantum_attack1(pubkey):privkey.
fun Quantum_attack2(elli_curve_para):secrete_value.
服务器进程为证明自己身份,使用私钥进行签名并将签名值发送给客户进程,如下述代码所示:
out(io,sign(sk_sign,Transcript-Hash (Handshake Context,Certificate)));
经Proverif模拟仿真,发现上述攻击者能够破坏协议的实体认证性,即能够仿冒服务器与客户端交互完成协议会话;并且能够破坏会话密钥的机密性,即能够获取握手协议中协商的密钥。上述两种攻击的攻击路径如图2和图3所示。
如图2所示,攻击者使用量子计算能力直接从TLS握手的消息中获取会话密钥。
如图 3,攻击者利用量子计算能力从验证公钥中恢复签名密钥,并利用该密钥仿冒服务器。
图2 攻破TLS1.3会话密钥机密性的攻击路径
图3 攻破TLS1.3握手协议认证性的攻击路径
为使用基于格密码体制实现抗量子攻击安全性,需要对握手协议和记录协议分别进行改进,使协议能够实现基于格的数字签名和哈希算法。
(1)改进握手协议
-TLS客户端发送的 ClientHello消息、服务器端发送的ServerHello消息的密码套件包含 HKDF(HMAC-based Extract-and-Expand Key Derivation Function)函数列表,在该密码套件中增加SWIFFT函数[18]作为备选HKDF函数之一;
-TLS客户端发送的 ClientHello消息可扩展字段signature_algorithms_cert、signature_algorithms中增加 NTRU[19]签名算法作为备选签名算法之一;
-TLS服务器和客户(可选)发送的证书认证消息中,使用NTRU算法进行数字签名运算;
-TLS客户端和服务器(可选)收到对方发来的证书认证消息后,使用NTRU算法验证数字签名正确性和证书的合法性。
(2)改进记录协议
在通信双方完成TLS握手之后,记录协议对数据进行数据时,使用SWIFFT函数计算MAC码,实现消息认证。
SWIFFT哈希算法是基于格的可证明安全哈希算法,采用快速傅里叶变换实现迭代过程中高效的多项式乘法运算。NTRU签名算法是基于格的轻量级签名算法,工作在环R=Z[x]/(xn-1)上,安全性依赖于格中的最短向量问题,该问题目前无法被经典算法及量子算法解决,即使是具有量子计算的攻击者也无法伪造NTRU算法生成的数字签名。在 Proverif协议仿真过程中,将 Quantum_attack1函数和Quantum_attack2函数移除,模拟攻击者无法通过量子计算能力帮助获取签名私钥以及获取临时秘密值。
图4展示了改进协议的Proverif仿真结果。结果表明,量子计算攻击者在仿真实验中无法获取有效的攻击路径,无法对改进协议实施有效的攻击。
图4 TLS改进协议的安全性分析
为分析改进方案的运算性能,使用 C++语言分别模拟一对客户端和服务器结点使用TLS1.3改进协议和原协议进行握手的过程,两个结点之间单个数据包传输、接收和处理时间设定为满足均值为200ms的指数分布。改进协议使用NTRU签名方案和SWIFFT哈希算法分别代替原协议中的 RSA签名方案和 sha256哈希算法,其中NTRU签名方案和SWIFFT哈希算法使用现有的开源软件包实现[25,26]。模拟平台软硬配置如表1所示。
表1 实验平台配置
图 5对比了在不同会话并发数场景下原方案和改进方案的握手协议完成所需时间,由图2可以看出,在1~104并发数时,改进后协议的TLS握手所需时间均低于原协议握手所需时间。改进协议计算效率更高的原因在于NTRU算法和SWIFFT算法采用矩阵乘法,RSA算法采用模幂算法,sha256使用Merkle-Damgard迭代结构,矩阵乘法运算和后两者相比,具有运算速度更快的特点,因此握手过程密码学运算所需时间较少,整个握手协议所需时间也就更少,效率较高。
图5 方案性能比较
本文提出了抗量子攻击的TLS1.3协议改进方案。首先通过仿真分析展示量子计算有效解决离散对数问题和求解大整数分解的能力对TLS1.3协议安全性具有巨大威胁,进一步提出使用基于格的密码算法对TLS1.3握手协议进行改进,使用NTRU算法实现发送方证书验证消息的数字签名和接收方对证书信息的签名验证,并使用SWIFFT算法对握手协议上下文的哈希计算。安全性分析表明,改进协议能够抵抗量子计算攻击。仿真实验结果表明,改进协议握手执行过程所需时间比原协议更少,效率更高。