1.概述
HTTPS通过使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议来加密HTTP请求和响应的内容。
HTTP:HTTP——应用层、TCP——传输层、IP——网络层、网络接口——数据链路层 ;
HTTPS:HTTP——应用层、SSL或TLS——安全层、TCP——传输层、IP——网络层、网络接口——数据链路层;
HTTPS具备的功能:
- 服务器认证(客户端知道它们是在与真正的而不是伪造的服务器通话)
- 客户端认证(服务器知道它们是在与真正的而不是伪造的客户端通话)完整性(客户端和服务器的数据不会被修改)。
- 加密(客户端和服务器的对话是私密的,无需担心被窃听)。
- 效率(一个运行的足够快的算法,以便低端的客户端和服务器使用)。
- 普适性(基本上所有的客户端和服务器都支持这些协议)。
- 管理的可扩展性(在任何地方的任何人都可以立即进行安全通信)
- 适应性(能够支持当前最知名的安全方法)。
1.1 HTTPS的工作流程:
1)客户端请求安全连接:
• 当客户端(如浏览器)向服务器发出HTTPS请求时,会要求建立一个安全连接。
2)服务器发送证书:
• 服务器响应请求并发送一个数字证书(SSL/TLS证书)给客户端。这个证书由受信任的证书颁发机构(CA)签发,包含服务器的公钥和其他身份验证信息。
3)客户端验证证书:
• 客户端使用证书中的公钥和CA的根证书验证服务器的证书是否合法。如果证书合法且未过期,客户端将继续下一步,否则会提示用户安全警告。
4)密钥协商:
• 一旦证书验证通过,客户端和服务器之间会进行密钥协商,生成一个会话密钥(session key)。这个会话密钥用于加密之后的数据传输。
5)建立加密连接:
• 使用会话密钥,客户端和服务器之间的通信内容(如HTTP请求和响应)将被加密传输,确保即使被拦截,也无法轻易解密。
6)传输数据:
• 在加密通道上,客户端和服务器进行正常的HTTP通信,但数据都是经过加密的,只有通信双方能解密查看。
2. HTTPS技术知识分解
介绍HTTPS之前,先介绍一些SSL和HTTPS用到的加密编码技术的知识;
数字签名:用来验证报文未被伪造或篡改的校验和;
数字证书:由一个可信的组织验证和签发的识别信息;
2.1 密钥的分类
- 对称密钥(Symmetric Key):
• 在对称加密算法中,使用相同的密钥进行加密和解密。这意味着加密和解密双方必须共享同一个密钥。
• 优点:对称加密速度快,适合处理大数据量的加密任务。
• 缺点:密钥的分发和管理较为困难,尤其是在需要安全传输密钥的情况下。
• 常见对称加密算法:AES(高级加密标准)、DES(数据加密标准)、3DES(三重数据加密算法)。
- 非对称密钥(Asymmetric Key):
• 在非对称加密算法中,使用一对相关的密钥:公钥(Public Key)和私钥(Private Key)。公钥用于加密,私钥用于解密。即使公钥公开,只有拥有对应私钥的人才能解密数据。
• 优点:安全性较高,不需要在通信前共享密钥。
• 缺点:加密和解密的速度比对称加密慢,适合加密较小的数据或用于密钥交换。
• 常见非对称加密算法:RSA、ECC(椭圆曲线加密)、DSA(数字签名算法)。
- 会话密钥(Session Key):
• 会话密钥是一种临时密钥,通常在一个通信会话期间生成并使用。会话结束后,密钥被废弃。会话密钥可以使用对称加密算法生成,并在非对称密钥加密的帮助下安全传输。
• 应用:HTTPS协议中的SSL/TLS握手过程中,会使用非对称加密来安全地交换会话密钥,然后使用会话密钥进行后续的数据加密。
2.2 密钥的长度
密钥长度(Key Length)是指加密算法中使用的密钥的位数(bit数)。密钥长度直接影响加密算法的安全性和性能,是衡量加密强度的重要指标之一。较长的密钥通常意味着更强的安全性,但也会影响加密和解密的速度和资源消耗。
密钥长度对安全性的影响
1. 抵抗暴力破解:
• 暴力破解(Brute Force Attack)是指通过枚举所有可能的密钥组合来解密数据的攻击方式。密钥长度越长,可能的密钥组合数就越多,从而增加了暴力破解的难度和时间。
• 举例:对于一个64位的密钥,有2^{64}种可能的组合,而对于一个128位的密钥,则有2^{128}种可能的组合。由于密钥长度的增加,攻击者需要尝试的组合数量呈指数级增长,从而显著提升安全性。
2. 算法的安全余量:
• 除了防止暴力破解外,密钥长度还为抵御其他类型的攻击(如数学分析、量子计算等)提供了安全余量。随着计算能力的提升和新的攻击方法的出现,较短的密钥可能不再安全。
• 例如,早期广泛使用的DES算法使用56位密钥,已经被认为不安全。现代加密标准如AES通常使用128位、192位或256位密钥,具有更高的安全性。
3. 与算法类型相关:
• 对称加密和非对称加密的密钥长度具有不同的安全性要求。
• 对称加密(如AES):通常建议使用至少128位的密钥长度。256位密钥提供了更高的安全性,但在大多数情况下,128位密钥已经足够安全。
• 非对称加密(如RSA):由于非对称加密算法的复杂性,其密钥长度通常需要更长才能达到相似的安全性。例如,2048位的RSA密钥通常被认为等效于128位对称密钥的安全性。
密钥长度对性能的影响
1. 计算资源消耗:
• 较长的密钥需要更多的计算资源来进行加密和解密操作,这可能会导致加密和解密速度变慢,特别是在处理大数据量时。
• 在对称加密中,虽然较长密钥会增加运算时间,但对性能的影响通常较小。而在非对称加密中,密钥长度的增加对性能的影响更为显著,因为非对称加密本身计算复杂度较高。
2. 存储和传输开销:
• 较长的密钥需要更多的存储空间和传输带宽。在一些资源受限的环境中,如嵌入式系统或物联网设备,这可能成为一个限制因素。
3. 实际使用中的权衡:
• 在选择密钥长度时,需要在安全性和性能之间进行权衡。对于绝大多数应用场景,使用标准推荐的密钥长度可以在安全性和性能之间取得平衡。
• 例如,在HTTPS通信中,通常使用2048位或以上的RSA密钥来进行SSL/TLS握手,而使用128位或256位的AES密钥来加密传输的数据。
现代加密标准中的密钥长度
• AES(对称加密):
• 支持128位、192位和256位密钥长度。128位密钥已足够安全,而256位密钥提供更高的安全性,但计算开销略大。
• RSA(非对称加密):
• 常用的密钥长度为2048位或4096位。随着计算能力的提升,2048位已成为最低安全标准,4096位则提供更高的安全性,但性能消耗也更大。
• ECC(椭圆曲线加密):
• ECC的安全性在较短的密钥长度下也能保持高水平。比如,256位的ECC密钥被认为具有与3072位RSA密钥相当的安全性,且性能表现更优。
总结
密钥长度是影响加密算法安全性的重要因素,较长的密钥提供更强的防护能力,但也会增加计算和资源的开销。在选择密钥长度时,应考虑应用场景的安全需求、计算能力以及可能的未来威胁。当前普遍采用的密钥长度通常能在安全性与性能之间取得较好的平衡。
2.3 加密算法
常用的加密算法可以分为对称加密算法、非对称加密算法和哈希算法三大类。每种算法有不同的应用场景和特点。以下是常用的加密算法:
2.3.1 对称加密算法
在对称加密中,加密和解密使用的是相同的密钥。这种加密方式计算速度较快,适用于加密大量数据。
- AES(Advanced Encryption Standard,先进加密标准):
• 描述:AES是目前最广泛使用的对称加密算法,采用128位、192位或256位密钥。
• 应用
版权归原作者 sinat_33536503 所有, 如有侵权,请联系我们删除。