最早提出秘密图像共享方案的是Chih-Ching Thien和Ja-Chen Lin这两个人写的一篇Secret image sharing。
这篇文章只是一个大概的说明,具体的分析请点击这里。
在这篇文章中作者首次提出了将基于多项式的秘密共享运用到图像方面。
其实道理和上篇文章的秘密共享方案一样,都是基于多项式的秘密共享方案,在这里叫做秘密图像共享方案。
基本需求:
1.将一个秘密图像利用多项式生成n个影子图像。
2.任何的r个或者大于r的影子图像可以完整的重构这个秘密图像。
3.任何的r-1个或者小于r-1个影子图像无法得到这个图像的任何信息。
假设D=a0,我们将D分解为D1=q(1),D2=q(2)...Dn=q(n),每个Di为一个影子图像。系数a1,a2...ar-1都是随机的系数。当然如果我们知道D1,D2...,Dn的值,我们运用拉格朗日插值多项式就可以恢复多项式,从而得到秘密a0,也就是D。当然,这个D可以是一个灰度图的像素值。
重点来了....
在本文中作者提到了,秘密图像共享中,所有的系数都可以为像素值。也就是将一张图片分解成几部分,然后每个部分有r个像素值。对于每个j部分定义以下多项式:
由于每个像素值都在0-255之间,所以在这里p取251
这样保证q的所有的值都在0-250之间。
分发算法:
1.将所有超过250像素值改为250。
2.对于秘密图像使用一个密钥产生置换序列。
3.取不重复的r个像素值置换这一部分。
4.通过置换的值来产生这一部分的像素值。
5.重复3,4步直到所有像素值都求出来。
恢复算法:
1.取没有使用过的r个影子图像。
2.利用拉格朗日插值多项式进行恢复每部分的r个像素。
3.重复1,2步知道所有的像素值求出。
4.应用逆置换求得原图像。
算法优化:
将超过250像素值的数进行分解处理。如果是251,将q其解为250和1。
算法分析:
虽然这样可以将每个人拿到的影子图像大小缩小到r/1。这只是所有的像素值都小于251的情况下。如果我们将大于250的像素值分解为两个值。这个无疑增加了影子图像的大小。
只是一个菜鸟,有的没说清楚,请谅解。若有错误请指正,谢谢。