这个指纹问题是在客户端
我手头的Surge for mac 3.5.2(1082)的情况(未指定使用TLS1.3):TLS部分使用的应该是OpenSSL,所以单看Cipher Suites的话,这部分是标准的OpenSSL的特征:
Cipher Suites (31 suites)
Cipher Suite: TLS_AES_256_GCM_SHA384 (0x1302)
Cipher Suite: TLS_CHACHA20_POLY1305_SHA256 (0x1303)
Cipher Suite: TLS_AES_128_GCM_SHA256 (0x1301)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 (0xc02c)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030)
Cipher Suite: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (0x009f)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca9)
Cipher Suite: TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xcca8)
Cipher Suite: TLS_DHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (0xccaa)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 (0xc02b)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (0xc02f)
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 (0x009e)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 (0xc024)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (0xc028)
Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 (0x006b)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 (0xc023)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (0xc027)
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 (0x0067)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (0xc00a)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (0xc014)
Cipher Suite: TLS_DHE_RSA_WITH_AES_256_CBC_SHA (0x0039)
Cipher Suite: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (0xc009)
Cipher Suite: TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (0xc013)
Cipher Suite: TLS_DHE_RSA_WITH_AES_128_CBC_SHA (0x0033)
Cipher Suite: TLS_RSA_WITH_AES_256_GCM_SHA384 (0x009d)
Cipher Suite: TLS_RSA_WITH_AES_128_GCM_SHA256 (0x009c)
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA256 (0x003d)
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA256 (0x003c)
Cipher Suite: TLS_RSA_WITH_AES_256_CBC_SHA (0x0035)
Cipher Suite: TLS_RSA_WITH_AES_128_CBC_SHA (0x002f)
Cipher Suite: TLS_EMPTY_RENEGOTIATION_INFO_SCSV (0x00ff)
0000 13 02 13 03 13 01 c0 2c c0 30 00 9f cc a9 cc a8 ......À,À0..̨̩
0010 cc aa c0 2b c0 2f 00 9e c0 24 c0 28 00 6b c0 23 ̪À+À/..À$À(.kÀ#
0020 c0 27 00 67 c0 0a c0 14 00 39 c0 09 c0 13 00 33 À'.gÀ.À..9À.À..3
0030 00 9d 00 9c 00 3d 00 3c 00 35 00 2f 00 ff .....=.<.5./.ÿ
因此光就这个来看,不会被识别出是v2ray-core的客户端,可能会被识别出来是使用OpenSSL进行TLS连接的客户端。
不过我把相应的Client Hello包的pcap提交到tlsfingerprint.io,结果它的整个fingerprint跟一般OpenSSL的也是不一样的,目前tlsfingerprint.io上没有找到已有记录(这个网站只记录the University of Colorado Boulder校园范围内出现的Client Hello包)。也就是说Surge for mac的特征与常用的应用不匹配,而且因为用的人少,tlsfingerprint.io上都找不到记录。
所以我认为,你可以这样理解:
- 以v2ray-core的Client Hello包的Cipher Suits特征为标的做检测不会把Surge for mac识别出来
- 如果要针对Surge for mac的Cipher Suits特征做检测,则会误伤其他流量大得多的使用OpenSSL的应用。
- 当然,如果非要针对它,结合整个Client Hello包里的其他特征,去做特征检测,也是有可能把Surge for mac检测出来的。但Surge for mac在v2ray客户端中占比太小,实际上是否值得这样去做是存疑的。