课程大纲
05 网络安全
无论是HTTP还是UDP等等协议都是明文的,一条消息从一台电脑到另一台电脑中所经过的流程都可以看到消息的所有内容,甚至可以丢弃和篡改。明文会导致很多操作无法进行,比如银行 转账
网络安全三要素
- 机密性:攻击者无法获知通信内容
- 完整性:攻击者对内容进行篡改时能被发现
- 身份验证:攻击者无法伪装成通信双方的任意一方与另一方通信
加密方式:对称和非对称加密
-
对称加密:加密、解密用同样的密钥
对称加密算法是指使用同一个密钥进行加密和解密。发送方使用密钥将明文加密成密文,并将密文发送给接收方,接收方使用相同的密钥将密文解密成明文。对称加密算法具有加密和解密速度快、效率高的特点,但是密钥的安全性是关键问题,如果密钥泄露,则所有加密数据都会被破解。
常见的对称加密算法包括 DES、3DES、AES 等。其中,AES(Advanced Encryption Standard)是目前应用最广泛的对称加密算法之一,支持多种密钥长度和加密模式,具有高效、安全等优点。
-
非对称加密:加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密
非对称加密算法是指使用不同的密钥进行加密和解密。发送方使用公钥将明文加密成密文,并将密文发送给接收方,接收方使用私钥将密文解密成明文。因为公钥和私钥是不同的,所以非对称加密算法也称为公钥加密算法。公钥可以公开传播,而私钥只有接收方知道,这样可以保证密钥的安全性。
常见的非对称加密算法包括 RSA、DSA、ECC 等。其中,RSA 是应用最广泛的非对称加密算法之一,支持加密和数字签名等功能,具有高效、安全等优点。
密码散列函数(哈希函数)
- 输入:任意长度的内容
- 输出:固定长度的哈希值
- 性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的
网络安全机密性
- 加密需要加密算法和密钥等信息(统称为秘密信息)
- 网络是明文的,不安全
完整性和身份验证
完整性和身份验证相互关联。
-
蟹老板向银行发起了转账请求
-
银行需要确认
- 这个请求真的是蟹老板发起的
- 目标账户和转账金额没有被篡改
如何实现机密性
- 已知:网络是明文的
- 如果双方可以通过明文通信商量出秘密信息,那么攻击者也可以
- 所以想要通过明文通信交换秘密信息,通信双方需要先有秘密信息,意思就是我们想要通过明文来交换密钥,就得有不会被攻击者知道的秘密信息
如何实现完整性
- 密码散列函数性质:找到两个不同的输入使之经过密码散列函数后有相同的哈希值,在计算上是不可能的
- 有明文m,密码散列函数H
- 计算H(m)获得哈希值h
- 将m和h组合成新信息m+h
- 接收方拆分m+h,重新计算H(m)得h',对比h'和h
如何实现身份验证
数字签名是一种基于公钥加密技术的技术,用于保证数据的完整性、不可否认性和真实性。它通常使用非对称加密算法进行实现,如 RSA、DSA 等。
在数字签名中,发送方首先对原始数据进行哈希运算,得到一个唯一的、固定长度的哈希值。然后,发送方使用自己的私钥对这个哈希值进行加密,形成数字签名,并将数字签名和原始数据一起发送给接收方。接收方可以使用发送方的公钥来验证数字签名的真实性和完整性。
验证数字签名的过程如下:
- 接收方对原始数据进行哈希运算,得到一个哈希值。
- 接收方使用发送方的公钥对数字签名进行解密,得到一个哈希值。
- 接收方比较这两个哈希值是否相同,如果相同,则说明数字签名是有效的,原始数据没有被篡改。
这个过程的核心在于发送方使用私钥对哈希值进行加密,只有持有私钥的发送方才能够生成有效的数字签名,因此数字签名可以被认为是发送方对原始数据的“数字指纹”。同时,接收方使用公钥对数字签名进行解密,只有持有公钥的发送方才能够生成有效的数字签名,因此可以保证数字签名的真实性和完整性。
总之,数字签名是一种基于公钥加密技术的技术,用于保证数据的完整性、不可否认性和真实性。它通过对原始数据进行哈希运算和使用发送方的私钥进行加密,生成数字签名,然后通过使用发送方的公钥对数字签名进行解密和验证,保证数据的安全性和可靠性。
- 签名:用于鉴别身份和防止伪造
- 非对称加密性质:加密、解密使用不同的密钥(公钥和私钥),而且公钥加密只能用私钥解密、私钥加密只能用公钥解密
- 蟹老板用自己的私钥对信件进行加密,并发送给海绵宝宝
- 海绵宝宝使用蟹老板的公钥进行解密,获得原文
- 保证了机密性、完整性和身份验证
HTTPS
把 HTTP 的明文换成密文,再验证身份,即 HTTPS。
HTTPS = HTTP + TLS
TLS = 身份验证 + 加解密
身份验证靠 PKI,PKI(Public Key Infrastructure,公钥基础设施)是一种安全技术体系,用于管理和分发数字证书、公钥和私钥等密钥材料,以保证数字通信和电子商务中的安全性、可信性和可靠性。
PKI 体系由以下几个组成部分构成:
- 数字证书:数字证书是一种用于证明某个实体身份和公钥信息的电子凭证,由认证机构(CA)进行签发和管理。数字证书包括证书拥有者的身份信息、公钥、数字签名等信息,可以用于身份验证、数据加密和数字签名等场景。
- 证书颁发机构(CA):CA 是 PKI 体系的核心组成部分,负责签发、验证和管理数字证书。CA 通常是由信任机构或政府部门颁发,具有可信的身份和信誉,是数字证书可靠性的保证。
- 注册机构(RA):RA 是 CA 的辅助机构,负责验证证书申请者的身份信息和授权申请数字证书。
- 数字签名:数字签名是一种用于验证数字证书有效性和真实性的技术,可以确保数据的完整性、不可否认性和真实性。
- 证书撤销列表(CRL):CRL 是由 CA 管理的一份撤销数字证书的列表,如果数字证书已经被撤销,则该数字证书将无法继续使用。
- 证书存储库(CS):CS 是用于存储数字证书和其他密钥材料的安全存储设施。
PKI 是一种安全技术体系,用于管理和分发数字证书、公钥和私钥等密钥材料,以保证数字通信和电子商务中的安全性、可信性和可靠性。PKI 体系由数字证书、CA、RA、数字签名、CRL 和 CS 等组成部分构成,可以应用于身份验证、数据加密和数字签名等场景。
小结
- 网络安全三要素:机密性、完整性和身份验证
- 在没有提前交换秘密信息的前提下,无法在不安全的信道交换秘密信息
- PKI保证了普通用户不需要“面对面”和根证书机构交换根证书
- HTTPS使用PKI完成了除客户端身份验证以外的特性,客户端身份验证靠
- HTTP协议实现