数字签名工作流程
2010-12-24 14:19
393 查看
如果利用非对称加密算法进行双方通信,会引入第三方攻击。比如有通信双方A和B,A和B的公钥大家都可以得到。
A主动和B通信,先获取B的公钥
A -->B , 用B的公钥加密,并且把自己的公钥附在后面
B-->A, B接收到后,同时也获取A的公钥,用A的公钥加密发送回A
这样就可以防止第三者监听发送者的内容。但问题是无法解决第三者攻击,比如中间有一个M,M冒充A给B发送内容。
事实上无法解决对方到底是谁的问题!
解决方法是发送内容进行二次加密,并且通讯双方有可靠的途径知道对方的公钥
A发送给B时候,先用A的私钥加密,然后再用B的公钥加密
B收到后,先用B的私钥解密,再用A的公钥解密,得到明文。
获取公钥的可靠途径不一样,就可以有不容的实现方式
1。通信双方事先有对方的公钥,这种方法比较麻烦,要面对面交换。显然不适合大规模应用,用在夫妻之间到是比较好的!
2。第三方的数字签名,这个就比较好了,大家都把公钥放在第三方CA那里,通信发起方问CA要双方的公钥,并传给对方。
比如A发起请求给B。 A先去第三放CA那边请求B的公钥,CA返回给A后,A用私钥加密给B,B收到后在传给CA解密,解密后传回给B。B由此知道A的公钥,同时也可以验证A传过的来的自己的公钥对不对。
中间人攻击不可能了:无法冒充A了,B无法用A的公钥解开任何冒充A的中间人。
A抵赖不可能:B收到后,出示加密后的报文即可,只有A有自己的私钥。
B不能说没收到:去过第三方了,或者已经A把收到的B过来过的报文出示就行,因为只有B自己有私钥。
这篇文章用java实现了, 不错 http://blog.csdn.net/lijiecong/archive/2011/04/21/6337932.aspx
A主动和B通信,先获取B的公钥
A -->B , 用B的公钥加密,并且把自己的公钥附在后面
B-->A, B接收到后,同时也获取A的公钥,用A的公钥加密发送回A
这样就可以防止第三者监听发送者的内容。但问题是无法解决第三者攻击,比如中间有一个M,M冒充A给B发送内容。
事实上无法解决对方到底是谁的问题!
解决方法是发送内容进行二次加密,并且通讯双方有可靠的途径知道对方的公钥
A发送给B时候,先用A的私钥加密,然后再用B的公钥加密
B收到后,先用B的私钥解密,再用A的公钥解密,得到明文。
获取公钥的可靠途径不一样,就可以有不容的实现方式
1。通信双方事先有对方的公钥,这种方法比较麻烦,要面对面交换。显然不适合大规模应用,用在夫妻之间到是比较好的!
2。第三方的数字签名,这个就比较好了,大家都把公钥放在第三方CA那里,通信发起方问CA要双方的公钥,并传给对方。
比如A发起请求给B。 A先去第三放CA那边请求B的公钥,CA返回给A后,A用私钥加密给B,B收到后在传给CA解密,解密后传回给B。B由此知道A的公钥,同时也可以验证A传过的来的自己的公钥对不对。
中间人攻击不可能了:无法冒充A了,B无法用A的公钥解开任何冒充A的中间人。
A抵赖不可能:B收到后,出示加密后的报文即可,只有A有自己的私钥。
B不能说没收到:去过第三方了,或者已经A把收到的B过来过的报文出示就行,因为只有B自己有私钥。
这篇文章用java实现了, 不错 http://blog.csdn.net/lijiecong/archive/2011/04/21/6337932.aspx
相关文章推荐
- 数字签名工作流程
- exchange2003系列总结:-5邮件加密与签名的工作流程
- 证书与签名(二):数字签名流程与签名认证流程
- 外包 银行数字签名U盘的用法, 如何进行签名、C#.NET如何调用,银行是如何认这个签名,签名后如何解开文件等流程
- [工作问题总结]jar打包和applet打印数字签名操作步骤[麻瓜都看的懂]
- 加密算法 公钥私钥理论 数字签名 操作流程
- 网上银行数字证书工作流程
- 数字签名(代码签名)流程和数字签名的验证
- 开发数字货币教程DApp框架工具以及工作流程
- 数字签名(代码签名)流程和数字签名的验证
- 验签名的完整流程---以及数字证书的申请流程
- 数字签名和数字加密的工作流程与比较
- ios NSURLSession使用说明及后台工作流程分析
- 【gearman,3】gearmand个人理解: 工作流程, 应用场景
- apache shiro的工作流程分析
- Struts在Tomcat中的安装配置及工作流程
- 常见工作业务及流程总结
- ISCSI工作流程target和initiator
- Android 4.4 Kitkat Phone工作流程浅析(八)__Phone状态分析
- Laravel学习笔记1-laravel基本工作流程