1.一种SIP视频监控系统加解密码流密钥分发方法,其特征在于:包括以下步骤:
(1)、基于数字证书的设备注册双向认证获得共享密钥SEED的过程;
在基于数字证书的设备注册双向认证获得共享密钥的过程中,仍然采用了RFC3261中定义的REGISTER消息基于挑战的认证过程;
当SIP服务器收到设备发送的REGISTER消息时,产生一个随机数SEED,并且计算nonce的值,通过401错误消息将nonce值发送到设备端,nonce=A&B,其中&为字符串连接分割符,A=E[PRs,H(From+To+Call-ID+Contact+SEED)],B=E(PUd,SEED),其中E为加密运算,+为字符串连接符,H为Hash运算也称为数字摘要运算,SIP服务器为s,SIP服务器的公钥为PUs,私钥为PRs;设备为d,设备的公钥为PUd,设备的私钥为PRd;
当设备收到SIP服务器返回的401消息后,用自己的私钥解密B值,得到SEED,即通过运算D(PRd,B)=D[PRd,E(PUd,SEED)]得到SEED的值,其中D为解密运算,然后计算H(From+To+Call-ID+Contact+SEED),再利用计算的结果和用SIP服务器公钥解密的结果D[PUs,E[PRs,H(From+To+Call-ID+Contact+SEED)]]相比较,如果相同,则证明SEED值来自于公钥为PUs的SIP服务器,因为只有拥有相应私钥的SIP服务器才可以对该SEED进行数字签名,从而认证了SIP服务器,此时,设备再计算response值,response=H(nonce+SEED),并将该值作为第二个REGISTER注册消息的response值发送到SIP服务器端;
当SIP服务器端收到来自设备的第二个注册消息时,用自己保存的该设备的SEED与消息体中的nonce一起做数字摘要运算,即H(nonce+SEED),用该值和设备发来的response值做比较;如果相同,说明该消息来自公钥为PUd的设备,因为只有拥有PRd的设备才可以解开B=E(PUd,SEED)获得相应SEED;至此SIP服务器也对设备做了认证,此后SIP服务器就可以向设备发送注册成功的消息200 OK;
(2)、具体信令交互过程;
a).设备上线向SIP服务器发送REGISTER注册消息;
b).SIP服务器收到REGISTER消息,生成随机数SEED,计算nonce值,nonce=A&B,A=E[PRs,H(From+To+Call-ID+Contact+SEED)],B=E(PUd,SEED),SIP服务器以A&B为nonce值向设备发送401消息;
c).设备收到401响应,首先计算D(PRd,B)=D[PRd,E(PUd,SEED)]得到SEED,并且计算H(From+To+Call-ID+Contact+SEED)和D(PUS,A)=D[PUS,E[PRs,H(From+To+Call-ID+Contact+SEED)]],当两者相同时,消息来自相应的SIP服务器,即对SIP服务器做了认证,计算response值,response=H(nonce+SEED)。设备重新以H(nonce+SEED)为response值发送REGISTER消息;
d).SIP服务器收到注册请求,用自己保存的发送给该设备的SEED计算
H(nonce+SEED),将计算结果和设备发送来的response做比较,两者相同则说明是相应设备发来的信令,即对设备做了认证,如果验证通过,SIP服务器则发送“200 OK”到设备,至此,设备上线注册成功;
(3)、密钥实时分发过程;
基于数字证书的设备身份认证完成之后,监控前端设备和SIP服务器之间有了共享密钥SEEDa,媒体服务器和SIP服务器之间有了共享密钥SEEDb,客户端和SIP服务器之间有了共享密钥SEEDc,当用户点播监控前端设备的加密码流到客户端播放时,SIP服务器首先呼通监控前端设备,然后再呼通客户端设备,在两个3pcc过程中完成密钥的实时分发,对RFC4566中定义的信令消息体SDP做如下扩展:
a)将INVITE消息SDP中的k的值分为三个部分:第一部分是本次使用的算法和模式,一种为对称算法和数字摘要算法,两者之间用逗号分隔;另外一种为非对称算法和数字摘要算法,两者之间用逗号分隔;第二部分是受保护的密钥密文信息;第三部分是对第二部分密文和设备SEED做数字摘要运算得到的摘要信息,每部分之间用&分隔;
b)将200 OK消息SDP中的k的值分为两个部分,第一部分为本次使用的算法和模式;
第二部分为数字摘要信息;
(4)、用对称算法保护码流加密密钥呼通监控前端设备和媒体服务器之间3pcc的过程如下:
a)SIP服务器向监控前端设备发送带offer2 SDP的INVITE消息,SIP服务器产生一个随机数key作为码流加密的密钥,计算k的值,k=A&B&C,A=3DES/ECB/PKCS5V2.0,SHA1,A指明了所用的加密算法和数字摘要算法;B=E[SEEDa,key],B为用监控前端设备的SEEDa作为密钥采用对称算法3DES/ECB/PKCS5V2.0对key做加密之后的值;C=H[B+SEEDa],C为对刚才加密的结果B和监控前端设备的种子SEEDa一起做数字摘要后的值;
b)监控前端设备收到INVITE消息之后,首先将k值通过分割符&分解成3部分A’,B’,C’,并各自解析,用A’中获得的数字摘要算法SHA1对B’+SEEDa做数字摘要,得到的结果与C’作比较,如果不相等,证明B’的完整性被破坏,监控前端设备回SIP服务器错误;如果相等,因为只有监控前端设备知道SEEDa,所以可以证明B’的完整性,监控前端设备用SEEDa作为密钥并用A’中获得的算法3DES/ECB/PKCS5V2.0对B’做解密,获得key的值,监控前端设备向SIP服务器回复带有offer3 SDP内容的200响应,SDP中k=D&E,D=SHA1;E=H[key+SEEDa];
c)SIP服务器收到200 OK以后,将k值通过分割符&分解成2个部分D’,E’,并各自解析,用D’中获得的摘要算法对key+SEEDa做数字摘要,与E’的值进行比较,如果不相等,回监控前端设备错误消息;如果相等则证明SIP服务器明白监控前端设备已经获得了正确的key,到这里,SIP服务器将加密密钥安全的通知了监控前端设备;
成功通知监控前端设备之后,SIP服务器向媒体服务器发出带有offer3 SDP内容的INVITE呼叫,计算k的值,k=a&b&c,a=3DES/ECB/PKCS5V2.0,SHA1,指明了所用的加密算法和数字摘要算法;b=E[SEEDb,key],b为用媒体服务器的SEEDb作为密钥采用对称算法3DES/ECB/PKCS5V2.0对key做加密之后的值;c=H[b+SEEDb],c为对刚才加密的结果b和监控前端设备的种子SEEDb一起做数字摘要的值;
d)媒体服务器收到INVITE消息之后,首先将k值通过分割符&分解成3部分a’,b’,c’,并各自解析,用a’中获得的数字摘要算法SHA1对b’+SEEDb做数字摘要,得到的结果与c’作比较,如果不相等,证明b’的完整性被破坏,媒体服务器回SIP服务器错误;如果相等,因为只有媒体服务器知道SEEDb,所以可以证明b’的完整性,媒体服务器用SEEDb作为密钥并用a’中获得的算法3DES/ECB/PKCS5V2.0对b’做解密,获得key的值,媒体服务器向SIF服务器回复带有answer2 SDP内容的200响应,SDP中k=d&e,d=SHA1;e=H[key+SEEDb];
e)SIP服务器收到媒体服务器的200 OK响应之后,将k值通过分割符&分解成2个部分d’,e’,并各自解析,用d’中获得的数字摘要算法对key+SEEDb做数字摘要,与e’的值进行比较,如果不相等,回媒体服务器错误消息;如果相等则证明SIP服务器明白媒体服务器已经获得了正确加密密钥key,向媒体服务器回复ACK响应;至此,SIP服务器已经将加密密钥安全的通知了媒体服务器;
f)SIP服务器将带有answer2 SDP内容的ACK响应回复给监控前端设备;
g)监控前端设备向媒体服务器传输用key为密钥的加密媒体流。
2.如权利要求1所述的一种SIP视频监控系统加解密码流密钥分发方法,其特征在于:
所述的步骤(4)还可用非对称算法保护码流加密密钥呼通监控前端设备和媒体服务器之间3pcc,其步骤如下:
(1)SIP服务器向监控前端设备发送带offer2 SDP的INVITE消息,SIP服务器产生一个随机数key作为码流加密的密钥,计算k的值,k=A&B&C,A=RSA/ECB/PKCS1V2.1,SHA1,A指明了所用的加密算法和数字摘要算法;B=E[PUd,key],其中E为加密运算,H为数字摘要算法,d为监控前端设备,PUd为监控前端设备的公钥,PRd为监控前端设备的私钥,B为用监控前端设备的公钥对key做加密之后的值;C=H[E[PUd,key]+SEEDa],C为对刚才加密的结果和监控前端设备的种子SEEDa一起做数字摘要的值;
(2)监控前端设备收到INVITE消息之后,首先将k值通过分割符&分解成3部分A’,B’,C’,并各自解析,用A’中获得的数字摘要算法SHA1对B’+SEEDa做数字摘要,得到的结果与C’作比较,如果不相等,证明B’的完整性被破坏,监控前端设备回SIP服务器错误;如果相等,因为只有监控前端设备知道SEEDa,所以可以证明B’的完整性;监控前端设备用自己的私钥对B’做解密,获得key的值;因为只有监控前端设备拥有自己的私钥,所以只有监控前端设备才能获得key的值;即D[PRd,B’]=key;监控前端设备向SIP服务器回复带有offer3 SDP内容的200响应,SDP中k=D&E,D=SHA1;E=H[key+SEEDa];
(3)SIP服务器收到200OK以后,将k值通过分割符&分解成2个部分D’,E’,并各自解析,用D’中获得的数字摘要算法对key+SEEDa做数字摘要,与E’进行比较,如果不相等,回监控前端设备错误消息;如果相等则证明SIP服务器明白监控前端设备已经获得了正确的key,至此,SIP服务器已经将加密密钥安全的通知了监控前端设备,成功通知监控前端设备之后,SIP服务器向媒体服务器发出带有offer3 SDP内容的INVITE呼叫,计算k的值,k=a&b&c,a=RSA/ECB/PKCS1V2.1,SHA1,a指明了所用的加密算法和数字摘要算法;
b=E[PUs,key],其中E为加密运算,H为数字摘要算法,s为媒体服务器,PUs为媒体服务器的公钥,PRs为媒体服务器的私钥),b为用媒体服务器的公钥对key做加密之后的值;c=H[E[PUs,key]+SEEDb],c的值为对刚才加密的结果和媒体服务器的种子SEEDb一起做数字摘要的值;
(4)媒体服务器收到INVITE消息之后,首先将k值通过分割符&分解成3部分a’,b’,c’,并各自解析,用a’中获得的数字摘要算法SHA1对b’+SEEDb做数字摘要,得到的结果与c’作比较,如果不相等,证明b’的完整性被破坏,媒体服务器回SIP服务器错误;如果相等,因为只有媒体服务器知道SEEDb,所以可以证明b’的完整性,媒体服务器用自己的私钥对b’做解密,获得key的值,因为只有媒体服务器拥有自己的私钥,所以只有媒体服务器才能获得key的值,即D[PRs,b]=key。媒体服务器向SIP服务器回复带有answer2 SDP内容的200响应,SDP中k=d&e,d=SHA1;e=H[key+SEEDb];
(5)SIP服务器收到媒体服务器的200 OK响应之后,将k值通过分割符&分解成2个部分d’,e’,并各自解析,用d’中获得的数字摘要算法对key+SEEDb做数字摘要,与e’的值进行比较,如果不相等,回媒体服务器错误消息;如果相等则证明SIP服务器明白媒体服务器已经获得了正确加密密钥key,向媒体服务器回复ACK响应。至此,SIP服务器已经将加密密钥安全的通知了媒体服务器;
(6)SIP服务器将带有answer2 SDP内容的ACK响应回复给监控前端设备;
(7)监控前端设备向媒体服务器传输以key为密钥的加密媒体流。
3.如权利要求1所述的一种SIP视频监控系统加解密码流密钥分发方法,其特征在于:
所述的密钥分发是在用户点播加密码流时实时分发的;密钥分发是一次一密的;具有码流加密能力的监控前端设备和具有码流解密能力的客户端设备均不需存储加/解密密钥;基于数字证书的设备注册双向认证时获得的SEED作为设备与SIP服务器之间的预共享密钥;
视频点播的3pcc过程中采用对称算法或非对称算法保护密钥过程。
一种SIP视频监控系统加解密码流密钥分发方法\n技术领域\n[0001] 本发明涉及一种SIP视频监控系统加解密码流密钥分发方法,属于通讯和视频监控技术领域。\n技术背景\n[0002] 视频监控是现代化管理、监测、控制的重要手段之一,以其直观、方便、信息内容丰富而被广泛地应用于工业、商业、金融、交通、教育、军事以及安防等多种领域。基于SIP协议实现视频监控系统是数字化、网络化、智能化、多媒体化视频监控系统发展的趋势。有一些重点监控区域(例如金库)的视频图像如果不加保护,被一些人获取,将会产生很大的损失,为保证视频监控图像的信息安全,需要在传输时对视频码流进行加密,在调看时对视频码流进行解密。\n[0003] 对视频监控图像进行实时加密对加密设备的运算速度要求较高,现在一般使用DES、3DES等通用对称算法。对称算法的安全性依赖于密钥的安全,泄漏密钥就意味着任何人都能对视频数据进行加/解密。如果对称密钥在产生、分发等过程中的安全不能保障,就不能保障加密视频数据的安全。因此密钥的安全分发是一个关键的环节。\n[0004] 第三方呼叫控制(Third Party Call Control简称3pcc)指第三方控制者在另外两方或者更多方之间发起、建立会话以及释放会话的操作,负责会话方之间的媒体协商。\n3pcc是SIP协议中经常使用的机制。\n[0005] 在SIP视频监控系统中,没有媒体服务器的加密视频点播结构,实质上是在SIP服务器的控制下将加密视频从具有码流加密能力的监控前端设备传输到具有码流解密能力的客户端。这个过程包含了一个3pcc过程:在SIP服务器这个第三方控制者的控制下,呼通监控前端设备和客户端的过程。\n[0006] 在SIP视频监控系统中,通过媒体服务器的加密视频点播结构,实质上是在SIP服务器的控制下将加密视频从具有码流加密能力的监控前端设备通过媒体服务器的中转传输到具有码流解密能力的客户端。这个过程包含了两个3pcc过程:一个是在SIP服务器这个第三方控制者的控制下,呼通监控前端设备和媒体服务器的过程;一个是在SIP服务器的控制下,呼通媒体服务器和客户端的过程。\n[0007] SIP视频监控系统中前端具有码流加密功能的设备通常是多个,并且每个可以产生多路加密视频,而在客户端具有解密功能的设备也通常是多个,并且每个具有多路视频解密功能,并且监控前端设备和客户端通常并没有一一对应的关系,当用户点播视频行为发生时才会决定要点播的视频在哪个客户端的哪一路被解码然后播放。这样给加密视频的解密带来了极大的困难,因为密钥如何安全分发是一个问题。\n[0008] 目前现有的加/解密码流密钥的分发大都不是实时的,而且缺乏时鲜性,很难抵抗重放攻击。为了保障安全性,每两个设备之间密钥必定是互不相同的,而且播放加密视频的客户端事先不确定,那么具有解密视频功能的客户端设备就必须存储每个前端加密设备的密钥,在一个大型视频监控系统中,这个数量是非常庞大的。这种方法对密钥的存储安全提出了很高的要求,但客户端通常都不具备这样的安全能力。密钥更换时,会有一个交替期,造成两个密钥同时存在,给管理带来了不便,而且这种方法对于跨域应用的适应性很差。\n发明内容\n[0009] 在SIP视频监控系统中,前端具有码流加密功能的设备通常可以产生多路加密视频,而在客户端具有解密功能的设备也通常具有多路视频解密功能,但具有解密视频功能的客户端设备通常并不能也不应存储每个前端加密设备的密钥,本发明的目的是为了克服上述已有技术的不足之处,提供一种SIP视频监控系统加解密码流密钥分发方法。\n[0010] 本发明提出的一种SIP视频监控系统加解密码流密钥分发方法,在呼通具有码流加密能力的监控前端设备和具有码流解密能力的客户端设备之间的3pcc过程中,或者在呼通具有码流加密能力的监控前端设备和媒体服务器的3pcc,呼通具有码流解密能力的客户端设备和媒体服务器之间的3pcc,这两个3pcc过程中,利用监控前端设备、媒体服务器、客户端设备在注册时身份认证过程获得的SEEDa、SEEDb、SEEDc作为与SIP服务器之间的共享密钥和身份标识,通过扩展SIP信令消息体SDP的内容来携带加/解密密钥,采用对称算法或者非对称算法来保障加/解密密钥传输的安全,从而在实时点播过程中完成加/解密密钥的安全分发。\n[0011] 本发明的有益效果是每次点播都产生不同的密钥,大大提高了安全系数,可以抵抗重放攻击。因为在点播时实时分发,监控前端和客户端均不需存储密钥,消除了密钥多处存储的安全风险。\n附图说明\n[0012] 图1是本发明所述一种SIP视频监控系统加解密码流密钥分发方法的基于数字证书的双向认证注册流程示意图;\n[0013] 图2是本发明所述一种SIP视频监控系统加解密码流密钥分发方法的呼通监控前端和媒体服务器之间3pcc流程示意图。\n具体实施方式\n[0014] 下面结合附图和具体实施例对本发明作进一步详细的介绍,如图1、2所示,本发明包括以下步骤:\n[0015] 1、基于数字证书的设备注册双向认证获得共享密钥SEED的过程;\n[0016] 在基于数字证书的设备注册双向认证获得共享密钥的过程中,采用了RFC3261中定义的REGISTER消息基于挑战的认证过程。\n[0017] 当SIP服务器收到设备发送的REGISTER消息时,SIP服务器产生一个随机数SEED,并且计算nonce的值,通过401错误消息将nonce值发送到设备端。nonce=A&B,其中&为字符串连接分割符,A=E[PRs,H(From+To+Call-ID+Contact+SEED)],B=E(PUd,SEED),其中,E为加密运算,+为字符串连接符,H为Hash运算也称为数字摘要运算,SIP服务器为s,SIP服务器的公钥为PUs,私钥为PRs;设备为d,设备的公钥为PUd,设备的私钥为PRd。\n[0018] 当设备收到SIP服务器返回的401消息后,用自己的私钥解密B值,得到SEED,即通过运算D(PRd,B)=D[PRd,E(PUd,SEED)]得到SEED的值,其中D为解密运算,然后计算H(From+To+Call-ID+Contact+SEED),再利用计算的结果和用SIP服务器公钥解密的结果D[PUs,E[PRs,H(From+To+Call-ID+Contact+SEED)]]相比较;如果相同,则证明SEED值来自于公钥为PUs的SIP服务器,因为只有拥有相应私钥的SIP服务器才可以对该SEED进行数字签名,从而认证了SIP服务器。此时,设备再计算response值,response=H(nonce+SEED),并将该值作为第二个REGISTER注册消息的response值发送到SIP服务器端。\n[0019] 当SIP服务器端收到来自设备的第二个注册消息时,用自己保存的该设备的SEED与消息体中的nonce一起做数字摘要运算即H(nonce+SEED),用该值和设备发来的response值做比较;如果相同,说明该消息来自公钥为PUd的设备,因为只有拥有PRd的设备才可以解开B=E(PUd,SEED)获得相应SEED;至此SIP服务器也对设备做了认证,此后SIP服务器就可以向设备发送注册成功的消息200 OK。\n[0020] 2、具体信令交互过程;\n[0021] (1).设备上线向SIP服务器发送REGISTER注册消息。\n[0022] (2).SIP服务器收到REGISTER消息,生成随机数SEED。计算nonce值,nonce=A&B,A=E[PRs,H(From+To+Call-ID+Contact+SEED)],B=E(PUd,SEED)。SIP服务器以A&B为nonce值向设备发送401消息。\n[0023] (3).设备收到401响应,首先计算D(PRd,B)=D[PRd,E(PUd,SEED)]得到SEED,并且计算H(From+To+Call-ID+Contact+SEED)和D(PUS,A)=D[PUS,E[PRs,H(From+Tc+Call-ID+Contact+SEED)]],当两者相同时,消息来自相应的SIP服务器,即对SIP服务器做了认证。计算response值,response=H(nonce+SEED)。设备重新以H(nonce+SEED)为response值发送REGISTER消息。\n[0024] (4).SIP服务器收到注册请求,用自己保存的发送给该设备的SEED计算H(nonce+SEED),将计算结果和设备发送来的response做比较,两者相同则说明是相应设备发来的信令,即对设备做了认证。如果验证通过,SIP服务器则发送200 OK到设备。至此,设备上线注册成功。\n[0025] 3、密钥实时分发过程;\n[0026] 基于数字证书的设备身份认证完成之后,监控前端设备和SIP服务器之间有了共享密钥SEEDa,媒体服务器和SIP服务器之间有了共享密钥SEEDb,客户端和SIP服务器之间有了共享密钥SEEDe,当用户点播监控前端设备的加密码流到客户端播放时,SIP服务器首先呼通监控前端设备,然后再呼通客户端设备,在两个3pcc过程中完成密钥的实时分发,如图2所示;本发明对RFC4566中定义的信令消息体SDP做如下扩展:\n[0027] 1)将Invite消息SDP中的k的值分为三个部分;第一部分:本次使用的算法和模式,一种为对称算法和摘要算法,两者之间用逗号分隔;另外一种为非对称算法和摘要算法,两者之间用逗号分隔;第二部分:受保护的密钥密文信息;第三部分:对第二部分密文和设备SEED做数字摘要运算得到的摘要信息。每部分之间用&分隔。\n[0028] 2)将200 OK消息SDP中的k的值分为两个部分;第一部分:本次使用的算法和模式;第二部分:数字摘要信息。\n[0029] 4、用对称算法保护码流加密密钥呼通监控前端设备和媒体服务器之间3pcc的过程如下:\n[0030] (1)SIP服务器向监控前端设备发送带offer2 SDP的INVITE消息,SIP服务器产生一个随机数key作为码流加密的密钥,计算k的值,k=A&B&C,A=3DES/ECB/PKCS5V2.0,SHA1,A指明了所用的加密算法和数字摘要算法;B=E[SEEDa,key],B为用监控前端设备的SEEDa作为密钥采用对称算法3DES/ECB/PKCS5V2.0对key做加密之后的值;C=H[B+SEEDa],C为对刚才加密的结果B和监控前端设备的种子SEEDa一起做数字摘要后的值。\n[0031] (2)监控前端设备收到INVITE消息之后,首先将k值通过分割符&分解成3部分A’,B’,C’,并各自解析,用A’中获得的数字摘要算法SHA1对B’+SEEDa做数字摘要,得到的结果与C’作比较,如果不相等,证明B’的完整性被破坏,监控前端设备回SIP服务器错误;如果相等,因为只有监控前端设备知道SEEDa,所以可以证明B’的完整性。监控前端设备用SEEDa作为密钥并用A’中获得的算法3DES/ECB/PKCS5V2.0对B’做解密,获得key的值,监控前端设备向SIP服务器回复带有offer3 SDP内容的200响应,SDP中k=D&E,D=SHA1;E=H[key+SEEDa]。\n[0032] (3)SIP服务器收到200 OK以后,将k值通过分割符&分解成2个部分D’,E’,并各自解析,用D’中获得的摘要算法对key+SEEDa做数字摘要,与E’的值进行比较,如果不相等,回监控前端设备错误消息;如果相等则证明SIP服务器明白监控前端设备已经获得了正确的key。到这里,SIP服务器将加密密钥安全的通知了监控前端设备。\n[0033] 成功通知监控前端设备之后,SIP服务器向媒体服务器发出带有offer3 SDP内容的INVITE呼叫,计算k的值,k=a&b&c,a=3DES/ECB/PKCS5V2.0,SHA1,指明了所用的加密算法和数字摘要算法;b=E[SEEDb,key],b为用媒体服务器的SEEDb作为密钥采用对称算法3DES/ECB/PKCS5V2.0对key做加密之后的值;c=H[b+SEEDb],c为对刚才加密的结果b和监控前端设备的种子SEEDb一起做数字摘要的值。\n[0034] (4)媒体服务器收到INVITE消息之后,首先将k值通过分割符&分解成3部分a’,b’,c’,并各自解析,用a’中获得的数字摘要算法SHA1对b’+SEEDb做数字摘要,得到的结果与c’作比较,如果不相等,证明b’的完整性被破坏,媒体服务器回SIP服务器错误;如果相等,因为只有媒体服务器知道SEEDb,所以可以证明b’的完整性。媒体服务器用SEEDb作为密钥并用a’中获得的算法3DES/ECB/PKCS5V2.0对b’做解密,获得key的值,媒体服务器向SIP服务器回复带有answer2 SDP内容的200响应,SDP中k=d&e,d=SHA1;e=H[key+SEEDb]。\n[0035] (5)SIP服务器收到媒体服务器的200 OK响应之后,将k值通过分割符&分解成\n2个部分d’,e’,并各自解析,用d’中获得的数字摘要算法对key+SEEDb做数字摘要,与e’的值进行比较,如果不相等,回媒体服务器错误消息;如果相等则证明SIP服务器明白媒体服务器已经获得了正确加密密钥key,向媒体服务器回复ACK响应。至此,SIP服务器已经将加密密钥安全的通知了媒体服务器。\n[0036] (6)SIP服务器将带有answer2 SDP内容的ACK响应回复给监控前端设备。\n[0037] (7)监控前端设备向媒体服务器传输用key为密钥的加密媒体流。\n[0038] 用对称算法保护码流解密密钥呼通客户端和媒体服务器之间3pcc的过程同呼通监控前端设备和媒体服务器之间的3pcc非常类似,这里就不再进行描述,不同的地方在于:呼通客户端和媒体服务器的时候,SIP服务器不再产生密钥,而是用呼通监控前端设备和媒体服务器时的密钥key作为解密密钥从媒体服务器传递到客户端,共享密钥由SEEDa变成了SEEDc。\n[0039] 5、用非对称算法保护码流加密密钥呼通监控前端设备和媒体服务器之间3pcc的过程如下:\n[0040] (1)SIP服务器向监控前端设备发送带offer2 SDP的INVITE消息,SIP服务器产生一个随机数key作为码流加密的密钥,计算k的值,k=A&B&C,A=RSA/ECB/PKCS1V2.1,SHA1,A指明了所用的加密算法和数字摘要算法;B=E[PUd,key],其中,E为加密运算,H为数字摘要算法,d为监控前端设备,PUd为监控前端设备的公钥,PRd为监控前端设备的私钥,B为用监控前端设备的公钥对key做加密之后的值;C=H[E[PUd,key]+SEEDa],C为对刚才加密的结果和监控前端设备的种子SEEDa一起做数字摘要的值。\n[0041] (2)监控前端设备收到INVITE消息之后,首先将k值通过分割符&分解成3部分A’,B’,C’,并各自解析,用A’中获得的摘要算法SHA1对B’+SEEDa做摘要,得到的结果与C’作比较,如果不相等,证明B’的完整性被破坏,监控前端设备回SIP服务器错误;如果相等,因为只有监控前端设备知道SEEDa,所以可以证明B’的完整性。监控前端设备用自己的私钥对B’做解密,获得key的值。因为只有监控前端设备拥有自己的私钥,所以只有监控前端设备才能获得key的值。即D[PRd,B’]=key。监控前端设备向SIP服务器回复带有offer3 SDP内容的200响应,SDP中k=D&E,D=SHA1;E=H[key+SEEDa]。\n[0042] (3)SIP服务器收到200 OK以后,将k值通过分割符&分解成2个部分D’,E’,并各自解析,用D’中获得的数字摘要算法对key+SEEDa做数字摘要,与E’进行比较,如果不相等,回监控前端设备错误消息;如果相等则证明SIP服务器明白监控前端设备已经获得了正确的key。至此,SIP服务器已经将加密密钥安全的通知了监控前端设备。成功通知监控前端设备之后,SIP服务器向媒体服务器发出带有offer3 SDP内容的INVITE呼叫,计算k的值,k=a&b&c,a=RSA/ECB/PKCS1,SHA1,a指明了所用的加密算法和摘要算法;b=E[PUs,key](注:其中E为加密运算,H为摘要算法,s为媒体服务器,PUs为媒体服务器的公钥,PRs为媒体服务器的私钥),b为用媒体服务器的公钥对key做加密之后的值;c=H[E[PUs,key]+SEEDb],c的值为对刚才加密的结果和媒体服务器的种子SEEDb一起做摘要的值。\n[0043] (4)媒体服务器收到INVITE消息之后,首先将k值通过分割符&分解成3部分a’,b’,c’,并各自解析,用a’中获得的数字摘要算法SHA1对b’+SEEDb做数字摘要,得到的结果与c’作比较,如果不相等,证明b’的完整性被破坏,媒体服务器回SIP服务器错误;如果相等,因为只有媒体服务器知道SEEDb,所以可以证明b’的完整性。媒体服务器用自己的私钥对b’做解密,获得key的值。因为只有媒体服务器拥有自己的私钥,所以只有媒体服务器才能获得key的值。即D[PRs,b]=key。媒体服务器向SIP服务器回复带有answer2SDP内容的200响应,SDP中k=d&e,d=SHA1;e=H[key+SEEDb]。\n[0044] (5)SIP服务器收到媒体服务器的200 OK响应之后,将k值通过分割符&分解成\n2个部分d’,e’,并各自解析,用d’中获得的数字摘要算法对key+SEEDb做数字摘要,与e’的值进行比较,如果不相等,回媒体服务器错误消息;如果相等则证明SIP服务器明白媒体服务器已经获得了正确加密密钥key,向媒体服务器回复ACK响应。至此,SIP服务器已经将加密密钥安全的通知了媒体服务器。\n[0045] (6)SIP服务器将带有answer2 SDP内容的ACK响应回复给监控前端设备。\n[0046] (7)监控前端设备向媒体服务器传输以key为密钥的加密媒体流。\n[0047] 用非对称算法保护码流解密密钥呼通客户端和媒体服务器之间3pcc的过程同呼通监控前端设备和媒体服务器之间的3pcc非常类似,这里就不再进行描述,不同的地方在于:呼通客户端和媒体服务器的时候,SIP服务器不再产生密钥,而是用呼通监控前端设备和媒体服务器时的密钥key作为解密密钥从媒体服务器传递到客户端。共享密钥由SEEDa变成了SEEDc。使用客户端设备的公私钥而不是监控前端设备的公私钥。\n[0048] 通过以上对称算法保护密钥或者非对称算法保护密钥传递都可以完成密钥的安全实时传递,安全性的不同取决与对称算法和非对称算法本身的安全强度。\n[0049] 本发明所述一种SIP视频监控系统加解密码流密钥分发方法的密钥分发是在用户点播加密码流时实时分发的;密钥分发是一次一密的;具有码流加密能力的监控前端设备和具有码流解密能力的客户端设备均不需存储加/解密密钥;基于数字证书的设备注册双向认证时获得的SEED作为设备与SIP服务器之间的预共享密钥;视频点播的3pcc过程中采用对称算法或非对称算法保护密钥过程。\n[0050] 本发明所述一种SIP视频监控系统加解密码流密钥分发方法对SDP消息体的key字段的启用和定义如下:\n[0051] 1)将INVITE消息SDP中的k的值分为三个部分。第一部分:本次使用的算法和模式,一种为对称算法和数字摘要算法,两者之间用逗号分隔;另外一种为非对称算法和数字摘要算法,两者之间用逗号分隔;第二部分:受保护的密钥密文信息;第三部分:对第二部分密文和设备SEED做数字摘要得到的摘要信息。每部分之间用&分隔。\n[0052] 2)将200 OK消息SDP中的k的值分为两个部分,第一部分为:本次使用的算法和模式;第二部分为:数字摘要信息。\n[0053] 本发明所述一种SIP视频监控系统加解密码流密钥分发方法在设备注册时采用了基于数字证书的双密钥认证机制,身份认证的同时传递共享密钥SEED,其安全强度等同于所采用的数字证书的安全强度。该认证是双向认证,由于在证书安全强度内攻击者无法仿造有效的证书,因而可以抵抗仿冒设备或服务器注册攻击。用户点播加密视频时的两个\n3pcc过程中使用的共享密钥SEED,由于SEED的获取是由证书保障的,所以SEED交换时的私密强度等同证书安全强度。在对称算法保护密钥的过程中,B=E[SEED,key],由于SEED是安全私密的,B的安全强度等同于对称算法的安全强度。由于只有知道SEED的设备才能获得正确的key,所以可以抵抗设备仿冒攻击。C=H[E[SEED,key]+SEED],如果有攻击者做中间人攻击,自己构造了加密数据,并且分析得出了k字段的数据结构,但因为不知道SEED所以通过摘要验证很快就会发现加密数据B的完整性被破坏了,所以可以抵抗中间人攻击。设备回SIP服务器200 OK时,E=H[key+SEED],SIP服务器通过对数字摘要结果的比对,可以明确知道设备是否获得了正确的码流加/解密密钥,如果设备没有正确获得,那么本次点播到这里就可以因为出错而结束,不会等到播放时不能播放才结束,提高了系统性能。在非对称算法保护密钥的过程中,B=E[PUd,key],B的安全强度为数字证书的安全强度,只有具有设备私钥才可以解密该数据,而私钥在数字证书安全强度内是不可伪造的,因此可以抵抗设备仿冒攻击。C=H[E[PUd,key]+SEED],如果有攻击者做中间人攻击,自己构造了加密数据,并且分析得出了k字段的数据结构,但因为不知道SEED所以通过摘要验证很快就会发现加密数据B的完整性被破坏了,可以抵抗中间人攻击。设备解出key值后向SIP服务器回200 OK的时候,E=H[key+SEED],SIP服务器通过对摘要结果的比对,可以明确知道设备是否获得了正确的码流加/解密密钥,如果设备没有正确获得,那么本次点播到这里就可以因为出错而结束,不会等到播放时不能播放才结束,提高了系统性能。在\n3pcc呼叫控制过程中,用随机数key作为码流加/密密钥,每次点播都产生不同的密钥,所以做到了密钥在一次点播过程中的一次一密,可以抵抗重放攻击。因为在点播时实时分发,监控前端和客户端均不需存储密钥,消除了密钥多处存储的安全风险。\n[0054] 本发明不限于上述实施例,对于本领域技术人员来说,对本发明的上述实施例所做出的任何改进或变更都不会超出仅以举例的方式示出的本发明的实施例和所附权利要求的保护范围。
法律信息
- 2012-12-12
- 2010-08-11
实质审查的生效
IPC(主分类): H04N 7/16
专利申请号: 200910260084.1
申请日: 2009.12.24
- 2010-06-09
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2007-04-18
|
2005-02-28
| | |
2
| |
2007-02-14
|
2006-09-05
| | |
3
| | 暂无 |
2007-09-10
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |