问题
随着互联网和物联网的发展,安全性问题也显得尤为重要,关于用户信息泄露或者网站安全漏洞的报道也越来越多。
信息安全
- 本地敏感信息的机密性
-- 数据库或文件中关键字段的加密
-- 访问授权限制
- 网络传输的安全性
-- 身份的合法性
-- 通信的机密性
-- 信息的完整性
要解决这些问题,需要计算机密码学 + 授权限制 + 规章制度等各种措施去保障
网络传输过程环境更复杂,不可控性更大,所以 重点讲网络传输的安全性和怎样使用密码学算法解决此问题。
网络传输的安全性
互联网中使用最广泛的协议就是HTTP,而HTTP是不安全的存在的问题。
-- 网站的合法性
-- 客户端的合法性
-- 通信的机密性
-- 信息的完整性
HTTPS就是来解决这些问题的
如何解决?
- 网站的合法性 -- 证书
- 客户端的合法性 -- 证书
- 通信的机密性 – 数据加密
- 信息的完整性 – 消息认证码
实现过程需要用到各种密码学算法
密码学算法分类
- 消息编码:如BASE64
- 对称加密:DES 、3DES、AES(最新标准)
- 非对称加密:RSA、DH秘钥交换
- 摘要算法:MD类、SHA类、MAC类
- 签名算法:RSASignature、DSASignature
其中签名算法是非对称加密和摘要算法的组合应用
学习的意义
学会了这些算法,我们可以根据实际情况进行组合应用,来保证通信的安全性;不一定要全套都走HTTPS
BASE64编码
用来对二进制数据进行编码,转换成一个字符串;比如:二进制的秘钥、图片,或者url中传的字符串(变成不易被识别的字符),你可以把它理解成一个公开了秘钥的加密算法(秘钥就是BASE64的编码表)
算法 3*8 = 4*6 不够的补0 |
Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。 如果剩下的字符不足3个字节,则用0填充,完全的六位填充输出字符使用'=',因此编码后输出的文本末尾可能会出现1或2个'='。 为了保证所输出的编码位可读字符,Base64制定了一个编码表,以便进行统一转换。编码表的大小为2^6=64,这也是Base64名称的由来。 |
BASE64编码表
example
hello ---> aGVsbG8=
1. hello --> 01101000 01100101 01101100 01101100 01101111
2. 补全 01101000 01100101 01101100 01101100 01101111 00000000
3. 6个bit作为一个编码单位
011010 000110 010101 101100 011011000110 111100 000000
26 6 21 4427 6 60=
a GV s bG 8 =
加密通信模型