HTTP协议的安全问题
- HTTP 协议默认是采取明文传输的,因此会有很大安全隐患
- 常见的提高安全性方法是:对通信内容进行加密后,再传输
- 常见的加密方式有
- 不可逆
- 单向散列函数: MD5 、SHA 等
- 可逆
- 对称加密: DES 、3DES 、AES 等
- 非对称加密: RSA 等
- 其它
- 混合密码系统
- 数字签名
- 证书
- 不可逆
单向散列函数
-
单向散列函数,可以根据消息内容计算出值
-
散列值的长度和消息无关,无论是 1bit 、10M 、100G100G,单向散列函数都会计算出固定长度的散列值
单向散列函数 特点 -
根据任意长度的消息,计算出固定散列值
-
计算速度快,能出散列值
-
消息不同,散列值也不同,只要内容一变化,散列值就不同,可通过比对前后两次的散列值,来确定数据是否被更改
-
具备单向性
-
单向散列函数,也被称为,消息摘要函数, 哈希函数
-
输出的散列值,也被称为, 消息摘要,指纹
常见的几种单向散列函数
- MD4, MD5: 产生128bit的散列值, MD就是Message Digest的缩写
- SHA-1 产生160bit的散列值
- SHA-2: SHA-256 , SHA-384 SHA-5I 12 散列值长分别是256bit, 384bit, 512bit
- SHA-3
单向散列函数通常的应用
- 密码加密
对称加密
-
可逆的,加密和解密用的密码是相同的
对称加密 – 摘自MJ网络协议 - 常见的对称加密算法有
- DES
- 3DES
- AES
密钥配送问题
- 在发送密钥过程中,可能会被窃取密码,导致其他方拿到密钥,也能解码数据
- 解决办法
- 事先共享密码
- 密钥分配中心
- 密钥交换
- 采用非对称加密
非对称加密(公钥密码)
-
可逆的,加密的密钥和解密的密钥是不同的
非对称加密 – 摘自MJ网络协议 - 在非对称加密 中,密钥分为 加密密钥 、解密密钥2种,它们并不是同一个密钥
- 加密钥:一般是公开的,因此该称为 公钥
- 因此,非对称加密 也被称为 公钥密码
- 解密钥:由消息接收者自己保管的,不能公开因此也称为私钥
- 公钥和私是一对应的,不能单独生成
一对公钥和私统称为密钥对
由公钥加密的明文,必须使用与该公钥对应私钥才能解密
由私钥加密的明文,必须使用与该私钥对应公才能解密
解决密钥配送问题
- 由消息的接收者,生成一对公钥,私钥
- 将公钥发给消息的送者
- 消息的发送者使用公钥加密
- 非对称加密 的加密解速度比 对称加密 要慢
- RSA是目前广泛使用的非对称加密算法

解决密钥配送问题 – 摘自MJ网络协议
数字签名
- 在数字签名技术中,有以下2种行为
- 生成签名
- 由消息的发送者完成,通过“签名密钥”生
- 验证签名
- 消息的接收者完成,通过“验证密钥”
- 如何能保证这个签名是消息发送者自己的?
- 用消息发送者的私钥进行验证

数字签名

数字签名
- 如果有人篡改了消息内容或签名,会是什么结果?
- 签名验证失败,明内容被篡改了
- 数字签名不能保证机密性?
- 数字签名的作用不是为了保证机密性,仅仅是为了能够识别内容有没被篡改
- 数字签名的作用
- 确认消息的完整性
- 识别消息是否被篡改
- 防止消息发送人否认
- 在非对称加密 中,任何人都可以使用公钥进行加密
- 在数字签名 中,任何人都可以使用公钥验证签名
- 数字签名 ,其实就是将 非对称加密 反过来使用
- 既然是加密,那肯定不希望别人知道我的消息所以只有才能解
- 公钥 负责加密, 私钥 负责解密
- 既然是签名,那肯定不希望有人冒充我发消息所以只才能
- 私钥负责签名, 公钥负责验签
公钥的合法性
- 如果遭遇了中间人攻击,那么
- 公钥将可能是伪造的
- 如何验证公钥的合法性?
- 证书

公钥的合法性
证书(Certificate )
- 密码学中的证书,全称叫 公钥证书 (PublicPublic-key Certificate,PKC)
- 里面有姓名、邮箱等个人信息,以及此的公钥
- 并由认证机构( Certificate Authority,CA )施加数字签名
- CA 就是能够认定“公钥确实属于此人”并生成数字签名的个或者组织
- 有国际性组织、政府设立的
- 有通过提供认证服务来盈利的企业
- 个人也可以成立认证机构
证书 – 使用

证书的使用
- 各大 CA 的公钥,默认已经内置在浏览器和操作系统中。所以当证书下载下来后,操作系统会验证使用本地的公钥验证签名的合法性,签名合法,说明证书中的公钥没得问题

证书 – 注册下载