一种数字图像秘密分享及恢复方法 【技术领域】
本发明涉及图像信息隐藏技术领域, 特别是涉及一种数字图像秘密分享及恢复方法。 背景技术 相比诸多其他类型的数字信息, 数字图像因其生动、 直观等特点成为了网络中表 达信息的重要手段, 图像中可能包含大量的涉及安全的敏感信息而不能直接传送, 需要对 这些信息进行加密处理后才能防止秘密信息的泄露。通过图像秘密分享方案可以保护数 字图像的有效性、 保证通过数字图像传输的信息不被截获和篡改。由台湾学者 Chang-Chou Lin 和 Wen-Hsiang Tsai( 具 体 见 Chang-Chou Lin, Wen-Hsiang Tsai.Seeret image sharing with steganography and authentication[J].The Journal of system and software, 2004(73) : 405-414) 提出的一种数字图像秘密分享方案, 该方案实现了灰度图 像的 (k, n) 门限, 但该方案不能精确恢复秘密图像且在存储和传输上都存在着极大的浪 费。
发明内容 针对现有技术存在的问题, 本发明的主要目的在于提供一种数字图像秘密分享和 恢复方法, 只需要获取其中部分嵌入秘密图像的影子图像即能精确恢复原本的秘密图像文 件。
为实现上述目的, 本发明提供了一种数字图像秘密分享方法的实施例, 将秘密图 像分拆到掩盖图像中, 该数字图像秘密分享方法包括如下步骤 :
(1) 根据图像秘密分享门限的 k, n 值, 构造 RS 删除码生成矩阵 G(k+n)×k ;
(2) 初始化 n 个集合 v1, v2, Λ, vn, 同时赋予集合 vi 一个唯一的编号 di = i, 其中 1≤i≤n;
(3) 按照一定的顺序依次从秘密图像 S 中取出 k 个未进行分享操作的像素点, 记作 Γ αk×1 = (a1, a2, Λ, ak) ;
(4) 利 用 RS 删 除 码 生 成 矩 阵 G(k+n)×k 对 αk×1 进 行 编 码 操 作, 可 得 到 码 字 β, β(k+n)×1 = (G(k+n)×k·αk×1)mod 251 ;
(5) 将产生的码字向量 β 中的最后 n 个元素 (bk+1, bk+2, Λ, bk+n) 按顺序依次放入 集合 v1, v2, Λ, vn 中 ;
(6) 判断秘密图像 S 中的所有像素点是否全部处理完毕, 若是, 则进入步骤 (7), 否 则, 返回步骤 (3) ;
(7) 任意选取 n 幅图像作为掩盖图像, 将集合 v1, v2, Λ, vn 中的数据分别嵌入到 n 幅掩盖图像中, 得到最终的 n 幅影子图像 Y1, Y2, Λ, Yn。
其中步骤 (1) 中的 RS 删除码生成矩阵 G(k+n)×k 的前 k 行为一单位矩阵, 后 n 行为 一范德蒙行列式。
步骤 (3) 可以行为顺序或以列为顺序依次从秘密图像 S 中取出 k 个未进行分享操 作的像素点。且当秘密图像 S 中未进行分享操作的像素点的数目不足 k 个时由 0 补足。
另外, 步骤 (7) 选取的 n 幅掩盖图像与秘密图像 S 具有相同类型和尺寸。将 n 幅 掩盖图像的每个像素值的最后 d 位挖空, 其中 d = 8/k, 当 d 为非整数时则向上取整, 形成 d 位缺省图, 将集合 v1, v2, Λ, vn 中的数据分别嵌入到 n 幅掩盖图像缺省的部分。
当步骤 (7) 形成 n 幅影子图像后, 可将原秘密图像文件销毁。
使用上述数字图像秘密分享方法分享秘密图像后, 本发明还提供一种对分享的秘 密图像进行恢复的数字图像秘密恢复方法, 该秘密图像嵌入掩盖图像后形成影子图像, 使 用至少 k 个影子图像可恢复出原分享的秘密图像 ( 当影子图像的数量小于 k 个时则不能恢 复出原分享的秘密图像 ), 其中 2 ≤ k ≤ n, 该数字图像秘密恢复方法包括如下步骤 :
(1) 构造一个空的集合 S ;
(2) 从 k 幅影子图像中提取出原始的份额数据, 构成 k 个数据集合, 记作 v ′ 1, v′ 2, Λ, v′ k, 将集合 v′ 1, v′ 2, Λ, v′ k 的编号记作 d′ 1, d′ 2, Λ, d′ k ;
(3) 将数据集合 v′ 1, v′ 2, Λ, v′ k 按照编号从小到大的顺序进行排列, 重新排 列后的份额数据记作 v1, v2, Λ, vk, 排序后对应的编号记作 d1, d2, Λ, dk ;
(4) 构造一个矩阵 D′ k×k, 将 RS 删除码生成矩阵 G 的第 di 行赋值给 D′ k×k 的第 i 行, 其中 1 ≤ i ≤ n ;
(5) 将矩阵 D′ k×k 求逆后进行 251 的模运算得到校验矩阵 Dk×k ;
(6) 分别从各个份额数据集合 v1, v2, Λ, vk 中按顺序取出一个数值, 按序排列构成 向量 βk×1 = (b1, b2, Λ, bk) ;
(7)α = (D·β)mod 251, 记作 αk×1 = (a1, a2, Λ, ak) ;
(8) 将计算得到的向量 α 中的 k 个元素 (a1, a2, Λ, ak) 按顺序放入集合 S 中 ;
(9) 判断份额数据集合 v1, v2, Λ, vk 中所有的数据是否全部处理完毕, 若是, 则进 入步骤 (10), 若否, 则返回步骤 (6) ;
(10) 集合 S 为恢复得到的原分享的秘密图像文件。
本发明相对于现有技术, 将待分享的秘密图像经过一定的分享运算, 将分享运算 后的秘密图像分别存储在 n 个掩盖图像中, 只需要获取其中 k 个影子图像即能完全恢复原 本的秘密图像文件。且该方法计算复杂度低, 有效的提高了存储和传输的利用率。 附图说明
图 1 为本发明的数字图像秘密分享方法的实施例的流程图 图 2 为本发明的数字图像秘密恢复方法的实施例的流程图具体实施方式
下面结合附图, 详细说明本发明的具体实施方式。
下面结合图 1 具体说明本发明的数字图像秘密分享方法。图 1 为本发明的数字图 像秘密分享方法的实施例的流程图。该数字图像秘密分享方法包括如下步骤 :
S11、 根据图像秘密分享门限的 k, n 值, 构造 RS 删除码生成矩阵 G(k+n)×k, RS 删除码 生成矩阵 G(k+n)×k 的前 k 行为一单位矩阵, 后 n 行为一范德蒙行列式,
S12、 初始化 n 个集合 v1, v2, Λ, vn, 即将这 n 个集合 v1, v2, Λ, vn 赋值为空, 同时赋 予集合 vi 一个唯一的编号 di = i, 其中 1 ≤ i ≤ n ;
S13、 按照一定的顺序依次从秘密图像 S 中取出 k 个未进行分享操作的像素点, 记 г 作 αk×1 = (a1, a2, Λ, ak) 。可以以行为顺序或以列为顺序, 且当秘密图像 S 中未进行分享 操作的像素点的数目不足 k 个时由 0 补足 ;
S14、 利用 RS 删除码生成矩阵 G(k+n)×k 对 αk×1 进行编码操作, 可得到码字 β, 其中 β(k+n)×1 = (G(k+n)×k·αk×1)mod 251, 码字 β 的前 k 个分量与 αk×1 完全相同 ;
S15、 将产生的码字向量 β 中的最后 n 个元素 (bk+1, bk+2, Λ, bk+n) 按顺序依次放入 集合 v1, v2, Λ, vn 中 ;
S16、 判断秘密图像 S 中的所有像素点是否全部处理完毕, 若是, 则进入步骤 S17, 否则, 返回步骤 S13 ;
S17、 任意选取 n 幅图像作为掩盖图像, 将集合 v1, v2, Λ, vn 中的数据分别嵌入到 n 幅掩盖图像中, 得到最终的 n 幅影子图像 Y1, Y2, Λ, Yn。选取的 n 幅掩盖图像与秘密图像 S 具有相同类型和尺寸。将 n 幅掩盖图像的每个像素值的最后 d 位挖空, 其中 d = 8/k, 当d 为非整数时则向上取整, 形成 d 位缺省图。因为一幅数字图像都是由像素值组成的, 将每个 像素值的最后 d 位值去掉而形成 d 位缺省图时, 当 d < 4 时在视觉上很难看出变化。将集 合 v1, v2, Λ, vn 中的数据分别嵌入到 n 幅掩盖图像缺省的部分, 即将集合 V1 中的数据嵌入 掩盖图像 1 的缺省的部分, 形成影子图像 Y1, 以此类推。在嵌入时将每个数据分拆为几部分 到各掩盖图像的缺省位中, 如 73 为 01001001, 若 d 为 2 时, 则需要将一个数据拆分为 4 个部 分分别嵌入到某一掩盖图像的 4 个缺省位中。
通过以上步骤将待分享的秘密图像完全嵌入到掩盖图像中, 形成 n 幅影子图像, 此时可将原秘密图像销毁。
使用上述数字图像秘密分享方法分享秘密图像后, 本发明还提供一种对分享的秘 密图像进行恢复的数字图像秘密恢复方法, 该秘密图像嵌入掩盖图像后形成影子图像, 使 用至少 k 个影子图像可恢复出原分享的秘密图像 ( 当影子图像的数量小于 k 个时则不能恢 复出原分享的秘密图像 ), 其中 2 ≤ k ≤ n, 下面结合图 2 具体说明本发明的数字图像秘密 恢复方法。
图 2 为本发明的数字图像秘密恢复方法的实施例的流程图, 具体包含如下步骤 :
S21、 构造一个空的集合 S ;
S22、 从 k 幅影子图像中提取出原始的份额数据, 构成 k 个数据集合, 记作 v ′ 1, v′ 2, Λ, v′ k, 将集合 v′ 1, v′ 2, Λ, v′ k 的编号记作 d′ 1, d′ 2, Λ, d′ k ;
S23、 将数据集合 v′ 1, v′ 2, Λ, v′ k 按照编号从小到大的顺序进行排列, 重新排 列后的份额数据记作 v1, v2, Λ, vk, 排序后对应的编号记作 d1, d2, Λ, dk ;
S24、 构造一个矩阵 D′ k×k, 将 RS 删除码生成矩阵 G 的第 di 行赋值给 D′ k×k 的第 i 行, 其中 1 ≤ i ≤ n ;
S25、 将矩阵 D′ k×k 求逆后进行 251 的模运算得到校验矩阵 Dk×k ;
S26、 分别从各个份额数据集合 v1, v2, Λ, vk 中按顺序取出一个数值, 按序排列构成 向量 βk×1 = (b1, b2, Λ, bk) ;
S27、 α = (D·β)mod 251, 记作 αk×1 = (a1, a2, Λ, ak) ;
S28、 将计算得到的向量 α 中的 k 个元素 (a1, a2, Λ, ak) 按顺序放入集合 S 中, 该 顺序与数字图像秘密分享方法 S13 中取出像素点的顺序相对应, 如若 S13 按行为顺序取出 像素点, 则此处将 k 个元素按行为顺序放入集合 S 中 ;
S29、 判断份额数据集合 v1, v2, Λ, vk 中所有的数据是否全部处理完毕, 若是, 则进 入步骤 S30, 若否, 则返回步骤 S26 ;
S30、 集合 S 为恢复得到的原分享的秘密图像文件。
当然, 上面仅列举了利用 k 个影子图像恢复秘密图像的方法, 当影子图像数大于 k 个时, 也可利用相同的方法进行恢复。 实施例 1
若待存储的秘密图像的像素点的数量 L 为 18, 图像像素值为 8 个比特位, 因此每个 像素点的像素值范围为 0 ~ 255。若待掩盖的秘密图像 S 的每个像素点的像素值如下 :
3 30
10 78 15 90 60 66 20 99 36 160 60 15 3 254 70 10任意选取 n = 5 幅与秘密图像 S 具有相同类型 ( 如图像类型均为 jpeg) 和尺寸的 图像作为掩盖图像, 使得取得 k = 3 幅影子图像时即可恢复原本的秘密图像文件。
利用本发明的数字图像秘密分享方法将 18 个像素点的秘密图像嵌入到 5 幅掩盖 图像中, 实现方法如下 :
(1) 由图像秘密分享门限的 k, n 值, 构造 RS 删除码生成矩阵 G(k+n)×k, 即 G(3+5)×3, 其 中 RS 删除码生成矩阵的前 3 行为一单位矩阵, 而后 5 行为一范德蒙行列式。由 k = 3, n= 5 确定该 RS 删除码生成矩阵为 :
(2) 初始化 5 个集合 v1, v2, Λv5, 即将这 5 个集合赋值为空 ;(3) 以行为顺序从秘密图像取出 3 个未进行分享的像素值, 如 3, 10, 15, 记为 当然, 也可以列为顺序 ;
(4) 利用 RS 删除码生成矩阵对像素值阵列 α3×1 进行编码操作生成 β(3+5)×1, 即
(5) 去除前面 3 个与 α 相同的元素, 将产生的码字 β 的最后 5 个元素依次放入初 v2, Λv5 中, 即 v1 = 28, v2 = 68, v3 = 178, v4 = 237, v5 = 123 ; 始化的 5 个集合 v1,
(6) 重复步骤 3 到 5, 直至秘密图像中的所有像素点全部处理完毕, 本实施例中最 后的像素点为 15、 254、 10。这样每个集合 v1, v2, Λv5 中均含有 L/3 = 6 个元素值 ;
(7) 任意选取 5 幅具有随机视觉内容且与秘密图像具有相同类型和尺寸的图像
V′ 1, V′ 2, ΛV′ 5 作为掩盖图像, 将这 5 幅图像中每个像素值的最后位( 向上取整数为 3 位 ) 挖空, 形成 d 位缺省图。将 5 个集合 v1, v2, Λv5 内的元素依次嵌入 5 幅掩盖图像的缺省部分, 即将 vi 的元素填入掩盖图像 V′ i 的 3 个缺省部分中, 以此类推, 如此得到 5 幅影子图像 Y1, Y2ΛY5。最后将原秘密图像销毁。
下面介绍使用 k = 3 幅影子图像将原分享的秘密图像恢复的方法, 假设剩下影子 图像 Y1, Y2, Y3 :
(1) 构造一个空的集合 S ;
(2) 从 3 幅影子图像中依次取出原始元素, 得到份额数据集合 v1, v2, v3。即将影子 图像 Y1 中的元素存储到集合 v1, 将影子图像 Y2 中的元素存储到 v2 中, 将影子图像 Y3 中的元 素存储到集合 v3 中, 每个集合 v1, v2, v3 中均含有 6 个元素值 ;
(3) 根据影子图像的编号来构造矩阵 D′ k×k, 即本实施例中影子图像的编号为 1, 2, 3, 则将生成矩阵 G 的第 3+1 行赋值给 的第 2 行, 将生成矩阵 G 的第 3+3 行赋值给的第 1 行, 将生成矩阵 G 的第 3+2 行赋值给 的第 3 行, 得到矩阵求矩阵 D’ 得到 3×3 模运算 (mod 251) 的逆矩阵,(4) 依次从份额数据集合 v1, v2, v3 中取出一个元素, 即 28、 68、 178, 获得向量
(5)即为对应的原始秘密图像的像素值 ;(6) 将向量值 α3×1 以行为顺序依次放入集合 S 中 ;
(7) 重复步骤 4 到步骤 6, 直到所有的数据被计算完毕。
集合 S 便是恢复得到的原分享的秘密图像文件。
以上介绍了数字图像秘密分享方法, 将秘密图像分拆到掩盖图像中, 同时介绍了 将分享的秘密图像进行恢复的数字图像秘密恢复方法。但本发明并不限定于以上实施例, 任何未脱离本发明技术方案, 即仅仅对其进行本领域普通技术人员所知悉的改进或变更, 均属于本发明的保护范围之内。