Page 265 - 《软件学报》2020年第11期
P. 265

3580                                Journal of Software  软件学报 Vol.31, No.11, November 2020

                    •   然后,确定元组所在数据分区、选择水印嵌入位置、提取辅助数据,此部分与等级检测算法相同.辅助
                        数据 bit s 提取完毕之后,需判定其是否等于−1:如果等于−1,表示 bit s 无效,并跳入下一循环,检测下一元
                        组;否则,计算包含水印元组的辅助数据 bit ws ,执行水印检测操作.
                    •   接着,执行多数投票.如果 W D _z 等于 1,count_i 加 1;反之,count_i 减 1.
                    •   所有元组检测完毕之后,统计多数投票结果.先判断|count_i|是否大于或等于 totalcount_i 与参数μ的乘
                        积:如果满足条件,表示投票结果有效,继续判断出水印位即可;否则,令 W D _i 为−1,表示此水印位的多数
                        投票无效.其中,参数μ是个比例阈值,用来提高多数投票机制的有效性.比如,totalcount_i=100,μ等于
                        0.02,则|count_i|等于 0 或 1 均不能作为水印位判定的依据.
                    μ的引入增加了水印检测算法的可靠性,但如果将μ设置的过高,则会导致大量的水印位检测无效.所以,用
                 户根据实际应用的要求对μ进行设定.
                 2.6   数据质量等级提升
                    数据质量等级提升的本质是去除某些数据分区中的水印,控制嵌有水印的数据分区数.假如数据使用者不
                 满足当前数据的可用性,可向数据所有者申请或购买密钥进行数据质量等级提升,以提高数据可用性.另外,数
                 据质量等级提升的程度不受限制,既可以逐级提升,也可以越级提升.等级提升算法如算法 4 所示.
                    算法 4.  等级提升算法.
                    Input: D w ,D s ,k,sk′,Flag.
                    Output:  D′ .
                            w
                    1.   for each tuple r∈D W  do
                    2.      hash part =H(r.key,k);
                    3.      i=hash part  mod γ;
                    4.      hash em =H(r.key,sk′_i);
                    5.      if (hash em  mod η equals 0) {
                    6.         if (Flag_i=1) {
                    7.            A w _index x=hash em  mod ε;
                    8.            if (A_x is NULL)
                    9.               continue(⋅);
                    10.           bit w _index y=hash em  mod ξ;
                    11.           WS_index z=hash em  mod ω;
                    12.           bit s =Get(r.key,D s _i);
                    13.           if (bit s  equals −1){
                    14.             continue(⋅); }
                    15.           else {
                    16.              bit ws =bit w _y xor S_z;
                    17.              W D _z=bit s  xor bit ws ;
                    18.              bit_y=bit w _y xor W D _z;
                    19.              Update(bit w _y,bit_y); }}
                    20. else
                    21.    next tuple;
                    22. Return  D′ ;
                               w
                    由算法 4 可知,等级提升算法与水印检测算法在确定元组的数据分区、选择水印嵌入位置、辅助数据的提
                 取以及具体水印位的检测均相同.检测出当前元组中嵌入的水印位 W D _z 后,计算原始比特位 bit_y,并执行更新
                 操作.最后返回等级提升后的关系数据 D′ ,等级提升完成.需要注意的是,输入的密钥 sk′只包含当前数据质量等
                                                w
   260   261   262   263   264   265   266   267   268   269   270