在最近对新人的采访中,我发现许多人无法回答有关浏览器如何与服务器交互以及如何传输数据的问题。在这里,我将梳理密码学的基本概念。我希望你能理解密码学的基本知识。有帮助。
一,基本概念
术语解释:
密码学 密码学
纯文字 明文
密文 密文
加密 加密
解密 解密
密码学 密码
机密性 机密性,加密级别
位,字节:位(位)和字节(字节)关系是8位=1byte
编码:将数据(文本,音频,视频)映射到比特序列的过程。
密钥:固定长度的字符串。给定数据由密钥和加密和解密算法加密和解密。
对称加密:在加密和解密过程中,使用相同的密钥,称为对称加密。
非对称加密:在加密和解密过程中,使用不同的密钥(私钥,公钥),称为非对称加密。
加密和解密过程:明文+密钥à加密算法=>密文+密钥à解密算法=>明文
二,现代分组密码操作模式
分组模式对于加密和解密至关重要。现代分组密码的操作模式分为五种类型:电子密码本模式(ECB),密码组链接模式(CBC),密码反馈模式(CFB),输出反馈模式(OFB)和计数器模式(C)
ECB(电子密码本)
根据分组密码的分组大小(n比特)将明文分成N个分组,并且对每个分组使用相同的密钥。
ECB加密过程如下:
ECB解密过程如下:
CBC(Cipher Block Chaining)加密过程:
CBC解密过程:
CFB
OFB
C
三,对称加密算法
1. DES(DataEncryptionStandard)
DES要求密钥长度为56位,每个字节需要一位奇偶校验位。在DES算法的CBC分组模式中解释算法。对于CBC分组方法,它将面临分组长度不足的问题。具体处理方法如下:
(1)计算要填充的字节数,例如,填充为2
(2)要填充的字节数为2
(3)当密文被解密时,取出最后一个字节的值并转换成整数值
(4)结果(3)是要删除的字节数
2. 3DES算法
3DES是DES加密算法的一种模式。它使用三个64位密钥对数据进行三次加密。加密过程如下:
3. AES
AES算法所需的密钥长度为128,192和256位。数据包长度理论上是16字节,24字节和32字节。当密钥长度为256Bit时,效率低,但机密性最高。在任何加密和解密算法中,分组长度和密钥长度必须相等。 AES使用CBC数据包模式,密钥长度为16个字节,初始化向量必须保证为16个字节。
四,非对称加密
使用密钥解密时,如果要将密钥安全地发送给收件人并解决密钥分发问题,则需要使用非对称加密技术。
非对称加密技术的关键分为两部分:公钥和私钥。公钥可以公开,私钥是私有的,不能泄露。
非对称加密技术使用不同的密钥(公钥和私钥)进行加密和解密。公钥是加密的,需要用私钥解密;私钥加密需要使用公钥进行解密。
非对称加密的图形化过程:
非对称加密算法(RSA)
RSA名称的来源包括算法RonRivest,AdiShamir和Leonara Adleman的三个开发人员的初始名称。
简单的非对称加密算法:
1.公钥加密公式:
纯文本“2”由RSA加密,并成为密文“8”
2.私钥解密公式:
密文“8”在被RSA解密后变为明文
对称加密和非对称加密之间的区别:
1.密钥分发:对称加密难以分发,非对称加密易于分发。
2.效率问题:对称加密效率相对较高,非对称加密效率相对较低。
3.安全级别:对称加密的安全级别低于非对称加密的安全级别。
五向单向散列函数
单向散列函数具有输入和输出,其中输入被称为消息,输出被称为散列值,其可用于计算摘要并获得消息的指纹。单向散列函数的特点是计算速度非常快。
(1)SHA-1单向散列函数,计算出的散列值长度为160位(20字节)
(2)应用:检查软件是否被篡改,消息认证码,数字签名,伪随机生成器,一次性密码等。
(3)常见的单向哈希哈希函数
MD4,MD5,SHA-1,SHA-2,SHA-3,其中MD4和MD5的强抗冲击性已被打破,SHA-2的强抗碰撞性尚未被打破。
6.证书
在https交互过程中,非对称加密+对称加密的综合应用。下图显示了https请求过程:
具体过程如下:
(1)客户端向服务器发送请求https://baidu.com,然后连接到服务器的端口443。
(2)服务器必须具有数字证书。
(3)服务器将证书发送给客户端。证书中包含的信息:申请人的公钥,申请人的组织信息和个人信息,签发机构的CA信息,有效时间,证书序列号和签名。
(4)客户解析证书
工作由客户端的TLS完成,首先验证证书是否有效,例如颁发机构,到期时间等。如果发现异常,将弹出一个警告框,指示证书存在问题;如果证书没有问题,则生成随机值(密钥)。然后使用公钥加密随机值。
(5)客户端发送加密信息
密钥由证书中的公钥加密。目的是让服务器获取密钥。之后,客户端和服务器之间的通信可以通过该随机值(密钥)(对称加密算法)加密和解密。
(6)服务器端加密和解密信息
服务器用私钥解密密钥,获取客户端传递的随机值(key),然后通过该值对称加密内容。
(7)传输加密信息。信息是服务器使用私钥加密的信息。
(8)客户端解密信息。客户端利用生成的随机值(密钥)解密服务器发送的信息,以获得解密的内容。
CA签名的真实性示意图如下: