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] ,其后,将密
   255   256   257   258   259   260   261   262   263   264   265