一种针对安全即时通信的异步密钥协商方法及装置的制造方法
【技术领域】
[0001] 本发明涉及即时通信领域,尤其是一种针对安全即时通信的异步密钥协商方法及 装置。
【背景技术】
[0002] 即时通信软件作为一种灵活的现代通信方式,在给人们带来了极大的方便同时, 也存在着较大的安全隐患,为解决即时通信的安全问题,国内外出现了多种安全即时通信 软件。为共同建立会话密钥,安全即时通信软件通信前需在两个或多个客户端之间进行密 钥协商,由于即时通信不仅具有群组通信功能,而且还具有离线消息收发能力,这就使得即 时加密通信的密钥协商和其他加密通信方式不同,目前现有的安全即时通信产品其密钥协 商可分为证书型和无证书型。证书型在会话密钥的产生过程中,由一个可信的证书中心 (CA)给参与密钥协商的各方各分发一个证书,此证书中含有此方的公钥,ID及其他信息。 无证书型是指各方在进行会话密钥的协商过程中不需要证书的参与,这是目前密钥协商协 议的主流种类。
[0003] 对于证书型密钥协商,一种方式是每次通信时,临时产生会话密钥,其加密保护传 输采用接收方公钥和非对称算法实现;另一种是直接使用公私钥交叉点乘结果作为会话密 钥。对于无证书型的密钥协商,会话密钥的产生及加密保护传输主要有三种方式,一种是每 次通信时,临时产生会话密钥,然后采用固定保护密钥,通过对称加密算法对其进行加密保 护传输;第二种是通过点乘算法计算保护密钥,再通过对称加密算法对会话密钥进行加密 保护传输;第三种是直接使用公私钥交叉点乘结果作为会话密钥。不管那一种密钥协商方 法,均存在如下安全隐患: 一种是会话密钥不是每次临时产生,通过点乘算法计算得到,该种会话密钥实际为固 定密钥,即针对某个客户端,任何时候的所有消息所使用的会话密钥均相同,该种方法的安 全隐患就是一经某个时候,某条消息的会话密钥被破解,针对该客户端所有的前后消息具 无保密可言;另一种是会话密钥虽然每次临时产生,但会话密钥的保护密钥实际为固定密 钥,即针对某个客户端,任何时候的所有消息所使用的会话保护密钥均相同,该种方法的安 全隐患就是一经某个时候,某条消息的会话密钥的保护密钥被破译,针对该客户端所有的 前后消息具无保密可言。
[0004] 综上所述,目前市面上针对即时加密通信的密钥协商协议,一旦攻击者掌握了这 些不安全的设备,会话密钥或会话密钥的保护密钥存在泄漏或破解的风险,一经被泄漏或 破解后,上述安全即时通信的前向和后向安全均无法保障。。
【发明内容】
[0005] 本发明所要解决的技术问题是:针对即时加密通信中密钥协商难,协商时间长,同 时确保(群组)加密消息可以抵御窃听、重放、乱序、干扰等攻击方式,特别为保障安全即时 通信的前向和后向安全问题,提供一种针对安全即时通信的异步密钥协商方法及装置。即 时通信客户端直接与即时消息服务器进行密钥协商及交换,所有的交互都需要经过即时通 信服务器,即时通信客户端是否在线将变得不敏感,从而实现异步密钥协商。同时该发明采 用了密钥滚动机制,动态地生成会话临时密钥及其保护密钥并进行滚动更新,这样就实现 了不同的消息使用不同的会话密钥及其保护密钥,使得对同一群组不同用户之间使用不同 的密钥对群组消息进行保护,相互隔离。
[0006] 本发明采用的技术方案如下: 一种针对安全即时通信的异步密钥协商方法包括: 步骤1 :即时通信客户端注册时,即时通信客户端分别产生终端身份公私钥对和密钥 协商基本公私钥对,并将终端身份公钥和密钥协商基本公钥上传到即时通信服务器,终端 身份私钥和密钥协商基本私钥安全存储在本地。
[0007] 步骤2:即时加密通信前,即时通信客户端发送方临时产生会话密钥WK;即时通信 客户端发送方通过即时通信服务器获取即时通信客户端接收方的身份公钥和密钥协商基 本公钥,然后和即时通信客户端发送方的私钥组成公私钥对来协商计算父滚动代表初始密 钥N_CC; 步骤3 :进入首次通信时,由于即时通信客户端发送方无法得知即时通信客户端接收 方的状态信息,此时即时通信客户端发送方通过使用密钥协商基本公私钥对代替临时公私 钥对,并根据步骤2中的父滚动代表初始密钥N_CC,来计算即时通信客户端发送方初次父 滚动代表密钥N_CC和子滚动代表初始密钥N_SC;该步所使用的密钥协商基本公钥和步骤2 一样,均是从即时通信服务器获取; 步骤4 :进入后续通信时,即时通信客户端发送方通过即时通信服务器判断即时通信 客户端接收方是否在线,如在线,则即时通信客户端产生临时公私钥对,并通过信息交换获 取对方的公钥,再利用步骤3中计算出的父滚动代表密钥N_CC,计算得到即时通信客户端 发送方新的父滚动代表密钥和子滚动代表密钥(N_CC、N_SC);否则,根据步骤3中的子滚 动代表密钥N_SC,通过散列算法进行压缩得到即时通信客户端发送方新的N_SC; 步骤5:即时通信客户端发送方利用步骤4计算得到的新的N_SC,通过散列算法进行压 缩得到会话密钥保护密钥EK,然后使用会话密钥保护密钥EK加密会话密钥WK,并将加密后 的会话密钥WK、EK计算方法、和加密消息形成信息包发送给通信客户端接收端; 步骤6:当即时通信客户端接收方收到信息包时,根据信息包中EK计算方法计算得到 对应的会话密钥保护密钥EK,并使用EK解密信息包中的加密后的会话密钥WK,得到明文 WK,最后使用会话密钥明文WK解密即时消息并显示。
[0008] 进一步的,所述步骤2中即时通信客户端发送方通过即时通信服务器获取即时通 信客户端接收方的身份公钥和密钥协商基本公钥,然后和即时通信客户端发送方的私钥组 成公私钥对来协商计算父滚动代表初始密钥N_CC具体计算过程为: 步骤21 :将T_SKA/T_PKA、NB_SKB/NB_PKB,通过椭圆曲线点乘算法,计算即时通信客户 端发送方的密钥协商第一部分Parti; 发送方密钥协商第一部分Partl=DPSM2 (TSKA,NBpkb); 步骤22 :将NB_SKA/NB_PKA、T_SKB/T_PKB,通过椭圆曲线点乘算法,计算即时通信客 户端发送方的密钥协商第二部分Part2; 发送方密钥协商第二部分Part2=DPSM2 (NBSKA,TPKB); 步骤23:将NB_SKA/NB_PKA、NB_SKB/NB_PKB,通过椭圆曲线点乘算法,计算即时通信客 户端算发送方的密钥协商第三部分Part3; 发送方密钥协商第三部分Part3=DPSM2 (NBSKA,NBpkb); 步骤24:将发送方密钥协商第一部分Partl、发送方密钥协商第二部分Part2、发送方 密钥协商第三部分Part3连接成发送方密钥分量KM; 发送方密钥分量KM=Partl| |Part2| |Part3); 步骤25 :将发送方密钥分量KM和第一字符串用SM3算法压缩成256bit的发送方的父 滚动代表初始密钥N_CC; 初始密钥1〇:=批13 (KM| |第一字符串) 根据椭圆曲线点乘算法特点,通过该计算过程,通信双方计算出一致的父滚动代表初 始密钥N_CC。
[0009] 进一步的,所述步骤3具体实现过程是: 步骤31 :通信即时通讯客户端发送方通过密钥协商基本公私钥对NB_SKA与NB_PKB,根 据椭圆曲线点乘算法计算得到即时通信客户端发送方密钥协商密钥分量KM: 发送方密钥协商密钥分量KM=DPSM2 (NB_SKA,NB_PKB); 步骤32 :将父滚动代表初始密钥N_CC、发送方密钥协商密钥分量KM、第二字符串,用SM3算法压缩成256bit形成初次父滚动代表密钥N_CC; 初次父滚动代表密钥N_CC=HSM3 (初始密钥N_CC| |发送方密钥协商密钥分量KM| |第二 字符串); 将初次父滚动代表密钥、发送方密钥协商密钥分量KM、第三字符串用SM3算法压缩成 256bit形成子滚动代表初始密钥N_SC; 子滚动代表初始密钥N_SC=HSM3(N_CC| |发送方密钥协商密钥分量KM| |第三字符串); 进一步的,所述步骤4中即时通信客户端产生临时公私钥对,并通过信息交换获取对 方的公钥,再利用步骤3中计算出的父滚动代表密钥N_CC,计算得到即时通信客户端发送 方新的父滚动代表密钥N_CC和子滚动代表密钥N_SC,具体实现过程是: 步骤41:即时通信客户端发送方通过NT_SKA、NT_PKB进行椭圆曲线点乘算法计算得到 发送方密钥协商密钥分量KM: 发送方密钥协商密钥分量KM=DPSM2 (NT_SKA,NT_PKB); 即时通信客户端接收方通过NT_PKA、NT_SKB进行椭圆曲线点乘算法计算得到接收方 密钥协商密钥分量KM: 接收方密钥协商密钥分量KM=DPSM2 (NT_PKA,NT_SKB); 步骤42 ^#N_CC、发送方密钥协商密钥分量KM、第二字符串用SM3算法压缩成256bit形成新的父滚动代表密钥N_CC; 新的父滚动代表密钥N_CC=HSM3 (N_CC| |发送方密钥协商密钥分量KM| |第二字符串); 步骤43 :将N_CC、KM、第三字符串用SM3算法压缩成256bit形成子滚动代表密钥N_ SC; 子滚动代表密钥【50=HSM3 (N_CC|I接收方密钥协商密钥分量KM|I第三字符串)。
[0010] 进一步的,所述步骤4中根据步骤3中的子滚动代表密钥N_SC,通过散列算法进行 压缩得到即时通信客户端发送方新的N_SC具体包括:根据步骤3中的子滚动代表密钥N_ SC和第四字符串,通过SM3算法压缩成即时通讯客户端发送方新的N_SC。
[0011]进一步的,所述步骤5具体步骤包括: 步骤51 :即时通信客户端发送方利用步骤4计算得到的子滚动代表密钥N_SC和字符 串第五字符串用SM3算法压缩形成会话密钥保护密钥EK;EK=HSM3 (N_SC| |第五字符串); 步骤52 :使