一、Preface
通用加密是一种用于数字版权管理的加密标准,它定义了解密受保护流所需的加密算法和加密相关元数据,但将权限映射、密钥获取和存储、DRM内容保护合规规则等细节留给DRM系统或系统。通用加密可以使用不同的数字版权管理(DRM)和密钥管理系统对同一文件进行解密,因为它指定了标准加密和密钥映射方法。
DRM特定的信息可以使用保护系统特定的标题框(“pssh”)存储在ISO基本媒体文件中,以便使用存储在文件中的密钥查找单独交付的密钥,并使用存储在每个轨道中的加密参数解密媒体样本。
ISO/IEC 23001这部分的第二版增加了通用加密参数的XML表示,以XML文档形式交付,例如MPEG DASH媒体表示描述文档(MPD)。
第三版为模式加密增加了“cbcs”和“cens”保护方案,它们只加密每个视频子样本中的一小部分数据块,从而减少了设备解密视频轨道所需的计算能力。
二、MPEG系统技术
ISO/IEC 23001是一个通用加密格式的规范,用于在基于ISO/IEC 14496-12的任何文件格式中使用。
它定义了加密和解密媒体样本的方法,包括使用AES-128对称分组密码来加密基本流数据。
不同的保护方案可以使用不同的加密模式,如CTR和CBC。此外,ISO/IEC 23001还定义了子样本加密,以便在解密之前对视频基本流进行正常的处理和编辑。
最后,ISO/IEC 23001还指定了XML表示,以便可以将其作为标准元素和属性包含在XML文件中,以实现可互操作的许可证和密钥管理。
三、术语、定义、缩略词
1-术语
- constant iv
在样本条目或样本组描述中指定的初始化向量,该向量应用于该样本条目下的所有样本和子样本或映射到该样本组
- block
在AES-128块密码中,数据被分成16字节的块进行加密或解密。每个块都是128位长,由16个字节组成。密码块是指用于加密或解密这些数据块的密钥。在AES-128中,密码块也是128位长,由16个字节组成。密码块用于对每个数据块进行加密或解密操作,以确保数据的安全性和完整性
- Initialization vector
8字节或16字节的值,与密钥和16字节块结合使用的内容,以创建链中的第一个密码块,并在密码块链中导出后续的密码块.“iv” 是加密算法中的一个术语,其中 “iv” 代表 “initialization vector”,即初始化向量。在加密过程中,初始化向量是一个固定长度的随机数,用于增加加密算法的安全性。它与密钥一起用于加密数据,以确保每次加密相同的数据时都会生成不同的密文。“constant iv” 意味着在加密过程中使用的初始化向量是固定的,这可能会降低加密算法的安全性。
- ISO基础媒体文件
符合ISO/IEC 14496-12中所述文件格式的文件,其中可以使用ISO/IEC 23001-7中的技术
- NAL单元
NAL单元是网络抽象层单元(Network Abstraction Layer Unit)的缩写,是H.264/AVC视频编码标准中的一个基本概念。NAL单元是H.264/AVC视频编码标准中的最小编码单元,它是由NAL头和NAL载荷两部分组成的。
- NAL结构化视频
NAL结构化视频是一种视频编码格式,它是在H.264/AVC标准的基础上进行扩展的。NAL结构化视频将视频数据分成多个NAL单元,每个NAL单元都包含一个NAL头和一个NAL载荷。NAL结构化视频的优点是可以实现更加灵活的视频编码和传输,同时也可以提高视频的压缩效率和传输速度。
- 保护方案
ISO/IEC 23001中定义的加密算法和信息由ISO媒体轨道的方案类型框(“schm”)中的四个字符代码标识。这个标识符用于指定加密算法和密钥管理方案,以确保数字媒体内容的安全性和保护。这个标识符是在媒体文件的元数据中定义的,以便在播放时正确解密和解码媒体内容。
- subssample
ISO/IEC 23001是一项标准,它定义了数字媒体内容的加密和数字版权管理系统(DRM)的规范。在这个标准中,subsample是指对视频或音频样本进行采样的过程。
具体来说,subsample是指将一个样本分成多个子样本,每个子样本都包含原始样本的一部分数据。这些子样本可以用于不同的目的,例如在视频中实现精细的时间控制或在音频中实现高质量的音频编码。
在ISO/IEC 23001中,subsample还可以用于实现数字版权管理系统。通过将数字内容分成多个子样本,可以更好地控制数字内容的访问和使用,从而保护数字版权。
2-缩略词
- AES
AES是高级加密标准(Advanced Encryption Standard)的缩写,是一种对称加密算法。它是目前最常用的加密算法之一,被广泛应用于数据加密、网络安全、电子商务等领域。AES算法使用128位、192位或256位的密钥,对数据进行加密和解密。它的安全性和效率都非常高,被认为是目前最安全的加密算法之一。
- FIPS-197
FIPS-197是美国国家标准与技术研究院(NIST)发布的一项密码学标准,全称为《高级加密标准(AES)》。它是一种对称加密算法,用于保护敏感数据的机密性。AES算法使用128位、192位或256位的密钥对数据进行加密和解密操作。它被广泛应用于各种领域,包括网络通信、数据存储和安全协议等。FIPS-197确保了AES算法的安全性和可靠性,被许多国家和组织所采用和推荐。
- AES-CTR
AES-CTR是一种对称加密算法,它使用AES加密算法和CTR模式来加密数据。CTR模式是一种流加密模式,它将明文分成若干个块,每个块与一个计数器进行异或运算,得到一个密文块。计数器的值会随着每个块的加密而递增,这样可以保证每个块的加密都是独立的,从而提高了加密的安全性。
在AES-CTR中,加密和解密使用相同的密钥,因此称为对称加密算法。加密过程中,先生成一个随机的初始化向量(IV),然后将IV和明文一起输入到AES加密算法中,得到一个密文块。接着将IV递增1,再将IV和下一个明文块一起输入到AES加密算法中,得到下一个密文块。这样一直重复,直到所有明文块都被加密为止。
解密过程与加密过程类似,只是将密文块和IV一起输入到AES解密算法中,得到明文块。然后将IV递增1,再将IV和下一个密文块一起输入到AES解密算法中,得到下一个明文块。这样一直重复,直到所有密文块都被解密为止。
- AES密码-块链接模式
AES CBC是一种加密算法模式,其中AES代表高级加密标准,CBC代表密码块链模式。在AES CBC中,明文被分成块,并且每个块都被加密。加密后的块被链接在一起,以便下一个块的加密可以使用前一个块的密文。这种链接方式可以增加加密的安全性,因为每个块的加密都依赖于前一个块的密文。此外,CBC模式还使用一个初始化向量(IV)来增加加密的随机性和安全性。
- NIST 800-38A
NIST 800-38A是美国国家标准与技术研究院(NIST)发布的一项密码学标准,它规定了一系列加密模式和算法,用于保护计算机系统和数据的机密性和完整性。该标准主要涉及对称加密算法,包括高级加密标准(AES)和三重数据加密标准(Triple DES)等。
NIST 800-38A标准的主要目的是提供一种安全的加密方法,以保护计算机系统和数据免受未经授权的访问和攻击。该标准还提供了一些实用的建议和指南,以帮助组织和个人选择和实施适当的加密算法和模式,以满足其特定的安全需求。
- AVC
ISO/IEC 14496-10规定的高级视频编码
- HAVC
ISO/IEC 23008-2规定的高效视频编码
- IV
初始化向量
- NAL
ISO/IEC 14496-10和ISO/IEC 23008-2中规定的网络抽象层
- URN
资源名称唯一
- UUID
通用唯一标识符
四、保护方案
1-方案类型信令
方案信号应符合ISO/IEC 14496-12。如ISO/IEC 14496-12中的定义,sample entry将被转换,并在样本描述框中的标准样本条目中添加一个保护方案信息框(“sinf”)以表示流受到保护。**保护方案信息框应包含方案类型框(“schm”),**以便方案可识别。方案类型箱应具有以下附加约束条件:
- scheme_type字段应设置为等于cenc等;
- scheme_version字段应设置为0x00010000(主要版本1,次要版本0)。
保护方案信息箱还应包含一个方案信息箱(“schi”)。方案信息框应包含轨道加密框(“tenc”),描述轨道的默认加密参数。
2-常用加密方案类型
本版《通用加密》中规定了四种保护方案。它们如下:
- a) ‘cenc’-AES-CTR模式全样本和视频NAL子样本加密,
- b) ‘cbc1’-AES-CBC模式全样本和视频NAL子样本加密,
- c) ‘cens’-AES-CTR模式部分视频NAL模式加密,
- d) ‘cbcs’-AES-CBC模式部分视频NAL模式加密,
在视频编码中,NAL(Network Abstraction Layer)是一种用于封装视频编码数据的格式。NAL单元是视频编码数据的基本单元,它包含了视频编码器生成的一帧或多帧的数据。
在模式全样本和视频NAL子样本加密中,NAL指的是视频编码数据中的NAL单元。模式全样本加密是指对整个NAL单元进行加密,而视频NAL子样本加密是指对NAL单元中的部分数据进行加密。这些加密方法可以用于保护视频数据的安全性,防止未经授权的访问和篡改。
五、加密元数据概述
Common Encryption定义的加密元数据可以分为以下几类。
- 保护系统特定数据
这些数据对于通用加密是不透明的。这为保护系统(即密钥和数字版权管理“DRM”系统)提供了一个使用通用机制存储其自身数据的地方。此数据包含在中所述的ProtectionSystemSpecificHeaderBox。 - 媒体轨道的通用加密信息
这包括密钥标识符(Kit)的默认值、初始化向量和向量大小、保护模式和保护标志。此数据包含在跟踪加密框(TrackEncryptionBox)中。
在媒体领域中,track通常指的是一段音频或视频的单独部分。例如,在视频编辑软件中,可以将视频分成多个track,每个track可以包含不同的视频或音频元素。在音频编辑软件中,也可以将音频分成多个track,每个track可以包含不同的音频元素,例如不同的乐器或声音效果。在媒体跟踪(Media Track)中,track通常指的是媒体文件中的一个单独部分,可以对其进行编辑、剪辑、混音等操作。
- 媒体样本组的通用加密信息
这包括对上面定义的轨道级别默认值的覆盖。这允许轨道中的样本组使用不同的密钥、清晰和受保护的内容的混合、共享恒定初始化向量(对于某些方案)等。此数据包含在SampleGroupDescriptionBox(‘sgpd’)中,该数据由SampleToGroupBox(‘sbgp’)引用。 - 单个媒体样本的加密信息
这包括初始化向量和子样本加密数据。此数据为样本辅助信息,使用样本辅助信息尺寸框(“saiz”)和样本辅助信息偏移框(“saio”)引用。
六、样本组共享的加密参数
受保护轨道中的每个样本应与一个是否保护【isProtected】标志、Per_Sample_IV_Size、Kid、可选的块模式信息和一个可选的常数_IV相关联。
这个可以通过依赖轨道加密框(‘tenc’)中的默认值来完成,并可选择按样本组指定参数。在样本组中指定的加密参数应覆盖在轨迹加密框中定义的该组中样本的相应默认参数值。未映射到任何样本组的样本应使用在轨迹加密框中建立的默认值。
轨道加密框(‘tenc’)是一种用于保护视频内容的加密技术,它可以将视频内容加密并嵌入到视频流中,以保护视频内容不被未经授权的用户访问和复制。
按样本组指定参数时,样本表或轨迹片段中的样本组框(‘sbgp’)指定了哪些样本使用样本组描述框(‘sgpd’)中的样本组描述。
样本组框(‘sbgp’)是一种用于描述视频样本组的元数据格式,它可以用于指定视频中的关键帧和非关键帧之间的时间间隔,以及每个样本组的大小和类型等信息。这些信息可以帮助视频播放器更有效地解码和播放视频内容。
简单来说,样本组描述是一种用于描述样本的元数据格式,它可以在不同类型的轨道中使用。对于碎片文件,可能需要在每个轨道片段中同时存储样本组框和样本组描述框,以便在需要时可以解密它们所描述的样本。这种做法可以确保即使电影片段被单独存储并通过流传输传送时,也可以正确地解密和播放样本。
所有类型的entry均应使用CencSampleEncryptionInformationGroupEntry示例组描述结构,语法如下。
aligned(8) class CencSampleEncryptionInformationGroupEntry extends SampleGroupEntry( ‘seig’ ) { unsigned int(8) reserved = 0; unsigned int(4) crypt_byte_block = 0; unsigned int(4) skip_byte_block = 0; unsigned int(8) isProtected; unsigned int(8) Per_Sample_IV_Size; unsigned int(8)[16] KID; if (isProtected ==1 && Per_Sample_IV_Size == 0) { unsigned int(8) constant_IV_size; unsigned int(8)[constant_IV_size] constant_IV; } }
- isProtected是表示样本组中样本的加密状态的标志。
- Per_Sample_IV_Size是样本组中样本的初始化向量大小(以字节为单位)。
- Kid是用于样本组中的样本的密钥标识符。
- constant_IV_size是用于与该组关联的所有样本的可能初始化向量的大小(当不使用每个样本的初始化向量时)。
- constant_IV如果存在,应该是用于与该组关联的所有样本的初始化向量。
- crypt_byte_block指定保护模式中加密块的计数,其中每个块的大小为16字节。
- skip_byte_block指定保护模式中的未加密块的计数。
为了方便将来可选字段的添加,客户端应忽略在CencSampleEncryption组条目结构中定义的字段之后的额外字节。