面试题答案
一键面试前向保密机制工作原理
- 密钥交换:
- 在TLS握手阶段,客户端和服务器使用Diffie - Hellman(DH)等密钥交换算法。例如,客户端和服务器各自生成一对公私钥(以DH算法为例,双方基于相同的素数和底数,各自生成私钥并计算出对应的公钥)。
- 客户端将自己的公钥发送给服务器,服务器也将自己的公钥发送给客户端。
- 双方基于收到的对方公钥和自己的私钥,计算出一个共享的密钥(例如在DH算法中,通过特定计算得到相同的共享密钥)。这个共享密钥用于后续生成会话密钥。
- 会话密钥生成:
- 基于上述共享密钥,结合其他信息(如随机数等),通过密钥派生函数(KDF)生成用于本次会话的对称加密密钥(如AES - GCM等算法使用的密钥)。
- 后续数据传输阶段,双方使用这个对称加密密钥对数据进行加密和解密。
关键密码学概念
- Diffie - Hellman密钥交换:
- 这是一种允许双方在不安全的通信信道上协商出一个共享密钥的方法。其核心原理基于离散对数问题的难解性。例如,给定一个大素数
p
和一个生成元g
,计算g^a mod p
相对容易(a
是私钥),但从g^a mod p
反向计算出a
在计算上是不可行的(当p
足够大时)。客户端和服务器各自计算自己的公钥并交换,然后基于对方公钥和自己私钥计算出共享密钥。
- 这是一种允许双方在不安全的通信信道上协商出一个共享密钥的方法。其核心原理基于离散对数问题的难解性。例如,给定一个大素数
- 密钥派生函数(KDF):
- 它是一种从一个主密钥(如DH交换得到的共享密钥)派生出多个不同用途的密钥(如加密密钥、认证密钥等)的算法。KDF通常结合盐值(如随机数)和其他参数,以增加派生密钥的安全性和唯一性。例如,HKDF(HMAC - based Key Derivation Function)就是一种常用的KDF,它使用HMAC函数从输入密钥材料派生出所需的密钥。
- 公私钥对:
- 在密钥交换过程中,客户端和服务器都生成公私钥对。私钥由一方秘密保存,公钥则用于交换给对方。公私钥对在非对称加密中起着关键作用,在TLS中主要用于密钥交换和身份验证(如在基于证书的认证中,服务器使用私钥对某些信息签名,客户端使用服务器证书中的公钥验证签名)。