信息交换中的幽灵—阈下信道

admin 2023年6月14日18:31:16评论10 views字数 5383阅读17分56秒阅读模式
一. 引言

假设XX和YY是某公司的员工,他们分布在不同的楼层,他们每天通过聊天工具协商“摸鱼”计划,但聊天工具的网络是被公司网络中心给监控起来的,而且公司要求,所有的聊天信息必须是明文,以此方便被审计;这可咋搞?如果明文传输的话,老板肯定就知道了,那这样就得找他们谈话了,为了“摸鱼”计划,他们两个绞尽脑汁的想到了一个办法,即把真实的信息隐藏到聊天中;比如暗号之类的。

经典的信息隐藏技术藏头诗就是一种。如下(本人水平有限,请大佬ChatGPT帮忙写的,摸鱼不给写):

图1 案例1
但这样的话可能就会出现一个情况:
1、 这样的信息隐藏方式太过于简单了,很容易就能分析出来;
2、 关键是老板是人中龙凤,技术那可是一流,不说人类第一,那也在人类龙虎榜上,他可以使用技术手段去实现欺骗他们,让他们乖乖听话,通过把信息拦截后,对数据进行修改,修改成如下:

图2 案例2
为了避免这种情况的发生,所以XX和YY就得想出更完美的方案;这2个也是人才啊,他们想到了更加隐蔽的嵌入方式且加入消息认证的方式去交流。我们看看他们是怎么来搞的。
二. 概要介绍
针对上面2个员工的情况,他们知道肯定需要信息隐藏技术来实现,于是就学习了如下的一点知识。
信息隐藏技术包括隐写术、阈下信道和隐信道技术、隐匿签字技术、隐匿通信技术、数字水印、数字指纹、隐匿标记、数据锁定等技术。
这里主要介绍一下阈下信道和数据水印相关的技术。
  • 阈下信道
这一概念最早是由G.J.Simmons于1978年在美国圣地亚国家实验室提出的。1983年Simmons通过一个在看守(Warden)的完全监视下两个囚犯如何协商逃跑计划的例子引入了该信道,并正式将其命名为阈下信道。模型如下[1]:

假设Alice和Bob被捕入狱,Alice被关在A牢房,而Bob被关在B牢房。看守Walter同意他们交换消息,但不允许他们加密。因为Walter担心他们会商讨逃跑计划,告知他们对他们交换的所有信息都要进行阅读。数据流如下图所示:

图3 通信模型
但Alice和Bob就是要协商计划,所以肯定不能把计划以明文传输的方式进行交换消息,所以得想一个办法来秘密的交换信息;同时Walter希望欺骗他们,他希望他们中的一个将一份欺诈的消息当做来自另一个人的真实消息。不过Alice和Bob愿意冒这种欺诈的危险,因为他们必须商讨他们的逃跑计划。为了完成这件事情,他们肯定要欺骗看守,并找出一个秘密通信的方法。他们建立一个阈下信道,即完全在Walter视野内的、他们之间的一个秘密通信信道。通过交换无害的签名的消息,他们可以互相传送秘密消息,并骗过Walter,即使Walter始终监视着所有的通信。
阈下信道的超强的隐蔽性,为很多应用提供了良好的平台,例如应用于xx情报、个人隐私、签名防伪、货币水印等等。可以预见,阈下通信还会有更多的新的应用有待发展,其军用、社会、商业价值非常巨大,在电子信息快速发展的今天,随着业务电子化和网络化的迅猛发展以及研究的不断深入,阈下通信技术必将有更加广阔的应用空间。
  • 数字水印

数字水印技术是20 世纪90年代出现的一门崭新的技术,它通过在数字产品中嵌入可感知或不可感知的信息来确定数字产品的所有权或检验数字内容的原始性。数字水印技术弥补了加密解密技术不能对解密后的数据提供进一步保护的不足,弥补了数字签名不能在原始数据中一次性嵌入大量信息的弱点,弥补了数字标签容易被修改和剔除的缺陷,弥补了数字指纹仅能给出破坏者信息的局限。
数据水印技术是指在数据中显示或隐式的嵌入水印信息,以此达到确权或溯源的目的,场景如下图所示:

图4 水印模型
数字水印技术目前已经是一个刚需,可以解决如下现实问题:
  • 对于监察方:调查取证,追究责任
  • 对于数据管理方:规避风险,划清责任
  • 对于数据所有方:数据版权保护;数据泄露溯源,追究责任
二. 概要介绍
下面从3个类别分别介绍3种阈下通信的方案
2.1
基于Diffie-Hellman秘钥交换协议[2]的阈下信道方案

Diffie-Hellman(简称 DH)算法是Whitefield DiffieMartin Hellman1976年公布的一种秘钥交换算法,它是一种建立秘钥的方法,而不是加密方法,所以秘钥必须和其他一种加密算法结合使用。这种秘钥交换技术的目的在于使两个用户安全的协商一个会话密码。Diffie-Hellman密钥交换算法的有效性依赖于计算离散对数的难度。

  • 原根

如果a素数p的一个原根,那么数值:

是各不相同的整数,并且以某种排列方式组成了从1到p-1的所有整数。

  • 离散对数

对于一个整数b和素数p的一个原根,可以找到惟一的指数i,使得

那么指数i称为的以为b基数的模a的离散对数。
基于此背景知识,可以定义Diffie-Hellman密钥交换算法。该算法描述如下:

图5 密钥交换
有两个全局公开的参数,一个素数p和一个整数g,g是p的一个原根。
假设用户Alice想传递一个消息给Bob。首先,Bob选择一个私有的随机数,并计算公开密钥。并对的值保密存放而使能被公开获得。
  • 消息嵌入
假设Alice要传递消息K给Bob。Alice首先选择一个密钥的随机数满足,并计算。 然后Alice传递给Bob。
  • 消息提取
Bob接收到后使用自己的秘密参数对消息进行恢复:
上述公式推导如下:
在 Alice和 Bob 进行消息传递过程中,没有进行通信双方的身份认证,所以Diffie-Hellman密钥交换算法不能抵抗中间人攻击。
为了应对此问题,我们需要在传输中加入签名认证(本文不再介绍)。在介绍下一种方案过程中,我们引入数字签名方案。
2.2
基于Lagrange插值多项式的阈下信道方案[3]

首先简化一组数字签名机制,表示如下:

公钥:

私钥:

消息:

签名算法:1

验证算法:

  • 消息嵌入
为一较大素数,在阈下通信以前,阈下消息的收发双方共享两点秘密信息。根据这两点的秘密信息,阈下消息收发双方各自可以根据构造一次 Lagrange 插值多项式:
设阈下消息,待签名消息为,阈下消息发送者根据构造出的一次多项式求出满足的x的值,然后令,对消息用签名算法进行签名,然后将其发送给阈下消息接收者,完成阈下消息的嵌入过程。
  • 消息提取
在基于数字签名方案的阈下信道方案中,任何人都可以根据签名验证算法验证签名的有效性。而只有合法的阈下消息的接收者可以通过他与签名发送者预先秘密共享的用Lagrange 插值法重构出一次多项式:
进而恢复出阈下信息:
与此相似的还有基于中国剩余定理的阈下信道等方案。该方案可以设计成门限阈下信道的形式,如果这个消息需要多个人一起才能恢复的话,那么可以构建次多项式,每个人保存一个参数,只有当大于等于个人同时在一起时,才能恢复。
此方案,如果在高次多项式的情况下,会有很大的计算成本开销,所以我们可以继续使用下面的方案来达到要求。
2.3
基于Ong-Schnorr-Shamir的阈下信道方案[4]
首先Alice和Bob协商共享一个公开的模数和一个密码秘钥,使得互素。计算公开秘钥:
  • 消息嵌入
Alice通过明文消息来生成阈下消息;分别计算:
Alice发送消息,即签名对
  • 消息提取
Bob首先对消息进行签名验证,任何人都可以来验证这个签名:
如果验证通过,则证明消息未被篡改,Bob就可以恢复阈下消息:
注:此方案已经被破解,可以使用其他数字签名算法来构建阈下信道方案。
三. 数字水印及其应用
数据水印和阈下信道目的都是通过明文载体去传递隐藏信息,但他们的使用场景不同,数据水印目的不是为了相互传递消息,但也作为一种阈下信道的实现方式。
数据水印是指把一些标识信息(即数据水印)直接嵌入数据载体当中(包括多媒体、文档、 软件等),且不影响原载体的使用价值,也不容易被探知和再次修改,同时即使在内容被修改时也能提取或检测到这些信息;可以被生产方识别和辨认,通过隐藏在载体中的信息,可以达到传送隐秘信息或者判断载体是否被篡改等目的;是保护信息安全、实现防伪溯源、版权保护的有效办法。
数据水印过程分为水印生成算法和嵌入算法。水印生成算法需要根据具体的业务场景去设计,分如下的一些情况:
  1. 直接嵌入明文标记,如公司名、人名等,数据泄漏后恢复出标记信息,根据标记信息用作版权确认
  2. 在特殊场景下,需求不是版权确认,而是溯源追责,这种情况下嵌入自己的秘密“暗号”即可,如零宽字符等,数据泄漏后,根据零宽字符翻译成自己的“暗号”,即可用于溯源追责;
  3. 上面2种方案中,如果在做水印时,就直接嵌入,这样就会存在一个问题,比如溯源的抵赖性验证,为了解决这个问题,所以就需要加入水印生成算法。
常用的嵌入算法有零宽字段、修改最低比特位、同义词、同形变换、量化调制、密码算法等多种方法,下图是我们目前实现部分效果情况:

图6 水印效果
如果直接给你的话,是不是火眼金睛的你也完全不知道其实里面我放了东西啊?其实就在你现在读取的这个文中,也加了水印,可以防止文本复制的那种:-)
由于版权保密原因,本文不介绍上述案例中实现的水印算法和嵌入方式;下面举例介绍一种简单的数据库水印方案。
  • 相关介绍
1. 水印系统需要维护的表有:
字段属性表(attribute table)、用户层级表(K-Tree table)、密钥表(U-Key table)(此表应该是文件的形式放在本地以此保证密钥不会被泄漏,或者对密钥进行认证访问揭秘)
字段属性表(attribute table):该表的功能,主要用来对原始数据表进行字段的划分,以此来让一个表可以适用多种规则,主要作用是,考虑到一个表字段可能会很多,而对于不用的用户来说,可以只会有权限查看一部分字段的值,因此也只可能泄漏一部分的值,所以我们还得从一部分的值中去溯源回来。如数据库原始表table1有如下属性:
priKey
Name
Pswd
Tele
Email
Address
表1 原始table1
那么我们就可以根据业务场景,及访问控制权限对表的字段进行划分,按照用户权限访问规则范围来划分,如:一个有3个权限角色,role1可以访问name、Tele,role2可以访问name,Email,role3可以访问name、address,那么就可以这样来构建属性拆分表:
T Name Pswd Tele Email Address Scope
a1 1 0 1 0 0 x
a2 1 0 0 1 0 x
a3 1 0 0 0 1 x
表2 table1属性拆分
说明:代表a1属性的,在表中对Scope范围内来处理嵌入数字水印,Scope一般用于有所有访问权限的人,起到一个混淆的作用,如DBA可以访问所有字段,经过他手的数据,就按范围来进行分属性加水印。

用户层级表(K-Tree table):该 K-Tree 树状结构描述的数据分发的层级关系。树中节点的数据存储的是每个数据使用者的代号{U1,U2,…}。其中,根节点代表原始数据的拥有者,每个子节点的父节点代表上一级的数据分发者。如下,U0为数据原始拥有者

图7 分发流图

密钥表(U-Key table):该密钥存储表描述的是存储数据使用者的名称、代号以及对应的密钥和 0-1 属性表的表。

User
Name
User
Code
Key TN
U1 xx1 K1(U1) a1
U2 xx2 K2(U2) a2
U3 xx3 K3(U3) a2
DBA xx4 K4(U4) 1(代表所有属性)
表3 U-key table
2.系统需要用到的加密算法有:

3DES(可以直接用国密,如果保密程度要求不是很高,一般对称加密算法都可以),算法主要用于对数据进行加密,不使用统一的密码,是为了防止被攻击。

  • 算法描述

1. 水印生成

数据原始拥有者的数据在被分发之前根据业务场景对表的属性进行划分,配置规则。如下图所示。

图8 水印架构

有3个用户,他们权限不同,所访问的字段属性也不相同,所以根据他们的访问权限,对表属性进行字段的划分。然后使用相应的密钥来对数据进行加密,加密后的水印信息去替换表的主键或者一个与他业务逻辑不相关的列,如果替换主键的话,就相应的要去替换其他关联表所引用的值,所以如果有不太强相关的字段,就直接替换字段的值,来存水印信息,这个可以用一个配置规则表来对每张表进行配置。

2. 追踪溯源
当发现数据疑似泄漏数据时,数据原始拥有者(或每个上级数据拥有者)通过相同的加密规则对原始数据加密,然后与泄漏数据比对,如果相同,则确认为泄漏数据。
四. 总结
在现在大数据化时代,消息传输保密和数据资产保护将变得越来越重要;所以这些技术在将会有越来越多的场景被应用进去。
参考文献

[1]. 阈下信道,百度百科 .https://baike.baidu.com/item/%E9%98%88%E4%B8%8B%E4%BF%A1%E9%81%93
[2]. William Stallings. 密码编码学与网络安全-原理与实践(第六版)[M]. 电子工业出版社, 2003.
[3]. 张杨松. 阈下信道相关理论及应用研究[D].
[4]. (美)Bruce Schneier著,吴世忠, 祝世雄, 张文政等编译. 应用密码学[M]. 机械工业出版社. 第2版.
内容编辑:身份与数据安全技术部 数据安全组 牟黎明 张正欣
责任编辑:创新研究院 董炳佑

本公众号原创文章仅代表作者观点,不代表绿盟科技立场。所有原创内容版权均属绿盟科技研究通讯。未经授权,严禁任何媒体以及微信公众号复制、转载、摘编或以其他方式使用,转载须注明来自绿盟科技研究通讯并附上本文链接。

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年6月14日18:31:16
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   信息交换中的幽灵—阈下信道http://cn-sec.com/archives/1807336.html

发表评论

匿名网友 填写信息