i = fread(buffer, 1, 16384, file);
SHA1Update(&context, buffer, i);
}
SHA1Final(digest, &context);
fclose(file);
//--------------------//
dig.Mov(0);
for(int j=0;j<5;j++){
memcpy(&dig.m_ulValue[j],&digest[j*4],4);
}
dig.m_nLength=5;
CRsa cer;
if(dig.Cmp(cer.decrypt(sig,n,uk))==0){
MessageBox("签名合法",NULL,MB_ICONINFORMATION|MB_OK);
}else
MessageBox("签名不合法",NULL,MB_ICONERROR|MB_OK);
}
4系统实现
4.1 密钥生成模块产生密钥的过程
密钥生成子系统,是一个通过RSA加密算法生来成密钥的模块,本模块可以产生一个公钥和一个对应的私钥,生成的公钥由房产证书的持有人保存。公钥则对外公布或者由房屋管理中心统一保管,方便以后用户对证件真伪的鉴别。密钥生成实现流程如图9
图9 密钥的生成过程
对房产证件进行数字签名的流程
(1) 由密钥模块得到公钥和私钥
图10 RSA公钥和私钥生成过程
(2)用私钥对房产证信息进行签名
图11 房产证信息签名过程
(3)对已有的签名进行验证
图12 房产证信息签名验证过程
1.签名的实现
(1)房产证的持有人相管理中心提供持有人的个人信息,通过证书公文处理系统生成一个与之对应的房产证书数字公文文件。
(2 )对生成后的数字公文文件我们通过哈希安全算法对数字文件进行消息摘要处理。得到这个数字公文文件的消息摘要文件
(3)对刚刚经过哈希后的数字摘要文件用签名模块中的签名选项来实现对数字摘要的加密,在这个过程中需要用到密钥生成模块中产生的用户私钥,因为在签名中是用的证书持有人的私钥来对摘要进行加密的,所以能够确保签名的可信度和唯一性。
2.验证的过程
(1)由证书拥有者提供他的个人信息,通过数字证书处理模块对其证件进行数字化处理。得到一个数字化后的房产证文件
(2)用安全哈希算法对用户得到的数字化房产证文件进行处理,得到一个消息摘要文件DS
(3)将验证人的证书用管理中心保管的公钥进行解密运算,运算以后会得到一个消息摘要。
(4)将前后两次得到的消息摘要通过签名验证模块中的比较运算来判断两次的消息摘要是否一致,如果结果一致这说明提供验证的证书是真的,如果结果不一致这这个证书是伪造的。
4.3 系统测试
如图13所示 ,在房产公文信息处理子系统中,房产拥有者可以将自己的信息输入此系统中,通过系统的处理,生成一个包含用户信息的数字房产证文件,为了能更好的对用户财产的保护,在设计本子系统时加入了一个用户私秘密信息提问, 因为每个人设置的问题不一样,答案也不一样,这就能在初始化证件的时候都能很好的防止别人伪造自己的证件,因为别人有可能知道自己的很多相关情况,但是在私密问题上别人设置很少能设置得和自己一样,并且在问题一样的情况下各自说出来的答案也未必一样,因此这样就使得本防伪的可用性更强了。安全性也更高了。
图13 房产信息处理界面
在测试密钥生成子系统时,我们通过使用RSA加密算法,可以得到两个不同的密钥,一个由用户自己保管,称作用户的安全签名私钥,而例外一个公钥则由管理中心统一管理,当用户需要鉴别其所持证件的真伪性的时候,公钥就可以用来对带有用户数字签名的文件进行鉴别。密钥产生具体实现过程则如图14所示
图14 密钥生成界面
在签名子系统中 用户如果需要对自己的数字证书进行数字签名来达到对自己数字证书的防伪效果那么用户必须拥有自己的签名私钥,其签名私钥则有上一个子模块产生得到。用户通过自己的私钥就可以对经过处理后的房产证数字文件进行数字签名,签名后的签名文件用户可以通过签名生成子模块运算后得到。具体的操作方法可以参考图15
图15 签名生成界面
签名验证子系统的主要作用就是当用户需要对手里面的证书的真伪进行鉴别的时候,用户可以提交自己的签名文件和数字证书的原文件给房产管理中心,由于房屋管理中心统一管理做房产证防伪系统的公钥,所以管理中心可以用公钥来解密用户的签名文件,并且签名鉴别系统还可以对原来的数字证书文件进行处理,在用户签名被解迷后得到的消息摘要和经过哈希安全算法运算后得到的消息摘要一致的情况下就可以判定带有用户签名的数字房产证书是不是属于其鉴别人自己的,具体的实现过程见图16
图16 签名验证界面
结 论
通过本次仿真房产证信息数字签名系统的设计,使自己对非对称加密安全算法,数字签名,和证件的防伪有了新的认识。通过将现代的信息安全技术与传统的证件防伪相结合起来给人们的日常生活带来巨大的好处和方便。在传统的防伪方法已经不能对现有的证件防伪进行更有力的保护的时候,新的数字技术给面临挑战的传统防伪带来了新的发展方向。相信在以后的应用中新的信息安全技术会越来越多的和以前那些老的技术相结合。给传统的技术新的希望。在本次设计系统的过程中自己的VC++编程技术得到了进一部的提升。并且对信息安全中的加密解密和数字签名的概念和实现方法与 原理都有了一个新的认识,在这个系统的设计过程中学到了不少东西。
参考文献
[1] 张焕国,刘玉珍. 密码学引论[M]. 武汉:武汉大学出版社, 2003。
[2] 杨义先等.信息安全新技术[M].北京:北京邮电大学出版社, 2002.3。
[3] Oded Goldreich.密码学基础[M].北京:电子工业出版社, 2003.1。
[4] 章照止.现代密码学基础[M].北京:清华大学出版社,1998。
[5] David J. Kruglinsk