发明内容
本发明涉及一种设备,用于对要通过通信网络进行传输的数字流进行签名,适用于DVB数字流认证,尤其针对MHP应用程序,并使得通信更加安全。
还涉及一种对应的方法、以及一种设备和一种相关解码器和一种用于对通过通信网络接收到的数字流进行认证的方法,以及对应的软件和数字流。
因此,本发明应用于一种设备,通过产生通过应用于数字流的加密而获得的、要并入所述数字流中的至少一个签名,对要通过通信网络传输的数字流进行签名。这些数字流中的每一个均包括几个信息实体,这些实体包括:
-内容,至少与视听信息相关;
-以及至少一个信令,由与所述内容的源、宿和结构相关的信息集合构成,由于网络要求,所述信令能够可靠地在网络中进行修改,包含被称为描述符的必要数据结构,并主要通过被称为表格的已排列编组构建。
根据本发明,所述签名设备用于将加密至少应用于所述信令,更具体地,应用于所述信令的描述符中有选择确定的描述符,被称为认证描述符。
所以,与如果信令已经被签名将采用的自然解决方案,即对整个部分(信令的子表格,具有有限大小)应用认证处理相反,选择信令的特定描述符,以进行认证。这种令人惊讶的解决方案的直接优点在于,对于签名,能够选择重新复用步骤并未触及的描述符。因此,可以非常有效地实现防止恶意修改的保护,同时避免由于网络头端中的重新复用而给认证处理带来的巨大复杂性。
此外,在重新复用设备中,甚至在针对签名,决定保留在重新复用期间将被修改的一些描述符时,与不得不再次对整个部分进行签名以产生考虑到修改后的描述符的已更新签名相比,更为轻便和快捷。实际上,利用对已修改描述符的明智选择,在发射级获得的大多数信息都能够得到保留,特别是按照由散列得到的未改变摘要值的形式,而只是针对签名,必须重新计算签名信息的一小部分。
“视听信息”表示音频和/或视频信息。
优选地,根据DVB和MPEG标准,更具体地根据MHP标准,构建所述数字流。
本发明的签名设备可以应用于对MPEG/DVB表格的认证,尤其是用于PSI表格:PMT、PAT(节目访问表,表示针对每个所发送的节目,节目号与PMT传送分组的PID之间的链接)、CAT(条件访问表,在至少一个节目具有条件访问的情况下,给出了携带权利管理消息-EMM的PES的PID),以及用于DVB-SI表格:NIT(网络信息表)、SDT(服务描述表)、EIT(事件信息表)、TOT(时间偏移量表)、AIT(应用程序信息表)、BAT(束关联表)。所述签名设备也可以应用于基于MPEG2系统(ISO/IEC 13818-1)部分语法的任何MPEG/DVB专用表格。
有利地,所述签名设备包括使用户能够选择所述认证描述符的装置。例如,该用户是广播组的成员。则,将所选择的描述符中的任何一个标识符并入流中,从而当接收器接收到这些流之前,将所使用的描述符通知给接收器,或者在发射器和接收器之前事先就所选择的描述符达成一致。另一解决方案在于更系统化地确定所选择的描述符,例如,按照特定标准版本。
优选地,所述签名设备用于:
-将至少一个最低级签名描述符中的签名引入所述数字流;
-以及还将包括与该签名有关的证书数据的至少一个证书描述符;
-以及通过将加密应用于所述最低级签名描述和所述证书描述符的内容而得到的至少一个较高级签名描述符并入所述数字流。
这对于安全、灵活地确保如广播公司和制造商等多个参与者之间的互操作性非常有意义。
实际上,只要提供几个等级,将能够导致公用密钥基础结构(PKI)。于是,建立根证书权限(针对最高级签名),以及可选地,建立其他证书权限。
优选地,所述签名设备包括用于将所述认证描述符的地址并入所述数字流的装置。这是使接收器知道针对签名而使用的描述的有效方式。
于是,有利的是,所述并入装置用于将至少一个散列描述符引入每个所述数字流中。所述散列描述符包括通过将散列算法应用于至少一个所述认证描述符而得到的至少一个摘要值(digest value),并将其用于计算所述签名。所述散列描述符还包括用于计算所述摘要值的所述认证描述符的所述地址。这些方式提高了认证效率,因为其依赖于用于计算签名并从而用于检验其真实性的传递中间结果。
更具体地,所述并入装置优选地用于根据树结构,将所述散列描述符排列在所述数字流中,通过具有较低等级的至少一个其他所述散列描述符来计算至少一个所述散列描述符。摘要值的嵌套计算能够逐渐计算由其最终获得签名的基本值(即,根摘要值),同时确保考虑了与多个认证描述符有关的所有必需信息。
优选地,所述摘要值具有固定的大小,与现有散列算法中的通常情况相同。
同样优选的是具有并入装置的以下实施例,每个表格包括具有有限大小并分配有号码的至少一个部分,并且每个部分包括将描述符连续引入该部分的至少一个环。有利地,这些并入装置用于规定属于给定部分的至少一个给定环、并具有分别针对这些环中的每一个的至少一个出现次数的每个所述认证描述符的地址,通过至少提及:
-该部分号
-以及这些出现次数。
按照这种方式,能够有效且按照简单的方式识别针对验证而使用的描述符的标识。
用于寻址的其他可能传输信息包括:
-该部分的版本号,
-和/或该部分的类型。
在具有所述并入装置的特定实现中,有利地,所述签名设备用于将签名和可能的至少一个摘要值和证书数据以专用数据的形式引入至少一个特定的部分,所述特定部分与包含所述认证描述符的部分相链接。该实现允许将至少一些认证信息与其他信令信号相分离。
因此,在优选实施例中,所述特定部分用于包含签名和证书数据,有利地,以签名和证书描述符的形式,以及给出了根摘要值并指向其他部分中的较低级摘要值的根散列描述符。这可能是非常有利的,因为DVB/MPEG-2的结构不允许将描述符设置在部分的开始,而这对于所述部分的整个剩余部分都是有效的。即,所有描述符均位于环中的某处,这也是不能与所述部分一起直接发送顶级描述符的原因。
在具有特定部分的另一实施例中,不仅将签名和证书数据以及根散列描述符设置在所述特定部分中,而且将所有其他散列描述符设置在所述特定部分中(例如,位于所述部分的顶级)。这对于DVB/MPEG-2是可能的,因为寻址机制允许对表格中的描述符进行直接寻址。
本发明还涉及一种对应于上述设备的方法,用于通过根据本发明的签名设备的任意实施例来执行。
本发明的另一目的是一种用于通过检查并入在数字流中的至少一个签名对通过通信网络接收到的所述数字流进行认证的设备。这些数字流中的每一个均包括几个信息实体,这些实体包括:
-内容,至少与视听信息相关;
-以及至少一个信令,由与所述内容的源、宿和结构相关的信息集合构成,由于网络要求,所述信令能够可靠地在网络中进行修改,包含被称为描述符的必要数据结构,并主要通过被称为表格的已排列编组构建。
根据本发明,所述认证设备用于将认证至少应用于所述信令,更具体地,应用于所述信令的描述符中有选择确定的描述符,被称为认证描述符,由其计算所述签名。
优选地,所述认证设备应用于包括通过根据本发明的签名设备所产生的签名的数字流。
本发明还涉及一种解码器,其特征在于其包括根据本发明的认证设备。
本发明的另一目的是一种对应于本发明的认证设备的认证方法,优选地用于通过根据本发明的认证设备的任意实施例来执行。
本发明还涉及一种计算机程序产品,包括当在计算机上执行该程序时,用于执行根据本发明的签名或认证方法的步骤的程序代码指令。
术语“计算机程序产品”应当被理解为包括计算机程序的任何物质化,不仅涉及存储支持(磁带、盘、…),还涉及信号(电信号、光信号、…)。
本发明还应用于一种包括几个信息实体的数字流,这些实体包括:
-内容,至少与视听信息相关;
-以及至少一个信令,由与所述内容的源、宿和结构相关的信息集合构成,由于网络要求,所述信令能够可靠地在网络中进行修改,包含被称为描述符的必要数据结构,并主要通过被称为表格的已排列编组构建,
-将至少一个签名并入所述数字流。
根据本发明,根据所述信令,计算所述签名,更具体地,根据所述信令的描述符中有选择地确定的描述符,被称为认证描述符。
优选地,通过要求保护的签名设备的任意实施例产生所述数字流。
具体实施方式
数字流10的发射器1通过网络5向具有解码能力的接收器2发送这些流10(图1)。发射器1典型地用于广播流10,例如,网络5是宽带或广播网络,以及特别是有线或卫星网络。在另一实施例中,网络5由因特网构成。在所示情况下,数字流10由DVB/MPEG-2流构成,从而特别包括内容和与之相关的信令数据。信令主要由表格构成,并包括描述符。流10可以符合MHP标准。
发射器1包括:签名设备11,用于对要发送的数字流10进行签名;以及用户接口15,特别用于使如广播公司等发送者能够控制签名处理。签名设备11用于对信令进行签名,不仅是内容。其包含选择模块12,使用户通过用户接口15选择信令的一些描述符,称为认证描述符,用于信令认证。因此,对其进行加密,以获得相关签名。签名设备11还包含并入模块13,能够将认证描述符的地址并入所发送的数字流10。
每个接收器2包括认证设备21,能够检查所接收到的签名,尤其是用于信令认证的签名。认证设备21能够考虑流10中所指示的用于认证的认证描述符。
现在,将对特别感兴趣的示例进行描述。发送数字电视服务(互动或非互动)信号的重要入口点是在MPEG-2系统标准(ISO/IEC13818-1)中所规定的PMT(节目映射表)。在发送互动MHP应用程序的信号的情况下,PMT包含传送AIT(应用程序信息表)的流的位置和传送应用程序代码和数据的流的位置(对DSM-CC DSI消息的指针,DSM-CC表示“下载服务启动”,ISO/IEC 13818-6国际标准),如图2和图3所示。以下的技术方案能够保护互动MHP应用程序的信令数据,从而使解码平台能够检查其在传送网络上是否已经被修改。此外,MPEG-2系统标准禁止对PMT的加扰,所以这里并未考虑加扰。
信令的保护基于散列码、签名和证书。通过规定三个新的描述符来进行这些密码消息的编码,分别包含以上对象:
·hash_descriptor
·signature_descriptor
·certificate_descriptor.
这里针对单独认证的每个部分,单独引入hash_descriptor字段,并且我们下面将考虑表格的这个给定部分,无论该表格由多个部分或者只由一个部分构成。另一方面,signature_descriptor字段应用于表格中的所有hash_descriptor字段,以及certificate_descriptor字段涉及该表格中的所有signature_descriptor字段。
对hash_descriptor的说明
hash_descriptor可以位于AIT或PMT(或任何其他要认证的MPEG-2表格)的环中。更具体地,其位于包括要认证的描述符的每个描述符环中。环中的位置并不重要,因为hash_descriptor包括能够惟一寻址每个描述符的descriptor_address字段。
hash_descriptor包含散列码,也称为摘要值,根据descriptor_address所指向的描述符进行计算。在AIT或PMT的情况下,其只包括跟随在与hash_descriptor相同的环(loop)中的描述符。所指向的描述自身可以位于hash_descriptor字段中,从而能够实现类似递归的计算处理。
hash_descriptor的语法如下:
hash_descriptor(){
descriptor_tag 8 uimsbf
descriptor_length 8 uimsbf
digest_count 16 uimsbf
for(i=0;i<digest_count;i++){
digest_type 8 uimsbf
descriptor_count 8 uimsbf
for(j=0;j<descriptor_count;j++){
descriptor_address 40 uimsbf
}
for(j=0;j<digest_length;j++){
digest_byte 8 bslbf
}
}
}
其中“uimsbf”和“bslbf”分别表示“无符号整数最高有效位优先”和“位串最左位优先”。
descriptor_tag:hash_descriptor的标签。
descriptor_length:hash_descriptor的长度。
digest_count:此16位数值识别此散列描述符中的摘要值的数量。
digest_type:此8位数值识别可能用于相关描述符的摘要算法。在表1中给出了其允许值,其中在RFC 1321(RFC表示请求注解;http://www.ietf.org/rfc/rfc1321.txt)中定义了MD-5(MD表示“消息摘要”),以及在FIPS-180-1(FIPS公开180-1:安全散列标准,国家标准和技术学院,1994年;http://www.itl.nist.gov/fipspubs/fip180-1.htm)中定义了SHA-1(SHA表示“安全散列算法”)。
表1-摘要算法的允许值
值 |
摘要长度 |
算法 |
0 |
0 |
非认证 |
1 |
16 |
MD-5 |
2 |
20 |
SHA-1 |
其他 |
|
保留 |
descriptor_count:此16位数值识别与摘要值相关的描述符的数量。此字段的数值应当大于零。
descriptor_address:这是部分中的描述符的普通地址,稍后将进行详细的解释。
digest_length:此整数值给出了每个摘要值的字节数。其依赖于如图1所示的摘要类型。
digest_byte:此8位数值保持摘要值的一个字节。
对signature_descriptor的说明
该描述符的语法如下:
signature_descriptor(){
descriptor_tag 8 uimsbf
descriptor_length 8 uimsbf
signature_id 8 uimsbf
signature_length 8 uimsbf
for(i=0;i<N;i++){
signature specific data
}
}
descriptor_tag:signature_descriptor的标签。
descriptor_length:signature_descriptor的长度。
signature_id:此ID(表示“标识符”)使其能够具有来自多于一个权威机构的签名。
signature_length:指示跟随环(following loop)的长度。
字段“signature specific data”包含以下ASN.1,ASN.1结构(表示“摘要语法注释一”语言),是BER(基本编码规则)和DER(区分编码规则)结构的组合:
Signature::=SEQUENCE{
certificateIdentifier AuthorityKeyIdentifier,
hashSignatureAlgorithm HashAlgorithmIdentifier,
signatureValue BIT STRING}
certificateIdentifier:如ITU-T X.509扩展(代表国际电信联盟-电信标准部分,建议X.509:目录认证框架,1997年)中所定义,与AuthorityKeyIdentifier字段有关。其识别携带有用于检验签名的已验证公共密钥的证书:
AuthorityKeyIdentifier::=SEQUENCE{
keyIdentifier [0]KeyIdentifier可选,
authorityCertIssuer [1]GeneralNames可选,
authorityCertSerialNumber[2]CertificateSerialNumber可选}
实施不需要使用AuthorityKeyIdentifier的可能出现的密钥标识符元素(“keyIdentifier”)。AuthorityKeyIdentifier结构包含权限证书发布者标识(authorityCertIssuer)和相应的权限证书序列号元素(authorityCertSerialNumber)。
authorityCertIssuer字段包含字段“directoryName”,给出了携带有用于检查签名的公共密钥的证书的发布者名称(并因而等于用在MHP中的字段issuerName)。
hashSignatureAlgorithm:此字段识别所使用的散列算法。由于涉及计算签名所需的加密算法,已经在证明相关密钥的证书中对其进行了描述(在SubjectKeyInfo字段中)。因此,只需要散列算法的标识。所支持的算法是MD5和SHA-1,其中经典地通过下式给出标识符(参见RFC 2379):
md5 OBJECT IDENTIFIER::=
{iso(1)member-body(2)US(840)rsadsi(113549)
digestAlgorithm(2)5}
sha-1 OBJECT IDENTIFIER::=
{iso(1)identified-organization(3)oiw(14)secsig(3)
algorithm(2)26}
signatureValue:签名的数值,依赖于MHP规范的选择。
对certificate_descriptor的说明
与经典的PKI技术一样,该描述符包含递归使用的几个证书。特别地,将叶证书首先设置在certificate_descriptor中,而最后指示仅针对一致性而包括在其中的根证书。
名称为CertificateFile的文件包含在certificate_descriptor 中所提及的证书链中的所有证书,一直到根证书,并包括根证书。在ETSI TS 102 812 V1.1.1(表示“欧洲电信标准学院,技术规范”)中定义了用于编码证书的简档表(profile)。
certificate_descriptor规定如下:
certificate_descriptor(){
descriptor_tag 8 uimsbf
descriptor_length 8 uimsbf
signature_id 8 uimsbf
certificate_here_flag 1 bslbf
reserved 7 bslbf
if(certificate_here_flag==1){
certificate_cout 16 uimsbf
for(i=0;i<certificate_count;i++){
certificate_length 24 uimsbf
certificate()
}
}
}
descriptor_tag:certificate_descriptor的标签。
descriptor_length:certificate_descriptor的长度。
signature_id:此ID对证书和特定的签名进行链接。
certificate_here_flag:为位字段,当设置为“1”时,表示证书位于此描述符中。否则,应当使用来自应用程序的证书,必须对链接进行定义。
certificate_count:此16位整数带有证书描述符中的证书数。
certificate_length:此24位整数规定了证书的字节数。
certificate():此字段带有由ITU-T X.509定义的单一“证书”数据结构。
在MHP平台的情况下,可以使用与用于交互应用程序相同的证书管理。否则,具体建立针对证书管理的机制。
MPEG/DVB部分中的描述符的普通寻址
(hash_descriptor中的字段“descriptor_address”)
现在,将详细描述寻址MPEG和DVB表格中的描述符的寻址机制。可以使用可变长度寻址机制,其能够以更为紧凑的方式存储地址。但是,在本实施例中,地址具有40位的恒定长度,使得处理更为容易。查看目前的MPEG和DVB规范,可以识别三种不同类型的部分。
第一部分类型(此后表示为“type0”)具有以下结构,利用这种type0部分构建PAT、CAT和TOT表格:
type0_section(){
table_id
…
for(i=0;i<N;i++){
descriptor()
}
CRC_32
}
table_id给出了表格的表示和代表“循环冗余校验”的CRC。
在type0部分的情况下,地址中的字节具有如下含义:
·第一字节:表格中的部分数;
·第二字节:0;
·第三字节:0;
·第四字节:i(N),此字节寻址type0部分环中的描述符。
第二部分类型(此后表示为“type1”)具有以下结构,利用这种type1部分构建SDT和EIT:
type1_section(){
table_id
…
for(i=0;i<N1;i++){
…
for(j=0;j<N2;j++){
descriptor()
}
}
CRC_32
}
·第一字节:表格中的部分数;
·第二字节:0;
·第三字节:i(N1),此字节寻址type1部分的外环;
·第四字节:j(N2),此字节寻址type1部分的内环。
第三部分类型(此后表示为“type2”)具有以下结构,利用这种type2部分构建NIT、BAT、PMT和AIT表格:
type2_section(){
table_id
…
for(i=0;i<N1;i++){
descriptor()
}
…
for(j=0;j<N2;j++){
…
for(k=0;k<N3;k++){
descriptor()
}
}
CRC_32
}
在type2部分的情况下,描述符地址需要五个字节:
·第一字节:表格中的部分数;
·第二字节:i(N1),此字节寻址type2部分的第一环;
·第三字节:j(N2),此字节寻址type2部分的外环;
·第四字节:k(N3),此字节寻址type2部分的内环。
顶级描述符
通过顶级描述符,理解certificate_descriptor和signature_descriptor字段,以及指向具有要认证的描述符的部分中的所有其他hash_descriptor字段的hash_descriptor字段(即,包含根摘要值的hash_descriptor)。
在本实施例中,在特定的部分中发送这些描述符,所述特定的部分与包含要认证的描述符的部分相链接。此链接特定部分包含与原始部分相同的PID和Table_ID,但通过被称为“section_syntax_indicator”的特定的指示符与之相区分。对于所有DVB/MPEG定义部分,将此section_syntax_indicator设置为一,表示部分语法遵循普通部分语法。对于特定扩展,将section_syntax_indicator设置为零,表示专用数据出现在给出了特定部分的长度的字段(private_section_length)之后。按照其可以包含顶级信息的方式规定这些专用数据。例如,扩展部分具有以下结构:
extension_section(){
table_id 8 uimsbf
section_syntax_indicator 1 bslbf
private_indicator 1 bslbf
reserved 2 bslbf
private_section_length 12 uimsbf
reserved 3 bslbf
version_number 5 uimsbf
certificate_descriptor()
signature_descriptor()
hash_descriptor()
}
在ISO/IEC 13818-1中的专用部分定义部分对其进行了规定的字段private_indicator是针对未来使用的保留位,以及字段“version_number”扩展部分所属的表格版本(特别参见EN 300 468V1.3.1-针对“欧洲标准”)。
示例
以下示例示出了可以如何将AIT的描述符用于签名。在此示例中,对由几个部分形成的整个表格进行全局认证,而不是像以前那样对每个部分进行单独认证。第一步是选择要认证的描述符。第二步是利用MD5摘要算法计算这些描述符的散列码。位于每个包含至少一个认证描述符的环中的hash_descriptor包含这些描述符的地址和这些描述符的MD5摘要值。由于hash_descriptor是可寻址的,不需要具有环中特定的位置。按照这种方式,可以针对AIT部分,产生散列码。
以下附图示出了在通常AIT结构中插入hash_descriptor(如ETSI TS 102 812 V1.1.1所定义):
其中“rpchof”表示“余式多项式系数,最高次数优先”。
完整的AIT表格可以由几个部分构成,与任何DVB/MPEG表格相同。在已经计算了表格的所有部分的散列码之后,必须产生顶级信息。为此,计算考虑了对应表格的所有hash_descriptor字段的顶级hash_descriptor(根摘要值),其中使用上述描述符寻址机制。下一步是利用与能够在相应certificate_descriptor的叶证书中找到的公用密钥相对应的专用密钥,对此顶级hash_descriptor进行RSA-加密(RSA密码算法表示Rivest-Shamir-Adleman)。此RSA-加密的结果是存储在signature_descriptor中的签名。将这三个顶级描述符存储在相应表格的所谓扩展部分中。在AIT的情况下,表格ID总是0x74,但PID(分组标识符)是列出在相应服务的PMT中的数值。包含顶级描述符的扩展部分具有与要认证的AIT相同的PID和表格ID,但将section_syntax_indicator设置为零:
extension_section(){
table-id(0x74) 8 uimsbf
section_syntax_indicator(0x00) 1 bslbf
private_indicator 1 bslbf
reserved 2 bslbf
private_section_length 12 uimsbf
reserved 3 bslbf
version_number 5 uimsbf
certificate_descriptor()
signature_descriptor()
hash_descriptor()
}
版本号表示此扩展部分所属的表格版本。
在变体实施例中,所有hash_descriptor字段位于extension_section中的顶级。
在实施中,推荐将section_syntax_indicator设置为“不关心”(表示处理流的解复用器通过该位,而与其状态为“1”或“0”无关),从而所需的DVB/MPEG部分本身和extension_section通过解复用器滤波器。按照这种方式,扩展部分中的顶级描述符直接可用,并能够立即进行认证。