Bootstrap

高级网络安全——SSL/TLS, HTTPS, VPN(week4)

一、前言

二、重点概念

1. 安全外壳(SSH)

  • SSH = Secure Shell(安全壳)
    • 最初设计用于替代不安全的rsh和telnet工具。
    • 主要用于安全的远程管理(通常是Unix系统)。
    • 后来,SSH被用于提供网络应用程序的通用安全通道。
    • 只保护明确指定的流量。
    • 应用程序需要进行修改,但端口转发在一定程度上简化了这个过程。

2. SSH概述

SSH协议栈采用三层架构:

  • SSH传输层协议

    • 负责初始连接。
    • 服务器认证。
    • 通过密钥交换等方式在客户端和服务器之间建立安全通道。
  • SSH认证协议

    • 在安全的传输层通道上进行客户端认证。
  • SSH连接协议

    • 在一个传输层协议的安全通道上支持多个连接。
    • 提高了效率(会话复用)。

3. SSH-2的安全目标

  • 服务器认证:在传输层协议中进行服务器认证。
  • 客户端认证:通过公钥(DSS,RSA)或简单密码在认证协议中进行客户端认证。
  • 建立新的共享密钥
    • 共享密钥用于派生进一步的密钥(加密密钥、MAC密钥、IV等),类似于SSL/TLS。
    • 用于SSH传输层协议中的保密性和真实性。
  • 安全加密套件协商
    • 包括加密、MAC和压缩算法。

4. SSH传输层协议

  • 服务器认证:基于服务器的主机密钥对(公钥和密钥)。
  • 数据包交换
    • 建立TCP连接。
    • 然后可以交换数据(数据包交换)。
    • 包括标识字符串交换、算法协商、密钥交换、密钥交换结束、服务请求。
    • 服务请求:用户认证或连接协议。

5. SSH密钥指纹

  • 连接的安全性依赖于服务器向客户端认证自身。
  • 当你第一次连接到远程主机时,主机会将其公钥发送到你的本地电脑以识别自己。为了帮助你验证主机的身份,主机会向你展示其公钥的指纹供你验证。
  • 许多用户会盲目接受展示的密钥。
  • SSH对普通大众来说并不友好。

6. SSH密钥指纹

  • 通过Diffie-Hellman密钥交换建立密钥。
    • 短暂的Diffie-Hellman密钥交换。
  • 服务器认证通过RSA或DSS签名进行。
  • 采用HMAC-SHA1或HMAC-SHA256作为MAC算法。
  • 采用3DES、AES、RC4等作为加密算法。

7. SSH-2算法

SSH传输层协议
  • Diffie-Hellman密钥交换
    • 客户端生成一个随机数xc并计算yc = g^xc mod p
    • 客户端将yc发送给服务器。

8. SSH传输层协议

Diffie-Hellman密钥交换
  • 服务器生成一个随机数xs并计算ys = g^xs mod p
  • 服务器计算共享密钥K = yc^xs mod p

9. SSH传输层协议

Diffie-Hellman密钥交换
  • 服务器计算交换的哈希值H = hash(idC || idS || initC || initS || PKS || yc || ys || K)
    • idSidC:服务器和客户端的标识字符串。
    • initSinitC:服务器和客户端的初始消息。

10. SSH传输层协议

Diffie-Hellman密钥交换
  • 服务器对交换的哈希值H生成签名signature = SignSKS(H),并将(ys, PKS, signature)发送给客户端。

11. SSH传输层协议

密钥派生
  • 在密钥交换之后,服务器和客户端都获得了两个共享值:
    1. 共享的密钥值K
    2. 交换的哈希值H
  • 加密密钥和MAC密钥是从KH派生的。
  • 第一次密钥交换的交换哈希值H还用作会话标识符。

12. SSH传输层协议

密钥派生
  • 加密密钥的计算方法是:将共享密钥K和哈希值H组合并进行哈希运算。
    • 客户端到服务器的初始IVhash(K || H || "A" || session id)
    • 服务器到客户端的初始IVhash(K || H || "B"
;