背景技术
通信网络连接协议通常分为多个层次,每一层分别负责不同的通信功能,在其多个层次上(链路层、网络层、传输层和应用层)的通信协议都对安全方面作了专门的考虑,以应付现在越来越引起重视的各种安全问题。
以TCP/IP协议栈为例,其通常被认为是一个五层协议系统:物理层,链路层,网络层,传输层和应用层:
物理层:物理层的目的是将原始的比特流从一台计算机传输到另一台计算机;
链路层:链路层的功能包括为网络层提供设计良好的服务接口,确定如何将物理层的比特组成帧,处理传输差错,调整帧的流速;
网络层:网络层负责处理分组在网络中的活动,将源端发出的分组经各种途径送到目的端;
传输层:传输层主要为源端机和目的机上的应用程序提供端到端的通信;
应用层:应用层负责处理特定的应用程序细节。
除物理层之外,TCP/IP协议栈每一层都包含有多种通信协议,如链路层的无线局域网协议(Wireless LAN,WLAN),网络层的IP(Internet Protocol)协议,传输层的TCP/UDP(Transport Control Protocol/User Datagram Protocol)协议以及应用层的SMTP(Simple Mail Transfer Protocol)协议等。在现有的重要通信协议中都对安全方面作了专门的考虑,以应付现在越来越引起重视的各种安全问题,如链路层IEEE 802.11i无线局域网协议中的EAP_TLS(Extensible Authentication Protocol_Transport Level Security)认证,网络层的IKE(Internet Key exchange)协议,传输层中的SSL/TLS(Secure Socket Layer/Transport Layer Security)协议等。
下面以SSL/TLS协议为例,在通信连接过程中进行安全认证的过程:
安全套接层(Secure Socket Layer,SSL)是现今最流行的建立安全链接的协议,它经过多次修订,从开始的版本1到IETF最终所采纳的传输层安全(Transport Layer Security,TLS)。SSL/TLS协议位于TCP和应用层之间,使用TCP来提供一种端到端的安全服务,其主要目的是在两个通信应用之间保障数据的安全性和完整性。SSL/TLS协议由两层组成:记录层和握手层。记录层位于TCP之上,为不同的更高层协议提供基本的安全服务,它具体实施压缩/解压,加密/解密,计算MAC/验证MAC等操作;握手层允许服务器和客户端进行相互认证,并且可以在应用层协议传输数据之前协商加密算法和生成密钥。
现有的SSL/TLS握手协议需要13步才能完成完整的握手过程,协议非常复杂,资源的消耗也无疑是非常庞大的,完整握手过程大致分为四个阶段:
第一阶段:建立安全能力
客户端发送一个ClientHello报文给服务器,服务器必须响应一个ServerHello报文,或者发生了一个致命错误造成连接失败。ClientHello和ServerHello报文被用来在客户端和服务器之间建立增强的安全能力。ClientHello和ServerHello建立以下的属性:协议版本号,会话ID,密文族,压缩方法。另外,还要交换两个客户端和服务器各自产生的随机数。
Msgl(ClientHello)C→S:versionC|randomC|session_idC|cipher_suites|compression_methods
Msg2(ServerHello)S→C:versionS|randomS|session_idS|cipher_suite|compression_method
第二阶段:服务器认证和密钥交换
如果要进行认证的话,在Hello报文之后,服务器将发出它的证书。除此之外,如果需要的话,一个ServerKeyExchange报文也可以被发出(例如:服务器没有证书或者证书仅被用于签名)。如果已经对服务器进行了认证并且对所选的密文族来说是合适的话,那么就可以请求一个来自客户的一个证书。现在服务器就可以发出ServerHelloDone报文,来说明握手协议的前两个阶段完成了。然后,服务器将等待客户端的响应。
Msg3(Certificate)S→C:certificate_listS
Msg4(ServerKeyExchange)S→C:exchange_keys
Msg5(CetificateRequest)S→C:certificate_ypesC|certificate_authorities
Msg6(ServerHelloDone)S→C:NULL
第三阶段:客户认证和密钥交换
如果服务器已经发出过一个CertificateRequest报文,那么客户端就必须响应一个Certificate报文。现在接着发送ClientKeyExchange报文,这个报文的内容依赖于在ClientHello和ServerHello之间选择出来的公钥密码算法。如果客户端已经发出了一个具有签名能力的证书,那么一个具有数字签名的CertificateVerify报文将被发出来对证书进行明确地验证。
Msg7(Certificate)C→S:certificate_listC
Msg8(ClientKeyExchange)C→S:exchange_keys
Msg9(CertificateVerify)C→S:signature
第四阶段:会话结束
现在,一个ChangeCipherSpec报文由客户端发出,同时客户端复制这个预定密码规约到当前密码规约。然后客户端立即采用新的算法,密钥和密码来发送Finished报文。作为响应,服务器将发送它自己的ChangeCipherSpec报文,转换预定密码规约为当前密码规约,并且采用新的密码规约来发送它自己的Finished报文。至此为止,握手完成,客户和服务器之间可以开始交换应用数据。
Msg10(ChangeCipherSpec)C→S:change_cipher_spec_type
Msg11(Finished)C→S:verify_dataC
Msg12(ChangeCipherSpec)S→C:change_cipher_pec_type
Msg13(Finished)S→C:verify_dataS
但是这些安全协议,没有解决超大规模的密钥管理问题,所以还没有给出一个能够证明本次连接可信的解决方案。
具体而言,现有的网络通信协议虽然都考虑了安全方面的问题,但仍然普遍存在下面一些方面的问题:
1)认证协商过程需要获取公钥证书,这必然会消耗大量的带宽资源;
2)对大量证书的管理和分发极大地增加了系统的复杂度;
3)很难在获得证书前保证交互报文的完整性,需要专门的报文来确保整个交互过程的完整性;
4)交互次数过多,过程较复杂,实现代价大;
5)未解决可信性证明问题。
发明内容
本发明的目的在于克服上述缺陷而提供的一种基于CPK的通信连接安全认证系统和方法。其在CPK可信连接中直接实现了在客户终端到客户终端的验证,系统资源开销小,证书管理简单,建立通信的过程大为简化等特点。
为实现本发明目的而提供的一种通信连接安全认证系统,是在通信系统中,包括CPK安全认证单元,用于在通信系统不同终端进行连接的过程中,在通信系统不同层次中,对不同终端的标识及完整性码,利用CPK算法进行安全认证。
所述CPK安全认证单元由CPK芯片实现,CPK芯片包括CPK算法单元,ID证书,协议包单元,公钥矩阵单元。
所述CPK芯片镶嵌在U棒中。
所述CPK协议包单元中包括CPK安全认证参数。
所述CPK安全认证参数由以下几个部分组成:
第一标识段参数;第一标识证明段参数;第二标识段参数;密钥交换段参数;数据加密段参数;以及数据完整性证明段参数。
为实现本发明目的还提供了一种通信连接安全认证方法,包括下列步骤:
步骤A)第一终端向第二终端直接发送消息,消息中包括第一终端的标识和标识认证码;
步骤B)第二终端对第一终端传输来的数据,利用CPK算法进行解析,通过第一终端的标识和公钥对签名进行解密验证,对第一终端标识的真实性和合法性直接作出判断,如果合法就接收,如果不合法,就拒收。
本发明的通信连接安全认证方法,还可以包括下列步骤:
步骤C)第二终端向第一终端发出回执,回执可以是随机数,也可一以是数据完整性码。交互结束。
进一步地,所述步骤A)可以包括下列步骤:
步骤A1)第一终端中的CPK安全认证单元可以包括随机数;
步骤A2)第一终端中的CPK安全认证单元可以包括密钥交换段;
所述步骤B)可以包括下列步骤:
步骤B1)第二终端通过密钥交换协议,从密钥交换段中获得数据加密密钥;
步骤B2)第二终端中的安全认证单元用对称密钥解密,对第一终端的加密数据进行脱密;
所述步骤A1)可以包括下列步骤:
步骤A11)第一终端中的CPK安全认证单元产生随机数RA;
步骤A12)第一终端中的CPK安全认证单元设定data={TA,RA,IB,d};其中T是时间,I是标识,d是随机数。
所述步骤B)还可以包括下列步骤:
步骤B4)第二终端的CPK安全认证单元检查确认data中的标识IB;
步骤B5)第二终端的CPK安全认证单元检查确认data中的时间TA,确认上报时间;
步骤B6)第二终端的CPK安全认证单元检查确认data中的随机数,与第二终端的CPK安全认证单元中的现有的随机数相比较,确认没有重复使用。
本发明的有益效果是:本发明的基于CPK的通信连接安全认证系统和方法,对通信标识(标签)进行认证,提供真实性证明,其利用CPK密钥算法,将通信连接过程中安全认证中复杂的多次交互过程简化为一次过程,直接实现任何两个客户端的可信通信连接,满足了在通信连接中各层次对可信连接的需求,其通信连接安全认证过程系统资源开销小,证书管理简单,建立通信连接安全认证过程大大简化,运行效率大大提高。
具体实施方式
下面进一步对本发明的基于CPK的通信连接安全认证系统和方法进行详细描述。
本发明的通信连接安全认证系统和方法的设计思想是:一个优秀的通信连接安全认证系统和方法,不仅提供可靠的证明手段,而更要提供简便的验证手段。CPK可信连接系统是建立在标识真假鉴别的技术基础上,这是可信连接的关键一步;同时,要做到简便进行验证,技术上必须解决规模化和标识证明两大安全认证总是,而CPK密钥算法能够很好地实现这些。
组合公钥(Combined Public Key,CPK)密钥算法体制是离散对数难题型的基于标识(身份)的密钥生成与管理的体制。它依据离散对数难题的数学原理构建公开密钥与私有密钥矩阵,采用杂凑函数与密码变换将实体的标识映射为矩阵的行坐标与列坐标序列,用以对矩阵元素进行选取与组合,生成数量庞大的由公开密钥与私有密钥组成的公、私钥对,从而实现基于标识的超大规模的密钥生产与分发,为通信标识的可信性证明提供了技术基础。
组合公钥算法(CPK)是基于标识的公钥算法,其密钥管理中心生成彼此对应的私钥计算参数(私钥计算基)和公钥计算参数(公钥计算基);根据第一用户提供的标识,利用所述私钥计算参数计算第一用户的私钥,并将所产生的私钥提供给第一用户;以及公布所述公钥计算参数,以使得第二用户在获得第一用户的标识后,可根据第一用户的标识,利用所述的公钥计算参数,计算第一用户的公钥。
组合公钥(CPK)算法具有以下一些特点:
A)解决了大规模密钥管理的难题;
B)集中的密钥管理体制;
C)基于标识的签名,能够直接判明标识的真伪;
D)密钥的保管所需的空间少;
E)系统建设投入小,运营费用低,通信数据量少,运行效率高,使用简单,易于被用户接受。
本发明的通信连接安全认证系统是在规模化的标识认证技术基础上,直接对通信标识(标签)进行认证和验证的可信连接安全认证系统,它利用CPK密钥算法,对通信标识进行认证,提供真实性证明,实现任何两端的可信连接。
如图1所示,本发明的通信连接安全认证系统是在通信系统中,包括CPK安全认证单元,用于在通信系统不同终端进行连接的过程中,在通信系统不同层次中,对不同终端的标识及完整性码,利用CPK算法进行安全认证。
CPK安全认证单元由CPK芯片实现,CPK芯片包括CPK算法单元,ID证书,协议包单元、公钥(倍点)矩阵单元。
本发明中的具有CPK算法的CPK芯片,在申请人的中国发明专利申请2005100021564基于标识的密钥产生装置及方法中具体实施方式所述,在本发明中全文引用。
其中:
CPK芯片可以镶嵌在U棒中,可以做到即插即用。
ID证书主要提供本客户端的CPK私钥;协议包单元主要包括密钥交换协议和数字签名协议;
公钥矩阵单元提供各依赖方的所有公钥。
CPK算法单元提供安全认证所需所有参数和协议,根据终端的标识,利用公钥矩阵单元则就能计算终端的公钥。
为了实现通信中的可信连接,CPK协议包单元中包括CPK安全认证参数,所述的CPK安全认证参数由以下几个部分组成:标识1段参数;标识1证明段参数;标识2段参数;密钥交换段参数;数据加密段参数;以及数据完整性证明段参数。其参数格式如表1所示。
表1参数格式表
标识1(16B) |
标识1认证码(48B) |
标识2(16B) |
源地址IPA |
源地址认证码singA |
目的地址(IPB) |
密钥交换(64B) |
数据或数据加密 |
数据完整性 |
r(PKB) |
data or Ekey(data) |
SIGIPA(MAC) |
其中,标识1和2可自行定义,如IP地址,手机号码等;如终端A的IP地址用IPA标记:
标识的认证码:用该标识的私钥对该标识的进行签名后的签名码,如:以下形式表现:SIGSKIPA(IPA)=signA,其中私钥由CPK安全认证单元提供,签名运算在CPK安全认证单元内部进行。
标识和标识认证码,给接收端提供了简便的判别依据,即:首先检查认证码,作出接受或拒收的决定。最为典型的是在手机通信中,一接到对方电话,先对电话号码(标识)进行判别其真伪,如果是真,就给连接,并接受随后的话音数据;如果不是真,就拒收。收方验证的方法很简单,把发方的标识作公钥,对发方标识验证就可以。CPK芯片提供公钥矩阵,只要知道对方标识就能计算出该标识的公钥。有了公钥就能对对方的标识签名直接验证其真伪。
在可信连接中首先碰到该信息要不要接收的问题,这由第一种模式解决,那么进一步碰到接收的信息对不对的问题。常用的检查方法是对数据完整性码MAC的签名。
本发明的CPK安全认证系统中,在标识认证的同时一次完成密钥交换,用不着握手式的交互,因为密钥交换r(PKB)决定只有终端B才能接收,数字签名SIGIPA(MAC)证明本信息是来自标识IPA的。
在密钥交换中r是随机数,PKB是标识IPB的公钥,在数字签名中MAC是数据完整性码。
本发明的通信连接安全认证系统,直接建立在标识认证这一基本识别技术基础之上,标识识别和密钥交换同时完成,不需要握手式交互过程,鉴别协议简捷,通信开销小,实现容易,便于推广。
本通信连接安全认证系统适应于TCP/IP协议栈中的多个层次(链路层、网络层、传输层和应用层),如SSL/TLS,IKE(IPsec),WLAN,也适用于手机等无线通信的可信连接中。
如图2所示,下面结合通信连接安全认证系统进一步详细说明本发明的基于CPK的通信连接安全认证方法。
本发明的基于CPK的通信连接安全认证方法,是运行在通信系统底层的一种安全安全认证方法,其中通信双方的标识由通信系统定义,加密/解密,签名/验证等操作是调用底层的CPK通信连接安全认证系统来完成的。其余参数可以根据实际应用系统的特点灵活选用不同的实现方式。下面具体给出用CPK算法实现的传输层基于CPK的可信连接安全认证方法。为了说明方便,以SSL/TLS协议为例,但本发明并不限于此,其也可以适用于通信连接的其他安全认证连接协议。
步骤A)终端A向终端B发起安全认证请求,请求消息中包括终端A的标识认证码和标识;
Msg1C→S:IDC|SIGSKC(IDC)|IDS|R|r(PKS)|Ekey(data);
其中,IDS表示服务器标识,SKS表示服务器私钥,PKS表示服务器公钥;
IDC表示客户端标识,SKC表示客户端私钥,PKC表示客户端公钥;
随机数R,表示标识报文的新鲜性,即表示本次通信连接安全认证不是重复的安全认证;
加密操作Ekey{data},表示用会话对称密钥Ekey通过对称算法(如AES加密算法)对数据data加密;
签名操作SIGSKC(IPC),表示客户端用私钥通过安全验证签名算法(如椭圆曲线签名算法)对标识签名,;
具体步骤如下:
A1)终端A中的CPK安全认证单元生成随机数r,终端A中的安全认证单元用自己的CPK私钥对终端A的标识签名得到签名数据SIGSKC(IPC);
具体的数字签名方法使用数字签名标准(Digital Signature Standard,DSS),协议使用X509,单向传输方法如下:
A11)终端A中的CPK安全认证单元产生随机数RA;
A12)终端A中的CPK安全认证单元设定完整性码data={TA,RA,IB,d};其中T是时间,I是标识,d是随机数据;
A2)终端A中的CPK安全认证单元利用HASH函数生成对称密钥,即计算rG=key;
A3)终端A中的CPK安全认证单元利用对称密钥,通过对称加密算法(如AES加密算法)加密签名数据SIGSKC(IPC),即key加密:Ekey(data)=coded-text;
A4)终端A中的CPK安全认证单元利用终端B的标识,通过公钥矩阵单元,计算出终端B的公钥,然后利用公钥,通过非对称加密算法(如椭圆曲线加密算法)加密对称密钥key,即计算r(PKB)=ex-key;
A5)终端A将加密签名数据ex-key,coded-text发送给终端B。
终端A中的CPK安全认证单元给终端B发{ex-key,DA{data}};其中ex-key是终端A的证书(即终端B公钥加密数据),DA是终端A中的CPK安全认证单元对data的签名加密数据,即coded-text;
步骤B)终端B对终端A传输来的安全认证数据,利用CPK算法进行解析,通过终端B的私钥和终端A的标识对签名进行解密验证。
终端B对终端A进行传输来的安全认证数据利用CPK算法,通过终端B的私钥,利用相应的非对称算法(如椭圆曲线加密算法)解密得到会话对称密钥,通过会话对称密钥将终端A的签名数据SIGSKC(IPC)和终端A的标识,利用对称算法(如AES加密算法)解密,并根据终端A的标识,利用终端B的CPK安全认证单元计算出终端A的公钥,利用公钥,通过安全验证签名算法(如椭圆曲线签名算法)验证终端A的签名数据的真伪:
首先终端B用自己的私钥从加密签名数据ex-key中计算出对称密钥key;其后,用key将数据data脱密:Dkey(data),得到终端A的签名数据coded-text;最后利用终端A的标识,通过终端B中的CPK安全认证单元中的公钥矩阵计算出终端A的CPK公钥,用终端A的CPK公钥对终端A加密签名数据SIGSKC(IPC)进行验证,判别签名的真伪。
具体的步骤如下:
B1)终端B中的安全认证单元用自己的私钥解密出对称密钥key;
终端B中的CPK安全认证单元利用终端B的私钥解析ex-key,得到终端A发送来的对称密钥key;
即:ex-key*SK-1=r(PKB)SK-1=r(SK*G)SK-1=rG=key;
B2)终端B中的安全认证单元用对称密钥key解密,得到终端A的加密签名数据coded-text,即Dkey(coded-text)=data;
终端B的CPK安全认证单元用对称密钥key解密,得到终端A的签名数据coded-text,即DA{data};
B3)利用终端A的标识,通过终端B的CPK安全认证单元中的公钥矩阵计算出终端A的公钥,用终端A的公钥对终端A签名数据SIGSKC(IPC)进行验证,判别签名的真伪。
较佳地,还包括下列步骤:
B4)终端B的CPK安全认证单元检查确认完整性码data中的标识IB;
B5)终端B的CPK安全认证单元检查确认完整性码data中的时间TA,确认上报时间;
B6)终端B的CPK安全认证单元检查确认完整性码data中的随机数RA,与终端B的CPK安全认证单元中的现有的随机数RA相比较,确认没有重复使用。
步骤C)终端B向终端A发出回执,交互结束。
Msg2C→S:{SIGSKS(R)}
由于原有SSL/TLS协议是在没有解决规模化和标识认证技术的情况下完成的协议,现以基于CPK的通信连接安全认证方法的角度,对比分析SSL/TLS协议:
第一阶段:由于在本阶段交互开始时,在SSL/TLS协议中,服务器和客户端之间都不具有对方的证书,所以本阶段的报文都是以明文方式传输的,而在CPK可信连接中通信一开始就直接用标识签名来证明连接的可信性。
第二阶段和第三阶段:在SSL/TLS协议中,服务器和客户端之间通过复杂过程进行密钥交换,而在CPK可信连接协议中,第一阶段“标识认证”中同时完成密钥交换,因此第二阶段和第三阶段是多余的。
第四阶段:由于服务器和客户端能够通过计算得到对方的公钥,因而能够从交互伊始就保证交互的完整性,所以第四阶段也是多余的。
本通信连接安全认证方法在TCP/IP协议栈中给出了规范的标识化可信认证通信协议框架。通信连接安全认证方法同样适用于协议栈各层次(链路层、网络层、传输层和应用层)对可信连接的需求,并具有系统资源开销小,证书管理简单,建立链接过程大为简化,运行效率高等特点。
本实施例是为了更好地理解本发明进行的详细的描述,并不是对本发明所保护的范围的限定,因此,本领域普通技术人员不脱离本发明的主旨未经创造性劳动而对本明所做的改变在本发明的保护范围内。