专栏首页安智客密码技术之数字签名

密码技术之数字签名

前面我们总结过:

密码技术之消息认证码

密码技术之单向散列函数

我们知道,散列函数解决了消息的完整性防止篡改,消息认证码解决的是消息发送者是否被伪装的问题,但是消息的防抵赖性如何保证呢?因为发送接收双方都共享一个密钥,因为对于第三方来说,无法防止信息发送者的否认!那怎么办呢?引出本节主题:数字签名。

数字签名用一句话来说,只有用你自己独一无二的别人不知道的密钥签名,代表了一种只有持有该密钥的人才能够生成的信息,才能防抵赖。甲发送信息的时候用自己的私钥进行签名,乙接收信息的时候用甲的公钥进行验证,这就是数字签名。公钥密码和数字签名的密钥使用如下:

私钥

公钥

公钥密码

接收者解密时使用

发送者加密时使用

数字签名

签名者生成签名时使用

验证者验证签名时使用

密钥在哪?

私有

公开

数字签名的方法有直接对消息签名的方法和对消息散列值签名的方法。因为对整个消息进行签名效率低下,特别是公钥密码算法计算效率不高,实际使用后者,也就是对消息的散列值进行签名。因为前面说过,单向散列函数能对无论多长的消息生成固定的散列值,因此对其签名效率很高。

数字签名不能保证消息机密性!

数字签名的作用本来就不是信息机密性的保证,有一种攻击“请对消息签名”等同于“请解密消息“,我们要记住,绝对不要对意思不清楚的消息进行签名,从签名的目的来说,这一点应该是理所当然的,因为谁也不会在自己看不懂的合同上签字盖章!

数字签名可以随意复制吗?

数字签名可以随意复制。签名可以复制并不意味着签名就没有意义,因为签名表达的意义是特定的签名者对特定的消息进行的签名,即使被复制也并不会改变签名者和消息的内容。无论将签名复制了多少份,都不会改变“是谁对这条消息进行了签名”这一事实!

消息内容会不会被修改?

数字签名是识别消息被修改并不防止被修改,修改后,验证签名失败。

签名会不会被重复利用?

不会,数字签名是消息和签名相对应,将签名部分提取出来附加到别的消息后面,验证签名会失败。

删除签名也无法“作废合同”吗?

的确,删除了带有数字签名的借据也无法保证确实已经作废,因为你不知道是否还保留有副本,那么要作废带有数字签名的借据,可以重新创建一份相当于收据的文书,并让对方在这份文书上数字签名。或者在消息中声明该消息的有效期并加上数字签名,证书部分内容就是如此。

数字签名能够替代签名吗?

当然,我国《中华人民共和国电子签名法》,美国也有E-SIGN法案,日本有《电子签名及其认证业务的相关法律》,这些法律为将电子手段实现的签名与手写的签名和盖章同等处理提供了法律基础。

数字签名的应用实例

安全信息公告,比如一些信息安全组织会发布一些漏洞警告,通过数字签名确认是否是该组织发布的漏洞。

比如软件下载能够检测软件是否被篡改。

以及在公钥证书中,我们要获取合法的公钥,使用公钥+数字签名,后面会介绍。

SSL/TLS服务器认证时也会用到。

对数字签名的攻击

除了之前介绍的利用数字签名攻击公钥密码之外,对单向散列函数的攻击,以及中间人攻击。

中间人攻击,就是对发送者伪装成接收者,对接收者伪装成发送者,如何对公钥进行认证,这就引出即将介绍的“证书”。

潜在伪造:在用RSA来解密的数字签名算法中,潜在伪造时可能的,用随机比特序列S用RSA的公钥进行加密生成密文M,那么S就是M的合法数字签名,由于攻击者是可以获取公钥的,因此对数字签名进行潜在伪造就可以实现了。为了应对人们改进成了RSA-PSS签名算法。

数字签名可以识别出篡改和伪装还可以防止否认,然而,这一切是在一个大前提下的,那就是用于验证签名的公钥必须属于真正的发送者。为了确认自己得到的公钥是否合法,我们需要使用证书。

所谓证书,就是将公钥当成一条消息,由一个可信的第三方对其签名后所得到的公钥。为了对证书施加的数字签名进行验证,我们必定需要另一个公钥,那么如何才能构筑一个可信的数字签名链条呢?又由谁来颁发可信的证书呢?我们必须用社会学的领域思考,需要让公钥及其数字签名技术成为一种社会性的基础设施,也就是PKI公钥基础设施。

本文分享自微信公众号 - 安智客(china_safer)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-06-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 五分钟掌握PKI核心原理!

    公开密钥基础设施( PKI, Public Key Infrastructure )逐步在国内外得到广泛应用。我们是否真的需要 PKI , PKI 究竟有什么用...

    安智客
  • Android 8.0 中的安全增强功能

    每个 Android 版本中都包含数十种用于保护用户的安全增强功能。以下是 Android 8.0 中提供的一些主要安全增强功能: 加密:在工作资料中增加了对...

    安智客
  • 云计算、雾计算、边缘计算、霾计算、海计算......

    我们都很熟悉云计算,一种利用网络实现随时随地、按需、便捷地使用共享计算设施、存储设备、应用程序等资源的计算模式。比如大家熟知云计算系统由云平台、云存储、云终端、...

    安智客
  • 数字签名

    之前的文章我们讲了MAC(Message Authentication Code)消息认证码,MAC是认证消息的完整性的技术。它是由任意长度的消息和在发送者和接...

    程序那些事
  • 面试官问:能否模拟实现JS的call和apply方法

    之前写过两篇《面试官问:能否模拟实现JS的new操作符》和《面试官问:能否模拟实现JS的bind方法》

    lucifer210
  • Redux

    MVC中,数据(Model)、表现层(View)、逻辑(Controller)之间有明确的界限,但数据流是双向的,在大型应用中尤其明显。一个变化(用户输入或者内...

    ayqy贾杰
  • 速读原著-TCP/IP(UDP服务器的设计)

    使用U D P的一些蕴含对于设计和实现服务器会产生影响。通常,客户端的设计和实现比服务器端的要容易一些,这就是我们为什么要讨论服务器的设计,而不是讨论客户端的设...

    cwl_java
  • 【关关的刷题日记59】Leetcode 257 Binary Tree Paths

    关关的刷题日记59 – Leetcode 257 Binary Tree Paths 题目 ? 题目要求我们给出所有根节点到叶子节点的路径。 思路 思路:求一棵...

    WZEARW
  • 2019年中秋节假期文化和旅游市场情况

    ? 2019年中秋节期间,各地文化和旅游产品供给充足,民俗活动丰富多彩,假期市场安全平稳有序。 综合各地旅游部门、通讯运营商、线上旅行服务商数据,经文化和旅游...

    腾讯文旅
  • 给微信头像加V,你也是大V啦

    哈喽各位大佬好,相信有小伙伴看过微信头像加V的头像出现在你的好友列表里面。你想不想给你独一无二的头像加V呢。制作方法是很简单的哈,一个网站就可以搞定。

    IT小侠公社

扫码关注云+社区

领取腾讯云代金券