H04L9/08 H04L9/40 H04L65/1104 H04L65/80
1.一种采用透明代理和量子密钥预充注实现VoIP加解密方法,其特征在于,所述方法应用于VoIP终端,所述VoIP终端内集成安全存储介质,所述安全存储介质内存储有由量子密钥分发网络预先充注的主密钥,所述VoIP终端作为主叫方时,包括以下步骤:
主叫方运行加密代理,将SIP协议的INVITE报文重定向到SIP_QUEUE队列;
主叫方读取重定向到SIP_QUEUE队列的INVITE报文,并基于出栈的INVITE报文向管理中心发送会话密钥申请,以使所述管理中心将所述会话密钥申请转发至QKD网络节点,所述会话密钥申请包括主被叫双方的地址、第一主密钥的ID标识以及利用所述第一主密钥对所述会话密钥申请进行校验计算得到的校验值,所述第一主密钥存储于所述安全存储介质;
主叫方接收所述管理中心转发的密钥申请响应报文,所述密钥申请响应报文由所述QKD网络节点生成,所述密钥申请响应报文包括主被叫双方的会话密钥素材密文、主被叫双方的会话密钥素材校验值以及主被叫双方加密及校验所采用的第二主密钥的ID标识,所述第二主密钥为所述量子密钥分发网络中与主被叫双方标识对应的量子密钥;
主叫方基于所述第二主密钥的ID标识,从其集成的所述安全存储介质中获取相应的主密钥,对所述会话密钥素材密文进行解密并作验证,得到会话密钥skey并重构SIP协议的INVITE报文;
主叫方将重构的SIP协议INVITE报文发送至被叫方,以由所述被叫方生成所述会话密钥skey和INVITE响应报文,所述INVITE响应报文中的媒体字段中写有主被叫双方的RTP协议端口,并增加扩展参数a字段;
主叫方接收所述INVITE响应报文,将所述INVITE响应报文重定向到SIP_QUEUE队列的入栈,并读取所述INVITE响应报文中的媒体字段中写有的主被叫双方的RTP协议端口,设置RTP语音流透明加密规则;
主被叫双方基于所述会话密钥skey和所述RTP语音流透明加密规则,进行VoIP加密语音通信。
2.如权利要求1所述的采用透明代理和量子密钥预充注实现VoIP加解密方法,其特征在于,在所述主叫方运行加密代理,将SIP协议的INVITE报文重定向到SIP_QUEUE队列之前,所述方法还包括:
向所述管理中心发送注册请求;
接收所述管理中心返回的VoIP终端地址与QKD身份UID的绑定关系。
3.如权利要求1所述的采用透明代理和量子密钥预充注实现VoIP加解密方法,其特征在于,在所述主叫方运行加密代理,将SIP协议的INVITE报文重定向到SIP_QUEUE队列之前,所述方法还包括:
主叫方运行初始化程序对所述安全存储介质进行完整性检查;
在检查通过时,获取所述安全存储介质内部存储的所述主密钥的使用授权。
4.如权利要求1所述的采用透明代理和量子密钥预充注实现VoIP加解密方法,其特征在于,所述主叫方基于所述第二主密钥的ID标识,从其集成的所述安全存储介质中获取相应的主密钥,对所述会话密钥素材密文进行解密并作验证,得到会话密钥skey并重构SIP协议的INVITE报文,包括:
根据所述第二主密钥的ID标识,从其集成的所述安全存储介质中获取相应的主密钥,获取的相应主密钥包括解密主密钥和验证主密钥;
利用所述解密主密钥对主叫方的所述会话密钥素材密文进行解密,得到主叫方的会话密钥素材;
利用验证主密钥对主叫方的所述会话密钥素材校验值进行验证,确定验证通过;
采用符合前向安全性的密码函数,基于所述会话密钥素材变换得到会话密钥skey;
在所述INVITE报文的SDP消息体中增加扩展参数a字段,得到重构的SIP协议的INVITE报文,所述扩展参数a字段承载有会话密钥相关信息,所述会话密钥相关信息包括被叫方的会话密钥素材密文、被叫方的会话密钥素材校验值、被叫方加密及校验所采用的第二主密钥的ID标识、主叫方集成的所述安全存储介质实时产生的验证随机数以及采用所述会话密钥skey加密的第一验证随机数密文。
5.如权利要求4所述的采用透明代理和量子密钥预充注实现VoIP加解密方法,其特征在于,所述INVITE响应报文中的扩展参数a字段承载有会话密钥校验信息,所述会话密钥校验信息包括由被叫方集成的所述安全存储介质实时产生的验证随机数以及采用由被叫方生成的会话密钥skey加密得到的第二验证随机数密文;
所述主叫方接收所述INVITE响应报文,将所述INVITE响应报文重定向到SIP_QUEUE队列的入栈,并读取所述INVITE响应报文中的媒体字段中写有的主被叫双方的RTP协议端口,设置RTP语音流透明加密规则,包括:
主叫方运行加密代理,读取重定向到SIP_QUEUE队列的入栈的所述INVITE响应报文;
主叫方使用其生成的所述会话密钥skey解密验证所述第二验证随机数密文;
在验证通过后,主叫方去掉所述INVITE响应报文中被叫方增加的密钥校验信息得到INVITE原始响应报文,
主叫方读取所述INVITE原始响应报文中的媒体字段中写有的主被叫双方的RTP协议端口,设置RTP语音流透明加密规则。
7.如权利要求4所述的采用透明代理和量子密钥预充注实现VoIP加解密方法,其特征在于,所述方法还包括:
主被叫双方通话终止时,主叫方运行加密代理读取重定向到SIP_QUEUE队列的BYE报文或CANCEL报文;
删除所述RTP语音流透明加密规则并对所述会话密钥skey清零后,将BYE报文或CANCEL报文重新入栈发送。
6.如权利要求1所述的采用透明代理和量子密钥预充注实现VoIP加解密方法,其特征在于,所述主被叫双方进行VoIP加密语音通信,包括:
所述主叫方和被叫方进行VoIP加密语音通信,对数据报文进行透明加解密处理,其中,加密模式采用CBC算法结合OFB算法。
8.一种采用透明代理和量子密钥预充注实现VoIP加解密方法,其特征在于,所述方法应用于VoIP终端,所述VoIP终端内集成安全存储介质,所述安全存储介质内存储有由量子密钥分发网络预先充注的主密钥,所述VoIP终端作为被叫方时,包括以下步骤:
被叫方接收主叫方发送的重构的SIP协议INVITE报文,所述重构的SIP协议INVITE报文的SDP消息体中增加有扩展参数a字段,用于承载会话密钥相关信息,所述会话密钥相关信息包括被叫方的会话密钥素材密文、被叫方的会话密钥素材校验值、被叫方加密及校验所采用的第二主密钥的ID标识、主叫方集成的所述安全存储介质实时产生的验证随机数以及采用主叫方生成会话密钥skey加密的第一验证随机数密文;
被叫方运行加密代理,重定向到SIP_QUEUE队列入栈的所述重构的SIP协议INVITE报文;
基于所述重构的SIP协议INVITE报文,重新生成所述会话密钥skey,并解密验证所述第一验证随机数密文;
验证通过后,去掉所述重构的SIP协议INVITE报文中由主叫方增加的密钥相关信息,得到SIP协议的原始INVITE报文;
被叫方响应所述SIP协议的原始INVITE报文,并运行加密代理重定向到SIP_QUEUE队列出栈的INVITE响应报文;
读取所述INVITE响应报文中媒体字段中主被叫双方的RTP协议端口,设置RTP语音流透明加密规则;
在所述INVITE响应报文的SDP消息体中增加扩展参数a字段,用于承载会话密钥校验相关信息,并将重构的INVITE响应报文放入协议栈发送至主叫方。
9.如权利要求8所述的采用透明代理和量子密钥预充注实现VoIP加解密方法,其特征在于,所述基于所述重构的SIP协议INVITE报文,重新生成所述会话密钥skey,并解密验证所述第一验证随机数密文,包括:
根据所述第二主密钥的ID标识,从被叫方集成的所述安全存储介质中获取相应的主密钥,获取的相应主密钥包括解密主密钥和验证主密钥;
利用所述解密主密钥对被叫方的所述会话密钥素材密文进行解密,得到被叫方的会话密钥素材;
利用验证主密钥对被叫方的所述会话密钥素材校验值进行验证,确定验证通过;
采用符合前向安全性的密码函数,基于所述会话密钥素材变换得到会话密钥skey;
基于所述会话密钥skey,解密验证所述第一验证随机数密文。
10.如权利要求8所述的采用透明代理和量子密钥预充注实现VoIP加解密方法,其特征在于,在所述被叫方接收主叫方发送的重构的SIP协议INVITE报文之前,所述方法还包括:
向所述管理中心发送注册请求;
接收所述管理中心返回的VoIP终端地址与QKD身份UID的绑定关系。
12.如权利要求10所述的采用透明代理和量子密钥预充注实现VoIP加解密方法,其特征在于,所述方法还包括:
主被叫双方通话终止时,被叫方运行加密代理读取重定向到SIP_QUEUE队列的BYE报文或CANCEL报文;
删除所述RTP语音流透明加密规则并对所述会话密钥skey清零后,将BYE报文或CANCEL报文重新入栈发送。
11.如权利要求8所述的采用透明代理和量子密钥预充注实现VoIP加解密方法,其特征在于,在所述被叫方接收主叫方发送的重构的SIP协议INVITE报文之前,所述方法还包括:
被叫方运行初始化程序对所述安全存储介质进行完整性检查;
在检查通过时,获取被叫方集成的所述安全存储介质内部存储的所述主密钥的使用授权。
13.一种采用透明代理和量子密钥预充注实现VoIP加解密方法,其特征在于,所述方法应用于量子密钥分发网络,包括以下步骤:
通过QKD网络节点接收管理中心转发会话密钥申请,所述会话密钥申请由主叫方生成,所述会话密钥申请包括主被叫双方的地址、第一主密钥的ID标识以及利用所述第一主密钥对所述会话密钥申请进行校验计算得到的校验值,所述第一主密钥为存储于主叫方集成的所述安全存储介质内的任意主密钥;
根据所述第一主密钥的ID标识,取出与主叫方对应的主密钥,对所述会话密钥申请的内容进行HMAC完整性校验;
验证通过后,调用量子随机数发生器实时产生主被叫双方的会话密钥素材;
随机采用与主叫方和被叫方对应的任意主密钥作为第二主密钥,分别对所述会话密钥素材进行加密及HMAC完整性校验;
生成密钥申请响应报文,所述密钥申请响应报文包括主被叫双方的会话密钥素材密文、主被叫双方的会话密钥素材校验值以及主被叫双方加密及校验所采用的第二主密钥的ID标识。
14.如权利要求13所述的采用透明代理和量子密钥预充注实现VoIP加解密方法,其特征在于,所述方法还包括:
接收VoIP终端发送的密钥充注请求;
基于所述密钥充注请求,将所述VoIP终端内集成的安全存储介质充注主密钥,所述主密钥的格式为4字节密钥ID+n字节密钥+n字节初始化向量。
15.一种VoIP终端,其特征在于,所述VoIP终端内集成有第一加密代理模块、第一密钥管理模块、第一安全存储介质和第一数据收发模块,所述第一加密代理模块包括运行在用户空间的加密代理程序和运行在内核空间的ENCRYPT/DECRYPT透明加解密模块,所述第一安全存储介质内存储有由量子密钥分发网络预先充注的主密钥;
所述第一加密代理模块,用于运行所述加密代理程序,将SIP协议的INVITE报文重定向到SIP_QUEUE队列;
所述第一数据收发模块,用于读取重定向到SIP_QUEUE队列的INVITE报文,并基于出栈的INVITE报文向管理中心发送会话密钥申请,以使所述管理中心将所述会话密钥申请转发至QKD网络节点,所述会话密钥申请包括主被叫双方的地址、第一主密钥的ID标识以及利用所述第一主密钥对所述会话密钥申请进行校验计算得到的校验值,所述第一主密钥存储于所述安全存储介质;
所述第一数据收发模块,用于接收所述管理中心转发的密钥申请响应报文,所述密钥申请响应报文由所述QKD网络节点生成,所述密钥申请响应报文包括主被叫双方的会话密钥素材密文、主被叫双方的会话密钥素材校验值以及主被叫双方加密及校验所采用的第二主密钥的ID标识,所述第二主密钥为所述量子密钥分发网络中与主被叫双方标识对应的量子密钥;
所述第一密钥管理模块,用于基于所述第二主密钥的ID标识,从其集成的所述安全存储介质中获取相应的主密钥,对所述会话密钥素材密文进行解密并作验证,得到会话密钥skey并重构SIP协议的INVITE报文;
所述第一数据收发模块,用于将重构的SIP协议INVITE报文发送至被叫方,以由所述被叫方生成所述会话密钥skey和INVITE响应报文,所述INVITE响应报文中的媒体字段中写有主被叫双方的RTP协议端口,并增加扩展参数a字段;以及用于接收所述INVITE响应报文,将所述INVITE响应报文重定向到SIP_QUEUE队列的入栈,并读取所述INVITE响应报文中的媒体字段中写有的主被叫双方的RTP协议端口,设置RTP语音流透明加密规则;以及用于基于所述会话密钥skey和所述RTP语音流透明加密规则,进行VoIP加密语音通信。
16.一种VoIP终端,其特征在于,所述VoIP终端内集成有第二加密代理模块、第二密钥管理模块、第二安全存储介质和第二数据收发模块,所述第二加密代理模块包括运行在用户空间的加密代理程序和运行在内核空间的ENCRYPT/DECRYPT透明加解密模块,所述第二安全存储介质内存储有由量子密钥分发网络预先充注的主密钥;
所述第二数据收发模块,用于接收主叫方发送的重构的SIP协议INVITE报文,所述重构的SIP协议INVITE报文的SDP消息体中增加有扩展参数a字段,用于承载会话密钥相关信息,所述会话密钥相关信息包括被叫方的会话密钥素材密文、被叫方的会话密钥素材校验值、被叫方加密及校验所采用的第二主密钥的ID标识、主叫方集成的所述安全存储介质实时产生的验证随机数以及采用主叫方生成会话密钥skey加密的第一验证随机数密文;
所述第二加密代理模块,用于运行所述加密代理程序,重定向到SIP_QUEUE队列入栈的所述重构的SIP协议INVITE报文;
所述第二密钥管理模块,用于基于所述重构的SIP协议INVITE报文,重新生成所述会话密钥skey,并解密验证所述第一验证随机数密文;验证通过后,去掉所述重构的SIP协议INVITE报文中由主叫方增加的密钥相关信息,得到SIP协议的原始INVITE报文;
所述第二数据收发模块,用于响应所述SIP协议的原始INVITE报文,并运行所述加密代理程序重定向到SIP_QUEUE队列出栈的INVITE响应报文;以及读取所述INVITE响应报文中媒体字段中主被叫双方的RTP协议端口,设置RTP语音流透明加密规则;以及在所述INVITE响应报文的SDP消息体中增加扩展参数a字段,用于承载会话密钥校验相关信息,并将重构的INVITE响应报文放入协议栈发送至主叫方。
17.一种采用透明代理和量子密钥预充注实现VoIP加解密系统,其特征在于,所述系统包括第一VoIP终端、第二VoIP终端、管理中心和量子密钥分发网络,第一VoIP终端、第二VoIP终端、管理中心均与量子密钥分发网络连接,所述第一VoIP终端和所述第二VoIP终端内集成有加密代理模块、密钥管理模块、安全存储介质和数据收发模块,所述安全存储介质内存储有所述量子密钥分发网络预先充注的主密钥;
所述第一VoIP终端调用所述加密代理模块,运行所述加密代理程序,将SIP协议的INVITE报文重定向到SIP_QUEUE队列;
所述第一VoIP终端调用所述数据收发模块,读取重定向到SIP_QUEUE队列的INVITE报文,并基于出栈的INVITE报文向管理中心发送会话密钥申请;
所述管理中心将所述会话密钥申请转发至所述量子密钥分发网络中的QKD节点;
所述QKD节点基于所述会话密钥申请,生成密钥申请响应报文,并经所述管理中心将所述密钥申请报文转发至所述第一VoIP终端,所述密钥申请响应报文包括主被叫双方的会话密钥素材密文、主被叫双方的会话密钥素材校验值以及主被叫双方加密及校验所采用的第二主密钥的ID标识,所述第二主密钥为所述量子密钥分发网络中与主被叫双方标识对应的量子密钥;
所述第一VoIP终端调用所述密钥管理模块,基于所述第二主密钥的ID标识,从其集成的所述安全存储介质中获取相应的主密钥,对所述会话密钥素材密文进行解密并作验证,得到会话密钥skey并重构SIP协议的INVITE报文;
所述第一VoIP终端调用所述数据收发模块,将重构的SIP协议INVITE报文发送至第一VoIP终端,以由所述被叫方生成所述会话密钥skey和INVITE响应报文,所述INVITE响应报文中的媒体字段中写有主被叫双方的RTP协议端口,并增加扩展参数a字段
所述第一VoIP终端调用所述数据收发模块,接收所述INVITE响应报文,将所述INVITE响应报文重定向到SIP_QUEUE队列的入栈,并读取所述INVITE响应报文中的媒体字段中写有的主被叫双方的RTP协议端口,设置RTP语音流透明加密规则,以及与第二VoIP终端进行VoIP加密语音通信。
本发明涉及密码应用技术领域,具体涉及一种采用透明代理和量子密钥预充注实现VoIP加解密方法。
随着5G技术和即时通信技术的发展,针对VoIP(Voice over Internet Protocol,IP电话)的加解密需求场景越来越多,目前针对VoIP加密需求的解决方案一般都是基于公钥密码体制,而且在具体实现上都需要对终端的VoIP协议栈和相关应用进行改造,不能实现对现有VoIP方案完全透明的密钥分发和数据流加密处理。采用以上传统实现方案的VoIP加密系统目前在实际使用中存在以下困难:
(1)公钥密码体制具有较高的复杂度,且我国的公钥密码体制还采用了双证书双密钥对体系,加上终端用户的庞大数量,VoIP加密系统的管理难度非常大,应用推广也比较受限。
(2)会话密钥协商或分发的过程都是采用长期有效的非对称加密密钥对和签名密钥对进行保护,没有做到一次一密;而且公开的公钥存在被不断发展的量子计算机破译的可能性,从而导致需传递的会话密钥被破译窃取。
(3)需要VoIP软件或服务提供商进行改造来支持VoIP加密,对现有业务影响较大。
比如相关技术中,公布号为CN104243144A的中国发明专利文献记载了一种基于Android智能移动终端的通信密钥分配方法,通过在Android操作系统的底层建立通用保密通信平台,使智能移动终端具备可以与保密通信支持网络进行交互,接收两级密钥,并对收到的业务密钥进行解密后再使用的功能。通过对对智能移动终端进行改造来支持VoIP保密电话、保密短信、保密视频通话、文件加密传输、安全移动支付以及其他需要保密支持的通信业务。
相关技术中,公布号为CN111092905A的中国发明专利文献记载了一种基于VoIP的加密通话方法和系统,呼叫终端持有第一电话号码并预装有第一安全模块,被叫终端持有第二电话号码并预装有第二安全模块;呼叫终端调用后台服务器创建加密组,并将呼叫终端和被叫终端加入加密组中;通话时,呼叫终端产生通话密钥,并使用第一安全模块对其加密生成通话密钥密文,然后将通话密钥密文发给呼叫终端;被叫终端采用第二安全模块对通话密钥密文解密,得到通话密钥;最终呼叫终端与被叫终端基于通话密钥进行加密通话。
该方案采用专门的加密通话客户端完成VoIP加密,需改造现有VoIP通话方案;且密钥分发过程保护强度不够,会话密钥由发起方单方面产生。
公布号为CN102970448A的中国发明专利文献记载了一种适合FDMA/DAMA卫星通信系统的VoIP话音接入方法,通过截获数据包、申请通信资源、分配通信资源、双向话音通信、申请释放通信资源、释放通信资源等流程将由IP承载的话音业务接入FDMA/DAMA卫星通信系统,IP话音自动接入、接入流程对完全透明。
该方案采用数据包拦截的方式实现一种卫星信道VoIP接入方案,数据包拦截是一种常识性的手段,具体到不同的系统和协议有不同的实现方式,但并未讲明其数据包拦截技术的实现方式;且该方法需进行VoIP卫星链路的建立。
本发明所要解决的技术问题在于如何简单高效并对VoIP应用透明的实现VoIP音视频数据加解密。
本发明通过以下技术手段实现解决上述技术问题的:
第一方面,本发明提出了一种采用透明代理和量子密钥预充注实现VoIP加解密方法,所述方法应用于VoIP终端,所述VoIP终端内集成安全存储介质,所述安全存储介质内存储有由量子密钥分发网络预先充注的主密钥,所述VoIP终端作为主叫方时,包括以下步骤:
主叫方运行加密代理,将SIP协议的INVITE报文重定向到SIP_QUEUE队列;
主叫方读取重定向到SIP_QUEUE队列的INVITE报文,并基于出栈的INVITE报文向管理中心发送会话密钥申请,以使所述管理中心将所述会话密钥申请转发至QKD网络节点,所述会话密钥申请包括主被叫双方的地址、第一主密钥的ID标识以及利用所述第一主密钥对所述会话密钥申请进行校验计算得到的校验值,所述第一主密钥存储于所述安全存储介质;
主叫方接收所述管理中心转发的密钥申请响应报文,所述密钥申请响应报文由所述QKD网络节点生成,所述密钥申请响应报文包括主被叫双方的会话密钥素材密文、主被叫双方的会话密钥素材校验值以及主被叫双方加密及校验所采用的第二主密钥的ID标识,所述第二主密钥为所述量子密钥分发网络中与主被叫双方标识对应的量子密钥;
主叫方基于所述第二主密钥的ID标识,从其集成的所述安全存储介质中获取相应的主密钥,对所述会话密钥素材密文进行解密并作验证,得到会话密钥skey并重构SIP协议的INVITE报文;
主叫方将重构的SIP协议INVITE报文发送至被叫方,以由所述被叫方生成所述会话密钥skey和INVITE响应报文,所述INVITE响应报文中的媒体字段中写有主被叫双方的RTP协议端口,并增加扩展参数a字段;
主叫方接收所述INVITE响应报文,将所述INVITE响应报文重定向到SIP_QUEUE队列的入栈,并读取所述INVITE响应报文中的媒体字段中写有的主被叫双方的RTP协议端口,设置RTP语音流透明加密规则;
主被叫双方基于所述会话密钥skey和所述RTP语音流透明加密规则,进行VoIP加密语音通信。
本发明通过在VoIP终端中预充注并使用量子密钥分发网络QKD产生的大容量主密钥,基于QKD网络和管理中心的密钥管理体系和VoIP终端的密钥管理体系完全分离,无耦合关系,简单高效;预充注并使用量子密钥分发网络QKD产生的大容量主密钥,实现真正意义上的密钥分发保护过程一次一密,从顶层增强整个系统的安全性;并且在VoIP终端中运行对VOIP应用完全透明的加密代理,在对VoIP协议栈和应用无影响零修改的情况下实现了VoIP终端音视频加密。
第二方面,本发明提出了一种采用透明代理和量子密钥预充注实现VoIP加解密方法,所述方法应用于VoIP终端,所述VoIP终端内集成安全存储介质,所述安全存储介质内存储有由量子密钥分发网络预先充注的主密钥,所述VoIP终端作为被叫方时,包括以下步骤:
被叫方接收主叫方发送的重构的SIP协议INVITE报文,所述重构的SIP协议INVITE报文的SDP消息体中增加有扩展参数a字段,用于承载会话密钥相关信息,所述会话密钥相关信息包括被叫方的会话密钥素材密文、被叫方的会话密钥素材校验值、被叫方加密及校验所采用的第二主密钥的ID标识、主叫方集成的所述安全存储介质实时产生的验证随机数以及采用主叫方生成会话密钥skey加密的第一验证随机数密文;
被叫方运行加密代理,重定向到SIP_QUEUE队列入栈的所述重构的SIP协议INVITE报文;
基于所述重构的SIP协议INVITE报文,重新生成所述会话密钥skey,并解密验证所述第一验证随机数密文;
验证通过后,去掉所述重构的SIP协议INVITE报文中由主叫方增加的密钥相关信息,得到SIP协议的原始INVITE报文;
被叫方响应所述SIP协议的原始INVITE报文,并运行加密代理重定向到SIP_QUEUE队列出栈的INVITE响应报文;
读取所述INVITE响应报文中媒体字段中主被叫双方的RTP协议端口,设置RTP语音流透明加密规则;
在所述INVITE响应报文的SDP消息体中增加扩展参数a字段,用于承载会话密钥校验相关信息,并将重构的INVITE响应报文放入协议栈发送至主叫方。
第三方面,本发明提出了一种采用透明代理和量子密钥预充注实现VoIP加解密方法,所述方法应用于量子密钥分发网络,包括以下步骤:
通过QKD网络节点接收管理中心转发会话密钥申请,所述会话密钥申请由主叫方生成,所述会话密钥申请包括主被叫双方的地址、第一主密钥的ID标识以及利用所述第一主密钥对所述会话密钥申请进行校验计算得到的校验值,所述第一主密钥为存储于主叫方集成的所述安全存储介质内的任意主密钥;
根据所述第一主密钥的ID标识,取出与主叫方对应的主密钥,对所述会话密钥申请的内容进行HMAC完整性校验;
验证通过后,调用量子随机数发生器实时产生主被叫双方的会话密钥素材;
随机采用与主叫方和被叫方对应的任意主密钥作为第二主密钥,分别对所述会话密钥素材进行加密及HMAC完整性校验;
生成密钥申请响应报文,所述密钥申请响应报文包括主被叫双方的会话密钥素材密文、主被叫双方的会话密钥素材校验值以及主被叫双方加密及校验所采用的第二主密钥的ID标识。
第四方面,本发明提出了一种VoIP终端,所述VoIP终端内集成有第一加密代理模块、第一密钥管理模块、第一安全存储介质和第一数据收发模块,所述第一加密代理模块包括运行在用户空间的加密代理程序和运行在内核空间的ENCRYPT/DECRYPT透明加解密模块,所述第一安全存储介质内存储有由量子密钥分发网络预先充注的主密钥;
所述第一加密代理模块,用于运行所述加密代理程序,将SIP协议的INVITE报文重定向到SIP_QUEUE队列;
所述第一数据收发模块,用于读取重定向到SIP_QUEUE队列的INVITE报文,并基于出栈的INVITE报文向管理中心发送会话密钥申请,以使所述管理中心将所述会话密钥申请转发至QKD网络节点,所述会话密钥申请包括主被叫双方的地址、第一主密钥的ID标识以及利用所述第一主密钥对所述会话密钥申请进行校验计算得到的校验值,所述第一主密钥存储于所述安全存储介质;
所述第一数据收发模块,用于接收所述管理中心转发的密钥申请响应报文,所述密钥申请响应报文由所述QKD网络节点生成,所述密钥申请响应报文包括主被叫双方的会话密钥素材密文、主被叫双方的会话密钥素材校验值以及主被叫双方加密及校验所采用的第二主密钥的ID标识,所述第二主密钥为所述量子密钥分发网络中与主被叫双方标识对应的量子密钥;
所述第一密钥管理模块,用于基于所述第二主密钥的ID标识,从其集成的所述安全存储介质中获取相应的主密钥,对所述会话密钥素材密文进行解密并作验证,得到会话密钥skey并重构SIP协议的INVITE报文;
所述第一数据收发模块,用于将重构的SIP协议INVITE报文发送至被叫方,以由所述被叫方生成所述会话密钥skey和INVITE响应报文,所述INVITE响应报文中的媒体字段中写有主被叫双方的RTP协议端口,并增加扩展参数a字段;以及用于接收所述INVITE响应报文,将所述INVITE响应报文重定向到SIP_QUEUE队列的入栈,并读取所述INVITE响应报文中的媒体字段中写有的主被叫双方的RTP协议端口,设置RTP语音流透明加密规则;以及用于进行VoIP加密语音通信,并调用透明加解密模块对数据报文进行透明加解密。
第五方面,本发明提出了一种VoIP终端,所述VoIP终端内集成有第二加密代理模块、第二密钥管理模块、第二安全存储介质和第二数据收发模块,所述第二加密代理模块包括运行在用户空间的加密代理程序和运行在内核空间的ENCRYPT/DECRYPT透明加解密模块,所述第二安全存储介质内存储有由量子密钥分发网络预先充注的主密钥;
所述第二数据收发模块,用于接收主叫方发送的重构的SIP协议INVITE报文,所述重构的SIP协议INVITE报文的SDP消息体中增加有扩展参数a字段,用于承载会话密钥相关信息,所述会话密钥相关信息包括被叫方的会话密钥素材密文、被叫方的会话密钥素材校验值、被叫方加密及校验所采用的第二主密钥的ID标识、主叫方集成的所述安全存储介质实时产生的验证随机数以及采用主叫方生成会话密钥skey加密的第一验证随机数密文;
所述第二加密代理模块,用于运行所述加密代理程序,重定向到SIP_QUEUE队列入栈的所述重构的SIP协议INVITE报文;
所述第二密钥管理模块,用于基于所述重构的SIP协议INVITE报文,重新生成所述会话密钥skey,并解密验证所述第一验证随机数密文;验证通过后,去掉所述重构的SIP协议INVITE报文中由主叫方增加的密钥相关信息,得到SIP协议的原始INVITE报文;
所述第二数据收发模块,用于响应所述SIP协议的原始INVITE报文,并运行所述加密代理程序重定向到SIP_QUEUE队列出栈的INVITE响应报文;以及读取所述INVITE响应报文中媒体字段中主被叫双方的RTP协议端口,设置RTP语音流透明加密规则;以及在所述INVITE响应报文的SDP消息体中增加扩展参数a字段,用于承载会话密钥校验相关信息,并将重构的INVITE响应报文放入协议栈发送至主叫方。
第六方面,本发明提出了一种采用透明代理和量子密钥预充注实现VoIP加解密系统,所述系统包括第一VoIP终端、第二VoIP终端、管理中心和量子密钥分发网络,第一VoIP终端、第二VoIP终端、管理中心均与量子密钥分发网络连接,所述第一VoIP终端和所述第二VoIP终端内集成有加密代理模块、密钥管理模块、安全存储介质和数据收发模块,所述安全存储介质内存储有所述量子密钥分发网络预先充注的主密钥;
所述第一VoIP终端调用所述加密代理模块,运行所述加密代理程序,将SIP协议的INVITE报文重定向到SIP_QUEUE队列;
所述第一VoIP终端调用所述数据收发模块,读取重定向到SIP_QUEUE队列的INVITE报文,并基于出栈的INVITE报文向管理中心发送会话密钥申请;
所述管理中心将所述会话密钥申请转发至所述量子密钥分发网络中的QKD节点;
所述QKD节点基于所述会话密钥申请,生成密钥申请响应报文,并经所述管理中心将所述密钥申请报文转发至所述第一VoIP终端,所述密钥申请响应报文包括主被叫双方的会话密钥素材密文、主被叫双方的会话密钥素材校验值以及主被叫双方加密及校验所采用的第二主密钥的ID标识,所述第二主密钥为所述量子密钥分发网络中与主被叫双方标识对应的量子密钥;
所述第一VoIP终端调用所述密钥管理模块,基于所述第二主密钥的ID标识,从其集成的所述安全存储介质中获取相应的主密钥,对所述会话密钥素材密文进行解密并作验证,得到会话密钥skey并重构SIP协议的INVITE报文;
所述第一VoIP终端调用所述数据收发模块,将重构的SIP协议INVITE报文发送至第一VoIP终端,以由所述被叫方生成所述会话密钥skey和INVITE响应报文,所述INVITE响应报文中的媒体字段中写有主被叫双方的RTP协议端口,并增加扩展参数a字段
所述第一VoIP终端调用所述数据收发模块,接收所述INVITE响应报文,将所述INVITE响应报文重定向到SIP_QUEUE队列的入栈,并读取所述INVITE响应报文中的媒体字段中写有的主被叫双方的RTP协议端口,设置RTP语音流透明加密规则,以及与第二VoIP终端进行VoIP加密语音通信。
本发明的优点在于:
(1)本发明通过在VoIP终端中预充注并使用QKD网络(Quantum keyDistribution,量子密钥分发)产生的大容量主密钥,基于QKD网络和管理中心的密钥管理体系和VoIP终端的密钥管理体系完全分离,无耦合关系,简单高效;预充注并使用量子密钥分发网络QKD产生的大容量主密钥,实现真正意义上的密钥分发保护过程一次一密,从顶层增强整个系统的安全性;并且在VoIP终端中运行对VoIP应用完全透明的加密代理,在对VoIP协议栈和应用无影响零修改的情况下实现了VoIP终端音视频加密。
且因为本发明方案是基于透明代理,密钥分发系统与VoIP通信系统没有直接关联,因此不需要对VoIP软件或服务提供商进行改造来支持VoIP加密。
本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
图1是本发明第一实施例提出的采用透明代理和量子密钥预充注实现VoIP加解密方法的流程示意图;
图2是本发明第二实施例提出的采用透明代理和量子密钥预充注实现VoIP加解密方法的流程示意图;
图3是本发明第三实施例提出的采用透明代理和量子密钥预充注实现VoIP加解密方法的流程示意图;
图4是本发明第四实施例提出的VoIP终端的结构示意图;
图5是本发明第五实施例提出的VoIP终端的结构示意图;
图6是本发明第六实施例提出的采用透明代理和量子密钥预充注实现VoIP加解密系统的结构示意图;
图7是本发明第六实施例提出的采用透明代理和量子密钥预充注实现VoIP加解密系统的工作原理框图。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
如图1所示,本发明第一实施例提出了一种采用透明代理和量子密钥预充注实现VoIP加解密方法,所述方法应用于VoIP终端,所述VoIP终端内集成安全存储介质,所述安全存储介质内存储有由量子密钥分发网络预先充注的主密钥,所述VoIP终端作为主叫方时,所述方法包括以下步骤:
S101、主叫方运行加密代理,将SIP协议的INVITE报文重定向到SIP_QUEUE队列;
需要说明的是,VoIP终端可采用Linux系统或Android系统,在Linux系统或Android系统上运行基于iptables/netfilter及queue机制的透明代理程序和透明加解密程序,VoIP终端运行加密代理程序,加密代理程序执行操作系统相关指令,将SIP协议的INVITE报文重定向到加密代理。在Android系统上需获得root权限,在Linux系统和Android系统上执行如下指令重定向SIP协议的INVITE报文到用户空间,由加密代理程序对SIP协议的INVITE报文进行处理后再重新进入协议栈按正常流程处理:
iptables-A OUTPUT-p udp-m string--from 0–-to 10--algo bm--string'INVITE sip'-j NFQUEUE--queue-num SIP_QUEUE
iptables-A INPUT-p udp-m string--from 0–-to 10--algo bm--string'INVITE sip'-j NFQUEUE--queue-num SIP_QUEUE
iptables-A OUTPUT-p udp-m string--from 0–-to 10--algo bm--string'SIP/2.0 200OK'-j NFQUEUE--queue-num SIP_QUEUE
iptables-A INPUT-p udp-m string--from 0–-to 10--algo bm--string'SIP/2.0 200OK'-j NFQUEUE--queue-num SIP_QUEUE
iptables-A OUTPUT-p udp-m string--from 0–-to 10--algo bm--string'BYE'-jNFQUEUE--queue-num SIP_QUEUE
iptables-A INPUT-p udp-m string--from 0–-to 10--algo bm--string'BYE'-j NFQUEUE--queue-num SIP_QUEUE
iptables-A OUTPUT-p udp-m string--from 0–-to 10--algo bm--string'CANCEL'-j NFQUEUE--queue-num SIP_QUEUE
iptables-A INPUT-p udp-m string--from 0–-to 10--algo bm--string'CANCEL'-j NFQUEUE--queue-num SIP_QUEUE
S102、主叫方读取重定向到SIP_QUEUE队列的INVITE报文,并基于出栈的INVITE报文向管理中心发送会话密钥申请,以使所述管理中心将所述会话密钥申请转发至QKD网络节点,所述会话密钥申请包括主被叫双方的地址、第一主密钥的ID标识以及利用所述第一主密钥对所述会话密钥申请进行校验计算得到的校验值,所述第一主密钥存储于所述安全存储介质;
具体地,VoIP终端运行的加密代理程序调用libnetfilter_queue函数库,读取重定向到SIP_QUEUE队列中的SIP协议的INVITE报文。在主叫方的加密代理程序,对于出栈(OUTPUT)的INVITE报文,触发会话密钥申请,并发送会话密钥申请报文到管理中心。
会话密钥申请报文用于申请获取FROM和TO所指VoIP终端之间的会话密钥,密钥申请报文内容包含FROM和TO所指的VoIP终端的地址,并随机采用本终端中安全存储介质中的任意主密钥对密钥申请报文进行HMAC完整性校验计算,在报文中附上校验值及所用第一主密钥ID。
需要说明的是,HMAC算法就是一种基于密钥的消息认证码算法,全称是Hash-based Message Authentication Code。
具体地,管理中心将接收到的会话密钥申请报文转发至QKD网络的节点,QKD网络节点根据主叫方的第一主密钥的ID标识从QKD网络中取出对应的主叫方的主密钥,并对密钥申请报文内容进行HMAC校验,验证无误后调用量子随机数发生器实时产生会话密钥素材,分别随机从QKD网络中获取对应于主叫方和被叫方的任意主密钥作为第二主密钥,然后利用第二主密钥加密该密钥素材并进行HMAC完整性校验;然后基于主被叫双方的会话密钥素材密文、主被叫双方的校验值及主被叫双方加密及校验所采用的的第二主密钥的ID标识构成密钥申请响应报文,并发给管理中心。
S103、主叫方接收所述管理中心转发的密钥申请响应报文,所述密钥申请响应报文由所述QKD网络节点生成,所述密钥申请响应报文包括主被叫双方的会话密钥素材密文、主被叫双方的会话密钥素材校验值以及主被叫双方加密及校验所采用的第二主密钥的ID标识,所述第二主密钥为所述量子密钥分发网络中与主被叫双方标识对应的量子密钥;
S104、主叫方基于所述第二主密钥的ID标识,从其集成的所述安全存储介质中获取相应的主密钥,对所述会话密钥素材密文进行解密并作验证,得到会话密钥skey并重构SIP协议的INVITE报文;
需要说明的是,主叫方接收到密钥申请响应报文后,首先根据所述第二主密钥的ID标识,从其集成的安全存储介质中获取相应的主密钥,用于对会话密钥素材密文进行解密并作HMAC验证;在验证通过时,对SIP协议的INVITE报文进行重构,若验证未通过,则终止本次通话。
S105、主叫方将重构的SIP协议INVITE报文发送至被叫方,以由所述被叫方生成所述会话密钥skey和INVITE响应报文,所述INVITE响应报文中的媒体字段中写有主被叫双方的RTP协议端口,并增加扩展参数a字段;
具体地,被叫方在接收到重构的SIP协议INVITE报文后,利用被叫方运行的加密代理程序读取重定向到SIP_QUEUE队列的入栈(INPUT)中的重构SIP协议INVITE报文,并根据INVITE报文中的第二主密钥的ID标识,从其集成的安全存储介质中获取对应的主密钥,用于对会话密钥素材密文进行解密并作HMAC验证;在验证通过时,对SIP协议的INVITE报文进行重构,去掉主叫方增加的密钥相关信息,恢复原始的INVITE报文由被叫方接收,若验证未通过,则终止本次通话。
被叫方接收到原始的INVITE报文,重构该INVITE报文,增加扩展参数a字段,用于承载会话密钥校验相关信息,得到INVITE响应报文并发送至主叫方。
S106、主叫方接收所述INVITE响应报文,将所述INVITE响应报文重定向到SIP_QUEUE队列的入栈,并读取所述INVITE响应报文中的媒体字段中写有的主被叫双方的RTP协议端口,设置RTP语音流透明加密规则;
S107、主被叫双方基于所述会话密钥skey和所述RTP语音流透明加密规则,进行VoIP加密语音通信。
本实施例通过在VoIP终端中预充注并使用QKD网络(Quantum key Distribution,量子密钥分发)产生的大容量主密钥,基于QKD网络和管理中心的密钥管理体系和VoIP终端的密钥管理体系完全分离,无耦合关系,简单高效;预充注并使用量子密钥分发网络QKD产生的大容量主密钥,实现真正意义上的密钥分发保护过程一次一密,从顶层增强整个系统的安全性;并且在VoIP终端中运行对VoIP应用完全透明的加密代理,在对VoIP协议栈和应用无影响零修改的情况下实现了VoIP终端音视频加密。
需要说明的是,与公布号为CN111092905A的中国发明专利文献所记载的方案不同的是:本实施例方案通过透明加密代理和报文重定向技术实现对现有VoIP明话到密话的透明改造,密钥分发和语音数据加解密过程均在现有VoIP协议栈和应用的基础上透明实现,对业务零干预;且本实施例方案采用预充注量子密钥实现密钥分发过程的一次一密,而且会话密钥由双方协商产生,保护强度高。
与公布号为CN102970448A的中国发明专利文献记载的方案不同的是:本实施例方案采用Linux或基于Linux的Android系统的netfilter包过滤和重定向机制和ip_queue系统内通信方式来实现对数据包的拦截和处理,对VoIP协议栈和应用透明;且该方案用于加密链路的建立,该加密链路是虚拟链路,基于原有的VoIP通信链路,不会建立新的物理链路。
需要说明的是,本实施例为VoIP终端配备专用的安全SIM卡(用于智能手机)或安全U盾(用于个人电脑)等大容量安全存储介质,通过QKD网络向代表不同QKD身份UID的安全SIM卡或安全U盾预充注大量的主密钥,密钥格式为4字节密钥ID+n字节密钥和n字节初始化向量。
应当理解的是,n的取值与所采用的加密算法相关,本实施例不作具体限定。
需要说明的是,在VoIP终端不能直接在QKD网络的节点进行密钥充注的情况下,可通过密钥代理提供密钥充注的代理功能。
应当理解的是,本实施例所采用的密钥分发系统或设备基于但并不限于QKD密钥分发网络,所涉及的密钥预充注功能可采用任何一种对称密钥管理系统及设备实现。
在一实施例中,在所述步骤S101:主叫方运行加密代理,将SIP协议的INVITE报文重定向到SIP_QUEUE队列之前,所述方法还包括以下步骤:
向所述管理中心发送注册请求;
接收所述管理中心返回的VoIP终端地址与QKD身份UID的绑定关系。
需要说明的是,管理中心用于提供VoIP终端的注册和身份绑定服务,为不同的VoIP终端及VoIP地址绑定不同的QKD身份UID,并负责转发量子密钥分发网络和VoIP终端之间的会话密钥请求和响应。
在一实施例中,在所述步骤S101:主叫方运行加密代理,将SIP协议的INVITE报文重定向到SIP_QUEUE队列之前,所述方法还包括以下步骤:
主叫方运行初始化程序对所述安全存储介质进行完整性检查;
在检查通过时,获取所述安全存储介质内部存储的所述主密钥的使用授权。
需要说明的是,将安全存储介质插入VoIP终端后,运行初始化程序对安全存储介质进行完整性检查,并通过PIN码验证等方式获得对安全存储介质内部存储的主密钥的使用授权,以确保拨打加密的VoIP电话之前安全存储介质处于可用状态。
在一实施例中,所述步骤S104:主叫方基于所述第二主密钥的ID标识,从其集成的所述安全存储介质中获取相应的主密钥,对所述会话密钥素材密文进行解密并作验证,得到会话密钥skey并重构SIP协议的INVITE报文,包括以下步骤:
S141、根据所述第二主密钥的ID标识,从其集成的所述安全存储介质中获取相应的主密钥,获取的相应主密钥包括解密主密钥和验证主密钥;
S142、利用所述解密主密钥对主叫方的所述会话密钥素材密文进行解密,得到主叫方的会话密钥素材;
S143、利用验证主密钥对主叫方的会话密钥素材校验值进行验证,确定验证通过;
S144、采用符合前向安全性的密码函数,基于所述会话密钥素材变换得到会话密钥skey;
S145、在所述INVITE报文的SDP消息体中增加扩展参数a字段,得到重构的SIP协议的INVITE报文,所述扩展参数a字段承载有会话密钥相关信息,所述会话密钥相关信息包括被叫方的会话密钥素材密文、被叫方的会话密钥素材校验值、被叫方加密及校验所采用的第二主密钥的ID标识、主叫方集成的所述安全存储介质实时产生的验证随机数以及采用所述会话密钥skey加密的第一验证随机数密文。
需要说明的是,主叫方在INVITE报文的SDP(会话描述协议)中增加扩展参数a字段来承载会话密钥相关信息:
a=nonce:keyid_enc nonce_encrypted_xxx
a=hmac:keyid_mac nonce_hmac_xxx
a=verify noncev+noncev_encrypted_xxx
即为从响应报文中取出的被叫方的用于加密的第二主密钥的ID标识、用该第二主密钥加密的会话密钥素材密文、用于计算HMAC的第二主密钥的ID标识、用该第二主密钥计算的会话密钥素材的HMAC校验值,以及实时产生的验证随机数和采用会话密钥skey加密的第一验证随机数密文。然后调用接口函数将重构的INVITE报文放入协议栈发送至被叫方,由被叫方生成INVITE响应报文。
在一实施例中,被叫方接收到重构的SIP协议INVITE报文后,其上运行的加密代理程序读取重定向到SIP_QUEUE队列的入栈(INPUT)的重构INVITE报文,从报文中根据第二主密钥ID取出对应主密钥进行HMAC验证并解密密钥素材,并在密钥素材基础上变换出会话密钥skey并用于解密验证随机数。验证通过后,去掉报文中关于主叫方代理增加的密钥相关信息,恢复原始SIP报文放入协议栈由被叫方接受。
被叫方接收到原始的INVITE报文后,其上运行的加密代理程序读取重定向到SIP_QUEUE队列的出站(OUTPUT)的INVITE响应报文,重构该报文,增加扩展参数a字段来承载会话密钥校验相关信息:
a=verify noncev+noncev_encrypted_xxx
即增加实时产生的第二验证随机数和采用会话密钥skey加密的第二验证随机数密文。然后调用接口函数将重构的INVITE响应报文放入协议栈发送至主叫方。
同时,被叫方根据INVITE及响应报文中的媒体字段(m字段)读取主叫和被叫方的RTP协议端口RTP-CALL/RTP-CALLED,设置RTP语音流加密规则:
iptables-t mangle-A OUTPUT-p udp–dport RTP-CALL-j ENCRYPT–-key skey–-iv iv
iptables-t mangle-A INPUT-p udp–dport RTP-CALLED-j DECRYPT–-keyskey–-iv
需要说明的是,ENCRYPT和DECRYPT为按照Linux的netfilter机制开发的模块,属于加密代理模块的一部分,对数据报文的内容进行透明加解密处理,加密模式为CBC(算法分组长度的整数倍)+OFB(算法分组长度尾数)。
在一实施例中,所述INVITE响应报文中的扩展参数a字段承载有会话密钥校验信息,所述会话密钥校验信息包括由被叫方集成的所述安全存储介质实时产生的验证随机数以及采用由被叫方生成的会话密钥skey加密得到的第二验证随机数密文。
相应地,所述步骤S105:主叫方接收所述INVITE响应报文,将所述INVITE响应报文重定向到SIP_QUEUE队列的入栈,并读取所述INVITE响应报文中的媒体字段中写有的主被叫双方的RTP协议端口,设置RTP语音流透明加密规则,包括以下步骤:
S151、主叫方运行加密代理,读取重定向到SIP_QUEUE队列的入栈的所述INVITE响应报文;
S152、主叫方使用其生成的所述会话密钥skey解密验证所述第二验证随机数密文;
需要说明的是,验证通过后,重构所述INVITE响应报文,去掉报文中被叫方代理增加的密钥相关信息,恢复原始SIP的INVITE响应报文放入协议栈由主叫方接受;若验证为通过,则终止本次通话。
S153、在验证通过后,主叫方去掉所述INVITE响应报文中被叫方增加的密钥校验信息得到INVITE原始响应报文;
S154、主叫方读取所述INVITE原始响应报文中的媒体字段中写有的主被叫双方的RTP协议端口,设置RTP语音流透明加密规则。
需要说明是,主叫方根据INVITE及响应报文中的媒体字段(m字段)读取主叫和被叫方的RTP协议端口RTP-CALL/RTP-CALLED,设置RTP语音流加密规则:
iptables-t mangle-A OUTPUT-p udp–dport RTP-CALLED-j ENCRYPT–-keyskey–-iv iv
iptables-t mangle-A INPUT-p udp–dport RTP-CALL-j DECRYPT–-key skey–-iv iv
需要说明的是,ENCRYPT和DECRYPT为按照Linux的netfilter机制开发的内核模块,属于加密代理模块的一部分,对数据报文的内容进行透明加解密处理,加密模式为CBC(算法分组长度的整数倍)+OFB(算法分组长度尾数)。
在一实施例中,主叫方和被叫方基于会话密钥skey进行加密VoIP语音通信,采用CBC(算法分组长度的整数倍)+OFB(算法分组长度尾数)的透明加解密模式,仅对数据内容加密,不影响帧头控制字段。
在一实施例中,所述方法还包括以下步骤:
主被叫双方通话终止时,主叫方运行加密代理读取重定向到SIP_QUEUE队列的BYE报文或CANCEL报文;
删除所述RTP语音流透明加密规则并对所述会话密钥skey清零后,将BYE报文或CANCEL报文重新入栈发送。
在一实施例中,主叫双方进行每一次SIP会话结束后,主叫方、被叫方及QKD网络节点均将使用过的主密钥清零。
实施例2
如图2所示,本发明第二实施例提出了一种采用透明代理和量子密钥预充注实现VoIP加解密方法,所述方法应用于VoIP终端,所述VoIP终端内集成安全存储介质,所述安全存储介质内存储有由量子密钥分发网络预先充注的主密钥,所述VoIP终端作为被叫方时,包括以下步骤:
S201、被叫方接收主叫方发送的重构的SIP协议INVITE报文,所述重构的SIP协议INVITE报文的SDP消息体中增加有扩展参数a字段,用于承载增加的会话密钥相关信息,所述会话密钥相关信息包括被叫方的会话密钥素材密文、被叫方的会话密钥素材校验值、被叫方加密及校验所采用的第二主密钥的ID标识、主叫方集成的所述安全存储介质实时产生的验证随机数以及采用主叫方生成会话密钥skey加密的第一验证随机数密文;
S202、被叫方运行加密代理,重定向到SIP_QUEUE队列入栈的所述重构的SIP协议INVITE报文;
S203、基于所述重构的SIP协议INVITE报文,重新生成所述会话密钥skey,并解密验证所述第一验证随机数密文;
S204、验证通过后,去掉所述重构的SIP协议INVITE报文中由主叫方增加的密钥相关信息,得到SIP协议的原始INVITE报文;
S205、被叫方响应所述SIP协议的原始INVITE报文,并运行加密代理重定向到SIP_QUEUE队列出栈的INVITE响应报文;
S206、读取所述INVITE响应报文中媒体字段中主被叫双方的RTP协议端口,设置RTP语音流透明加密规则;
需要说明的是,被叫方根据INVITE响应报文中的媒体字段(m字段)读取主叫和被叫方的RTP协议端口RTP-CALL/RTP-CALLED,设置RTP语音流加密规则:
iptables-t mangle-A OUTPUT-p udp–dport RTP-CALL-j ENCRYPT–-key skey–-iv iv
iptables-t mangle-A INPUT-p udp–dport RTP-CALLED-j DECRYPT–-keyskey–-iv
需要说明的是,ENCRYPT和DECRYPT为按照Linux的netfilter机制开发的模块,属于加密代理模块的一部分,对数据报文的内容进行透明加解密处理,加密模式为CBC(算法分组长度的整数倍)+OFB(算法分组长度尾数)。
S207、在所述INVITE响应报文的SDP消息体中增加扩展参数a字段,用于承载会话密钥校验相关信息,并将重构的INVITE响应报文放入协议栈发送至主叫方。
需要说明的是,主叫方接收到被叫方返回的重构的INVITE响应报文,将所述INVITE响应报文重定向到SIP_QUEUE队列的入栈,并读取所述INVITE响应报文中的媒体字段中写有的主被叫双方的RTP协议端口,设置RTP语音流透明加密规则;然后主被叫双方基于所述会话密钥skey和所述RTP语音流透明加密规则,进行VoIP加密语音通信。
本实施例通过在VoIP终端中预充注并使用QKD网络产生的大容量主密钥,基于QKD网络和管理中心的密钥管理体系和VoIP终端的密钥管理体系完全分离,无耦合关系,简单高效;预充注并使用量子密钥分发网络QKD产生的大容量主密钥,实现真正意义上的密钥分发保护过程一次一密,从顶层增强整个系统的安全性;并且在VoIP终端中运行对VoIP应用完全透明的加密代理,在对VoIP协议栈和应用无影响零修改的情况下实现了VoIP终端音视频加密。
在一实施例中,所述步骤S203:基于所述重构的SIP协议INVITE报文,重新生成所述会话密钥skey,并解密验证所述第一验证随机数密文,包括以下步骤:
S231、根据所述第二主密钥的ID标识,从被叫方集成的所述安全存储介质中获取相应的主密钥,获取的相应主密钥包括解密主密钥和验证主密钥;
S232、利用所述解密主密钥对被叫方的所述会话密钥素材密文进行解密,得到被叫方的会话密钥素材;
S233、利用验证主密钥对被叫方的所述会话密钥素材校验值进行验证,确定验证通过;
S234、采用符合前向安全性的密码函数,基于所述会话密钥素材变换得到会话密钥skey;
S234、基于所述会话密钥skey,解密验证所述第一验证随机数密文。
应当理解的是,验证通过后,被叫方重构SIP协议的报文,去掉主叫方代理增加的密钥相关信息,恢复原始SIP协议的NVITE报文,并放入协议栈由被叫方接受;若验证未通过则终止本次通话。
在一实施例中,所述步骤S207:在所述INVITE响应报文的SDP消息体中增加扩展参数a字段,用于承载会话密钥校验相关信息,并将重构的INVITE响应报文放入协议栈发送至主叫方,具体包括以下步骤:
S271、被叫方响应原始的INVITE报文,其上运行的加密代理程序读取重定向到SIP_QUEUE队列的出站(OUTPUT)的原始INVITE响应报文,重构该原始INVITE响应报文,增加扩展参数a字段来承载会话密钥校验相关信息:
a=verify noncev+noncev_encrypted_xxx
即增加由被叫方集成的安全存储介质实时产生的第二验证随机数和采用被叫方生成的会话密钥skey加密的第二验证随机数密文。
S272、调用接口函数将重构的NVITE响应报文放入协议栈发送至主叫方。
在一实施例中,在所述步骤S201:被叫方接收主叫方发送的重构的SIP协议INVITE报文之前,所述方法还包括以下步骤:
向所述管理中心发送注册请求;
接收所述管理中心返回的VoIP终端地址与QKD身份UID的绑定关系。
在一实施例中,在所述步骤S201:被叫方接收主叫方发送的重构的SIP协议INVITE报文之前,所述方法还包括以下步骤:
被叫方运行初始化程序对所述安全存储介质进行完整性检查;
在检查通过时,获取被叫方集成的所述安全存储介质内部存储的所述主密钥的使用授权。
在一实施例中,所述方法还包括以下步骤:
主被叫双方通话终止时,被叫方运行加密代理读取重定向到SIP_QUEUE队列的BYE报文或CANCEL报文;
删除所述RTP语音流透明加密规则并对所述会话密钥skey清零后,将BYE报文或CANCEL报文重新入栈发送。
实施例3
如图3所示,本发明第三实施例还提出了一种采用透明代理和量子密钥预充注实现VoIP加解密方法,所述方法应用于量子密钥分发网络,包括以下步骤:
S301、通过QKD网络节点接收管理中心转发会话密钥申请,所述会话密钥申请由主叫方生成,所述会话密钥申请包括主被叫双方的地址、第一主密钥的ID标识以及利用所述第一主密钥对所述会话密钥申请进行校验计算得到的校验值,所述第一主密钥为存储于主叫方集成的所述安全存储介质内的任意主密钥;
S302、根据所述第一主密钥的ID标识,取出与主叫方对应的主密钥,对所述会话密钥申请的内容进行HMAC完整性校验;
S303、验证通过后,调用量子随机数发生器实时产生主被叫双方的会话密钥素材;
需要说明的是,在验证未通过时,则终止本次通话。
S304、随机采用与主叫方和被叫方对应的任意主密钥作为第二主密钥,分别对所述会话密钥素材进行加密及HMAC完整性校验;
S305、生成密钥申请响应报文,所述密钥申请响应报文包括主被叫双方的会话密钥素材密文、主被叫双方的会话密钥素材校验值以及主被叫双方加密及校验所采用的第二主密钥的ID标识。
需要说明的是,本实施例中量子密钥分发网络生成密钥申请响应报文的流程具有以下优点:1)密钥分发过程保护采用预充注的大量主密钥实现一次一密;2)密钥分发过程及语音数据加解密过程对VOIP应用透明;3)会话密钥由通信双方握手协商产生并在握手中验证。
需要说明的是,量子密钥分发网络包含量子网络节点和量子网络链路控制中心,实现量子密钥生成、量子密钥中继、量子密钥提供等服务;其中,量子网络节点用于存储生成的量子密钥,接收密钥代理的密钥申请,向密钥代理提供密钥或直接提供密钥充注服务;量子网络链路控制中心用于可按照量子网络节点ID建立节点间的量子密钥分发及中继链路。
在一实施例中,所述方法还包括以下步骤:
接收VoIP终端发送的密钥充注请求;
基于所述密钥充注请求,将所述VoIP终端内集成的安全存储介质充注主密钥,所述主密钥的格式为4字节密钥ID+n字节密钥+n字节初始化向量。
应当理解的是,本实施例中所采用的量子密钥分发网络为VoIP终端内集成的安全存储介质预先充注大量的对称预共享主密钥。
实施例4
如图4所示,本发明第四实施例提出了一种VoIP终端,所述VoIP终端内集成有第一加密代理模块11、第一密钥管理模块12、第一安全存储介质13和第一数据收发模块14,所述第一加密代理模块11包括运行在用户空间的加密代理程序和运行在内核空间的ENCRYPT/DECRYPT透明加解密模块,所述第一安全存储介质13内存储有由量子密钥分发网络预先充注的主密钥;
所述第一加密代理模块11,用于运行所述加密代理程序,将SIP协议的INVITE报文重定向到SIP_QUEUE队列;
所述第一数据收发模块14,用于读取重定向到SIP_QUEUE队列的INVITE报文,并基于出栈的INVITE报文向管理中心发送会话密钥申请,以使所述管理中心将所述会话密钥申请转发至QKD网络节点,所述会话密钥申请包括主被叫双方的地址、第一主密钥的ID标识以及利用所述第一主密钥对所述会话密钥申请进行校验计算得到的校验值,所述第一主密钥存储于所述安全存储介质;
所述第一数据收发模块14,用于接收所述管理中心转发的密钥申请响应报文,所述密钥申请响应报文由所述QKD网络节点生成,所述密钥申请响应报文包括主被叫双方的会话密钥素材密文、主被叫双方的会话密钥素材校验值以及主被叫双方加密及校验所采用的第二主密钥的ID标识,所述第二主密钥为所述量子密钥分发网络中与主被叫双方标识对应的量子密钥;
所述第一密钥管理模块12,用于基于所述第二主密钥的ID标识,从其集成的所述安全存储介质中获取相应的主密钥,对所述会话密钥素材密文进行解密并作验证,得到会话密钥skey并重构SIP协议的INVITE报文;
所述第一数据收发模块14,用于将重构的SIP协议INVITE报文发送至被叫方,以由所述被叫方生成所述会话密钥skey和INVITE响应报文,所述INVITE响应报文中的媒体字段中写有主被叫双方的RTP协议端口,并增加扩展参数a字段;以及用于接收所述INVITE响应报文,将所述INVITE响应报文重定向到SIP_QUEUE队列的入栈,并读取所述INVITE响应报文中的媒体字段中写有的主被叫双方的RTP协议端口,设置RTP语音流透明加密规则;以及用于进行VoIP加密语音通信,并调用透明加解密模块对数据报文进行透明加解密。
本实施例通过在VoIP终端中预充注并使用QKD网络产生的大容量对称主密钥,基于QKD网络和管理中心的密钥管理体系和VoIP终端的密钥管理体系完全分离,无耦合关系,简单高效;预充注并使用量子密钥分发网络QKD产生的大容量主密钥,实现真正意义上的密钥分发保护过程一次一密,从顶层增强整个系统的安全性;并且在VoIP终端中运行对VoIP应用完全透明的加密代理,在对VoIP协议栈和应用无影响零修改的情况下实现了VoIP终端音视频加密。
在一实施例中,所述第一数据收发模块14,还用于:
向所述管理中心发送注册请求;
接收所述管理中心返回的VoIP终端地址与QKD身份UID的绑定关系。
在一实施例中,所述第一密钥管理模块,还用于:
主叫方运行初始化程序对所述安全存储介质进行完整性检查;
在检查通过时,获取所述安全存储介质内部存储的所述主密钥的使用授权。
在一实施例中,所述第一密钥管理模块12,还具体用于:
根据所述第二主密钥的ID标识,从其集成的所述安全存储介质中获取相应的主密钥,获取的相应主密钥包括解密主密钥和验证主密钥;
利用所述解密主密钥对主叫方的所述会话密钥素材密文进行解密,得到主叫方的会话密钥素材;
利用验证主密钥对主叫方的会话密钥素材校验值进行验证,确定验证通过;
采用符合前向安全性的密码函数,基于所述会话密钥素材变换得到会话密钥skey;
在所述INVITE报文的SDP消息体中增加扩展参数a字段,得到重构的SIP协议的INVITE报文,所述扩展参数a字段承载有会话密钥相关信息,所述会话密钥相关信息包括被叫方的会话密钥素材密文、被叫方的会话密钥素材校验值、被叫方加密及校验所采用的第二主密钥的ID标识、主叫方集成的所述安全存储介质实时产生的验证随机数以及采用所述会话密钥skey加密的第一验证随机数密文。
在一实施例中,所述第一数据收发模块14,还用于:
在主叫方运行加密代理后,读取重定向到SIP_QUEUE队列的入栈的所述INVITE响应报文;
调用密钥管理模块,使用其生成的所述会话密钥skey解密验证所述第二验证随机数密文;
在验证通过后,调用加密代理模块去掉所述INVITE响应报文中被叫方增加的密钥校验信息得到INVITE原始响应报文;
读取所述INVITE原始响应报文中的媒体字段中写有的主被叫双方的RTP协议端口,设置RTP语音流透明加密规则。
在一实施例中,所述第一加密代理模块11,还用于:
主被叫双方通话终止时,主叫方运行加密代理读取重定向到SIP_QUEUE队列的BYE报文或CANCEL报文;
删除所述RTP语音流透明加密规则并对所述会话密钥skey清零后,将BYE报文或CANCEL报文重新入栈发送。
需要说明的是,本发明所述VoIP终端的其他实施例或具有实现方法可参照上述方法实施例1,此处不再赘余。
实施例5
如图5所示,本发明第五实施例提出了一种VoIP终端,所述VoIP终端内集成有第二加密代理模块21、第二密钥管理模块22、第二安全存储介质23和第二数据收发模块24,所述第二加密代理模块21包括运行在用户空间的加密代理程序和运行在内核空间的ENCRYPT/DECRYPT透明加解密模块,所述第二安全存储介质23内存储有由量子密钥分发网络预先充注的主密钥;
所述第二数据收发模块24,用于接收主叫方发送的重构的SIP协议INVITE报文,所述重构的SIP协议INVITE报文的SDP消息体中增加有扩展参数a字段,用于承载会话密钥相关信息,所述会话密钥相关信息包括被叫方的会话密钥素材密文、被叫方的会话密钥素材校验值、被叫方加密及校验所采用的第二主密钥的ID标识、主叫方集成的所述安全存储介质实时产生的验证随机数以及采用主叫方生成会话密钥skey加密的第一验证随机数密文;
所述第二加密代理模块21,用于运行所述加密代理程序,重定向到SIP_QUEUE队列入栈的所述重构的SIP协议INVITE报文;
所述第二密钥管理模块22,用于基于所述重构的SIP协议INVITE报文,重新生成所述会话密钥skey,并解密验证所述第一验证随机数密文;验证通过后,去掉所述重构的SIP协议INVITE报文中由主叫方增加的密钥相关信息,得到SIP协议的原始INVITE报文;
所述第二数据收发模块24,用于响应所述SIP协议的原始INVITE报文,并运行所述加密代理程序重定向到SIP_QUEUE队列出栈的INVITE响应报文;以及读取所述INVITE响应报文中媒体字段中主被叫双方的RTP协议端口,设置RTP语音流透明加密规则;以及在所述INVITE响应报文的SDP消息体中增加扩展参数a字段,用于承载会话密钥校验相关信息,并将重构的INVITE响应报文放入协议栈发送至主叫方。
本实施例通过在VoIP终端中预充注并使用QKD网络产生的大容量对称主密钥,基于QKD网络和管理中心的密钥管理体系和VoIP终端的密钥管理体系完全分离,无耦合关系,简单高效;预充注并使用量子密钥分发网络QKD产生的大容量主密钥,实现真正意义上的密钥分发保护过程一次一密,从顶层增强整个系统的安全性;并且在VoIP终端中运行对VoIP应用完全透明的加密代理,在对VoIP协议栈和应用无影响零修改的情况下实现了VoIP终端音视频加密。
在一实施例中,所述第二密钥管理模块22,还用于:
根据所述第二主密钥的ID标识,从被叫方集成的所述安全存储介质中获取相应的主密钥,获取的相应主密钥包括解密主密钥和验证主密钥;
利用所述解密主密钥对被叫方的所述会话密钥素材密文进行解密,得到被叫方的会话密钥素材;
利用验证主密钥对被叫方的所述会话密钥素材校验值进行验证,确定验证通过;
采用符合前向安全性的密码函数,基于所述会话密钥素材变换得到会话密钥skey;
基于所述会话密钥skey,解密验证所述第一验证随机数密文。
在一实施例中,所述第二数据收发模块24,还用于:
响应原始的INVITE报文,其上运行的加密代理程序读取重定向到SIP_QUEUE队列的出站(OUTPUT)的原始INVITE响应报文,重构该原始INVITE响应报文,增加扩展参数a字段来承载会话密钥校验相关信息:
a=verify noncev+noncev_encrypted_xxx
即增加由被叫方集成的安全存储介质实时产生的第二验证随机数和采用被叫方生成的会话密钥skey加密的第二验证随机数密文。
调用接口函数将重构的NVITE响应报文放入协议栈发送至主叫方。
在一实施例中,所述第二密钥管理模块22,还用于:
被叫方运行初始化程序对所述安全存储介质进行完整性检查;
在检查通过时,获取被叫方集成的所述安全存储介质内部存储的所述主密钥的使用授权。
在一实施例中,所述第二数据收发模块24,还用于:
主被叫双方通话终止时,被叫方运行加密代理读取重定向到SIP_QUEUE队列的BYE报文或CANCEL报文;
删除所述RTP语音流透明加密规则并对所述会话密钥skey清零后,将BYE报文或CANCEL报文重新入栈发送。
需要说明的是,本发明所述VoIP终端的其他实施例或具有实现方法可参照上述方法实施例2,此处不再赘余。
如图6所示,本发明第六实施例还提出了一种采用透明代理和量子密钥预充注实现VoIP加解密系统,所述系统包括第一VoIP终端10、第二VoIP终端20、管理中心30和量子密钥分发网络40,第一VoIP终端10、第二VoIP终端20、管理中心30均与量子密钥分发网络40连接,所述第一VoIP终端10和所述第二VoIP终端20内集成有加密代理模块、密钥管理模块、安全存储介质和数据收发模块,所述安全存储介质内存储有所述量子密钥分发网络预先充注的主密钥;
所述第一VoIP终端10调用所述加密代理模块,运行所述加密代理程序,将SIP协议的INVITE报文重定向到SIP_QUEUE队列;
所述第一VoIP终端10调用所述数据收发模块,读取重定向到SIP_QUEUE队列的INVITE报文,并基于出栈的INVITE报文向管理中心发送会话密钥申请;
所述管理中心30将所述会话密钥申请转发至所述量子密钥分发网络中的QKD节点;
所述QKD节点基于所述会话密钥申请,生成密钥申请响应报文,并经所述管理中心将所述密钥申请报文转发至所述第一VoIP终端,所述密钥申请响应报文包括主被叫双方的会话密钥素材密文、主被叫双方的会话密钥素材校验值以及主被叫双方加密及校验所采用的第二主密钥的ID标识,所述第二主密钥为所述量子密钥分发网络中与主被叫双方标识对应的量子密钥;
所述第一VoIP终端10调用所述密钥管理模块,基于所述第二主密钥的ID标识,从其集成的所述安全存储介质中获取相应的主密钥,对所述会话密钥素材密文进行解密并作验证,得到会话密钥skey并重构SIP协议的INVITE报文;
所述第一VoIP终端10调用所述数据收发模块,将重构的SIP协议INVITE报文发送至第一VoIP终端,以由所述被叫方生成所述会话密钥skey和INVITE响应报文,所述INVITE响应报文中的媒体字段中写有主被叫双方的RTP协议端口,并增加扩展参数a字段
所述第一VoIP终端10调用所述数据收发模块,接收所述INVITE响应报文,将所述INVITE响应报文重定向到SIP_QUEUE队列的入栈,并读取所述INVITE响应报文中的媒体字段中写有的主被叫双方的RTP协议端口,设置RTP语音流透明加密规则,以及与第二VoIP终端进行VoIP加密语音通信。
本实施例通过在VoIP终端中预充注并使用QKD网络产生的大容量对称主密钥,基于QKD网络和管理中心的密钥管理体系和VoIP终端的密钥管理体系完全分离,无耦合关系,简单高效;预充注并使用量子密钥分发网络QKD产生的大容量主密钥,实现真正意义上的密钥分发保护过程一次一密,从顶层增强整个系统的安全性;并且在VoIP终端中运行对VoIP应用完全透明的加密代理,在对VoIP协议栈和应用无影响零修改的情况下实现了VoIP终端音视频加密。
如图7所示,本实施例提出的一种采用透明代理和量子密钥预充注实现VoIP加解密系统的工作流程如下:
(1)管理中心接受第一VoIP终端和第二VoIP终端的注册,并为不同的VoIP终端及VoIP终端地址绑定不同的QKD身份UID。
(2)将安全存储介质分别插入第一VoIP终端和第二VoIP终端,运行初始化程序对安全存储介质进行完整性检查,并通过PIN码验证等方式获得对安全存储介质内部存储的主密钥的使用授权,确保拨打加密的VoIP电话之前安全存储介质处于可用状态。
(3)第一VoIP终端运行加密代理,加密代理执行操作系统相关指令,将SIP的协议报文重定向到加密代理。在Android系统上需获得root权限,在Linux和Android系统上执行如下指令重定向SIP协议的INVITE报文到用户空间,由加密代理程序对SIP报文进行处理后再重新进入协议栈按正常流程处理:
iptables-A OUTPUT-p udp-m string--from 0–-to 10--algo bm--string'INVITE sip'-j NFQUEUE--queue-num SIP_QUEUE
iptables-A INPUT-p udp-m string--from 0–-to 10--algo bm--string'INVITE sip'-j NFQUEUE--queue-num SIP_QUEUE
iptables-A OUTPUT-p udp-m string--from 0–-to 10--algo bm--string'SIP/2.0 200OK'-j NFQUEUE--queue-num SIP_QUEUE
iptables-A INPUT-p udp-m string--from 0–-to 10--algo bm--string'SIP/2.0 200OK'-j NFQUEUE--queue-num SIP_QUEUE
iptables-A OUTPUT-p udp-m string--from 0–-to 10--algo bm--string'BYE'-j NFQUEUE--queue-num SIP_QUEUE
iptables-A INPUT-p udp-m string--from 0–-to 10--algo bm--string'BYE'-j NFQUEUE--queue-num SIP_QUEUE
iptables-A OUTPUT-p udp-m string--from 0–-to 10--algo bm--string'CANCEL'-j NFQUEUE--queue-num SIP_QUEUE
iptables-A INPUT-p udp-m string--from 0–-to 10--algo bm--string'CANCEL'-j NFQUEUE--queue-num SIP_QUEUE
(4)第一VoIP终端发起SIP呼叫,第一VoIP终端运行的加密代理程序调用libnetfilter_queue函数库,读取重定向到SIP_QUEUE队列的SIP报文。在第一VoIP终端的加密代理程序,对于出栈(OUTPUT)的INVITE报文,触发密钥申请,发出密钥申请报文到管理中心,申请SIP报文中FROM和TO所指VOIP终端之间的会话密钥,密钥申请报文内容包含FROM和TO所指的VOIP地址并随机采用本终端的任意主密钥作为第一主密钥对申请报文进行HMAC完整性校验计算,在报文中附上校验值及所用第一主密钥ID。
(5)管理中心转发密钥申请报文到QKD网络节点,QKD网络节点根据第一VoIP终端主密钥ID取出对应的主叫方主密钥对密钥申请报文内容进行HMAC校验,验证无误后利用量子随机数发生器实时产生会话密钥素材,分别随机采用第一VoIP终端和第二VoIP终端的任意主密钥作为第二主密钥加密该密钥素材并进行HMAC完整性校验,将第一VoIP终端和第二VoIP终端的会话密钥素材密文、校验值及加密及校验用主密钥ID构成密钥申请响应报文发给管理中心并进一步由管理中心转发给主叫方。
(6)第一VoIP终端收到密钥申请响应报文后,根据第二主密钥ID取出主密钥解密会话密钥素材并做HMAC验证,然后重构SIP协议的INVITE报文,采用符合前向安全性的密码函数(如HMAC)在密钥素材基础上变换出会话密钥skey,在SIP报文的SDP(会话描述协议)中增加扩展参数a字段来承载会话密钥相关信息:
a=nonce:keyid_enc nonce_encrypted_xxx
a=hmac:keyid_mac nonce_hmac_xxx
a=verify noncev+noncev_encrypted_xxx
即从响应报文中取出的被叫方的用于加密的主密钥ID、用该主密钥加密的会话密钥素材密文、用于计算HMAC的主密钥ID、用该主密钥计算的会话密钥素材的HMAC,以及实时产生的验证随机数和采用skey加密的验证随机数密文。然后调用接口函数将重构的SIP报文放入协议栈发送;
(7)第二VoIP终端收到SIP协议的INVITE报文,其上运行的加密代理程序读取重定向到SIP_QUEUE队列的入栈(INPUT)的INVITE报文,从报文中根据主密钥ID取出对应主密钥进行HMAC验证并解密密钥素材,使用和主叫方相同的方式在密钥素材基础上变换出会话密钥skey并用于解密验证随机数。验证通过后,重构SIP报文,去掉主叫方代理增加的密钥相关信息,恢复原始SIP报文放入协议栈由被叫方接受。
(8)第二VoIP终端响应INVITE报文,其上运行的加密代理程序读取重定向到SIP_QUEUE队列的出栈(OUTPUT)的INVITE响应报文,重构该报文,增加扩展参数a字段来承载会话密钥校验相关信息:
a=verify noncev+noncev_encrypted_xxx
即增加实时产生的验证随机数和采用skey加密的验证随机数密文。然后调用接口函数将重构的SIP报文放入协议栈发送。同时,被叫方根据INVITE及响应报文中的媒体字段(m字段)读取主叫和被叫方的RTP协议端口RTP-CALL/RTP-CALLED,设置RTP语音流加密规则:
iptables-t mangle-A OUTPUT-p udp–dport RTP-CALL-j ENCRYPT–-key skey–-iv iv
iptables-t mangle-A INPUT-p udp–dport RTP-CALLED-j DECRYPT–-keyskey–-iv
ENCRYPT和DECRYPT为按照Linux的netfilter机制开发的模块,属于加密代理模块的一部分,对数据报文的内容进行透明加解密处理,加密模式为CBC(算法分组长度的整数倍)+OFB(算法分组长度尾数)。
(9)第一VoIP终端收到INVITE响应报文,其上运行的加密代理程序读取重定向到SIP_QUEUE队列的入站(INPUT)的INVITE响应报文,使用skey解密验证随机数。验证通过后,重构SIP报文,去掉第二VoIP终端代理增加的密钥相关信息,恢复原始SIP响应报文放入协议栈由主叫方接受。同时,第一VoIP终端根据INVITE及响应报文中的媒体字段(m字段)读取主叫和被叫方的RTP协议端口RTP-CALL/RTP-CALLED,设置RTP语音流加密规则:
iptables-t mangle-A OUTPUT-p udp–dport RTP-CALLED-j ENCRYPT–-keyskey–-iv iv
iptables-t mangle-A INPUT-p udp–dport RTP-CALL-j DECRYPT–-key skey–-iv iv
ENCRYPT和DECRYPT为按照Linux的netfilter机制开发的内核模块,属于加密代理模块的一部分,对数据报文的内容进行透明加解密处理,加密模式为CBC(算法分组长度的整数倍)+OFB(算法分组长度尾数)。
(10)第一VoIP终端和第二VoIP终端进行加密VOIP语音通信,采用CBC(算法分组长度的整数倍)+OFB(算法分组长度尾数)的透明加解密模式,仅对数据内容加密,不影响帧头控制字段。
(11)任何一方挂断或通话终止,第一VoIP终端和第二VoIP终端运行的加密代理程序读取重定向到SIP_QUEUE队列的BYE或CANCEL报文,删除RTP语音流加密规则并对会话密钥清零,然后将BYE或CANCEL报文重新入栈发送。
需要说明的是,在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
本文发布于:2023-04-13 18:29:59,感谢您对本站的认可!
本文链接:https://patent.en369.cn/patent/4/86036.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |