H.264/AVC加密----选择加密

news2024/11/17 9:49:06

文献学习:

《Data Hiding in Encrypted H.264/AVC Video Streams by Codeword Substitution》
期刊:IEEE TRANSACTIONS ON INFORMATION FORENSICS AND SECURITY

简介
通过分析H.264/AVC编解码器的特性,提出了三个敏感部分(IPM、MVD和残差系数)用流密码加密。与[13]相比,该算法不是在H.264/AVC编码时进行加密,而是在H.264/AVC压缩域中进行加密。在H.264压缩域进行选择加密已经在上下文自适应变长编码(CAVLC)和上下文自适应算术编码(CABAC)中被实现,在本文中,我们对之前提出的方法进行了改进和增强,对更多的语法元素进行加密。我们对ipm的码字、mvd的码字和残差系数的码字进行了加密。加密的比特流仍然是符合H.264/AVC的,可以用任何符合标准的H.264/AVC解码器解码,但加密的视频数据与明文视频数据完全不同。实际上,直接在压缩的比特流上执行格式兼容加密是极其复杂的,因为编码器内部的状态必须被保留,否则,其余的数据会被错误地解释,这很容易导致格式违规。

1)帧内预测模式加密

根据H.264/AVC标准,支持以下四种类型的帧内编码,分别表示为Intra_4 × 4, Intra_16×16,I_PCM[12]。这里选择Intra_4×4和Intra_16 × 16块中的IPM进行加密。Intra_16×16中四种IPMs (intra prediction mode)模式都是可行的。Intra_16 × 16块的IPM在mb_type (macroblock type)字段中指定,该字段还指定了关于该块的其他参数,如编码块模式(CBP)。表1是mb_type值及其含义的列表,取自标准[17]。在H.264/AVC基线配置文件中,mb_type是用Exp-Golomb代码编码的。为了使加密的比特流符合标准,我们可以在不修改CBP的情况下对IPM的码字进行加密。另外,为了保持码字的长度不变,加密后的码字应该与原始码字的大小相同。可以看到,CBP组合每四行相同,每连续两行码字长度相同,如表所示。因此,对于Intra_16 × 16块,IPM加密是通过在码字的最后一位和伪随机序列的一位之间应用逐位异或操作来实现的,以保持CBP的值和码字的长度不变。
在这里插入图片描述
**在H.264/AVC中,每个Intra_4 × 4亮度块都是根据其空间相邻样本进行预测的。**具体地说, H.264/AVC为Intra_4×4亮度块提供了9种预测模式(0-8)。对于4×4亮度块的每种预测模式的选择必须向解码器发送信号,这可能需要大量的比特。为了有效地压缩预测模式数据,将预测编码技术应用于信号预测模式。
对于当前考虑的每个块E,最可能的模式(MPME)被定义为空间相邻的上块A和左块B的预测模式中较小的那个。如果相邻区块中有一个不可用,则对应的值设为2,表示“DC”预测模式。当前考虑的块E的预测模式记为ModeE。如果ModeE= MPME,码字保持不变。否则,每个码字中的三位固定长度代码(表示为X)用伪随机序列加密(按位异或加密),伪随机序列是由加密密钥E_Key2确定的标准安全密码(例如RC4)生成的。
从上面的描述可以看出,加密码字的长度与原始码字的长度是相同的。对于在解码过程中的格式兼容性,加密后的第一行和/或第一列的块的ipms应该有可解码的值,因为没有相邻块,所以不是所有的模式都可以在每一帧的顶部和左侧边界上使用。在我们的方案中,**如果加密后的IPM对边界块不可用,则此块的IPM加密将被跳过。这也进一步说明IPM加密在某些特定位置不够安全,应与其他加密方法结合使用。**总之,IPM加密意味着在不违反语义和比特流兼容性的情况下将实际模式更改为另一种模式。

运动矢量差(MVD)加密:

为了同时保护纹理信息和运动信息,不仅要对ipm进行加密,还要对运动矢量进行加密。在H.264/AVC中,进一步对运动矢量进行运动矢量预测,得到MVD。在H.264/AVC标准中,采用Exp-Golomb熵编码对MVD进行编码。Exp-Golomb的码字构造为[M Zeros][1][INFO],其中INFO是一个携带信息的M位字段。**表II显示了mvd的值及其对应的Exp-Golomb码字。码字的最后一位通过使用标准流密码应用逐位异或操作进行加密,标准流密码由加密密钥E_Key3确定。**由表二可知,最后一位加密可能会改变MVD的符号,但不影响码字的长度,满足格式遵从性。也就是说,生成的密文仍然是有效的Exp-Golomb代码。例如,“2”对应的码字为“00100”,“−2”对应的码字为“00101”,两者长度相同。需要注意的是,当MVD的值为0时,其对应的码字“1”在加密过程中保持不变。
在这里插入图片描述

残差数据加密:

为了保持高安全性,另一类敏感数据,即i帧和p帧两者中的残差数据应该加密。本节详细介绍了一种基于码字特性的残差数据加密方法。H.264编码标准中,采用CAVLC熵编码对残差块[19]的量化系数进行编码。每个CAVLC码字可以表示为以下格式:
在这里插入图片描述
为了保持比特流的一致性,在加密过程中不能修改所有的语法元素。例如,Coef f_token、Total_zeros和Run_before 应该保持不变。因此,残余数据加密可以通过修改Sign_of_TrailingOnes和Level的码字来实现。
Sign_of_TrailingOnes是用单比特编码的。比特0被分配给+1,比特1分配给-1 。Sign_of_TrailingOnes的码字通过使用标准流密码应用按位异或操作进行加密(秘钥E_Key4)。每个Level的码字由前缀组成(level_prefix)和后缀(level_suffix)组成:
在这里插入图片描述
表三显示了不同suffixLength的Level和相应的码字。码字的最后一位通过使用标准流密码应用逐位异或操作进行加密,标准流密码由加密密钥E_Key5确定。由表三可知,最后一位加密可能会改变level的符号,但不影响码字的长度,满足格式兼容性。例如:当suffixLength = 1时,“2”对应的码字为“010”,“-2”对应的码字为“011”,长度相同。需要注意的是,当suffixLength等于0时,码字在加密过程中应该保持不变。
在这里插入图片描述

实验结果:

在这里插入图片描述

ESEYE播放效果:

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/463675.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于深度学习mediapipe的人脸打码人脸模糊教程pyqt5界面附源码

一、人脸识别 人脸识别是一门比较成熟的技术。 它的身影随处可见,刷脸支付,信息审核,监控搜索,人脸打码等。 更多的时候,它是方便了我们的生活,足不出户,就可以实现各种 APP 的实名认证&…

格式化数据恢复怎么做?超实用的3种方法在这!

案例:格式化数据怎么恢复 【我的电脑前段时间中病毒了,无奈之下我只能将其格式化,但是很多重要的文件和图片之类的也一起被删除了,有什么方法可以恢复这些格式化的数据吗?非常着急!】 格式化数据恢复&…

1390:食物链【NOI2001】

1390:食物链【NOI2001】 时间限制: 1000 ms 内存限制: 65536 KB 【题目描述】 动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动…

安全常见基础名词概念

一、域名 1、域名:相当网站的名字,互联网上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位。 2、网域名系统(Domain Name System)有时也简称为域名(DNS),是互…

Sametime 12.0.1 FP1发布以及Notes中的SwiftFile使用

大家好,才是真的好。 上周,HCL推出了Sametime 12.0.1FP1FP1更新包程序,包含不少新功能以及很多修复程序。虽然Sametime组件现在不需要运行在Domino服务器上,但毕竟Sametime通常会使用Domino目录或Domino中的LDAP目录服务&#xf…

陆奇最新演讲高清PPT下载;AI 绘画20+工具体验汇总;我愿称MOSS为全球开源界最强;思否AIGC黑客马拉松北京站 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🤖 『陆奇罕见公开演讲「新范式 新时代 新机会」』高清PPT和视频可直接下载 ShowMeAI知识星球资料编号:R054 奇绩创坛创始人兼…

ChatGPT实现命名实体识别(NER, named entity recognization)和词性归类

语义分析词格分类 命名实体识别(NER, named entity recognization)和词性归类是 NLP 技术中的关键一环。过去 NLP 领域有不少流行的开源项目专注在这个领域,如 Spacy、NLTK 等等。我们来试试 ChatGPT 在这方面的表现情况如何。我们从"四渡赤水"的百度百科…

故障预测与健康管理PHM如何做可解释性研究?

首先,故障预测与健康管理PHM基于先进传感器技术获取复杂设备的运行状态信息,借助智能算法实现复杂工程系统的故障诊断、健康状态预测与管理。基于机器学习的PHM技术能够充分挖掘多源异构数据的信息,提高故障诊断、健康状态预测以及剩余寿命估…

uniapp微信小程序连接蓝牙打印机 打印文字、图片

首先感谢几位的文章分享 https://blog.csdn.net/guairena/article/details/127941515 https://blog.csdn.net/qq_37970097/article/details/119148707 效果图: 使用的是 芝柯cc3 蓝牙打印机, 我这里没有存储蓝牙设备相关信息。所以每次打印都会重新初始化并搜索设…

Undefined symbol解决方法

1.初级错误 (1)C中未定义 (2)H中未引用 (3)未包含含有该类型的.H文件 (4)在keil中未添加.C或.H文件到工程 2.C和C代码混合调用引起的未定义错误 1.一般情况下,Error: L6218E: Undefined symbol 若是由于未定义引起的错误,可以根据错误提示定位到相应的…

大模型时代,RPA的冰与火之歌|产业特稿

从市场趋势来看,RPA属性正在逐渐淡化,一些厂商都已瞄准更高阶的智能机器人。可能未来5~10年,随着AI语言模型的发展,RPA的产品逻辑会彻底改变,RPA厂商也会进化到更智能的阶段。 作者|思杭 编辑|皮爷 出…

C#开发的OpenRA的游戏侧边界面

C#开发的OpenRA的游戏侧边界面 OpenRA游戏开始之后,会在右边提供一个游戏侧边界面, 通过这个游戏界面,可以查看游戏状态、执行一些特殊的命令,以及雷达显示, 还有创建各种需要的建筑物,以及生产各种兵种,飞机等等。 这个游戏界面,就是给玩家提供一个操作平台,因此它…

年轻不乏野心,想做年薪40万+的软件测试工程师?写给长途漫漫中的你...

本人从事自动化测试10年多,之前在猪场工作,年薪突破40W,算是一个生活过得去的码农。(仅代表本人) 目前从事自动化测试的薪资待遇还是很不错的,所以如果朋友们真的对自动化感兴趣的话可以坚持学下去&#xf…

开放式蓝牙耳机排行,列举几款值得推荐的开放式蓝牙耳机

开放式耳机是通过人的颅骨振动将声音转换成声波,不通过耳膜,可以听到外界的声音,可以保护耳朵,也可以保护听力。并且大部分的开放式耳机都是采用挂耳式的佩戴设计,即使是长时间佩戴也不会让耳朵感到疲劳,下…

线性回归模型(7大模型)

线性回归模型(7大模型) 线性回归是人工智能领域中最常用的统计学方法之一。在许多不同的应用领域中,线性回归都是非常有用的,例如金融、医疗、社交网络、推荐系统等等。 在机器学习中,线性回归是最基本的模型之一&am…

Cortex-A7中断详解(一)

STM32中断系统回顾 中断向量表NVIC(内嵌向量中断控制器)中断使能中断服务函数 中断向量表 中断向量表是一个表,表里面存放的是中断向量。 中断服务程序的入口地址或存放中断服务程序的首地址成为中断向量,因此中断向量表是一系…

电脑开机memory management错误蓝屏了怎么办?

电脑开机memory management错误蓝屏了怎么办?windows系统出现不兼容问题之后,很容易出现电脑蓝屏的情况。最近有用户遇到了上述的蓝屏错误情况,不知道怎么去进行解决。今天我们就一起来看看以下的解决方法分享吧。 准备工作: 1、U…

yolov5半自动打标签(opencv版本),识别目标画框并将坐标信息保存在xml中

文章目录 1.yolov5预训练模型推理2. opencv边缘检测结果展示 yolov5训练数据集时,需要对数据进行打标签,可以通过两种方法进行半自动化打标签。 1.yolov5预训练模型推理 yolov5预训练模型:将待打标签的图片输入预训练模型中进行推理&#xf…

实现PXE批量网络装机及kickstrat无人值守安装(富士山终究留不住欲落的樱花)

一、PXE概述和部署PXE批量装机 1.PXE简介 PXE(预启动执行环境,在操作系统之前运行)是由Intel公司开发的网络引导技术,c/s架构,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统…

2023_8.0.33版windows版MySql安装_配置远程连接_修改设置初始密码---MySql工作笔记0001

MySQL :: Download MySQL Community Server https://dev.mysql.com/downloads/mysql/ 首先去下载mysql 可以看到这里下载第一个就可以了,最新版的8.0.33 这里点击仅仅下载 just start my download 然后解压到一个文件夹,然后配置一下环境变量 然后新建一个my.ini文件 然后把…