网络安全三要素
- 机密性:攻击者无法获知通信内容
- 完整性:攻击者对内容进行篡改时能被发现
- 身份验证:攻击者无法伪装成通信双方的任意一方与另一方通信
机密性
- 加密需要加密算法和密钥等信息(统称为秘密信息
- 网络是明文的,不安全
怎么在不安全的信道交换密码信息?
完整性和身份验证
完整性和身份验证相互关联。如果报文被篡改,或者攻击者伪装成其他人进行通信依然无法实现网络安全通信的目标。
如何实现机密性
- 已知:网络是明文的
- 如果双方可以通过明文通信商量出秘密信息,那么攻击者也可以
- 所以想要通过明文通信交换秘密信息,通信双方需要先有秘密信息
- 在没有任何前缀信息下,想在不安全的信道交换秘密信息是不可能的
如何实现完整性
- 密码散列函数性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的
1
- 有明文m,密码散列函数H
- 计算H(m)获得哈希值h
- 将m和h组合成新信息m+h
- 接收方拆分m + h,重新计算H(m)得h',对比h'和h,
2
- 有明文m,密码散列函数H,以及一个密钥s
- 计算H(m+s)获得哈希值h
- 将m和h组合成新信息m+h
- 接收方拆分m+ h,重新计算H(m+ s)得h',对比h'和h
- 所以想要实现完整性,需要通信双方现有秘密信息
如何实现身份验证
-
签名:用于鉴别身份和防止伪造
-
非对称加密性质:加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密
-
数字签名:对明文内容的哈希值使用私钥加密,验证者使用公钥验证
- 数字签名(指纹) = 私钥加密(密码散列函数(原文) )
- 消息=原文+数字签名
-
一般用于对公开内容(如包含公钥的证书)进行数字签名,防止篡改
那谁验证可信的人的公钥? 根证书是证书链的尽头
-
验证的一连串证书称为证书链
-
分发证书、验证证书的基础设施称为PKI ( Public Key Infrastructure
-
所以想要实现身份验证,通信双方需要先有秘密信息,即根证书中的公钥
对称加密&非对称加密
-
对称加密:加密和解密使用同样的密钥
- 对称加密算法:DES(Data Encryption Standard,即数据加密标准、AES(Advanced Encryption Standard, 高级加密标准
-
非对称加密:加密和解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密,私钥加密只能用公钥解密
- 非对称加密算法:RSA(原理是:根据数论,寻求两个素数比较简单,而将他们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥
密码散列函数(哈希函数
- 输入:任意长度的内容
- 输出:固定长度的哈希值
- 性质:找到两个不同的输入使之经过密码散列函数之后拥有相同的哈希值,在计算上是不可能的
HTTPS
把HTTP的明文换成密文,再验证身份,即HTTPS。
- HTTPS = HTTP + TLS
- TLS = 身份验证 + 加解密
- 身份验证靠PKI
- 服务端身份验证靠PKI,客户端身份验证靠HTTP协议。