图像比特级置乱加密的安全性

一、概述

Liu等人[1] 提出一种冗余空间转移(简称:RST)加密算法。RST加密中,用户首先将图像分解为8个位平面,根据位平面置乱秘钥置乱图像的位平面以改变图像的像素值。接着,将位平面置乱图像分块,并以块为单位置乱像素值,为了能兼顾在加密图像中隐藏信息和保证加密图像的安全性,分块大小不能太小也不能太大。最后,对所有图像块内的像素值置乱生成最终的加密图像。RST加密保留了图像块高位平面的冗余,能极大地提高RDH-EI算法的嵌入率。对于一些平滑图像,嵌入率甚至能超过2bpp。此外,RST加密还能抵抗现有针对仅置乱加密的KPA攻击和CPA攻击。然而,RST加密不改变明文图像位平面的比特分布特性,且对于8位灰度图像而言,位平面置乱的密钥空间较小,RST加密已经被我们证明在已知明文攻击下存在安全隐患。

[1] Liu, Zi-Long, Pun, Chi-Man, 2018. Reversible data-hiding in encrypted images by redundant space transfer. Inform. Sci. 433, 188–203.

为提高RST加密算法的安全性,Qin[2] 等人对RST加密算法作出了改进,我们称之为IRST加密算法。首先,为解决RST加密中位平面置乱的密钥空间较小的问题,不同图像块用不同的位平面置乱序列置乱块的位平面,达到了增大图像位平面置乱秘钥空间的目的。IRST加密的位平面置乱秘钥空间得到极大提升。接着,分别对图像块和块内像素进行置乱得到最终的密文图像。

[2] Qin, Chuan, Qian, Xiaokang, Hong, Wien, Zhang, Xinpeng, 2019. An efficient coding scheme for reversible data hiding in encrypted image with redundancy transfer. Inform. Sci. 487, 176–192.

Qin提出的加密方法本质上是比特块置乱,对于4*4分块而言,每个比特块有2^16种可能。恢复比特块置乱顺序仅需已知1对明-密文即可。由于Qin加密算法每个比特块置乱顺序都不相同,因此Qin 加密算法的攻击难点在于如何快速恢复比特块内的置乱顺序。

Qin提出的加密过程:
在这里插入图片描述
原始图像的每个像素值分解为8位二进制值,组成MN8大小的二值图像。对二值图像中的比特值置乱,重新合为十进制像素值得到密文。
以一个2×2大小的图像块为例子:
在这里插入图片描述
以Lena图像为例生成比特之乱密文图像:
在这里插入图片描述

二、实验

破解比特置乱需要的明密文对数为:Log2(MN8)。
对于256*256图像而言,至少需要19对以上明密文。所用明文如下:

在这里插入图片描述
分别用19对和25对明密文估计置乱序列解密下面三幅比特之乱后的密文图像:
在这里插入图片描述
当攻击者已知19对明-密文时的 攻击结果(正确率10%):
在这里插入图片描述
当攻击者已知25对明密文攻击结果(正确率20%):
在这里插入图片描述
比特值全局置乱仍然无法抵抗已知明文攻击。

三、 结论

为了提高现有RDH-EI算法的嵌入容量,Liu等人设计了一种冗余空间转移加密方法,将图像的高位平面冗余转移到低位平面以实现对图像内容保护的目的。RST加密先对图像进行位平面值乱以改变原始图像像素的值,接着进行分块置乱以改变像素的位置,生成的加密图像不仅能抵抗现有的COA攻击,还能抵抗现有KPA攻击。针对RST加密中位平面置乱秘钥空间较小的缺点,在不损失嵌入容量的条件下Qin等人提出了改进的IRST加密算法。

实验结果表明RST加密无法抵抗本文提出的KPA攻击。对于IRST加密,当分块大小不小于3×3时,仅利用1对明-密文,块置乱秘钥估计准确率超过50%,位平面置乱秘钥的正确率接近10%,此时已经可以导致密文图像的大部分内容被泄露。即使分块带下小于2×2时,通过利用多对明密文仍可破解密文图像的大部分内容。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【第七在线】利用大数据与AI,智能商品计划的未来已来

随着科技的快速发展,大数据和人工智能(AI)已经成为各行各业变革的重要驱动力。在服装行业,这两大技术的结合正在深刻改变着传统的商品计划方式,引领着智能商品计划的未来。 一、大数据与AI在智能商品计划中的角色 大数据为智能商品计划提供了…

go语言(十)---- 面向对象封装

面向对象的封装 package mainimport "fmt"type Hero struct {Name stringAd intLevel int }func (this Hero) Show(){fmt.Println("Name ", this.Name)fmt.Println("Ad ", this.Ad)fmt.Println("Level ", this.Level)}func (thi…

数据结构——Java实现栈和队列

一、栈 Stack 1.特点 (1)栈是一种线性数据结构 (2)规定只能从栈顶添加元素,从栈顶取出元素 (3)是一种先进后出的数据结构(Last First Out)LIFO 2.具体实现 Java中可…

Python 并发编程

文章目录 Python 并发编程1. 基本概念1.1 CPU 密集型计算1.2 IO 密集型计算1.3 多线程,多进程,多协程的对比1.4 怎么根据任务选择对应的技术? 2. 全局解释器锁 GIL2.1 Python 速度慢的两大原因2.2 GIL 是什么?2.3 为什么有 GIL ?2.4 怎样规…

蓝桥杯备战 每日一题 (2)

今天的题目是回忆迷宫 这个题目我们来熟悉一下 弗洛伊德算法 的代码模板 弗洛伊德算法用来处理最短路径问题 弗洛伊德算法(Floyd’s algorithm)用于解决图中所有节点对之间的最短路径问题。算法的基本思路是通过逐步迭代更新节点对之间的最短路径长度&a…

力扣日记1.19-【二叉树篇】538. 把二叉搜索树转换为累加树

力扣日记:【二叉树篇】538. 把二叉搜索树转换为累加树 日期:2023.1.19 参考:代码随想录、力扣 ps:因为准备组会汇报又搁置了好久(其实就是懒逃避T^T),但这是最后一道二叉树啦啊啊啊!&#xff01…

串口通信自用

定义 串口(Serial Port)是一种用于数据通信的接口标准,它通过物理线路将数据以逐位的方式传输。串口通信可以在计算机和外部设备之间进行数据交换,常用于连接调制解调器、打印机、传感器、嵌入式系统等设备。常用的通信协议协议有…

day02:列表、表格、表单

01-列表 作用&#xff1a;布局内容排列整齐的区域。 列表分类&#xff1a;无序列表、有序列表、定义列表。 无序列表 作用&#xff1a;布局排列整齐的不需要规定顺序的区域。 标签&#xff1a;ul 嵌套 li&#xff0c;ul 是无序列表&#xff0c;li 是列表条目。 <ul>…

【信号与系统】【北京航空航天大学】实验四、幅频、相频响应和傅里叶变换

一、实验目的 1、 掌握利用MATLAB计算系统幅频、相频响应的方法&#xff1b; 2、 掌握使用MATLAB进行傅里叶变换的方法&#xff1b; 3、 掌握使用MATLAB验证傅里叶变换的性质的方法。 二、实验内容 1、 MATLAB代码&#xff1a; >> clear all; >> a [1 3 2]; …

rabbitmq的介绍、使用、案例

1.介绍 rabbitmq简单来说就是个消息中间件&#xff0c;可以让不同的应用程序之间进行异步的通信&#xff0c;通过消息传递来实现解耦和分布式处理。 消息队列&#xff1a;允许将消息发到队列&#xff0c;然后进行取出、处理等操作&#xff0c;使得生产者和消费者之间能够解耦&…

C++初阶--自我实现vector

实现模板 #include<assert.h> #include<string.h> #include<iostream> #include<list> using namespace std; namespace fnc {template<class T>class vector{public:typedef T* iterator;typedef const T* const_iterator;//构造函数vector(){…

五、模 板

1 泛型编程 以往我们想实现一个通用的交换函数&#xff0c;可能是通过下面的方式来实现的&#xff1a; void Swap(int& left, int& right) {int temp left;left right;right temp; } void Swap(double& left, double& right) {double temp left;left ri…

递归、搜索与回溯算法(专题一:递归)

往期文章&#xff08;希望小伙伴们在看这篇文章之前&#xff0c;看一下往期文章&#xff09; &#xff08;1&#xff09;递归、搜索与回溯算法&#xff08;专题零&#xff1a;解释回溯算法中涉及到的名词&#xff09;【回溯算法入门必看】-CSDN博客 接下来我会用几道题&#…

【深度学习每日小知识】Artificial Intelligence 人工智能

人工智能 (AI) 是一个快速发展的领域&#xff0c;有潜力改变我们的生活和工作方式。人工智能已经为从自动驾驶汽车到个性化医疗等各个行业做出了重大贡献。然而&#xff0c;与任何新技术一样&#xff0c;人工智能也存在许多问题和担忧。在这里&#xff0c;我们将探讨有关人工智…

【Qt开发】初识Qt

文章目录 1. Qt的背景1.1 Qt是什么1.2 Qt的发展史1.3 Qt支持的平台 2. Qt开发环境的搭建2.1 Qt SDK下载2.2 Qt SDK的安装 3. 一个简单的Qt模板程序的创建4. Qt模板程序的代码讲解4.1 main.cpp4.2 widget.h4.3 widget.cpp4.4 widget.ui4.5 test_1_18.pro4.6 一些中间文件 5. Qt在…

算法训练 day24 | 77. 组合

77. 组合 题目链接:组合 视频讲解:带你学透回溯算法-组合问题 回溯其实和递归是密不可分的&#xff0c;解决回溯问题标准解法也是根据三部曲来进行的。 1、递归函数的返回值和参数 对于本题&#xff0c;我们需要用一个数组保存单个满足条件的组合&#xff0c;还需要另一个结果数…

分布式搜索引擎ElasticSearch——深入elasticSearch

分布式搜索引擎ElasticSearch——深入elasticSearch 文章目录 分布式搜索引擎ElasticSearch——深入elasticSearch数据聚合聚合的分类DSL实现Bucket聚合DSL实现Metric聚合RestAPI实现聚合 自动补全DSL实现自动补全查询修改酒店索引库数据结构RestAPI实现自动补全查询实现酒店搜…

elasticsearch6.6.0设置访问密码

elasticsearch6.6.0设置访问密码 第一步 x-pack-core-6.6.0.jar第二步 elasticsearch.yml第三步 设置密码 第一步 x-pack-core-6.6.0.jar 首先破解 x-pack-core-6.6.0.jar 破解的方式大家可以参考 https://codeantenna.com/a/YDks83ZHjd 中<5.破解x-pack> 这部分 , 也可…

Labview局部变量、全局变量、引用、属性节点、调用节点用法理解及精讲

写本章前想起题主初学Labview时面对一个位移台程序&#xff0c;傻傻搞不清局部变量和属性节点值有什么区别&#xff0c;概念很模糊。所以更新这篇文章让大家更具象和深刻的去理解这几个概念&#xff0c;看完记得点赞加关注喔~ 本文程序源代码附在后面&#xff0c;大家可以自行下…

原型设计 Axure RP 9

Axure RP 9是一款专业的原型设计和协作工具&#xff0c;让用户快速创建高保真度的交互原型&#xff0c;模拟真实的用户界面和交互体验。该软件界面布局合理&#xff0c;易于使用&#xff0c;提供丰富的交互功能和效果&#xff0c;如动态面板、变量、条件逻辑、动画等。同时支持…