相关文章推荐
重感情的红茶  ·  男性权益- 知乎·  1 年前    · 
发呆的花生  ·  赵刀·  1 年前    · 

此次不深入源码、不分析原理、只厘清一些易混淆概念及其关联。
本次将从通信演变历史的角度出发,一步步阐述概念及其作用。
通过本篇文章,你将了解到:

1、明文通信
2、密文通信
3、对称加密
4、非对称加密
5、消息摘要
6、数字签名
7、CA与数字证书
8、总结

1、明文通信

大部分时候,咱们交流都是靠嘴对嘴,信息完全暴露在他人的耳朵里。
image.png

拉拉家常无关紧要,但要是涉及重要、私密的信息就不能这样子了。
此时可能想到,那我们就说悄悄话吧。
image.png

2、密文通信

悄悄话只能是俩人近距离才能实现,若是天各一方怎么才能将信息安全送给对方呢?
大家或多或少地看过谍战片,那会儿卧底如何将信息传给组织呢?答案是通过密码本。
image.png

双方约定好用一个密码本,密码本其实是个映射关系:

1、发送方通过密码本将明文信息转为不易被理解的信息,称为密文。
2、接收方接收到密文后,通过密码本映射关系反推出明文。

此时双方通信是经过加密的,我们称为密文通信。第三者想要破解信息,就需要拿到密码本或是破译出密码本映射关系,从而将密文转为明文。

3、对称加密

随着科学技术的发展,人们的交流由书信逐渐过渡为电子通信。
image.png

当我们在键盘上敲击一段文字后,这段信息会通过网络发送给对方,怎么保证这段信息不被别人轻易知道呢?
我们想到了加密,双方在传输信息前商量好一个密钥,发送方用密钥将信息进行加密形成密文后再发送,接收方在收到密文后使用之前协商的密钥进行解密。

因为加密明文、解密密文使用同一个密钥,我们称此种加密方式为对称加密方式。

举个简单例子:
image.png

小明现在将信息进行对称加密:

1、设定密钥为:X。
2、设定加密算法为:将每个字符+X。
3、假设采用密钥 X=1。

那么将明文hello,每个字符+1,得出如下结果:
hello—>ifmmp

小红拿到密文ifmmp后,她知道密钥X=1,因此她将密文每个字符-1,得出如下结果:
ifmmp—>hello

至此,小明和小红成功进行了交流。

此时小刚想知道小明和小红聊了啥,于是截获了信息:
image.png
但是由于小刚拿到的是密文信息:ifmmp。因为不知道密钥,因此无法反推出明文:hello。因此小明和小红的信息交流安全得到了保证。

当然对称加密算法没那么简单,常见的对称加密算法有如下几种:

1、DES(Data Encryption Standard) 数据加密标准,强度比较低,容易被破解,目前使用比较少。
2、3DES(TDEA,Triple Data Encryption Algorithm) 三重数据加密算法,是DES的增强版,对一块数据使用3个不同的密钥加密。
3、AES(Advanced Encryption Standard) 高级加密标准,当前主流的对称加密算法。
4、RC4 流加密算法,由Ron Rivest 大神设计的。
5、Blowfish 块加密算法,由Bruce Schneier 大神设计的。
6、SM4 分组密码算法,由我国设计并由国家密码管理局发布。

似乎使用对称加密就可以解决咱们通信安全问题,但引入了另一个问题:

是否有种方式可以光明正大地传递信息呢?
答案是:非对称加密。

1、非对称加密有两个密钥,一个是公钥(public key),另一个是私钥(private key)。
2、用公钥加密后的密文只能由私钥来解密。
3、用私钥加密后的密文只能由公钥来解密。
4、公钥可以公布出来供其他人使用,而私钥却是需要保密,不能被别人获取。

因加密与解密使用的不是同一个密钥,故此种公私钥加密方式称为:非对称加密。

接着来看看小明和小红如何使用非对称加密来实现安全通信。
小明和小红分别生成自己的公私钥:
image.png

1、小红将自己的公钥告诉小明。
2、小明使用小红的公钥加密后发送给小红。
3、小红使用自己的私钥来解密,得出明文。

由上可知,用小红的公钥加密的信息只能由小红的私钥解开,只要小红的私钥没有泄漏,那么小明和小红的通信是安全的。
当然了,真正非对称加密算法并没有那么简单,常见的几种非对称加密算法:

1、DSA(Digital Signature Algorithm)是 Schnorr 和 ElGamal 签名算法的变种。
2、ECC(Elliptic Curves Cryptography),椭圆曲线密码编码学。
3、DH算法,一般用于密钥交换。
4、RSA(Ron Rives,Adi Shamir,Leonard Adleman)三位大神一起提出的,命名取姓氏开头字母。RSA 既可以交换密钥,也可以用作数字签名,是流行最广的非对称加密算法。

5、消息摘要

小明和小红的通信真是安全的吗?
此时小刚又来搞事情了:

1、因为小红的公钥是公开的,意味着小刚也能拿到公钥。
2、小刚截获了小明发送给小红的信息,虽然小刚不能解密,但是他可以伪造信息。
3、小刚将伪造好的信息用小红的公钥发送小红。
4、此过程中,小明和小红都不知道小刚的存在,然而小刚背地里暗戳戳地替换了信息。

以上信息表明:

1、即使是密文,信息也容易被伪造。
2、小刚这种行为是中间人攻击(Man-in-the-MiddleAttack MITM)。

小明和小红一合计,想出来了一个办法:

1、小明使用Hash算法将明文进行哈希,生成消息摘要。
2、小明将明文用小红的公钥加密并和消息摘要一起发给小红。
3、小红收到信息后先用私钥解密,解密出来的明文使用Hash算法生成消息摘要,并与小明发过来的消息摘要对比,若是一致则表明消息没被更改。

消息摘要(Message Digest)特点:

1、通过消息摘要算法,将一组不定长的源信息生成定长的目标信息。
2、不同的源信息生成的目标信息不一致。

常见的消息摘要算法:MD5、SHA1。

6、数字签名

虽然采用了消息摘要,但是小刚依然能够自己伪造信息,并生成对应的消息摘要,小红收到后验证摘要是正确的,便认为是小明发的,这种做法还是有漏洞。
在前边用到了小红的公钥、私钥,而没用到小明的公钥、私钥。
在消息摘要的基础上,想办法让小明的公私钥也参与到通信过程中来:

1、小明将公钥告诉小红。
2、小明将消息摘要使用自己的私钥加密并使用小红的公钥加密明文,两者一并发给小红。
3、小红收到信息后先用自己的私钥解密出明文,然后将加密过后的消息摘要使用小明的公钥解密。
4、对比消息摘要是否一致。

与消息摘要过程对比,此时多了一个步骤:

用小明的私钥加密消息摘要。

用私钥加密的信息的过程我们称之为:数字签名
数字签名具有不可抵赖性的特点。根据前面的描述,用私钥加密的信息,只有对应的公钥才能解开。
因此,若是小红使用了小明的公钥解开了密文,那么说明该消息肯定是小明发过来的。反之,小明使用私钥加密后发出去,代表这信息是确认是自己发的,这就是他的签名。

常见的数字签名算法:RSA、DSA、ECDSA。
老规矩,用图来看看小明与小红如何使用数字签名的。

小明发送信息过程:
image.png

小红处理信息过程:
image.png

由上可知:
数字签名有两个作用:

1、证明消息是某个确定的实体发送的。
2、证明消息是没有被串改。

整个流程小明的公私钥、小红的公私钥都参与了。
因为小刚没有小明的私钥,所以他无法生成小明的数字签名,最终无法通过小红对数字签名的验证。

7、CA与数字证书

这么看来小刚是无能无能为力了?非也!
回顾一下之前说的对称加密的痛点:如何传递对称密钥?
实际上非对称加密也存在问题:如何传递公钥?
可见,无论是对称加密还是非对称加密都需要解决密钥传递问题。

若是小刚伪造了小红的公钥,情况如下:

1、小明在获取小红公钥的时候,被小刚替换为自己的公钥。
2、小明用小刚的公钥(他以为是小明的)对信息进行加密,并用自己的私钥对摘要做数字签名。
3、小刚收到信息后用自己的私钥解密。
4、小刚用小明的公钥加密,并用自己的私钥对摘要进行数字签名。
5、同样的方式,小刚也欺骗了小红。
6、最后,小刚愉快地当着中间人…

因为公钥被伪造了,所以小刚可以为所欲为。
小明如何才能知道自己收到的公钥是小红的呢?
这时候就需要引入权威机构:CA(Certificate Authority) 证书授权中心

有了CA,小红发布公钥的流程变了:

1、小红将自己的公钥提交给CA。
2、CA 确认小红的身份信息,比如组织机构、姓名、城市等。
3、将以上信息和小红的公钥用CA的私钥进行签名生成 数字证书
4、证书返给小红。

用图表示如下:
image.png

图上5个步骤,有些同学对第4步不太理解:

小明验证小红的证书,因为证书是CA签过名的,那么需要CA的公钥来解密,那么CA 的公钥又是如何传给小明的?

似乎又回到了原点:如何安全传递公钥的问题。
其实,信任是有起点的。
CA 不仅为他人生成证书,也生成自己的证书,CA 为自己生成的证书里包含了CA的公钥。
CA 的证书在电脑、手机等设备出场的时候就会预置在系统里、浏览器里。

因此,当小明验证小红的证书时,会在系统里寻找能够解开小红证书的CA 公钥,若是找到则说明小明证书的颁发机构是可信任的,既然信任了该证书,那么从证书里取出的公钥,小明也认可是小红的。
至此,小红的公钥就安全地传给了小明,后面就可以愉快地通信了。

系统里找不到对应的证书会有什么影响?大家还记得12306网站刚开始运行的时候,用浏览器访问时浏览器会提醒说该网站不受信任,12306提示用户安装自己的根证书。
这也从侧面说明了,咱们不要轻易更改系统里的证书。

对称加密存在密钥传送被泄漏的风险,非对称加密虽然不需要传递私钥,但是需要传递公钥,也存在被中间人攻击的风险。
为此,引入了CA 生产证书解决了非对称加密公钥传递问题。

然后非对称加密速度慢,适合加密数据量少的信息,对称加密速度快,适合加密数据量大的信息。
如何将对称加密与非对称加密结合起来打造一个安全的通信链路,下篇我们将重点分析其中的典型:SSL/TLS 的原理与应用。

您若喜欢,请点赞、关注,您的鼓励是我前进的动力

前言此次不深入源码、不分析原理、只厘清一些易混淆概念及其关联。本次将从通信演变历史的角度出发,一步步阐述概念及其作用。通过本篇文章,你将了解到:1、明文通信2、密文通信3、对称加密4、非对称加密5、消息摘要6、数字签名7、CA与数字证书8、总结1、明文通信大部分时候,咱们交流都是靠嘴对嘴,信息完全暴露在他人的耳朵里。拉拉家常无关紧要,但要是涉及重要、私密的信息就不能这样子了。此时可能想到,那我们就说悄悄话吧。2、密文通信悄悄话只能是俩人近距离才能实现,若是天各一方怎
文章目录电子商务中的认证技术身份认证技术身份认证的 概念 身份认证的方法 数字签名 技术数字摘要数字摘要的基本 概念 数字摘要的使用过程数字摘要算法 数字签名 数字签名 的基本 概念 数字签名 的使用过程 数字签名 的种类 数字证书 与认证机构 数字证书 数字证书 的基本 概念 数字证书 的分类 数字证书 的内容 数字证书 的工作原理认证中心证书的颁发证书的更新证书的查询证书的作废证书的归档 电子商务中的认证技术 在电子商务交易过程中,交易双方互不见面,如何保证信息发送方和信息接收方的真实性,如何保证交易双方对信息的认可,是必须要解决的重要问题。身份认证、数
今天,我读到一篇好文章。 它用图片通俗易懂地解释了," 数字签名 "(digital signature)和" 数字证书 "(digital certifi ca te)到底是什么。 我对这些问题的理解,一直是模模糊糊的,很多细节搞不清楚。读完这篇文章后,发现思路一下子就理清了。为了加深记忆,我把文字和图片都翻译出来了。 文中涉及的密码学基本知识,可以参 而在终端设备生产过程中,由于产品的生产批次和后续 安全 功能的扩展,通信所需要的密钥并不一定会在产品出厂之前就预置到终端设备中,此时就可使用TEE来构建终端密钥的在线下发系统来确保密钥被 安全 分发到特定的终端设备中,后期就可使用下发的密钥实现终端设备与服务器端进行密文通信。 该方案的核心内容: 主密钥应出厂时烧录到板子里,如果需要产生新的会话密钥,服务器可采用原来的加密方案,把生成密钥所需的数据组包、加密、签名、base64转换,发送给客户端。 密钥在线下发系统的框架 将下发的密文密钥包发送到O
非对称加密 :每人包含一个公钥和私钥。注意:公钥可以解开私钥,私钥可以解开公钥。公钥不能解开公钥,私钥不能解开私钥。 A与B用 非对称加密 的方式通信:A首先把要发送的内容用B的公钥加密,那么只有B的私钥能解密,保证了数据的保密性(A在向B发送内容的途中,别人看不到A发的是啥) 上面看似 安全 ,实则有问题,A可也给B发消息,C也可以假装是A给B发消息,因为C也有B的公钥。B很难去辨别谁发的消息。 数字签名 :A向B发送消息,首先用A的私钥加密,B收到以后用A的公钥验证一下,就知道是不是A发送的了。 数字签名 和非对
加密和解密使用不同的秘钥,一把作为公开的公钥,另一把作为私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密 ①使用自己的公钥加密,只能使用的私钥解密 ——数据加解密过程 ②使用自己的私钥加密,只能使用自己的公钥解密。 —— 数字签名 过程 ③已知公钥推导不出私钥 完美的解决了 对称加密 中密钥分发问题 缺陷:速度较慢,加密出来的量比较大。
最近申请了阿里云的服务器,进入了一个新的领域,当然一开始也是懵逼状态,处于云里雾里,决定将自己学习的计算机网络的相关知识复习一下。 对称加密 :即通讯双方在对传输的文件进行加密和解密时候,所用的是同一个密钥。 优点:速度快, 对称 性加密通常在消息发送方需要加密大量数据时使用,算法公开、计算量小、加密速度快、加密效率高。 缺点:假设是多人情况,两两之间都通过 对称加密 方式,所以每个人都要维持除他之外...
1、简单介绍 非对称加密 就是有两把秘钥,任何一把加密需要用另一把才能解密,我们一般会用公钥、私钥来表明。通过这个说法我们应该就能感觉到这种 非对称加密 应该更复杂,同时处理速度也比 对称加密 要更慢但 安全 性要更强。 2、代码案例 1)、我们用jdk使用RSA算法来说明生成秘钥对的过程 public static void main(String[] args) throws NoSuchAlgorithmException, Illeg...
非对称加密 使用了公钥和私钥,公钥用来给客户端,客户端拿着公钥加密后把数据发给服务端,服务器用自己的私钥来解密。不过它也有个问题是攻击者拦截了公钥,用自己的假公钥返回给了客户端,获取到客户端发来的信息后用自己的私钥解密,对信息进行修改后通过服务端的公钥加密发给服务端。 所以引入了 CA 证书,服务端会先向 CA 机构申请证书,客户端首先会根据浏览器中的根证书对 CA 证书进行验证,验证通过才会继续后面的通信。 那么 ca 证书是如何保证 安全 的呢? 证书里面包含了公钥,客户端会拿服务端传来的公钥和自己浏览器中的内置证书的公
文章目录1. 什么是公钥和私钥?2. 加密算法2.1 对称加密 2.2 非对称加密 2.2.1 非对称加密 的重要性质2.2.2 非对称加密 算法应用2.2.2.1 应用1 加密通信2.2.2.1.1 单向认证和双向认证2.2.2.1 应用2 数字签名 3. 数字签名 3.1 数字签名 用法演示3.2 数字签名 存在问题4. 数字证书 (Digital Certifi ca te)4.1 创建 数字证书 4.1.1 举例, CA 如何给我们签发一个有效证书: 1. 什么是公钥和私钥? 摘自《什么是公钥和私钥?》 公钥(Public Ke