发明内容
本申请实施例的目的在于提供编码码流的防篡改加密方法、检测方法及装置,以解决现有技术中采用数字水印对视频编码码流进行防篡改保护时,容易导致视频失真且应用受到限制的问题。
为解决上述技术问题,本申请实施例提供如下技术方案:
一种编码码流的防篡改加密方法,包括:
接收编码后的码流数据;
通过对所述编码后的码流数据进行校验生成校验值;
按照预设的组合方式将所述校验值与预设密钥进行组合,生成新的组合密钥;
通过所述组合密钥对预设水印信息进行加密生成加密信息;
将所述加密信息与所述编码后的码流数据进行封装。
接收编码后的码流数据后,还包括:对所述编码后的码流数据进行缓冲。
所述通过对编码后的码流数据进行校验生成校验值包括:
按照预设规则从所述编码后的码流数据中选择预设长度的校验数据;
采用预设的校验算法对所述校验数据进行校验获得校验值。
还包括:对所述封装后的码流数据进行传输或者存储。
一种编码码流的防篡改检测方法,用于对前述加密方法加密后的码流数据进行检测,包括:
对获取的封装后的数据进行解封装,得到加密信息和编码后的码流数据;
对所述编码后的码流数据进行校验生成校验值,所述校验的方式与所述加密方法中对码流数据进行校验的方式一致;
按照预设的组合方式将所述校验值与预设密钥进行组合,生成新的组合密钥,所述组合的方式与所述加密方法中对校验值与预设密钥进行组合的方式一致;
通过所述组合密钥对加密信息进行解密得到解密信息;
将所述解密信息与预设水印信息进行比较,若一致,则确定所述码流数据未被篡改,若不一致,则确定所述码流数据被篡改。
确定所述码流数据未被篡改后,还包括:对所述码流数据进行解码。
一种编码码流的防篡改加密装置,包括:
接收单元,用于接收编码后的码流数据;
校验单元,用于通过对所述编码后的码流数据进行校验生成校验值;
组合单元,用于按照预设的组合方式将所述校验值与预设密钥进行组合,生成新的组合密钥;
加密单元,用于通过所述组合密钥对预设水印信息进行加密生成加密信息;
封装单元,用于将所述加密信息与所述编码后的码流数据进行封装。
还包括:
缓冲单元,用于对所述编码后的码流数据进行缓冲。
所述校验单元包括:
数据选择子单元,用于按照预设规则从所述编码后的码流数据中选择预设长度的校验数据;
数据校验子单元,用于采用预设的校验算法对所述校验数据进行校验获得校验值。
一种编码码流的防篡改检测装置,用于对前述加密装置所加密后的码流数据进行检测,包括:
解封装单元,用于对获取的封装后的数据进行解封装,得到加密信息和编码后的码流数据;
校验单元,用于对所述编码后的码流数据进行校验生成校验值,所述校验的方式与所述加密方法中对码流数据进行校验的方式一致;
组合单元,用于按照预设的组合方式将所述校验值与预设密钥进行组合,生成新的组合密钥,所述组合的方式与所述加密方法中对校验值与预设密钥进行组合的方式一致;
解密单元,用于通过所述组合密钥对加密信息进行解密得到解密信息;
检测单元,用于将所述解密信息与预设水印信息进行比较,若一致,则确定所述码流数据未被篡改,若不一致,则确定所述码流数据被篡改。
还包括:
解码单元,用于当所述检测单元确定所述码流数据未被篡改后,对所述码流数据进行解码。
由以上本申请实施例提供的技术方案可见,本申请实施例中在加密处理时,接收编码后的码流数据,通过对编码后的码流数据进行校验生成校验值,按照预设的组合方式将校验值与预设密钥进行组合,生成新的组合密钥,通过组合密钥对预设水印信息进行加密生成加密信息,将加密信息与所述编码后的码流数据进行封装;在进行检测处理时,对获取的封装后的数据进行解封装,得到加密信息和编码后的码流数据,对编码后的码流数据进行校验生成校验值,按照预设的组合方式将校验值与预设密钥进行组合,生成新的组合密钥,通过组合密钥对加密信息进行解密得到解密信息,将解密信息与预设水印信息进行比较,若一致,则确定该码流数据未被篡改,若不一致,则确定该码流数据被篡改。本申请实施例无需修改编码码流的比特位,因此可以在对码流进行加密处理的同时保证码流不失真;由于对码流本身没有改动,而是对预设信息进行加密,因此加密信息的长度不受限制,在满足加密需求的同时,不会降低码流质量。
具体实施方式
在如下本申请的多个实施例中,有些实施例提供了编码码流的防篡改加密方法及装置,有些实施例提供了编码码流的防篡改检测方法及装置。
为了使本技术领域的人员更好地理解本申请实施例中的技术方案,并使本申请实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本申请实施例中技术方案作进一步详细的说明。
参见图1,为本申请编码码流的防篡改加密方法的第一实施例流程图:
步骤101:接收编码后的码流数据。
本申请实施例中的码流数据可以为视频编码码流数据,或者音频编码码流数据。当码流数据为视频编码码流数据时,通常接收的码流数据为分别对每一帧图像进行编码后的视频码流数据。
步骤102:通过对编码后的码流数据进行校验生成校验值。
具体的,按照预设规则从编码后的码流数据中选择预设长度的校验数据,采用预设的校验算法对校验数据进行校验获得校验值。其中,预设规则可以根据需要灵活设置,例如将码流数据的前十个字节信息作为校验数据,或者从码流数据的第十个字节处开始取连续的十个字节信息作为校验数据等;校验算法可以为MD5校验算法,或CRC校验算法等,对于校验算法的使用本申请实施例不进行限制。
对于加密过程所采用的上述预设规则和校验算法需要进行保存,后续对码流数据的校验过程中将采用同样的预设规则和校验算法。
步骤103:按照预设的组合方式将校验值与预设密钥进行组合,生成新的组合密钥。
本申请实施例中的预设组合方式可以任意选择,例如,将校验值和预设密钥的信息顺序连接组成新的组合密钥,或者将校验值插入预设密钥的特定位置(比如,预设密钥的信息的第十个字节处)组成新的组合密钥。
对于加密过程所采用的上述预设组合方式需要进行保存,后续对码流数据的校验过程中将采用同样的预设组合方式。
步骤104:通过组合密钥对预设水印信息进行加密生成加密信息。
预设水印信息可以是任意长度的一段比特串,通过组合密钥对该预设水印信息进行加密后生成加密信息。
其中,加密的方式可以采用现有技术中的任意加密算法,例如,AES(Advanced Encryption Standard,高级加密标准)算法等。
对于加密过程所采用的具体加密算法进行保存,后续对码流数据的校验过程中将采用同样的加密算法进行解密。
步骤105:将加密信息与编码后的码流数据进行封装,结束当前流程。
该实施例中,对码流数据本身没有改动,而是对预设信息进行加密,因此加密信息的长度不受限制,在满足加密需求的同时,不会降低码流质量。
参见图2,为本申请编码码流的防篡改加密方法的第二实施例流程图:
步骤201:接收编码后的码流数据。
本申请实施例中的码流数据可以为视频编码码流数据,或者音频编码码流数据。当码流数据为视频编码码流数据时,通常接收的码流数据为分别对每一帧图像进行编码后的视频码流数据。
步骤202:对编码后的码流数据进行缓冲。
以视频码流为例,对编码后的码流数据进行缓冲可以暂时存储每一帧图像的编码码流,待后续步骤对每一帧图像的码流数据进行加密处理。
步骤203:按照预设规则从编码后的码流数据中选择预设长度的校验数据。
其中,预设规则可以根据需要灵活设置,例如将码流数据的前十个字节信息作为校验数据,或者从码流数据的第十个字节处开始取连续的十个字节信息作为校验数据等。
步骤204:采用预设的校验算法对校验数据进行校验获得校验值。
本申请实施例中校验算法可以为MD5校验算法,或CRC校验算法等。
步骤205:按照预设的组合方式将校验值与预设密钥进行组合,生成新的组合密钥。
对于加密过程所采用的上述预设规则和校验算法需要进行保存,后续对码流数据的校验过程中将采用同样的预设规则和校验算法
本申请实施例中的预设组合方式可以任意选择,例如,将校验值和预设密钥的信息顺序连接组成新的组合密钥,或者将校验值插入预设密钥的特定位置(比如,预设密钥的信息的第十个字节处)组成新的组合密钥。
对于加密过程所采用的上述预设组合方式需要进行保存,后续对码流数据的校验过程中将采用同样的预设组合方式。
步骤206:通过组合密钥对预设水印信息进行加密生成加密信息。
预设水印信息可以是任意长度的一段比特串,通过组合密钥对该预设水印信息进行加密后生成加密信息。
其中,加密的方式可以采用现有技术中的任意加密算法,例如,AES算法等。
对于加密过程所采用的具体加密算法进行保存,后续对码流数据的校验过程中将采用同样的加密算法进行解密。
步骤207:将加密信息与编码后的码流数据进行封装。
步骤208:对封装后的码流数据进行传输或者存储,结束当前流程。
参见图3,为本申请编码码流的防篡改检测方法的实施例流程图,该实施例用于对前述加密方法实施例进行加密处理后的码流数据是否被篡改进行检测:
步骤301:对获取的封装后的数据进行解封装,得到加密信息和编码后的码流数据。
在加密处理过程中,最终生成的加密信息与编码后的码流数据封装在一起,码流数据本身没有改变。因此对获取的封装后的数据进行解封装后,可以得到一段加密信息以及一段编码后的码流数据。
步骤302:对编码后的码流数据进行校验生成校验值。
按照预设规则从编码后的码流数据中选择预设长度的校验数据,采用预设的校验算法对校验数据进行校验获得校验值。其中,校验的方式与前述加密方法实施例中对码流数据进行校验的方式一致,即二者采用相同的预设规则和相同的加密校验算法。
步骤303:按照预设的组合方式将校验值与预设密钥进行组合,生成新的组合密钥。
本步骤中组合的方式与前述加密方法实施例中对校验值与预设密钥进行组合的方式一致。
步骤304:通过组合密钥对加密信息进行解密得到解密信息。
本实施例中对加密信息进行解密所采用的算法与前述加密方法实施例中采用的算法一致,例如如果加密是采用AES算法进行加密,则解密时仍然采用AES算法进行解密。
步骤305:比较解密信息与预设水印信息是否一致,若是,则执行步骤306;否则,执行步骤308。
步骤306:确定码流数据未被篡改。
如果解密信息与预设水印信息一致,说明编码码流未被篡改,因为加密过程中采用了编码码流中的数据,一旦编码码流被篡改,则将导致与加密过程一致的解密过程中解密出的数据发生变化。
步骤307:对码流数据进行解码,结束当前流程。
步骤308:确定码流数据被篡改,结束当前流程。
如果解密信息与预设水印信息不一致,说明编码码流已经被篡改,可以采取相应的措施。
下面结合对一帧图像编码码流进行处理为例描述本申请实施例中防篡改加密和防篡改检测的处理过程。
在进行防篡改加密处理过程中:
获取编码后的一帧图像码流,对该一帧图像码流的前64字节做32位的CRC校验,假设码流的前64字节为“0x658880000a00011314000437ed6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d6d1304ee8571e187ffd3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3d3e0”,则CRC校验后得到的4字节的校验值为CRC_VAL_E,假设CRC_VAL_E的值为“0xfe7a58db”;
预先设定12字节的加密密钥,假设为“0x7479636f5f6f656d5f766572”,将加密密钥同CRC_VAL进行顺序的排列组合得到新的16字节的组合密钥“0xfe7a58db7479636f5f6f656d5f766572”;
预先设定一段16字节的信息作为水印信息,假设该水印信息为“0x4a005fa3102994e0db1747500040481b”,利用前述生成的16字节的组合密钥对该水印信息进行AES加密得到16字节的加密信息“0xebcff8988ad0e9e53399041477740be9”;
将加密信息“0xebcff8988ad0e9e53399041477740be9”与一帧图像的码流数据进行封装即可完成对防篡改加密处理。
在进行防篡改检测处理过程中:
对封装后的码流进行解封装,得到一段加密信息和一帧图像的码流数据,其中对一帧图像的码流做32位的CRC校验,得到4字节的校验值为CRC_VAL_D,如果码流未被篡改,则CRC_VAL_D的值应该同前述加密过程中的CRC_VAL_E一致,即为“0xfe7a58db”;
将预先设定的12字节的加密密钥“0x01020304050607080a0b0c”和前述得到的CRC_VAL_D的值进行排列组合,排列组合方式同加密处理流程一致,同样可以得到新的组合密钥为“0xfe7a58db7479636f5f6f656d5f766572”;
通过新的组合密钥“0xfe7a58db7479636f5f6f656d5f766572”对解封装后的加密信息“0xebcff8988ad0e9e53399041477740be9”进行AES解密,得到一段解密信息;
判断解密后的信息是否与预先设定的16字节的水印信息“0x4a005fa3102994e0db1747500040481b”一致,如果一致则判定图像的编码码流未被篡改,否则判定图像的编码码流已被篡改。
与本申请编码码流的防篡改加密方法和检测方法的实施例相对应,本申请还提供了编码码流的防篡改加密装置和检测装置的实施例。其中,编码码流的防篡改检测装置用于对编码码流的防篡改加密装置所加密的码流数据进行检测。
参见图4,为本申请编码码流的防篡改加密装置的第一实施例框图:
该加密装置包括:接收单元410、校验单元420、组合单元430、加密单元440和封装单元450。
其中,接收单元410,用于接收编码后的码流数据;
校验单元420,用于通过对所述编码后的码流数据进行校验生成校验值;
组合单元430,用于按照预设的组合方式将所述校验值与预设密钥进行组合,生成新的组合密钥;
加密单元440,用于通过所述组合密钥对预设水印信息进行加密生成加密信息;
封装单元450,用于将所述加密信息与所述编码后的码流数据进行封装。
参见图5A,为本申请编码码流的防篡改加密装置的第二实施例框图:
该加密装置包括:接收单元510、缓冲单元520、校验单元530、组合单元540、加密单元550和封装单元560。
其中,接收单元510,用于接收编码后的码流数据;
缓冲单元520,用于对所述编码后的码流数据进行缓冲;
校验单元530,用于通过对所述编码后的码流数据进行校验生成校验值;
组合单元540,用于按照预设的组合方式将所述校验值与预设密钥进行组合,生成新的组合密钥;
加密单元550,用于通过所述组合密钥对预设水印信息进行加密生成加密信息;
封装单元560,用于将所述加密信息与所述编码后的码流数据进行封装。
参见图5B,为图5A中校验单元的实施例框图:
该校验单元530包括:
数据选择子单元531,用于按照预设规则从所述编码后的码流数据中选择预设长度的校验数据;
数据校验子单元532,用于采用预设的校验算法对所述校验数据进行校验获得校验值。
参见图6,为本申请编码码流的防篡改检测装置的第一实施例框图:
该检测装置包括:解封装单元610、校验单元620、组合单元630、解密单元640和检测单元650。
其中,解封装单元610,用于对获取的封装后的数据进行解封装,得到加密信息和编码后的码流数据;
校验单元620,用于对所述编码后的码流数据进行校验生成校验值,所述校验的方式与所述加密方法中对码流数据进行校验的方式一致;
组合单元630,用于按照预设的组合方式将所述校验值与预设密钥进行组合,生成新的组合密钥,所述组合的方式与所述加密方法中对校验值与预设密钥进行组合的方式一致;
解密单元640,用于通过所述组合密钥对加密信息进行解密得到解密信息;
检测单元650,用于将所述解密信息与预设水印信息进行比较,若一致,则确定所述码流数据未被篡改,若不一致,则确定所述码流数据被篡改。
参见图7,为本申请编码码流的防篡改检测装置的第二实施例框图:
该检测装置包括:解封装单元710、校验单元720、组合单元730、解密单元740、检测单元750和解码单元760。
其中,解封装单元710,用于对获取的封装后的数据进行解封装,得到加密信息和编码后的码流数据;
校验单元720,用于对所述编码后的码流数据进行校验生成校验值,所述校验的方式与所述加密方法中对码流数据进行校验的方式一致;
组合单元730,用于按照预设的组合方式将所述校验值与预设密钥进行组合,生成新的组合密钥,所述组合的方式与所述加密方法中对校验值与预设密钥进行组合的方式一致;
解密单元740,用于通过所述组合密钥对加密信息进行解密得到解密信息;
检测单元750,用于将所述解密信息与预设水印信息进行比较,若一致,则确定所述码流数据未被篡改,若不一致,则确定所述码流数据被篡改;
解码单元760,用于当所述检测单元750确定所述码流数据未被篡改后,对所述码流数据进行解码。
通过以上的实施方式的描述可知,本申请实施例中在加密处理时,接收编码后的码流数据,通过对编码后的码流数据进行校验生成校验值,按照预设的组合方式将校验值与预设密钥进行组合,生成新的组合密钥,通过组合密钥对预设水印信息进行加密生成加密信息,将加密信息与所述编码后的码流数据进行封装;在进行检测处理时,对获取的封装后的数据进行解封装,得到加密信息和编码后的码流数据,对编码后的码流数据进行校验生成校验值,按照预设的组合方式将校验值与预设密钥进行组合,生成新的组合密钥,通过组合密钥对加密信息进行解密得到解密信息,将解密信息与预设水印信息进行比较,若一致,则确定该码流数据未被篡改,若不一致,则确定该码流数据被篡改。本申请实施例无需修改编码码流的比特位,因此可以在对码流进行加密处理的同时保证码流不失真;由于对码流本身没有改动,而是对预设信息进行加密,因此加密信息的长度不受限制,在满足加密需求的同时,不会降低码流质量。
本领域的技术人员可以清楚地了解到本申请实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述的本申请实施方式,并不构成对本申请保护范围的限定。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请的保护范围之内。