数据水印嵌入方法
数据库水印算法一方面需要更好地将水印标识信息隐藏到数据库中,另一方面需要满足嵌入后的透明性——仅允许一定范围内失真,因此它本质上可看成一个带约束条件的化问题。从信号角度看,数据库水印嵌入过程可用看成一个大信号叠加了一个小信号,经过有噪信道后,如何检测到小信号——小信号的编问题。根据水印嵌入过程是否需要改变原始数据库的元组的属性值和格式。
数据水印如何追责数据泄露
数据泄露后的溯源是一项重要的任务,一方面有利于了解安全管理与措施的薄弱环节,另一方面可起到心理威慑作用,追究责任,类似事件再次发生。针对企业员工的泄露溯源场景,任何员工数据到本地时,会触发水印嵌入器将水印信息(如员工ID、时间戳等)自动地嵌入到数据库(关系表)中。当数据发生泄露时,企业可提取水印信息,通过匹配与关联分析,溯源取证泄露者的标识ID,以及时间等信息。
数据水印概述
数据库水印是将水印信息(数据量少)隐藏到数据库载体(数据量比较大)中,有两种隐藏方式:一种是隐藏在数据库的文件头中,另一种是隐藏在数据库包含的关系表中,通常指的是后者,本文指代也是该方式。
具体如何将水印信息隐藏到数据库(关系表)中呢?其方案框架如图1所示。它包括水印嵌入端和提取端,包括两个重要算法:水印嵌入算法和水印提取算法。水印嵌入端:企业或组织机构通过水印嵌入算法,将水印标识信息W,隐藏到原始数据库D中,得到含水印的数据库DW,为了保证安全性,该过程通常由密钥控制。水印提取端:当数据库DW发生泄露后,企业或组织机构希望查找清楚是谁泄露了该数据库,它通过水印提取算法,在获得的数据库D’W中进行水印提取或相关性检测操作,进而溯源确定的泄露主体,追究责任。
需注意的是,在数据泄露过程中,由于泄露主体可能会有意或无意对数据库进行一些操作,比如对数据库的元组进行随机抽样、选择部分列、修改数据库的某些值或对格式进行调整,这些操作通常被称为水印攻击(后续将介绍),通常会对水印信息造成一定影响,这要求设计的水印嵌入/提取算法具有一定强度的鲁棒性,即遭受攻击后同样能提取/检测到正确的水印信息。