发明内容
本发明针对现有技术的不足,提供一种基于感知哈希的实用安全图像取证系统及其取证方法,以使系统在安全性、鲁棒性、敏感性和快速检索性等方面获得较好的均衡性能。
本发明基于感知哈希的图像认证系统,其特点是所述系统包括:模块a、模块b和模块c;
所述模块a为证书管理单元,记为CA;所述模块b为取证计算单元,记为FCP;所述模块c为可信取证中心,记为FC;
当用户到CA注册时,由CA对经过认证后的用户颁发数字证书,用于以后通讯中的身份认证;
所述CA同样对FCP和FC也颁发数字证书,用以对通讯时的身份进行认证;
当FCP计算图像哈希值时,CA向FCP分配分区域密钥和加密密钥,用于计算哈希值;
当进行图像认证时,FC向CA发送图像ID,CA根据收到的图像ID将所述分区域密钥和加密密钥发送给FCP用于对比计算;
当用户对原始图像进行注册时,将原始图像提交到FCP,FCP计算原始图像的检索特征值,并将原始图像分成不同区域,计算不同区域的原始图像的哈希值,并将所述原始图像的检索特征值和分区域哈希值提交到FC处;
所述FC分别设置图像检索特征值数据库和图像哈希值数据库,FC根据所接收的由FCP提交的检索特征值在所述图像检索特征值数据库中进行检索,根据检索的结果,在所述图像哈希数据库中得到对应的图像哈希值,并将图像ID发送给CA;
当用户对可疑图像进行认证时,将可疑图像提交到FCP,由FCP计算可疑图像的检索特征值,并将所述可疑图像的检索特征值提交到FC进行检索,从FC处获得与所述可疑图像的检索特征值相对应的原始图像哈希值;再从CA处获得分区域密钥和加密密钥,将可疑图像分成与原始图像一样的区域,计算不同区域的可疑图像的哈希值,将各区域的可疑图像的哈希值一一与检索得到的原始图像的分区域哈希值进行对比,根据对比结果判定发生内容篡改的区域,在用户所允许的阈值范围内都认为没有发生内容篡改;
本发明基于感知哈希的图像认证方法的特点是:
对提出请求的用户进行身份认证,颁发数字证书,允许用户注册原始图像到数据库中;
当用户注册原始图像时,利用FCP提取原始图像的检索特征值和哈希值并提交到FC的数据库中完成原始图像注册;
当需要认证可疑图像时,FCP提取可疑图像的检索特征值,分区域计算可疑图像哈希值,将可疑图像各区域的哈希值与FC的数据库中的对应的原始图像哈希值进行比较,找出发生内容篡改的区域位置。
本发明基于感知哈希的图像认证方法的特点也在于:
所述原始图像和可疑图像的哈希值是按以下步骤获得:
步骤a,由CA给FCP分配分区域密钥和加密密钥;
步骤b,FCP利用分区域密钥对原始图像和可疑图像进行分区,得到各分区域;
步骤c,FCP对每一分区域计算;
步骤d,FCP对鲁棒性特征使用加密密钥进行加密,分别得到各分区域的的哈希值,所述哈希值数据库中存储的即是原始图像的各分区域的哈希值。
所述以FCP对图像进行认证是按以下步骤进行:
步骤a,提取图像的检索特征值,提交到FC进行检索,通过检索获得原始图像的哈希值,并通过随机数生成算法生成随机数R;
步骤b,CA根据FC提交的信息向FCP发送注册原始图像时使用的分区域密钥和加密密钥;
步骤c,FCP利用分区域密钥对图像进行分区得到各分区域;FCP对所述分区域图像进行哈希值计算并和原始图像的哈希值进行比较;根据比较结果,由FCP向用户返回发生内容篡改的位置。
对于图像的分区是按以下步骤进行:
步骤a,使用分区域密钥对随机数R进行加密,加密后得到R’,R’有n位,n为正整数;
步骤b,每一次按照R[i]/10的比例将图像分割为两块:I[2i]=R’[i]/10*I[i],I[2i+1]=(10-R’[i])/10*I[i],其中i为1,2,3,4……,R[i]表示随机数R的第i位,I[i]表示第i块图像;
步骤c,将图像按照1,2,4,8,……的块数进行分组,第一组为:(I[1])、第二组为:(I[2],I[3])、第三组为:(I[4],I[5],I[6],I[7])、……,每一次分别对各组中所有图像进行分割,得到新的一组图像;对于所述新的一组图像的分割与上一次的分割是按照横向分割和纵向分割相互交替的方式进行;
步骤d,重复步骤a、b、c,得到分区域图像分别为:I[1],I[2],……,I[i],I[i+1],……I[2i+1];每次获得的图像分区域组分别为:(I[1]),(I[2],I[3]),(I[4],I[5],I[6],I[7]),……,其中I[1]=I,I为原始图像。
和原始图像的哈希值进行比较的方法按以下步骤进行操作:
步骤a,从I[1]开始计算哈希值,先对每一块区域计算中间哈希值,所述中间哈希值就是根据Hash算法提取的鲁棒特征向量值,再使用密钥加密后最终得到哈希值;
步骤b,与原始图像的对应分区域的哈希值进行比较,分下列三种情况:
情况一,若D2(H’[i],H[i])≤ε,则认为I[i]与I’[i]相同,未出现内容篡改,不再继续计算下去,其中D表示距离,ε表示用户定义的阈值;
情况二,若D2(H’[i],H[i])>ε,则认为Ii与I’i不同,并出现内容篡改,此时如果I[i]可以继续分割,则分割为I[2i]与I[2i+1],对I[2i]与I[2i+1]重复步骤c;
情况三,当I[i]已经不能再分块时,且I’[i]与I[i]不同时,认为这是能找到的最精确的内容篡改位置,标记这块为经过内容篡改区域;
步骤c,根据上述结果标识出发生内容篡改的区域。
检索时判断是否为原始图像的方法如下:
如果对于所有的Hindex’,均有D1(Hindex,Hindex’)≥ε,则认为没有与之相符的原始图像;如果存在图像I’,其Hindex’满足D1(Hindex,Hindex’)≤ε,则说明该图像I’是最接近的原始图像。
FCP与CA通信认证身份的协议为:
步骤a,FCP向CA发出认证请求;
步骤b,CA向FCP发送一个随机数R;
步骤c,FCP向CA发送:DkR_FCP(R),其中kR_FCP为FCP的私钥;
步骤d,CA计算R1=EkU_FCP(DkR_FCP(R)),其中kU_FCP为FCP公钥,如果R1=R,则CA验证了FCP的身份;
步骤e,CA向FCP发送:DkR_CA(R),kR_CA为CA的私钥;
步骤f,FCP计算R2=EkU_CA(DkR_CA(R)),其中kU_CA为CA的公钥,如果R2=R,则FCP验证了CA的身份;
步骤g,传输数据,使用传信息接收方的公钥对信息加密,信息接收方再使用自己的私钥进行解密。
本发明采用基于感知哈希函数的数字图像取证技术,不需要在数字图像中嵌入水印,而是计算数字图像的哈希值,并把哈希值存放在可信的第三方。在取证的时候,只需计算被怀疑的图像的哈希值,并对比该哈希值与存放在可信第三方的哈希值。通过哈希值的对比,验证是否篡改或篡改的程度。本发明无须嵌入水印到数字图像,在不需要原载体的情况下进行取证。与已有技术相比,本发明有益效果体现在:
1、本发明提供系统的解决方案,在安全性、鲁棒性、敏感性及快速检索性等方面做到很好的平衡,适合在实际的互联网中的应用,具有很好的实用性,能提供可靠、高效的图像的取证和篡定位别服务。
2、本发明使用CA加强身份认证,确保通讯双方可靠性;CA为图像哈希函数提供一次一密的密钥,可以阻止依据唯一截距的密码分析。所有的特征提取、哈希值计算都放在FCP上,用户无法接触到任何计算过程中使用的密钥。因而本系统具有很高的安全性。
3、本发明在对图像分割时,采用了随机分块,每一幅图像的分块情况均不一样,计算中间哈希值所用的区域也不一样,也让最终得到的哈希值也会有所不同;同时每一幅图像在产生最终哈希值时使用的密钥也不一样,通过这两个手段加强哈希值的安全性,有效抵御抵抗恶意攻击。
4、本发明提出了在正式进行图像内容篡改定位时,先使用检索特征检索快速检索到到相近的原始图像,再根据检索到的原始图像的相关信息来进行最终的内容篡改定位。通过预先检索的方法来找到原始图像,然后再使用感知哈希的方法来对内容篡改进行定位。
本发明能够对图像内容篡改位置进行快速定位。图像最初分割时采用了二分的方法,计算哈希值时,不仅计算了最小的图像分块,还计算了分块过程中中间步骤所使用到的大分块,而在进行内容篡改定位时,则先从大的分块开始比较,只有在比较后认为出现了内容篡改时才会继续分块以便精确定位。这种快速定位的方法类似于二分法,拥有较高的时间效率,而且在绝大多数情况下,图像的内容篡改部分会比较少,使用这种方法的效率高于对每一个小分块逐一进行比较的效率。
本发明使用了结合快速检索和快速定位的相结合的方法,在保证图像定位精确度的前提下,提高了检索速度,能够有效面对未来越来越庞大的图像数据库的挑战。
具体实施方式
参见图1,本实施例中基于感知哈希的图像认证系统包括有模块a、模块b和模块c;其中:
模块a为证书管理单元,记为CA;模块b为取证计算单元,记为FCP;模块c为可信取证中心,记为FC;
参见图2,当用户到CA注册时,由CA对经过认证后的用户颁发数字证书,用于以后通讯中的身份认证;CA同样对FCP和FC也颁发数字证书,用以对通讯时的身份进行认证;
当FCP计算图像哈希值时,CA向FCP分配分区域密钥和加密密钥,参见图4,用于计算哈希值;
当进行图像认证时,FC向CA发送图像ID,CA根据收到的图像ID将分区域密钥和加密密钥发送给FCP用于对比计算;
参见图7,当用户对原始图像进行注册时,将原始图像提交到FCP,FCP计算原始图像的检索特征值,并将原始图像分成不同区域,计算不同区域的原始图像的哈希值,并将原始图像的检索特征值和分区域哈希值提交到FC处;
FC分别设置图像检索特征值数据库和图像哈希值数据库,FC根据所接收的由FCP提交的检索特征值在图像检索特征值数据库中进行检索,根据检索的结果,在图像哈希数据库中得到对应的图像哈希值,并将图像ID发送给CA;
当用户对可疑图像进行认证时,将可疑图像提交到FCP,由FCP计算可疑图像的检索特征值,并将可疑图像的检索特征值提交到FC进行检索,从FC处获得与可疑图像的检索特征值相对应的原始图像哈希值;再从CA处获得分区域密钥和加密密钥,将可疑图像分成与原始图像一样的区域,计算不同区域的可疑图像的哈希值,将各区域的可疑图像的哈希值一一与检索得到的原始图像的分区域哈希值进行对比,根据对比结果判定发生内容篡改的区域,在用户所允许的阈值范围内都认为没有发生内容篡改;
本实施例中的基于感知哈希的图像认证方法是:
首先对提出请求的用户进行身份认证,颁发数字证书,允许用户注册原始图像到数据库中;
当用户注册原始图像时,利用FCP提取原始图像的检索特征值和哈希值并提交到FC的数据库中完成原始图像注册;
当需要认证可疑图像时,FCP提取可疑图像的检索特征值,分区域计算可疑图像哈希值,将可疑图像各区域的哈希值与FC的数据库中的对应的原始图像哈希值进行比较,找出发生内容篡改的区域位置。
具体实施中,原始图像和可疑图像的哈希值是按以下步骤获得:
a、由CA给FCP分配分区域密钥和加密密钥;
b、FCP利用分区域密钥对原始图像和可疑图像进行分区,得到各分区域;
c、FCP对每一分区域计算;
d、FCP对鲁棒性特征使用加密密钥进行加密,分别得到各分区域的的哈希值,哈希值数据库中存储的即是原始图像的各分区域的哈希值。
以FCP对图像进行认证是按以下步骤进行:
a、提取图像的检索特征值,提交到FC进行检索,通过检索获得原始图像的哈希值,并通过随机数生成算法生成随机数R;
b、CA根据FC提交的信息向FCP发送注册原始图像时使用的分区域密钥和加密密钥;
c、FCP利用分区域密钥对图像进行分区得到各分区域;FCP对分区域图像进行哈希值计算并和原始图像的哈希值进行比较;根据比较结果,由FCP向用户返回发生内容篡改的位置。
参见图5和图6,对于图像的分区是按以下步骤进行:
a、使用分区域密钥对随机数R进行加密,加密后得到R’,R’有n位,n为正整数;
b、每一次按照R[i]/10的比例将图像分割为两块:I[2i]=R’[i]/10*I[i],I[2i+1]=(10-R’[i])/10*I[i],其中i为1,2,3,4……,R[i]表示随机数R的第i位,I[i]表示第i块图像;
c、将图像按照1,2,4,8,……的块数进行分组,第一组为:(I[1])、第二组为:(I[2],I[3])、第三组为:(I[4],I[5],I[6],I[7])、……,每一次分别对各组中所有图像进行分割,得到新的一组图像;对于新的一组图像的分割与上一次的分割是按照横向分割和纵向分割相互交替的方式进行;
d、重复步骤a、b、c,得到分区域图像分别为:I[1],I[2],……,I[i],I[i+1],……I[2i+1];每次获得的图像分区域组分别为:(I[1]),(I[2],I[3]),(I[4],I[5],I[6],I[7]),……,其中I[1]=I,I为原始图像。
和原始图像的哈希值进行比较是按以下步骤进行:
a、从I[1]开始计算哈希值,先对每一块区域计算中间哈希值,中间哈希值是根据Hash算法提取的鲁棒特征向量值,再使用密钥加密后得到最终的哈希值;
b、与原始图像的对应分区域的哈希值进行比较,分下列三种情况:
(1)、若D2(H’[i],H[i])≤ε,则认为I[i]与I’[i]相同,未出现内容篡改,不再继续计算下去,其中D表示距离,ε表示用户定义的阈值;
(2)、若D2(H’[i],H[i])>ε,则认为Ii与I’i不同,并出现内容篡改,此时如果I[i]可以继续分割,则分割为I[2i]与I[2i+1],对I[2i]与I[2i+1]重复步骤c;
(3)、当I[i]已经不能再分块时,且I’[i]与I[i]不同时,认为这是能找到的最精确的内容篡改位置,标记这块为经过内容篡改区域;
c、根据上述结果标识出发生内容篡改的区域。
检索时判断是否为原始图像的方法如下,参见图3和图8:如果对于所有的Hindex’,均有D1(Hindex,Hindex’)≥ε,则认为没有与之相符的原始图像;如果存在图像I’,其Hindex’满足D1(Hindex,Hindex’)≤ε,则说明该图像I’是最接近的原始图像。
FCP与CA通信认证身份的协议为:
a、FCP向CA发出认证请求;
b、CA向FCP发送一个随机数R;
c、FCP向CA发送:DkR_FCP(R),其中kR_FCP为FCP的私钥;
d、CA计算R1=EkU_FCP(DkR_FCP(R)),其中kU_FCP为FCP公钥,如果R1=R,则CA验证了FCP的身份;
e、CA向FCP发送:DkR_CA(R),kR_CA为CA的私钥;
f、FCP计算R2=EkU_CA(DkR_CA(R)),其中kU_CA为CA的公钥,如果R2=R,则FCP验证了CA的身份;
g、传输数据,使用传信息接收方的公钥对信息加密,信息接收方再使用自己的私钥进行解密。
下面给出一个使用本系统进行图像认证的实施过程:
1、参见图1,首先要求对用户到CA中心进行注册认证,用于确定用户的身份,CA给注册过的用户颁发证书,对于FCP和FC也同样如此。
2、参见图7,对于一幅需要注册到数据库的原始图像,用户首先要到将图像提交到FCP,由FCP提取一系列值放入FC的数据库中,
(1)FCP首先产生检索特征Hindex=Findex(I);
(2)CA给FCP分配两对密钥:K1,K2,参见图4和图7,
这里的FCP与CA通讯协议如下:
a、FCP向CA发送一个登陆请求,
b、CA向FCP发送一个随机数R,
c、FCP向CA发送:DkR_FCP(R),其中kR_FCP为FCP的私钥,
d、CA计算R1=EkU_FCP(DkR_FCP(R)),其中kU_FCP为FCP公钥,如果R1=R,则CA验证了FCP的身份,
e、CA向FCP发送:DkR_CA(R),kR_CA为CA的私钥,
f、FCP计算R2=EkU_CA(DkR_CA(R)),其中kU_CA为CA的公钥,如果R2=R,则FCP验证了CA的身份,
g、CA向FCP传输数据:EkU_FCP(k1,k2),
h、FCP再解密:k1,k2=DkR_FCP(EkU_FCP(k1,k2)),
i、结束会话;
(3)FCP产生一个一定长度的随机数R;
(4)计算R’=E1K1(R),R’[i]为R’中第i位的数字;
(5)参见图5,根据这组随机数对图像进行分块:原始图像为I,I1=I,则I[2i]=R’[i]/10*I[i],I2i+1=(10-R’[i])/10*I[i],这种分割方式遵循以下原则,参见图6:
a、用R’[i]表示每次对一小块图像进行分割时的分割比例,对所有的子块图像分割之后可以得到一组新的子块图像,
b、每次对一组子块图像完成分割后变换一种分割方式,即,横向分割和纵向分割不停的交替,在图3中,表现为每一层的分割方式是不一样的,据此获图像分块:I[1],I[2],……,I[i],I[i+1],……,I[2i],I[2i+1];
c、计算中间哈希值:hash0[i]=Fhash(I[i]),
d、使用K2对hash0进行加密:HASH=E2k2(hash0),这里要求加密算法E2满足以下条件:当D(hash0,hash0’)<ε时,有D(E2(hash0),E2(hash0’))<kε,其中k为一常数,
e、参见图2,将哈希、Hindex、R提交到FC的数据库中。
3、当用户需要认证图像时,也需要将相应图像传到FCP,通过FCP计算出图像的哈希值,参见图3和图8,
(1)FCP首先计算检索特征Hindex=Findox(I);
(2)FCP将Hindex提交到FC,在数据库中检索已有的Hindex,如果对于多有的Hindex’,均有D1(Hindex,Hindex’)≥ε,则认为没有与之相符的原始图像,如果存在图像I’,其Hindex’满足D1(Hindex, Hindex’)≤ε,则说明该图像I’是最接近的原始图像,返回该原始图像的哈希’、R;
(3)FC与CA建立通讯,将检索到的图像ID传输给CA,CA接受到图像ID后再与FCP建立通讯,将检索到的图像注册时使用的两个密钥K1、K2传输给FCP,FC与CA的通信协议与FCP与CA的通讯类似,但其信息的传递步骤g和步骤h变为:
g、FC向CA传输数据:EkU_CA(Iid),
h、CA对其解密:Iid=DkR_FCP(EkU_CA(Iid)),
(4)FCP计算R’=E1(K1),R’[i]为R’中第i位的数字;
(5)根据这组随机数组R’对图像进行分块,参见图2:原始图像为I,I1=I,则I[2i]=R’[i]/10*I[i],I2i+1=(10-R’[i])/10*I[i];
(6)FCP计算从I[1]开始,计算每一块的哈希值,进行比较,得出结果,其具体算法如下:
a、计算I[i]的中间哈希值hash0[i],使用K2进行加密,hash[i]=E2k2(hash0[i]),得到最终哈希值,比较hash[i]与hash’[i],
b、如果D2(hash[i],hash’[i])≤ε2,其中ε2为用户定义的图像篡改的阈值,则认为这两块图像相同,没有发生内容篡改,并且不再继续分块下去,
c、如果D2(hash[i],hash’[i])>ε2,且I[i]无法再分割,则认为这I[i]和I’[i]两块图像存在内容上的差异,又因为无法再对I[i]进行分割,即没有I[2i]和I[2i+1],则认为I[i]发生了内容篡改,且I[i]是本发明所能定位到的最小内容篡改区域,不再计算下去,
d、如果D2(hash[i],hash’[i])>ε2,且I[i]可以继续分割,则重复步骤a)再比较I[2i]和I[2i+1]分块的哈希值;
(7)根据比较结果标示出图像发生内容篡改的位置。