面试题答案
一键面试常见防范措施及工作原理
- 使用证书链验证
- 原理:客户端收到服务器的证书后,沿着证书链从服务器证书开始,依次验证每个证书的签名。根证书是被客户端信任的基础,中间证书由根证书或其他上级中间证书签名,服务器证书由上级中间证书签名。通过这种层层验证签名的方式,确保证书的真实性和合法性,防止中间人伪造证书。
- 证书固定(PublicKey Pinning)
- 原理:在客户端代码中预先设置服务器证书的公钥或公钥的哈希值。当客户端与服务器建立连接时,获取服务器证书中的公钥,计算其哈希值并与预先设置的值进行比对。如果一致,则认为连接是安全的,防止中间人使用伪造证书进行攻击。因为即使中间人拦截并替换了证书,其公钥哈希值与预先固定的值不匹配,客户端就能识别出来。
- HTTP严格传输安全(HSTS)
- 原理:服务器通过在HTTP响应头中添加
Strict - Transport - Security
(HSTS)字段,告知浏览器在一定时间内只能通过HTTPS访问该网站。浏览器在这个时间周期内,会自动将所有对该域名的HTTP请求转换为HTTPS请求,避免用户手动输入HTTP网址或受到中间人攻击诱导访问HTTP页面,从而防止中间人在HTTP连接过程中进行攻击。
- 原理:服务器通过在HTTP响应头中添加
- OCSP Stapling(在线证书状态协议装订)
- 原理:传统的OCSP是客户端直接向证书颁发机构(CA)的OCSP服务器查询证书状态,存在隐私和性能问题。OCSP Stapling则是服务器主动向CA的OCSP服务器获取证书状态信息,并将其包含在TLS握手过程中发送给客户端。客户端直接验证服务器发来的证书状态信息,而无需与CA的OCSP服务器交互,减少了中间人篡改证书状态查询结果的机会,同时也提高了验证效率。
- 使用完美前向保密(PFS)
- 原理:在每次会话中,客户端和服务器使用临时生成的密钥对(如Diffie - Hellman密钥交换生成的密钥)来加密通信数据。即使攻击者获取了长期私钥(如服务器的RSA私钥),由于每个会话的密钥是临时生成且独立的,之前的通信内容依然无法被解密,从而防止中间人通过获取长期密钥来破解历史通信记录。