Page 260 - 《软件学报》2020年第11期
P. 260
侯瑞涛 等:分级可逆的关系数据水印方案 3575
用者的要求,可向数据所有者申请或购买相关密钥,提升 QoD.QoD 的提升不会影响水印的有效性.
2.2 预处理
预处理阶段进行水印嵌入的准备工作,主要包括水印串和辅助串的制备以及密钥的生成等.
2.2.1 水印串和辅助串制备
水印串是数据所有者标识信息的载体,用于实现数据版权的证明.水印串通常为所有者身份信息的二进制
[9]
形式 .
[9]
水印隐藏率是水印序列长度设定的重要依据.水印隐藏率 hr 的计算如公式(1)所示 .
ω
hr = (1)
sum
其中,ω表示水印长度,sum 表示嵌有水印数据的元组数.在元组数相等的情况下,hr 越高,则ω越大,水印包含的信
息量越多,每个水印位的嵌入次数越少,水印的抗攻击能力越弱;反之,则ω越小,水印包含的信息量越少,每个水
印位的嵌入次数越多,水印的抗攻击能力越强.所以,水印串的长度选取应保证合适的水印隐藏率.
辅助串在等级检测、水印检测及等级提升阶段起辅助作用.辅助串的选取是随机的,与水印串等长即可.
2.2.2 密钥生成与管理
[9]
分级可逆水印的实现需要使用多个密钥,包括分区密钥 k 以及分区嵌入密钥 sk .为实现水印的分级可逆,
方案需预设多个密钥,分区嵌入密钥 sk 和分区划定密钥 k.k 用于将数据划分为若干个数据分区,sk 用于在各数
据分区中进行水印嵌入.为了提高算法的安全性和运行效率,方案设计出一种适用于分级可逆水印的密钥生成
与管理机制.该机制主要包括:(1) 密钥生成;(2) 密钥分发;(3) 密钥验证;(4) 密钥存储及备份.
(1) 密钥生成
k 随机选取即可.
sk 的生成过程如下.
① 计算 sk_(n−1)=H(sk e ).其中,H(⋅)为哈希函数,sk e 为随机设定的密钥生成元,sk_(n−1)为数据分区 n 的嵌入
密钥.
② 计算 sk_(n−2)=H(sk_(n−1)),获得数据分区 n−1 的水印嵌入密钥.
③ 重复步骤② ,直至获得 sk_0=H(sk_1),计算完毕.
由此,各数据分区的分区嵌入密钥就构成了一条密钥链.如果要对前 i 个数据分区进行水印嵌入或等级提
升,只需知道 sk_(i−1)即可.另外,密钥生成元 sk e 的选定及密钥的生成均由数据所有者实现.
(2) 密钥分发
基于本文的应用场景,数据所有者 owner 向数据使用者 user 分发等级提升所用的密钥时,使用无密钥分发
协议 [26] .假设 K 为待分发密钥,p 为公用大素数,且 1≤K≤p−2,owner 和 user 各自选择秘密值 a 和 b,a≥1,b≤p−2,
且 a,b 与 p−1 互素.协议内容具体如下.
a
① owner 计算 K mod p,并将其发送给 user.
a b
② user 计算(K ) mod p,并将其发送给 owner.
ab −a
b
③ owner 计算(K ) mod p=K mod p,并将其发送给 user.
b −b
④ user 计算(K ) mod p=K mod p,此密钥分发完成.
(3) 密钥验证
为防止密钥在传输过程中遭到破坏,导致数据质量等级提升失败,数据使用者需对密钥进行验证.
假设 rand 为随机值,K 为分发的密钥,rand_hash=H(rand,K).密钥分发完毕之后,owner 还需将 rand 和
rand_hash 发送给 user.其后,user 计算 H(rand,K),如果该值与 rand_hash 相同,证明密钥无误,可用于数据质量等
级提升;否则,重新进行密钥分发.
(4) 密钥存储及备份
密钥存储采用物理与加密结合的方式.密钥存储时,首先使用 RSA 加密算法对密钥进行加密 [27] ,其后,将密