1. 数字签名的流程:

  发方将原文用哈希算法求得数字摘要,用签名私钥对数字摘要加密得数字签名,发方将原文与数字签名一起发送给接受方。
   数字签名的操作过程需要有发方的签名数字证书的私钥及其验证公钥。具体过程如下:首先是生成被签名的电子文件(《电子签名法》中称数据电文),然后对电子文件用哈希算法做数字摘要,再对数字摘要用签名私钥做非对称加密,即做数字签名;之后是将以上的签名和电子文件原文以及签名证书的公钥加在一起进行封装,形成签名结果发送给收方,待收方验证。

2. 数字签名的认证流程:

  接收方收到数字签名的结果,其中包括数字签名、电子原文和发方公钥,即待验证的数据。接收方进行签名验证。验证过程是:接收方首先用发方公钥解密数字签名,导出数字摘要,并对电子文件原文作同样哈希算法得一个新的数字摘要,将两个摘要的哈希值进行结果比较,结果相同签名得到验证,否则签名无效。这就作到了《电子签名法》中所要求的对签名不能改动,对签署的内容和形式也不能改动的要求。
  

3. 解决第三方攻击情况:

  如果利用非对称加密算法进行双方通信,会引入第三方攻击。比如有通信双方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的公钥加密HASH值后,发送给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

4. 参考:

http://blog.csdn.net/lijiecong/article/details/6096289
http://blog.csdn.net/zh521zh/article/details/51819950
https://zhidao.baidu.com/question/560323951.html

证书与签名(二):数字签名流程与签名认证流程相关推荐

  1. iOS应用签名原理--数字签名?代码签名?双层代码签名?

    数字签名 数字签名(又称公钥数字签名.电子签章等)是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法.一套数字签名通常定义两种互补的运算,一个用于签名,另一个 ...

  2. iOS逆向重签名(三):微信重签名

    目录: 1. iOS逆向重签名(一):签名原理 2. iOS逆向重签名(二):IPA重签名 3. iOS逆向重签名(三):微信重签名 学习了IPA包的重签名技术,下面将这项技术运用到实战中,尝试对微信 ...

  3. 若依管理系统——前后端分离版(二)登陆接口分析及SpringSecurity的登陆认证流程

    一.登陆流程分析 0. 流程整理 1. 图片验证码接口/captchaImage 2.登陆验证接口/login 2.1 校验图片验证码 2.1 查询用户信息 2.3查询用户的权限信息 2.4 生成令牌 ...

  4. Ecology异构系统认证流程时序图

    认证流程时序图 认证流程简图 一.ECOLOGY系统配置 1.配置接口白名单 在ecology系统代码目录中找到以下配置文件:ecology/WEB-INF/prop/weaver_session_f ...

  5. 数字签名(代码签名)流程和数字签名的验证

    数字签名(代码签名)流程 数字签名(代码签名)流程 Authenticode : 这里翻译为数字认证代码.  code sign : 字面的翻译为代码签名,但是通常的我们称为数字签名,以下的文中均称为 ...

  6. 数字证书应用综合揭秘(包括证书生成、加密、解密、签名、验签)

    引言 数字证书是一个经证书授权中心数字签名的包含公开密钥拥有者信息以及公开密钥的文件.为现实网络安全化标准如今大部分的 B2B.B2C.P2P.O2O 等商业网站含有重要企业资料个人资料的信息资信网站 ...

  7. [网络安全自学篇] 五十七.PE文件逆向之什么是数字签名及Signtool签名工具详解(一)

    本系列虽然叫"网络安全自学篇",但由于系统安全.软件安全与网络安全息息相关,作者同样会分享一些系统安全案例及基础工具用法,也是记录自己的成长史,希望大家喜欢,一起进步.前文讲解了i ...

  8. Windows 10驱动签名_win 10驱动数字签名_驱动签名注意事项

    目前对于驱动开发者而言往往面对着一个问题--windows 10驱动数字签名问题,根据Symantec VeriSign代码签名中国区代理商 深圳易维信的客服所介绍,目前颁发的Symantec Cod ...

  9. 【密码学原理】数字签名(ElGamal签名,Schnorr签名,椭圆曲线签名,RSA-PSS签名)

    数字签名是公钥密码学发展过程中最重要的概念之一,产生和使用数字签名过程的一般模型如图所示 消息认证可以保护消息交换双方不受第三方的攻击,但是不能处理通信双方自身发生的攻击.例如对下图中的某种方式进行攻 ...

  10. 数字签名,盲签名,环签名,群签名

    数字签名 类似在纸质合同上签名确认合同内容,数字签名用于证实某数字内容的完整性(integrity)和来源(或不可抵赖,non-repudiation). 实际应用中,由于直接对原消息进行签名有安全性 ...

最新文章

  1. HTTP协议是无状态协议,怎么理解?
  2. ps -aux返回超过100%
  3. 【干货】分库分表最佳实践
  4. html编辑完后扩展名是,【填空题】使用文本编辑器编辑完HTML后,扩展名可以是 或 。...
  5. python简单使用
  6. PHPcms 把盛大登陆换成人人网登陆
  7. python创建nc文件_如何python写nc文件
  8. 外贸网站需要ERP系统吗?
  9. rabbitmq使用_RabbitMQ 简介以及使用场景
  10. 抓linux肉鸡教程视频,抓肉鸡的教程和软件免费分享(2018一天抓1000只电脑肉鸡视频)...
  11. 好用的WPF开源UI框架项目
  12. js 表单打开新窗口
  13. oracle 安装raid卡驱动,centos安装raid卡驱动总结
  14. JAVAFX的table样式修改
  15. 汽车CAN总线技术详解
  16. 解决“DNS_PROBE_FINISHED_NXDOMAIN”,访问网站打不开问题
  17. python笔记2 - 函数,表达式,语句
  18. Java 平衡二叉树之单旋(左旋,右旋)与双旋
  19. LeetCode 力扣算法题解汇总,All in One
  20. 贝叶斯优化的三种实现(bayes_opt|hyperopt|optuna)

热门文章

  1. 如何搭建公司知识共享平台
  2. 人工神经网络—神经元的数学模型
  3. 小Q系列故事——世界上最遥远的距离
  4. java 建立tlsv1.2报错_Java 7的javax.net.ssl.SSLHandshakeException
  5. G - Numbers ZOJ - 3987 (大数+贪心)
  6. Python“Non-ASCII character 'xe5' in file”报错问题(转)
  7. 连接服务器显示句柄无效,紧急求助!!1  打印机不能打印 提示:句柄无效...
  8. 【WIN10】PS/2 标准键盘鼠标带感叹号(代码10,39)(适用于红米G)
  9. C# LISTVIEW实例:文件图标显示
  10. java猜拳小游戏心得体会_java实现猜拳小游戏