APP下载

TLS中加密算法的安全性分析*

2014-02-10彭亚雄

通信技术 2014年9期
关键词:加密算法赋值复杂度

张 鑫,彭亚雄

(贵州大学电子信息学院,贵州贵阳550025)

TLS中加密算法的安全性分析*

张 鑫,彭亚雄

(贵州大学电子信息学院,贵州贵阳550025)

阐述了TLS协议的握手过程中服务器端与客户端之间的交互,对其中关键的RC4加密技术即密钥调度算法(KSA)、伪随机书生成算法(PRGA)等进行分析,着重就目前的加密过程中伪随机书生成算法(PRGA)存在的安全性问题进行分析。在猜测赋值分析方法基础上分析了PRGA初始状态已知值数量及分布规律与RC4破解的复杂度的相关性。特定情况下,该方法能有效的破译RC4。

安全传输层 协议加密算法 伪随机书生成算法 初始状态复杂度

0 引 言

TLS(Transport Layer Security,传输层安全)是继承Netscape公司于1994年研发的SSL(Secure Sockets Layer,安全套接层),为网络通信提供安全及数据完整性的一种安全协议。TLS采用证书认证、协商加密算法、数据加密、加密密钥交换等技术为高层协议提供数据封装、压缩、加密来保障数据在Internet上安全传输。协议主要提供用户和服务器认证,确保数据正确发送到客户端和服务器端;数据加密防止数据被窃取;数据完整性维护,确保数据在传输过程中不被篡改。

目前,TLS协议已于现在网络商务中得到广泛应用,但其中的RC4加密算法安全性还有待进一步提高,笔者将对此相关问题进行分析。

1 TLS协议结构

该协议分为两层:记录协议(Record Protocol)和之上的握手协议(Handshake Protocol)、更改密码规格协议(Change Cipher Spec Protocol)和警告协议(Alert Protocol)[1],如图1所示。

图1 TLS在TCP/IP议栈中的位置Fig.1 Location of the TLS in TCP/IP stacks

协议握手有3个目的:

1)客户端与服务器需要就一组用于保护数据的算法达成一致。

2)它们需要确立一组由那些算法所使用的加密密钥[2]。

3)握手还可以选择对客户端进行认证。

协议握手过程:

a)客户端发送ClientHello消息到服务器,它将包含所有加密算法列表和一个密钥产生过程需要的随机数。

b)服务器根据以上消息选择一个加密算法,向客户端发送服务器证书及密钥产生所需的随机数。

c)客户端对服务器证书验证,获取公钥,然后随机生成pre_master_secret随机字符串,使用公钥加密发给服务器。

d)客户端与服务器端根据pre_master_secret和随机数值产生master_secret。

e)客户端与服务器端相互校验MAC值。

Change Cipher Spec Protocol通知对端进入对称加密模式,而Alter Protocol则用来向通讯的另一方发出警告消息。

记录协议将高层子协议收到的数据分段、压缩、认证和加密再传到下层协议。

2 TLS的加密算法

2.1 RC4算法概述

网络上大约50%的TLS流量都是用RC4进行加密的,然而RC4的加密不安全性早在2001年的《“A practical attack on RC4”》这篇论文中提及。经过不断改进,目前仍有漏洞被发现。

2.2 RC4算法具体描述

RC4算法由密钥调度算法(KSA,Key Scheduling Algorithm)和伪随机生成算法(PRGA,Pseudo Random Number Generation Algorithm)[3]两部分组成,KSA算法用来初始化数组S序列,keylength定义了[1,256]的key的字节长度。首先,数组S被初始化,随后由PRGA算法进行256为周期的循环列举,每次处理过程都联合key字节进行。KSA算法伪代码如下:

在PRGA算法过程中,每次循环i加1,并将i指向的S值加到j上,然后交换S[i]和S[j],最后输出S[i]与S[j]之和(取256的模)对应的S值。至多经过256次,S每个位置的值都被交换一次。PRGA算法伪代码如下:

完整RC4加密流程如图2所示,其中IV(Initialization Vector)初始化向量,CRC(Cyclic Redundancy Check)循环冗余检验,ICV(Integrity Check Value)完整性校验值,PRNG代表Pseudo Random Number Generator。

图2 RC4加密流程Fig.2 Encryption process of RC4

2.3 PRGA过程的安全分析

根据Knudsen等人的思想[4],针对PRGA过程的攻击方法建立在能获得足够的PRGA输出值的基础上,来计算PRGA的初始状态,如此将不需要密钥就可以继续产生输出,RC4就可以成功破解。攻击者可以通过对未知状态的赋值,然后将输出与已知输出值及其他信息相校验判断,若矛盾,则说明赋值错误,如此循环可获得正确状态值。

通过以上方案,可以得到计算方法。设4个可能的未知变量:jt,S[it],S[jt]和S-1[Zt],S-1[Zt]表示输出Zt对应的内部状态S的位置,则有

对于任何可能未知的变量,只要知道其中3个就能求出第4个:

使用at表示t时的内部状态中被赋过的值的总量,a表示初始内部状态中已被赋值的总量。算法过程如下:

Step 1:判断St-1[it]是否己赋值:

1)若已赋值,跳至step 2。

2)否则,将2n-at个未出现的值逐一赋给St-1[it],更新at,然后跳至step 2。

Step 2:检查Zt是否等于at中某个值,即是否在内部状态已知值之中:

1)若等于,可由计算得出St[jt]。并且不出现矛盾,将t+1,跳至step 1。

2)若不等,跳至step 3。

Step 3:检查St-1[jt]是否己赋值:

若未赋值,逐一对St-1[jt]赋值,更新at。然后检查是否有矛盾出现。若无矛盾,将t-1,跳至step 1。

每步的复杂度公式如下:

根据以上公式可计算出各种情形的初始内部复杂度,并且是在随机状态(a个已知的值随机分布)下的平均复杂度,典型的n=8的情况见表4。由表1,当n<5时,这种方法十分有效。当n≥5时,就会十分困难,这就需要已知状态值呈连续或某种相关,才能降低复杂度[5]。(表中左侧数值代表已知状态数k,右侧指数则代表相应的复杂度c。)

表1 当n=4是随机状态的复杂度Table 1 Complexity of the random states whennequals 4

表2 当n=5是随机状态的复杂度Table 2 Complexity of the random states whennequals 5

表3 当n=6是随机状态的复杂度Table 3 Complexity of the random states whennequals 6

表4 当n=8时随机状态的复杂度Table 4 Complexity of the random states whennequals 8

当n=4的情况,所有内部状态只有16个值,则可能的内部状态就有16!即244个,在几分钟内就能算出其内部初始状态,并且只需16或17个输出字,此时该方法非常有效。但是,根据表2、表3、表4,当n≥5时,可知复杂度明显高了许多,就当前计算机的计算能力想攻破RC4算法显得很吃力。设k表示内部状态中连续数值的数目,此时理论的复杂度与实验得复杂度结果如表5。

表5 理论的复杂度与实验复杂度比较Table 5 Comparison ofcomplexity between calculated and experiments

3 结 语

PRGA初始状态取值状态对RC4算法的安全性有决定性意义,然而对PRGA过程的破解又与已知值数量相关。本文猜测赋值分析方法的基础上,分析了初始值分布随机状态下相关的复杂度问题,对于一般情况复杂度已经相当复杂。同时给出了在此方法下当初始值连续时的复杂度,其值约等于,更精确有效的算法还有待进一步分析研究和改进。

[1] 邓晓军,陈怀义.基于SSL/TLS的安全应用中独立端口和磋商升级的研究[J].计算机工程与科学,2006 (04):23-25.

DENG Xiao-jun,CHENG Huai-yi.Research of the Secure Application in Independent Ports and Consult Upgrade Based on SSL/TLS[J].Computer Engnieering& App-lication,2006(4):23-25.

[2] 赵伟,曹云飞.RC4的密钥碰撞[J].通信技术,2013, 46(12):74-76.

ZHAO Wei,CAO Fei-yun.Key Collisions of RC4[J]. Communications Technology,2013,46(12):74-76.

[3] MANTIN I,SHAMIR A.A Practical Attack on Broadcast RC4[C]//Proc.of the 8th International Workshop on Fast Software Encryption.[s.l.]:Springer-Verlag, 2002:157-159.

[4] KNUDSEN L R,MEIER W,PRENEEL B,et al.Analysis Methods for(Alleged)RC4[C]//Asiac;rypt'98. Berlin:Springer-Velag,1998:327-341.

[5] ITSIK Mantin,ADI Shamir.A Practical Attack on Broadcast RC4[C]//Proc.of the 8th International Workshop on Fast Software Encryption.[s.l.]:Springer-Verlag, 2002:87-104.

ZHANG Xin(1990-),male,graduate student,majoring in signal detection.

彭亚雄(1963—),男,副教授,主要研究方向为网络安全。

PENG Ya-xiong(1963-),male,associate professor,majoring in network security.

Analysis on the Security of Encryption Algorithm in TLS

ZHANG Xin1,PENG Ya-xiong
(College of Electron and Information,Guizhou University,Guiyang Guizhou 550025,China)

This article expounds the interaction of between the client and server in the handshake of TLS protocol,then analyzes the key encryption technologies of RC4,including KSA,RPGA,and the current security issues in PRGA process.Based on the value-analysis method,the of between the quantity of the known PRGA initial states,the location and the complexity of RC4 crack is analyzed.In some particular conditions,this method can decode RC4 effectively.

TLS;encryption decryption algorithm;PRGA;initial state;complexity

TP393

A

1002-0802(2014)09-1071-04

10.3969/j.issn.1002-0802.2014.09.019

张 鑫(1990—),男,硕士研究生,主要研究方向为信号检测;

2014-05-21;

2014-07-31 Received date:2014-05-21;Revised date:2014-07-31

猜你喜欢

加密算法赋值复杂度
基于DES加密算法的改进研究
基于整数矩阵乘法的图像加密算法
一种低复杂度的惯性/GNSS矢量深组合方法
强赋值幺半群上的加权Mealy机与加权Moore机的关系*
混沌参数调制下RSA数据加密算法研究
求图上广探树的时间复杂度
算法框图问题中的易错点
利用赋值法解决抽象函数相关问题オ
某雷达导51 头中心控制软件圈复杂度分析与改进
基于小波变换和混沌映射的图像加密算法