1.一种适于付费电视系统的基于密钥管理的访问控制方法,其特征在于,所述访问控制方法包括:
S1:接收用户发送的订阅请求,所述订阅请求中包括加密后的用户身份信息和该用户请求订阅的电视节目的索引;
S2:根据用户请求订阅的电视节目信息对用户进行分类,生成请求汇总表,所述请求汇总表中包括若干个用户子集,每个用户子集包括至少一个用户身份信息;
S3:针对每个用户子集生成其所独有的会话密钥;
S4:采用用户协商出的组加密密钥对每个用户子集的会话密钥进行加密,将会话密钥的密文发送至相应的用户子集所包含的所有用户;
S5:采用会话密钥和对称加密算法对电视节目数据进行加密,将加密后的电视节目数据和该电视节目所对应的合法用户的身份信息上传至云服务器;
所述方法还包括:
当任意一个视频网站的用户信息发生变更时,该视频网站的所有用户采用密钥协商技术协商出新的组加密密钥和各自的解密密钥,公开新的组加密密钥,并且更新会话密钥;
视频网站的所有用户采用密钥协商技术协商出组加密密钥和各自的解密密钥的过程包括以下步骤:
对系统进行初始化,生成并公开系统参数 其中,p为大质数, 为所有小于p的正整数的集合,G1,GT为两个p阶的循环群,代表G1,GT之间的双线*
性映射,P是G1的生成元,H代表不同的哈希函数H1:{0,1} →G1, H3:GT→G1,m和n分别为电视节目和用户的数量;
每个用户Ui选择一个随机数 计算qi=H2(UIDi||xi)并公开Qi=qi·P;
每个用户Ui选取两个随机数 计算ηi=H2(SP||UIDi||yi)和Di=H1(UIDi||zi),保存ηi为私有,公开Di,其中,0
对0
每个用户计算自己的解密密钥为DKi=DKi,i+∑0
用户Ui选取随机数 计算Xi=(ρi·ηi+(1‑ρi)·qi)·P,Yi=((1‑ρi)·ηi+ρi·qi)·P和Zi=αi·P;
令组加密密钥为GEK=((X1,Y1,Z1),(X2,Y2,Z2),…,(Xn,Yn,Zn)),公开组加密密钥GEK;
所述针对每个用户子集生成其所独有的会话密钥的过程包括如下步骤:在G1和 里分别选择m+1个随机元素,计算 令每个电视节目对应的子会话密钥为
根据请求汇总表,为每个用户子集生成会话密钥Ω=∑i∈(cj)mod m+1,j∈SΩi,其中为只有视频网站管理者可知的大质数,S为所有订阅节目SP的用户的集合。
2.根据权利要求1所述的适于付费电视系统的基于密钥管理的访问控制方法,其特征在于,所述任意一个视频网站的用户信息发生变更包括:出现新的订阅用户,和/或任意一个已有订阅用户请求退出。
3.根据权利要求1所述的适于付费电视系统的基于密钥管理的访问控制方法,其特征在于,步骤S5中,所述采用会话密钥和对称加密算法对电视节目数据进行加密,将加密后的电视节目数据和该电视节目所对应的合法用户的身份信息上传至云服务器包括以下步骤:视频网站管理者根据对称加密算法中的密钥生成技术,和云服务器协商生成各自的公钥和私钥;
视频网站管理者采用自身私钥和云服务器的公钥,对加密后的电视节目数据和该电视节目所对应的合法用户的身份信息再次进行签名加密,将加密结果上传至服务器。
4.根据权利要求3所述的适于付费电视系统的基于密钥管理的访问控制方法,其特征在于,所述方法还包括:
所述云服务器对加密结果进行解密,获取加密后的电视节目数据的密文和该电视节目所对应的合法用户的身份信息,生成数据存储表。
5.根据权利要求4所述的适于付费电视系统的基于密钥管理的访问控制方法,其特征在于,所述方法还包括:
所述云服务器响应于接收到用户发送的访问请求,所述访问请求中包括请求访问的电视节目数据和用户的身份信息,根据数据存储表以判断该用户是否为该电视节目数据所对应的合法用户,如果是,返回其请求访问的电视节目数据的密文。
6.根据权利要求1所述的适于付费电视系统的基于密钥管理的访问控制方法,其特征在于,所述方法还包括:
当任意一个用户Ut请求退出时,所述视频网站的所有用户采用密钥协商技术协商出新的组加密密钥和各自的解密密钥的过程包括以下步骤:选择随机数 计算并公开
选取两个随机数 保存 为私有,公开选择一个随机数 计算 并公开
选取随机数 计算并公开
和
通知用户对组加密密钥和解密密钥进行更新,接收更新后的组加密密钥;
将会话密钥更新为 其中 为一个新的随机数。
7.根据权利要求1所述的适于付费电视系统的基于密钥管理的访问控制方法,其特征在于,当出现新的订阅用户Un+1时,所述视频网站的所有用户采用密钥协商技术协商出新的组加密密钥和各自的解密密钥的过程包括以下步骤:用户Un+1选取随机数 计算qn+1=H2(UIDn+1||xn+1)并公开Qn+1=qn+1·P;选取随机数 计算ηn+1=H2(SP||UIDn+1||yn+1)和Dn+1=H1(UIDn+1||zn+1),保存ηn+1为私有,公开Dn+1,0
对0
每个用户计算自己的解密密钥为DKi=DKi,i+∑0
用户Un+1选取随机数 计算Xn+1=(ρn+1·ηn+1+(1‑ρn+1)·qn+1)·P,Yn+1=((1‑ρn+1)·ηn+1+ρn+1·qn+1)·P和Zn+1=αn+1·P;
将组加密密钥更新为GEK=((X1,Y1,Z1),(X2,Y2,Z2),…,(Xn,Yn,Zn),(Xn+1,Yn+1,Zn+1)),公开组加密密钥GEK;
将会话密钥更新为 其中 为一个新的随机数,S为与用户Un+1订阅了相同节目的用户的集合。