专利名称:一种验证许可的方法和设备的制作方法
技术领域:
本发明涉及数字版权管理(DRM)领域,尤其涉及一种验证许可的方法和 设备。
背景技术:
数字版权管理(Digital Rights Management, DRM)主要通过权限控制和 内容保护方案控制数字内容的使用,保护内容所有者的合法权益。数字内容发 行者(Content Issuer, CI)用内容加密密钥(Content Encryption Key, CEK) 对数字内容进行加密后打包为内容数据包。许可服务器(Rights Issuer, RI)负 责分发与数字内容相对应的许可(Rights Object, RO),其中包括加密的CEK 和对应的权限及限制。设备(DRMAgent)只有同时拥有内容数据包和许可, 才能按照许可中的权限和限制消费所购买的数字内容。设备利用自己的私钥解 密得到CEK,进而解密数字内容,并根据许可证中的权限信息控制用户对数字 内容的具体使用。
设备收到一个许可后,必须先验证该许可的有效性,然后才安装该许可。 验证过程包括了如下步骤
1,设备在自身存储的RI信息上下文(RI Context )内搜索与许可内的々ilD〉 元素相匹配的RI ID (RI标识符,即对RI证书内包含^^钥的p合希值);
2 ,如果找到匹配的RI ID,设备用该RI ID对应的RI公钥来验证许可中 的签名元素(即roap:ROPayload内的〈signature〉元素);
3,如果未找到匹配的RI ID,设备根据许可内的riURL请求注册到RI, 获得RI当前的证书,设备检查证书的RIID是否与许可内的々ilD〉元素相匹酉己, 如果匹配,设备使用证书中的RI公钥来验证许可中的签名元素。如果设备检查RI当前证书内的RI ID与许可内的〈rilD〉元素不匹配,即上
述验证许可没通过,则设备不能安装许可,并可通知用户。
发明人发现,RI的证书到期更新后,可能会造成RI以前签发的许可内的 签名无法被设备验证,导致设备无法安装许可。其主要原因在于有些设备在 RI证书更新之前没有在该RI注册,所以设备没有RI以前的证书,无法验证 RI所签发许可中包括的跟以前证书对应的签名。
^明内容
本发明实施例提供一种验证许可的方法和一种相应的设备和许可服务器, 使得即使在RI因证书过期发生更新之后,RI在证书过期之前所创建的许可仍 然能够被设备接受和使用。
本发明实施例提供一种验证许可的方法,包括设备与许可服务器RI交 互获取RI的历史公钥;根据所述RI的历史公钥验证所述许可。
一种更新许可的方法,包括设备判断许可由与RI历史证书相对应的私 钥所签发而需要更新;向许可服务器RI发送许可更新请求,所述许可更新请 求中包括一个或者多个所述许可或者许可标识;接收RI返回的许可更新响应, 响应消息中包括新的许可。
一种验证许可的方法,包括设备向RI发送确认请求,所述确认请求中 包含一个或者多个许可或者许可标识;接收RI返回的确认声明;设备根据所 述确认声明验证所述许可。
相应的,本发明实施例提供一种设备,包括公钥获取模块,验证模块;其 中公钥获取模块,用于与许可服务器RI交互获取RI的历史公钥;验证模块, 用于根据所述RI的历史公钥验证所述许可。
一种设备,包括判断模块,发送模块,接收模块;其中判断模块,用于 判断许可由与RI历史证书相对应的私钥所签发而需要更新;发送模块,用于 向许可服务器RI发送许可更新请求,所述许可更新请求中包括一个或者多个 所述许可或者许可标识;接收模块,用于接收RI返回的许可更新响应,响应消息中包括新的许可。
一种设备,包括发送模块,接收模块,验证模块;其中发送模块,用于 向RI发送确认请求,所述确认请求中包含一个或者多个许可或者许可标识; 接收模块,用于接收RI返回的确认声明;验证模块,用于根据所述确认声明 -睑i正所述i午可。
一种许可服务器,包括接收模块,发送模块;其中接收模块,用于接收 设备发送的请求获取历史证书链或历史公钥或许可确认声明的请求消息;发送 模块,用于根据所述请求消息向设备返回历史证书链或历史公钥或许可确认声明。
一种许可服务器,包括接收模块,发送模块;其中接收模块,用于接收 设备发送的包含许可或许可标识的更新请求;发送模块,用于根据所述更新请 求生成新的许可并返回给设备,所述新许可中包含RI的新标识符以及使用新 的RI私钥产生的签名。
内的签名无法验证、无法安装的问题。设备可以通过获取所需的RI历史证书 链或历史公钥,或者请求RI更新许可,或提供许可确认声明,达到验证、安 装这种许可的目的。这使得RI因为发生证书过期等原因需要更新时,仍可确 保设备以前购买的许可得到承认和使用,确保RI平滑过渡。
图1为本发明实施例的设备获取RI公钥的流程示意图2为本发明实施例的设备直接获取证书链的流程示意图3为本发明实施例的另 一获取RI公钥的流程示意图4为本发明实施例的设备的结构示意图5为本发明实施例的设备更新许可的流程示意图6为本发明实施例的另一设备的结构示意图7为本发明实施例的设备获取确认声明的流程示意图;图8为本发明实施例的另一设备的结构示意图9为本发明实施例的许可服务器的结构示意图10为本发明实施例的另一许可服务器的结构示意图。
具体实施例方式
为了使本技术领域的人员更好地理解本发明,下面结合附图对本发明作进 一步的详细说明。
本发明的一个实施例是一种验证许可的方法,包括当设备判断无法使用 许可服务器RI当前有效证书内包含的公钥来验证许可内的签名;与许可服务 器RI交互获取RI的历史公钥;根据所述RI的历史公钥验证所述许可。
当RI证书过期更新之后,由设备直接获取RI历史公钥;或者获取所需的 RI历史证书,历史证书内包括了历史公钥;或者获取历史证书链,历史证书链 内包含了所需的历史证书。从而使得设备可以验证许可内的RI签名。为保持 对现有标准的兼容,可以通过扩展现有的ROAP 4-pass Registration Protocol来 实现。附图1所示的是本发明一个实施例的-睑证许可的流程示意图。包括
Sll,设备收到RO后,在自身存储的RI Context内找不到与许可内的々ilD〉 元素相匹配的RI ID,根据许可内包含的riURL地址向RI发起连接请求;
S12,设备收到RI返回的一个注册ROAP触发器,触发器中包含了RI当 前的RIID,设备比较触发器中的RIID与许可内的RIID是否匹配,如果匹配, 设备无需通过注册协议获取RI历史证书链;如果不匹配,则还需要向RI请求 与许可中RI ID对应的RI历史证书4连;
513, 设备收到触发器后,向RI发送Device Hello消息;
514, 设备接收RI发送的RI Hello消息;
S15,设备向RI发送注册请求消息;根据S12中的比较结果,如果不需要 RI历史证书链,则按照现有的注册协议进行处理;如果需要RI历史证书链, 则在注册请求消息中还要包含请求历史证书链的标识;例如,注册请求消息中 包括如下参数参数含义
Flag for history CC请求历史证书链的标识
S16,设备收到RI返回的注册响应消息,RI根据收到的注册请求消息中 的参数,在注册响应消息携带全部的历史证书链;设备处理注册响应消息得到 RI的历史证书链,在这些证书链中找到与许可中RIID相匹配的证书,进而得 到证书中的RI公钥用来来验证许可中的签名元素。
本发明的另一个实施例是在上述S15中,设备也可以不请求获取全部历史 证书链,而是请求获取与许可中RI ID相匹配的证书链,例如,注册请求消息 中包括如下参数
参数含义
Flag for RI ID history CC请求与RI ID相匹配的历史证书链的标识
RI ID需验证的许可中的RI ID
这样,在S16中,RI根据上述注册请求消息中的参数在响应消息中只要携 带与RIID对应的证书链,而不必携带全部的历史证书链,提高了处理速度和 通信效率。
本发明的另一个实施例是,在上述步骤Sll和S12后,设备判断许可内包 含的RIID和S12中触发器中的RI当前RIID的对应关系,并且设备已有跟触 发器中RI ID —致的有效RI Context;或者也可以通过比较许可内riURL与设 备本地保存的有效RI Context内所包括的riURL (或者比较riURL的Fully Qualified Domain Name )是否匹配,如果找到匹配则可以-〖人为已经注册到相应 的RI,但又判断出RI Context内包含的RI ID和许可内包含的RI ID不同。这 些情况下设备不需上述的S13-S16,而是直接向RI请求与许可中RI ID相对 应的证书链,参见附图2所示,包括
521, 设备直接向许可内包含的riURL上发送获取证书链的请求消息,消 息内包括所述许可中的RI ID;
522, RI处理请求消息,如果请求消息中包括的RI ID确实为自己正在使
用或者曾经使用过的RIID,在响应中包括相应的证书链,返回给设备。设备在收到请求的RI证书链(或者RI公钥)后,用来验证许可内的RI签名。
本发明的另一个实施例是,如果设备仅希望获取所需RI证书链来验证一 下许可内的RI签名,则可以省略注册过程,也无须验证设备是否已在RI注册 过,直接向RI发送获取证书链的请求消息并由RI返回证书链,具体不再赘述。
本发明的另一个实施例是RI在不同的证书有效期采用不同的riURL,这 样,不同的证书有效期签发的许可内的riURL就不同,设备收到许可后向许可 内包含的riURL发起请求,RI收到请求后在响应消息内携带与riURL对应的 RI历史证书链,设备不需要在请求消息中包含获取RI历史证书链的标识。或 者,设备-睑证许可时发现本地没有该RI对应的有效RI上下文,则向许可中包 含的riURL发送HTTP GET请求,RI收到请求后判断该riURL对应的RO是 使用历史公钥签名的,则向设备发送触发器触发设备到新的RIID注册,并 在注册响应中携带历史证书链;或者向设备发送触发器触发设备直接向RI发 送请求获取RI历史证书链。实施例流程可以参见附图3。
设备将收到RI返回的历史证书链存储在RI Context内或其他地方,以便 设备后续验证其他许可使用。如果触发器和许可内的两个RIID不相同,设备 可以保存或緩存这两个RI ID的对应关系,可以体现RI现有证书和RI过期证 书之间的关联,即它们所绑定的实体都是指向目前的RI。这种对应信息可以由 设备在以后使用。设备在验证许可时判断没有许可中RIID对应的有效上下文 后,可在设备中现有的有效RI上下文中查找,是否存在某一有效RI上下文中 的RI历史证书链包含该RI ID对应的证书链,如果有,则使用该证书链对许可 进行验证,否则可根据riURL向RI发起注册请求。
本发明的另 一个实施例为实现上述验证许可的设备,包括公钥获取模块, 验证模块;其中
公钥获取模块用于与许可服务器RI交互获取RI的历史公钥;
验证模块用于根据所述RI的历史公钥验证所述许可。本发明的另一个实施例是一种更新许可的方法,包括设备判断许可需要 更新;向许可服务器RI发送许可更新请求,所述许可更新请求中包括所述许 可或者许可标识;接收RI返回的许可更新响应,响应消息中包括新的许可。
具体的,本发明的另一个实施例是设备通过向RI发出请求,由RI更新许 可,设备在信任RI的基础上接受许可。当RI证书过期更新之后,设备进行按 需更新,即当设备需要转移或共享许可给其他设备时,向RI提交许可更新请 求,RI更新许可中的RI ID为当前正在使用的RI ID,并将原有使用老RI私钥 的签名更新为使用新RI私钥对许可的签名。设备收到更新的许可后,可以用 当前的RI证书验证签名,接受更新后的许可。具体如图5所示,包括.'
S51,设备收到许可之后,可以采用与前述实施例相同的方法,确定新旧 RI ID之间的对应关系,并根据新RI ID查找到相应的有效RI Context,从而确 定所述RI。设备向所述RI发送许可更新请求,请求消息中包括许可(如果为 有状态许可,还需要包括状态信息),在一个请求内可以封装所有需要更新的 许可,请求消息中还可以包括许可更新指示信息,如果设备在向RI发送许可 更新请求前,获知RI已经保存所述许可的发行记录,则在所述许可更新请求 中可以仅包括许可标识。
S52, RI收到请求消息后,才艮据其中的许可更新指示信息,将请求消息中 包含的许可中的RI ID更新为与RI当前有效证书对应的新的RI ID,并用RI 当前有效证书对应的私钥来产生签名,RI向设备返回许可更新响应,响应消息 中包含了更新后的许可;如果许可更新请求中还包括许可状态信息,新的许可 中还要包含RI根据所述状态信息更新后的权限信息。
设备收到响应消息后,用RI Context中保存的RI公钥进行验证更新后许 可内的签名。
本发明的另一个实施例为实现上述更新许可的设备,如图6所示,包括判 断模块,发送模块,接收模块;其中
判断模块,用于判断许可由与RI历史证书相对应的私钥所签发而需要更新;
发送模块,用于向许可服务器RI发送许可更新请求,所述许可更新请求
中包括一个或者多个所述许可或者许可标识;
接收^^莫块,用于接收RI返回的许可更新响应,响应消息中包括新的许可。
本发明的另一个实施例是一种验证许可的方法,包括设备向RI发送确 认请求,所述确认请求中包含一个或者多个许可;接收RI返回的确认声明; 设备根据所述确认声明验证所述许可。
设备请求RI对自己以前签发的许可提供一个确认声明,当设备收到确认 声明之后,不再验证许可内的RI签名,只需验证对RO确认声明内的RI签名 即可。本发明的另一个实施例如图7所示,包括
S71,设备向RI发送确认请求消息,请求消息中包含请求和需要确认的许 可,许可可以有多个,如果设备在向RI发送确认请求前,获知RI已经保存所 述许可的发行记录,则在所述许可更新请求中可以Y又包括许可标识。例如,确 认请求消息中包括如下参数
参数含义
OneTokenForMultipleROs请求确认声明标识
IntendedForOthers需要转移给其他设备标识
RO Info需要确认的许可
S72, RI收到确认请求消息后,根据请求确认声明标识,对请求消息内所 有需要确认的许可产生一个有效性确认声明,对由该RI所签发的许可将产生 一个确认声明;或者,为每个该RI所签发的许可产生一个有效性确认声明。 RI返回给设备确认响应消息,响应消息中包含一个或者多个RO有效性声明 (Confirm Token )。 一个有效性声明可以是一个筒单的表明确认成功与否的信 息,或者包括如下参数 一或多个目标许可的许可标识(ROID),许可内包括 的RIID,确认声明的序列号、创建时间、有效期,其中之一或者任意组合, 以及RI对该确认声明的签名等。如果设备希望将许可转移给其他设备安装使 用,将确认请求消息中需要转移给其他设备标识值设置为1,则RI返回的确认声明中还需要包括许可的哈希值,其他设备可以用许可的哈希值来验证接收的 许可未一皮篡改。
设备在获取Confirm Token后,接受Token中包括的ROID所对应的所有 许可,并且不再要求验证这些许可中的RI签名的有效性,设备可以安装目标 许可,也可以将有效性声明作为许可转移(Move)的一部分信息传送给接收 方设备,让接收方能够安装该许可。
本发明的另 一个实施例是,RI在返回给设备的确认响应消息中,将Confirm Token作为许可的一部分嵌入到许可内,将许可封装在确认响应消息中返回给 设备,设备接收许可之后,其中包括的Confirm Token作为许可由该RI所签发 的证明。
本发明的另一个实施例为实现上述验证许可的设备,如附图8所示,包括 发送模块,接收模块,验证模块;其中
发送模块,用于向RI发送确认请求,所述确认请求中包含一个或者多个 许可或者许可标识;
接收模块,用于接收RI返回的确认声明;
验证模块,用于根据所述确认声明验证所述许可。
本发明的另 一个实施例为 一种许可服务器,如图9所示,包括接收模块, 发送模块;其中
接收模块,用于接收设备发送的请求获取历史证书链或历史公钥或许可确 认声明的请求消息;
发送模块,用于根据所述请求消息向设备返回历史证书链或历史公钥或许 可确认声明。
本发明的另一个实施例为一种许可服务器,如图10所示,包括接收模块, 发送模块;其中-.
接收模块,用于接收设备发送的包含许可或许可标识的更新请求; 发送模块,用于根据所述更新请求生成新的许可并返回给设备,所述新许可中包含新的RI标识符以及使用新的RI私钥产生的签名。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发 明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及 其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1、一种验证许可的方法,其特征在于,包括设备与许可服务器RI交互获取RI的历史公钥;根据所述RI的历史公钥验证许可。
2、 如权利要求l所述的方法,其特征在于,在所述设备与许可服务器RI 交互获取RI的历史公钥之前,还包括设备判断无法使用RI当前有效公钥来验证许可内的签名。
3、 如权利要求2所述的方法,其特征在于,所述设备判断无法使用RI当 前有效公钥来验证许可内的签名具体包括设备向许可内包含的RI统一资源定位器riURL发送请求; 收到RI发送的注册触发器;判断注册触发器中包含的RI标识符与所述许 可中包含的RI标识符不匹配。
4、 如权利要求l所述的方法,其特征在于,所述与许可服务器RI交互获 取RI的历史公钥具体包括向RI发送请求消息请求获取历史公钥; 接收RI返回的历史公钥。
5、 如权利要求4,所述向RI发送请求消息请求获取历史公钥具体为注册 请求消息,所述注册请求消息中包含如下参数请求历史公钥的标识,或者所 述许可中包含的RI标识符。
6、 如权利要求l所述的方法,其特征在于,所述与许可服务器RI交互获 取RI的历史公钥具体包括设备向许可内包含的RI统一资源定位器riURL发送请求; 接收RI返回的与所述riURL对应的RI历史公钥。
7、 如权利要求6所述的方法,其特征在于,所述接收RI返回的与所述riURL 对应的RI历史^^钥具体包括接收RI返回的注册触发器,设备向所述RI注册,并接收RI返回的包含RI历史公钥的注册响应;或,接收RI返回的触发器,设备直接向RI请求历史公钥,接收RI返回的历 史公钥。
8、 如权利要求1所述的方法,其特征在于,设备将从RI获取的RI历史 公钥保存在本地,验证许可时根据本地保存的RI历史公钥验证许可。
9、 如权利要求1 - 8任一项所述的方法,其特征在于,所述获取RI的历 史公钥具体为获取RI的历史证书或历史证书链,RI历史证书内包含RI的历 史公钥。
10、 如权利要求1 - 8任一项所述的方法,其特征在于,所述获取的RI历 史公钥包括所有的RI历史公钥或者与许可中包含的RI标识符相匹配的历史公 钥。
11、 一种更新许可的方法,其特征在于,包括向许可服务器RI发送许可更新请求,所述许可更新请求中包括一个或者 多个所述许可或者许可标识;接收RI返回的许可更新响应,响应消息中包括新的许可。
12、 如权利要求11所述的方法,其特征在于,所述许可更新请求中还包 括许可状态信息;所述新的许可中包含了 RI根据所述状态信息更新后的权限"息。
13、 如权利要求11所述的方法,其特征在于,所述设备向RI发送许可更 新请求前,根据从RI获取所述许可中包含的老RI标识符和新RI标识符的对 应关系来确定所述RI。
14、 如权利要求13所述的方法,其特征在于,所述设备从RI获取所述许 可中包含的老RI标识符和新RI标识符的对应关系具体包括设备在RI返回 的注册触发器或者注册响应消息中接收所述老RI标识符和新RI标识符的对应关系。
15、 如权利要求11所述的方法,其特征在于,设备在向RI发送许可更新 请求前,获知RI已经保存所述许可的发行记录,则在所述许可更新请求中仅 包括许可标识。
16、 如权利要求11所述的方法,其特征在于,所述新许可中包含新的RI 标识符以及使用新的RI私钥产生的签名。
17、 一种验证许可的方法,其特征在于,包括设备向RI发送确认请求,所述确认请求中包含许可或者许可标识; 接收RI返回的确认声明; 设备根据所述确认声明验证所述许可。
18、 如权利要求17所述的方法,其特征在于,设备在向RI发送确认请求 前,获知RI已经保存所述许可的发行记录,则在所述确认请求中仅包括许可 标识。
19、 如权利要求17所述的方法,其特征在于,所述确认声明包括表明确 认成功与否的信息;或者所述确认声明包括RI针对确认声明创建的签名和下 列参数之一或者任意组合许可标识,许可内的RI标识符,确认声明的序列 号、创建时间、有效期,许可的哈希值。
20、 如权利要求17所述的方法,其特征在于,所述设备根据确认声明验 证所述许可具体为验证所述对许可的确认声明内的RI签名。
21、 一种设备,其特征在于,包括公钥获取模块,验证模块;其中 公钥获取模块,用于与许可服务器RI交互获取R1的历史公钥; 验证模块,用于根据所述RI的历史公钥验证所述许可。
22、 一种设备,其特征在于,包括判断模块,发送模块,接收模块;其中 判断模块,用于判断许可由与RI历史证书相对应的私钥所签发而需要更新;发送模块,用于向许可服务器RI发送许可更新请求,所述许可更新请求中包括一个或者多个所述许可或者许可标识;接收模块,用于接收RI返回的许可更新响应,响应消息中包括新的许可。
23, 一种设备,其特征在于,包括发送模块,接收模块,验证模块;其中 发送模块,用于向RI发送确认请求,所述确认请求中包含一个或者多个许可或者许可标识;接收^^莫块,用于接收RI返回的确认声明; 验证模块,用于根据所述确认声明验证所述许可。
24, —种许可服务器,其特征在于,包括接收模块,发送模块;其中 接收模块,用于接收设备发送的请求获取历史证书链或历史公钥或许可确认声明的请求消息;发送模块,用于根据所述请求消息向设备返回历史证书链或历史公钥或许 可确认声明。
25, —种许可服务器,其特征在于,包括接收模块,发送模块;其中 接收模块,用于接收设备发送的包含许可或许可标识的更新请求; 发送模块,用于根据所述更新请求生成新的许可并返回给设备,所述新许可中包含新的RI标识符以及使用新的RI私钥产生的签名。
全文摘要
本发明公开了一种验证许可的方法,包括设备与许可服务器RI交互获取RI的历史公钥;根据所述RI的历史公钥验证所述许可。还公开了相应的服务器和DRM设备。设备可以通过获取所需的RI历史证书链或历史公钥,或者请求RI更新许可,或提供许可确认声明,达到验证、安装这种许可的目的。通过本发明,可以解决因为RI证书更换而造成的RI以前签发的许可内的签名无法验证、无法安装的问题。
文档编号H04L9/30GK101453324SQ200710077490
公开日2009年6月10日 申请日期2007年12月4日 优先权日2007年12月4日
发明者周志鹏, 张仁宙, 袁卫忠, 晨 黄 申请人:华为技术有限公司