密评实战:从TLS/SSL到IKE/SSH,一次能力验证的深度协议解析 1. 密评实战从协议分析到安全验证第一次拿到包含TLS、IKE、SSH等多种协议的数据包时我完全不知道从何下手。直到后来才发现协议分析就像侦探破案每个数据包都是关键线索。这次我们就来聊聊如何从海量数据中揪出密码学的蛛丝马迹。记得有次分析TLS握手过程我在Wireshark里盯着十六进制数据看了整整两天。直到发现Client Hello里的随机数结构4字节时间戳28字节随机数才恍然大悟原来密钥交换的起点就在这里。这种啊哈时刻正是密评工作最迷人的地方。2. TLS/SSL协议深度解析2.1 握手过程的秘密语言用Wireshark打开PCAP文件时建议先过滤tls.handshake。最近分析的一个案例中服务端竟然同时支持TLS 1.2和国密TLCP协议。关键区别在于版本号TLS 1.2使用0x0303而TLCP特意选用0x0101避免冲突。这就像两个说不同方言的人得先确认用哪种语言交流。实测抓包时常见的问题双向认证会在Certificate Request阶段多一个交互ECDHE密钥交换会多出Server Key Exchange消息TLS 1.3的证书通常合并了签名和加密功能2.2 算法套件的选择艺术去年遇到个典型场景某系统声称支持国密算法但抓包发现实际使用的是RSA_WITH_AES_128_CBC。这种声明不符的情况在密评中很常见。算法套件的命名规则其实很有规律TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 ↑密钥交换 ↑认证算法 ↑对称加密 ↑哈希算法国密套件示例ECC_SM4_SM3 ↑SM2密钥交换 ↑SM4加密 ↑SM3哈希2.3 证书验签实战技巧有次验签总失败后来发现是证书公钥格式问题。PKCS#1和PKCS#8格式的PEM文件头不同# PKCS#1 -----BEGIN RSA PUBLIC KEY----- # PKCS#8 -----BEGIN PUBLIC KEY-----推荐两个实用工具在线ASN.1解析器快速查看证书结构OpenSSL命令行openssl x509 -in cert.cer -text3. IKE协议分析要点3.1 主模式六步舞曲分析IPSec VPN时我习惯先用ikev2过滤器。主模式的六个报文就像精心编排的舞蹈协商加密算法SAi1交换DH公开值KEi身份认证IDi曾发现某设备在第三阶段使用SHA1哈希直接导致密评扣分。这提醒我们协议分析不能只看表面配置。3.2 证书配置常见坑点最近遇到的典型案例某VPN设备导出的两个证书密钥用法相同。正常情况应该一个用于加密keyEncipherment一个用于签名digitalSignature用Wireshark导出证书后一定要检查扩展字段openssl x509 -in cert.pem -noout -text | grep -A1 Key Usage4. SSH协议安全验证4.1 算法协商过程在分析SSHv2协议时重点关注KEXINIT报文。有次发现服务器支持ssh-rsa算法这已经是NIST建议淘汰的方案。安全配置建议# /etc/ssh/sshd_config HostKeyAlgorithms ecdsa-sha2-nistp256 KexAlgorithms ecdh-sha2-nistp2564.2 国密SSH特殊处理国密CSSH协议有两个显著特征使用SM2替代ECDSA进行主机认证采用SM4代替AES进行数据传输加密抓包时看到cssh标识就要特别注意其密钥交换过程与标准SSH有所不同。5. 应用层安全验证实战5.1 身份鉴别取证技巧分析UKey认证时我总结出三个关键检查点证书链是否完整验证签名操作是否真实发生使用的哈希算法强度有个取巧的方法在Wireshark里搜索MII字符串这通常是证书数据的开始标志。5.2 数据传输机密性验证上周刚遇到个典型案例登录请求明明是HTTPS但登录后的API调用却退化到HTTP。用如下过滤器快速定位http.request.uri contains password || http.request.uri contains token6. 数据存储安全分析6.1 加密特征识别分析数据库存储时我常用的三板斧看字段长度SM4密文是16字节倍数查密钥表确认密钥类型匹配验配置项是否调用加密模块曾发现某系统声称使用SM4但密文长度却是24字节——实际是3DES加密。6.2 完整性保护验证哈希值校验要注意三个细节原始数据是否包含空格等不可见字符是否进行过URL编码等预处理哈希算法输出长度是否匹配有次校验失败最后发现是因为系统在哈希前自动trim了输入字符串。7. 工具链使用心得经过多次实战我的工具组合已经固定为Wireshark协议分析主力OpenSSL证书和密钥处理在线ASN.1解析器快速查看结构十六进制编辑器处理原始数据有个小技巧在Wireshark里设置Decode As可以强制解析特定协议对国密协议特别有用。