深入浅出密码学(下)

前言

在之前的文章《深入浅出密码学(上)》与《深入浅出密码学(中)》,笔者为大家介绍了密码学中的加密、单向散列函数与消息认证码的概念与应用。这里带大家简单回顾一下,在网络通信中,消息存在被窃听的风险,因此我们需要对消息进行加密来防止消息被窃听。而如果我们需要保证消息的完整性或一致性,则可以使用单向散列函数。而单向散列函数的局限性是无法对通信双方进行认证,即无法证明某条消息是某个人发出的,因此我们还需要消息认证码来解决消息认证的问题。然而消息认证码仍然不是十全十美的,其无法解决“否认”的问题,即仅仅使用消息认证码存在“抵赖”的风险。那么有什么方法来弥补消息认证码的缺点呢?下文将为大家揭晓答案。

数字签名

在《深入浅出密码学(中)》一文中,我们知道消息认证码之所以无法防止否认,其原因是在消息认证码的使用过程中需要使用到共享密钥。因此如果要防止否认,那么可以考虑不使用共享密钥的其他方式对消息进行认证,而数字签名就是这样一种消息认证方式。

数字签名的使用过程中主要涉及以下两种行为:

  1. 生成消息签名
  2. 验证消息签名

生成消息签名由消息发送者完成,验证消息签名一般由消息接接收者完成,如果消息签名验证通过则可证明消息是由可信的发送方发送的。数字签名之所以可以防止否认,是因为生成消息签名跟验证消息签名是使用不同的密钥来完成的。消息发送者使用“签名密钥”对消息进行签名,消息接收者使用“验证密钥”对消息进行验证,且签名阶段只能使用“签名密钥”无法使用“验证密钥”进行签名。此外“签名密钥”只能由消息发送者持有,不可泄露,而“验证密钥”则是公开的,任何需要对消息进行认证的人都能获取到。

大家有没有觉得数字签名与之前谈到的非对称加密有点类似呢?实际上,数字签名可以看成是把非对称加密“反过来用”。非对称密钥是消息发送者使用公钥进行加密,消息接收者使用私钥进行解密。而数字签名是消息发送者使用私钥生成签名,而消息接收者使用公钥对签名进行验证。两者的区别见下表:

私钥

公钥

非对称加密

接收者解密时使用

发送者加密时使用

数字签名

发送者生成签名时使用

接收者验证签名时使用

数字签名的使用方式

加下来介绍下数字签名的使用方式,一般有如下两种使用方式:

  1. 直接对消息进行签名
  2. 对消息的散列值进行签名

由于在通信的过程中,消息的体积可能非常大,如果直接对消息进行签名的话会非常耗时,所以在实际中用的比较多的还是对消息的散列值进行签名,在这里我们也只详细介绍对消息的散列值进行签名这种方式。以下是对消息的散列值进行签名和验证的过程:

因为数字签名中生成签名跟验证签名使用的是不同的密钥,因此数字签名可以防止否认,同时也能识别篡改,因为即使消息被修改了1比特,其计算出来的签名也会相差很大。再者,由于数字签名不需要共享密钥,因此也不存在密钥的配送问题。然而要使用数字签名还有一个前提条件就是,必须验证公钥的持有者确实是属于消息的发送者。即使数字签名再强大,如果你得到的公钥是伪造的,那么数字签名也会完成失效。而为了确保公钥确实是由消息的发送者发布的,则可以使用证书。有兴趣的朋友自己查资料进行深入了解。

关于密码学的基础知识就介绍到这里了。

原文发布于微信公众号 - 编程沉思录(code-thinker)

原文发表时间:2018-02-16

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏网络

从https的演进到burpsuite抓包的漫谈

开始先抛出一下三个问题: 网站登录用户名密码明文传输,改用https协议是否能解决这个问题? 那为什么我采用https了通过burp还是可以看到明文密码? 如果...

3478
来自专栏Janti

PKI信息安全知识点详细解答包含HTTPS

1. 什么是X.509? X.509标准是ITU-T设计的PKI标准,他是为了解决X.500目录中的身份鉴别和访问控制问题设计的。 2. 数字证书 数字证书的意...

3797
来自专栏IT笔记

支付宝支付密钥RSA1升级到RSA2

支付宝作为国内第一的第三方支付平台,安全的重要性不言而喻了,下面主要对密钥做一个简单的介绍和升级流程。

5373
来自专栏信安之路

HTTPS攻击原理与防御

超文本传输安全协议( HTTPS )是一种通过计算机网络进行安全通信的传输协议。HTTPS 经由 HTTP 进行通信,但利用 SSL/TLS 来加密数据包。 H...

1120
来自专栏苦逼的码农

【漫画】https 加密那点事

在每次发送真实数据之前,服务器先生成一把密钥,然后先把密钥传输给客户端。之后服务器给客户端发送真实数据的时候,会用这把密钥对数据进行加密,客户端收到加密数据之后...

2423
来自专栏北京马哥教育

浅谈Openssl与私有CA搭建

随着网络技术的发展、internet的全球化,信息共享程度被进一步提高,各种基于互联网的应用如电子政务、电子商务日益增多并愈加被人们工作和生活依赖。但是,由于...

3868
来自专栏曹丰斌的专栏

HTTPS 原理浅析及其在 Android 中的使用

本文首先分析HTTP协议在安全性上的不足,进而阐述HTTPS实现安全通信的关键技术点和原理。然后通过抓包分析HTTPS协议的握手以及通信过程。最后总结一下自己在...

3.6K0
来自专栏CDN及云技术分享

keyless原理

ssl协议是基于密码学的基础上,解决通信双方加密信道和身份鉴权的安全问题。ssl协议的算法本身是公开的,但是算法本身的输入参数(key)是由通信双方私自保存。在...

1.3K39
来自专栏白驹过隙

OpenSSL - 利用OpenSSL自签证书和CA颁发证书

48917
来自专栏JavaEdge

WCF认证:X.509证书1 非对称密码学(Asymmetric Cryptography)二、数字证书三、通过凭证三个属性来分析X.509证书

站在消息交换的角度,密码学就是帮助我们实现对整个消息或者对消息的某个部分进行数字签名和加密的理论和方法

1291

扫码关注云+社区

领取腾讯云代金券