1.http与https的区别?
HTTP(Hypertext Transfer Protocol)和HTTPS(Hypertext Transfer Protocol Secure)是用于在客户端和服务器之间传输数据的通信协议。它们之间的主要区别在于安全性和数据传输的加密方式:
- 安全性:
- HTTP是明文传输协议,数据在传输过程中不进行加密,容易被窃听和篡改。因此,HTTP在传输敏感信息(如用户名、密码、银行卡号等)时存在安全风险。
- HTTPS使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议对数据进行加密和身份验证,确保传输的数据在客户端和服务器之间是安全的。通过使用数字证书,HTTPS可以验证服务器的身份,防止中间人攻击和数据篡改。
- 加密方式:
- HTTP不对数据进行加密,数据以明文形式传输。
- HTTPS使用SSL或TLS协议对数据进行加密,确保数据在传输过程中的机密性。加密后的数据在传输过程中只能被发送和接收的双方解密和阅读。
- 默认端口:
- HTTP的默认端口号是80。
- HTTPS的默认端口号是443。
- URL前缀:
- HTTP的URL以"http://"开头。
- HTTPS的URL以"https://"开头。
总结来说,HTTPS是在HTTP基础上添加了安全性和数据加密的协议。使用HTTPS可以保护敏感数据的安全性,防止信息被窃听和篡改,提供更安全的网络通信。因此,对于涉及敏感信息传输的网站,使用HTTPS是非常重要的。
2.HTTPS的加密方式是如何保证数据的机密性的?(SSL/TLS工作原理)
- 握手过程(Handshake):
- 客户端向服务器发起HTTPS连接请求。
- 服务器将自己的数字证书发送给客户端,证书中包含了服务器的公钥。
- 客户端验证服务器的证书,包括验证证书的合法性、有效期、颁发机构等。
- 客户端生成一个用于对称加密的随机密钥(称为会话密钥或对称密钥),并使用服务器的公钥进行加密,然后发送给服务器。
- 密钥交换:
- 服务器使用自己的私钥对接收到的加密的随机密钥进行解密,得到对称密钥。
- 客户端和服务器都拥有相同的对称密钥,用于后续的数据加密和解密。
- 数据加密:
- 在握手过程中建立的对称密钥用于加密和解密实际的数据传输。
- 客户端和服务器使用对称密钥对传输的数据进行加密和解密操作,保证数据在传输过程中的机密性。
- 对称加密算法通常使用高效且安全的加密算法,如AES(Advanced Encryption Standard)。
通过以上步骤,HTTPS确保了数据在传输过程中的机密性。客户端和服务器之间的通信使用对称密钥进行加密和解密,而对称密钥的安全性则通过非对称加密来保证。这样,即使有人窃听了HTTPS传输的数据,也无法解密和获取其中的敏感信息,因为只有服务器和客户端拥有对称密钥。
3.什么是中间人攻击?
中间人攻击(Man-in-the-Middle Attack)是指攻击者在通信的两端之间插入自己,并劫持通信双方之间的数据传输。攻击者可以窃听、篡改或伪装通信内容,而通信双方并不知情。
下面是中间人攻击的一般工作流程:
-
建立连接:通信的两端(通常是客户端和服务器)试图建立连接,以便进行数据传输。
-
中间人介入:攻击者在通信路径上插入自己,使其成为通信的中间环节。这可以通过多种方式实现,例如在网络层面进行路由欺骗、在物理层面进行线路截获,或者通过恶意软件在用户设备上进行操作。
-
伪装身份:攻击者伪装成合法的通信方,与客户端和服务器分别建立连接。攻击者可以使用伪造的数字证书、欺骗性的域名或其他方式来给双方造成认为自己是合法通信方的错觉。
-
窃听和篡改:攻击者可以窃听通信内容,获取敏感信息,如登录凭据、银行卡号等。此外,攻击者还可以篡改数据,修改传输的内容,例如替换下载的文件、修改网页内容等。
-
中继和劫持:攻击者可以中继通信,将双方的数据传递给对方,使得通信看起来正常进行,但攻击者可以窃取或篡改传输的数据。攻击者还可以劫持通信的会话,绕过身份验证,进而访问用户的账户或进行非法操作。
中间人攻击的目的是获取敏感信息、窃取用户凭据、进行身份盗窃、进行欺诈活动或其他恶意行为。它利用了通信双方之间缺乏直接的端到端连接,攻击者利用这个漏洞插入自己并获取通信的控制权。
为了防止中间人攻击,采用安全的通信协议如HTTPS,并注意网络安全和身份验证的实施非常重要。
4.在HTTPS中,对称密钥是如何通过非对称加密来保证安全性的?
在HTTPS中,对称密钥是通过非对称加密来进行安全交换和保证其安全性的。以下是对称密钥如何通过非对称加密实现安全性的步骤:
- 握手过程中,服务器将自己的数字证书发送给客户端,其中包含服务器的公钥。
- 客户端验证服务器证书的合法性和有效性,确保其由可信的证书颁发机构签发。
- 客户端使用服务器的公钥加密生成一个随机的对称密钥(会话密钥)。
- 客户端将加密后的对称密钥发送给服务器。
- 服务器使用自己的私钥对接收到的加密的对称密钥进行解密,得到原始的对称密钥。
通过这个过程,对称密钥在传输过程中是被加密保护的,只有服务器能够解密获得原始的对称密钥。这样可以确保对称密钥在传输过程中不会被窃听或篡改。
非对称加密的工作原理是使用一对密钥:公钥和私钥。公钥用于加密数据,而私钥用于解密数据。在这个过程中,服务器的私钥是保密的,只有服务器拥有,而公钥是公开的,可以被任何人获取。
通过使用服务器的公钥加密对称密钥,只有服务器的私钥才能解密该对称密钥。这样,即使对称密钥在传输过程中被拦截,攻击者也无法获得原始的对称密钥,因为只有服务器拥有私钥能够解密。
一旦服务器和客户端都拥有相同的对称密钥,它们可以使用该对称密钥进行后续的数据加密和解密操作,以保证通信的机密性和完整性。
总结起来,通过使用非对称加密算法,服务器的公钥加密对称密钥,确保对称密钥在传输过程中的安全性,而对称密钥的保密性则依赖于服务器的私钥。这种组合使用非对称加密和对称加密的方式,实现了HTTPS通信的机密性和安全性。