imtoken官方钱包下载安卓|数字签名的作用

作者: imtoken官方钱包下载安卓
2024-03-08 03:27:50

数字签名原理及作用 - 知乎

数字签名原理及作用 - 知乎切换模式写文章登录/注册数字签名原理及作用长陵夜语喜爱刀刀狗的西席先生---易维信evtrust.com数字签名是什么?数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,主要是基于公钥密码体制的数字签名。数字签名是个加密的过程,数字签名验证是个解密的过程。数字签名的原理是?数字签名技术是将原文通过特定HASH函数得到的摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的摘要信息,然后用HASH函数对收到的原文提炼出一个摘要信息,与解密得到的摘要进行对比。哪怕只是一个字符不相同,用HASH函数生成的摘要就一定不同。如果比对结果一致,则说明收到的信息是完整的,在传输过程中没有被修改,否则信息一定被修改过,因此数字签名能够验证信息的完整性。数字签名的作用是?一是能确定消息的不可抵赖性,因为他人假冒不了发送方的私钥签名。发送方是用自己的私钥对信息进行加密的,只有使用发送方的公钥才能解密。二是数字签名能保障消息的完整性。一次数字签名采用一个特定的哈希函数,它对不同文件产生的数字摘要的值也是不相同的。编辑于 2017-02-09 16:32数字签名​赞同 112​​4 条评论​分享​喜欢​收藏​申请

数字签名 - 知乎

数字签名 - 知乎切换模式写文章登录/注册数字签名知乎用户yYCR7e公开密钥加密技术有两大应用,之前已经聊了一个,就是加密通信,本文来聊另外一个:数字签名。数字签名的基本作用跟现实世界的纸笔形式的签名有什么相同点和不同点,数字签名的基本原理和流程又是什么呢?基本原理先说数字签名的基本原理。数字签名过程跟加密通信有着一定的对称性,这种对称有着一种逻辑上的美。加密通信是用公钥进行加密,而用私钥进行解密。而数字签名刚好相反,是采用私钥加密,公钥解密。对于加密通信,公钥加密过程就是通过加密算法把信息加密成密文,私钥解密过程就是通过解密算法解密密文。而对于数字签名,私钥加密过程是通过签名算法来生成数字签名的过程,而公钥解密过程是通过验证算法来确定数字签名是不是有私钥持有者签署的。可以看到,加密算法,解密算法,签名算法,验证算法,对称性是很明显的。数字签名的主要的作用是认证签署人身份,说得具体点,就是让所有人能够确认这个数字签名是不是由私钥的持有人创建的。数字签名是由签名算法去生成的,签名算法的输入有两个,一个是私钥,另一个是被签署的信息,输出的一个字符串就是数字签名了。签名到底是不是由私钥持有人签署的,要通过验证算法判断。验证算法有三个输入,一个是信息本身,另外一个是数字签名,第三个是公钥,输出的结果就是验证成功或者验证失败。数字签名过程中,私钥是“签名 key”,公钥是“验证 key”。所以说数字签名的原理是非常清晰的,因为数字签名本身跟加密通信形成一个对称关系,而数字签名自己的签名过程跟验证过程,也是个对称关系。把握这种对称性,就比较容易记住基本原理了。基本流程静态的基本原理懂了,咱们再来从时间维度看看数字签名动态流程。Alice 要签署一个文件,于是她就拿出自己的私钥,执行签名算法,得到数字签名。那么其他人如何去验证这个数字签名的确出自 Alice 呢?首先,Alice 要把自己的公钥放到一个大家都可以访问到的服务器上,这样其他人都可以获得 Alice 的公钥,大家把文件,数字签名以及公钥下载到自己的计算机上,调用验证算法,就可以判断这个文件是不是 Alice 签署的了。不管是签名算法还是验证算法都是全球公开的,每个人都可以在自己的计算机上安装软件来执行这两个算法。这就是一个 Alice 签署文件,其他人验证签名的完整过程了。这个过程中有一点要注意,就是签名本身是不会加密文件本身的。在底层,签名过程其实是加密了文件的哈希值,总之签名的目的不在于加密文件信息,而在于生成数字签名。实际作用最后来聊聊数字签名的作用。数字签名有三大作用,第一个是认证,第二个是防止抵赖,第三个是保证文件完整性,也就是没有被篡改过。先看第一个认证,意思就是确认签署人身份,这个跟纸笔签名的作用是一致的。再看第二个防止抵赖,同样是纸笔签名也拥有的特性,一份合同签署了,就要承担责任,白纸黑字,不能耍赖。第三个作用是保证文件没有被篡改过,这个作用纸笔签名很难保证,比如签名只签署了最后一页,那么如果有人想悄悄换掉了前几页的内容,签名本身是阻止不了的。但是数字签名就可以,因为数字签名是由两个输入运算得出的,一个是私钥,另一个就是文件,所以如果在验证过程中,发现文件有改动,验证会失败。这个很类似于现实世界签合同的时候,有时候需要故意用签名或者图章覆盖有文字的区域,或者在写信的时候,给信封加上蜡封,这些措施也都是为了防篡改。这就是数字签名的三大作用,主要用在各种防伪造场合,在世界上很多国家,数字签名都是有法律效力的。另外要注意,数字签名属于电子签名的一种,但并不是所有的电子签名都是数字签名,这两个概念要区分一下。总结关于数字签名,本节就聊这么多。数字签名是公钥加密技术的两大应用之一。主要采用了私钥加密,公钥解密的方式,文件签署者用私钥签署文件,就表示他认可了这个文件的内容。要验证数字签名,只需要签名人公布自己的公钥即可,其他人通过验证数字签名即可验证文件是私钥签署的。签署人不需要暴露自己的私钥,就可以间接证明自己拥有私钥。除了认证签署人身份,数字签名还有两个作用,分别是防止抵赖和保证文件完整性。参考:非常感谢您对 IPFS&Filecoin 项目的持续支持。我们很高兴继续与您一起,为人类信息建立一个强大的,去中心化和高效的基础。FilCloud 帮你迅速了解 IPFS 领域的热点技术和应用公众号:filcloud 发布于 2020-01-10 15:40加密/解密密码学数据加密​赞同 20​​1 条评论​分享​喜欢​收藏​申请

数字签名是什么? - 阮一峰的网络日志

数字签名是什么? - 阮一峰的网络日志

阮一峰的网络日志 » 首页 » 档案

上一篇:我的诗歌       

下一篇:Java开源建站工具 

分类:

理解计算机

⇐ 

 ⇒

数字签名是什么?

作者: 阮一峰

日期: 2011年8月 9日

今天,我读到一篇好文章。

它用图片通俗易懂地解释了,"数字签名"(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.

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

(完)

文档信息

版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)

发表日期: 2011年8月 9日

相关文章

2022.08.02: DNS 查询原理详解

通过 DNS 查询,得到域名的 IP 地址,才能访问网站。

2022.06.03: 字节序探析:大端与小端的比较

今天谈谈一个重要的计算机概念,大家可能都听说过它,但是很少深究,那就是字节序(Endianness)。

2022.02.04: 万兆家庭网络的时代

最近,我想将家里的网络设备,都升级到千兆。

2021.12.07: 为什么 Web3 与区块链有关

互联网迄今有两个阶段:Web 1.0 和 Web 2.0。

留言(335条)

towry

说:

太棒了,真的,非常有帮助,谢谢!!!

2011年8月 9日 20:51

| #

| 引用

落水狗

说:

加上图片以后确实清晰了很多,这个真的很好。

2011年8月 9日 22:14

| #

| 引用

33ad3

说:

说实话,还是有点迷糊

2011年8月 9日 22:16

| #

| 引用

fenghanzhao

说:

还是有点模糊!没太明白!

2011年8月 9日 22:29

| #

| 引用

Xtrats

说:

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

-----------

有鲍勃的公钥就可以冒充鲍勃?

道格自己不也有鲍勃的公钥么?“每人一把”。

2011年8月 9日 23:01

| #

| 引用

阮一峰

说:

引用Xtrats的发言:

有鲍勃的公钥就可以冒充鲍勃?

道格自己不也有鲍勃的公钥么?“每人一把”。

只有有了鲍勃的私钥,才能冒充鲍勃。

道格没有鲍勃的私钥,只好伪造鲍勃的公钥。

2011年8月 9日 23:22

| #

| 引用

Michael.Z

说:

还是有些模糊,需要慢慢理解。

有一个问题,公钥和私钥的算法是一样的吗?为什么私钥加密可以用公钥解密?

2011年8月10日 01:36

| #

| 引用

febird

说:

11.

"证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)。"

13.

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

有个疑问,鲍勃的证书中鲍勃的公钥有没有被加密?

1. 如果加密了,则苏珊必须能从某个地方获取CA的公钥方能和鲍勃通信,这CA公钥要么随证书附送,要么预先存放在苏珊的电脑中。

2. 如果鲍勃的公钥被加密,同时CA的公钥也在证书中附送,那加密鲍勃公钥有什么意义?

3. 如果鲍勃的公钥被加密,且CA的公钥只是预先存放在苏珊的电脑中,那么经过其他未授权CA颁发的无效证书不能被解开,从而无法得到鲍勃的公钥,但这似乎不合理,举个例子,浏览器能够在HTTPS证书不在证书列表的情况下继续通信。

2011年8月10日 02:37

| #

| 引用

史诗在线

说:

  CNNIC也有根证书了,不过我把它屏蔽了。

2011年8月10日 02:40

| #

| 引用

blue gene

说:

引用Xtrats的发言:

有鲍勃的公钥就可以冒充鲍勃?

道格自己不也有鲍勃的公钥么?“每人一把”。

道格用自己的私钥加密发给苏珊的信件,苏珊收到信件后用道格的公钥自然能正常解密该信件,但是苏珊以为她收到的是鲍勃的信件,并且认为是用鲍勃的公钥来解密的,自然认为发信的就是鲍勃,所以道格就达到了伪造鲍勃与苏珊通讯的目的。

2011年8月10日 08:36

| #

| 引用

ncsglz

说:

其实我觉得把三个人名换成中文名,会更容易理解一点,不然容易记不住,哈哈

大学的时候学过这玩意,当时也是一知半解,现在全明白了,太有用了

2011年8月10日 08:43

| #

| 引用

ls zhao

说:

绝对的好文章,通俗易懂。分享了...谢谢

2011年8月10日 09:33

| #

| 引用

xiongbo027

说:

既然道格可以替换鲍勃的公钥,为什么不能故技重施,伪造CA的公钥,然后用自己的私钥伪造成CA的数字证书,从而达到欺骗苏珊的目的呢?

2011年8月10日 09:50

| #

| 引用

newuser

说:

1(前提是有权威的CA认证苏珊,保证确实是苏珊为鲍勃创造了数字证书)得先用苏珊自己的公钥检查鲍勃的数字证书,目的是为了证明苏珊创造了鲍勃的数字证书。

2在解密这个数字证书后,再检查是否鲍勃的数字证书由创造它的CA认证以及在创造鲍勃的数字证书时提供的关于鲍勃的相关信息是否发生了改变。

3帕特用通过解密数字证书得到的公匙(这个公匙苏珊为鲍勃创造数字证书所用的鲍勃的公匙)来检查鲍勃的签名,如果这个公匙确实能成功解密签名,证明确实这个签名是由鲍勃的私匙所创造,当然也证明了道格没有修改文档,因为MD没有变化。

道格确实有鲍勃的公匙,不过他用的是鲍勃的电脑和邮件,而且发给苏珊的是自己用鲍勃的姓名生成的key pair。

2011年8月10日 10:01

| #

| 引用

CK

说:

xiongbo027 说:

既然道格可以替换鲍勃的公钥,为什么不能故技重施,伪造CA的公钥,然后用自己的私钥伪造成CA的数字证书,从而达到欺骗苏珊的目的呢?

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

其实我也有同上的问题,既然CA的公钥是公开的,那么有什么办法能保证别人无法替换掉CA的公钥呢

2011年8月10日 10:10

| #

| 引用

Ciger

说:

公钥不需加密。

CA公钥无法伪造,因为CA公钥是可查的,比如在MSDN里可以查到微软用于签名driver的公钥(Base64码)。

2011年8月10日 10:17

| #

| 引用

阮一峰

说:

引用CK的发言:

既然CA的公钥是公开的,那么有什么办法能保证别人无法替换掉CA的公钥呢

CA都是一些可靠的大机构,它们的公钥在自己网站上提供下载,所以无法伪造。

2011年8月10日 10:27

| #

| 引用

阮一峰

说:

引用febird的发言:

有个疑问,鲍勃的证书中鲍勃的公钥有没有被加密?

1. 如果加密了,则苏珊必须能从某个地方获取CA的公钥方能和鲍勃通信,这CA公钥要么随证书附送,要么预先存放在苏珊的电脑中。

2. 如果鲍勃的公钥被加密,同时CA的公钥也在证书中附送,那加密鲍勃公钥有什么意义?

3. 如果鲍勃的公钥被加密,且CA的公钥只是预先存放在苏珊的电脑中,那么经过其他未授权CA颁发的无效证书不能被解开,从而无法得到鲍勃的公钥,但这似乎不合理,举个例子,浏览器能够在HTTPS证书不在证书列表的情况下继续通信。

我看到有的资料说,公钥被加密打包后,做成证书。

1. CA的公钥网上可以取得,浏览器中也有预存。

2. 证书必须用CA的私钥加密,如果能用CA的公钥打开,就证明确实是CA颁发的。

3. 我对HTTPS的一些实现细节不熟悉,但是我的理解是,如果HTTPS公钥不在浏览器列表内,浏览器可以从网上取得。

2011年8月10日 10:40

| #

| 引用

玉沭林沣

说:

引用阮一峰的发言:

CA都是一些可靠的大机构,它们的公钥在自己网站上提供下载,所以无法伪造。

那么在下载到本地后,如何避免被替换的问题呢?感觉跟道格用自己的公钥替换鲍勃的公钥一样啊,假若苏珊每次也是重新下载鲍勃的公钥岂不是同样可以避免公钥被替换的问题,那么还要数字证书干什么?

2011年8月10日 10:46

| #

| 引用

Yonny

说:

引用玉沭林沣的发言:

那么在下载到本地后,如何避免被替换的问题呢?感觉跟道格用自己的公钥替换鲍勃的公钥一样啊,假若苏珊每次也是重新下载鲍勃的公钥岂不是同样可以避免公钥被替换的问题,那么还要数字证书干什么?

无法避免。

苏珊必须自己保证自己计算机的物理安全。如果别人已经可以直接控制你的计算机,修改根证书列表,那什么证书安全也救不了你。

2011年8月10日 11:13

| #

| 引用

Yonny

说:

楼主把数据完整性和数据加密放在一起讲,会让人糊涂。

实际上,数字签名是保证数据完整性的,但它不保证数据加密,不保证数据传输途中无人嗅探窃听。

好比一辆敞篷大货车从A开到B,中途没有洒落任何东西,完整性得到了保证。但是车上有什么东西也被路人看光光。

数据加密是从A到B建了一条虚拟隧道,货车在里面开,路人谁也不知道是什么东西。

车子到了B后,送货的人给出自己的身份证,证明自己的确是从A来的。收货的人可以选择相信这个身份证。也可以把身份证放到自己的身份证校验仪查询,看看是不是公安部发的真的身份证。

如果你的身份证校验仪(CA)已经是假的了,那就啥都别说了,重装系统吧。

2011年8月10日 11:26

| #

| 引用

Ciger

说:

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

这里似乎有点问题。通常公开钥算法用于相互验证,之后会建立session key(比如128位AES key)。后续交互的信息都是用session key和对称加密算法(比如AES)来加解密的,已经与证书本身和公钥密钥无关。因为公开密钥算法比对称密钥算法开销大很多。不过HTTPS不了解,不敢定论。

2011年8月10日 11:33

| #

| 引用

goool

说:

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

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

--------------

8 的说法有问题,只此一步,是无法确定信由鲍勃发出的。

必须 8 9 两步都完成了,才能确定:信由鲍勃发出,信未修改。

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

-------------

Ciger 的说法是正确的。

为了速度起见,https 连接只在建立连接时,使用服务器的公钥加密,这个阶段是为了交换一个共享密钥。接下来的过程使用的是对称算法。

2011年8月10日 13:18

| #

| 引用

mazhechao

说:

引用Ciger的发言:

通常公开钥算法用于相互验证,之后会建立session key(比如128位AES key)。后续交互的信息都是用session key和对称加密算法(比如AES)来加解密的,已经与证书本身和公钥密钥无关。因为公开密钥算法比对称密钥算法开销大很多。不过HTTPS不了解,不敢定论。

你说的对,就是这样的。

2011年8月10日 13:55

| #

| 引用

mazhechao

说:

引用goool的发言:

8 的说法有问题,只此一步,是无法确定信由鲍勃发出的。

必须 8 9 两步都完成了,才能确定:信由鲍勃发出,信未修改。

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

8的说法没有问题,就这一步就可以保证信由Bob发出的。因为消息是由Bob的私钥签名的,只有Bob本人才有他的私钥,所以能用Bob的公钥解密的,一定是Bob发出的。

8实现了抗否认性,9实现的是完整性。这是两个不同的概念。

2011年8月10日 14:03

| #

| 引用

mazhechao

说:

引用Michael.Z的发言:

公钥和私钥的算法是一样的吗?为什么私钥加密可以用公钥解密?

私钥和公钥在算法上是等价的,只不过一个是private,一个是public。这个应该是由密钥生成算法保证的。

2011年8月10日 14:08

| #

| 引用

mazhechao

说:

引用febird的发言:

有个疑问,鲍勃的证书中鲍勃的公钥有没有被加密?

2. 如果鲍勃的公钥被加密,同时CA的公钥也在证书中附送,那加密鲍勃公钥有什么意义?

确实是被加密的(被CA的私钥加密),但这里的意义不在加密(数据的保密性),而是保证证书是由CA签发的。

2. Bob的公钥被用于后续的会话密钥(session key)交换时的加密传输。

2011年8月10日 14:14

| #

| 引用

jlake

说:

用RSA加密解密的数学原理说明这一过程,可能更容易理解。

2011年8月10日 14:22

| #

| 引用

玉沭林沣

说:

引用Yonny的发言:

苏珊必须自己保证自己计算机的物理安全。如果别人已经可以直接控制你的计算机,修改根证书列表,那什么证书安全也救不了你。

您说的有道理,我是想确认一下数字证书和数字签名它们各自的作用是什么,因为从阮一峰这篇文章里看到的信息貌似是数字证书是为了确保数字签名的真实性而产生的,但实际情况可能不是这样。

2011年8月10日 14:30

| #

| 引用

jlake

说:

http://zh.wikipedia.org/wiki/%E5%85%AC%E5%BC%80%E5%AF%86%E9%92%A5%E5%8A%A0%E5%AF%86

维基百科上的说明,比较容易理解。

假设两个用户A,B进行通信,公钥为c,私钥为d,明文为x.

A用公钥对明文进行加密形成密文c(x),然后传输密文;

B收到密文,用私钥对密文进行解密d(c(x)),得到要通信的明文x。

补充:

如果是 A 同时和 B, C 通信,如果C的私钥为e

C收到密文,用私钥对密文进行解密e(c(x)),得到要通信的明文x。

c 是公钥, d、e 是私钥。用不同的私钥解密,能得到同样的结果。

这个过程通过很巧妙的数学来实现。

2011年8月10日 14:30

| #

| 引用

goool

说:

@mazhechao 原文的 5 6 7 8 9 是一个完整的签名场景,请在这个场景下重新考虑一遍。然后重新看一下 8 的表述:

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

实际上 Bob 的 “数字签名” 可以用任何人的公钥解密,得到一个 hash 值。如果不加上第 9 步(比对原文的 hash值)。这个第 8 步得不到任何有价值的信息。

2011年8月10日 14:46

| #

| 引用

dindog

说:

我也觉的这篇文章翻译失准了。

2011年8月10日 15:12

| #

| 引用

ssdt

说:

有ca也没用,cnnic现在在ca里了

cnnic可以伪造别人的ca然后利用窃取的公钥对信解密

公钥也可以被窃取,窃取了不就可以解开信了

把身份授权给ca也没用,只有法治国家才行

2011年8月10日 16:01

| #

| 引用

ssdt

说:

只要操作系统有后门,什么签名也没用

操作系统的后门可以作为进入一个国家市场的筹码

你以为微软是可以相信的吗

2011年8月10日 16:06

| #

| 引用

eggcalm

说:

13.

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

----------------------------

在这里,CA的公钥会不会被道格用假的CA公钥替换掉?如果可以,那么道格就可以像[10]中那样向苏珊发送假的数字证书,达到冒充鲍勃的目的。

2011年8月10日 16:51

| #

| 引用

mazhechao

说:

引用goool的发言:

实际上 Bob 的 “数字签名” 可以用任何人的公钥解密,得到一个 hash 值。如果不加上第 9 步(比对原文的 hash值)。这个第 8 步得不到任何有价值的信息。

Bob的签名怎么会可以用任何人的公钥解密?Bob是用他的私钥签的啊,当然只有用Bob的公钥才能解密。再次强调,对比Hash值是为了验证数据的完整性。

Yonny兄弟说的有道理。

2011年8月10日 17:11

| #

| 引用

eggcalm

说:

引用goool的发言:

实际上 Bob 的 “数字签名” 可以用任何人的公钥解密,得到一个 hash 值。如果不加上第 9 步(比对原文的 hash值)。这个第 8 步得不到任何有价值的信息。

我不这么认为,我认为第8步的价值就在于,苏珊能确定这封信是鲍勃发出的(虽然不确定信的内容是否被窜改过),因为如果不是使用鲍勃的私钥加密,苏珊使用鲍勃的公钥不可能解密成功。

2011年8月10日 17:17

| #

| 引用

wqfeng

说:

真不错。后面那个HTTPS的例子是译者加的吧?原文中没有。

2011年8月10日 17:45

| #

| 引用

goool

说:

引用mazhechao的发言:

Bob的签名怎么会可以用任何人的公钥解密?Bob是用他的私钥签的啊,当然只有用Bob的公钥才能解密。

在原文第 8 步的场景里,所谓的“解密”只是一次数学运算(典型算法RSA)。输入是 signature 和 某个人的公钥,输出是一个 hash 值。重申一次,得到的这个 hash 没有任何价值。因为可以用任何人的公钥参与这次运算。

以上可以简单归结为:没有原文的数字签名是没有价值的。

2011年8月10日 17:50

| #

| 引用

mazhechao

说:

@goool:

价值就在于我能解开这个签名,能够解开这个签名本身就是有意义的——消息是Bob发出的,Bob不能否认消息是他发的,不是Bob的人也不能说是他自己发的,即实现了数据的抗否认性。至于hash值不hash值的,其意义体现在第9步,实现的是数据的完整性。这是两个完全不同的概念。原文分两步阐述,没有任何问题。

2011年8月10日 18:52

| #

| 引用

goool

说:

@mazhechao

我不知道你所说的“解开签名”是什么意义,它只是一步数学计算而已。

让我们更细致地看一下“验签”的过程:

1: 输入签名和公钥,算出 hash 值 h1;

2: 输入原文,算出 hash 值 h2;

3: 比较 h1 和 h2,发现 h1 和 h2 相等。在这一步上,我们开始推理,得出原文是 bob 发出且没有修改过。也就是你说的抗抵赖和数据完整。

请注意,这两个有价值的结论都是第三步得出的。

原文第 8 步和你都认为:经过第 8 步的计算,即可以得出原文由 bob 发出的结论。这是错误的,实际上1 2 两步只是可以交换顺序的两个计算步骤,它们不是任何有价值结论的充分条件,连必要条件也不是。

2011年8月10日 21:07

| #

| 引用

lewis

说:

http: the definitive guide 有一章是专门讲 https 原理的,比较透彻。

2011年8月10日 22:41

| #

| 引用

雨下路人

说:

总的来说这篇文章是很有价值的,但是翻译的还不让人满意,首先化名用的那几个中文名字不容易区分,容易混淆,鲍勃和道格还是谐音! 读着费劲! 两外最后相关背景没有交代清楚,以及某些语句没有把逻辑关系表达得足够清晰(“道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。”起初理解为道格把鲍勃手上的公钥换走了,乱乱的,仔细琢磨语句,才明白意思是:道格用自己的公钥换走了鲍勃送给苏珊的公钥……) 总之我觉得这篇文章如果要让更多的人收益,传播的更“远”,还需要好好“返修”一下! 完。

2011年8月11日 00:56

| #

| 引用

xy

说:

引用ncsglz的发言:

其实我觉得把三个人名换成中文名,会更容易理解一点,不然容易记不住,哈哈

大学的时候学过这玩意,当时也是一知半解,现在全明白了,太有用了

同意同意如果用张三李四的名字会更容易绕得清。

2011年8月11日 04:50

| #

| 引用

sfumato

说:

最后一段HTTPS的讲解和http://blog.leezhong.com/tech/2011/02/19/https-workflow.html 上的讲解有出入,无网不剩的讲解HTTPS是用非对称来加密对称密钥,然后拿对称密钥对网页加密(这样解密速度快),我相信他的解释是正确的,博主能解释一下吗?

2011年8月11日 10:16

| #

| 引用

涎弟

说:

鲍勃会给苏珊的信?不加密?明文?第七步只是把signature附上了 原文呢?不做任何操作????

2011年8月11日 10:59

| #

| 引用

Ivan

说:

好文章,需要一点时间来理解

2011年8月11日 17:29

| #

| 引用

abc

说:

@goool:

看了你的1,2步和前几个回复(实际上 Bob 的 “数字签名” 可以用任何人的公钥解密,得到一个 hash 值。如果不加上第 9 步(比对原文的 hash值)。这个第 8 步得不到任何有价值的信息。 特别是这个),好象你不懂公钥和私钥的原理吧,公钥和私钥是一对的,某个私钥加密的内容只有这个私钥所对应的公钥才能解开,其他的公钥是解不开的,反之亦然

不然怎么叫密码学呢

2011年8月11日 17:30

| #

| 引用

路灯时代

说:

去年有幸上过台湾的信息安全老师讲的数字签名这块的课,是学校搞的什么和台湾学校联合课程。用的是志明和春娇的做为例子。

内容讲的更为详尽,课件应该还在。不过是专门面向密码学研究的内容。

2011年8月11日 17:47

| #

| 引用

goool

说:

看来不止一个人误会了“解得开”“解不开”的问题。

设想一个签名场景,我们叫“理想中的签名”:Bob 直接用自己的私钥对原文加密,把结果发送给 Alice,Alice 用 Bob 的公钥去解密,得出原文。在这种情况下,的确存在一个“解开”或“解不开”的问题。如果 Alice 用别的什么人的公钥去解密,这次计算仍然能得出一串符号,但是结果没什么意义,这就是你说的“解不开”。

但实际中为了效率起见,被广泛应用的签名是这样的:Bob 对原文做一次 hash,然后用私钥对 hash 值加密,加密得到的结果我们称之为“签名”,然后把原文与“签名”发给 Alice。

Alice 首先作的计算(也就是原文的第 8 步)是用 Bob 的公钥对“签名”作一次解密,从而得出一个有待于与第 9 步得出的结果相比较的一串符号。

这串符号有什么意义么?

没有。

与原文有什么关系么?

看不出来。

通过这次计算,Alice 能不能断定“签名”是 Bob 发出的呢?

不能。因为**如果用别的什么人的公钥参与这次计算,同样能得到一个符号串,也同样看不出什么意义**。

所以,这一步计算没有所谓的“解得开”“解不开”的问题。

这就是为什么原文第 8 步是错误的,原文说:

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

Alice 的确得到了一个被暂时当作是原文 hash 值的符号串,但这个符号串还有待接下来的比对。这句话里的因果关系是不成立的。

2011年8月11日 18:33

| #

| 引用

啊啊呵

说:

@goool:

汗,第八步如果用别人的密钥解密的话会报错,一报错就知道你用的密钥不对了。。。。你真的先看看密码学原理吧。。。。别人已经说的很详细了,8,9有着分别不同的意义

2011年8月12日 11:10

| #

| 引用

abc

说:

@goool:

贴个wiki百科上的说明,这就是文章说的第九步,你自己好好理解一下。。。一个是解密得到的值(也就是第八步的值),一个是自己计算得到的值,再说一边,第八步如果用别人的密钥解密的话是会报错的,也就是得不到结果,而不是你所说的能得到一个hash值,至于加密解密的原理,wiki百科上也有,你可以看一下

签名消息

RSA也可以用来为一个消息署名。假如甲想给乙传递一个署名的消息的话,那么她可以为她的消息计算一个散列值(Message digest),然后用她的密钥(private key)加密这个散列值并将这个“署名”加在消息的后面。这个消息只有用她的公钥才能被解密。乙获得这个消息后可以用甲的公钥解密这个散列值,然后将这个数据与他自己为这个消息计算的散列值相比较。假如两者相符的话,那么他就可以知道发信人持有甲的密钥,以及这个消息在传播路径上没有被篡改过。

2011年8月12日 11:26

| #

| 引用

goool

说:

第八步如果用别人的密钥解密的话是会报错的,也就是得不到结果

以 RSA 算法为例。

拿其它人的公钥去解 Bob 的签名会发生什么,与 RSA 的原理无关,与具体的算法实现有关。从 RSA 的原理来说,所谓“公钥”“私钥”在数学上没有区别,所谓的“加密”、“解密”、“签名”、“验签”本质上是一回事,只是一个乘方和一个取模运算。

报错,报什么错,为什么报错?因为标准实现下,Bob 要对他的信息进行编码和填充。用别的人的公钥解密,会因为填充的字节不对而无法继续计算,或无法从计算结果提取出字符,或与 hash 串规则不符,大多数实现会在此处返回错误或抛出异常。

但是,RSA 从原理上并没有保证这一点,因为它只是三个数字参与的计算而已:把一个数与另一个数作乘方运算,然后除以第三个数,得到余数。

我们完全可以采用另一套字符编码规则、字节补齐规则、以及另外的 hash 算法,让其他人的公钥参与这次计算,也能得到一个符合规则的 hash 值。

所以从逻辑上,Alice 不能作出这样的推理:用 Bob 的公钥对签名作了一次计算,就断定签名是 Bob 发过来的。

2011年8月12日 16:16

| #

| 引用

风逐蓝天

说:

不错的科普文,只是感觉还不够通俗易懂。。。。

2011年8月12日 17:35

| #

| 引用

abc

说:

引用goool的发言:

……

你试一下就知道了啊,用别人的密钥试试看啊,看看会不会报错,你说说的那些什么取模比较数值都在解密也就是第八步里面包含了。。。

2011年8月12日 17:53

| #

| 引用

Jak

说:

不错不错,很形象~ 菜鸟们稍微了解下就好了。

对于 CA 证书的伪造问题……无可避免,谁知道会不会有木马把证书改掉呢。

2011年8月12日 18:37

| #

| 引用

mazhechao

说:

我怎么觉得我开始有点理解goool的意思了。。。

2011年8月12日 22:46

| #

| 引用

阿迪

说:

引用mazhechao的发言:

我怎么觉得我开始有点理解goool的意思了。。。

什么意思啊?

2011年8月12日 22:57

| #

| 引用

abc

说:

引用阿迪的发言:

什么意思啊?

他的意思就是把8,9步误解成解密的过程,其实第八步解密已经包含取模比较等步骤了

2011年8月15日 09:27

| #

| 引用

peeekkk

说:

引用阿迪的发言:

什么意思啊?

应该是说,用Alice用随便什么公钥解密,也会有一点点几率解密成功。所以不能认为解密成功,就100%确定签名的正确,有可能中彩票

2011年8月15日 17:43

| #

| 引用

abc

说:

引用peeekkk的发言:

应该是说,用Alice用随便什么公钥解密,也会有一点点几率解密成功。所以不能认为解密成功,就100%确定签名的正确,有可能中彩票

那到是,只要那个质数被猜到就行了,虽然希望很渺茫。。。

2011年8月16日 10:37

| #

| 引用

fan0219

说:

第八那里,我提一点异议。。苏珊收到信后,用公钥检验数字签名,用鲍勃的公钥解密摘要。不是由此可以验证这封信是由鲍勃发出的。。而是可以由此验证这封信的数字签名是有效的。。这封信,可能是由鲍勃发给A。然后A冒充鲍勃发给B。

第十一文字部分大概也有错误。。鲍勃提交自己的公钥和个人信息给CA(数字证书认证中心),并不需要提供苏珊的私钥。

然后我想问问,网页要是使用https加密浏览是不是,速度会比http慢很多。

要是文章后面能够总结一下公钥和私钥、数字签名、CA、数字证书的作用那就好了、、、、

2011年8月16日 17:39

| #

| 引用

Maple

说:

我也写了篇理解密码学的公钥和私钥的文章,以ssh免密码登陆作为载体 http://www.lovemaple.info/blog/2011/08/ssh-remote-sever-without-password/

2011年8月18日 18:10

| #

| 引用

Mr Wind

说:

如果鲍勃是亲手通过U盘把他的公钥交给苏珊的,那上面的讨论就不需要了;但如果是通过网络介质来传输,就存在着两个问题:1该公钥是鲍勃自己发的,还是有人冒充鲍勃发的,这是身份确认的问题,2该公钥是不是被人掉包或修改,这是公钥完整性的问题。(PGP软件中公钥的生物属性就很好地解决了上面的问题,通过电话用一些单词来与鲍勃核对公钥的完整性,其实是核对该公钥的指纹。)基于上面的原因要引入根证书。如果苏珊的电脑是盗版(她电脑中受信任的根证书已被恶意调换),或者她的电脑中受信任的根证书的已被黑客修改,也不排除CNNIC使坏的可能,再加上网页劫持,那苏珊个人电脑的https://……就有很大的风险。

2011年8月20日 10:07

| #

| 引用

finian

说:

引用Xtrats的发言:

有鲍勃的公钥就可以冒充鲍勃?

道格自己不也有鲍勃的公钥么?“每人一把”。

注意这里所说的“用自己的公钥”,不是鲍勃给道格的那支,而是道格自己伪造的另一支

2011年8月20日 14:19

| #

| 引用

Qujer

说:

我竟然看懂了!!!

2011年8月21日 21:12

| #

| 引用

fan0219

说:

引用Mr Wind的发言:

如果鲍勃是亲手通过U盘把他的公钥交给苏珊的,那上面的讨论就不需要了;……

Mr Wind的评论好精彩啊。。我学过几个星期网络安全,对公钥密钥这块看的很有趣味。Mr Wind 盗版系统根证书被修改的例子很意思!!

继续关注文章的评论。。

2011年8月23日 00:35

| #

| 引用

太道

说:

solidot有个类似的劫持证书的案例 http://internet.solidot.org/article.pl?sid=11/08/31/078252

2011年9月 8日 04:04

| #

| 引用

卢达

说:

引用Michael.Z的发言:

公钥和私钥的算法是一样的吗?为什么私钥加密可以用公钥解密?

这叫“非对称加密”

2011年9月16日 10:33

| #

| 引用

卢达

说:

只是,常见的在线邮箱缺少对 s/mime 的支持啊

2011年9月16日 10:41

| #

| 引用

riefuy

说:

读了这篇文章,获益匪浅。

也非常同意gool的观点,如果数据完整性得不到保证,怎么保证不可否认性?也就是数据被修改了,还能说是本人发出的吗?

2011年10月13日 22:44

| #

| 引用

ly

说:

bob给他们每人一把的公钥是不是是一样的?如果是,那么信件被道格截取到,是不是就同样被解密了!

2011年10月17日 16:01

| #

| 引用

精英一客

说:

呵呵,这个我之前也不是很懂。但是,如果你从证书的用途上去理解,比如私钥的目的是什么,公钥的目的是什么,这样的话会理解的很快

2011年10月24日 16:06

| #

| 引用

阿萨德

说:

银行的u盾属于私钥还是公钥,要是公钥每个u盾的内容是不是一样的呢

2011年11月 3日 09:35

| #

| 引用

HahA

说:

引用Xtrats的发言:

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

-----------

有鲍勃的公钥就可以冒充鲍勃?

道格自己不也有鲍勃的公钥么?“每人一把”。

其实是道格用自己的公钥(不是鲍勃给他的,是他自己的公钥)替换了苏珊的鲍勃公钥(注意是替换,原文翻译成换走可能对你理解产生了误导)。之后道格用自己的密钥加密信件发给苏珊,苏珊用假的鲍勃公钥(实际上是道格公钥)解密信件,发现信息正确,便以为是鲍勃发来的信件,于是道格实现了伪装成鲍勃欺骗苏珊的目的

2011年11月 4日 20:43

| #

| 引用

lich

说:

想这个过程的时候,如果略掉生成摘要的Hash函数貌似会更清晰些。

1 alice使用私钥对一份合同生成签名,同时把合同和签名发给bob。

2 bob收到后,使用公钥对签名解密生成一段文本。对应步骤8。

3 bob对比收到的合同和解码生成的文本。如果相同,则确定是来自alice。对应步骤9。

这里不能完全通过是否能解码成功来判断数据是否来自alice。

假设我使用自己的密钥对一段数据生成签名,发送给bob。bob使用alice的公钥解码,结果碰巧能解开,解开的数据有可能是乱码,无法阅读,但如果再碰巧看起来像一份合同。所以必须同时和收到的数据进行比较。

2011年11月17日 18:16

| #

| 引用

jieson79

说:

如果道格在网络上截取了BOB给苏珊的信,是不是就可以得到其中的内容?

2011年12月 1日 20:49

| #

| 引用

晴天娃娃

说:

如果第三方冒充发送方发出了一个文件,因为接收方在对数字签名进行验证时使用的事发送方的公开密钥,只要第三方不知道发送方的私有密钥,解密出来的数字签名和经过计算的数字签名必然是不相同的,这酒提供了一个确认发送方身份的方法。

2011年12月 2日 23:13

| #

| 引用

hui

说:

作者对公钥,私钥谁加密谁解密的解释似乎是有点问题的:

“Public-key cryptography refers to a cryptographic system requiring two separate keys, one to lock or encrypt the plaintext, and one to unlock or decrypt the cyphertext. Neither key will do both functions.”

参考链接在这里:

http://en.wikipedia.org/wiki/Asymmetric_encryption

2011年12月21日 21:28

| #

| 引用

shanshan

说:

有个地方不明白,既然苏珊可以用鲍勃的公钥进行解密,看到鲍勃的信件内容,那道格他也有鲍勃的公钥呀,那他也可以看到鲍勃写给苏珊的信件内容罗。

2011年12月22日 13:15

| #

| 引用

张永

说:

图形并茂,讲的真是太好了,o(∩_∩)o 哈哈

2012年3月25日 15:26

| #

| 引用

辛盈

说:

看了这么多评论,我发现很多人没有搞清楚加密和认证的区别:

加密:公钥加密、私钥解密

认证:私钥加密、公钥解密

首先要搞清楚一个操作的目的是什么,目的是加密数据还是认证作者。

2012年3月26日 13:23

| #

| 引用

Vaporz

说:

引用Xtrats的发言:

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

-----------

有鲍勃的公钥就可以冒充鲍勃?

道格自己不也有鲍勃的公钥么?“每人一把”。

我的理解,道格给苏珊的是自己私钥生成的公钥,但因为苏珊不知道这是道格的公钥,就以为是在跟鲍勃通信。而且因为是道格私钥生成的公钥,所以道格可以正常的加密解密消息

2012年5月 8日 11:29

| #

| 引用

lzm

说:

文章很好,很容易理解。但我对图11有一些看法。

就你所说

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

认证中心对所有的信息进行了加密,那我所理解的数字证书将是一个密文串,那当得到这个密文串证书,我根本就不能知道是哪个ca对用户信息进行的加密,认证时也不知道用谁的公钥对证书进行解密。

我理解的证书是可以公布开的,所以用户的所有信息是不必要加密的。ca所需要做的工作只是对整个用户明文信息进行认证,也就是取摘要,再对摘要就行私钥加密。

没有找到相关的资料,不知道对不对,还请作答,谢谢。

2012年5月14日 11:38

| #

| 引用

乜都5识

说:

是篇好文章,但是,觉得文章并没有作者一开头说的那样好啊。

2012年8月19日 00:59

| #

| 引用

爱国者

说:

引用goool的发言:

Alice 不能作出这样的推理:用 Bob 的公钥对签名作了一次计算,就断定签名是 Bob 发过来的。

但Alice已经知道采用哪种公钥密钥算法了,因此如果使用Bob的公钥无法解密,那么可以推定消息不是Bob所发

2012年10月 1日 23:08

| #

| 引用

Jeremy

说:

引用lich的发言:

假设我使用自己的密钥对一段数据生成签名,发送给bob。bob使用alice的公钥解码,结果碰巧能解开,解开的数据有可能是乱码,无法阅读,但如果再碰巧看起来像一份合同。所以必须同时和收到的数据进行比较。

当"我"给Bob发信的时候,我的信是公开的,未被加密的,因为加密也没有意思啊,原因就是很多人有我的公钥.

但关键是,怎么才能让Bob看见我的信是原版,未经删减的.所以需要对原文Hash一下得到Y.

当Bob收到信后,用"我"的公钥解开签名,得到Y.然后Bob需要对原文Hash一下,得到M,

这个时候,对比Y与M.才能确保数据是安全的.

这里的安全包括:是由"我"发出去的,并且中途未被修改.

2012年10月14日 01:48

| #

| 引用

Jeremy

说:

引用shanshan的发言:

有个地方不明白,既然苏珊可以用鲍勃的公钥进行解密,看到鲍勃的信件内容,那道格他也有鲍勃的公钥呀,那他也可以看到鲍勃写给苏珊的信件内容罗。

这样的啊.本来就这个样子的.全是道格看不见苏珊给鲍勃的信.

对应到计算机上就是:Server 发给 Client 的数据是可以被截获的.

2012年10月14日 01:51

| #

| 引用

Jeremy

说:

引用爱国者的发言:

但Alice已经知道采用哪种公钥密钥算法了,因此如果使用Bob的公钥无法解密,那么可以推定消息不是Bob所发

在第8步上,goool 说法是正确的.

譬如说,我们可以想像一下这个情况:Bob写了封信(包括原文和签名)给Lily,然后Lily对原文做了些修改,再把这封信转发给了Alice. Alice当然是可以对这个签名解密的.因为他有Bob的公钥啊.但是我们不能说,这封信是由Bob发给Alice的,因为这封信的直接受体应该是Lily.

2012年10月14日 01:56

| #

| 引用

亭子

说:

非常赞,学到了好多东西,您的博客我非常喜欢看,请问是否可以做一个Android版的应用呢?这样,我们随时随地都可以看了。

如果有需要,我可以做这个android应用。

2012年10月16日 13:13

| #

| 引用

暗影吉他手

说:

我非常统一goool的看法。对于解密来说不存在“解密失败”这种说法。一般来讲的“解密失败”是指解密后的明文(不管是用对称密码还是非对称密码)仍然是无意义的文章,但是对于数字签名来说,不管解密后的hash是否正确,它都是一串无意义的hash值,单就这步来说根本看不出来是不是“解密失败”了。

再强调一遍,根本不存在“解密失败”这种说法。

2012年11月 4日 01:05

| #

| 引用

spraith

说:

我觉得之所以第8步有些问题,是因为Bob在制作数字签名那一步没加上一些更详细的说明,比如,第6、7步制作签名时,同时把Bob的个人信息和信件摘要并到一起再用私钥加密的话,在第8步苏珊用公钥解密后,就确实能知道此信件是由Bob发出的了,然后第9步通过hash函数也可以验证信件是否被修改过。而且根据第8和第9步所做的事情来看,我觉得作者的原意非常可能就是这样的,他只不过在第6 7步时漏掉了把Bob的个人信息也一起加入数字签名中。

2012年11月10日 16:07

| #

| 引用

小乖

说:

银行专业版 usb key里面存储的是什么信息,是客户端私钥,和客户端证书,还是服务器端证书.怎么和银行的服务端通讯的,我怎么都没想清楚?

2012年12月21日 17:36

| #

| 引用

小乖

说:

引用雨下路人的发言:

某些语句没有把逻辑关系表达得足够清晰(“道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。”起初理解为道格把鲍勃手上的公钥换走了,乱乱的,仔细琢磨语句,才明白意思是:道格用自己的公钥换走了鲍勃送给苏珊的公钥……)

道格的公钥和苏珊的公钥不都是 鲍勃送的吗,不是一样的吗

2012年12月21日 17:40

| #

| 引用

arlen

说:

之所以会觉得第8步有问题,是因为翻译的时候有一句重要的话没有翻译出来,原文是这样的:

Pat's software decrypts the signature (using Bob's public key) changing it back into a message digest. If this worked, then it proves that Bob signed the document, because only Bob has his private key.

2013年3月 8日 10:35

| #

| 引用

teddywu

说:

引用小乖的发言:

道格的公钥和苏珊的公钥不都是 鲍勃送的吗,不是一样的吗

“道格用自己的公钥换走了鲍勃送给苏珊的公钥” 是指 道格用道格的公钥(不是鲍勃给道格的公钥) 替换掉了鲍勃送给苏珊的公钥。

2013年3月16日 21:41

| #

| 引用

刀尖红叶

说:

好文章~

2013年3月20日 19:08

| #

| 引用

shfqbluestone

说:

峰哥的文章写的非常好,通俗易懂!

2013年3月27日 13:26

| #

| 引用

JohnK

说:

第8步确实有问题,仅由签名解密得到的结果是没法判断签名者身份的。

举个例子:(假设不考虑对明文的加密)

Alice 发送一串附带签名的明文给 Bob,格式如下:

TEXT SIG1

明文 签名

现在 Eve 截获了这段信息,并伪造为:

TEXT SIG2

明文 签名

Bob 收到信息,抛弃明文不看,对 SIG2 使用 Alice 的公钥解密,得到了 DIG2。

但他并不知道正确的 HASH(TEXT) 是什么,也就不知道得到的 DIG2 到底对不对,那么怎么判断发送者的身份呢。

不可抵赖性的实现是 依赖 TEXT 和 SIG 共同实现的。

假设 Eve 想篡改 Alice 的信息为:

TEXT2 SIG2

明文 签名

SIG2 应= RSA (Alice的私钥, HASH(TEXT2))

这样才能骗过 Bob 以为这封信息来自 Alice。

但 Alice 的私钥 Eve 并没有,因此他伪造不出签名。

因此当 Bob 验证过签名(相对明文)正确后,就认为这封信是 Alice 发送的。而不与明文相对是不成立的。

至于使用 Alice 的公钥去解密 Eve 伪造的签名会不会报错,则一定意义上依赖于加密算法。起码 RSA 这种幂乘和取模运算是不会有任何报错的。

2013年5月 8日 21:33

| #

| 引用

大神

说:

引用阮一峰的发言:

只有有了鲍勃的私钥,才能冒充鲍勃。

道格没有鲍勃的私钥,只好伪造鲍勃的公钥。

鲍勃给没人的公钥难道不是他们几个共有的?给的这个和鲍勃的公钥不一样?不共有?

2013年7月 7日 10:46

| #

| 引用

George Chen

说:

第5点,Bod决定采用 数字签名。

为什么Bod要用数字签名,应该说明下,这里Bod是为了证明自己是Bod,即这是认证过程 而非 加密过程

2013年11月11日 22:04

| #

| 引用

Chil

说:

引用blue gene的发言:

道格用自己的私钥加密发给苏珊的信件,苏珊收到信件后用道格的公钥自然能正常解密该信件,但是苏珊以为她收到的是鲍勃的信件,并且认为是用鲍勃的公钥来解密的,自然认为发信的就是鲍勃,所以道格就达到了伪造鲍勃与苏珊通讯的目的。

我也正好有这个疑问,如果苏珊收到信件后能用道格的公钥解密,这岂不是每个拥有道格公钥的人都能对信件解密?都能看到信件的内容?这样的话通信就不安全了.

2013年11月16日 07:42

| #

| 引用

Chil

说:

引用mazhechao的发言:

私钥和公钥在算法上是等价的,只不过一个是private,一个是public。这个应该是由密钥生成算法保证的。

如果是这样的话那通信就不安全了.就比如Bob将信息用自己的私钥加密发给suzan,但是很多人都有Bob的公钥,那岂不是有Bob公钥的人都可以解密看到信息?

2013年11月16日 07:55

| #

| 引用

SelfMedicated

说:

引用goool的发言:

@mazhechao

我不知道你所说的“解开签名”是什么意义,它只是一步数学计算而已。

让我们更细致地看一下“验签”的过程:

1: 输入签名和公钥,算出 hash 值 h1;

2: 输入原文,算出 hash 值 h2;

3: 比较 h1 和 h2,发现 h1 和 h2 相等。在这一步上,我们开始推理,得出原文是 bob 发出且没有修改过。也就是你说的抗抵赖和数据完整。

请注意,这两个有价值的结论都是第三步得出的。

原文第 8 步和你都认为:经过第 8 步的计算,即可以得出原文由 bob 发出的结论。这是错误的,实际上1 2 两步只是可以交换顺序的两个计算步骤,它们不是任何有价值结论的充分条件,连必要条件也不是。

转牛角了。同意m

2014年1月14日 15:58

| #

| 引用

SelfMedicated

说:

引用SelfMedicated的发言:

转牛角了。同意m

好吧,我忽然又懂goool的意思了,但我觉得这其实是具体实现的问题(当用不匹配的公钥去解密的时候会不会有“明显信息提示”的问题),可是这完全不是这篇文章的关键点啊,大不了是楼主翻译表述不严谨,可是不严谨又不是只有这一个地方,所以还是觉得钻牛角了...

2014年1月14日 16:17

| #

| 引用

御宅暴君

说:

引用goool的发言:

以 RSA 算法为例。

拿其它人的公钥去解 Bob 的签名会发生什么,与 RSA 的原理无关,与具体的算法实现有关。从 RSA 的原理来说,所谓“公钥”“私钥”在数学上没有区别,所谓的“加密”、“解密”、“签名”、“验签”本质上是一回事,只是一个乘方和一个取模运算。

报错,报什么错,为什么报错?因为标准实现下,Bob 要对他的信息进行编码和填充。用别的人的公钥解密,会因为填充的字节不对而无法继续计算,或无法从计算结果提取出字符,或与 hash 串规则不符,大多数实现会在此处返回错误或抛出异常。

但是,RSA 从原理上并没有保证这一点,因为它只是三个数字参与的计算而已:把一个数与另一个数作乘方运算,然后除以第三个数,得到余数。

我们完全可以采用另一套字符编码规则、字节补齐规则、以及另外的 hash 算法,让其他人的公钥参与这次计算,也能得到一个符合规则的 hash 值。

所以从逻辑上,Alice 不能作出这样的推理:用 Bob 的公钥对签名作了一次计算,就断定签名是 Bob 发过来的。

大哥,假设私钥为 (d, n), 公钥为 (e, n), 那么通过前者加密后,若要解密,所用到的 e 就必须满足 ed ≡ 1 (mod φ(n)) 公式了 。当然就几乎只有原来那个公钥 (e, n) 的 e 满足其条件,所以不是任何公钥都可以解的。毕竟如同其它前辈指出的,你拿别的公钥去计算,就因为会满足不了该条件而出错。你可以再好好地通过阮一峰的《RSA 算法原理》补习下。

如果要找出同样满足该公式其它的 e 也不是不可以,但其算法复杂度就和用公钥加密私钥解密的情况一样了。归根结底,公私钥的确可互换,且无法通过其中一个钥匙能在可接受的成本下计算出另一个钥匙,也难怪 RSA 深得『非对称』的真谛了。

2014年2月 5日 21:35

| #

| 引用

御宅暴君

说:

发现评论中有不少人被 goool 误导了... 汗。

且不说这个,有人质疑既然也可以用私钥加密用公钥解密,那么因为公钥是公开的,岂不是人人都可以解开被私钥加密的数据了?

但是!谁告诉你用私钥加密是为了不让他人窥探明文数据了?这做法不是为了保密,而是在于『认证』!即验证『我所使用的公钥』与『对方加密时所使用的私钥』是否构成一对符合 RSA 算法原理的公私钥。如同我上一条评论指出的,试图使用其它公钥来解密就几乎会出错。

但是私钥就只有对方一人知道了,就拿正文中例子来说。只要对方确确实实是鲍勃,从而私钥的确也是鲍勃所使用的。于是只要『苏珊所手上的公钥能对对方发过来的数据进行有效解密』,那么就证明了这公钥的确是与对方,即鲍勃使用的私钥构成一对公私钥。这就所谓的『认证』了。

但是,万一对方偏偏不是鲍勃而是道格,且已经偷偷把苏珊手上的公钥换成道格的公钥了呢?这个公钥当然就与道格所有用的私钥构成有效的一对公私钥,于是道格的确就可以在苏珊完全不知情的情况下,假装成鲍勃并与她通讯。其实这问题就要通过 CA 来解决了,正文的后续当然也是围绕此而展开的。

这地方阮一峰先生的确讲的不够好,没明确好『加密』和『认证』的区别,仍未尚未彻底掌握 RSA 算法的同学的确很容易被弄糊涂甚至陷入误区。

2014年2月 5日 21:56

| #

| 引用

liuruoze

说:

讨论好激烈啊,其实这篇科普文非常不错,非常明晰。但是想要真正理解还需要读更专业的文章。有些同学连加密与认证这两个基本过程都不懂,看了自然云里雾里。我觉得这篇文章主要说明的是签名和数字证书的区别与关系。

另外,https传输内容是确实是对称加密算法。还有,看这篇文章时务必先了解对称加密算法与非对称加密算法的基础知识。

2014年2月26日 10:48

| #

| 引用

zhanlang

说:

引用御宅暴君的发言:

发现评论中有不少人被 goool 误导了... 汗。

且不说这个,有人质疑既然也可以用私钥加密用公钥解密,那么因为公钥是公开的,岂不是人人都可以解开被私钥加密的数据了?

但是!谁告诉你用私钥加密是为了不让他人窥探明文数据了?这做法不是为了保密,而是在于『认证』!即验证『我所使用的公钥』与『对方加密时所使用的私钥』是否构成一对符合 RSA 算法原理的公私钥。如同我上一条评论指出的,试图使用其它公钥来解密就几乎会出错。

但是私钥就只有对方一人知道了,就拿正文中例子来说。只要对方确确实实是鲍勃,从而私钥的确也是鲍勃所使用的。于是只要『苏珊所手上的公钥能对对方发过来的数据进行有效解密』,那么就证明了这公钥的确是与对方,即鲍勃使用的私钥构成一对公私钥。这就所谓的『认证』了。

但是,万一对方偏偏不是鲍勃而是道格,且已经偷偷把苏珊手上的公钥换成道格的公钥了呢?这个公钥当然就与道格所有用的私钥构成有效的一对公私钥,于是道格的确就可以在苏珊完全不知情的情况下,假装成鲍勃并与她通讯。其实这问题就要通过 CA 来解决了,正文的后续当然也是围绕此而展开的。

这地方阮一峰先生的确讲的不够好,没明确好『加密』和『认证』的区别,仍未尚未彻底掌握 RSA 算法的同学的确很容易被弄糊涂甚至陷入误区。

如果道格也去认证了自己的证书,并且用自己的公钥换了bob的公钥,每次通信的时候发自己的证书过去,结果就是一切验证都没有问题,但是苏珊却以为自己在跟bob通信,实际确实跟道格通信, 我的意思是如何辨别证书所有者跟你要通信的目标是同一个人呢?

2014年3月12日 14:40

| #

| 引用

Colin356

说:

英文与中文在表达的逻辑上还是不同的,喜欢谨慎的接受概念和原理的人还是改天再看看原文吧~

2014年3月17日 02:19

| #

| 引用

xinxinyu

说:

引用zhanlang的发言:

如果道格也去认证了自己的证书,并且用自己的公钥换了bob的公钥,每次通信的时候发自己的证书过去,结果就是一切验证都没有问题,但是苏珊却以为自己在跟bob通信,实际确实跟道格通信, 我的意思是如何辨别证书所有者跟你要通信的目标是同一个人呢?

门外汉猜测。CA认证是收费的,可能会保证不会被恶意替换。网站和证书是一一对应的。a.com - public1 b.com - public2 可能像hosts那样的列表。

2014年3月30日 17:24

| #

| 引用

heramerom

说:

引用zhanlang的发言:

如果道格也去认证了自己的证书,并且用自己的公钥换了bob的公钥,每次通信的时候发自己的证书过去,结果就是一切验证都没有问题,但是苏珊却以为自己在跟bob通信,实际确实跟道格通信, 我的意思是如何辨别证书所有者跟你要通信的目标是同一个人呢?

你说的 ‘并且用自己的公钥换了bob的公钥' 是指道格偷偷用了苏的电脑,把里面的公钥换成自己么。可是文中说CA认证后,是把公钥放在传送的信息中的,而不是保存在苏的电脑上得。

2014年5月13日 17:55

| #

| 引用

richard

说:

引用阮一峰的发言:

只有有了鲍勃的私钥,才能冒充鲍勃。

道格没有鲍勃的私钥,只好伪造鲍勃的公钥。

怎么又变成了Bob的私钥了哈?Susan不是用Bob的公钥来解密的么?

另外还有点疑问就是为啥被替换为假的Bob公钥后,不能鉴别出来哈?不是可以将假Bob公钥解密的digest与原文hash之后比较,来判断内容是否一致么?如果是假的,digest会匹配不上哈,不是就不需要数字证书了哈?

还请您指教:)

2014年5月14日 14:45

| #

| 引用

richard

说:

引用mazhechao的发言:

8的说法没有问题,就这一步就可以保证信由Bob发出的。因为消息是由Bob的私钥签名的,只有Bob本人才有他的私钥,所以能用Bob的公钥解密的,一定是Bob发出的。

8实现了抗否认性,9实现的是完整性。这是两个不同的概念。

是不是说,如果解密的公钥不对了,是不能执行解密过程的,如果能执行解密就一定是bob的公钥了?

2014年5月14日 14:53

| #

| 引用

liuinsect

说:

那,“证书中心用自己的私钥,对鲍勃的公钥和一些相关信息一起加密,生成"数字证书"(Digital Certificate)”

证书中心怎么保证这个是 鲍勃的公钥 而不是其他人的?

2014年5月22日 16:55

| #

| 引用

呆瓜路

说:

谢谢院一峰先生的讲解,一目了然,通俗易懂。。

2014年7月15日 10:03

| #

| 引用

etnlona

说:

help a lot,thanks~!!!

2014年7月17日 16:58

| #

| 引用

zyj

说:

对收到的信件进行hash,得到的怎么可能跟对签名进行的hash的结果相等呢?????

2014年8月25日 09:57

| #

| 引用

Leon

说:

引用zyj的发言:

对收到的信件进行hash,得到的怎么可能跟对签名进行的hash的结果相等呢?????

解密得到的明文再hash得到的摘要与解密签名得到摘要进行验证,如果内容没被修改即相同。

2014年9月23日 10:25

| #

| 引用

刘哈哈

说:

引用CK的发言:

xiongbo027 说:

既然道格可以替换鲍勃的公钥,为什么不能故技重施,伪造CA的公钥,然后用自己的私钥伪造成CA的数字证书,从而达到欺骗苏珊的目的呢?

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

其实我也有同上的问题,既然CA的公钥是公开的,那么有什么办法能保证别人无法替换掉CA的公钥呢

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

说下我个人理解:CA的公钥是放在网站上的,当需要使用的时候在网站上进行下载,这样就能保证每次使用的CA公钥是不可能被替换的正确的公钥

2014年9月29日 15:40

| #

| 引用

阿凡提

说:

文中第三步,苏珊给鲍勃写信,

鲍勃 怎么确定这封信就是来自苏珊的??

2014年10月24日 15:12

| #

| 引用

yuntauy

说:

加密和完整性确实稍作区分更好。

Bob持有私钥,Susan有公钥。

Susan ----> Bob, 数据是加密的,因而也是没被修改的。

Bob ---> Susan, 数据是公开的,但是能保证是没被修改的。这时Susan实际上可以是公众中任何一个人。因为Signature是不能被修改的(修改了解不出来),进一步保证了Digest没被修改,再进一步保证信件没被修改。实际上在原理上Bob可以直接对给Susan的回信加密,这也能保证信件没被修改。但当信件的体量太大时,直接加密就不可取了。

2014年11月 7日 15:42

| #

| 引用

纳信

说:

其实wikipedia上的这幅图就能完全说明清楚了

http://en.wikipedia.org/wiki/Digital_signature#mediaviewer/File:Digital_Signature_diagram.svg

2014年11月12日 15:32

| #

| 引用

门外汉

说:

对这个不了解哟。我个人理解是:

首先任何人(好人和坏人)的公钥和私钥都可以用来加密解密数据,如果你访问https网站的时候用的是坏人的公钥,那么你就被坏人“中间人攻击”了,你在和坏人通信,你输入的密码等信息都被坏人用私钥解密而截获了。

那么这里就要保证、不要使用坏人的公钥加密,那么怎么知道将要访问的网站的真正公钥,而不是被坏人替换了假的公钥呢?这里用到的是事先存储方法,就是事先将这个网站的公钥放在一个地方,并且信任这个地方的所有公钥。 浏览器程序有一个证书选项,里面有“受信任的根证书颁发机构”,还有你的系统里的证书管理工具里也有信任的机构,也就是他们颁发的证书(公钥在证书里)在你装上系统或者下载浏览器之后是默认就信任了的!!!然后你将要访问的网站也是从那些证书颁发机构买的,所以也就默认信任了

你现在把你的系统时间往前调整十几年,然后清除缓存,打开一个https网站,你会发现提示证书未生效,因为浏览器根据已经信任的证书来判断的,在已经信任的证书(公钥在证书里)里,有个有效期,不在这个区间内浏览器就认为证书有问题。

至此,已经知道浏览器或者操作系统是靠“受信任的根证书颁发机构”这个玩意来确定是好人还是坏人的,所以如果你的系统或浏览器能够被黑客控制,那么黑客就有可能把你默认信任的证书替换成黑客自己的“坏证书”,来进行中间人攻击。所以保证自己系统安全很重要。

那么有没有不需要入侵系统就能对https进行中间人攻击呢?答案是有!那就是CNNIC,https追溯到上级,就是信任由颁发证书的机构颁发的证书,然而,CNNIC从2009年已经被火狐微软等公司默认信任了,也就是说CNNIC制作的ca证书你都默认的信任了,哈哈!

CNNIC当初还被CCAV报道过,搞的cn域名被晃色网站随便换域名。GFW和CNNIC是孪生兄弟,GFW负责DNS域名污染,CNNIC复杂伪造“合法”的ca证书,GFW就可以轻松的搞的任何网站的https加密传输!

最好将CNNIC从浏览器和操作系统的信任列表里删除(IE和谷歌用的系统的信任列表,火狐用的自己的信任列表)

大家可以搜索下。。。

不对请指教

2014年12月 6日 21:55

| #

| 引用

pony

说:

总体写得不错,不过看完后还是有几个疑问:

1. 也是争论得最多的,第8步中如果数字签名被道格修改,那苏珊用鲍勃的公钥解密时会不会报错?报什么错?希望有人能提供可靠的证据。

2. 如果问题1的答案是会报错,那么是否可以完全不使用数字签名,鲍勃直接用私钥对信件内容加密,苏珊用公钥解密,这样是否也能保证信件的完整性?因为如果内容被篡改,则解密时会报错。按照yuntauy的意思,似乎这样是可行的。

3. 第13步中,苏珊怎么知道用哪个CA的公钥去解密数字证书?

2015年2月28日 18:40

| #

| 引用

woodie

说:

有个疑问确实下

Bob发给三个人的公钥都是一样的吗?

2015年3月 3日 10:32

| #

| 引用

MemoMou

说:

如果还是觉得迷糊的同学,我觉得可以看看《离散数学及其应用》(Kenneth H. Rosen著)的4.6章,有实例分析,看完就懂了

2015年5月 5日 10:56

| #

| 引用

Daily1993

说:

引用啊啊呵的发言:

@goool:

汗,第八步如果用别人的密钥解密的话会报错,一报错就知道你用的密钥不对了。。。。你真的先看看密码学原理吧。。。。别人已经说的很详细了,8,9有着分别不同的意义

这个还会报错的啊?如果是敌军截取一段密文,用“与加密用的私钥不配对”的公钥解出一串字符,解密错了还会报错的啊,不会吧。。

2015年6月24日 11:14

| #

| 引用

老钱

说:

文章很不错,前后看了两遍终于搞清楚数字签名和数字证书的概念了。但对https的实现原理等还需要自己在琢磨琢磨。

2015年7月10日 14:04

| #

| 引用

yao

说:

第五步:鲍勃给苏珊回信,决定采用"数字签名"。

我想知道为什么要用数字签名?用数字签名的作用是什么?鲍勃直接用私钥加密传给苏珊不行吗?

2015年7月13日 21:30

| #

| 引用

sgqm

说:

受益匪浅!

评论和文章同样精彩!尤其是@goool的那一段讨论。

我也一直被公钥成功解密私钥的密文中的这个“成功”的定义所困惑,成功的定义是什么?

有人说会报错,或许在UserAgent实现https这块会有一定的异常处理,但在请求和响应被劫持的情况下,黑客通过自己的程序用任意的公钥取解密的时候,何来报错一说?

还是没搞明白!

2015年7月29日 18:03

| #

| 引用

houkai

说:

引用雨下路人的发言:

总之我觉得这篇文章如果要让更多的人收益,传播的更“远”,还需要好好“返修”一下!完。

同感!

2015年7月30日 19:49

| #

| 引用

AutumnLight

说:

你好,我想问下,原文中有这样一句

“Either one of Bob's two keys can encrypt data, and the other key can decrypt that data.“

其中任何一个密钥都可以用来加密,而另外的一个则可以用来解密;

可不可以这样理解:使用私钥加密的信息可以使用公钥解密,而不能使用私钥解密;使用公钥加密的信息可以使用私钥解密,但是不能使用公钥解密?

2015年8月11日 21:47

| #

| 引用

AutumnLight

说:

还有一个问题:

第8条说,苏珊拿到数字签名后,使用鲍勃的公钥进行解密,得到文档摘要,那么是不是鲍勃用私钥加密的数字签名只能使用鲍勃的公钥进行解密,而解密工具会给出是否可以使用此公钥进行解密?如果使用的公钥不能对数字签名进行解密就会出错,而不是使用任意的公钥都能进行解密,只不过是否正确了?

2015年8月11日 22:19

| #

| 引用

jqk6

说:

太清楚了!非常感谢阮老师!

2015年8月26日 17:32

| #

| 引用

pjm

说:

引用yao的发言:

第五步:鲍勃给苏珊回信,决定采用"数字签名"。

我想知道为什么要用数字签名?用数字签名的作用是什么?鲍勃直接用私钥加密传给苏珊不行吗?

前面的前辈已经讲得很清楚了,使用数字签名就是为了认证和验证完整性(也就是信息是否被修改),认证什么?为了认证这封信的最初发出者是不是BOB!不管中途信的明文内容有没有被黑客修改,只要有这个签名,就能证明bob是信的最初发出者(因为签名带有bob的个人信息,所以能证明)。然后再利用解密出来的数字签名中的摘要,用这个摘要去和你用hash函数加密获得的信的内容的摘要进行对比,就可以判断信的内容是否被黑客修改,这是验证完整性。

鲍勃直接用私钥加密传给苏珊不行吗?这个不是不行,只是没有意义,因为你鲍勃直接用私钥加密传给苏珊,但是!!!另外俩人也同样拥有鲍勃的公钥,他们也同样可以解开这个密文,所以这个加密是没有意义的。

2015年9月 2日 11:47

| #

| 引用

Jason

说:

阮大师:

我在美国工作,但也是你的粉丝之一,最近看了你很多文章,当然包括这篇,英文原文我也看了,但是似乎都忽略了一个问题:为什么要用hash呢?

整个hash步骤似乎是完全没有必要的,签名直接用私钥加密原信息,然后连同certificate和原信息一同发给对方。对方收到后先验证certificate,如果通过再用公钥解码签名,如果和原信息一样就说明没问题。我觉得如果按这个流程操作本质也是一样的,作用也一样。

请大师解答一下,谢谢

2015年10月17日 22:06

| #

| 引用

guest

说:

数字签名,简单来说就是

利用公钥机制,对消息的hash值加密,

完成数据的 不可否认性(公钥通信双方的唯一匹对)、数据完整性(消息的hash是唯一的)

2015年10月30日 10:13

| #

| 引用

徐朋

说:

引用Jason的发言:

阮大师:

我在美国工作,但也是你的粉丝之一,最近看了你很多文章,当然包括这篇,英文原文我也看了,但是似乎都忽略了一个问题:为什么要用hash呢?

整个hash步骤似乎是完全没有必要的,签名直接用私钥加密原信息,然后连同certificate和原信息一同发给对方。对方收到后先验证certificate,如果通过再用公钥解码签名,如果和原信息一样就说明没问题。我觉得如果按这个流程操作本质也是一样的,作用也一样。

请大师解答一下,谢谢

亲啊,你发送给别人的信息,如果用私钥加密,那么任何拥有你公钥的人都能够看到信的内容。所以,使用私钥来加密 信件内容是错误的。

所以,这个地方阮大师讲解的时候,漏掉了一点内容。就是,你给别人发私信必须要对这封信(信的内容+你的签名)使用 信件接收人的公钥进行加密。

2015年11月 2日 22:41

| #

| 引用

lorne

说:

引用Jason的发言:

阮大师:

我在美国工作,但也是你的粉丝之一,最近看了你很多文章,当然包括这篇,英文原文我也看了,但是似乎都忽略了一个问题:为什么要用hash呢?

整个hash步骤似乎是完全没有必要的,签名直接用私钥加密原信息,然后连同certificate和原信息一同发给对方。对方收到后先验证certificate,如果通过再用公钥解码签名,如果和原信息一样就说明没问题。我觉得如果按这个流程操作本质也是一样的,作用也一样。

请大师解答一下,谢谢

我的理解:与加密整个原文相比,只加密hash值所花费的时间会小的多,加密所需时间与加密内容的关系是线性的,你可以测试一下。

2015年11月 3日 09:09

| #

| 引用

Godlike

说:

有没有软件实现

2015年11月 3日 11:03

| #

| 引用

gongfei

说:

很厉害,很容易弄懂,谢楼主

2015年11月 3日 15:24

| #

| 引用

随智阔

说:

CA的钥匙要是丢了呢?被替换??

2015年11月24日 10:14

| #

| 引用

kai

说:

http://www.cnblogs.com/JeffreySun/archive/2010/06/24/1627247.html

这篇文章的最后详细说明了,CA如何签发证书的,以及浏览器如何对证书进行校验的。里面提到证书里面对public key是不加密的。

2015年11月26日 11:52

| #

| 引用

Yongming

说:

HTTPS是否也有漏洞,过程如下:

A:server

B:client

C:hacker

1)B向A发送请求

2)A收到请求后,发送包含pub-key的证书给B

3)对于2)中的由A发送给B的证书,碰巧的是,C刚好接截获这段证书,并由root证书验证是真实的,那么root证书解析出pub-key。C就拿着这把pub-key等着。

4)B收到2)中的证书,也跟C一样验证并解析出pub-key,并生成一对AES-key,用pub-key加密AES-key并发送给A

5)又不巧的的是,C截获了4)中的秘闻AES-key。

......

OK,此时C成功侵入A-B之间的通信,请问上诉过程是否有bug,或者怎么破解?谢谢。

2015年12月 2日 17:22

| #

| 引用

Zhe Zhang

说:

引用Yongming的发言:

HTTPS是否也有漏洞,过程如下:

A:server

B:client

C:hacker

1)B向A发送请求

2)A收到请求后,发送包含pub-key的证书给B

3)对于2)中的由A发送给B的证书,碰巧的是,C刚好接截获这段证书,并由root证书验证是真实的,那么root证书解析出pub-key。C就拿着这把pub-key等着。

4)B收到2)中的证书,也跟C一样验证并解析出pub-key,并生成一对AES-key,用pub-key加密AES-key并发送给A

5)又不巧的的是,C截获了4)中的秘闻AES-key。

......

OK,此时C成功侵入A-B之间的通信,请问上诉过程是否有bug,或者怎么破解?谢谢。

第(5)步似乎不行吧。Hacker并没有拿到server的密钥,仅知道公钥pub-key是无法解密client发出的AES-key的。

2015年12月 4日 16:56

| #

| 引用

Martin

说:

这么晚才看到,希望能回复一瞎

最后https举例中

16:server用自己的“private key加密网页”,这里的加密网页,是加密自己网页的网址吧?

client收到后,检查本地证书列表,找到如果可以找到public key,解密 得到web网址,然后进行对比看是否一致

是这样的过程么?

2015年12月 5日 09:41

| #

| 引用

Martin

说:

引用Yongming的发言:

HTTPS是否也有漏洞,过程如下:

A:server

B:client

C:hacker

1)B向A发送请求

2)A收到请求后,发送包含pub-key的证书给B

3)对于2)中的由A发送给B的证书,碰巧的是,C刚好接截获这段证书,并由root证书验证是真实的,那么root证书解析出pub-key。C就拿着这把pub-key等着。

4)B收到2)中的证书,也跟C一样验证并解析出pub-key,并生成一对AES-key,用pub-key加密AES-key并发送给A

5)又不巧的的是,C截获了4)中的秘闻AES-key。

......

OK,此时C成功侵入A-B之间的通信,请问上诉过程是否有bug,或者怎么破解?谢谢。

看了以后,有点自己的想法,希望讨论一下

如你上面所说,C有了pub-key,等着,然后又有 step 5),截获了4)中的AES-key

因为AES-key用 pub-key加密,解密的话,可以再用pub-key进行解密?我以为的是pub-key加密,private-key解密。对加密解密不太了解,如果问题小白,见谅

2015年12月 5日 09:59

| #

| 引用

Martin

说:

引用lorne的发言:

我的理解:与加密整个原文相比,只加密hash值所花费的时间会小的多,加密所需时间与加密内容的关系是线性的,你可以测试一下。

我也是这样理解的,虽然没有测试。

认为传输原文成本,要比传输hash大得多

如果只是为了保证传输内容没有被修改过,使用md5之类的方式也可以做到这一点吧?

hash是可逆的么?

2015年12月 5日 10:03

| #

| 引用

coooder

说:

同意goool的观点。

假设对下面两段文本进行签名:

text1 (hash)=>100 (加密)=> 100-1

text2 (hash)=>200 (加密)=> 200-2

公钥为pub-key

那么pub-key应该是可以同时解密 100-1 和 200-2 的

那么如果接收到的数据为: text1 + 200-2

单纯进行第8步,200-2 解密得到 200 ,通过200这个数据无法得知信是由谁发的

只有通过第9步,对比 200 和 100 ,才能得到“信是不是由鲍勃发的以及信的内容是否被修改”

2015年12月16日 02:11

| #

| 引用

浪迹

说:

你们说的牛逼,我弱弱的问一句,公钥是对的,有哪些情况解不开私钥发过来的消息呢??

2015年12月17日 16:22

| #

| 引用

iMusicDog

说:

写的很好,虽然我不是100%懂了,但是觉得了解了很多!!!感谢阮老师!

另外,我觉得gools说得是对的!可能实现上会更直接一点给用户提示错误,比如说,如果用一个错误的(不对应的)公钥去解签名的话,直接报错。

最后,我有一个问题,为什么在 5 的时候,鲍勃要突然使用签名呢?

2015年12月21日 15:06

| #

| 引用

饭别稀

说:

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

如何确定鲍勃证书中的公钥是真的?上面的解释是有问题的,苏珊做的不只是简单的解密成功就完了,而是用CA的公钥对证书中的签名做了一次完整的验签,可解密表示是CA发来的,hash一致表示正文未篡改,所以证书的正文包含的鲍勃的公钥,鲍勃的基本信息都是可信的。

2016年1月14日 10:38

| #

| 引用

王松

说:

引用徐朋的发言:

亲啊,你发送给别人的信息,如果用私钥加密,那么任何拥有你公钥的人都能够看到信的内容。所以,使用私钥来加密 信件内容是错误的。

所以,这个地方阮大师讲解的时候,漏掉了一点内容。就是,你给别人发私信必须要对这封信(信的内容+你的签名)使用 信件接收人的公钥进行加密。

其实英文原文中也并没有提到,对信的内容加密。

2016年1月16日 15:44

| #

| 引用

echo爱你

说:

在下是门外汉。阮兄的几张图配上说明一下子就看懂了,到看到评论我就傻了。。。

2016年2月 1日 04:47

| #

| 引用

小法

说:

如果道格用自己的公钥和伪造的鲍勃的个人信息去证书中心认证,然后伪装成鲍勃给苏珊发信息怎么办?还是说证书中心有义务验证个人信息的正确性,确保加密的个人信息是正确的?希望大家能给解释一下

2016年2月27日 13:38

| #

| 引用

小法

说:

弱弱的问下,用公钥解密,用正确的可以解开,用错的公钥解不开,到底什么叫解得开,什么叫解不开,解不开有什么提示吗?是会报错,还是得到一串没有意义的字符?新手求指导!!

2016年2月27日 13:39

| #

| 引用

binzeng

说:

本来以为看懂了,胸有成竹,看了下面评论,我又迷糊了。。。。

2016年3月10日 23:30

| #

| 引用

fspore

说:

我的理解是:

1)要达到保密的目的,则message必须由公钥加密,因为私钥只有一个人有,所以保证只有一个人能解得开。

所以要达到双方的message都是保密的,则须存在两对公私钥,双方互持有自己的私钥和对方的公钥。

但是由于message是用你的公钥加密的,所以虽然message是密文,但不能保证这个密文就是Bob加密后给你的,任何持有你的公钥的人都可以给你发密文。

2)因此还需要实现认证这个功能。

这回,Bob使用只有他自己才持有的私钥对message的摘要hash进行加密,然后将之附在原message上发给你。这个时候,你尝试用你手上所有的公钥来对hash密文进行解密,如果某个公钥A解开了hash密文,则证明对该hash进行加密的就一定该公钥所对应的私钥-A。而私钥只有一个人持有,所以能惟一确认这个message是被这个人经手过的。

也就是说,如果我手上的Bob的公钥确实就是属于Bob的话,那么当这个公钥能解开hash密文时,我就能说这个message确实是由Bob发出的。

3)而如何保证"我手上的Bob的公钥确实就是属于Bob"呢?只有引入第三方权威认证。也就是CA了。

上面goool 说的第8条,我也有同样的疑问。我对密码学不甚了解。

但按文中的说法,能够知道:

a)如果公钥与私钥对应, 那么私钥加密hash后的密文 被该公钥解密后能够还原出那hash。

问题是: 其他不与私钥对应的公钥在尝试对密文解密后, 其结果是完全无法解密呢?还是得出一个无意义的hash值呢?

有人能解答一下吗?

2016年4月 6日 18:57

| #

| 引用

godshit

说:

太精彩了,通俗易懂,看过n篇文章,就这篇最好了。 谢谢博主~

2016年4月 7日 08:17

| #

| 引用

我的滑板鞋

说:

是否可以这么理解:‘数字签名’跟‘数字证书’不是为了加密信息,而是为了确认来源可靠?

2016年4月 7日 20:58

| #

| 引用

刘大敏

说:

引用我的滑板鞋的发言:

是否可以这么理解:‘数字签名’跟‘数字证书’不是为了加密信息,而是为了确认来源可靠?

是的,我也是这么理解的,文章中引出CA,主要目的也是确保鲍勃的公钥确实是鲍勃的,而非来自其它人的伪造。

2016年4月12日 08:59

| #

| 引用

留大名

说:

顺便感慨一句,看到11年写成的文章依旧不断的被评论和回复着,有价值的东西生命力天然的会长久。

2016年4月12日 09:06

| #

| 引用

chicoge

说:

您好,请问您的文章可以转载嘛?如果可以我希望能够转载并签署您的大名, 感谢!

2016年4月15日 11:04

| #

| 引用

xiadeng

说:

引用阮一峰的发言:

CA都是一些可靠的大机构,它们的公钥在自己网站上提供下载,所以无法伪造。

大机构的网站被黑了,就可以了

2016年5月20日 19:35

| #

| 引用

Jiguang

说:

阮大,上面貌似有错误的地方。如果加密方式是非对称加密,那么是不可以用私钥加密,公钥解密的。应该是双方各自产生一个密钥对,然后交换公钥。

2016年5月27日 14:15

| #

| 引用

rabbitws

说:

引用Jiguang的发言:

阮大,上面貌似有错误的地方。如果加密方式是非对称加密,那么是不可以用私钥加密,公钥解密的。应该是双方各自产生一个密钥对,然后交换公钥。

https中,第二阶段的服务端与客户端沟通是:客户端拿到服务端的公钥后,产生一个随机的key作为,然后用服务端的公钥加密传递给服务端,服务端拿到加密后的key,利用服务端原有的私钥解密,得到key的原文。然后后面跟客户端通讯就使用key作为对称加密的私钥,进行通讯了。其实https真正的数据传递过程,走的是对称加密。

2016年6月12日 14:49

| #

| 引用

芊度

说:

确实不错,很好。每当我忘记的时候就再来看看/touxiao

2016年6月24日 17:11

| #

| 引用

薛子嘉

说:

第八步原文本来就含糊不清,作为一个初学者,那么就有一个疑问,假设有一个函数,getOutput(signature, publicKey),那么使用一个非bob的publicKey在调用这个函数时会发生下面哪一种结果?

1.traceback(抛异常,只是打个比方别扯远了),证明非bob的publicKey在解密时就能够判断出来。

2.返回字符串(只是打个比方别扯远了)。

很明显,看上面的评论,我感觉大多数人对于判断这个解密是否成功的概念有差异。

2016年7月 8日 11:57

| #

| 引用

薛子嘉

说:

补充一下

1.有些人可能认为,哦,traceback了,或者返回错误码了,就知道这里解密就是失败了。

2.有些人可能认为,哦,这里返回了某一个字符串,或者hash,在这里,明显判断不了是否失败。

3.有些人在这里没有概念,你说成功了就是成功了。

2016年7月 8日 12:05

| #

| 引用

bmcciscoding

说:

@Jeremy:

修改了之后hash值不一样了

2016年8月 8日 23:33

| #

| 引用

bwangel

说:

有个问题想请教一下,比如像 Tornado 中有个设置

cookie_secret

文档中说这个值是对cookie进行签名的?

这个值就是签名的私钥吗,那么公钥是如何生成的啊?

2016年10月17日 11:27

| #

| 引用

water

说:

很清晰,通俗易懂

2016年11月 2日 09:23

| #

| 引用

Chris

说:

引用Xtrats的发言:

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

-----------

有鲍勃的公钥就可以冒充鲍勃?

道格自己不也有鲍勃的公钥么?“每人一把”。

这里是您的理解有误, 道格用自己生成的公钥替换了苏珊电脑上鲍勃原先的公钥, 但苏珊潜意识里面还以为是鲍勃的公钥, 以后道格用自己的私钥加密信件, 冒充是鲍勃, 苏珊用电脑上的公钥解密,就真的以为是道格.

2016年11月 3日 13:22

| #

| 引用

QuinnChen

说:

首先感谢博主一如既往地为大家带来这么多优质博客。

这个例子不错

唯一的不足是,讲到私钥解密还可以私钥加密

按我理解,像RSA这种非对称加密算法中,私钥只能解密从公钥加密来的密文,而不能进行加密

2016年11月28日 02:43

| #

| 引用

QuinnChen

说:

引用QuinnChen的发言:

首先感谢博主一如既往地为大家带来这么多优质博客。

这个例子不错

唯一的不足是,讲到私钥解密还可以私钥加密

按我理解,像RSA这种非对称加密算法中,私钥只能解密从公钥加密来的密文,而不能进行加密

抱歉,我个人理解有误,公钥私钥其实是可以相互加解密的。

对于数据加密时,公钥加密,私钥解密

对于数据认证时,私钥签名,公钥验证(这时就是私钥加密,公钥解密)

2016年11月28日 14:08

| #

| 引用

yehot

说:

根本就没有帕蒂什么事啊,这就尴尬了

2016年12月 1日 17:04

| #

| 引用

yehot

说:

鲍勃的信,签名是用私钥加密了。但是新建内容本身不用加密么?

2016年12月 1日 17:09

| #

| 引用

shiyang

说:

引用mazhechao的发言:

8的说法没有问题,就这一步就可以保证信由Bob发出的。因为消息是由Bob的私钥签名的,只有Bob本人才有他的私钥,所以能用Bob的公钥解密的,一定是Bob发出的。

8实现了抗否认性,9实现的是完整性。这是两个不同的概念。

我有一个疑问就是8里面苏珊对签名解密后得到摘要,就能知道这是鲍勃的签名,那这个摘要里面有什么信息可以让苏珊知道是鲍勃的摘要?是不是摘要也是公开信息?

2016年12月 6日 15:08

| #

| 引用

Harvey

说:

感谢,感谢,太好了,一篇文章就说清楚了签名、证书。

2016年12月20日 10:38

| #

| 引用

代码喵

说:

醍醐灌顶,感谢阮老师

2016年12月22日 21:50

| #

| 引用

成雨霖

说:

老师这内容太多了,眼睛都看花了。谢谢老师

2017年1月 2日 23:02

| #

| 引用

大盛

说:

好文,通俗易懂,受教了。

正如前辈们所说,再修补一下,澄清混淆之处,就完美了!

1.加密和认证的区别,公钥和私钥的使用;

2.只凭第8步,是否能确定是Bob发出的?为什么 ?

2017年1月 6日 11:32

| #

| 引用

魏海通

说:

引用大盛的发言:

好文,通俗易懂,受教了。

正如前辈们所说,再修补一下,澄清混淆之处,就完美了!

1.加密和认证的区别,公钥和私钥的使用;

2.只凭第8步,是否能确定是Bob发出的?为什么 ?

第二个问题,Bob用私钥加密,只要他的私钥没有泄漏就能证明是Bob发出来的。 不对称加密算法,公钥私钥成对出现决定的

2017年1月12日 16:29

| #

| 引用

魏海通

说:

引用xiongbo027的发言:

既然道格可以替换鲍勃的公钥,为什么不能故技重施,伪造CA的公钥,然后用自己的私钥伪造成CA的数字证书,从而达到欺骗苏珊的目的呢?

所以苏珊幸亏没碰到你啊,

2017年1月12日 16:44

| #

| 引用

魏海通

说:

引用阿凡提的发言:

文中第三步,苏珊给鲍勃写信,

鲍勃 怎么确定这封信就是来自苏珊的??

那就需要相互认证了。每个人都有CA证书且公布自己的公钥。

2017年1月13日 10:28

| #

| 引用

very_well2

说:

谈谈我的理解,其实上面的例子从3个方面保证了信息的安全,信息内容,发信人,收信人。

还是以信件为例,上面的信件来往案例把事情复杂化了,就以Susan给Bob单向发信为例,可以采取这样的方式,分别解决了如下3个问题:

(1)信息内容安全:保证Susan发的信只有Bob能看(发信:Bob公钥加密=》收信:Bob私钥解密,除了Bob其他人看不了)

(2)发信人安全:保证Bob收到的信确实是Susan发的(发信:信件本身使用Bob公钥加密=》收信:Bob私钥解密=》HASH函数得到摘要;数字签名:使用Susan私钥加密=》收到后使用Susan公钥解密=》得到摘要=》两个摘要对比)。核对一致后,Bob保证信一定是Susan发的,因为只有Susan的公钥才能解密数字签名。但Susan发信的时候不一定保证发给了Bob,她不知道用的Bob的公钥是不是正确的。

(3)收信人安全:保证Susan发信一定是给Bob发的,所以通过引入权威的证书机构来发布数字证书,相当于一个公证机构,把大家的公钥搜集到一起进行公证和公示,然后大家去获取这样的数字证书,他们说这个是Bob,那大家都信任这个就是Bob。

总结来说,数字签名就是保证发信人安全的(我签的我认账),数字证书是保证收信人安全的(权威机构说的,他是谁,大家都信)。

2017年1月17日 19:37

| #

| 引用

Curiosity

说:

引用御宅暴君的发言:

若要解密,所用到的 e 就必须满足 ed ≡ 1 (mod φ(n)) 公式了 。当然就几乎只有原来那个公钥 (e, n) 的 e 满足其条件,所以不是任何公钥都可以解的。

大哥,你才是理解错了吧。作为解密方,你只有d和n,你怎么可能有e来给你验证这个 ed ≡ 1 (mod φ(n)) 公式呢?

解密方做的只不过是求解公式:c^d ≡ m (mod φ(n)) 中的m罢了,(c为密文)。

解密方完全可以根据任意一个d`得出一个m`,但是这个m`是否与原来的m相同,只能通过第9步才能验证,进而验证这个d`确实是真正的加密方的公钥。

2017年1月20日 03:28

| #

| 引用

key

说:

CA的公钥是附在数字证书上面的吗

2017年1月22日 17:41

| #

| 引用

张文

说:

CA公钥是附在数字证书上面的吗?

2017年1月25日 21:31

| #

| 引用

何时, 枫叶红

说:

鲍勃给苏珊回信,那所有人, 不都可以看到信的内容了吗?

2017年2月 9日 10:30

| #

| 引用

王昊明

说:

最好不要用鲍勃、苏珊之类。就用A、B、C就好了

2017年2月13日 11:03

| #

| 引用

依力哈木·多来提

说:

努力创业

2017年2月15日 03:21

| #

| 引用

滕均

说:

开启支付功能

2017年2月22日 07:50

| #

| 引用

薛来桓

说:

1063672谢谢大哥

2017年2月26日 03:48

| #

| 引用

弗丁老爹

说:

引用玉沭林沣的发言:

那么在下载到本地后,如何避免被替换的问题呢?感觉跟道格用自己的公钥替换鲍勃的公钥一样啊,假若苏珊每次也是重新下载鲍勃的公钥岂不是同样可以避免公钥被替换的问题,那么还要数字证书干什么?

1、只是CA证书被替换不要紧,操作系统or浏览器会在一张表里去查这个证书是否存在,是不是CA的。如果不是就揭穿了骗局;

2、如果CA证书列表也被篡改了,说明你的操作系统or浏览器已经被攻破了,那神仙也救不了,没办法,只能等系统升级或者打补丁了。

2017年3月 7日 17:17

| #

| 引用

弗丁老爹

说:

引用何时, 枫叶红的发言:

鲍勃给苏珊回信,那所有人, 不都可以看到信的内容了吗?

对于HTTPS而言,鲍勃对每个人的加密算法都不一样,所以不存在这个问题,本文没有涉及到。

2017年3月 7日 17:19

| #

| 引用

落叶_为谁

说:

第9步中,既然是“苏珊再对信件本身使用Hash函数”,那么为什么图片上的“信件”下方还有一个“Digest”?是不是图画错了?

2017年3月 8日 10:32

| #

| 引用

落叶_为谁

说:

引用落叶_为谁的发言:

第9步中,既然是“苏珊再对信件本身使用Hash函数”,那么为什么图片上的“信件”下方还有一个“Digest”?是不是图画错了?

第9步中,既然是“苏珊再对信件本身使用Hash函数”,那么为什么图片上的“信件”下方还有一个“Signature”?是不是图画错了?【修正】

2017年3月 8日 10:33

| #

| 引用

阿萨的

说:

那不是每个拥有CA公钥的人都可以拿到鲍勃的公钥,都可以对数据进行解密?

2017年3月15日 15:17

| #

| 引用

钟品安

说:

好用,真好!直的点赞。

2017年3月16日 18:13

| #

| 引用

mokuten

说:

引用阿萨的的发言:

那不是每个拥有CA公钥的人都可以拿到鲍勃的公钥,都可以对数据进行解密?

都可以拿到鲍勃的公钥没错,但此公钥只是用来加密数据后发给鲍勃而已。每个人都可以发信息给鲍勃,这没问题。

2017年3月31日 23:57

| #

| 引用

胡成超

说:

看了这么多评论,一个最核心的问题还是没有解决。。。。。。。。

就是 用私钥对明文签名后,用不是对应的公钥去解密,到底是无法解密,还是会得到一段字符??????

2017年5月15日 19:50

| #

| 引用

张灿

说:

@御宅暴君:

goool其实有点钻牛角尖了,加密和解密的RSA实现应该是一样的。

2017年5月23日 13:13

| #

| 引用

王楠

说:

写得太好了,受教了...

2017年7月 5日 14:31

| #

| 引用

ly

说:

还有根证书没有讲到。

2017年7月20日 18:55

| #

| 引用

feibenren

说:

鲍勃分发的给三个人的公钥是一模一样的吗?

2017年7月29日 22:34

| #

| 引用

561

说:

简单,清晰,明了,这篇文章简直不能再棒!

2017年8月14日 16:05

| #

| 引用

WCD

说:

引用Xtrats的发言:

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

-----------

有鲍勃的公钥就可以冒充鲍勃?

道格自己不也有鲍勃的公钥么?“每人一把”。

可能是道格自己也有一套公钥-私钥,然后把自己的公钥和苏珊手里的鲍勃的公钥对换,然后再通过自己的私钥 和现在苏珊手里自己的公钥通信。所以才有了后来找认证中心对鲍勃的公钥认证,已确定自己手里的公钥是鲍勃的公钥

2017年8月14日 18:07

| #

| 引用

zhangliang

说:

通俗易懂,赞一个

2017年8月22日 11:19

| #

| 引用

hayabusa_l

说:

@Yonny:

确实是看加密和完整性的时候糊涂了,感谢看到你的评论,,,,,现在明白了

2017年8月30日 11:42

| #

| 引用

好的

说:

终于明白了,谢谢大神!大道至简!

2017年9月 6日 15:32

| #

| 引用

TommyWhite

说:

想问第5步,在Bob写完信息后应该会先用私钥加密信息再Hash运算得到摘要的吧???

2017年9月26日 13:56

| #

| 引用

TommyWhite

说:

引用TommyWhite的发言:

想问第5步,在Bob写完信息后应该会先用私钥加密信息再Hash运算得到摘要的吧???

还有第9步骤应该Susan首先要拿公钥对信件本身解密再使用Hash运算才将得到的结果与上一步得要的再要进行对比以确认这封信件是否有被修改?

2017年9月26日 13:59

| #

| 引用

CA

说:

那CA中心想耍流氓,用自己的(ca私钥——ca公钥)ca公钥通过侵入到苏珊的电脑 换掉道格的公钥(但他说还是道格的公钥,其实已经是ca公钥),然后冒充道格 去和苏珊通信,苏珊岂不把信息都发给了CA?

2017年10月19日 17:40

| #

| 引用

CA

说:

引用CA的发言:

那CA中心想耍流氓,用自己的(ca私钥——ca公钥)ca公钥通过侵入到苏珊的电脑 换掉道格的公钥(但他说还是道格的公钥,其实已经是ca公钥),然后冒充道格 去和苏珊通信,苏珊岂不把信息都发给了CA?

不是道格是鲍勃,名字记错了

2017年10月20日 09:39

| #

| 引用

张奇

说:

苏珊是需要公钥加密给鲍勃法信息的,鲍勃用私钥进行解密,但是鲍勃回信的时候采用数字签名的形式验证信是自己发的,但是鲍勃回信的内容需要加密么?这里只讲了对摘要进行加密,苏珊也是对摘要解密,可是信件本身需不需要加密解密并没有解释

2017年10月26日 11:30

| #

| 引用

峰中劲草

说:

引用张奇的发言:

苏珊是需要公钥加密给鲍勃法信息的,鲍勃用私钥进行解密,但是鲍勃回信的时候采用数字签名的形式验证信是自己发的,但是鲍勃回信的内容需要加密么?这里只讲了对摘要进行加密,苏珊也是对摘要解密,可是信件本身需不需要加密解密并没有解释

至于信件本身加密可以使用对称加密方法,信息发送之前,使用某种密钥交换算法共享密钥。(防止信件内容泄露)

2017年11月20日 14:30

| #

| 引用

lllqqq

说:

太棒了,清晰很多

2017年11月20日 14:50

| #

| 引用

xiami

说:

对goool的看法保留意见,用在线rsa加密工具做了测试,用私钥加密md5摘要,目前只有对应的公钥能解出原文,用其它公钥解密后并没有任何输出结果,可能是解密过程中遇到报错或其它不确定因素。

好奇的宝宝也可以去亲自试试,网址:http://web.chacuo.net/netrsakeypair

2017年11月21日 15:20

| #

| 引用

wenfei123505

说:

引用Michael.Z的发言:

还是有些模糊,需要慢慢理解。

有一个问题,公钥和私钥的算法是一样的吗?为什么私钥加密可以用公钥解密?

私钥和公钥是一对加密密钥和解密密钥 吧

2017年12月 8日 11:38

| #

| 引用

FutaoSmile丶

说:

证书中心的给出的公钥不是也可以被道格修改成自己在证书中心拿到的公钥吗

2017年12月12日 13:42

| #

| 引用

mimi

说:

引用Xtrats的发言:

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

-----------

有鲍勃的公钥就可以冒充鲍勃?

道格自己不也有鲍勃的公钥么?“每人一把”。

道格把鲍勃的公钥换成他自己的公钥了,是道格自己生成的公钥,而不是鲍勃给他的。

2017年12月22日 10:30

| #

| 引用

曲双如

说:

看完文章我觉得数字签名感觉没什么用啊。

修改信件内容的同时可以新生成数字签名呀,只要对的上就没问题。

2017年12月23日 14:21

| #

| 引用

生吃汉堡包

说:

我来说说第八步:

鲍勃给苏珊回信,如何回?总不能就直接在信道里传吧?他肯定要用苏珊的公钥加密,然后苏珊用她的私钥解密,得到明文本及数字签名。此时她只是收到明文本,然后她根据发来人信息判定是谁发来的,然后用相对应的公钥来验证,是否属实。

公钥解密数字签名,肯定会得到东西,Hash值只是摘要的一部分(这个博主好像没说),hash值是用来验证完整性的,摘要中还有认知部分(可辩别的部分)。如果相应公钥解密可认知,那么就可确定是谁发出来的。如果是伪造,解密出来几乎肯定(万恶的量子物理)是奇奇怪怪的东西。

PS:前提你的设备是安全的,不然说个毛。

2017年12月30日 19:23

| #

| 引用

盛世游侠

说:

@goool:

私钥公钥是成对使用的,一个私钥只对应一个公钥【已经由评论里的xiami验证】,所以您说使用任何人的公钥都可以解密鲍勃使用私钥加密的数字签名,这是不可能的;

2018年1月 3日 00:30

| #

| 引用

盛世游侠

说:

@徐朋:

不对,照你这个搞法,如果你想发私信给别人,你还得要求别人先有个非对称密钥对?想想现实中的情况,你这个假设就不成立。

典型的例如访问https://www.baidu.com/

你使用https协议访问百度的时候,百度没有要求你给它公钥,它用你的公钥加密网页发给你吧?

2018年1月 3日 00:47

| #

| 引用

lyn

说:

你没有发送方的私钥,你用自己的私钥重新签过的名,是无法通过发送方的公钥来验证的

引用曲双如的发言:

看完文章我觉得数字签名感觉没什么用啊。

修改信件内容的同时可以新生成数字签名呀,只要对的上就没问题。

2018年1月 7日 11:58

| #

| 引用

xiaoxionga

说:

引用Xtrats的发言:

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

-----------

有鲍勃的公钥就可以冒充鲍勃?

道格自己不也有鲍勃的公钥么?“每人一把”。

我认为是这样理解的:道格将自己的公钥换走了鲍勃的公钥后,苏珊写给鲍勃的信,其实是写给了道格.反过来,道格写给苏珊的信,苏珊也可以拿这个公钥解密,只不是她不知道这个信已经不是鲍勃写的了.

2018年1月 9日 14:12

| #

| 引用

Holla

说:

某个网站的CA公钥和它的证书我可以拿到,同时也就解密出这个网站的公钥了。如果这个网站正在给一个用户发一封邮件,我截取到这个邮件,再通过网站公钥解密不就得到传输的内容了??虽然客户端给服务器发送的没法解密。这怎么解释??

2018年1月10日 16:32

| #

| 引用

Holla

说:

引用曲双如的发言:

看完文章我觉得数字签名感觉没什么用啊。

修改信件内容的同时可以新生成数字签名呀,只要对的上就没问题。

修改完邮件生成签名时的服务器私钥你是没有的,只要不是一对秘钥,即便拿到修改后的信件内容也是没法用数字证书解密后的服务器公钥去解密信件内容的。

2018年1月10日 16:45

| #

| 引用

杨亚达

说:

“服务器用自己的私钥加密网页”

这里似乎不对,难道不是服务器用客户机的公匙加密网页,客户机再用私匙解密?

准确的说,是

①服务器发送证书;

②客户机解密并验证证书得到服务器公匙;

③客户机生成对称密匙,用服务器公匙加密,发送给服务器;

④服务器用私匙解密,得到对称密匙;

⑤(还有一些具体的过程省略...)

⑥服务器用对称密匙加密网页发送给客户机;

⑦客户机用对称密匙解密网页。

2018年1月12日 09:53

| #

| 引用

姚伟

说:

有一个问题,鲍勃给苏珊发信时,苏珊怎么证明收到的信中的数字证书是鲍勃的?

如果道格有能力去把苏珊电脑中保存的鲍勃的公钥替换成自己的公钥,

那么他也有能力把苏珊电脑种保存的鲍勃的数字证书替换成自己的数字证书。

然后道格用自己的私钥生成签名,在信件中附加自己的数字证书,发信给苏珊,苏珊还是会以为是鲍勃在给她发信。

2018年1月14日 00:26

| #

| 引用

张春星

说:

鲍勃在信件内容后面附加上数字签名后发给苏珊。

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

-------------------------------------

问题:这个地方不懂,信件内容不加密了?明文传输?

2018年1月18日 10:41

| #

| 引用

Lion

说:

前四步我是明白了,公钥加密,只能用私钥解密;

第五步说的:鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)。

这里使用数字签名的意思是不是:内容没有加密,只是和内容一起发送了一个数字签名。苏珊通过公钥也可以生成一个鲍勃用私钥生成的一样的数字签名。这样就可以确认是不是鲍勃发出的信件了是吗?

2018年1月19日 14:54

| #

| 引用

Lion

说:

CA是不是就相当于一个公钥托管中心,这样苏珊电脑里存的鲍勃公钥就不会被人修改了。然后从CA请求下来公钥,从而解密数字证书得到鲍勃公钥,再用这个公钥进行解密,但是这个过程鲍勃发的信的内容还是没有加密的,只是确保数字签名解密正确是吗?

2018年1月19日 15:04

| #

| 引用

开发小菜鸟

说:

引用Lion的发言:

CA是不是就相当于一个公钥托管中心,这样苏珊电脑里存的鲍勃公钥就不会被人修改了。然后从CA请求下来公钥,从而解密数字证书得到鲍勃公钥,再用这个公钥进行解密,但是这个过程鲍勃发的信的内容还是没有加密的,只是确保数字签名解密正确是吗?

CA就是几个权威机构,是用来验证Bob的公钥就是Bob的,然后拿数字证书中解密出来的Bob公钥来解密Bob的数字签名验证信件的完整性,如果完整就可以解密信件,但是HTTPS应该楼主说的这些是握手过程,如果成功了着两个点的通信往来就用session Key来进行对称加解密,开销更小。

2018年1月21日 01:27

| #

| 引用

老路人甲

说:

@杨亚达: 正解,这里确实有问题.

2018年1月22日 13:51

| #

| 引用

uu

说:

感觉说的不明白啊

2018年1月22日 22:02

| #

| 引用

kingfire

说:

引用盛世游侠的发言:

@goool:

私钥公钥是成对使用的,一个私钥只对应一个公钥【已经由评论里的xiami验证】,所以您说使用任何人的公钥都可以解密鲍勃使用私钥加密的数字签名,这是不可能的;

为什么不可能?

用A的公钥去解密用B的私钥加密的密文的话,就是得到乱码而已呗。

只有一个私钥只对应一个公钥才能保证业务正确呗。

2018年1月27日 00:18

| #

| 引用

Chris投票好人

说:

感谢,也是目前为止我对数字签名理解的最清楚的一次

2018年1月27日 22:17

| #

| 引用

慢速快门_

说:

谢谢分享!不过我有个疑问:“用鲍勃的公钥解密 signature 得到 digest,从而证明信息是来自于鲍勃”这里还没有对比自己 hash 过得到的 digest,怎么知道是来自于鲍勃呢?我理解是解密任何一段 signature 都会得到所谓的 "digest",在对比之前是无法验证对方身份吧?

2018年2月14日 14:55

| #

| 引用

zhouzixi

说:

前面数字签名和数字证书的解释很清晰,但后面的使用过程貌似不是很正确

比如第17条,”受信认的根证书颁发机构“应该就是指CA吧,如果得到证书里的颁发机构写的不是列表里的,才是不受信任吧,而不是check要通信的server的公钥是不是在列表里

双方加密通信实际使用的,应该是用这个公私钥协商出来的对称密钥,这个过程怎么就没有了,客户端上来就给B发加密请求这里解释的比较模糊,实际还在握手阶段吧

如果如文中所述使用公私钥作为加密通信,只能实现单向加密,无法交换加密信息

2018年2月22日 16:33

| #

| 引用

昼伏君

说:

引用Yonny的发言:

如果你的身份证校验仪(CA)已经是假的了,那就啥都别说了,重装系统吧。

对哦!CA的作用是校验,即保证鲍勃的公钥的确是鲍勃的,这样杜绝了道格通过伪造鲍勃公钥,欺骗苏珊的可能。道格还想继续欺骗,就得连证书也伪造了,即此时“校验仪”也是假的。

2018年2月25日 07:54

| #

| 引用

兆一弟弟

说:

引用yehot的发言:

根本就没有帕蒂什么事啊,这就尴尬了

哈哈哈 对呀 我也发现了

2018年2月27日 11:01

| #

| 引用

赵文明

说:

@QuinnChen:

同意你的理解。

1、信息安全传输(A->B,A使用B的公钥加密,B使用B的私钥解密);

2、数字签名(A->B,A使用A的私钥加密,B使用A的公钥解密)。

2018年3月 1日 13:54

| #

| 引用

张健

说:

请问:苏三给鲍勃写信用的是公钥,鲍勃如何确认信就是苏三写的,既然3个人有公钥,苏三可以冒充其他任何一个人吧?不对称加密是:只要用我的公钥加密的文件,只有我自己的私钥能解。既然这么多人用我的公钥发文件给我,怎么核实发件人的真实性呢?

2018年3月 2日 11:14

| #

| 引用

hoho

说:

我不明白服务端不加数字签名为什么就会被人冒冲的可能,没有私钥怎样冒充或撰改得了呢

2018年3月18日 23:04

| #

| 引用

JackLin

说:

引用zhanlang的发言:

如果道格也去认证了自己的证书,并且用自己的公钥换了bob的公钥,每次通信的时候发自己的证书过去,结果就是一切验证都没有问题,但是苏珊却以为自己在跟bob通信,实际确实跟道格通信, 我的意思是如何辨别证书所有者跟你要通信的目标是同一个人呢?

因为证书上面又bob或者doge的信息,如果Susan认为bob的证书是doge的,那susan就没救了。就好像A拿了自己身份证给你看,你还把他当作是B。

2018年3月20日 01:31

| #

| 引用

JackLin

说:

同意goool的观点,原理应该是那样的。可能实现上面会又一些差别,可能用其他人的公钥来解用bob私钥加密的信息会无返回值甚至出错,但是这已经无关要紧。

2018年3月20日 01:46

| #

| 引用

得之吾幸

说:

请问 第9张图 在发送同样一个哈希算法后明文 对比,那如果这个被截获了,不就看到内容了么???

2018年3月21日 15:34

| #

| 引用

JackLin

说:

引用得之吾幸的发言:

请问 第9张图 在发送同样一个哈希算法后明文 对比,那如果这个被截获了,不就看到内容了么???

bob给susan发送的消息是用susan的公钥加密的,只有susan用她的私钥才能解开消息,然后用hash计算出摘要。

2018年4月16日 14:21

| #

| 引用

chen.amy2017

说:

引用QuinnChen的发言:

抱歉,我个人理解有误,公钥私钥其实是可以相互加解密的。

对于数据加密时,公钥加密,私钥解密

对于数据认证时,私钥签名,公钥验证(这时就是私钥加密,公钥解密)

这么理解就简单了:

既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密;同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证。

2018年4月20日 11:33

| #

| 引用

diletrich

说:

1.鲍勃->苏珊的消息可能不安全,只要第三方偷偷换调苏珊的公钥,再用自己的私钥给苏珊发消息,那么苏珊将只收到假消息,而真鲍勃永远无法给她传递消息。

2.既然苏珊本地的公钥会不安全,那就再来一层,加上CA颁发的证书包裹着这个公钥,每次交流前再把公钥给你,但第三方就不会再假扮一个CA再弄个假证书里面放着假公钥?

3.关键就在这里,第三方这次真做不了假了,因为有 Online Certificate Status Protocol和 HTTP Public Key Pinnin这两个东西存在,浏览器会去检查CA的证书是否已被吊销,完毕。

相关链接: https://www.quora.com/How-does-a-web-browser-know-whether-a-certificate-is-authorized-and-safe?utm_medium=organic&utm_source=google_rich_qa&utm_campaign=google_rich_qa

2018年4月23日 17:29

| #

| 引用

111

说:

这个网页存在很大的漏洞,十分钟后我将攻破这个网页,植入病毒,做好准备。

2018年5月 4日 11:02

| #

| 引用

本分

说:

浏览器对证书及时的更新,即发给权威机构CA,CA用自己的私钥发现解不开假的证书,或者解得的是乱码,则反馈给浏览器,浏览器再警告给用户,证书被人通过隐蔽的方式偷换掉了,此证书是假的,请删除!

至此即可完成更新,当然如果你所坏人还会继续偷换证书,那我也没话说。

2018年5月 8日 20:25

| #

| 引用

xiao星

说:

感觉软件就是个循环,万一证书中心的私钥也被人篡改了咋办。。。。。是不是就是得有个机构去对这个证书中心去监督了。。。但是不就是循环了?或者去中心化?当下流行的区块链技术是不是可以解决这个问题?

2018年5月29日 16:35

| #

| 引用

伯格

说:

冒充鲍勃公钥是指http吗?ca是指https?

2018年6月 1日 15:15

| #

| 引用

QuietHeart

说:

直观的描述:

#+BEGIN_EXAMPLE

1. a发送信件给b。

b:这信件是不是a发的?

2. a告诉b指纹(公钥),再写信并且每个字都按下指纹(用私钥加密信件)发给b。

b:每个地方都验证指纹(加密解密),得到内容--太慢了(非对称加密效率低下)。

3. a告诉b指纹,直接写信,并且在整个信上按下一个大大的指纹(签名)发给b。

b:嗯,是a的指纹(由签名获取到摘要与自己计算的匹配),不错挺快--可是告诉我指纹的那人真的是a吗(第三方劫持篡改消息)?

4. a去大家都信任的国家机构注册(认证机构私钥加密)了自己的指纹,并且在信上按下大大的指纹(签名)后,连同身份证(证书)一起发给b。

b:先检查身份证,对,这个是国家机构发布的;再查看身份证内容(解密证书得到公钥和签名),恩,对信上按的是a的指纹(由签名获取到匹配摘要);恩,对,这封信是a发的(证书上其它信息描述具有这个公钥的人是a)。好了,这回我相信了(将信任基础建立在绝对安全的常识上,而非个人)。

#+END_EXAMPLE

2018年6月 1日 15:49

| #

| 引用

zijian

说:

@diletrich:

感谢,很有意义的答案,大多数人加密和认证弄混了,Bob只想证明内容是自己发出的,而加密过程由client对随机AES-Key用Server的Public Key加密后,Server端解出AES-Key来完成

2018年6月10日 16:34

| #

| 引用

mmz

说:

引用xiao星的发言:

感觉软件就是个循环,万一证书中心的私钥也被人篡改了咋办。。。。。是不是就是得有个机构去对这个证书中心去监督了。。。但是不就是循环了?或者去中心化?当下流行的区块链技术是不是可以解决这个问题?

2018年7月 5日 20:51

| #

| 引用

zhangyx

说:

对18步骤有一些疑问,因为SSL协议在握手阶段需要客户端和服务端协商出一个对话密钥用于后面的通讯,才算是握手成功,生成对话密钥的需要证书当中的公钥。如果证书不可信,把证书添加到可信列表中,那么浏览器是怎么怎么从证书当中获取公钥的,因为浏览器没有该证书的CA的公钥,按道理浏览器应该和服务端是连接不成功的,可现实是浏览器能正常和服务端通讯。

2018年7月26日 09:53

| #

| 引用

Jerry

说:

@Jason:

公钥能解私钥,私钥也能解公钥,所以用私钥直接加密原文是危险操作,因为只要有对方的公钥就能直接破解。之所以多了一层hash加密是因为hash一般是不可逆的,所以无法由摘要还原成原文

2018年8月12日 17:14

| #

| 引用

llj

说:

厉害!很容易懂

2018年8月15日 14:36

| #

| 引用

善用佳软

说:

你应该翻译成 宋江/李逵/李鬼…… :-)

2018年9月13日 16:56

| #

| 引用

Jack

说:

能用公钥解密就能证明对方身份

这里能详细说说公私钥加密解密原理吗,具体什么是"能解密",在不知道原文是否正确(是否被篡改)的情况下,怎么知道有没有成功解密。

2018年10月 1日 00:28

| #

| 引用

arong

说:

我们平时忽略证书验证也可以获取一个网站的内容,证明信的内容没有被加密,签名只是验证信的来源。

2018年10月30日 10:22

| #

| 引用

马克思

说:

6 -> 7 的过程鲍勃只是用自己的私钥加密 摘要 生成 数字签名 然后发送给苏珊

这个时候信件是透明的,别人有鲍勃的公钥也可以解开信件。

我觉得是不是应该将生成的 明文+数字签名 用苏珊的公钥加密在发送给苏珊,保证只有苏珊的私钥可以解开信件。

然后在验证其是否被篡改。

2018年10月30日 19:06

| #

| 引用

findmoon

说:

整个过程,如果客户端使用信任了不受信任的证书机构,则将导致所有的安全措施和加密行为没有任何效用

2018年11月13日 09:21

| #

| 引用

litbear

说:

第8步博主理解错了,应该是Bob把数字签名和原文一起使用Pat的公钥进行加密,Pat得到信息后使用Pat的私钥进行解密,得到原文和签名两部分,然后再对原文应用同样的hash函数得到摘要,首先确定原文完整性,其次使用Bob的公钥对摘要进行加密,然后与随原文来的数字签名进行比较,如果一致,则确定了保密性。

2018年11月21日 15:52

| #

| 引用

litbear

说:

引用litbear的发言:

第8步博主理解错了,应该是Bob把数字签名和原文一起使用Pat的公钥进行加密,Pat得到信息后使用Pat的私钥进行解密,得到原文和签名两部分,然后再对原文应用同样的hash函数得到摘要,首先确定原文完整性,其次使用Bob的公钥对摘要进行加密,然后与随原文来的数字签名进行比较,如果一致,则确定了保密性。

很抱歉,是我理解有误,发送者应使用私钥签名,同时接收者在得到发送者的签名后应用发送者的公钥进行验证,以保证信息是该公钥对应的发送者发送来的。

“公钥与私钥都能用来加密与解密,使用私钥加密往往与保证签名者真实性有关”

2018年11月21日 18:11

| #

| 引用

pingia

说:

我感觉各位还不如看英文文档来的靠谱。英文看不明白,自己用谷歌翻译好了。楼主中间可能漏掉一些没有翻译,导致有些地方模糊。

最后一段的谷歌翻译如下:

现在Bob的同事可以检查Bob的可信证书,以确保他的公钥真正属于他。事实上,Bob公司的任何人都不会接受Susan生成的证书不存在的签名。如果私钥被泄露或不再需要,这使Susan有权撤销签名。还有更广泛接受的证书颁发机构认证苏珊。

假设Bob向Pat发送签名文档。为了验证文档上的签名,Pat的软件首先使用Susan(证书颁发机构)的公钥来检查Bob证书上的签名。证书的成功解密证明了Susan创建了它。证书解密后,Pat的软件可以检查Bob是否与证书颁发机构保持良好的信誉,并且所有关于Bob身份的证书信息都没有被更改。

然后,Pat的软件从证书中获取Bob的公钥,并使用它来检查Bob的签名。如果Bob的公钥成功解密签名,那么Pat确保签名是使用Bob的私钥创建的,因为Susan已经认证了匹配的公钥。当然,如果签名有效,那么我们就知道Doug没有尝试更改签名内容。

2018年12月14日 17:05

| #

| 引用

您的大名

说:

无意中看到这个 感觉没什么问题 但看评论的时候发现了居然有这么多 所以也说一下

1 有人说第8 9 步有问题 不知道是怎么理解的 首先鲍勃回信的时候对信进行hash()然后在用私钥加密 也就是签名 只要苏珊使用公钥解密签名了就说明确实来自鲍勃 然后自己哈希后对比解密内容无误后就说明中途没有被修改 这里没有问题 当有可能是被别人看过的

所以1-10没有任何问题

问题就在于道格中途如果用自己的公钥替换了鲍勃的公钥 确认就有问题了 因为道格和苏珊有相同的鲍勃的公钥

所以问题应该从确保苏珊拿到的公钥就是不是鲍勃的公钥开始 也就是鲍勃发送给苏珊的从ca获取的证书

2 有人说可以用同样(替换苏珊公钥的方式)的方式替换证书中的鲍勃的公钥 确实可以替换 因为道格也可以拿到ca的公钥 然后查看证书内容 但是你只能查看 不能修改 因为证书是ca的私钥加密的 你自己修改然后用自己的私钥加密后 苏珊用ca的公钥是无法解密的 所以道格只有在修改了证书中鲍勃的公钥的同时 再把苏珊手中的ca的公钥也给改了 然后苏珊获取公钥的方式是浏览器中的证书列表和直接重新请求(比如根据证书中信息去请求)同时浏览器会

1>如果证书记载的网址和你浏览的不一样 浏览器会警告

2>如果证书颁发机构不是信任的也会警告

所以道格想修改ca公钥

1>让苏珊使用拥有假的证书列表(假的ca公钥)的浏览器 或者 通过其他方式修改掉浏览器列表中的ca证书公钥 但这属于木马病毒一类的 没办法解决

2>自己去ca获取一个证书 然后冒充是鲍勃的发给苏珊 这样苏珊确实拿到的是道格的公钥 然后认为是鲍勃的(也有人这么说)但证书对应的网址和当前访问的肯定不一样 浏览肯定会警告 所以除非道格自己就是一个浏览器信任ca结构 再没有别的办法去修改鲍勃的公钥

https大致流程

1 客户端 sayHello

2 服务器返回证书 请求ca

3-1 客户端验证证书内容有效性(过期时间 域名是否相同等)

3-2 验证证书的有效性 (是否被串改)通过本地根证书的CA公钥解密数字摘要 看是否匹配

3-3 如果数字签名验证通过 就可以使用服务器证书里面提供的公钥进行下一步通信

同时没有使用ca时 道格修改了苏珊保存鲍勃的公钥 完蛋

使用ca后 道格修改了鲍勃返回给苏珊的证书中的鲍勃的公钥 同时 修改了苏珊使用的比如浏览中内置的ca公钥后 也是完蛋

2018年12月20日 19:37

| #

| 引用

杨洋

说:

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

道格偷了鲍勃的数字证书怎么办?

2018年12月27日 15:34

| #

| 引用

LXX

说:

有个疑问?使用数字签名的意义是什么?

为什么不直接使用私钥加密数据然后返给别人?

为什么要使用私钥加密摘要发送给别人?

别人解密了摘要就判断是本人了,那解密了使用私钥加密的数据不也能判断是本人吗?

还有防篡改,

如果我使用私钥加密数据然后返回,别人没拿到私钥怎么篡改?如果能篡改,我觉得数字摘要那个签名也能篡改。

2019年2月14日 18:55

| #

| 引用

LXX

说:

有个疑问?使用数字签名的意义是什么?

为什么不直接使用私钥加密数据然后返给别人?

为什么要使用私钥加密摘要发送给别人?

别人解密了摘要就判断是本人了,那解密了使用私钥加密的数据不也能判断是本人吗?

还有防篡改,

如果我使用私钥加密数据然后返回,别人没拿到私钥怎么篡改?如果能篡改,我觉得数字摘要那个签名也能篡改。

2019年2月15日 10:08

| #

| 引用

来了来了

说:

引用杨洋的发言:

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

道格偷了鲍勃的数字证书怎么办?

不怕的,通过数字证书获得的是真实的公钥,真实的公钥只能解密真实的数字签名,别人无法获得私钥,只能生成假的数字签名

2019年3月 5日 17:12

| #

| 引用

xiaoheiyohehe

说:

引用LXX的发言:

有个疑问?使用数字签名的意义是什么?

为什么不直接使用私钥加密数据然后返给别人?

为什么要使用私钥加密摘要发送给别人?

别人解密了摘要就判断是本人了,那解密了使用私钥加密的数据不也能判断是本人吗?

还有防篡改,

如果我使用私钥加密数据然后返回,别人没拿到私钥怎么篡改?如果能篡改,我觉得数字摘要那个签名也能篡改。

* 数字签名中的信息摘要是用来证明你看到的确实是我想发给你看的. (没有人为篡改或传输过程中造成的位信息错误, 假如有人故意在加密文本上给你篡改数据, 你解密后是一堆乱码, 那你又怎么知道对方是不是一开始就打算发一堆乱码给你).

* 数字签名中的公钥私钥是为了验证你的身份.

* 关系总结: 数字签名=公钥私钥加密算法+信息摘要验证算法, 信息摘要--(私钥加密)--->数字签名. 数字签名验证正确就可以判断, 这个消息确实是我写的, 并且文本正确; 如果验证错误, 要么是拿错了钥匙, 要么是文本内容出错.

2019年3月19日 11:24

| #

| 引用

Veeupup

说:

那阮大大为什么自己不使用https呢?(坏笑)

2019年3月29日 15:43

| #

| 引用

alibaba

说:

文章关于 HTTPS的解释是错误的:

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

2019年4月25日 11:49

| #

| 引用

alibaba

说:

文章关于 HTTPS的解释是错误的:

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

2019年4月25日 12:22

| #

| 引用

xwine

说:

@LXX:

数字签名是为了保证数据完整性。通过它可以判断数据是否被篡改

私钥加密完的数据所有知道公钥的都可以解密,这样不安全。

私钥加密的作用是为了确认身份,用对应的公钥解密概要,则证明概要来自谁,起到签名的作用

解密摘要和你说的==‘解密了使用私钥加密的数据’ 这个数据一般就是摘要

使用私钥加密的数据是没法被篡改的,但是可以被其他所有人用公钥解密

2019年5月31日 09:44

| #

| 引用

zm

说:

苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。这个CA的公钥苏珊是从哪里获得的呢,是在数字证书里吗

2019年7月 3日 18:03

| #

| 引用

苏珊

说:

觉得第8步没有问题的, 考虑一下这个场景:

假如阿猫拦截了通讯过程, 将信件内容修改之后也Hash了摘要并用阿猫的私钥签名, 然后发给苏珊.

此时苏珊用鲍勃的公钥解密, 但是也得到一串已解密字符串即便是错误的,

如何证明这串字符串就是真正的解密文本呢?

还是非对称加解密算法本身提供了校验机制?如果是就可以证明发送者是鲍勃, 否则还需要第9步的帮助才能证明是不是鲍勃.

2019年7月 5日 10:55

| #

| 引用

陈南

说:

引用Xtrats的发言:

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

-----------

有鲍勃的公钥就可以冒充鲍勃?

道格自己不也有鲍勃的公钥么?“每人一把”。

我觉得这个意思是说 道格到苏珊得电脑上把保存得鲍勃得公钥换成了自己得公钥吧。 既用自己得公钥伪装成鲍勃得公钥

2019年8月31日 05:05

| #

| 引用

Slayer

说:

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

这里的CA的公钥应该只是来解密“签名值”,然后计算数字证书的hash值比对,鲍勃的公钥和其他信息没有用CA的私钥解密吧。

2019年9月19日 16:12

| #

| 引用

wcc

说:

引用苏珊的发言:

觉得第8步没有问题的, 考虑一下这个场景:

假如阿猫拦截了通讯过程, 将信件内容修改之后也Hash了摘要并用阿猫的私钥签名, 然后发给苏珊.

此时苏珊用鲍勃的公钥解密, 但是也得到一串已解密字符串即便是错误的,

如何证明这串字符串就是真正的解密文本呢?

还是非对称加解密算法本身提供了校验机制?如果是就可以证明发送者是鲍勃, 否则还需要第9步的帮助才能证明是不是鲍勃.

公钥是鲍勃的,解阿猫的签名出来的摘要跟发送信息中的摘要对不上的。

2019年12月31日 10:21

| #

| 引用

deping chen

说:

引用zm的发言:

苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明"数字签名"是否真的是鲍勃签的。这个CA的公钥苏珊是从哪里获得的呢,是在数字证书里吗

CA的公钥假设是操作系统安装的时候自带的。

2020年1月13日 17:01

| #

| 引用

lxr

说:

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

请问为什么这里能确认写信者是鲍勃?

2020年1月16日 11:43

| #

| 引用

test

说:

引用lxr的发言:

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

请问为什么这里能确认写信者是鲍勃?

摘要是用鲍勃的私钥加密的,只有鲍勃的公钥才能解开。而鲍勃的私钥只有鲍勃才有。

2020年1月17日 17:29

| #

| 引用

路人甲

说:

请问在生成证书摘要是怎么确定用的是哪种hash算法??@阮大神

2020年1月19日 00:07

| #

| 引用

大厨海森堡

说:

@Yonny:

是的,其实沿用RSA的论文的说法比较合适,用公钥加密明文的过程才是通常意义的加密,用私钥进行“加密”实际上是签名,这样所有人都可以通过公钥进行签名验证。

2020年3月 4日 20:05

| #

| 引用

SmallMuscle

说:

你好,如果是自签名的证书,如何安全的给客户端公钥呢?!

2020年3月21日 12:59

| #

| 引用

说:

关于第八步,没看到结果。。

什么是所谓的解不开?

解得开和解得对不是一回事吧。

是不是很多人误当成了现实中的锁,以为错误的钥匙一下子就能被试出来。还是这里的加密算法真是这样的,除非正确的密钥,否则算出来肯定是异常数据。

2020年4月 8日 02:14

| #

| 引用

飘扬

说:

11年的文章,讲解的很清楚。比知乎、简书上面写一大堆的文章解释得清楚的多。

感觉谷歌搜出来的东西,无论是中文还是英文,内容都简洁明了、言简意赅。

而百度... ...

好吧,从11年到20年,一直都有源源不断的评论,这就是传说中网红的力量嘛,太强了。

2020年4月11日 21:29

| #

| 引用

964

说:

很棒,受益匪浅

2020年4月21日 23:26

| #

| 引用

2924196224

说:

阮一峰老师您好,关于数字证书的整个过程,之前一直感觉仍然有一个小小的安全隐患,但仔细想想又没有,下面是这个过程,不知道理解的对不对:

1、苏珊在与鲍勃监理通信时,道格"截获了"鲍勃发送给苏珊的包含证书的回复,并用自己的证书替换鲍勃的证书

2、苏珊获取到"替换了证书"的鲍勃回复,但是此时没有可信任机构的公钥,于是去获取公钥,此时道格有两种方式试图欺骗苏珊:

(1) 道格"伪装"成可信任机构。无法伪装,因为可信任机构是在证书写明并且可信任机构是共知的。

(2) 道格"截获"并"伪造"苏珊和可信任机构的整个获取公钥通信。自己替换的证书也是该机构的,无法通过替换公钥的方式伪装,只能自己代替"苏珊"与可信任机构通信,同时自己"伪装"成可信任机构与真实的"苏珊"通信,中间篡改信息,但是由于自己替换的证书是该机构的,篡改信息就无法验证证书。

(3) 最终只剩一种可能,苏珊"信任了"不可信任机构的情况下,才有可能导致安全问题。

不知道这个理解对不对

2020年5月14日 11:26

| #

| 引用

2924196224

说:

关于私钥加密生成数字签名的疑问

如文中介绍,私钥加密的签名可以用公钥解密吗?也就是公钥可以解密私钥,私钥也可以解密公钥,但是公钥加密只能用私钥解密,这样理解对吗?

2020年5月14日 11:48

| #

| 引用

雷小伊

说:

私钥解密相比公共密钥的安全性哪个更高啊;/

2020年6月 6日 11:10

| #

| 引用

沁宁

说:

这个写的确实很清晰

2020年6月 8日 17:02

| #

| 引用

养乐多

说:

@febird:

你在浏览器上登录过邮箱吗?你没发现在你未登录之前你是可以访问到网站的?那么这些不需要登录的地址其实就网站就给你返回了数字证书,然后你的浏览器就把它存放到列表中了,只有等你登录了之后某些需要做校验的地址才会使用你的数字证书。

2020年8月14日 10:18

| #

| 引用

xjz

说:

中间有些疑惑不太懂,望懂的人解答。我中间拦截把数字证书拿到,既然公钥是公开的说明我也可以解开这个数字证书,我发送的信息用自己的私钥加密得到摘要,把证书替换成自己的证书,证书中的公钥是我的公钥,消息是自己的私钥加密的,发送给对方,对方得到摘要事我私钥加密得,证书中是我得公钥。这不也做到了偷天换日吗?那个细节我理解错误了望解答

2020年9月 3日 12:09

| #

| 引用

sukidayo

说:

第8条,应该不能说是公钥解密了私钥,而应该是公钥可以验证私钥签名,从而保证内容的真实性和完整性.而且对原文进行摘要计算之后,是对摘要进行私钥签名.

2020年9月 4日 18:24

| #

| 引用

leeorz

说:

引用xjz的发言:

中间有些疑惑不太懂,望懂的人解答。我中间拦截把数字证书拿到,既然公钥是公开的说明我也可以解开这个数字证书,我发送的信息用自己的私钥加密得到摘要,把证书替换成自己的证书,证书中的公钥是我的公钥,消息是自己的私钥加密的,发送给对方,对方得到摘要事我私钥加密得,证书中是我得公钥。这不也做到了偷天换日吗?那个细节我理解错误了望解答

这里的关键点是:证书是CA用私钥签发的,只能用CA的公钥解开。

你篡改了证书,用自己的私钥签发证书,信息接收方用CA的公钥没办法解开。

除非你想办法让对方用你的公钥去解密证书。

这一步一般都是浏览器完成的。阮老师文中也说明了,浏览器会内置一份"受信任的根证书颁发机构"列表,从这份列表去判断证书的签发机构。显然你不是这份列表里面的机构,除非你攻破了浏览器。

2020年9月 4日 21:58

| #

| 引用

今晚吃啥

说:

1.理解第8,9两步的关键"用公钥可以解开私钥加密的信息,反之亦成立。"。

2.如果使用公钥解密后拿到的报文摘要有误,有两种情况,

·确实是bob的私钥加密的摘要,但是报文在传输图中遭到了篡改。

·摘要不是bob的私钥加密的,用公钥解密出来的是错误的摘要。

所以通过公钥解开数字签名能得到正确的摘要,就能证明这个报文是bob发送的。

2020年9月17日 17:44

| #

| 引用

liziyang

说:

第九步骤有个问题没说清楚:所有拥有公钥的人都可以窃取并还原回bob给苏珊的回信。

所以鲍勃需要和苏珊商议一个只有他们彼此知道的基于本次会话的对称密钥来对信息进行加密。

2020年9月28日 17:26

| #

| 引用

king4e

说:

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

-------------------------------

数字签名只能证明是鲍勃发出的,而无法加密给苏珊的信吗?

也就是说任何人都可以用鲍勃的公钥(每人一把)看给苏珊的信吗?

2020年9月28日 22:19

| #

| 引用

Champion Fu

说:

我的理解是:中间人攻击分为两种类型:拦截和伪装,也就是'偷'和'骗'。

如果没有证书公证机构(CA)的话,RSA只能解决'偷'的问题(其实感觉如果能偷鲍勃的公钥,为什么不把苏珊的私钥一起偷了????)。数字签名是为了防止被'骗'。于是私人间使用的公钥也要加密。唯一公开的其实就是CA的公钥。其实这也不怎么安全,道格使用'偷'的办法拦截到'回信',把'回信'上面的证书换成自己的,这样还是把苏珊给'骗'了

2020年12月 3日 18:55

| #

| 引用

jiang

说:

引用玉沭林沣的发言:

那么在下载到本地后,如何避免被替换的问题呢?感觉跟道格用自己的公钥替换鲍勃的公钥一样啊,假若苏珊每次也是重新下载鲍勃的公钥岂不是同样可以避免公钥被替换的问题,那么还要数字证书干什么?

这里其实是可以保证安全的,CA的公钥放在本地后如果被替换则无法成功解密CA发的证书,因为CA发的证书是使用了CA的私钥进行加密了的,只有CA的公钥可以解密这个证书。如果使用被替换的公钥试图来解密CA发的证书则在解密阶段就会报错,此时你就已经知道你本地存的CA公钥不对了。而“道格用自己的公钥替换鲍勃的公钥”这种情况与替换CA证书完全不同,道格用自己的公钥替换鲍勃的公钥后,他其实不是用鲍勃给他的那把属于鲍勃的公钥来替换的(如果做这个替换等于没做,这里作者没有说明容易误导人以为道格是用鲍勃发给他的那把属于鲍勃的公钥来替换,其实不是),而是他自己生成了一对属于自己的公私钥,用新的这个属于他的公钥替换了存在苏珊电脑上原本属于鲍勃的公钥。此后,道格就用他自己新生成的私钥加密信息发送给苏珊,而苏珊用被替换了的公钥来解密,这个完全是行得通的,只是苏珊以为这个消息是鲍勃发给她的,他其实是道格发来的,她被骗了。所以就必需要有CA存在,因为存在本地的CA公钥被替换很容易,但是CA的私钥一定是安全的。别人无法获得CA的私钥对假证书进行加密得到伪证书来发行。不通过CA私钥加密的假证书使用真实的CA公钥解密会报错,同理CA私钥加密的真实证书使用被替换的假公钥解密时也会报错,所以只要CA的私钥安全,那么证书就可信。

2020年12月16日 16:54

| #

| 引用

mlshenhua

说:

最关键 还是 CA公钥的安全性 来源自 本地浏览器。

2021年1月10日 17:06

| #

| 引用

kingofswing

说:

引用blue gene的发言:

道格用自己的私钥加密发给苏珊的信件,苏珊收到信件后用道格的公钥自然能正常解密该信件,但是苏珊以为她收到的是鲍勃的信件,并且认为是用鲍勃的公钥来解密的,自然认为发信的就是鲍勃,所以道格就达到了伪造鲍勃与苏珊通讯的目的。

这个才是正确的理解,也就是道格他自己私下里生成了一对RSA秘钥,把这对秘钥里的公钥偷偷地替换了 susan电脑里 原来bob的公钥。如果翻译的时候把这层意思说明了,看客就理解清楚了。

2021年1月31日 22:39

| #

| 引用

你好,李焕英

说:

既然dog能替换susan的bob公钥,也可以替换susan的ca公钥吧?

dog也能拿自己的公钥到ca生成证书,然后偷偷把susan的bob ca公钥替换成dog的ca公钥,然后dog写信签名+证书,然后susan使用被替换的ca公钥解密,也可以达到伪造bob与Susan通讯的目的?

谁来解答一下,谢谢

2021年3月17日 16:39

| #

| 引用

amy

说:

引用你好,李焕英的发言:

既然dog能替换susan的bob公钥,也可以替换susan的ca公钥吧?

dog也能拿自己的公钥到ca生成证书,然后偷偷把susan的bob ca公钥替换成dog的ca公钥,然后dog写信签名+证书,然后susan使用被替换的ca公钥解密,也可以达到伪造bob与Susan通讯的目的?

谁来解答一下,谢谢

1. “dog也能拿自己的公钥到ca生成证书” 首先CA颁发证书是一个非常严谨的过程,可以参考这个回答:https://www.zhihu.com/question/22260090/answer/648910720

2. “然后偷偷把susan的bob ca公钥替换成dog的ca公钥” 不存在“bob ca公钥”、“dog的ca公钥”一说。一方面,CA是一种专门的第三方机构,并且国际的根CA机构数目非常有限,bob dog这样的个体是不会有“ca公钥”的;另一方面,CA都是一些可靠的大机构,它们的公钥在自己网站上提供下载,所以无法伪造;并且CA的公钥网上可以取得,浏览器中也有预存。

3. 如果dog把susan电脑里存的CA公钥换掉了怎么办:可以在当前网页中搜索网友“Yonny”对相似问题的回答

以上是我的理解

2021年3月22日 22:02

| #

| 引用

维努斯

说:

我有一个疑问,第八步苏珊解密之后也只是拿到了摘要,第九步的时候 苏珊又是怎么一下子拿到信息的本身呢?是不是可以这样理解,鲍勃在发送信息的时候明文,密文都发给了苏珊呢?

2021年4月26日 16:21

| #

| 引用

弹钢琴的杜甫

说:

从头到尾也没说数字签名的作用啊,按我来看,数据只要通过秘钥加密就可以,如果能解密成功就说明是可靠的,为啥要签名。

2021年4月26日 17:27

| #

| 引用

fish

说:

引用弹钢琴的杜甫的发言:

从头到尾也没说数字签名的作用啊,按我来看,数据只要通过秘钥加密就可以,如果能解密成功就说明是可靠的,为啥要签名。

对不起,没有数字签名你上的可能是钓鱼网站。钓鱼网站也可以随便给你一个公钥。 数字签名保证的是你得到的这个公钥是可信的

2021年5月17日 19:14

| #

| 引用

Bol

说:

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

2021年6月20日 00:10

| #

| 引用

弹钢琴的杜甫

说:

引用fish的发言:

对不起,没有数字签名你上的可能是钓鱼网站。钓鱼网站也可以随便给你一个公钥。 数字签名保证的是你得到的这个公钥是可信的

有两点问题:

1:不使用https的时候,如果钓鱼网站能随便给一个公钥,那它也能伪造数字签名,这样签名也失去了意义

2:使用https的时候,公钥在数字证书里面,所以我认为只要证书能成功解析出来,那么这个网站是可信任的,此时再校验签名也没啥意义

2021年6月29日 16:49

| #

| 引用

hehe123450

说:

有一个很好的讲述,希望对大家有帮助:

中间人有可能把证书掉包吗?

假设有另一个网站B也拿到了CA机构认证的证书,它想劫持网站A的信息。于是它成为中间人拦截到了A传给浏览器的证书,然后替换成自己的证书,传给浏览器,之后浏览器就会错误地拿到B的证书里的公钥了,这确实会导致上文“中间人攻击”那里提到的漏洞?

其实这并不会发生,因为证书里包含了网站A的信息,包括域名,浏览器把证书里的域名与自己请求的域名比对一下就知道有没有被掉包了。

2021年7月14日 14:16

| #

| 引用

我是Bob

说:

引用goool的发言:

@mazhechao 原文的 5 6 7 8 9 是一个完整的签名场景,请在这个场景下重新考虑一遍。然后重新看一下 8 的表述:

实际上 Bob 的 “数字签名” 可以用任何人的公钥解密,得到一个 hash 值。如果不加上第 9 步(比对原文的 hash值)。这个第 8 步得不到任何有价值的信息。

我的数字签名是用我的私钥加密的,只有我的公钥能解密,如果你能解密,就说明你用的是我的公钥,就证明该信件一定是我发的,这就是签名的含义。

2021年8月28日 22:06

| #

| 引用

pengb

说:

想问一下,为什么bob的信不直接用私钥加密呢,为什么要生成摘要,这样不已经可以直接证明这封信是bob发出的,不需要生成签名去认证呢?

2021年9月 3日 10:22

| #

| 引用

接化发

说:

引用pengb的发言:

想问一下,为什么bob的信不直接用私钥加密呢,为什么要生成摘要,这样不已经可以直接证明这封信是bob发出的,不需要生成签名去认证呢?

数字签名有验证发信者身份和验证信是否被修改的作用。如果只用私钥加密,然后用公钥解密,只能验证信的来历,无法判断信是否被修改,需要对比两个摘要,当两个完全相同时,可以确定没有被修改。刚在知乎上看明白了https://zhuanlan.zhihu.com/p/29007210

2021年9月 8日 22:06

| #

| 引用

vincent

说:

看来争论比较大。我一直认为是这样:

用户连接过程也是用户权限认证过程,是采用非对称加密解密来认证,也确认接下来双方数据交换时的对称加密的方法A,双方都是用A加密,当然也能解密。数字签名应该是非对称加密认证过程发生的,你们说呢? 是非对称的,而且是握手时,后面就不用

2021年10月 3日 15:17

| #

| 引用

waley

说:

引用FutaoSmile丶的发言:

证书中心的给出的公钥不是也可以被道格修改成自己在证书中心拿到的公钥吗

CA机构你可以理解为派出所(有权威性),你去办理证书的时候 除了提供自己的公钥还要提供身份证原件。办理完成后,最终生成的证书里面包含:你的公钥+你的身份证号码。 这样一来,道格是不可能伪造bob的证书的:首先他拿不到bob的身份证,其次就算他拿到了bob的身份证,然后去自己的公钥去办理 也会失败。因为bob之前已经办理过了,不能重复再办理。 或者你说bob就直接用他自己的身份证去办理。但是这样得到的证书里面绑定的是bob的身份证号码。 我们的一切讨论的前提是苏珊是知道bob的身份证号码的。这样苏珊只要一看这个身份证号码就知道这个证书是不是bob的。

2022年4月20日 13:36

| #

| 引用

dd115942

说:

感谢作者的文章,每每有不清楚的内容,搜下关键字+阮一峰就能找到相关文章了。:)

2022年6月13日 14:32

| #

| 引用

山先生

说:

感谢博主和大家的评论,受益匪浅

2022年7月15日 11:15

| #

| 引用

LiuMeng

说:

CA 机构的公钥是全世界公开的,浏览器本身可以验证其真伪。

数字证书是服务器向 CA 发送自己的公钥和省份信息,让 CA 机构拿它的私钥对这些信息进行加密。

2022年8月17日 15:49

| #

| 引用

jc

说:

感谢博主和大家的评论,受益匪浅

有本《图解密码学》挺好的

2022年11月 8日 14:46

| #

| 引用

lwh

说:

原文是:

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

这样说得更合适:

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

2024年1月11日 07:45

| #

| 引用

Rhodi

说:

引用xiongbo027的发言:

既然道格可以替换鲍勃的公钥,为什么不能故技重施,伪造CA的公钥,然后用自己的私钥伪造成CA的数字证书,从而达到欺骗苏珊的目的呢?

CA并不能伪造。CA颁发机构就是系统开发商和其认证的次级颁发机构。微软苹果会在自己的浏览器/系统中保存自己的CA认证公钥,其他次级颁发机构的公钥也归根结底也是由上一级签名认证的,因此任何一个可信的CA证书都有一个认证链条,只要链条上任何一个出现问题,浏览器/系统就会提示错误。

比如华为从微软获取了CA颁发权,那么他的公钥就首先是被微软CA认证的。那么其他人找华为认证的证书,就会形成 微软-华为-自己 的证书链条。如果有人冒充华为公钥,那么这个冒充证书就无法通过微软CA认证,因为微软的公钥是保存在系统中的,是一定会被发现的。

这也是为什么不要使用盗版系统的原因。

2024年2月27日 11:42

| #

| 引用

Rhodi

说:

当然根证书可以手动添加,但是如果网页/软件要求你添加根证书,这个行为本身就很可疑,如果是组织内部,那这个根证书也是可以的,比如我们软件公司给企业内部部署WebApp,可以生成一个只用于内网的CA根证书,并且windows Server还提供批量添加根证书的功能,为的就是解决内网认证的问题。

如果是互联网上的服务,那么通过添加根证书来达成恶意目标,效率太低,而且本身这个行为就可疑。因此只有网银这种需要更严格的安全保证的网络服务,才会让你添加根证书来执行他们自己的安全方案。

2024年2月27日 11:47

| #

| 引用

Rhodi

说:

引用lwh的发言:

这样说得更合适:

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

其实你的表述也不准确。文中关于私钥加密的描述,其实是“签名”。签名保证的是“内容不被篡改”。而且原文的例子里,鲍勃的回信并不是加密的,而是明文传递的。只是说,即便明文传递,“签名”这个行为可以保证在传输过程中,信息不被篡改。

其实真实的传输是“加密和签名”结合。也就是鲍勃在签名摘要之后,将签名和信息一起用苏珊的公钥加密,在进行传输。这样整个信息包括签名都是密文。

2024年2月27日 11:51

| #

| 引用

Rhodi

说:

引用Lion的发言:

CA是不是就相当于一个公钥托管中心,这样苏珊电脑里存的鲍勃公钥就不会被人修改了。然后从CA请求下来公钥,从而解密数字证书得到鲍勃公钥,再用这个公钥进行解密,但是这个过程鲍勃发的信的内容还是没有加密的,只是确保数字签名解密正确是吗?

是的,原文的例子里,只是说明了签名的作用。签名可保证信息不被篡改。而加密则是保证信息不泄漏。

所以总结来说就是,公钥加密,私钥签名,加密不泄漏,签名不篡改。

2024年2月27日 11:55

| #

| 引用

Rhodi

说:

引用弹钢琴的杜甫的发言:

从头到尾也没说数字签名的作用啊,按我来看,数据只要通过秘钥加密就可以,如果能解密成功就说明是可靠的,为啥要签名。

签名的作用是信息不被篡改。原文中鲍勃甚至是明文传递了信息+签名。如果有人在送信过程中拆改信件内容,最后苏珊用公钥将签名解密,得到真实的摘要,在将收到的内容生成摘要,两个摘要对比就会发现内容已被篡改。

2024年2月27日 11:58

| #

| 引用

Rhodi

说:

引用lxr的发言:

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

请问为什么这里能确认写信者是鲍勃?

不是确定写信者是bob,而是确认信件内容不被篡改。

因为篡改者并不知道bob的私钥,因此它无法篡改签名。如果篡改者将签名去掉,那信件本身就不可信了。如果保留签名,那么苏珊会从签名中获得原始信息的摘要,进而与收到的信息摘要对比,就能得知信件的真伪。

2024年2月27日 12:00

| #

| 引用

我要发表看法

您的留言

(HTML标签部分可用)

您的大名:

«-必填

电子邮件:

«-必填,不公开

个人网址:

«-我信任你,不会填写广告链接

记住个人信息?

正在发表您的评论,请稍候

«- 点击按钮

Weibo |

Twitter |

GitHub

Email: [email protected]

什么是数字签名_数字签名简介_数字签名的优势以及应用场景-腾讯云开发者社区

字签名_数字签名简介_数字签名的优势以及应用场景-腾讯云开发者社区腾讯云开发者社区文档建议反馈控制台首页学习活动专区工具TVP最新优惠活动技术百科搜索技术百科搜索技术百科搜索关闭发布登录/注册首页学习活动专区工具TVP最新优惠活动返回腾讯云官网技术百科首页 >数字签名数字签名修改于 2023-07-24 17:37:321062概述数字签名是一种用于保证数字信息的完整性、真实性和不可抵赖性的技术。数字签名通常是由发送方使用私钥对消息进行加密,生成一个特定的签名值,并将签名值与消息一起发送给接收方。接收方可以使用发送方的公钥对签名值进行解密和验证,从而确定消息的真实性和完整性。数字签名的作用是什么? 数据完整性保护数字签名可以保证数据在传输过程中不被篡改,接收方可以通过验证数字签名来确定数据的完整性和真实性。 数据来源鉴别数字签名可以保证数据的来源不被伪造,接收方可以通过验证数字签名来确定数据的来源。 不可抵赖性数字签名可以防止发送方否认曾经发送过数据,因为数字签名是基于发送方的私钥进行加密的,只有发送方才能够生成正确的数字签名。 安全性数字签名可以保证数据传输过程中的安全性,因为只有发送方的私钥能够生成正确的数字签名,其他人无法篡改数据或伪造数字签名。 证书认证数字签名可以用于数字证书的认证,保证数字证书的真实性和有效性。数字签名的原理是什么?数字签名的原理基于公钥加密技术和哈希函数技术: 公钥加密技术公钥加密技术是一种基于不同的加密密钥和解密密钥的加密方式,公钥可以公开,而私钥只有发送方拥有。在数字签名中,发送方使用私钥对消息摘要进行加密,生成数字签名,接收方使用公钥对数字签名进行解密,从而确定消息的真实性和完整性。 哈希函数技术哈希函数是一种将任意长度的输入数据映射为固定长度输出数据的函数,它具有单向性和不可逆性的特点。在数字签名中,发送方使用哈希函数对消息进行摘要处理,生成消息摘要,接收方使用哈希函数对收到的消息进行摘要处理,从而确定消息的完整性和真实性。数字签名的流程是什么? 发送方使用哈希函数对消息进行摘要处理,生成消息摘要。 发送方使用私钥对消息摘要进行加密,生成数字签名。 发送方将消息和数字签名一起发送给接收方。 接收方使用发送方的公钥对数字签名进行解密,得到消息摘要。 接收方使用哈希函数对收到的消息进行摘要处理,得到消息摘要。 接收方比对解密得到的消息摘要和计算得到的消息摘要,如果一致,则证明消息的完整性和真实性得到了保证。数字签名的安全性如何保证? 私钥保护私钥是数字签名的关键,只有发送方拥有私钥才能够生成数字签名。因此,私钥需要进行严格的保护,防止被攻击者窃取或泄露。 公钥验证接收方必须要验证发送方的公钥的真实性,以确保数字签名的可信度。可以通过数字证书、公钥基础设施(PKI)等机制来验证公钥的真实性。 哈希函数安全哈希函数是数字签名的基础,安全的哈希函数可以有效地保护数字签名的安全性。为了保证哈希函数的安全性,需要选择安全性较高的哈希函数,如SHA-2、SHA-3等。 抵御攻击数字签名可能会受到多种攻击,如中间人攻击、重放攻击等。为了保证数字签名的安全性,需要采取相应的安全措施,如使用数字证书、使用时间戳等。 不可篡改性数字签名是一种不可篡改的技术,因此需要确保数字签名本身不会被篡改。可以使用数字证书、数字时间戳等机制来保证数字签名的不可篡改性。数字签名的算法有哪些? RSARSA是一种基于因数分解的公钥加密算法,也可以用于数字签名。RSA数字签名是一种常用的数字签名算法,它通过私钥对消息进行签名,通过公钥对签名进行验证。 DSADSA是一种基于离散对数问题的数字签名算法,它是美国国家标准局(NIST)推荐的数字签名算法之一。DSA数字签名是一种轻量级的数字签名算法,适用于一些资源受限的环境。 ECDSAECDSA是一种基于椭圆曲线加密的数字签名算法,它与DSA类似,但使用的是椭圆曲线加密算法。ECDSA数字签名算法具有高效性和安全性的特点,适用于移动设备等资源受限的环境。 EdDSAEdDSA是一种基于椭圆曲线加密的数字签名算法,它是ECDSA的改进版,具有更好的性能和安全性。EdDSA数字签名算法适用于移动设备等资源受限的环境。 GOSTGOST是一种由俄罗斯开发的数字签名算法,它是一种基于哈希函数的数字签名算法,具有高效性和安全性的特点。数字签名的应用场景有哪些? 电子商务数字签名可以用于电子商务中的订单、付款、物流等环节的认证和验证,保证交易的真实性和完整性。 数字证书数字签名可以用于数字证书的认证和验证,保证数字证书的真实性和有效性。 文件传输数字签名可以用于文件传输中的身份认证和文件完整性保护,保证文件在传输过程中不被篡改或伪造。 网络通信数字签名可以用于网络通信中的数据完整性保护和身份认证,保证通信的安全性和可信度。 版权保护数字签名可以用于保护数字版权,防止数字内容被盗用或篡改。 法律证据数字签名可以作为法律证据,保证签署方的身份真实性和签署时间的真实性。

词条知识树 (6个知识点)数字签名的作用是什么?数字签名的原理是什么?数字签名的流程是什么?数字签名的安全性如何保证?数字签名的算法有哪些?数字签名的应用场景有哪些?相关文章什么是数字签名?-- 【图解数字签名】978数字签名702【计算机网络】网络安全 : 数字签名 ( 数字签名简介 | 数字签名实现 | 数字签名功能 | 保密数字签名 )1.1K数字签名843聊聊数字签名(下)816社区专栏文章阅读清单互动问答技术沙龙技术视频团队主页腾讯云TI平台活动自媒体分享计划邀请作者入驻自荐上首页技术竞赛资源技术周刊社区标签开发者手册开发者实验室关于社区规范免责声明联系我们友情链接腾讯云开发者扫码关注腾讯云开发者领取腾讯云代金券热门产品域名注册云服务器区块链服务消息队列网络加速云数据库域名解析云存储视频直播热门推荐人脸识别腾讯会议企业云CDN加速视频通话图像分析MySQL 数据库SSL 证书语音识别更多推荐数据安全负载均衡短信文字识别云点播商标注册小程序开发网站监控数据迁移Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有 深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569腾讯云计算(北京)有限责任公司 京ICP证150476号 |  京ICP备11018762号 | 京公网安备号11010802020287问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归

数字签名_百度百科

_百度百科 网页新闻贴吧知道网盘图片视频地图文库资讯采购百科百度首页登录注册进入词条全站搜索帮助首页秒懂百科特色百科知识专题加入百科百科团队权威合作下载百科APP个人中心数字签名播报讨论上传视频科技名词收藏查看我的收藏0有用+10本词条由“科普中国”科学百科词条编写与应用工作项目 审核 。数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。 [1]中文名数字签名外文名 digital signature;digitally signed别    名公钥数字签名用    途鉴别数字信息包含运算两种互补的运算,一个用于签名,另一个用于验证技    术非对称密钥加密技术与数字摘要技术目录1原理2特点▪鉴权▪完整性▪不可抵赖3主要功能4签名过程5使用方法6邮件证书7实现方法8签名步骤▪Java签名步骤▪office签名步骤9应用例子10区分攻击▪异常结果▪正常结果11网络安全原理播报编辑数字签名的文件的完整性是很容易验证的(不需要骑缝章,骑缝签名,也不需要笔迹专家),而且数字签名具有不可抵赖性(不可否认性)。 [1]简单地说,所谓数字签名就是附加在数据单元上的一些数据,或是对数据单元所作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。它是对电子形式的消息进行签名的一种方法,一个签名消息能在一个通信网络中传输。基于公钥密码体制和私钥密码体制都可以获得数字签名,主要是基于公钥密码体制的数字签名。包括普通数字签名和特殊数字签名。普通数字签名算法有RSA、ElGamal、Fiat-Shamir、Guillou- Quisquarter、Schnorr、Ong-Schnorr-Shamir数字签名算法、Des/DSA,椭圆曲线数字签名算法和有限自动机数字签名算法等。特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关。显然,数字签名的应用涉及到法律问题,美国联邦政府基于有限域上的离散对数问题制定了自己的数字签名标准(DSS)。 [1]特点播报编辑每个人都有一对“钥匙”(数字身份),其中一个只有她/他本人知道(私钥),另一个公开的(公钥)。签名的时候用私钥,验证签名的时候用公钥。又因为任何人都可以落款声称她/他就是你,因此公钥必须向接受者信任的人(身份认证机构)来注册。注册后身份认证机构给你发一数字证书。对文件签名后,你把此数字证书连同文件及签名一起发给接受者,接受者向身份认证机构求证是否真地是用你的密钥签发的文件。 [2]在通讯中使用数字签名一般具有以下特点: [2]鉴权公钥加密系统允许任何人在发送信息时使用公钥进行加密,接收信息时使用私钥解密。当然,接收者不可能百分之百确信发送者的真实身份,而只能在密码系统未被破译的情况下才有理由确信。 [2]鉴权的重要性在财务数据上表现得尤为突出。举个例子,假设一家银行将指令由它的分行传输到它的中央管理系统,指令的格式是(a,b),其中a是账户的账号,而b是账户的现有金额。这时一位远程客户可以先存入100元,观察传输的结果,然后接二连三的发送格式为(a,b)的指令。这种方法被称作重放攻击。 [2]完整性传输数据的双方都总希望确认消息未在传输的过程中被修改。加密使得第三方想要读取数据十分困难,然而第三方仍然能采取可行的方法在传输的过程中修改数据。一个通俗的例子就是同形攻击:回想一下,还是上面的那家银行从它的分行向它的中央管理系统发送格式为(a,b)的指令,其中a是账号,而b是账户中的金额。一个远程客户可以先存100元,然后拦截传输结果,再传输(a,b),这样他就立刻变成百万富翁了。 [2]不可抵赖在密文背景下,抵赖这个词指的是不承认与消息有关的举动(即声称消息来自第三方)。消息的接收方可以通过数字签名来防止所有后续的抵赖行为,因为接收方可以出示签名给别人看来证明信息的来源。 [2]主要功能播报编辑网络的安全,主要是网络信息安全,需要取相应的安全技术措施,提供适合的安全服务。数字签名机制作为保障网络信息安全的手段之一,可以解决伪造、抵赖、冒充和篡改问题。数字签名的目的之一就是在网络环境中代替传统的手工签字与印章,有着重要作用: [3](1)防冒充(伪造)。私有密钥只有签名者自己知道,所以其他人不可能构造出正确的。 [3](2)可鉴别身份。由于传统的手工签名一般是双方直接见面的,身份自可一清二楚。在网络环境中,接收方必须能够鉴别发送方所宣称的身份。 [3](3)防篡改(防破坏信息的完整性)。对于传统的手工签字,假如要签署一份200页的合同,是仅仅在合同末尾签名呢?还是对每一页都签名?如果仅在合同末尾签名,对方会不会偷换其中的几页? 而对于数字签名,签名与原有文件已经形成了一个混合的整体数据,不可能被篡改,从而保证了数据的完整性。 [3](4)防重放。如在日常生活中,A向B借了钱,同时写了一张借条给B,当A还钱的候,肯定要向B索回他写的借条撕毁,不然,恐怕他会再次用借条要求A还钱。在数字签名中,如果采用了对签名报文添加流水号、时间戳等技术,可以防止重放攻击。 [3](5)防抵赖。如前所述,数字签名可以鉴别身份,不可能冒充伪造,那么,只要保好签名的报文,就好似保存好了手工签署的合同文本,也就是保留了证据,签名者就无法抵赖。那如果接收者确已收到对方的签名报文,却抵赖没有收到呢? 要预防接收者的抵赖。在数字签名体制中,要求接收者返回一个自己的签名表示收到的报文,给对方或者第三方或者引入第三方机制。如此操作,双方均不可抵赖。 [3](6)机密性(保密性)。手工签字的文件(如同文本)是不具备保密性的,文件一旦丢失,其中的信息就极可能泄露。数字签名可以加密要签名消息的杂凑值,不具备对消息本身进行加密,当然,如果签名的报名不要求机密性,也可以不用加密。 [3]保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。 [4]数字签名技术是将摘要信息用发送者的私钥加密,与原文一起传送给接收者。接收者用发送者的公钥解密被加密的摘要信息,然后用HASH函数对收到的原文产生一个摘要信息 [8],与解密的摘要信息对比。如果相同,则说明收到的信息是完整的,在传输过程中没有被修改,否则说明信息被修改过,因此数字签名能够验证信息的完整性。 [4]数字签名是个加密的过程,数字签名验证是个解密的过程。 [4]签名过程播报编辑发送报文时,发送方用一个哈希函数从报文文本中生成报文摘要,然后用发送方的私钥对这个摘要进行加密,这个加密后的摘要将作为报文的数字签名和报文一起发送给接收方,接收方首先用与发送方一样的哈希函数从接收到的原始报文中计算出报文摘要,接着再公钥来对报文附加的数字签名进行解密,如果这两个摘要相同、那么接收方就能确认该报文是发送方的。 [5]数字签名有两种功效:一是能确定消息确实是由发送方签名并发出来的,因为别人假冒不了发送方的签名。二是数字签名能确定消息的完整性。因为数字签名的特点是它代表了文件的特征,文件如果发生改变,数字摘要的值也将发生变化。不同的文件将得到不同的数字摘要。 一次数字签名涉及到一个哈希函数、接收者的公钥、发送方的私钥。 [5]使用方法播报编辑你可以对你发出的每一封电子邮件进行数字签名。这不是指落款,普遍把落款讹误成签名。在我国大陆,数字签名是具法律效力的,正在被普遍使用。2000年,中华人民共和国的新《合同法》首次确认了电子合同、电子签名的法律效力。2005年4月1日起,中华人民共和国首部《电子签名法》正式实施。邮件证书播报编辑具有数字签名功能的个人安全邮件证书是用户证书的一种,是指单位用户收发电子邮件时采用证书机制保证安全所必须具备的证书。个人安全电子邮件证书是符合x.509标准的数字安全证书,结合数字证书和S/MIME技术对普通电子邮件做加密和数字签名处理,确保电子邮件内容的安全性、机密性、发件人身份确认性和不可抵赖性。 具有数字签名功能的 个人安全邮件证书中包含证书持有人的电子邮件地址、证书持有人的公钥、颁发者(CA)以及颁发者对该证书的签名。个人安全邮件证书功能的实现决定于用户使用的邮件系统是否支持相应功能。 MS Outlook 、Outlook Express、Foxmail及CA安全电子邮件系统均支持相应功能。使用个人安全邮件证书可以收发加密和数字签名邮件,保证电子邮件传输中的机密性、完整性和不可否认性,确保电子邮件通信各方身份的真实性。 [6]实现方法播报编辑数字签名算法依靠公钥加密技术来实现的。在公钥加密技术里,每一个使用者有一对密钥:一把公钥和一把私钥。公钥可以自由发布,但私钥则秘密保存;还有一个要求就是要让通过公钥推算出私钥的做法不可能实现。 [7]普通的数字签名算法包括三种算法: [7]1.密码生成算法;2.标记算法;3.验证算法。数字签名技术大多基于哈希摘要和非对称密钥加密体制来实现。如果签名者想要对某个文件进行数字签名,他必须首先从可信的第三方机构(数字证书认证中心CA)取得私钥和公钥,这需要用到PKI技术。 [7]1.有哈希算法的数字签名与验证图1 数字签名及其验证哈希函数是一种“压缩函数”,利用哈希函数可以把任意长度的输入经由散列函数算法变换成固定长度的输出,该输出的哈希值就是消息摘要,也称数字摘要。在正式的数字签名中,发送方首先对发送文件采用哈希算法,得到一个固定长度的消息摘要( Message Digest);再用自己的私钥( Secret key,SK)对消息摘要进行签名,形成发送方的数字签名。数字签名将作为队件和原文一起发送给接收方;接收方首先用发送方的公钥对数字签名进行解密得到发送方的数字摘要,然后用相同的哈希函数对原文进行哈希计算,得到一个新的消息摘要,最后将消息摘要与收到的消息摘要做比较。具体过程如图1所示。 [7]2.基于非对称密钥加密体制的数字签名与验证图2 基于非对称密钥的数字签名与验证发送方首先将原文用自己的私钥加密得到数字签名,然后将原文和数字签名一起发送给接收方。接收方用发送方的公钥对数字签名进行解密,最后与原文进行比较,如图2所示数字签名是电子商务、电子政务中应用普遍、技术成熟、可操作性强的一种电子签名方法。它采用了规范化的程序和科学化的方法,用于鉴定签名人的身份以及对一项电子数据内容的认可。使用数字签名技术能够验证文件的原文在传输过程中有无变动,确保传输电子文件的完整性、真实性和不可抵赖性。 [7]签名步骤播报编辑Java签名步骤1、将applet的class文件打包成*.jar(可以在命令行中输入jar查看帮助) [7]2、首先我们要生成一个keystore 否则在签名的时候报如下错误 [7]jarsigner 错误: java.lang.RuntimeException: 密钥库装入: C:\Documents and Settings\ij2ee\.keystore (系统找不到指定的文件。). (这边的ij2ee 是当前系统用户名) [7]生成keystore的语句:keytool -genkey -alias 别名你可以自己写 -keyalg RSA -keystore .keystore [7]下面是会出现的数字签名的一些步骤操作: [7]输入keystore密码:再次输入新密码:您的名字与姓氏是什么?[Unknown]: ij2ee您的组织单位名称是什么?[Unknown]: mtk您的组织名称是什么?[Unknown]: mtk您所在的城市或区域名称是什么?[Unknown]: suzhou您所在的州或省份名称是什么?[Unknown]: jiangsu该单位的两字母国家代码是什么[Unknown]: cnCN=ij2ee, OU=mtk, O=mtk, L=suzhou, ST=jiangsu, C=cn 正确吗?[否]: y输入的主密码(如果和 keystore密码相同,按回车):这时候会在jdk的bin目录下生成 .keystore 。把这个.keystore文件移动到 C:\Documents and Settings\当前系统用户的目录下面。3、创建一个数字证书 [7]在命令行中输入如下指令,peakCA和peakCALib自己起名字好了,3650是有效天数,就是10年左右,在创建证书的的时候,需要填写证书的一些信息和证书对应的私钥密码。 [7]keytool -genkey -alias peakCA -keyalg RSA -keysize 1024 -keystore peakCALib -validity 36504、将证书导出到证书文件中 [7]在命令行中输入如下指令,peakCA和peakCALib任意起名字,******是输入的密码。 [7]keytool -export -alias peakCA -file peakCA.cer -keystore peakCALib -storepass ****** -rfc5、授权jar文件,在命令行中输入如下指令 [7]jarsigner -keystore peakCALib myapplet.jar peakCAoffice签名步骤1、要保护文档内容的真实性,可以添加不可见的数字签名。 已签名文档的底部有“签名”按钮。 [7]2、单击“文件”选项卡。 [7]3、单击“信息”。 [7]4、在“权限”下,单击“保护文档”、“保护工作簿”或“保护演示文稿”。 [7]5、单击“添加数字签名”。 [7]6、阅读 Word、Excel 或 PowerPoint中显示的消息,然后单击“确定”。 [7]7、在“签名”对话框中的“签署此文档的目的”框中,键入目的。 [7]8、单击“签名”。 [7]9、在对文件进行数字签名后,将出现“签名”按钮,并且文件会变为只读以防止修改。 [7]应用例子播报编辑假如 Alice 向 Bob 传送数字信息,为了保证信息传送的保密性、真实性、完整性和不可否认性,需要对传送的信息进行数字加密和签名,其传送过程为: [3]1.Alice 准备好要传送的数字信息(明文); [3]2.Alice 对数字信息进行哈希运算,得到一个信息摘要; [3]3.Alice 用自己的私钥对信息摘要进行加密得到 Alice 的数字签名,并将其附在数字信息上; [3]4.Alice 随机产生一个加密密钥,并用此密码对要发送的信息进行加密,形成密文; [3]5.Alice 用 Bob 的公钥对刚才随机产生的加密密钥进行加密,将加密后的 DES密钥连同密文一起传送给Bob; [3]6.Bob 收到 Alice 传送来的密文和加密过的 DES 密钥,先用自己的私钥对加密的 DES 密钥进行解密,得到 Alice随机产生的加密密钥; [3]7.Bob 然后用随机密钥对收到的密文进行解密,得到明文的数字信息,然后将随机密钥抛弃; [3]8.Bob 用 Alice 的公钥对 Alice 的数字签名进行解密,得到信息摘要; [3]9.Bob 用相同的哈希算法对收到的明文再进行一次哈希运算,得到一个新的信息摘要; [3]10.Bob 将收到的信息摘要和新产生的信息摘要进行比较,如果一致,说明收到的信息没有被修改过。 [3]区分攻击播报编辑如何区分数字签名攻击呢?有两个方法: [7]1. 查看数字签名的详细信息,我们应该查看该数字签名的详细信息,点击“详细信息”按钮即可。 [7]我们会发现正常EXE和感染(或捆绑木马)后的EXE数字签名的区别。正常EXE的数字签名详细信息。被篡改后的EXE数字签名信息无效。 [7]2.使用数字签名验证程序sigcheck.exe (可以百度一下找这个工具,著名系统工具包Sysinternals Suite的组件之一。) [7]异常结果数字签名异常的结果为: [7]C:\Documents and Settings\litiejun\??\modify.exe:Verified: UnsignedFile date: 15:46 2008-5-23Publisher: n/aDescription: n/aProduct: n/aVersion: n/aFile version: n/a正常结果数字签名正常的结果为: [7]C:\Documents and Settings\litiejun\??\che.exe:Verified: SignedSigning date: 16:28 2008-4-29Publisher: n/aDescription: n/aProduct: n/aVersion: n/aFile version: n/a网络安全播报编辑2023年11月27日报道,国家安全部表示网络空间看似无形隐匿,实则谍影重重,充满硝烟暗战,数字签名等网络资产及服务,都有可能被境外间谍情报机关利用实施网络攻击窃密活动。 [9]2024年1月2日,印度“News9Live”新闻网报道称,相机制造巨头尼康、索尼和佳能计划推出新技术,对抗深度伪造。 [10]新手上路成长任务编辑入门编辑规则本人编辑我有疑问内容质疑在线客服官方贴吧意见反馈投诉建议举报不良信息未通过词条申诉投诉侵权信息封禁查询与解封©2024 Baidu 使用百度前必读 | 百科协议 | 隐私政策 | 百度百科合作平台 | 京ICP证030173号 京公网安备110000020000

10.什么是数字签名? - 知乎

10.什么是数字签名? - 知乎首页知乎知学堂发现等你来答​切换模式登录/注册签名数字签名《电子签名法》10.什么是数字签名?关注者9被浏览11,682关注问题​写回答​邀请回答​好问题​添加评论​分享​7 个回答默认排序放心签电子合同您放心的电子合同专家​ 关注数字签名是什么?数字签名是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。这种电子式的签名还可进行技术验证,其验证的准确度是一般手工签名和图章的验证无法比拟的。数字签名是目前应用最普遍、技术最成熟、可操作性最强的一种电子签名技术。目前电子签名法中提到的签名,一般指的就是数字签名。数字签名的原理数字签名技术是利用算法(一般是非对称算法)通过hash函数对原文进行hash值私钥(仅个人所有)加密,生成数字签名,与原文一起传送给接收者。接收者只有用发送者的公钥才能解密被加密的信息,然后对内容执行hash运算得到hash值,与解密得到的数字签名hash值比对。如果比对结果一致,则说明收到的信息是完整的,在传输过程中没有被篡修改的,否则信息一定被修改过。因此数字签名能够验证数据来源以及信息的保密性、完整性、真实性和不可否认性。数字签名的作用数字签名机制作为保障网络信息安全的手段之一,可以解决伪造、抵赖、冒充和篡改问题。数字签名的目的之一就是在网络环境中代替传统的手工签字与印章,有着重要作用。1、防冒充(伪造)。私有密钥只有签名者自己知道,其他人不能伪造签名。2、可鉴别身份。在数字签名中,客户的公钥是其身份的标志,当使用私钥签名时,如果接收方或验证方用其公钥进行验证并获通过,那么可以肯定,签名人就是拥有私钥的那个人,因为私钥只有签名人知道。3、防重放。数字签名过程中,对签名报文添加时间戳、流水号等技术,可以防止重放攻击。4、防篡改 (防破坏信息的完整性)。数字签名与原始文件和摘要形成一个混合的整体数据一起发送给接收者,一旦信息被篡改,接收者可通过计算摘要和验证签名来判断该文件无效,从而保证了文件的完整性。5、防抵赖。如前所述,数字签名可以鉴别身份,不可能冒充伪造。数字签名即可以作为身份认证的依据,也可以作为签名者签名操作的证据。在数字签名体制中,要求接收者返回一个自己签名的表示收到的报文,给对方或者第三方或者引入第三方机制。如此操作,双方均不可抵赖。6、机密性。手写签字的纸质文件是不具备保密性的,文件一旦丢失,内容信息极可能泄露。但数字签名可以加密要签名的消息,在网络传输中,可以将报文用接收方的公钥加密,以保证信息机密性。发布于 2019-11-09 10:18​赞同 1​​添加评论​分享​收藏​喜欢收起​微签-审批电子签章和电子合同管理​已认证账号​ 关注什么是数字签名呢?楼上对于数字签名的概念已经进行了科普,那么今天我们就来实际操作一下数字签名是如何实现的 。so easy !!!而且我们无需下载软件,通过微信小程序就能够体验数字签名啦首先第一步:打开微信 我们都有微信的对吧,首先拿出手机微信小程序搜索“微签”,点进“微签云”第二步:登录“微签”进入小程序后,使用手机验证码登录就可以立即体验。如果是第一次使用的小伙伴,要点击注册账号哦~第三步:上传文件或一张白纸完成登录后,就来到我们的工作台啦,此时会看到工作台会有很多功能,我们呢只需要点击“我要签章”然后导入文件,小程序端的导入接口可以通过文件、直接拍照和相册导入的形式,我们借助文件传输助手,选中需要签字的文件点击“确定”。文件或白纸导入后,再点击下方绿色框“签字/签章”第四步:电子签点击之后页面下方就会出现一系列操作样式,我们呢只需要需点击“签名”就可以啦点击之后呢,我们手机页面就会出现电子版签名面板,灵活的移动端面板任您随意挥洒~签好后点击“保存”,这样电子版签名就会自动跳转到文件上了,此时我们可以随意拖拽文本框调整签名的位置和大小,调整好之后点击“完成”电子版电子签名就完成啦!发布于 2021-08-12 10:28​赞同​​添加评论​分享​收藏​喜欢

数字签名 - 维基百科,自由的百科全书

数字签名 - 维基百科,自由的百科全书

跳转到内容

主菜单

主菜单

移至侧栏

隐藏

导航

首页分类索引特色内容新闻动态最近更改随机条目资助维基百科

帮助

帮助维基社群方针与指引互助客栈知识问答字词转换IRC即时聊天联络我们关于维基百科

语言

语言链接位于页面顶部,标题的另一侧。

搜索

搜索

创建账号

登录

个人工具

创建账号 登录

未登录编辑者的页面 了解详情

贡献讨论

目录

移至侧栏

隐藏

序言

1历史

2使用

3原理

开关原理子章节

3.1操作

4实现

5参考文献

6外部链接

开关目录

数字签名

53种语言

العربيةAzərbaycancaБашҡортсаবাংলাCatalàЧӑвашлаDanskDeutschΕλληνικάEnglishEsperantoEspañolEestiEuskaraفارسیSuomiFrançaisעבריתहिन्दीMagyarՀայերենBahasa IndonesiaIdoItaliano日本語한국어КыргызчаLombardLietuviųLatviešuമലയാളംनेपालीNederlandsPolskiPortuguêsRomânăРусскийSrpskohrvatski / српскохрватскиSimple EnglishSlovenčinaSlovenščinaShqipСрпски / srpskiSvenskaதமிழ்తెలుగుTürkçeУкраїнськаOʻzbekcha / ўзбекчаTiếng Việt吴语ייִדיש粵語

编辑链接

条目讨论

大陆简体

不转换简体繁體大陆简体香港繁體澳門繁體大马简体新加坡简体臺灣正體

阅读编辑查看历史

工具

工具

移至侧栏

隐藏

操作

阅读编辑查看历史

常规

链入页面相关更改上传文件特殊页面固定链接页面信息引用本页获取短URL下载二维码维基数据项目

打印/导出

下载为PDF可打印版

在其他项目中

维基共享资源

维基百科,自由的百科全书

此条目可参照英语维基百科相应条目来扩充。若您熟悉来源语言和主题,请协助参考外语维基百科扩充条目。请勿直接提交机械翻译,也不要翻译不可靠、低品质内容。依版权协议,译文需在编辑摘要注明来源,或于讨论页顶部标记{{Translated page}}标签。

数字签名(英语:Digital Signature,又称公钥数字签名)是一种功能类似写在纸上的普通签名、但是使用了公钥加密领域的技术,以用于鉴别数字信息的方法。一套数字签名通常会定义两种互补的运算,一个用于签名,另一个用于验证。法律用语中的电子签名与数字签名代表之意义并不相同。电子签名指的是依附于电子文件并与其相关连,用以识别及确认电子文件签署人身份、资格及电子文件真伪者;数字签名则是以数学算法或其他方式运算对其加密而形成的电子签名。意即并非所有的电子签名都是数字签名。

数字签名不是指将签名扫描成数字图像,或者用触摸板获取的签名,更不是落款。

数字签名了的文件的完整性是很容易验证的(不需要骑缝章、骑缝签名,也不需要笔迹鉴定),而且数字签名具有不可抵赖性(即不可否认性),不需要笔迹专家来验证。

简单的数字签名原理

历史[编辑]

1976年,Whitfield Diffie和Martin Hellman首次描述了数字签名体系,他们根据陷门单向排列的功能推测了这种体系的存在。[1][2]不久之后,Ronald Rivest, Adi Shamir和Len Adleman发明了RSA算法,该算法可以用来生成原始的数字签名(因“普通”的RSA签名并不安全[3],这仅仅为概念验证)。1989年,使用了RSA算法的Lotus Notes 1.0是第一个被广泛推广的提供数字签名的软件包。[4]

在RSA算法之后,其他数字签名方案被很快开发出来——最早的三个分别为Lamport签名[5]、Merkle签名(也被称为“Merkle trees”或“Hash trees”)[6]、和Rabin签名[7]。

1988年,Shafi Goldwasser、Silvio Micali和Ronald Rivest成为第一个严格定义数字签名安全要求的人。[8]他们描述了签名的攻击模型的层次结构,还提出了GMR签名方案——第一种被证明可防止伪造选定信息的数字签名,与现今能被接受的数字签名安全定义一致。[8]

使用[编辑]

用户可以对其发出的每一封电子邮件进行数字签名。这不是指落款或签名档(英语:Signature block)(普遍把落款讹误成签名)。

在中国大陆,数字签名是具法律效力的,正在被普遍使用。2000年,中华人民共和国的新《合同法》首次确认了电子合同、电子签名的法律效力。2005年4月1日起,中华人民共和国首部《电子签名法》正式实施。

在台湾,2001年公布实施《电子签名法》做为数字签名的法源依据及规范,并且制发中华民国自然人证书及工商证书。

每个人都有一对“钥匙”(数字身份),其中一个只有本人知道(私钥),另一个公开的(公钥)。签名的时候用私钥,验证签名的时候用公钥。又因为任何人都可以落款申称他就是用户本人,因此公钥必须向接受者信任的人(身份认证机构)来注册。注册后身份认证机构给用户发一数字证书。对文件签名后,用户把此数字证书连同文件及签名一起发给接受者,接受者向身份认证机构求证是否真地是用用户的密钥签发的文件。

信息发布者可以使用数字签名:信息发布的目的是让人们知道信息,虽然没必要对消息进行加密,但是必须排除有人伪装信息发布者发布假消息的风险,这时信息发布者就可以使用数字签名。而对明文消息施加的签名,称为明文签名(clearsign)。[9]

软件的作者可以加上数字签名,以便用户下载后对签名进行验证。[10]

认证机构(CA)也可以为用户的公钥加上数字签名生成证书,以便人们确认用户公钥的合法性。[11]

SSL/TLS使用服务器证书(加上了数字签名的服务器公钥)认证服务器身份是否合法。[11]

原理[编辑]

通常会使用公钥加密,用私钥解密。而在数字签名中,会使用私钥加密(相当于生成签名),公钥解密(相当于验证签名)。[12]

可以直接对消息进行签名(即使用私钥加密,此时加密的目的是为了签名,而不是保密),验证者用公钥正确解密消息,如果和原消息一致,则验证签名成功。但通常会对消息的散列值签名,因为通常散列值的长度远小于消息原文,使得签名(非对称加密)的效率大大提高。注意,计算消息的散列值不是数字签名的必要步骤。[13]

在实际使用中,我们既想加密消息,又想签名,所以要对加密和签名组合使用,比如TLS就组合了加密和签名。[14]

数字签名应用了公钥密码领域使用的单向函数原理。单向函数指的是正向操作非常简单,而逆向操作非常困难的函数,比如大整数乘法。这种函数往往提供一种难解或怀疑难解的数学问题。目前,公钥密码领域具备实用性的三个怀疑难解问题为:质数分解,离散对数和椭圆曲线问题。

操作[编辑]

数字签名就是将公钥密码反过来使用。签名者将讯息用私钥加密(这是一种反用,因为通常公钥密码中私钥用于解密),然后公布公钥;验证者使用公钥将加密讯息解密并比对消息(一般签名对象为消息的散列值。本节为了讲解方便,假设数字签名直接将消息而非散列值签名)。

因此,可靠的公钥密码算法均能构建出可靠的数字签名。下面讲解为何反用公钥密码算法能够构建出安全的数字签名。

Alice是签名者,假设她要对消息A进行签名。现在, Alice生成了其公私钥密码对,公布该公钥,然后将消息用私钥加密后发布。

现在,希望Alice的签名算法具有如下特性:1,确认消息在传输过程中没有丢位,没被篡改(完整性). 2,确认消息的发送者是发布公钥的Alice(认证). 3,确认Alice的确发布过该消息(不可否认性)

实现[编辑]

数字签名算法是依靠公钥加密技术来实现的。在公钥加密技术里,每一个用户有一对密钥:一把公钥和一把私钥。公钥可以自由发布,但私钥则秘密保存;还有一个要求就是要让通过公钥推算出私钥的做法不可能实现。

普通的数字签名算法包括三种算法:

一种密码生成算法

标记算法

验证算法

RSA、ECDSA等算法可以实现数字签名。[15]常用的密码散列函数有SHA家族。

参考文献[编辑]

^ Diffie, W.; Hellman, M. New directions in cryptography. IEEE Transactions on Information Theory. 1976-11, 22 (6) [2022-09-08]. ISSN 0018-9448. doi:10.1109/tit.1976.1055638. (原始内容存档于2008-10-07). 

^ Lysyanskaya, Anna. Signature schemes and applications to cryptographic protocol design. 2002 [2022-09-08]. (原始内容存档于2022-09-08). 

^ For example any integer, r, "signs" m=re and the product, s1s2, of any two valid signatures, s1, s2 of m1, m2 is a valid signature of the product, m1m2.

^ The History of Notes and Domino. developerWorks. 2005-12-20.  缺少或|url=为空 (帮助)

^ Lamport, Leslie. Constructing digital signatures from a one way function. 1979. 

^ Merkle, Ralph C. A certified digital signature. Conference on the Theory and Application of Cryptology (New York: Springer). 1989: 218-238. 

^ Rivest, Ronald L. Cryptography and machine learning. International Conference on the Theory and Application of Cryptology (Springer). 1991: 427-439. 

^ 8.0 8.1 Goldwasser, Shafi; Micali, Silvio; Rivest, Ronald L. A Digital Signature Scheme Secure Against Adaptive Chosen-Message Attacks. SIAM Journal on Computing. 1988-04, 17 (2). ISSN 0097-5397. doi:10.1137/0217017. 

^ 结城浩. 图解密码技术(第3版). 人民邮电出版社. 2016: 218页. ISBN 978-7-115-42491-4. 

^ 结城浩. 图解密码技术(第3版). 人民邮电出版社. 2016: 219页. ISBN 978-7-115-42491-4. 

^ 11.0 11.1 结城浩. 图解密码技术(第3版). 人民邮电出版社. 2016: 220页. ISBN 978-7-115-42491-4. 

^ 结城浩. 图解密码技术(第3版). 人民邮电出版社. 2016: 207页. ISBN 978-7-115-42491-4. 

^ 结城浩. 图解密码技术(第3版). 人民邮电出版社. 2016: 209–211页. ISBN 978-7-115-42491-4. 

^ 结城浩. 图解密码技术(第3版). 人民邮电出版社. 2016: 214–215页. ISBN 978-7-115-42491-4. 

^ 结城浩. 图解密码技术(第3版). 人民邮电出版社. 2016: 222–223页. ISBN 978-7-115-42491-4. 

外部链接[编辑]

您可以在维基文库中查找此百科条目的相关原始文献:

电子签章法

中华人民共和国电子签名法

电子签章法

中华人民共和国电子签名法

《中华人民共和国电子签名法》 (页面存档备份,存于互联网档案馆)

中华民国《电子签名法》 (页面存档备份,存于互联网档案馆)

取自“https://zh.wikipedia.org/w/index.php?title=數位簽章&oldid=79175069”

分类:​密码学电子商务签名公钥基础设施隐藏分类:​含有缺少网址的网站引用的页面需要从英语维基百科翻译的条目含有英语的条目

本页面最后修订于2023年10月2日 (星期一) 02:14。

本站的全部文字在知识共享 署名-相同方式共享 4.0协议之条款下提供,附加条款亦可能应用。(请参阅使用条款)

Wikipedia®和维基百科标志是维基媒体基金会的注册商标;维基™是维基媒体基金会的商标。

维基媒体基金会是按美国国内税收法501(c)(3)登记的非营利慈善机构。

隐私政策

关于维基百科

免责声明

行为准则

开发者

统计

Cookie声明

手机版视图

开关有限宽度模式

数字签名的作用_数字签名的作用是什么-CSDN博客

>

数字签名的作用_数字签名的作用是什么-CSDN博客

数字签名的作用

最新推荐文章于 2023-10-14 11:42:00 发布

王摇摆

最新推荐文章于 2023-10-14 11:42:00 发布

阅读量1.3k

收藏

3

点赞数

文章标签:

java

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/weixin_44943389/article/details/132532893

版权

数字签名的三个作用:防伪造,防篡改,防抵赖。

数字签名在计算机安全和加密领域中起着重要作用,它主要用于以下几个方面:

认证身份:数字签名可以用于验证发送方的身份。通过使用私钥对数据进行签名,发送方能够证明数据的真实性和来源,接收方可以使用对应的公钥验证数字签名的有效性,从而确保信息来自预期的发送方。 数据完整性:数字签名还可以用于验证数据的完整性。如果数据在传输过程中被篡改,数字签名将失效,因为签名是基于原始数据和私钥生成的。接收方可以验证数字签名,以确定数据是否在传输过程中被修改。 防止抵赖:数字签名可以防止发送方否认曾经发送过某个消息。一旦发送方使用私钥生成数字签名并发送数据,就无法否认这个行为,因为数字签名是唯一且与私钥绑定的。 安全传输:使用数字签名可以确保传输的数据在发送和接收之间保持安全。即使在不安全的传输通道上,只要数字签名有效,接收方仍然能够确定数据的来源和完整性。 文件认证:数字签名还可以用于认证文件的原始性。数字签名可以附加到文件上,以证明文件的创建者和修改者。这在法律文件、合同和其他需要验证文件完整性的场景中很有用。 授权和许可:数字签名可以用于授权和许可的管理。通过对许可证、许可协议等进行数字签名,可以确保授权的合法性,从而减少滥用和非法使用的风险。

总之,数字签名是保障信息安全和信任的关键工具。它通过将加密技术与公钥基础设施相结合,为数据的身份验证、完整性验证和不可抵赖性提供了强大的机制,使得在数字通信和交易中更容易建立信任和安全。

优惠劵

王摇摆

关注

关注

0

点赞

3

收藏

觉得还不错?

一键收藏

打赏

知道了

0

评论

数字签名的作用

它通过将加密技术与公钥基础设施相结合,为数据的身份验证、完整性验证和不可抵赖性提供了强大的机制,使得在数字通信和交易中更容易建立信任和安全。通过使用私钥对数据进行签名,发送方能够证明数据的真实性和来源,接收方可以使用对应的公钥验证数字签名的有效性,从而确保信息来自预期的发送方。:使用数字签名可以确保传输的数据在发送和接收之间保持安全。即使在不安全的传输通道上,只要数字签名有效,接收方仍然能够确定数据的来源和完整性。通过对许可证、许可协议等进行数字签名,可以确保授权的合法性,从而减少滥用和非法使用的风险。

复制链接

扫一扫

RSA数字签名设计与实现

05-04

内容详细 资源详尽 完整的介绍了有关rsa数字签名的过程原理 有一定的借鉴作用~

数字签名原理及其应用详解

细嗅蔷薇

02-22

3万+

序言签名的作用无非就是证明某个文件上的内容确实是我写的/我认同的,别人不能冒充我的签名(不可伪造),我也不能否认上面的签名是我的(不可抵赖)。我们知道,手写签名之所以不能伪造,是因为每一个人的笔迹都是独一无二的,即使模仿,也可以通过专家鉴定分别出来。而不可抵赖,是因为每个人的笔迹都有固定特征,这些特征是很难摆脱的。正是这两点特性使得手写签名在日常生活中被广泛承认,比如签合同、借条等等。而数字签名,...

参与评论

您还未登录,请先

登录

后发表或查看评论

信息安全原理与技术-第五章Hash函数和数字签名.ppt

06-06

Hash函数和数字签名

Hash函数和数字签名

Hash函数和数字签名

CA与区块链之数字签名详解

qq_65052774的博客

10-14

1154

系统的健壮性摘要比较提供了一个另外的安全层。这在系统设计中是一个常见的原则,即不完全依赖一个安全机制,而是使用多重机制。这可以抵御未知的攻击和缺陷。错误的检测:除了恶意攻击外,消息可能会因为其他原因(如传输错误)而被篡改。摘要的比较可以帮助检测这类错误。未来证明:摘要比较也为未来可能出现的新的攻击或漏洞提供了保护。尽管现有的签名算法可能是安全的,但未来可能会发现它的弱点。摘要的存在和验证提供了一个额外的安全层,使得对消息的完整性和来源的验证更加严格。简化验证过程对于某些系统来说。

渝粤题库 陕西师范大学 电子商务安全作业

渝粤题库

11-06

2807

电子商务安全作业

一、单选题

1. 以下那个不是杀毒软件的正确使用方法( )。

A. 定期对病毒库进行升级 B. 经常针对电脑进行全盘扫描

C. 设置开机自动运行杀毒软件D. 中毒之后再下载杀毒软件来安装

2. 电子商务实践表明,大多数安全问题是由于( )造成的。

A. 安全技术落后 B. 黑客攻击

C. 系统软件漏洞 D. 管理...

数字签名原理及其应用

热门推荐

那些零零散散的算法

06-25

5万+

签名的作用无非就是证明某个文件上的内容确实是我写的/我认同的,别人不能冒充我的签名(不可伪造),我也不能否认上面的签名是我的(不可抵赖)。

我们知道,手写签名之所以不能伪造,是因为每一个人的笔迹都是独一无二的,即使模仿,也可以通过专家鉴定分别出来。而不能抵赖,是因为每个人的笔迹都有固定特征,这些特征是很难摆脱的。

正是这两点特性使得手写签名在日常生活中被广泛承认,比如签合同、借条等等。

而数字签名

数字签名的作用和功能

苏美尔人的天空

07-03

2545

信息传输过程中,单纯采用加密来保证数据的保密性,实际上还存在缺陷,假如发送方在发送某个信息后突然反悔,声明这个信息不是其发送,进行抵赖,虽然数据传输过程中是保密的,但无法证明这个信息的发送方身份,这样不利于通信的管理.

  现实中,一般采用签名的方式,使信息不可抵赖,例如,合同谈判,银行取款等,都采用了用户签名的形式,证明这个信息确实发生过,那么,在网络通信中,通常使用数字签名实现信息的不可

数字签名的简单理解

Robin_Aim的博客

05-06

2480

数字签名的简单理解@TOC

数字签名的简单理解!

对于数字签名,网上有很多大神解释的很详细了,我在这里解释的方法更加简单,更适用于初学者的入门理解,已经尽可能的浅显易懂,希望可以对大家有用!

评论区欢迎大家理性讨论啊,喜欢的点点赞啊!!!啾咪!!!

什么是数字签名

数字签名的意义

数字签名的实现

市场上的数字签名使用

总结

1. 什么是数字签名

简单来说,数字签名就是“女朋友在你脖子上的草莓”,单单一个“草莓”是没什么意义,但是当“草莓”放在了“脖子”上,就很能说明问题了。同理,数

【中级软考】数字签名的概念及其作用

01-07

数字签名(又称公钥数字签名)是只有信息的发送者才能产生的别人无法伪造的一段数字串,这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是使用了公钥加密...

数字签名技术在互联网安全中的作用.doc

12-02

数字签名技术在互联网安全中的作用.doc

signature数字签名

06-15

起到在电脑间传文件时的安全保密作用,对文件进行数字签名,加密解密

数字签名面临的技术问题

02-16

数字签名面临的技术问题,李明浩,,数字签名技术将使我们的生活发生根本改变,但目前还存在许多问题,本文从PKI的建设、非否认要求和系统设计各方面之间的交互作用、

电子商务中的数字签名技术

04-26

数字签名是电子商务安全系统的

核心技术。RSA数字签名通过一个Hash

函数来实现。加入数字签名和验证的

文件传输过程,使得在电子商务中能

够验证数据的完整性,验证签名者的

身份和防止交易中的抵赖...

网络通信中的数字签名

07-16

有关数字签名的基本知识 讲解什么是数字签名 数字签名的基本作用

基于RSA的数字签名的设计与实现

03-08

第四,详述了RSA数字签名的设计与实现,主要实现的模块包括RSA密钥的产生(一对公钥和私钥),RSA加密算法和解密算法的实现,消息摘要MD的生成以及利用RSA算法实现数字签名和签名的验证;第五,对该系统进行了整体的...

数字签名检测软件1.2中文免费绿色版

08-05

数字签名检测软件就是一款功能非常强大的绿色检查工具,他的最大的作用就是能够快速的对自己电脑中微软的数字签名信息和系统下载的文件进行快速的靠可靠性完整验证,从而能够检查出不可靠的软件,之后就能进行相应的...

驱动没有数字签名解方案.doc

03-12

为大量的驱动开发者提供的文档,当开发者在使用自己开发的驱动在Windows上打不开,或者有警告码是如何造成的。如何去避免有这样的问题,代码数字签名到底是有什么作用等。

xilinx dma数字签名

最新发布

01-18

Xilinx DMA(Direct Memory Access,直接内存访问)是一种用于高性能数据传输的技术。在数字签名方面,Xilinx DMA可以提供一种有效的方式来处理和验证数字签名。

数字签名是一种用于验证文件完整性和身份验证的技术。它使用一个密钥来生成一个唯一的标识符,可以验证文件的来源和完整性。在数字签名过程中,使用私钥对文件进行签名,然后可以使用与私钥对应的公钥来验证文件的签名是否有效。

Xilinx DMA可以用来加速数字签名的处理过程。它可以使数据直接从存储器传输到加密处理器,并将签名结果直接传回存储器,而无需CPU的干预。这样可以显著提高签名的处理速度,减少CPU的负载。

Xilinx DMA还可以用于提供对于安全存储区域的加密和解密功能。数字签名通常是与加密和解密过程相结合使用的。通过使用DMA,可以提高对存储区域的访问速度,并保护数据的机密性和完整性。

总之,Xilinx DMA在数字签名方面具有重要的作用。它可以加速数字签名的处理过程,提高数据传输速度,并保护数据的安全性。因此,Xilinx DMA为数字签名提供了一种高效和可靠的解决方案。

“相关推荐”对你有帮助么?

非常没帮助

没帮助

一般

有帮助

非常有帮助

提交

王摇摆

CSDN认证博客专家

CSDN认证企业博客

码龄5年

高校学生

2691

原创

2万+

周排名

897

总排名

99万+

访问

等级

3万+

积分

2564

粉丝

3153

获赞

56

评论

3672

收藏

私信

关注

热门文章

在SQL中修改数据

31345

ChatGPT是免费的吗?

19100

keras和tensorflow的匹配版本

15614

常说的一区二区含义是什么?

14253

Hadoop的安装与配置(非常重要)

8422

分类专栏

Word

13篇

镜像源

4篇

OriginPro

2篇

工程测试技术

25篇

ChatGPT

14篇

R语言

6篇

NLP

1篇

Y2-S学术

102篇

装个机吧

5篇

PyTorch

22篇

拖延症害死人

3篇

MATLAB

6篇

Visio

1篇

实验

6篇

机器学习

112篇

数据集

5篇

Y1-X学术

8篇

Y3-X学术

1篇

Y3-S学术

1篇

Y2-X学术

1篇

Vue

10篇

JavaScript

25篇

设计模式

37篇

断舍离

9篇

2023精准健身

22篇

Sping Boot

5篇

Java Web

5篇

IDEA

41篇

喜旧厌新[version]

3篇

前端

2篇

4篇

SSM

2篇

服务器

3篇

快速学习

3篇

PyQt5

78篇

ANACONDA

7篇

Qt

1篇

GUI

6篇

答案是1

1篇

密码学

6篇

计算机基础

2篇

Maven

4篇

VMware

2篇

Hadoop核心配置

28篇

数据清洗

1篇

特征工程

1篇

自我意识

6篇

网络资源

2篇

数据科学

2篇

Tensorboard

3篇

计算机简史

2篇

版本区别

2篇

JavaWEB

5篇

Spring

3篇

Tensorflow

2篇

先上车

1篇

调参侠

2篇

决策树

4篇

付款心理

4篇

初等数学

2篇

概率论与数理统计

2篇

夜读

12篇

言多必失

5篇

DETAILS

2篇

Spark

2篇

UML

4篇

JVM

2篇

BLOG

4篇

程序人生

72篇

OVERWATCH

2篇

THINKG

4篇

深度学习2

55篇

计算机图形学

1篇

INNER

1篇

NUC

2篇

读论文

3篇

读期刊

1篇

读报告

2篇

MEETING

3篇

获取文献

7篇

深度学习

33篇

PINGPANG

9篇

CNKI

6篇

人生经验

17篇

Latex & MathType

7篇

博弈心理学

19篇

PyCharm

19篇

Windows

9篇

CNN

3篇

文献学

4篇

神经网络

9篇

Mermaid

10篇

Hadoop

45篇

SQL

16篇

Java

102篇

Python

101篇

Git

24篇

Linux

21篇

e

3篇

最新评论

keras和tensorflow的匹配版本

naseke:

tensorflow=2.0.0和keras=2.3.1在python3.6.2无法解析导入“tensorflow.keras.models”

PyCharm中如何竖着选中多行文本?

lizepengg:

非常感谢你,解决了我的问题!

this和super为什么不能同时出现?

鱼悠奕:

不共存指的是super()、this()在构造方法中不共存,都必须是构造方法中的第一个语句

this和super为什么不能同时出现?

鱼悠奕:

this、super只能出现在构造方法、实例方法中,不能出现在静态方法中。因为this、super本意是表示某个【对象】,静态成员在类的字节码文件加载到内存的时候诞生,再由JVM解释执行,程序运行,对象创建,此时实例成员才诞生(静态成员先于实例成员存在)。

TCP连接的三次握手过程(SYN报文的学习)

可乐manman:

第三个报文不一定不包含数据!

最新文章

样式基于这个选项如何理解?

样式选项卡中的样式类型如何理解?默认是段落

【Word排版】灵魂是样式

2024

03月

32篇

02月

1篇

01月

156篇

2023年2257篇

2022年246篇

目录

目录

分类专栏

Word

13篇

镜像源

4篇

OriginPro

2篇

工程测试技术

25篇

ChatGPT

14篇

R语言

6篇

NLP

1篇

Y2-S学术

102篇

装个机吧

5篇

PyTorch

22篇

拖延症害死人

3篇

MATLAB

6篇

Visio

1篇

实验

6篇

机器学习

112篇

数据集

5篇

Y1-X学术

8篇

Y3-X学术

1篇

Y3-S学术

1篇

Y2-X学术

1篇

Vue

10篇

JavaScript

25篇

设计模式

37篇

断舍离

9篇

2023精准健身

22篇

Sping Boot

5篇

Java Web

5篇

IDEA

41篇

喜旧厌新[version]

3篇

前端

2篇

4篇

SSM

2篇

服务器

3篇

快速学习

3篇

PyQt5

78篇

ANACONDA

7篇

Qt

1篇

GUI

6篇

答案是1

1篇

密码学

6篇

计算机基础

2篇

Maven

4篇

VMware

2篇

Hadoop核心配置

28篇

数据清洗

1篇

特征工程

1篇

自我意识

6篇

网络资源

2篇

数据科学

2篇

Tensorboard

3篇

计算机简史

2篇

版本区别

2篇

JavaWEB

5篇

Spring

3篇

Tensorflow

2篇

先上车

1篇

调参侠

2篇

决策树

4篇

付款心理

4篇

初等数学

2篇

概率论与数理统计

2篇

夜读

12篇

言多必失

5篇

DETAILS

2篇

Spark

2篇

UML

4篇

JVM

2篇

BLOG

4篇

程序人生

72篇

OVERWATCH

2篇

THINKG

4篇

深度学习2

55篇

计算机图形学

1篇

INNER

1篇

NUC

2篇

读论文

3篇

读期刊

1篇

读报告

2篇

MEETING

3篇

获取文献

7篇

深度学习

33篇

PINGPANG

9篇

CNKI

6篇

人生经验

17篇

Latex & MathType

7篇

博弈心理学

19篇

PyCharm

19篇

Windows

9篇

CNN

3篇

文献学

4篇

神经网络

9篇

Mermaid

10篇

Hadoop

45篇

SQL

16篇

Java

102篇

Python

101篇

Git

24篇

Linux

21篇

e

3篇

目录

评论

被折叠的  条评论

为什么被折叠?

到【灌水乐园】发言

查看更多评论

添加红包

祝福语

请填写红包祝福语或标题

红包数量

红包个数最小为10个

红包总金额

红包金额最低5元

余额支付

当前余额3.43元

前往充值 >

需支付:10.00元

取消

确定

下一步

知道了

成就一亿技术人!

领取后你会自动成为博主和红包主的粉丝

规则

hope_wisdom 发出的红包

打赏作者

王摇摆

你的鼓励将是我创作的最大动力

¥1

¥2

¥4

¥6

¥10

¥20

扫码支付:¥1

获取中

扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元

使用余额支付

点击重新获取

扫码支付

钱包余额

0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

什么是数字签名? | DigiCert常见问题与解答

什么是数字签名? | DigiCert常见问题与解答

')

//check if OneTrust is allowing "Personalized Experience Cookies" (i.e., Adobe Target) to load

var adobeTargetOneTrustGroup = "PE";

function isAdobeTargetAllowed(adobeTargetOneTrustGroup) {

var OptanonConsentCookie = document.cookie.match(/OptanonConsent=.*;/);

return (OptanonConsentCookie && decodeURIComponent(OptanonConsentCookie[0]).includes(adobeTargetOneTrustGroup + ":1"));

}

if (isAdobeTargetAllowed(adobeTargetOneTrustGroup)) {

//Adobe Target prehiding snippet

;(function(win, doc, style, timeout) {

var STYLE_ID = 'at-body-style';

function getParent() {

return doc.getElementsByTagName('head')[0];

}

function addStyle(parent, id, def) {

if (!parent) {

return;

}

var style = doc.createElement('style');

style.id = id;

style.innerHTML = def;

parent.appendChild(style);

}

function removeStyle(parent, id) {

if (!parent) {

return;

}

var style = doc.getElementById(id);

if (!style) {

return;

}

parent.removeChild(style);

}

addStyle(getParent(), STYLE_ID, style);

setTimeout(function() {

removeStyle(getParent(), STYLE_ID);

}, timeout);

}(window, document, "body {opacity: 0 !important}", 3000));

}

数字信任解决方案

购买

洞见

合作伙伴

支持

Contact Us

Language

Contact us

返回

choose your language

英语

西班牙语

荷兰语

德语

法语

意大利语

中文(简体)

中文(繁体)

日语

韩语

葡萄牙语

返回

与支持代表线上交谈

与技术支持人员线上交谈 >

与验证人员线上交谈 >

与销售人员线上交谈 >

中国

+86 400 842 8401

向销售人员发送电子邮件 向支持人员发送电子邮件

RECOMMENDED LINKS

证书对比

DigiCert® Trust Lifecycle Manager

DigiCert® IoT Trust Manager

DigiCert® Document Trust Manager

DigiCert® Software Trust Manager

DigiCert® DNS Trust Manager

返回

大规模保护、更新、监测并控制互联设备

立即下载

数字信任:

企业IT、PKI与身份

DigiCert® Trust Lifecycle Manager

网站与服务器

DigiCert® CertCentral TLS/SSL Manager

DigiCert® DNS Trust Manager

代码与软件

DigiCert® Software Trust Manager

文档与签名

DigiCert® Document Trust Manager

IoT与互联设备

DigiCert® IoT Trust Manager

Matter计划IoT设备认证

适用于开发人员的DigiCert+Mocana

立即在一个平台中管理PKI与证书风险

预防停机

证书生命周期管理

私有PKI服务

集成与优势

立即在一个平台中管理PKI与证书风险

预防停机

证书生命周期管理

私有PKI服务

集成与优势

管理证书生命周期的更智能的方法

颁发与安装

检查与修复

续订与自动化

分配与委托

适用于CI/CD& DevOps的持续签名

确保代码完整性

实现软件签名工作流程的自动化

集中管理密钥与权限

简化并强制执行合规性

安全、灵活的全球签名

建立加密唯一身份

受信任的远程身份验证(RIV)

直观的Adobe和DocuSign集成

灵活的工作流程选项

从芯片注入到现场全过程受信任

医疗IoT

家居与消费者IoT

工业IoT

智慧城市IoT

运输IoT

不妥协的设备安全性

嵌入式信任

自动化的设备管理

集中控制

加快安全应用程序开发

不限定操作系统和处理器的开发

灵活的足迹

任何语言

发布活动

PKI领域30年来最重大的事项

 

观看网络研讨会

2022版TLS/SSL最佳实践指南

立即下载

2022版TLS/SSL最佳实践指南

立即下载

网络研讨会

管控设备、身份和证书扩散

立即观看

如何建立DevOps将实际采用的签名策略

获取指南

从全球角度管理文档签名与规则

立即下载

大规模保护、更新、监测并控制互联设备 

立即下载

大规模保护、更新、监测并控制互联设备

立即下载

大规模保护、更新、监测并控制互联设备

立即下载

返回

管理行业最佳证书的2022年最佳实践指南

了解更多信息

DigiCert TLS/SSL证书

Secure Site Pro TLS/SSL

购买

Secure Site TLS/SSL

购买

基本款TLS/SSL

购买

通配符TLS/SSL

购买

多域名TLS/SSL

购买

证书对比

对比

DigiCert Smart Seal

购买

Verified Mark Certificates

购买

欧盟合格证书(QTSP)

申请

PSD2证书

学习

代码签名证书

购买

客户端(S/MIME)证书

购买

文档签名证书

购买

比较最受信任的证书:

Secure Site Pro TLS/SSL证书

Secure Site TLS/SSL证书

基本款TLS/SSL证书

通配符TLS/SSL证书

多域名(UCC/SAN)TLS/SSL证书

强大的一体式网站安全

优先验证与支持

恶意软件扫描服务

漏洞与PCI扫描

持续的CT日志监测

DigiCert Smart Seal

行业领先的安全赔付金额

数字优先企业的选择

优先验证与支持

恶意软件扫描

DigiCert Smart Seal

领先的安全赔付金额

安全、灵活、必要的证书

屡获殊荣的支持服务

99%的浏览器兼容性

可在OA、EV中提供

DigiCert Basic Seal

灵活、功能强大且易于添加

适用于所有DigiCert OV证书

保护主域名

保护无限子域名

多域名。灵活的选项。

适用于所有DigiCert OV和EV证书

保护多达250个子域名

统一通信证书(UCC)

SAN(使用者可选名称)证书

当今最先进的信任签章

赢得客户信任

提高转化率

83%的消费者喜欢的功能

被消费者评为“最现代”

开始发送客户可信任的电子邮件

通过DMARC降低网络钓鱼风险

在客户的收件箱中实现可视化验证

提高电子邮件的开启率

符合欧盟标准、合格且受到信任

QWAC(合格Web身份验证证书)

eIDAS合格电子签名证书

eIDAS合格电子印章证书

瑞士ZertES证书

荷兰PKIoverheid证书

Netherlands PKIoverheid Certificates

前量子时期是做准备的时期

仅由Secure Site Pro证书提供

预览您的量子准备情况

有效期前和有效期后的混合证书

提供完整的文档

实现PSD2合规性

DigiCert是欧盟合格信任服务提供商(QTSP)

合格TLS/SSL证书

e-Seal和QSealC证书

进行代码签名并保护软件

保护您的IP

可用的OV或EV证书

可选时间戳和密钥库

支持HSM

确保业务安全的客户端证书

使用S/MIME加密电子邮件

启用双因素身份验证

管理对网络资产的访问

用于领先工作流程的受信任的文档签名

建立具有法律约束力的身份

在全球受信任

提供个人或组织证书

管理行业最佳证书的2022年最佳实践指南

立即下载

用于行业最佳证书的最新最佳实践

立即下载

获取已帮助数千家企业改进证书管理的清单

立即下载

获取已帮助数千家企业改进证书管理的清单

立即下载

获取2022版TLS/SSL最佳实践指南

立即下载

获取2022版TLS/SSL最佳实践指南

立即下载

了解DigiCert Smart Seal如何在整个客户之旅中获胜

查看数据

了解VMC可如何同时助力于IT、风险管理与市场营销

获取指南

唯一拥有全球影响力和本地专业知识的合格信任服务提供商

观看视频

请查看PQC工具包文档

查看文档

实现PSD2合规性所需的所有内容

立即下载

大规模管理代码签名、密钥和策略以提升信任

获取指南

网络研讨会

管控设备、身份和证书扩散

立即观看

从全球角度管理文档签名规则

立即下载

返回

网络研讨会

管控设备、身份和证书扩散

立即观看

洞察力

 

DigiCert 实验室

数字信任的 4 个要素

合规案例

零信任: 数字信任的关键

真实世界的数字信任

浏览这些页面,了解 DigiCert 如何帮助组织建立、管理和扩展数字信任,以解决实际问题。

博客

公关与新闻

活动

Ponemon 研究所报告

看看我们的全球后量子研究揭示了世界在为量子计算做准备的竞赛中的现状。

了解更多 >

返回

建立于信任的合作关系

立即观看

DigiCert合作伙伴网络

DigiCert 合作伙伴计划

DigiCert 合作伙伴门户网站

DigiCert技术合作伙伴计划

集成合作伙伴目录

行业和联盟领导

CI+ 伙伴关系

强大的合作伙伴关系在全球提供数字信任:

企业

中小企业

政府

技术联盟

联合体

Cloud Service Providers

建立于信任的合作关系

数字信任解决方案为Acmetek创造了新机会

立即观看

返回

联系我们的支持团队

 

美洲

1.877.438.8776(美国和加拿大免费)

1.520.477.3102

1.801.701.9601(西班牙语)

1.800.579.2848(仅限企业)

1.801.769.0749(仅限企业)

欧洲、中东、非洲

+44.203.788.7741

亚太、日本

+61.3.9674.5500

向销售人员发送电子邮件> 向支持人员发送电子邮件>

支持

支持

PKI支持

联系我们

资源

博客

文档

API文档

知识库

常见问答与解答

什么是SSL证书?

什么是SSL、TLS和HTTPS?

DV、OV和EV SSL证书之间有什么区别?

TLS/SSL如何发挥作用

工具

工具:SSL Install Diagnostic

工具:Certificate Utility for Windows

工具:CSR创建程序

工具:检查CSR

工具:SSL证书安装说明

联系我们的支持团队

技术支持聊天 >

验证聊天 >

销售聊天 >

中国

+86 400 842 8401

向销售人员发送电子邮件 向支持人员发送电子邮件

向销售人员发送电子邮件

向支持人员发送电子邮件

常见问题与解答

安全签名

什么是数字签名?

安全签名

什么是

数字签名?

证书管理

什么是证书生命周期管理?

如何管理数字证书?

证书生命周期中的五个阶段是什么?

什么是证书管理器?

谁管理组织中的TLS/SSL证书?

何时需要证书管理?

需要管理哪些类型的公用证书?

如何识别或定位为您的域名所颁发的公用TLS/SSL证书?

如何实现证书管理自动化?

证书透明度

什么是证书透明度?

证书透明度如何发挥作用?

CA如何提供CT日志证明?

日志、浏览器和CA对证书透明度(CT)的支持情况如何?

代码签名信任

什么是代码签名?

什么是代码签名证书?

有哪些不同类型的代码签名证书?

PKI在代码签名中发挥什么作用?

我们是否能实现代码签名的自动化?

什么是代码签名最佳实践?

什么是用于CI/CD的持续代码签名?

什么是用于DevSecOps的持续代码签名?

如何创建并实施有效的代码签名策略?

如何购买代码签名证书?

合规

什么是合规?

什么是证书颁发机构(CA)?

什么是公认标准委员会X9(ASC X9)和国际标准化组织(ISO)?

什么是证书颁发机构/浏览器论坛(CA/B论坛)?

什么是互联网工程任务组(IETF)?

什么是美国国家标准与技术研究所(NIST)?

什么是美国国家网络安全卓越中心(NCCoE)?

加密

什么是加密或加密算法?

什么是公钥加密?

什么是SSL加密?

什么是公钥加密算法?

什么是RSA加密?

什么是椭圆曲线加密?

什么是预共享密钥加密算法?

公钥/私钥对如何发挥作用?

什么是后量子加密?

域名系统

什么是DNS?

DNS查找如何发挥作用?

什么是DNS记录?

我的IP地址是什么?

递归DNS和权威DNS之间有什么区别?

什么是主DNS?

什么是动态DNS?

什么是DNS传播?

什么是TLD?

什么是TTL?

什么是TXT记录?

什么是MX记录?

如何刷新DNS缓存?

电子邮件信任

什么是Verified Mark Certificate(VMC)?

获取Verified Mark Certificate(VMC)需要哪些步骤?

什么是DMARC?

什么是BIMI,为什么它很重要?

什么是S/MIME或加密电子邮件?

什么是客户端证书?

身份与访问信任

什么是身份信任?

企业每天如何使用PKI?

什么是私有PKI与公共PKI?

有关安全性和信任的行业标准

什么是Open Connectivity Foundation(OCF)?

什么是PCI SSC?

AeroMAC和WiMax如何使用PKI来确保信任?

CableLabs如何使用PKI来确保信任?

公共接口Plus如何使用PKI来确保信任?

什么是SAE?

什么是美国国家紧急号码协会?

什么是USB Implementers Forum?

什么是WInnForum?

什么是ZigBee Alliance?

什么是Project CHIP?

IoT/设备信任

什么是物联网(IoT)?

什么是IoT设备身份生命周期管理?

什么是DigiCert IoT Trust Manager?

为什么IoT设备管理很重要?

与信任相关的市场趋势

公共信任与证书

什么是SSL?

什么是数字证书?

什么是扩展验证(EV)SSL证书?

什么是通配符证书?

什么是合格证书?

什么是Verified Mark Certificate(VMC)?

TLS/SSL证书的验证方法是什么?

TLS/SSL证书的有效期有多长?

什么是网站签章或信任标记?

什么是CT日志?

如何订购TLS/SSL证书?

如何安装TLS/SSL证书?

如何续订TLS/SSL证书?

什么是TLS/SSL握手?

客户端证书与服务器证书之间有什么区别?

DigiCert TLS/SSL证书是否与我的浏览器兼容?

什么是多域名(SAN)证书?

什么是DigiCert 30天退款保证?

教育机构使用哪种类型的SSL证书?

安全签名

什么是电子签名?

什么是数字签名?

电子签名和数字签名有什么区别?

数字签名的保障级别是什么?

我需要哪种类型的数字签名?

什么是电子印章或eSeal?

什么是电子时间戳?

如何验证我的身份以签署文档?

什么是eIDAS?

什么是合格电子签名?

哪些行业受益于安全签名?

什么是欧洲技术标准协会(ETSI)?

什么是信任服务提供商?

什么是云签名联盟?

什么是身份验证?

DigiCert是否能与Adobe配合使用?

SHA-2

为什么要迁移至SHA-2 TLS/SSL证书?

将SHA-1证书迁移至SHA-2哈希算法

SHA-2是否存在兼容性问题?

SHA-2常见问题与解答

信任与PKI

什么是数字信任?

什么是公共信任?

什么是托管PKI?

PKI证书有哪些类型?

PKI证书验证流程是什么?

为什么PKI很重要,它如何增强信任?

什么是数字证书,为什么数字证书很重要?

DigiCert数字证书是否适用于我的服务器?

什么是PKI即服务?

漏洞管理

什么是加密灵活性?

什么是Always on SSL(AOSSL)?

什么是漏洞评估扫描?

什么是PCI扫描服务?

什么是阻止列表检查?

什么是证书自动化?

什么是证书发现服务?

病毒、蠕虫和特洛伊木马程序之间的区别是什么?

什么是恶意软件、病毒、间谍软件和Cookie?

什么是HTTPS无处不在?

什么是数字签名?

数字签名使用公钥基础设施(PKI)技术将信任服务提供商(TSP)颁发的数字签名证书加密绑定到文档。数字签名验证签名者身份和文档完整性,提供更高级别的保障,即签名者的身份是真实的而且文档未被更改。对于需要更高安全级别的交易,数字签名是理想选择,而且数字签名在某些国家和地区是必不可少的,企业必须在这些国家和地区遵守相关法规,例如欧盟的eIDAS和瑞士的ZertES。在一些国家,某些形式的数字签名具有等同于手写签名的法律效力。

DigiCert® Document Trust Manager提供符合欧盟eIDAS和瑞士ZertES签名法以及世界各地其他签名法的安全、受信任的数字签名。了解有关国家/地区法规的更多信息

数字签名如何发挥作用?

数字签名建立在多个安全和治理层之上。签名通过在整个文档或消息中应用数学算法或哈希函数及时间戳而生成,之后使用公钥加密方法进行加密。此方法使用一对加密密钥,即公钥和私钥来进行加密和解密。签名者使用其私钥加密哈希,而阅读者使用签名者的公钥解密哈希。密钥的安全性与分发、对签名者身份的证明或验证、提供身份验证的第三方(证书颁发机构)以及签名的信任级别由公钥基础设施(PKI)所管理,公钥基础设施是一种广泛用于保护互联网上的交易和通信的方法。

为什么我需要用于数字签名的证书?

证书由受信任的服务提供商(TSP)和/或DigiCert等证书颁发机构颁发。此证书用于促进身份保障与加密,并提供两个实体之间的安全通信。证书由电子文档组成,此文档将签名者的数据及签名的验证链接到自然人或组织的明确身份。

用于数字签名的证书主要有两种类型:Adobe Approved Trust List (AATL)证书与合格证书。这两类证书之间的主要区别在于谁获得了颁发证书的认证。Adobe批准的受信任的服务提供商(TSP)颁发AATL证书,而只有合格信任服务提供商(QTSP)才能颁发合格证书。TSP不需要独立审计,也未被列入欧盟信任清单,而QTSP由国家确定的提供认证的监督机构所控制。QTSP还可以提供以下信任服务:

电子签名

电子印章

电子时间戳

电子注册递送服务

网站身份验证证书

最受信任的高保障度TLS/SSL、PKI、IoT 与签名解决方案的全球提供商。 

相关资源

公共关系/新闻

博客

媒体库

什么是PKI?

什么是SSL, TLS和HTTPS?

公司

简介

人才招聘

活动

领导团队

历史

联系我们

我的账户

知识库

文档

支持

开发人员

常见问题与解答

所有产品

更改日志

网站签章

解决方案

自动化解决方案

ServiceNow解决方案

加密解决方案

CI/CD解决方案

安全电子邮件解决方案

代码解决方案

设备解决方案

文档解决方案

CI-Plus解决方案

版权所有©2023 DigiCert,Inc.。保留所有权利。

法律知识库

WebTrust审核

使用条款

隐私政策

辅助功能

Cookie设置

什么是数字签名?

什么是数字签名?跳到内容

菜单

菜单首页安保行业购物商业网络托管VPN硬件显卡主机板中央处理器什么是数字签名?2023 年 9 月 20 日2023 年 9 月 19 日 by 亚洲信息安全在 X 上分享(推特)

在脸书上分享

分享到LinkedIn

分享到Pinterest的什么是数字签名? 数字签名是电子签名的加密实现。 借助数字签名,可以对电子文档进行数字签名。 目的是毫无疑问地证明签名者的身份并确保电子消息的完整性。数字签名使用基于私钥和公钥的加密过程。 它可以代替纸质文档的手写签名。在我们的数字互联世界中,安全可靠的电子通信的重要性怎么强调都不为过。 实现这种安全级别的基本技术之一是数字签名。在本次讨论中,我们将深入探讨数字签名的重要性并探讨它们的工作原理。内容什么是数字签名?数字签名如何工作?创建数字签名附上签名传输收件人验证使用公钥数字签名的关键组成部分数字签名的好处确保数据完整性防止未经授权的访问不可否认性:无法拒绝发送简化文档工作流程减少文书工作和手动流程增强文档安全性数字签名与电子签名有何不同电子签名(eSignatures)数字签名法律有效性和合规性常见用例商业合同和协议政府文件和法规医疗记录和 HIPAA 合规性创建数字签名数字签名证书使用签名创建软件确保安全和信任公钥和私钥证书颁发机构 (CA)法律方面和法规美国的电子签名法欧洲的 eIDAS 监管数字签名的未来趋势区块链和数字签名增强安全性和信任度智能合同跨境交易远程和移动签名更大的可及性移动优先方法生物特征认证与其他技术的集成常见问题解答数字签名与电子签名相同吗?数字签名和手写签名之间的主要区别是什么?如何创建供个人使用的数字签名?数字签名在全球范围内得到法律认可吗?证书颁发机构 (CA) 在数字签名中扮演什么角色?数字签名可以用于医疗保健中的患者记录吗?数字签名是否存在任何安全风险?区块链和数字签名如何协同工作以提高安全性?我可以在移动设备上使用数字签名进行文档签名吗?数字签名在技术领域未来的潜在应用是什么?什么是数字签名?数字签名是用于验证数字领域中数字文档、消息或交易的真实性和完整性的加密技术。 它们相当于物理文档上的手写签名或盖章的电子版本。  什么是多重身份验证(MFA)?然而,数字签名提供了更高的安全性,并且可以应用于各种类型的数字内容,包括电子邮件、合同、软件等。数字签名如何工作?数字签名依靠复杂的数学算法为文档或消息创建唯一标识符,通常称为“签名”。该签名是使用只有发件人知道的私钥生成的,并附加到文档中。然后,接收者可以使用发送者的公钥(广泛使用)来验证签名的真实性并确保文档在传输过程中没有被篡改。创建数字签名发送者的软件获取文档或消息并使用其私钥计算唯一的数字签名。该签名通常是固定长度,与文档的大小无关。附上签名数字签名附加到文档或消息中,通常位于单独的文件中或文档的元数据中。传输已签名的文件将发送给收件人。收件人验证收件人收到文档以及附加的数字签名。使用公钥接收者的软件使用发送者的公钥(公开的)来验证数字签名。如果签名与文档匹配并且公钥成功解密,则该文档被认为是真实的且未被更改。数字签名的关键组成部分私钥:这是仅由发送者持有的秘密加密密钥。 它用于创建数字签名。公钥:这是一个广泛可用的相应密钥,任何人都可以使用它来验证发送者的数字签名。哈希函数:哈希函数用于从文档或消息创建固定长度的字符串。 该散列是文档内容的唯一表示。数字签名证书:有时,数字签名与受信任的第三方(称为证书颁发机构 (CA))颁发的数字证书相关联。 该证书为发件人的身份提供了额外的保证。数字签名的好处确保数据完整性数字签名提供了一种强大的机制,用于验证文档或消息的内容在传输过程中没有被更改。 签名后对文档进行的任何更改都将导致验证失败,从而提醒收件人潜在的篡改。  什么是证书颁发机构 (CA)?防止未经授权的访问数字签名不仅可以确保数据的完整性,还可以防止未经授权的访问。 创建数字签名所需的私钥通常由合法所有者持有,这使得其他人很难在未经授权的情况下签署或修改文档。不可否认性:无法拒绝发送数字签名提供不可否认性,这意味着发件人无法否认发送了文档。 由于私钥对于发送者来说是唯一的并且是签名所必需的,因此它证明了发送者的参与和责任。简化文档工作流程数字签名可以简化并加快个人和商业环境中与文档相关的流程。 它们减少了对实物文书工作和人工处理的需求,从而提高了效率。减少文书工作和手动流程数字签名消除了打印、签名、扫描或物理邮寄文档的需要。 这不仅节省了时间和资源,还减少了与纸张使用相关的环境影响。增强文档安全性数字签名通过确保只有授权个人才能签署文档来增强文档安全性。 它们还降低了文档在运输过程中丢失或被篡改的风险,因为数字文件本质上比物理文件更安全。数字签名与电子签名有何不同电子签名(eSignatures)电子签名包含更广泛的用于以电子方式表示同意或批准的方法。它们可以包括多种方法,例如在电子邮件中输入您的姓名、单击“我同意”按钮或在触摸屏上使用生物识别签名。电子签名通常更容易实现,并且可能并不总是涉及高级加密技术。法律有效性和合规性可能因司法管辖区和所使用的具体方法而异。数字签名数字签名是电子签名的特定子集,它依靠加密技术为文档创建唯一且安全的标识符。与其他电子签名方法相比,它们提供更高级别的安全性和保证。数字签名通常与特定的法律框架和合规标准相关联(例如欧洲的 eIDAS、美国的 UETA 和 ESIGN Act),使其在法律和商业目的上得到更广泛的接受。  什么是 FIDO2(在线快速身份识别)? 彻底改变在线身份验证法律有效性和合规性数字签名由于使用加密并遵守特定标准,通常具有更高级别的法律效力,并且在法律和法规合规性方面得到更广泛的认可。虽然电子签名对于许多目的都有效,但在某些情况下可能需要额外的证据或上下文来确定其真实性和法律地位。常见用例商业合同和协议数字签名广泛应用于商业领域,用于签署合同、协议和法律文件。 该应用程序简化了合同签署流程,减少了文书工作,并加速了交易完成。政府文件和法规政府机构利用数字签名来签署和验证重要文件、法规、许可证和执照。 这增强了文档安全性、减少欺诈并确保符合法规要求。医疗记录和 HIPAA 合规性在医疗保健领域,数字签名在保护患者记录和确保遵守《健康保险流通与责任法案》方面发挥着至关重要的作用(HIPAA)。 医疗保健专业人员使用数字签名来签署医疗记录、处方和同意书,维护患者隐私和数据完整性。创建数字签名数字签名证书数字签名证书是由受信任的证书颁发机构 (CA) 颁发的数字身份。 它将个人或实体的身份与其公钥相关联,提供更高级别的信任和安全性。从公认的 CA 获取数字签名证书。在您的计算机或设备上安装证书。使用支持数字签名的软件来签署文档。当您签署文档时,证书的私钥用于创建数字签名。收件人可以使用与您的证书关联的公钥来验证签名。使用签名创建软件个人和组织还可以使用专门的软件创建数字签名,而无需数字签名证书。在您的计算机或设备上安装数字签名软件。使用该软件生成一对加密密钥(公钥和私钥)。签署文档时,软件使用您的私钥来创建数字签名。要验证签名,收件人应该有权访问您的公钥,该公钥可以通过电子邮件、安全网站或其他方法共享。确保安全和信任安全性和信任是数字签名的基本方面。 在此背景下,两个关键组件发挥着关键作用:公钥和私钥以及证书颁发机构 (CA)。公钥和私钥公钥和私钥是数字签名和加密的核心。 它们是用于创建和验证数字签名的加密密钥。私钥:该密钥保密,只有所有者知道。 它用于创建数字签名,确保只有所有者才能签署文档。公钥:该密钥是公开可用的,用于验证数字签名。 当某人收到数字签名的文档时,他们使用发件人的公钥来检查签名的真实性。  什么是 CCMP?该密钥对的安全性至关重要。 如果私钥遭到泄露,攻击者可能会创建欺诈性数字签名,从而可能导致安全漏洞和信任丧失。证书颁发机构 (CA)证书颁发机构是颁发数字证书的受信任的第三方实体。 这些证书将个人或组织的身份与其公钥联系起来。CA 验证证书持有者的身份,确保他们就是他们所声称的人。 此过程通常涉及严格的身份检查。一旦验证通过,CA 就会颁发数字证书,其中包括公钥和其他相关信息。CA 在建立数字签名信任方面发挥着至关重要的作用。 如果数字签名带有由信誉良好的 CA 颁发的有效数字证书,则用户可以信任该数字签名。知名 CA 遵守严格的安全协议来保护其基础设施并确保所颁发证书的完整性。法律方面和法规数字签名受法律法规和标准的约束,以确保其有效性和可执行性。 与数字签名相关的两个重要法律方面和法规是美国的《电子签名法案》和欧洲的《eIDAS 法规》。美国的电子签名法《全球和国家商务电子签名 (E-Sign) 法案》是 2000 年颁布的美国联邦法律。《电子签名法》确保了大多数商业和消费者交易中电子签名(包括数字签名)的法律有效性和可执行性。它允许电子记录和签名与纸质记录和签名具有相同的法律地位,前提是满足某些要求,例如同意和记录保留。但是,《电子签名法》不适用于特定类型的文件,例如遗嘱和某些法庭记录,这些文件可能有额外的要求。欧洲的 eIDAS 监管电子识别、身份验证和信任服务 (eIDAS) 法规是一项于 2016 年生效的欧盟法规。eIDAS 在欧盟成员国内建立了电子识别、信任服务和数字签名的框架。它承认电子签名(包括数字签名)在整个欧盟的法律有效性,并促进跨境认可。eIDAS 定义了不同级别的电子签名,其中数字签名(高级和合格)是最高级别,提供最高级别的信任和法律效力。eIDAS 下的合格数字签名与手写签名具有同等法律效力,可作为法律诉讼中的证据。  什么是威胁情报服务?数字签名的未来趋势随着技术的不断进步,数字签名也在不断发展,以满足企业和个人不断变化的需求。 塑造数字签名未来的两个重要趋势是区块链集成以及远程和移动签名的增长。区块链和数字签名增强安全性和信任度区块链技术以其不变性和分散性而闻名,正在与数字签名相集成,以增强电子交易的安全性和信任度。 应用于文档的数字签名可以记录在区块链上,从而创建不可变且防篡改的审计跟踪。这确保了签名文件的完整性并提供透明的交易历史记录。智能合同智能合约是自动执行的合约,其条款直接写入代码中,通常需要数字签名才能达成协议。 这些智能合约可以部署在区块链平台上,从而实现合同义务的自动化和安全执行。跨境交易基于区块链的数字签名有可能通过提供全球认可的安全方法来验证文件和协议,从而简化和加快跨境交易。远程和移动签名更大的可及性由于对灵活性和便利性的需求,对远程和移动签名的需求正在上升。 远程签名允许个人和组织从任何地方签署文档,减少面对面交互和文书工作的需要。移动优先方法移动设备正在成为访问和签署文档的主要方式。 移动签名应用程序和平台旨在为在智能手机和平板电脑上签署文档提供无缝且用户友好的体验。生物特征认证移动设备通常具有生物特征认证方法,例如指纹识别和面部识别。 这些技术通过确保在应用数字签名之前验证签名者的身份来增强移动签名的安全性。与其他技术的集成远程和移动签名通常与云存储、协作工具和工作流程自动化系统等其他技术集成,进一步简化文档工作流程。  什么是灾难恢复即服务 (DRaaS)?常见问题解答数字签名与电子签名相同吗?不,它们不一样。 电子签名是一个更广泛的类别,包括以电子方式表示同意或批准的各种方法。 数字签名是电子签名的特定子集,它使用加密技术来确保文档的真实性和完整性。数字签名和手写签名之间的主要区别是什么?数字签名是签名的加密表示形式,可提供更高级别的安全性并可应用于数字文档。 手写签名是在纸质文档上手工创建的物理签名。 数字签名提供更高的安全性,可用于电子交易。如何创建供个人使用的数字签名?您可以使用数字签名创建软件创建个人数字签名。 该软件生成一对加密密钥(公钥和私钥),您可以使用它们来签署数字文档。 或者,您可以从受信任的证书颁发机构 (CA) 获取数字签名证书。数字签名在全球范围内得到法律认可吗?数字签名法律和法规因国家/地区而异。 在许多国家,数字签名被法律认可用于各种目的,特别是在商业交易中。 数字签名的认可和法律有效性可能取决于当地法律和所应用的安全级别。证书颁发机构 (CA) 在数字签名中扮演什么角色?证书颁发机构是颁发数字证书、将个人或实体的身份与其公钥联系起来的受信任的第三方实体。 CA 验证身份、颁发数字证书,并在建立数字签名信任方面发挥着至关重要的作用。数字签名可以用于医疗保健中的患者记录吗?是的,数字签名通常用于医疗保健领域来签署和保护患者记录、处方、同意书和其他医疗文件。 它们有助于维护患者隐私、数据完整性以及遵守 HIPAA(美国)等法规。数字签名是否存在任何安全风险?虽然数字签名提供了强大的安全性,但如果私钥被泄露,就会出现风险,导致欺诈性签名。 为了降低风险,保护私钥并遵循安全数字签名实施的最佳实践非常重要。区块链和数字签名如何协同工作以提高安全性?区块链技术可以通过提供不可变且防篡改的分类账来记录签名文档来增强数字签名的安全性。 这确保了交易的完整性和透明度,使得签名文件难以更改或产生争议。我可以在移动设备上使用数字签名进行文档签名吗?是的,许多数字签名解决方案提供移动应用程序,允许您使用智能手机或平板电脑签署文档。 这些应用程序通常包含生物识别身份验证以提高安全性。数字签名在技术领域未来的潜在应用是什么?数字签名的未来可能包括与人工智能 (AI)、物联网 (IoT) 和量子密码学等新兴技术的进一步集成。 此外,数字签名可能在安全身份管理和身份验证系统中发挥重要作用。总之,数字签名是确保数字世界信任和安全的关键工具。 通过了解它们的原理、优点和未来潜力,您可以做出明智的决策,以增强您的个人或企业数字签名实践。亚洲信息安全亚洲信息安全是各个领域最新网络安全和技术新闻的首选网站。 我们的专家撰稿人提供值得您信赖的见解和分析,帮助您保持领先地位并保护您的业务。 无论您是小型企业、企业甚至政府机构,我们都能提供有关网络安全各个方面的最新更新和建议。在 X 上分享(推特)

在脸书上分享

分享到LinkedIn

分享到Pinterest的分类目录 安保行业AMD Radeon RX 6700 XT:1440p 游戏爱好者的完美选择什么是鱼叉式网络钓鱼?亚洲信息安全地址: 119 武吉巴督西大街 6, 119 座, 新加坡 650119电话:8906 7707公司简介隐私政策服务条款联系我们讲师讯息2024© 亚洲信息安全---我们的网站参与了 Amazon Services LLC 联营计划,这是一项联属广告计划,旨在为网站提供一种通过广告和链接到 Amazon.com 来赚取广告费的方式。 作为该计划的一部分,当您通过我们的联属链接进行购买时,我们可能会赚取佣金