发明名称 一种SIP视频监控系统加解密码流密钥分发方法
摘要 本发明公开了一种SIP视频监控系统加解密码流密钥分发方法,其在呼通具有码流加密能力的监控前端设备和具有码流解密能力的客户端设备之间的3pcc过程中,或者在呼通具有码流加密能力的监控前端设备和媒体服务器的3pcc,呼通具有码流解密能力的客户端设备和媒体服务器之间的3pcc,这两个3pcc过程中,利用监控前端设备、媒体服务器、客户端设备在注册时身份认证过程获得的seeda、seedb、seedc作为与SIP服务器之间的共享密钥和身份标识,通过扩展SIP信令消息体SDP的内容来携带加/解密密钥,采用对称算法或者非对称算法来保障加/解密密钥传输的安全;本发明的有益效果是每次点播都产生不同的密钥,大大提高了安全系数,可以抵抗重放攻击。消除了密钥多处存储的安全风险。
申请公布号 CN101729854A 申请公布日期 2010.06.09
申请号 CN200910260084.1 申请日期 2009.12.24
申请人 公安部第一研究所;北京中盾安全技术开发公司 发明人 栗红梅;房子河;崔云红;郅晨;张俊业;何青林;王鑫;张本锋;樊志英
分类号 H04N7/16(2006.01)I;H04N7/173(2006.01)I;H04L9/32(2006.01)I;H04L9/08(2006.01)I;H04L29/06(2006.01)I 主分类号 H04N7/16(2006.01)I
代理机构 北京中海智圣知识产权代理有限公司 11282 代理人 齐晓静
主权项 一种SIP视频监控系统加解密码流密钥分发方法,其特征在于:包括以下步骤:(1)、基于数字证书的设备注册双向认证获得共享密钥seed的过程;在基于数字证书的设备注册双向认证获得共享密钥的过程中,仍然采用了RFC3261中定义的REGISTER消息基于挑战的认证过程;当SIP服务器收到设备发送的REGISTER消息时,产生一个随机数SEED,并且计算nonce的值,通过401错误消息将nonce值发送到设备端,nonce=A&B(&为字符串连接分割符),A=E[PRs,H(From+To+Call-ID+Contact+SEED)],其中,+为字符串连接符;H为Hash运算,B=E(PUd,SEED),其中,E为加密运算;注册服务器为s,注册服务器的公钥为PUs,私钥为PRs;设备为d,设备的公钥为PUd,设备的私钥为PRd;当设备收到SIP服务器返回的401消息后,用自己的私钥解密B值,得到SEED——D(PRd,B)=D[PRd,E(PUd,SEED)]=SEED,然后计算H(From+To+Call-ID+Contact+SEED),再利用计算的结果和用SIP服务器公钥解密的结果D[PUs,E[PRs,H(From+To+Call-ID+Contact+SEED)]]相比较;如果相同,则证明SEED值来自于公钥为PUs的SIP服务器,因为只有拥有相应私钥的SIP服务器才可以对该SEED进行数字签名,从而认证了注册服务器,此时,设备再计算response值,response=H(nonce+SEED),并将该值作为第二个REGISTER注册消息的response值发送到SIP服务器端;当SIP服务器端收到来自设备的第二个注册消息时,用自己保存的该设备的SEED与消息体中的nonce一起做摘要即H(nonce+SEED),用该值和设备发来的response值做比较;如果相同,说明该消息来自公钥为PUd的设备,因为只有拥有PRd的设备才可以解开B=E(PUd,SEED)获得相应SEED;至此SIP服务器也对设备做了认证,此后SIP服务器就可以向设备发送注册成功的消息200OK;(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服务器做了认证,计算response值,response=H(nonce&SEED)。设备重新以H(nonce&SEED)为response值发送register消息;d).SIP服务器收到注册请求,用自己保存的发送给该设备的SEED计算H(nonce&SEED),将计算结果和设备发送来的response做比较,相同时说明是相应设备发来的信令,即对设备做了认证,如果验证通过,SIP服务器则发送“200OK”到设备,至此,设备上线注册成功;(3)、密钥实时分发过程;基于数字证书的设备身份认证完成之后,监控前端设备和SIP服务器之间有了共享密钥seeda,媒体服务器和SIP服务器之间有了共享密钥seed b,客户端和SIP服务器之间有了共享密钥seedc,当用户点播监控前端设备的加密码流到客户端播放时,SIP服务器首先呼通监控前端设备,然后再呼通客户端设备,在两个3pcc过程中完成密钥的实时分发,对RFC4566中定义的信令消息体SDP做如下扩展:a)将Invite消息SDP的k的值分为三个部分:第一部分是本次使用的算法和模式,一种为对称算法和摘要算法,两者之间用逗号分隔;另外一种为非对称算法和摘要算法,两者之间用逗号分隔;第二部分是受保护的密钥密文信息;第三部分是对第二部分密文和设备SEED做摘要得到的摘要信息,每部分之间用&分隔;b)将200OK消息SDP的k的值分为两个部分,第一部分为本次使用的算法和模式;第二部分为摘要信息;(4)、用对称算法保护码流加密密钥呼通监控前端设备和媒体服务器之间3pcc的过程如下:a)SIP服务器向监控前端设备发送带offer2 sdp的INVITE消息,SIP服务器产生一个随机数key作为码流加密的密钥,计算k的值,k=A&B&C,其中,&为字符串连接分割符,A=3DES/ECB/PKCS5,SHA1,A指明了所用的加密算法和摘要算法;B=Eseeda[key],其中,E为加密运算,B为用监控前端设备的seeda作为密钥采用对称算法3DES/ECB/PKCS5对key做加密之后的值;C=H[Eseeda[key]+seeda](H为摘要算法),C为对刚才加密的结果和监控前端设备的种子seeda一起做摘要后的值;b)监控前端设备收到INVITE消息之后,首先将k值分解成3部分A’,B’,C’,并各自解析,用A’中获得的摘要算法SHA1对B’+seeda做摘要,得到的结果与C’作比较,如果不相等,证明B’的完整性被破坏,监控前端设备回SIP服务器错误;如果相等,因为只有监控前端设备知道seeda,所以可以证明B’的完整性,监控前端设备用seeda作为密钥并用A’中获得的算法3DES/ECB/PKCS5对B’做解密,获得key的值,监控前端设备向SIP服务器回复带有offer3 SDP内容的200响应,sdp中k=D&E,D=SHA1;E=H[key+seeda];c)SIP服务器收到200OK以后,将k值分解成2个部分D’,E’,并各自解析,用D’中获得的摘要算法对key+seeda做摘要,与E’的值进行比较,如果不相等,回监控前端设备错误消息;如果相等则证明SIP服务器明白监控前端设备已经获得了正确的key,到这里,SIP服务器将加密密钥安全的通知了监控前端设备;成功通知监控前端设备之后,SIP服务器向媒体服务器发出带有offer3 SDP内容的INVITE呼叫,计算k的值,k=a&b&c,a=3DES/ECB/PKCS5,SHA1,指明了所用的加密算法和摘要算法;b=Eseedb[key],b为用媒体服务器的seedb作为密钥采用对称算法3DES/ECB/PKCS5对key做加密之后的值;c=H[Eseedb[key]+seedb],c为对刚才加密的结果和监控前端设备的种子seedb一起做摘要的值;d)媒体服务器收到INVITE消息之后,首先将k值分解成3部分a’,b’,c’,并各自解析,用a’中获得的摘要算法SHA1对b’+seedb做摘要,得到的结果与c’作比较,如果不相等,证明b’的完整性被破坏,媒体服务器回SIP服务器错误;如果相等,因为只有媒体服务器知道seedb,所以可以证明b’的完整性,媒体服务器用seedb作为密钥并用a’中获得的算法3DES/ECB/PKCS5对b’做解密,获得key的值,媒体服务器向SIP服务器回复带有answer2 SDP内容的200响应,sdp中k=d&e,d=SHA1;e=H[key+seedb];e)SIP服务器收到媒体服务器的200OK响应之后,将k值分解成2个部分d’,e’,并各自解析,用d’中获得的摘要算法对key+seedb做摘要,与e’的值进行比较,如果不相等,回媒体服务器错误消息;如果相等则证明SIP服务器明白媒体服务器已经获得了正确加密密钥key,向媒体服务器回复ACK响应;至此,SIP服务器已经将加密密钥安全的通知了媒体服务器;f)SIP服务器将带有answer2SDP内容的ACK响应回复给监控前端设备;g)监控前端设备向媒体服务器传输用key为密钥的加密媒体流。
地址 100048 北京市海淀区首都体育馆南路1号