使用 tcpdump 工具,捕获并分析
一、 文章概述
使用 tcpdump 工具,捕获并分析了与 SM-DP+(Subscription Management Data Preparation+) 服务器之间进行 TLS(Transport Layer Security) 握手的过程的数据包,并对其进行了详细解读。
二、 主要内容
1. SM-DP+ 服务器信息
- 服务器地址:
rakuten.prod.ondemandconnectivity.com
- 该域名表明可能正在使用 Thales(前身为 Gemalto) 提供的 eSIM(嵌入式 SIM) 解决方案。
- eSIM 是一种无需物理 SIM 卡即可激活移动服务的解决方案,SM-DP+ 是其关键组件,负责管理运营商与设备之间的通信和凭证管理。
2. TLS 握手过程分析
详细记录每个步骤中交换的消息和参数:
(1) Client Hello (LPA -> SM-DP+)
- 内容类型: 握手协议 (22)
- TLS 版本: 1.2 (0x0303)
- 随机数: 包含 GMT Unix 时间(2060-09-28 02:32:00)和随机字节,用于防止重放攻击和生成会话密钥。
- 会话 ID: 长度为 0,表示客户端不尝试恢复之前的会话。
- 密码套件列表 (14 种):
- 支持多种加密算法,包括 ECDHE(椭圆曲线迪菲-赫尔曼密钥交换) 和 RSA 密钥交换,以及 AES-128/256-GCM/AES-128/256-CBC/ChaCha20-Poly1305 等对称加密算法。
- 优先选择 ECDHE 密钥交换和 AES-256-GCM 对称加密算法。
- 扩展:
- server_name: 指定服务器名称为
rakuten.prod.ondemandconnectivity.com
,用于服务器名称指示(SNI)。 - signature_algorithms: 列出支持的签名算法,包括 ECDSA 和 RSA。
- application_layer_protocol_negotiation (ALPN): 协商应用层协议为 http/1.1。
- supported_groups: 列出支持的椭圆曲线,包括 x25519、secp256r1 和 secp384r1。
- server_name: 指定服务器名称为
(2) Server Hello (SM-DP+ -> LPA)
- TLS 版本: 1.2 (0.0303)
- 随机数: 与客户端随机数不同,用于生成会话密钥。
- 会话 ID: 长度为 32 字节,表示服务器同意恢复会话(如果客户端之前有会话)。
- 选择的密码套件: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- 使用 ECDHE 进行密钥交换,ECDSA 进行身份验证,AES-256-GCM 进行对称加密,SHA384 进行哈希运算。
- 扩展:
- renegotiation_info: 指示是否支持重新协商。
- ec_point_formats: 指定椭圆曲线点格式为 uncompressed、ansiX962_compressed_prime 和 ansiX962_compressed_char2。
- application_layer_protocol_negotiation (ALPN): 确认应用层协议为 http/1.1。
(3) Certificate (SM-DP+ -> LPA)
- 服务器向客户端发送其证书链,包括:
- 中间证书: 由 GSM Association - RSP2 Root CI1 颁发,颁发给 GEMALTO SA,有效期至 2022-08-24。
- 根证书: 由 GSM Association 颁发,颁发给 GSM Association - RSP2 Root CI1,有效期至 2052-02-21。
- 证书扩展:
- certificatePolicies: 指示证书遵循的政策。
- cRLDistributionPoints: 提供证书撤销列表 (CRL) 的 URL。
- extKeyUsage: 指定密钥用途,包括 serverAuth 和 clientAuth。
- keyUsage: 指示密钥用途,例如 digitalSignature、keyCertSign 和 cRLSign。
- subjectAltName: 包含多个 DNSName 和 registeredID,用于指示证书的替代名称。
- subjectKeyIdentifier: 提供证书主题密钥标识符。
- authorityKeyIdentifier: 提供证书颁发者密钥标识符。
(4) Server Key Exchange (SM-DP+ -> LPA)
- 服务器发送其椭圆曲线 Diffie-Hellman (ECDH) 参数,包括:
- 曲线类型: named_curve (0x03)
- 命名曲线: x25519 (0x001d)
- 公钥: 32 字节的 ECDH 公钥。
- 签名: 使用 ECDSA 算法对服务器密钥交换消息进行签名,签名算法为 ecdsa_secp256r1_sha256。
(5) Server Hello Done (SM-DP+ -> LPA)
- 服务器通知客户端已完成握手消息的发送。
(6) Client Key Exchange (LPA -> SM-DP+)
- 客户端发送其 ECDH 公钥,用于与服务器协商共享密钥。
(7) Change Cipher Spec (LPA -> SM-DP+)
- 客户端通知服务器将开始使用协商的加密算法和密钥进行通信。
(8) Finished (LPA -> SM-DP+)
- 客户端发送加密的握手消息摘要,用于验证握手过程的完整性。
(9) Change Cipher Spec (SM-DP+ -> LPA)
- 服务器通知客户端将开始使用协商的加密算法和密钥进行通信。
(10) Finished (SM-DP+ -> LPA)
- 服务器发送加密的握手消息摘要,用于验证握手过程的完整性。
三、 结论
- TLS 1.2 协议被用于保护 SM-DP+ 与设备之间的通信,确保数据传输的机密性、完整性和身份验证。
- 使用的密码套件为 TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,提供了强大的加密强度和安全性。
- 整个 TLS 握手过程遵循标准流程,展示了 eSIM 生态系统在安全性方面的严谨性。