【翻译】数字签名是什么?

前情提要

在写上一篇《Android Keystore漫谈》时对数字证书和数字签名的区别感觉模棱两可,于是网上找了找资料发现了一篇简单易懂的文章,对证书和签名有了一个较清晰的概念:

数字签名: 信息实体经HASH函数后得到一个摘要,摘要经过私钥加密后形成数字签名。 数字证书: 证书中心的信息+个人的信息+个人的公钥,经过证书中心的私钥加密后,得到数字证书。

虽然CSDN博客上已经有人对这篇文章翻译过,但是感觉还是有必要自己翻译一遍,一来作为备份,二来也希望可以为用户们认识数字签名提供一个参考。

翻译内容

主标题:数字签名是什么? 副标题:数字签名的介绍 作者:David Youd 原文链接http://www.youdzone.com/signature.html 译文

Bob有两把钥匙,一把叫做公钥(公共密钥),另一把叫做私钥(私有密钥)。

Bob的公钥是可以给任何人的,但是私钥只能自己持有。密钥的作用是加密信息,加密信息意味着打乱信息,所以只有拿着密钥的人才可以解密这些加密的信息。公钥和私钥任意一个都可以用来加密,而另一个用于解密。比如:

Susan喜欢Bob,想约会Bob,给Bob写了一封信,并用Bob的公钥对信进行加密,Bob收到信后用私钥解密后就可以看到信的内容,于是准备约会。Bob完全不用担心信落到其他同事的手里,因为信是加密过的,没有私钥,是无法解读的。

Bob给Susan回信约好午餐的时间,但是担心回信在回寄过程中被篡改,于是采用数字签名的方式。数字签名相当于Bob的私人印章,是独一无二、不可以仿冒的,可以检查信的内容有没有被篡改。

那么这个数字签名是怎么签名的呢?Bob使用HASH算法对信的内容进行打乱,打乱后的内容称之为消息摘要(这一打乱的过程是不可逆的)。

消息摘要经过Bob的私钥加密就变成了数字签名

最后Bob将这个数字签名和信的内容放到了一起,然后发给了Susan。那么Susan怎么验证Bob的回信有没有被篡改过呢?首先Susan用Bob的公钥解密数字签名,形成了消息摘要A,然后通过HASH算法对信的原始内容进行打乱形成消息摘要B,如果两份信息摘要内容一致,说明信息没有被篡改过。

但是这时候Bob坏坏的基友Doug吃醋了,不想让他们的约会成功。 于是偷偷地使用Susan电脑将Bob的公钥掉包,导致Susan怀疑正确的信内容被篡改。

所幸Susan刚好在证书权威中心工作,她用Bob的信息、公钥以及证书中心的信息通过证书中心的私钥加密形成了一份数字证书

这样Bob再发送消息给其他人,只要附加上数字证书,收信人便可检查公钥是否被篡改以进行正确的解密。那么收件人如何确认公钥正确呢?

首先使用证书中心的公钥进行解密得到证书中心信息,查看证书中心是否是受信任的权威中心,然后检查证书中的个人信息是否是Bob的信息以确认证书中的公钥是否为Bob的公钥,当确认正确后可使用Bob的公钥进行信息完整性的验证。

写在最后

本来打算照着原文的原话进行翻译,但是翻译过程中发现以翻译的习惯来写这篇文章会让语言变得拗口,所以仅以半翻半掰的方式将翻译内容描述完整。关于数字证书有一个非常好的实例,便是https协议,在《数字签名与数字证书的区别》一文中有非常清晰的讲述。

参考

What is a Digital Signature? 数字签名与数字证书的区别

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏技术-分享

https介绍

假设A和B通过web进行通信,由于http是明文协议,双方发送的信息相当于在网上裸奔,双方的通信内容能够轻易的被窃听、篡改和冒充,因此,我们期望对通信加密。常见...

26540
来自专栏java一日一条

DES/3DES/AES 三种对称加密算法在 Java 中的实现

1)算法和数据结构就是编程的一个重要部分,你若失掉了算法和数据结构,你就把一切都失掉了。 2)编程就是算法和数据结构,算法和数据结构是编程的灵魂。

14820
来自专栏阮一峰的网络日志

密码学笔记

1. 加密方法可以分为两大类。一类是单钥加密(private key cryptography),还有一类叫做双钥加密(public key cryptogra...

34240
来自专栏Albert陈凯

2018-10-11 对称加密、非对称加密、Hash算法看完这篇文章加解密就别蒙了散列函数 加密算法

http://hongyitong.github.io/2016/07/18/%E5%AF%B9%E7%A7%B0%E5%8A%A0%E5%AF%86%E3%8...

30530
来自专栏jouypub

区块链之非对称加密算法

非对称加密,在现在网络应用中,有这非常广泛的场景,更是加密货币的基础。本文主要介绍非对称加密、解密的原理和过程,以及在区块链中的使用。

19910
来自专栏菩提树下的杨过

RxJava2学习笔记(3)

接上回继续,今天来学习下zip(打包)操作 一、zip操作 @Test public void zipTest() { Obse...

45160
来自专栏区块链

SSL证书的加密技术

根据密钥类型不同将现代密码技术分为两类:对称加密算法(秘密钥匙加密)和非对称加密算法(公开密钥加密)。对于对称性加密算法,信息接收双方都需事先知道密匙和加解密算...

24360
来自专栏V站

php中常用的Rc4/Des/AuthCode可逆加密函数

首先是AuthCode可逆加密函数,在dz论坛等各大程序的数据传输和登陆验证都有用到。

29650
来自专栏吴伟祥

加密 原

在日常设计及开发中,为确保数据传输和数据存储的安全,可通过特定的算法,将数据明文加密成复杂的密文。目前主流加密手段大致可分为单向加密和双向加密。

8530
来自专栏安恒网络空间安全讲武堂

学习分享 | Padding Oracle

0x00前言 之前写CBC翻转攻击的时候就在想什么时候能遇到Padding Oracle的题目hhhhh 想不到这么快就遇到了hhhhh ------- 0x0...

23880

扫码关注云+社区

领取腾讯云代金券