1. 引言
SSL协议处于TCP/IP传输层和应用层之间,为上层应用数据传输提供安全通道,可以提供身份认证、信息加解密等安全功能。主要目标是为两个通信实体提供信息安全性、完整性、安全性的会话连接。
传统的SSL协议对于身份攻击和会话密钥攻击的防卫能力比较弱;另外对最后提及的中间人攻击除了加强管理外,基本无法从技术角度防止攻击。
这些安全问题很大程度是由于SSL协议中没有对系统平台环境的认证,对硬件设备包括CPU中计数器、寄存器等重要的值没有包括在身份认证阶段;在会话密钥传输阶段,预主密钥的生成、保存、传输,以及会话密钥即主密钥的安全存储,这些方面的抗攻击能力不是很强。
可信密码模块TCM是一个可信计算平台的软硬件相结合的模块,为可信计算平台提供密码运算功能,具有受保护的存储空间。通过系统安全芯片可信密码模块建立信任的源头,然后通过硬件、固件、操作系统和应用程序,按照系统启动过程的前后控制关系建立信任链的方法确保计算平台和程序的可信 [1] 。
本文对SSL的优化基于可信密码模块(TCM)新的实现思想,在分析现有SSL协议的基础上,提出并实现了一种基于可信密码模块TCM的SSL改进协议。SSL协议中握手协议作为其中最核心和最复杂的协议,完成了SSL的大部分通信交互,优化方案主要对握手协议部分从以下方面进行改进:利用平台身份证书提供基于硬件和系统层面的认证;通过芯片的存储主密钥对预主密钥的保护,使得数据交换前,双方共享密钥的传输得到了更好的保证。本方法将TCM模块应用到SSL协议中,建立通信双方基于硬件和系统层面的认证,并且提升了加密算法,使得握手阶段,双方数据传输得到了更好的保证,为记录协议部分的信息传输提供更强的安全保障,增强了抵御攻击的能力,提高了协议的安全性 [2] 。
2. 符号及函数说明
一种基于可信密码模块(Trusted Cryptography Module, TCM)的SSL协议,用到的符号及函数说明如表1所示:
3. 认证优化
改进的SSL协议中,信双方的身份认证过程,主要是验证TCM的平台身份证书和SSL协议证书的哈希值的过程 [3] 。首先身份验证前提是:通信双方都有TCM芯片;通信双方已经申请且拥有了经过认证的平台身份证书 [4] 。客户端对服务器端认证的过程如图1所示:
具体流程描述如下:
1) 服务端的工作流程如下:
a) 服务器端封装SSL证书信息和TCM平台证书信息,封装后的信息分别记做
、
:

Table 1. Symbols and functions directions
表1. 符号及函数说明

Figure 1.SSL protocol authentication optimization process
图1. SSL协议身份认证优化过程
;
.
b) 服务器端分别计算SSL证书、TCM平台身份证书、两类封装证书串接的哈希值,计算后的值分别记做计算
、
、
:
;
;
.
c) 服务器端生成签名密钥对
、
,服务器端进行数字双签名得到
:
,此方程使用私钥
加密
,利用数字双签名将TCM平台身份证书和SSL证书关联在一起,表名此次SSL协议的特定平台环境为TCM中的信息。
d) 服务器端把
,
,
及
的哈希值
发送给客户端TCM即
,这样TCM只能得到
的杂凑值,但得不到
;把
,
,
及
的哈希值
发送给客户端主机
,这样
只能得到
的杂凑值而得不到
。
2) 客户端的验证流程如下:
a) 客户端对服务器端的SSL证书和平台身份证书分别进行认证。
b) 客户端对SSL证书和平台身份证书的对应关系进行认证,验证此次SSL协议的特定平台环境是否是TCM中的系统环境,具体验证如下:
计算
;计算
;验证方程
是否成立,此方程用于计算m1和m2求并后的散列值,若成立则签名有效,继续以下步骤,否则终止此次协议 [5] [6] 。
4. 会话密钥交换过程优化
主密钥作为会话密钥,是由预主密钥、客户端和服务器端在Hello阶段交互的随机数经过加密产生,优化后的密钥交换过程加入TCM模块的参与,加密密钥的生成根据有随机性和机密性,同时对会话密钥的存储保护也得到加强 [7] [8] 。密钥交换过程如图2所示:

Figure 2.Flowchart for optimizing key exchange in the SSL protocol
图2.SSL协议密钥交换部分优化流程图
具体流程描述如下:
1) 双方TCM模块生成公私密钥对,私钥句柄发送给自己所在主机,公钥发送给通信的另一方。
2) 客户端计算用于加密预主密钥的加密密钥:
首先客户端主机随机生成预主密钥;TCM模块随机生成临时密钥私钥x,计算临时密钥公钥
;
接着TCM客户端调用TCM模块SM2加密算法,用服务器端和客户端的SSL证书公钥和双方TCM模块生成的密钥对中的公钥,计算SM2密钥协商协议的共享会话密钥种子;再根据种子导出预主密钥的加密密钥。此处的
函数为调用
模块的
公钥加密算法,用客户端和服务器端的平台身份公钥和临时公钥,计算用于会话协商中的种子。具体计算流程如下:
1)
,
2) 计算
,
,
最后,客户端TCM模块返回X和
给主机,主机将X和
传给服务器主机,客户端主机同时删除临时密钥对
。
服务器端TCM模块首先使用与客户端相同的方法生成预主密钥的加密密钥种子;接着TCM模块根据客户端传送的相关信息计算预主密钥,具体计算流程如下:
1) 将
前32字节赋值给b,其余字节赋值给a;
2) 验证
;
3) 计算
;
最后用TCM模块使用存储主密钥保护预主密钥,同时删除随机生成的临时密钥对。
5. 优化后的SSL握手过程
优化后的握手协议部分通信过程如图3所示 [9] [10] [11] :
1) SSL客户端通过Client Hello消息将它支持的SSL版本、加密算法、密钥交换算法、
算法等信息发送给SSL服务器。
2) SSL服务器确定本次通信采用的SSL版本和加密套件,并通过Server Hello消息通知给SSL客户端。如果SSL服务器允许SSL客户端在以后的通信中重用本次会话,则SSL服务器会为本次会话分配会话ID,并通过Server Hello消息发送给SSL客户端。
3) SSL服务器将携带自己公钥信息的数字证书
和服务器公钥
发送给SSL客户端。
4) SSL服务器将自身的平台身份证书
和对应的平台身份公钥
发送给SSL客户端。
5) 服务器端封装封装SSL证书信息为
:
;TCM证书信息为
:
。
6) 服务器端计算
的哈希值
:
;计算
的哈希值
:
;计算
、
的哈希值
:
。
7) 服务器端生成签名密钥对
、
,服务器端进行数字双签名得到
:
,利用数字双签名将TCM平台身份证书和SSL证书关联在一起,表名此次SSL协议的特定平台环境为TCM中的信息。
8) 服务器端把
,
、
及
的哈希值
发送给客户端TCM即
,这样TCM只能得到
的杂凑值,但得不到
;把
,
,
及
的哈希值
发送给客户端主机
,这样
只能得到
的杂凑值而得不到
。
9) 客户端验证服务器端SSL证书
。

Figure 3.Flowchart after optimizing the SSL protocol
图3. SSL协议优化后的整体流程图
10) 客户端验证TCM平台身份证书
。
11) 客户端进行SSL证书和TCM平台身份证书对应关系的认证:
计算
;计算
;验证方程
是否成立,若成立则签名有效,继续以下步骤,否则终止此次协议。
12) 客户端发送
和
给服务器,服务器验证
和
。
13) 服务器发送Server Hello Done消息,通知SSL客户端版本和加密套件协商结束,开始进行密钥交换。
14) 服务器端
调用
;
服务器
接到调用后:
a) 创建密钥协商会话,随机生成会话句柄
b) 随机生成临时密钥私钥y,计算临时密钥公钥
c) 将临时密钥对
存储在TCM中并与句柄
绑定;
返回
,
给
,
将Y发送给客户端
。
15) 客户端
随机生成一个预主密钥
;
客户端TCM即
:a) 随机生成临时密钥私钥x,计算临时密钥公钥
b) 计算
,
,
c) 计算
,
,
返回X和
给
,
将X和
传给
,
同时删除临时密钥对
。
16) 服务器端
:1)计算
,
,
将
前32字节赋值给b,其余字节赋值给a
验证
,
计算
,
用SMK存储主密钥保护
:
17)
调用
,
接到调用后,删除
指向的临时密钥对
。
18)
利用协商好的算法及参数
、
计算得到主密钥
,接着
计算
消息的内容,及哈希值:
公式中
表示握手消息指从客户端问候消息开始的内不包括此消息在内的到这个步骤的信息,
和
为填充字节。
服务器
传送
、
给客户端
。客户端
计算主密钥
,
计算
消息的内容:
比较
和
,相同表示消息未被篡改,最后客户端也将
发给服务器表示整个握手过程的结束。
服务器验证客户端发送的
消息,如果成立,则可以分块导出
。
6. 优化应用
SSL协议在电子商务、网上支付、机密文件的网络传输上发挥重要作用,用来保证信息的可靠、机密、完整性的传输,优化后的SSL协议对上述应用的安全性的到加强。下面详细描述优化后的SSL协议在电子商务中的一个应用实例,在网络交易中,客户下单后必须将自己的订单信息完整地传输给商家,才可以保证交易的正常进行,在双方都安装有TCM芯片的前提下,在网络间传输信息时采用优化后的SSL协议,其具体通信过程如下:
:客户端安装的TCM芯片;
:商家端安装的TCM芯片。
1) 客户 → 商家:
客户通过
消息将它支持的SSL版本、加密算法、密钥交换算法、
算法等信息发送给商家。
2) 商家 → 客户:
,与1)相对应,商家通过
消息将Server端支持的SSL版本、加密算法、密钥交换算法、
算法等信息发送给客户。
3) 商家 → 客户:商家进行SSL证书认证,将携带自己公钥信息的数字证书
和商家公钥
发送给客户。
4) 商家 → 客户:商家进行平台认证,将自身的平台身份证书
和对应的平台身份公钥
发送给客户。
5) 商家:商家封装TCM证书信息为
:
;封装SSL证书信息为
:
。
6) 商家:商家计算
的哈希值
:
;计算
的哈希值
:
;计算
、
的哈希值
:
。
7) 商家:商家生成签名密钥对
、
,商家进行数字双签名得到
:
,利用数字双签名将TCM平台身份证书和SSL证书关联在一起,表名此次SSL协议的特定平台环境为TCM中的信息。
8) 商家 → 客户:商家把
,
,
及
的哈希值
发送给客户端TCM即
,这样TCM只能得到
的杂凑值,但得不到
;把
,
及
的哈希值
发送给客户端主机
,这样
只能得到
的杂凑值而得不到
。
9) 客户:客户端TCM进行平台身份和SSL证书对应关系验证:
计算
;计算
;验证方程
是否成立,若成立则签名有效,继续以下步骤,否则终止此次协议。
10) 客户:客户端主机进行平台身份和SSL证书对应关系验证:
a) 计算
;计算
;
b) 验证方程
是否成立,若成立则签名有效,继续以下步骤,否则终止此次协议。
11) 客户:客户端TCM验证
和
。
12) 客户 → 商家:客户端发送
和
给商家,商家验证
和
。
13) 商家 → 客户:商家发送Server Hello Done消息,通知客户版本和加密套件协商结束,开始进行密钥交换。
14) 商家 → 客户:商家主机
调用
;
商家
接到调用后:
a) 创建秘钥协商会话,随机生成会话句柄
随机生成临时秘钥私钥y,计算临时秘钥公钥
将临时秘钥对
存储在TCM中并与句柄
绑定;
返回Y,
给
,
将Y发送给客户端
。
15) 客户→商家:客户端主机
随机生成一个预主秘钥
;
客户端TCM即
:a) 随机生成临时秘钥私钥x,计算临时秘钥公钥
;
计算
,
,
;
计算
,
,
.
返回X和
给
,
将X和
传给
,
同时删除临时秘钥对
。
16) 商家:商家端TCM即
:a) 计算
,
,
;
将
前32字节赋值给b,其余字节赋值给a;
验证
,
计算
,
用SMK存储主秘钥保护
:
。
商家:商家端TCM所有者调用
,
接到调用后,删除
指向的临时秘钥对
。
商家:商家主机利用协商好的算法及参数
、
计算得到主密钥
,接着计算
消息的内容,及哈希值:
公式中
表示握手消息指从客户端问候消息开始的内容,不包括此消息在内的到这个步骤的信息,
和
为填充字节。
商家→客户:商家
传送
、
给客户端
。客户端
计算主密钥:
,
计算
消息的内容:
比较
和
,相同表示消息未被篡改,最后客户端也将
发给商家表示整个握手过程的结束。
商家:商家验证客户端发送的
消息,如果成立,则可以分块导出
。
客户:客户端可以放心地使用主密钥
加密订单信息发送给商家,商家可以用主密钥加密发送请求付款消息。
7. 优化后SSL协议分析
7.1. 安全性分析
安全性分析主要从身份认证、会话密钥的安全传输两方面进行分析:
1) SSL协议身份认证安全性分析:
当有攻击者冒充服务器身份时,由于服务器端发送的身份认证信息包含:平台身份证书
和平台身份公钥
。平台身份密钥对TCM内部数据如寄存器、计数器值等进行数字签名,以此证明身份。攻击者不能获取到TCM芯片内部的上述数据,也就不能伪造服务器身份证书,从而防范身份攻击。
2) SSL协议会话密钥安全传输分析:
密钥交互阶段,由于第一方面客户端和服务器的TCM模块生成临时密钥对
和
,将公钥X和Y、私钥
、
的句柄
、
返回给主机,将公钥X、Y同时发给另一方,接着以临时公钥X、Y和TCM平台身份公钥
、
为参数,采用TCM的SM2密钥协商协议
生成会话密钥
的种子
,即
。
当攻击者试图伪造会话密钥时:
由于攻击者可能没有TCM芯片,很难支持SM2密钥协商协议,不能进行
这步运算;
即使支持SM2密钥协商协议,由于没法截取TCM内部生成的临时密钥对
和
、平台身份公钥
和
,同时临时密钥对用完即删除,所以不可能生成会话密钥的种子
,也就无法伪造会话密钥。
由于散列函数单向性,获取会话密钥摘要值也不能得到会话密钥。
上述三点说明优化后的协议可以防止会话密钥阶段的攻击。
7.2. 效率分析
优化后的SSL协议在身份认证和会话密钥生成、存储部分都应用了可信密码模块TCM,利用TCM在信息保护方面的平台身份认证、密钥生成、密钥管理方面的基于硬件的安全可信特性,虽然安全性得到很大提升,但是由于平台身份认证、密钥的生成与管理都需要时间,所以效率方面不如传统的SSL协议,在某些机密性要求高、时效性要求低的应用领域优化后的基于TCM的SSL协议更适用 [12] 。
8. 本文总结
本文对基于TCM的SSL优化分四部分做了介绍:第一部分明确了SSL的优化目的。第二部分主要对SSL协议中的握手部分的优化从以下两方面做了描述:身份认证优化、会话密钥交互阶段的优化;之后对优化后的SSL协议做了整体描述;第三部分介绍了优化后的SSL协议的一个应用实例。第四部分对优化的SSL协议从安全性和效率两方面做了分析。