面试题答案
一键面试TCP/IP协议栈自身安全策略
- 序列号与确认号机制:
- 检测中间人攻击:TCP连接通过序列号和确认号来保证数据的有序传输和完整性。中间人若篡改数据,接收方计算的确认号可能与发送方预期不符,导致连接异常,从而检测到攻击。
- 抵御中间人攻击:合法通信双方按照序列号和确认号规则进行数据传输,中间人很难伪造正确的序列号和确认号,使得篡改数据难以成功融入正常通信流。
- 三次握手与四次挥手:
- 检测中间人攻击:在三次握手过程中,若中间人试图伪造SYN、ACK等包,通信双方可能无法完成正常的三次握手,如一方收到异常的ACK包,可察觉攻击。
- 抵御中间人攻击:三次握手建立起合法的TCP连接,后续数据在该连接基础上传输,未通过三次握手的中间人难以插入数据。四次挥手用于正常关闭连接,若中间人干扰,会导致连接关闭异常,可被检测。
- 校验和:
- 检测中间人攻击:TCP和IP协议都有校验和字段。发送方计算校验和并填充,接收方重新计算校验和与接收到的校验和对比,若不一致则说明数据在传输过程中被篡改,可检测到中间人攻击。
- 抵御中间人攻击:校验和机制使得中间人篡改数据后很难保证校验和仍正确,增加了中间人成功攻击的难度。
后端开发增强防御机制
- 利用SSL/TLS协议:
- 协议特性:SSL/TLS在传输层之上提供加密和身份验证。它通过数字证书验证服务器身份,防止中间人伪装成合法服务器。同时对传输数据进行加密,中间人即使截获数据也无法解读。
- 开发技巧:在后端开发中,使用支持SSL/TLS的库(如OpenSSL)来配置服务器端的加密通信。例如在Web开发中,配置Web服务器(如Nginx、Apache)启用HTTPS,即基于SSL/TLS的HTTP协议。
- IPsec协议:
- 协议特性:IPsec工作在网络层,为IP数据包提供加密、完整性保护和身份验证。它可以建立安全关联(SA),在两个端点之间提供安全通信通道。
- 开发技巧:在后端开发中,对于需要更高网络层安全的应用,可以配置IPsec VPN。一些操作系统提供了配置IPsec的工具和接口,开发者可以利用这些接口来管理和维护IPsec连接。
- 数字签名:
- 协议特性:利用非对称加密算法,发送方用私钥对数据摘要进行签名,接收方用发送方公钥验证签名。这保证了数据的完整性和发送方身份的真实性,中间人无法伪造签名。
- 开发技巧:在后端开发中,对于关键数据的传输,如配置文件更新、重要指令传递等,计算数据的哈希值,并用私钥签名,接收方收到数据和签名后,用公钥验证签名和数据的一致性。
- 双向认证:
- 协议特性:不仅服务器验证客户端身份,客户端也验证服务器身份。常见于一些企业级应用或安全要求较高的场景,防止中间人伪装成合法的服务器或客户端。
- 开发技巧:在后端开发中,基于证书的双向认证可通过配置服务器和客户端证书来实现。例如在基于HTTP的应用中,配置Web服务器要求客户端提供证书进行认证,后端代码验证客户端证书的合法性。