在介绍这两个协议前,先了解一下安全领域常见的通信安全和验证身份的加密技术,即数字签名和数字证书。
一、数字签名
数字签名定义
数字签名是一种通过使用私钥对信息进行加密来验证信息完整性和发送者身份的技术。
基本流程
1. 发送者使用私钥对一段信息进行加密,产生数字签名。
2.接收者使用发送者的公钥来解密数字签名,从而验证信息的来源和完整性。
3.如果数字签名验证成功,接收者可以确定信息未被篡改,且确实是由拥有相应私钥的发送者生成的。
数字签名的详细过程
1.生成密钥对:
发送者首先生成一对密钥:私钥(用于签名)和公钥(用于验证签名)
2.提取信息摘要:
发送者对要发送的信息(文本、文件等)应用一个散列函数(hash function),生成信息的摘要(hash值)。常用的散列函数包括MD5、SHA-256等。
3.使用私钥签名:
发送者使用私钥对信息摘要进行加密,形成数字签名。这个过程使用的是非对称加密算法,如RSA或者DSA。
4.将数字签名附加到原始信息:
发送者将生成的数字签名与原始信息一起发送给接收者。这可以是在文本消息中追加数字签名,或者将其作为单独的附件。
5.接收者收到信息:
接收者收到原始信息和数字签名。
6.提取信息摘要:
接收者使用相同的散列函数对接收到的原始信息提取信息摘要。
7.使用发送者公钥解密签名:
接收者使用发送者的公钥对数字签名进行解密,得到另一个信息摘要。
8.摘要比较:
接收者将自己提取的信息摘要和用公钥解密得到的信息摘要进行比较,如果二者一致,说明数字签名有效。
9.验证签名:
如果信息一直,接收者就能确认两点:1.原始信息未被篡改,因为提取的信息摘要与解密得到的信息摘要一致。2.发送者是拥有对应私钥的合法实体,因为只有合法的私钥才能产生正确的数字签名。
数字签名基本用途
1.确保数据的完整性:接收者可以验证数据在传输过程中是否被篡改。
2.验证发送者身份:数字签名提供了一种机制,确保接收者能够确认信息的真实来源。
二、数字证书
数字证书定义
数字证书是一种由数字证书颁发机构(CA)签发的电子文档,用于证明一个实体(如个人、组织或网站)的身份。
数字证书的组成
公钥:证书包含了实体的公钥,用于加密和验证数字签名。
数字签名:证书本身也是由CA使用其私钥生成的数字签名。接收者可以使用CA的公钥来验证数字签名,从而确保证书的真实性。
证书持有者的信息:证书通常包含有关证书持有者的信息,如名称、电子邮件地址等。
数字证书的详细过程
1、证书请求
1.密钥生成:
实体首先生成一对密钥:私钥和公钥。私钥用于加密和数字签名,公钥用于解密和验证数字签名。
2.创建证书请求:
实体使用私钥对填写的证书请求信息进行数字签名,生成一个证书请求(Certificate Signing Request,CSR)文件,这个签名是证书请求的一部分,证书请求中还包含实体的公钥及有关实体的身份信息(如组织名、国家等),这通常是由证书颁发机构要求。
2、证书颁发机构验证
1.提交证书请求:
实体将证书请求体提交给证书颁发机构。
2.身份验证:
证书颁发机构对实体进行身份验证,以确保证书请求者确实拥有或代表所声称的实体。身份验证的方式可能包括文件验证、电话验证、域名验证等。
3.信息验证:
CA验证证书请求中包含的信息,例如组织名称、国家等,以确保其符合CA的验证标准。
4.公钥接受:
CA接受证书请求中包含的公钥,并将其嵌入到数字证书中。
5.数字签名生成:
CA使用自己的私钥对整个数字证书内容(包括公钥、身份信息等)进行数字签名。这个数字签名是CA的数字指纹,用于验证证书的真实性。
6.签发数字证书:
CA将数字签名附加到证书请求中,形成最终的数字证书。这个数字证书包含了实体的公钥、身份信息和CA的数字签名。
7.证书分发:
CA将签发的数字证书返回给证书请求者。这通常是一个包含数字证书的文件,格式可能是X.509标准格式的证书文件。
3、证书的使用
1.证书存储:
实体收到数字证书后,通常会将其存储在安全的地方,例如服务器上的证书存储区或者浏览器中的证书库。
2.数字签名和加密:
(1)实体可以使用其私钥对数据进行数字签名,用于验证数据来源和完整性。
(2) 其他用户可以使用实体的公钥对数字签名进行验证,确保数据未被篡改。
(3)实体可以将其公钥分发给其他用户,以便他们可以使用实体的公钥加密数据,只有实体拥有私钥才能解密。
4、证书续订和吊销
1.证书续订:
数字证书通常有一定的有效期,因此实体在证书到期之前需要向证书颁发机构申请证书续订。
2.证书吊销:
如果私钥泄露或实体不再需要证书,可以向证书颁发机构申请证书吊销。吊销后,证书将被认为无效。
数字证书的用途
1.安全通信:证书用于建立安全的通信连接,如HTTPS。通过验证证书,浏览器可以确认服务器的身份,确保用户与正确的服务器通信。
2.身份验证:证书用于验证电子邮件、代码签名等领域中的身份。
3.数字签名:证书还用于签署数字签名,从而确保签名的真实性。
CA(数字证书颁发机构)
CA是负责签发数字证书的可信任实体。常见的CA包括VeriSign、Let's Encrypt等。
CA的数字签名用于确保证书的真实性。操作系统和浏览器内置了一组受信任的CA的公钥。
三、HTTP协议
HTTP协议是一种用于传输超文本的应用层协议。它是在web上进行数据交换的基础,允许浏览器和服务器之间进行通信。HTTP协议是无状态协议,意味着每个请求都是独立的,服务器不会记住之前的请求,因此每个请求都需要携带足够的信息来理解和处理。
以下是HTTP的一些基本特点和工作原理:
1、请求-响应模型:
HTTP遵循客户端-服务器模型,其中客户端发送HTTP请求,服务器以HTTP响应进行回应。这种模型支持web浏览器与web服务器之间的通信。
2、无状态性:
HTTP是无状态的,即服务器不会保留有关客户端的任何信息。每个请求都是独立的,服务器不会记住之前的请求。这有助于简化服务器的设计和提高伸缩性。
3、请求方法:
HTTP定义了不同的请求方法,最常见的是GET和POST方法。GET方法用于获取资源,而POST方法用于提交数据给服务器。其他常见的方法包括PUT(更新资源)、DELETE(删除资源)等。
4、URI(Unifom Resource Identifier)
每个资源在HTTP中都有一个唯一的标识符,称为URI。它可以是URL(Uniform Resource Locator),用于定位资源的地址,或者URN(Uniform Resource Name),用于标识资源的名称。
5、状态码:
HTTP响应中包含一个状态码,用于指示请求的结果。常见的状态码包括:200 OK(请求成功)、404 Not Found(找不到资源)、500 Internal Server Error(服务器内部错误)等。
6、报文格式:
HTTP请求和响应都由报文组成。请求报文包括:请求行、头部和消息体,而响应报文包括:状态行、头部和消息体。报文格式定义了如何组织和传输数据。
7、持久连接:
HTTP/1.1引入了持久连接,允许多个请求和响应在单个连接上进行。这减少了连接的建立和关闭次数,提高了性能。
8、安全性:
HTTP本身是不安全的,因为数据以明文传输。为了加强安全性,通常使用HTTPS(HTTP Secure),通过SSL/TLS协议对数据进行加密和身份验证。
四、HTTPS协议
HTTPS(Hypertext Transfer Protocol Secure)是HTTP的安全版本,用于在客户端和服务器之间进行加密的安全数据传输。HTTPS通过在HTTP和传输层安全协议(TLS)之间添加加密层,确保在互联网上传输的数据在传输过程中得到保护。
以下是HTTPS的主要特点和工作原理:
1、加密通信:
HTTPS使用TLS或者其前身SSL(Secure Sockets Layer)来加密通信。这种加密方式确保在数据从客户端发送到服务器或者从服务器发送到客户端的过程中,第三方不能轻松的截取、窃听或者篡改数据。
2、身份验证:
在建立安全连接时,服务器的数字证书被用来验证其身份。这确保了客户端能连接到预期的服务器,而不是受到中间人攻击(Man-in-the-Middle)的威胁。
3、数据完整性
除了加密通信外,HTTPS还提供了对数据完整性的保护。通过使用加密散列函数,接收方可以验证数据在传输过程中是否受到篡改。
4、工作流程:
1.客户端向服务器发起连接请求,服务器返回其数字证书。
2.客户端验证服务器发来的数字证书,确保其有效性和合法性。
3.客户端生成一个随机的对称密钥,用服务器的公钥加密它,并将加密后的密钥发送给服务器。
4.服务器使用私钥解密客户端发送的对称密钥。
5.双方使用这个对称密钥来加密和解密在会话期间按交换的数据
5、HTTPS端口:
HTTP默认使用80端口,而HTTPS默认使用443端口。这种端口的区分允许Web服务器同时监听HTTP和HTTPS请求。
6、SEO和信任:
搜索引擎通常更喜欢排名使用HTTPS的网站,因为HTTPS有助于确保数据的安全性和用户隐私。
使用HTTPS可以建立用户对网站的信任,因为他们知道他们的数据在传输过程中受到了保护。
7、SSL/TSL版本:
不同版本的SSL和TLS协议提供了不同程度的安全性。推荐使用较新的TLS版本,以确保最高级别的安全性。