论文阅读 | 可证安全隐写(网络空间安全科学学报 2023)

news2024/9/23 9:24:30

 可证安全隐写:理论、应用与展望


一、什么是可证安全隐写?

对于经验安全的隐写算法,即使其算法设计得相当周密,隐写分析者(攻击者)在观察了足够数量的载密(含有隐写信息的数据)和载体(不含有隐写信息的原始数据)之后,往往能够发现二者之间的统计差异,从而在一定程度上区分它们。这种区分能力通常被称为攻击者的优势。

可证安全的隐写算法在于确保隐写后的载体(即含有隐藏信息的数据)在统计上与原始载体(不含有隐藏信息的数据)无法被区分。这种技术追求的是在理论上能够证明,即使对于拥有无限计算资源的攻击者,也无法通过分析数据来检测出隐写的存在。

在传统的隐写实践中,由于自然采集的多媒体数据(如图像、音频等)的分布通常是未知且不可控的,因此很难实现可证安全隐写。然而,随着生成式人工智能(如生成对抗网络GAN、变分自编码器VAE等)的快速发展,情况发生了变化。这些生成模型能够学习并生成遵循特定分布的数据,而这个分布是已知且可控的。利用生成模型的这一特性,可证安全隐写开始从理论走向应用。

具体来说,隐写算法可以利用生成模型来创建隐写数据,这些数据在分布上与模型生成的普通数据无法区分。这样,即使攻击者知道隐写算法的存在,也无法仅通过分析数据来确定哪些数据是隐写的,因为隐写数据和普通数据在统计上是一致的。

二、技术路线/发展脉络 

1、经典构造方法——基于拒绝采样

1949年,Shannon指出建立隐蔽通信系统理论的困难性。直到二十世纪九十年代,学界开始借鉴可证安全密码的发展思路提出隐写的安全性理论。1998年,Cachin引入相对熵概念定义了隐写的信息论安全,但就像信息论安全的密码一样,实际应用的成本很高。2002年,Hopper等人提出了计算安全隐写定义,同时给出了两个基于拒绝采样的可证安全隐写构造,其安全性分别归约为伪随机函数族的伪随机性加密算法的安全性。然而,如算法1所示,拒绝采样需要 “载体分布可精确采样”,生成在统计上与原始载体无法区分的载密数据。

显然若m是要嵌入的消息,则采样到的样本c就表达了消息m,接收方将c代入判别函数f就能提取消息m。利用拒绝采样构造计算安全的隐写算法关键是在拒绝采样里面判决函数f函数怎么选取

(1)基于伪随机函数族的构造方法

这种方法使用伪随机函数族来生成载密数据。伪随机函数族在不知道密钥的情况下应该表现得像真正的随机函数。

通俗理解如下

1)伪随机函数族:这是一种特殊的函数集合,它们生成的输出看起来是随机的,但实际上是根据一个密钥确定的。这种函数在密码学中非常重要,因为它们可以用来加密信息。

2)拒绝采样:这是一种生成载密数据(含有隐藏信息的数据)的方法。它通过不断尝试,直到找到一个符合条件的数据样本。

3)算法步骤

  1. 加密消息:先把要隐藏的消息用一个安全的算法加密。
  2. 拒绝采样:然后根据加密后的消息,从载体中挑选出合适的数据,直到找到满足特定条件的数据样本。
  3. 生成载密数据:找到的这个样本就是载密数据,它包含了加密后的消息。
  4. 提取消息:接收方收到载密数据后,可以用相同的密钥和算法还原出原始的消息。

4)安全性体现:

  • 这种构造的安全性基于伪随机函数族的不可预测性。
  • 如果攻击者无法区分伪随机函数的输出和真正随机数,那么他们也就无法确定哪些数据是被隐藏了信息的(载密数据),哪些是没有隐藏信息的(载体数据)。这是因为伪随机函数(在隐写中用于生成载密数据)如果足够好,它的输出看起来就像自然产生的数据一样。
  • 密钥是用于控制伪随机函数的,只有知道密钥的人才能从伪随机函数生成的数据中提取出隐藏的信息。如果攻击者不知道密钥,他们就无法使用伪随机函数的逆过程来获取隐藏的信息,因此他们也就无法区分哪些数据是载密的,哪些不是。这就保护了隐写术的安全性。

5)那么真正的接受者如何获取秘密信息呢?【密钥、纠错码编码译码、伪随机函数】

(2)基于无偏函数的构造方法 

这种方法假设存在一个无偏函数,它对所有输入的输出都是等概率的。

通俗解释

1)无偏函数:这是一种特殊函数,无论输入是什么,它的输出都是完全随机的,没有任何偏差。简单来说,就是这个函数对所有可能的结果都是公平的,每个结果出现的机会都一样。

2)算法步骤

  1. 加密消息:首先,用一个安全的加密方法(比如一个密码锁)把要隐藏的消息加密,变成一串看起来随机的数字(密文)。
  2. 使用无偏函数:然后,用这个无偏函数和加密后的消息来生成载密数据(含有隐藏信息的数据)。这个过程中,无偏函数确保每个可能的输出都是随机且等概率的。
  3. 隐藏信息:这样生成的载密数据就被用来隐藏原始消息,外人很难发现里面隐藏了信息。

3)安全性的体现:如果这个加密方法足够安全,那么即使有人知道使用了无偏函数,他们也无法从载密数据中提取出隐藏的消息,因为加密后的消息本身就是随机的,而且无偏函数的输出也是随机的。

4)那么真正的接受者如何获取秘密信息呢?【密钥可逆的无偏函数

2、基于生成式AI的可证安全隐写构造

当前生成式人工智能兴起,可以生成文本、图像、音视频等各种数据。生成数据一般由机器学到的分布产生,由于分布已知或可控,满足了设计可证安全隐写的基本条件,可证安全隐写得以从理论走向应用。2018年,中国科大俞能海、张卫明老师团队最早提出了基于生成式人工智能实现可证安全隐写的思路,并给出了基于图像生成模型的实例(如图1所示),但是由于当时生成式AI的效果并不理想,缺少有影响的应用,所以生成式可证安全隐写并没有被关注。到2021年,生成式人工智能技术及应用爆发,中科大、清华大学、牛津大学、波士顿大学和约翰霍普金斯大学等提出了一系列生成式可证安全隐写方法。典型的构造包括分布分组、区间可逆采样、样本分组、分布耦合和分布副本(如图2-6所示)。 

(1)基于图像生成模型的实例

这种方法通过将加密消息映射到与生成模型统计一致的高斯分布向量,并利用模型逆过程生成难以区分的载密数据,实现高度隐蔽的可证安全隐写。

WaveGlow生成模型扮演声码器的角色,是一种可逆生成模型,它在波形层面建模,在声学特征作为辅助条件下实现高斯变量与语音信号的可逆映射

(2)基于分布分组

  • 原理:将高斯分布按照累计分布均匀划分成多个子区域每个子区域对应一个消息比特。根据消息比特,在相应的子区域内进行随机采样,然后将采样得到的高斯变量输入到生成模型中,生成载密音频。
  • 特点:利用生成模型的可逆性,通过控制采样区域来嵌入信息。
  • 注:若要扩大信息容量即单个样本点嵌入n比特信息,则将高斯分布按照累计分布均匀划分成2^n个子区域,根据n比特信息选图选择对应子区域采样即可。

 (3)基于区间可逆采样

利用生成模型的逆过程,将秘密信息嵌入到特定的数据区间中。这种方法的优点是可以从载密数据中准确地恢复出原始信息,即使在数据经过一定处理后。

  • 原理:在生成模型输出当前待生成词的概率分布后,将加密信息转化的随机数掉落在某个概率区间内,完成随机采样过程。落入同一区间内的随机数会采样到相同的词,这些随机数拥有相同的前缀。
  • 特点:解决了通道最小熵要求的问题,通过区间可逆性实现隐写。
  • 存在问题:基于区间可逆采样的方法未能充分利用生成模型提供分布的信息熵。

 基于随机采样过程的区间可逆性,提出了一种类算术编码的可证安全隐写方法。这个方法的简化解释如下:

  1. 生成模型和概率分布:使用一个生成模型来生成文本,这个模型会为每个可能生成的词(如“was”)输出一个概率分布。

  2. 加密信息的嵌入将加密后的信息转换成随机数,这些随机数根据概率分布被用来选择具体的词。例如,如果随机数落在“was”这个词的概率区间内,就选择“was”。

  3. 区间可逆性:确保同一区间内的随机数总是选择相同的词,这样可以通过词的选择来隐写信息。例如,如果“was”的概率区间内的随机数都以“01”为前缀,那么选择“was”就隐含了这2位信息。

  4. 迭代嵌入:在生成文本的过程中,不断地将加密信息嵌入到生成的词中。如果还有信息未嵌入,就在下一轮生成中继续嵌入,直到所有信息都嵌入完毕。

  5. 接收方的提取接收方收到载有隐写信息的文本后,通过重现生成过程和分析词的概率区间,可以提取出加密信息。

  6. 解决熵问题:通过动态调整每个生成词携带的信息量,适应生成过程中熵的变化,确保即使在熵较低的情况下也能有效地嵌入信息。

  7. 防止随机数重用:每次生成词时都重新加密待嵌入的信息,避免随机数重用,增加隐写的安全性。

这种方法通过精细控制信息嵌入的过程,确保了隐写信息的隐蔽性和安全性,使得攻击者难以检测到隐写的存在。

 (4)基于样本分组(不太理解)

  • 原理:自适应地将生成模型输出的显式概率分布动态地划分成概率和相等的组,以分组序号表示秘密消息。发送方和接收方需要共享相同的隐写参数。
  • 特点:通过分组和递归思想,实现秘密消息的嵌入和提取。
  • 存在问题:基于样本空间分组的方法需要对离散概率分布分布进行均匀划分,这个条件在具体应用中难以严格实现。

 清华大学团队提出的这种方法具体是这样工作的:

  1. 确定分组数目:首先,使用一个生成模型来预测可能出现的数据(比如文本中的下一个词)及其概率。然后,基于这些概率的分布特性,决定将数据分成多少组。这就像把一堆不同颜色的球分成几个桶,每个桶里的球颜色都差不多。

  2. 分组和填充:接下来,使用一种查找算法,根据概率的大小,找到最接近的词来填充每个分组。这就像是根据球的大小,将它们放入相应的桶中。

  3. 选择和归一化:利用秘密消息(比如一个随机生成的数字序列),选择一个特定的分组。然后,对这个分组内的数据进行处理,使得它们在统计上看起来是均匀分布的。这就像是在选定的桶中,将球重新排列,使得它们看起来没有规律。

  4. 采样和嵌入:最后,使用一个普通的采样器,从选定的分组中随机选择一个词。这个被选中的词就包含了秘密信息,就像是在桶中随机挑选一个球,这个球就代表了隐藏的信息。

  5. 提高嵌入容量和效率:为了在有限的数据中隐藏更多的信息,或者加快信息隐藏的速度,可能会采用一些优化技术,比如递归嵌入和剪枝策略。这就像是找到更巧妙的方法来在桶中放入更多的球,或者更快地挑选出代表秘密信息的球。

这种方法的关键在于,它确保了隐藏信息的过程在统计上与自然生成的数据无法区分,因此很难被检测到。

(5)基于分布耦合

 将秘密信息的分布与生成模型的输出分布进行耦合,通过控制信息的嵌入过程来确保载密数据与原始数据在统计上不可区分。

  • 原理:将隐写过程视为由消息分布和信道条件分布建立的一种耦合,通过均匀分布的消息通过耦合控制对信道条件分布的采样,从而将消息映射成服从载体分布的样本。
  • 特点:利用最小熵耦合策略,构建出在概率的平均意义下最优的隐写方案
  • 存在问题:基于最小熵耦合的隐写构造存在密文消息不能正确提取信息的情况,并且嵌入速度慢。

 基本概念

  1. 消息分布和信道条件分布消息分布指的是隐写时要隐藏的信息的分布。信道条件分布指的是用于隐藏信息的载体数据的分布。

  2. 耦合(Coupling):耦合是将两个概率分布(消息分布和信道条件分布)结合起来,形成一个联合分布的过程。这种联合分布用于控制从信道条件分布中采样的过程。

耦合的构建

  1. 分布耦合:分布耦合是一种将信息隐藏技术与数据生成过程相结合的方法。它通过将信息嵌入到数据生成模型的输出中,使得隐藏信息后的载密数据在统计特性上与原始数据保持一致。

  2. 最小熵耦合(MEC, Minimum Entropy Coupling):最小熵耦合是一种特殊的耦合方式,它通过最小化联合分布的信息熵来构建最优的隐写方案。信息熵是衡量随机性的一个指标,最小化熵意味着使得耦合后的分布尽可能地接近原始分布。

  3. 迭代最小熵耦合(iMEC):迭代最小熵耦合是一种实现最小熵耦合的方法,它通过迭代过程不断优化耦合,直到达到信息熵的最小值。这个过程包括:

    • 将采样结果反馈,更新消息后验分布。
    • 根据消息控制从信道条件分布中采样。
    • 耦合当前的消息后验分布与信道条件分布。

隐写过程

  1. 消息嵌入:在消息嵌入过程中,使用耦合来控制从信道条件分布中采样,从而将消息映射成服从载体分布的样本。

  2. 消息提取:接收方通过逆向操作,从载密数据中提取出隐藏的信息。这通常涉及到对耦合过程的逆过程。

通过这种方法,可以实现在不损害数据质量的前提下,将秘密信息安全地隐藏在载体数据中,同时确保信息的隐蔽性和安全性。

 (6)基于分布副本

 为给定的概率分布创建多个副本,然后使用这些副本的索引值来表示秘密信息。这种方法可以充分利用生成模型提供的概率分布信息,提高信息隐藏的效率和安全性。

  • 原理:利用生成模型生成多个副本或变体的数据,通过在这些副本中嵌入不同的秘密信息或进行微小的修改,使得每个副本都看似独立且自然,但实则都含有隐写信息。
  • 特点:通过增加数据的多样性来增强隐写的隐蔽性。

这种方法通过创建多个分布副本来实现,每个副本都是原始概率分布的一个变体。下面将解释这个过程:

  1. 原始概率分布:假设有一个概率分布,它定义了生成数据(如文本、图像或语音)的各种可能方式。

  2. 创建分布副本:为了隐藏信息,我们创建多个分布副本。每个副本都是原始分布的一个“复制”,但通过某种方式(如循环移位)进行了修改,使得每个副本在统计特性上与原始分布相同,但具体实现细节不同。

  3. 信息嵌入将秘密信息(例如,二进制消息“0”或“1”)映射到不同的分布副本上。例如,如果信息是“0”,则可能选择“copy 0”,如果信息是“1”,则选择“copy 1”。

  4. 随机采样:从选定的分布副本中进行随机采样以生成载密数据。这个过程模拟了自然数据的生成过程,但嵌入了秘密信息。

  5. 载密数据的生成:载密数据生成后,它包含了隐藏的信息,但在感官上与未隐写的数据无法区分。

  6. 信息提取:接收方知道如何从载密数据中提取信息,因为他们知道分布副本的构造和秘密信息对应的副本。

  7. 循环移位示例:图中的“rotate left by 0.5”和“copy 0”、“copy 1”可能表示了循环移位的过程,其中分布的区间被向左移动了0.5个单位,创建了两个不同的副本。

  8. 索引值:图中的“x_t=b”和“x_{t}=d”可能表示了在特定时间步骤r^{(t)}=0.2中,根据分布副本的索引值选择的采样结果。

这种方法的关键在于,它允许在不显著改变数据外观的情况下嵌入信息,同时确保了只有知道正确分布副本构造的接收方才能提取出隐藏的信息。这种方法提供了一种在理论上可证明安全的隐写手段,使得即使在攻击者拥有强大计算资源的情况下,也无法检测到隐写信息的存在。


对基于生成模型的可证隐写方法理解的不是很透彻,详细还得细读论文内容。后续学习过程中,有新的理解会继续完善、改正。

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

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

相关文章

Redis数据结构之list列表

一.list列表 列表相当于数组或者顺序表 它里面的元素是有序的,也就是可以通过下标进行访问。这里的有序的含义是要根据上下文区分的,有的时候,有序指的是升序/降序,有的时候有序指的是顺序很关键,俩个元素交换后就不…

Spring6梳理10—— 依赖注入之注入数组类型属性

以上笔记来源: 尚硅谷Spring零基础入门到进阶,一套搞定spring6全套视频教程(源码级讲解)https://www.bilibili.com/video/BV1kR4y1b7Qc 目录 10 依赖注入之注入数组类型属性 10.1 创建Emp实体类,Dept实体类 10.2…

Java 每日一刊(第15期):内部类

文章目录 前言内部类成员内部类(Member Inner Class)静态内部类(Static Nested Class)局部内部类(Local Inner Class)匿名内部类(Anonymous Inner Class) 内部类的详细对比内部类字节…

浅谈Spring Cloud:Nacos的配置

Nacos,一个更易于构建云原生应用的动态服务发现,配置管理和服务管理平台。所以Nacos是⼀个注册中心组件,但它又不仅仅是注册中心组件。 目录 安装 注册 负载均衡 环境隔离 配置管理 搭建集群 安装 在官网下载好安装包解压后&#xf…

深度学习01-概述

深度学习是机器学习的一个子集。机器学习是实现人工智能的一种途径,而深度学习则是通过多层神经网络模拟人类大脑的方式进行学习和知识提取。 深度学习的关键特点: 1. 自动提取特征:与传统的机器学习方法不同,深度学习不需要手动…

手机在网状态查询接口如何用Java进行调用?

一、什么是手机在网状态查询接口? 手机在网状态查询接口,又叫运营商在网状态查询,手机号在网状态查询,传入手机号码,查询该手机号的在网状态,返回内容有正常使用、停机、在网但不可用、不在网(…

【网络】高级IO——epoll版本TCP服务器初阶

目录 前言 一,epoll的三个系统调用接口 1.1.epoll_create函数 1.1.1.epoll_create函数干了什么 1.2. epoll_ctl函数 1.2.1.epoll_ctl函数函数干了什么 1.3.epoll_wait函数 1.3.1.epoll_wait到底干了什么 1.4.epoll的工作过程中内核在干什么 二,…

【Elasticsearch系列廿】Logstash 学习

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

PostgreSQL 的log_hostname 参数测试

PostgreSQL 的log_hostname 参数测试 log_hostname 是 PostgreSQL 配置文件 (postgresql.conf) 中的一个参数,用于控制是否在日志条目中记录客户端主机名。默认情况下,PostgreSQL 只记录客户端的IP地址,而 log_hostname 参数允许数据库管理员…

【最基础最直观的排序 —— 冒泡排序算法】

最基础最直观的排序 —— 冒泡排序算法 冒泡排序(Bubble Sort)是一种计算机科学领域的较简单的排序算法,属于交换排序。其基本思想是在待排序的一组数中,将相邻的两个数进行比较,若前面的数比后面的数大就交换两数&am…

农产品商城系统小程序的设计

管理员账户功能包括:系统首页,个人中心,用户管理,产品分类管理,热销农产品管理,订单管理,系统管理 微信端账号功能包括:系统首页,热销弄产品,网站公告&#…

基于c++实现的简易shell

代码逻辑 核心思想 解析命令行,拆解命令及其选项创建子进程,在子进程中执行命令如果是前台执行命令,则父进程就阻塞等待子进程中命令执行结束后回收子进程的资源如果是后台执行命令,则父进程不进行阻塞等待,可继续向下…

STM32 软件触发ADC采集

0.91寸OLED屏幕大小的音频频谱,炫酷! STM32另一个很少人知道的的功能——时钟监测 晶振与软件的关系(深度理解) STM32单片机一种另类的IO初始化方法 ADC是一个十分重要的功能,几乎任何一款单片机都会包含这个功能&a…

记一次MySQL索引不当引发死锁问题

一、前言 在并发量很低的情况下,mysql 的响应时延一切正常,一旦并发量上去了,mysql就会出现死锁的情况,你有没有遇到过?到底是是什么原因导致的呢,让我们一起看看真实的案例。 二、遇到的问题 先介绍一下…

LabVIEW提高开发效率技巧----利用第三方库和工具

LabVIEW开发不仅依赖于自身强大的图形化编程能力,还得益于其庞大的用户社区和丰富的第三方库。这些工具和库能够帮助开发者快速解决问题,提升开发效率,避免从头开始编写代码。 1. LabVIEW工具网络(NI Tools Network) …

MateBook 16s 2023在Deepin下开启性能模式,调节风扇转速到最大,全网首发!

方法 在Deepin下按住Fnp快捷键,开启性能模式。 验证 首先去debian下载acpi-call-dkms https://packages.debian.org/sid/all/acpi-call-dkms/download 然后使用root用户执行: apt install --simulate ./acpi-call-dkms_1.2.2-2.1_all.deb apt inst…

LeetCode 面试经典150题 191.位1的个数

Java中的算术右移和逻辑右移的区别 题目:编写一个函数,获取一个正整数的二进制形式并返回其二进制表达式中设置位的个数(也被称为汉明重量)。 设置位的个数即二进制中1的个数。 思路:方法一:因为正数的原…

基于阿里云免费部署Qwen1-8B-chat模型并进行lora参数微调从0到1上手操作

文章目录 一、申请资源二、创建实例三、克隆微调数据四、部署Qwen1-8B-chat模型1、环境配置2、模型下载3、本地模型部署 五、模型微调1、拉取Qwen仓库源码2、微调配置3、合并微调参数4、本地部署微调模型 一、申请资源 阿里云账号申请PAI资源详细教程我已于部署ChatGLM3时写过…

Golang | Leetcode Golang题解之第430题扁平化多级双向链表

题目: 题解: func dfs(node *Node) (last *Node) {cur : nodefor cur ! nil {next : cur.Next// 如果有子节点,那么首先处理子节点if cur.Child ! nil {childLast : dfs(cur.Child)next cur.Next// 将 node 与 child 相连cur.Next cur.Chi…

遗传算法与深度学习实战(14)——进化策略详解与实现

遗传算法与深度学习实战(14)——进化策略详解与实现 0. 前言1. 进化策略1.1 进化策略原理1.2 将进化策略应用于函数逼近 2. 实现进化策略小结系列链接 0. 前言 进化策略 (Evolutionary Strategies, ES) 是进化计算和遗传方法的扩展,增加了控…