【网络安全】小白都能看懂的base64、摘要,加密解密、数字签名、数字证书

796 阅读4分钟

导言

“ XXX,参数用aes加密一下 ” 后端如是说。
“ 好的 ” 表面很淡定,心里却一紧,aes是个什么鬼,怎么加密呢,百度走起。
每次听到加密、解密、数字签名,md5,aes,base64等名词,都是似曾相识,又朦朦胧胧,这次决定对这些知识系统学习并整理一下,免得每次遇到相关需求都很被动。

1. base64

1.1 介绍

有时候会把base64也误认为一种加密算法,但其实它只是一种编码方式。Base64是一种基于64个可打印字符来表示二进制数据的表示方法,主要是用于解决非英文传输乱码以及不可见字符传输的问题。

  • base64编码:把二进制数据转为字符
  • base64解码:把字符转为二进制数据

1.2 原理

原理参考该篇文章,讲的浅显易懂:blog.csdn.net/wo541075754…

1.3 工具

  • 支持npm和script引入的库:github.com/beatgammit/…
  • js内置的base64编码(window.btoa)和解码(window.atob):支持ie10+和其他浏览器

2. 加密解密

加密是将明文转为密文的过程,解密是将密文转为明文的过程,加密解密主要用于解决网络传输中的窃听问题。通过将明文加密,别人即使窃听到了你的数据,也无法读懂其中的含义。
在现代密码时期,加密算法是公开的,加密的安全性主要依赖于密钥。根据加密解密密钥是否相同,分为对称加密和非对称加密。

2.1 对称加密

加密和解密使用相同的密钥,通信时需要将密钥发送至对方,密钥容易被黑客截获,安全性不高,但是该种方式加密速度快。

  • 常见的有AES、DES算法,其中AES是最常用的对称加密算法

2.2 非对称加密

又叫公开密钥加密,加密和解密使用不同的密钥,分别是公钥和私钥。公钥可公开传输,私钥是自己拥有的。
使用方式是公钥加密,私钥解密;反之,私钥加密,公钥解密。
非对称加密的特点是安全性高,但是加密速度慢。

  • 常见的有RSA、DH算法,其中RSA是最常用的非对称加密算法

2.3 混合加密

对称加密安全性低,加密速度快;非对称加密安全性高,加密速度慢,不适合大数据加密。实际使用中往往结合对称加密和非对称加密,使用混合加密。
对称加密的不安全性体现在密钥在传输过程中容易被截获,那么就先使用非对称加密加密对称加密的密钥,之后的业务数据使用对称加密。
https就使用该种加密方式,可参考:juejin.cn/post/684490…

2.4 工具

3. 摘要

摘要就是一段信息或者一个文件通过某个哈希算法得到的一串字符。不同的文件计算出的摘要是不同的(也有可能相同,但是可能性非常非常低),摘要是不可逆的。
摘要算法通常用来判断文件是否被篡改过。

4. 数字签名

数字签名是摘要和非对称加密的结合体,用来解决网络传输中的篡改问题。 数据签名算法的模型分为两个主要阶段:

  • 1、签名: 先计算数据的摘要,再使用私钥对摘要进行加密生成签名,将数据和签名一并发送给接收方;
  • 2、验证: 接收方先使用相同的摘要算法计算接收数据的摘要,再使用公钥解密签名,对比解密的签名计算的摘要是否一致。若一致,则说明数据没有被篡改。

5. 数字证书

数字签名和数字证书总是成对出现,二者不可分离。数字签名用来防篡改,数字证书用来防伪装。  数字证书主要包含三个部分:用户的信息、用户的公钥和 CA 对该证书实体信息的签名

总结

网络中传输数据,存在三大安全风险:窃听、篡改和伪装

  • 窃听:http使用明文传输,一旦请求被截获,数据就会泄露,而现在有很多抓包工具可以截获网络请求,如wireshark。现在普遍通过加密解决窃听风险,这样即使请求被截获,也无法获取数据真实含义。
  • 篡改:中间攻击人会篡改请求和响应,让服务器和客户端之间的通信看起来仍是正常的,但实际已经被控制,可使用数字签名防篡改。
  • 伪装:http不验证身份,发送方和接收方无法确认对方的身份,中间人可能伪装成合法的身份和双方通信。可使用数字证书验证身份。

最后推荐大家一篇优秀的文章:juejin.cn/post/699554…