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

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


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

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

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

在传统的隐写实践中,由于自然采集的多媒体数据(如图像、音频等)的分布通常是未知且不可控的,因此很难实现可证安全隐写。然而,随着生成式人工智能(如生成对抗网络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.xdnf.cn/news/147540.html

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

相关文章

6.数据库-数据库设计

6.数据库-数据库设计 文章目录 6.数据库-数据库设计一、设计数据库的步骤二、绘制E-R图三、关系模式第一范式 (1st NF)第二范式 (2nd NF)第三范式 (3nd NF)规范化和性能的关系 一、设计数据库的步骤 收集信息 与该系统有关人员进行交流、座谈,充分了解用户需求&am…

Vulkan 学习(9)---- vkSuraceKHR 创建

目录 OverView创建窗口表面参考代码 OverView Vulkan 是一个平台无关的图形API,这意味着它不能直接与特定的窗口系统(Windows,linux 和 macOS 的窗口系统)进行交互 为了解决这个问题,Vulkan 引入了窗口系统集成(Window System Intergration …

DOM【JavaScript】

在JavaScript中,DOM (Document Object Model:文档对象模型) 是web页面的编程接口,用于表示和操作 HTML 和 XML 文档。它将文档结构化为一个树形结构,允许开发者通过 JavaScript 访问和修改网页的内容、结构和样式。以下是一些关于…

基于单片机的智能校园照明系统

由于校园用电量较大,本设计可以根据实际环境情况的改变,实现实时照明的控制。本设计以单片机芯片为控制芯片,热释电传感器采集教室中学生出入的信息,并把信息传递给单片机芯片,单片机芯片根据传感器传递过来的信息来控…

【软件测试】Bug 篇

哈喽,哈喽,大家好~ 我是你们的老朋友:保护小周ღ 今天给大家带来的是 【软件测试】Bug 篇,首先了解, 什么是Bug, 如何定义一个Bug, 如何描述一个 Bug, Bug的级别, 和 Bug 的生命周期, 以及测试人员跟开发人员产生争执如何处理,…

【MYSQL】聚合查询、分组查询、联合查询

目录 聚合查询聚合函数count()sum()avg()max()和min()总结 分组查询group by 子句having 子句 联合查询笛卡尔积内连接外连接自连接子查询单行子查询多行子查询from子句使用子查询 合并查询 聚合查询 聚合查询就是针对表中行与行之间的查询。 聚合函数 count() count(列名)&a…

个人随想-代码生成工具v0+claude+cursor

cursor出来已经有一段时间了,不知道大家用了感觉怎么样。今天就以我个人为例,给大家介绍一下我是如何使用cursor搭建原型。 首先,我并不觉得cursor对于后端程序员带来了革命性改进,我们与很多团队沟,使用cursor80%以上…

spring中的容器接口的实现类和功能

容器实现 BeanFactory 实现 这里我们就来一步步实现BeanFactory的功能。 首先创建我们需要的类 Configuration static class Config{Beanpublic Bean1 bean1(){return new Bean1();}Beanpublic Bean2 bean2(){return new Bean2();}}static class Bean1{private static fina…

【Linux】Shell 编程规范及检查工具推荐

本文内容均来自个人笔记并重新梳理,如有错误欢迎指正! 如果对您有帮助,烦请点赞、关注、转发、订阅专栏! 专栏订阅入口 | 精选文章 | Kubernetes | Docker | Linux | 羊毛资源 | 工具推荐 | 往期精彩文章 【Docker】(全…

【RH124】解释Linux文件系统权限

RH124教材中控制对文件的访问一章中有一道解释Linux文件系统权限的测验题,可以一起来看看: 一、权限解释 这是通过 ls -l 命令查看的结果。它显示了文件或目录的权限、拥有者、所属组等信息。 1、长列表的第一个字符表示文件类型: -是常…

【C语言零基础入门篇 - 16】:栈和队列

文章目录 栈和队列栈栈功能的实现源代码 队列队列功能的实现源代码 栈和队列 栈 什么是栈:功能受限的线性数据结构 栈的特点:先进后出 。例如:仓库进货、出货。 栈只有一个开口,先进去的数据在栈底(bottom&#xf…

STM32篇:STM32CubeMX的安装

一.介绍与安装 1.作用 通过界面的方式,快速生成工程文件。 2.下载 官网 https://www.st.com/zh/development-tools/stm32cubemx.html#overview 3.安装 一路下一步,建议不要安装在C盘 4.配置 更新固件包位置(比较大,默认在…

LeetCode 257. 二叉树的所有路径(回溯详解)

文章目录 LeetCode 257. 二叉树的所有路径思路递归版本一:非常明确的回溯代码版本二:精简的回溯代码 LeetCode 257. 二叉树的所有路径 LeetCode 257. 二叉树的所有路径 给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节…

全网最适合入门的面向对象编程教程:51 Python函数方法与接口-使用Zope实现接口

全网最适合入门的面向对象编程教程:51 Python 函数方法与接口-使用 Zope 实现接口 摘要: 在 Python 中,Zope 提供了一种机制来定义和实现接口。Zope 的接口模块通常用于创建可重用的组件,并确保组件遵循特定的接口规范。 原文链…

力扣 209.长度最小的子数组

一、长度最小的子数组 二、解题思路 采用滑动窗口的思路&#xff0c;详细见代码。 三、代码 class Solution {public int minSubArrayLen(int target, int[] nums) {int n nums.length, left 0, right 0, sum 0;int ans n 1; for (right 0; right < n; right ) { …

【二等奖论文】2024年华为杯研赛D题成品论文(后续会更新)

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片&#xff0c;那是获取资料的入口&#xff01; 点击链接获取【2024华为杯研赛资料汇总】&#xff1a; https://qm.qq.com/q/jTIeGzwkSchttps://qm.qq.com/q/jTIeGzwkSc 题 目&#xff1a; 大数据驱动的…

一劳永逸:用脚本实现夸克网盘内容自动更新

系统环境&#xff1a;debian/ubuntu 、 安装了python3 原作者项目&#xff1a;https://github.com/Cp0204/quark-auto-save 感谢 缘起 我喜欢看电影追剧&#xff0c;会经常转存一些资源到夸克网盘&#xff0c;电影还好&#xff0c;如果是电视剧&#xff0c;麻烦就来了。 对于一…

深度学习-卷积神经网络(CNN)

文章目录 一、网络构造1. 卷积层&#xff08;Convolutional Layer&#xff09;&#xff08;1&#xff09;卷积&#xff08;2&#xff09;特征图计算公式&#xff08;3&#xff09;三通道卷积 2. 激活函数&#xff08;Activation Function&#xff09;3. 池化层&#xff08;Pool…

【JUC并发编程系列】深入理解Java并发机制:线程局部变量的奥秘与最佳实践(五、ThreadLocal原理、对象之间的引用)

文章目录 【JUC并发编程系列】深入理解Java并发机制&#xff1a;线程局部变量的奥秘与最佳实践(五、ThreadLocal原理、对象之间的引用)1. 基本 API 介绍2. 简单用法3. 应用场景4. Threadlocal与Synchronized区别5. 内存溢出和内存泄漏5.2 内存溢出 (Memory Overflow)5.2 内存泄…

全栈项目小组【算法赛】题目及解题

题目&#xff1a;全栈项目小组【算法赛】 题目&#xff1a; 解题思路 1.遍历简历信息&#xff1a;我们需要读取所有简历&#xff0c;根据期望薪资和岗位类型进行分类和统计。 2.分类统计&#xff1a;使用哈希表来存储每个薪资下的前端&#xff08;F&#xff09;和后端&#…