基于信息编码技术的数据暗水印实践 – 数据DNA – 作者:Henzox

背景

数据被定义为生产要素之后,其自身的定位已不仅限于其作为信息载体的意义,而开始关注于载体内容所体现的价值。《数据安全法》的颁布算是为其量身定制的安全方法的法律保障。与之而来对于数据保护的诉求也变得异常迫切。在数据共享和分发是必然趋势的情况下,对于共享和分发出去的数据进行有效的追溯不仅可以对数据接收者进行很好的威慑,也可以在数据泄露后进行有效的溯源,进行避责或追责。

数据水印原理

数据水印的基本原理跟货币水印别无二致。货币水印是对货币加上唯一编码信息给货币打上人眼可见的追踪编码,或者人眼不直接可视,只能使用特殊手段显隐的暗水印信息。数据水印也是一样的,简化来说,就是生成一个唯一识别码,给发布出去的对象印上可视的明水印或者不可视的暗水印。在需要追溯的时候进行逆操作,提取出水印信息,对比发布记录找到接收对象。
总结下来就是三步:

生成信息标识

对载体印制标识

提取标识比对溯源
常用的数据水印技术有伪行,伪列,不可见字符等手段。但这些都会在不同层面改变每一条数据的值。有没有一种实现方式在不改变数据值的情况下进行暗水印技术呢。

数据 DNA 思路

根据水印逻辑,我们提出了一种创新型的思路进行,数据 DNA 链。顾名思义,DNA 是指导生物特征的物质,DNA 链上的第一对编码都代表一种性状。也可以对从两种不同生物体上提取的 DNA 进行比对以判断它们的亲缘性。
那么数据 DNA 是什么呢?
如果让每一条数据代表一种性状,是否可以预先产生一种信息链,然后根据信息链,编排“性状”,生成一组符合性状的数据集呢。
为了验证以上的想法,我们需要解决以下几个问题:

Q1: 如何产生一条信息链?

Q2: 如何处理一条数据记录让其代表一种性状?

Q1 信息编码思路

我们的目的的产生一条唯一的信息链,可以是一串 ID、一个 HASH 值、一个名字或者其它。如果了解现代信息化基础,应该知道信息编码理论自底向上解释为,二进制编码是找两个状态,分别表现 0 和 1, 当一串 01 产生后,对其进行编码解释,比如数字编码,定义字节大小,进行规整的数字读取,或者字符编码,定义字符位宽,按照字符编码表转义。那么反过来,任何一个信息链也很容易边的成对应表示的 0 和 1。我们简单假设,直接生成一串随机的 01 串表示信息链即可达到目的。

Q2 编码性状转义

这个问题的核心在于找到一个标的,让其能表示两种状态。如果我们以结构化数据为基础,就是找到一个字段,让其能表示两个状态。这个在计算机工程上很容易实现,比如可以利用算法把一个字段转化成数值,判断其奇偶。这样每一条数据的某一列字段的奇偶性就代表了整条数据的奇偶,以代表其性状。

结构化数据的暗水印实现

背景问题

我们有一批结构化数据,需要分发给其他人,如何在这一批数据中加上暗水印以便在泄露时进行追溯。

业务需求假设

假设大批量数据共享时,每条数据的顺序不影响业务使用。

实现

简单模型:

水印

  1. 产生一条信息标识链,即数据 DNA, 最终可以呈现为 01 序列;

  2. 把原始数据集中的每一条数据选定一列,处理成奇偶值,代表该条数据为 0 或者 1;

  3. 根据数据 DNA,指导目标数据集产生。可依次翻译 DNA 中的 0 或者 1,选择原始数据集中的单条作为物料,编排产生目标数据集。

溯源

  1. 拿到泄露数据,找到标识位,处理成奇偶值,形成数据 DNA;

  2. 根据分发时记录的 DNA 库,对比每一条 DNA,找到亲缘性高的记录;

  3. 溯源出泄露源。

工程化考量

选取哪些字段

选取字段的标准是,需要让被处理的字段能够很好的散列成 0 或者 1。可以通过对原始数据集进行信息熵判断,来确定哪个字段作为标识会比较好。

抗干扰标识位

数据 DNA 进行比对时,如何对齐 DNA,可以借鉴生物 DNA 转义的方法,在比对时设计一段标识代表性状表达的开始,这个方式可以同样应用到数据 DNA 中。

写在后面

数据 DNA 方式,可以巧妙地把信息隐藏在数据序列信息里面,不改变原始数据值,对业务是极其友好的。并且信息编码除了二进制编码外,还可以使用表达能力更强的其它进制编码,进行让标识列可选空间更大。这些均可以在上述思路中实现。

From: 观安信息无限实验室

来源:freebuf.com 2021-07-27 11:52:20 by: Henzox

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论