`
北极的。鱼
  • 浏览: 159262 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

数字签名是什么?

 
阅读更多

转自:http://news.cnblogs.com/n/111348/

 

今天,我读到一篇好文章

它用图片通俗易懂地解释了,"数字签名"(digital signature)和"数字证书"(digital certificate)到底是什么。

我对这些问题的理解,一直是模模糊糊的,很多细节搞不清楚。读完这篇文章后,发现思路一下子就理清了。为了加深记忆,我把文字和图片都翻译出来了。

文中涉及的密码学基本知识,可以参见我以前的笔记

====================================================

数字签名是什么?

作者:David Youd

翻译:阮一峰

原文网址:http://www.youdzone.com/signature.html

1.

 鲍勃有两把钥匙,一把是公钥,另一把是私钥。

2.



 
鲍勃把公钥送给他的朋友们----帕蒂、道格、苏珊----每人一把。

3.



 苏珊给鲍勃写信,写完后用鲍勃的公钥加密,达到保密的效果。

4.



 鲍勃收信后,用私钥解密,看到信件内容。

5.



 鲍勃给苏珊回信,写完后用Hash函数,生成信件的摘要(digest)。

6.



 然后,鲍勃使用私钥,对这个摘要加密,生成"数字签名"(signature)。

7.



 鲍勃将这个签名,附在信件下面,一起发给苏珊。

8.



 苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。由此证明,这封信确实是鲍勃发出的。

9.

 苏珊再对信件本身使用Hash函数,将得到的结果,与上一步得到的摘要进行对比。如果两者一致,就证明这封信未被修改过。

10.



 复杂的情况出现了。道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。因此,他就可以冒充鲍勃,写信给苏珊。

11.



 苏珊发现,自己无法确定公钥是否真的属于鲍勃。她想到了一个办法,要求鲍勃去找"证书中心"(certificate authority,简称CA),为公钥做认证。证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。

12.



 鲍勃拿到数字证书以后,就可以放心了。以后再给苏珊写信,只要在签名的同时,再附上数字证书就行了。

13.



 苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。

14.


下面,我们看一个应用"数字证书"的实例:https协议。这个协议主要用于网页加密。

15.



 首先,客户端向服务器发出加密请求。

16.



 服务器用自己的私钥加密网页以后,连同本身的数字证书,一起发送给客户端。

17.



 客户端(浏览器)的"证书管理器",有"受信任的根证书颁发机构"列表。客户端会根据这张列表,查看解开数字证书的公钥是否在列表之内。

18.

 如果数字证书记载的网址,与你正在浏览的网址不一致,就说明这张证书可能被冒用,浏览器会发出警告。

19.

 如果这张数字证书不是由受信任的机构颁发的,浏览器会发出另一种警告。

20.

 如果数字证书是可靠的,客户端就可以使用证书中的服务器公钥,对信息进行加密,然后与服务器交换加密信息。

 

  • 大小: 10.3 KB
  • 大小: 14.7 KB
  • 大小: 11.2 KB
  • 大小: 11.7 KB
  • 大小: 15.7 KB
  • 大小: 4.6 KB
  • 大小: 15.9 KB
  • 大小: 4.2 KB
  • 大小: 18.1 KB
  • 大小: 9.8 KB
  • 大小: 24.1 KB
  • 大小: 26 KB
  • 大小: 10 KB
  • 大小: 26.9 KB
  • 大小: 15.2 KB
  • 大小: 15.8 KB
  • 大小: 34.8 KB
  • 大小: 11 KB
  • 大小: 45.5 KB
  • 大小: 15 KB
分享到:
评论
1 楼 北极的。鱼 2015-03-23  
总结下:
数字签名需要的技术有:hash函数,私钥加密,公钥解密。意义在于解决:保证文件的完整性,确认信息的发送者,防止将来的抵赖行为。

数字证书意义在于
1,信任主机的问题. 采用https 的server 必须从CA 申请一个用于证明服务器用途类型的证书,其实就相当于公正我确实是我. 该证书只有用于对应的server 的时候,客户度才信任此主机. 所以目前所有的银行系统网站,关键部分应用都是https 的. 客户通过信任该证书,从而信任了该主机. 其实这样做效率很低,但是银行更侧重安全.
2.通讯过程中的数据的泄密和被窜改
1. 一般意义上的https, 就是 server 有一个证书.
  a) 主要目的是保证server 就是他声称的server. 这个跟第一点一样.
  b) 服务端和客户端之间的所有通讯,都是加密的.
    i. 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥. 一般意义上的握手过程.
    ii. 加下来所有的信息往来就都是加密的. 第三方即使截获,也没有任何意义.因为他没有密钥. 当然窜改也就没有什么意义了.
2. 少许对客户端有要求的情况下,会要求客户端也必须有一个证书.
  a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码, 还有一个CA 认证过的身份. 应为个人证书一般来说上别人无法模拟的,所有这样能够更深的确认自己的身份.
  b) 目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘作为一个备份的载体.

HTTPS 一定是繁琐的.
  a) 本来简单的http协议,一个get一个response. 由于https 要还密钥和确认加密算法的需要.单握手就需要6/7 个往返.任何应用中,过多的round trip 肯定影响性能.
  b) 接下来才是具体的http协议,每一次响应或者请求, 都要求客户端和服务端对会话的内容做加密/解密.

相关推荐

    数字签名是什么?.docx

    数字签名是什么? 数字签名是一种重要的密码学概念,用于确保数字信息的完整性和身份验证。在本文中,我们将通过一个故事式的解释,来介绍数字签名的基本原理和应用。 在故事中,鲍勃有两把钥匙,一把是公钥,另一...

    20张图告诉你数字签名是什么?

    ### 数字签名基础概念 数字签名是一种用于验证电子信息的真实性和完整性的技术手段。它通过一套密码学算法确保信息不会在传输过程中被篡改,并且能够确认信息确实来源于声称的发送者。数字签名的核心机制涉及到了...

    代码签名数字证书(含私钥)_过期证书_过期数字签名强制签名工具_数字签名_证书

    本文将深入探讨过期证书、过期数字签名的处理、强制签名工具以及数字签名证书的相关知识。 首先,我们要理解什么是代码签名数字证书。这是一种由权威的证书颁发机构(CA)颁发的证书,用于验证软件的开发者身份和...

    数字签名和数字证书

    在IT安全领域,数字签名和数字证书是两个关键概念,它们在确保数据的完整性和身份验证方面发挥着至关重要的作用。本文将详细解释这两个概念,以及它们之间的关系,并结合C#编程语言,探讨如何实现证书和签名功能。 ...

    代码签名数字证书(含私钥),数字签名是使用自己的私钥签名,C,C++

    首先,我们需要理解什么是数字签名。数字签名并非我们日常生活中手写的签名,而是通过一种加密算法,使用私钥对数据进行的一种特殊标记。这个过程类似于物理世界中的印章,但具有更高的安全性。在C或C++编程中,开发...

    数字签名复制工具V1.0绿色版

    数字签名复制工具是一款功能强大、便捷实用的数字签名克隆工具,此款软件能够将一个有数字签名的文件中的数字...数字签名是什么 数字签名(又称公钥数字签名、电子签章)是一种类似写在纸上的普通的物理签名,但是使用

    Win10系统解决强制数字签名认证问题三大解决办法.docx

    在Windows 10系统中,数字签名认证是一个重要的安全机制,它确保了设备驱动程序的来源可靠且未经篡改。当系统强制要求数字签名认证时,可能会阻止未签名的驱动程序安装,这在某些情况下可能会成为问题。针对这种情况...

    数字签名克隆工具

    在深入探讨"数字签名克隆工具"之前,我们先理解什么是数字签名。 数字签名并非传统意义上的签名,而是一种用于验证电子文档或软件程序完整性和来源的加密技术。它结合了非对称加密算法(如RSA)和散列函数(如SHA-...

    数字签名文件,数字签名文件

    在IT领域,数字签名是一种重要的安全技术,它用于验证文件的完整性和来源的可靠性。数字签名文件,如标题所示,通常是指已经应用了数字签名的文件,这种签名能确保文件在传输过程中没有被篡改,并且能证明文件的发布...

    winform实现数字签名实例

    在IT领域,数字签名是一种用于验证数据完整性和发送者身份的技术。它在网络安全、软件发布以及电子文档签署等方面起着至关重要的作用。本实例将详细讲解如何使用C#语言和WinForm来实现数字签名功能。 首先,让我们...

    如何对驱动进行数字签名和禁用数字签名强制

    在计算机和信息技术领域,数字签名是一种用于验证软件驱动程序完整性和来源的技术。它能够保证用户安装和使用的是经过认证、未经修改的驱动程序,增强系统的安全性。对于开发者来说,为驱动进行数字签名是一项重要的...

    ,易语言软件的数字签名

    在IT行业中,数字签名是一种重要的安全机制,尤其在软件开发和分发领域。它主要用于验证软件的来源和完整性,防止恶意篡改。易语言作为一款中国本土的编程环境,也支持对编译后的软件进行数字签名,以提高软件的可信...

    数字签名添加器,数字签名添加工具

    在IT行业中,数字签名是一种重要的安全机制,广泛应用于软件验证、文档签署以及网络通信等领域。数字签名添加器或工具是用来为文件添加这种安全签名的软件,确保数据的完整性和发送者的身份不可否认性。 首先,我们...

    给CAB文件加上数字签名

    #### 二、为什么要对CAB文件进行数字签名? 数字签名可以确保文件的完整性和来源的真实性,这对于ActiveX控件尤其重要。因为这些控件通常具有较高的系统权限,如果被篡改或替换,可能会导致严重的安全问题。通过...

    文件数字签名添加工具,数字签名复制工具

    在IT领域,数字签名是一种重要的安全机制,它用于验证文件的完整性和来源的可靠性。本文将深入探讨“文件数字签名添加工具”以及如何利用这样的工具进行数字签名的复制。 首先,我们来理解数字签名的基本概念。数字...

    数字签名添加器 数字签名添加器

    数字签名在IT行业中扮演着至关重要的角色,尤其是在软件开发、数据安全和电子交易等领域。它是一种先进的加密技术,用于验证文件或代码的完整性和发送者的身份。数字签名添加器是专门设计用来为软件或文档添加这种...

    XP数字签名工具用于数字签名

    在IT领域,数字签名是一种重要的安全机制,它在软件开发、数据传输以及系统安全中扮演着关键角色。本文将深入探讨“XP数字签名工具”及其在数字签名过程中的应用。 首先,我们需要理解数字签名的基本概念。数字签名...

    获取数字签名信息

    在IT行业中,数字签名是一种重要的安全机制,用于验证软件或数据的完整性和来源。当我们谈论“获取数字签名信息”时,通常是指通过编程接口(如DLL接口)来访问和解析包含在可执行文件或库中的数字签名数据。下面将...

Global site tag (gtag.js) - Google Analytics