Tls
什麼是 PCT_SSL_CIPHER_TYPE_1ST_HALF?
我正在編寫一個工具來評估 SSL/TLS 服務的安全狀況,並遇到了一個有趣的結果。我遍歷了所有定義的密碼套件來測試哪些可以協商(就像 sslscan 一樣),發現一個不尋常的 PCT 相關密碼套件
PCT_SSL_CIPHER_TYPE_1ST_HALF
(0x830004) 似乎被許多站點接受。我知道PCT是 TLS 的先驅,以及早期的 SSL 實現,但我找不到任何關於什麼
PCT_SSL_CIPHER_TYPE_1ST_HALF
是什麼的資訊,或者為什麼現代 SSL/TLS 堆棧會成功協商它。這是什麼套房?為什麼我可以談判?
像往常一樣,經過幾天的研究,我問了一個問題,然後立即意識到答案:我做錯了。
我的定義包括以下“套件”:
SSL2_RC4_128_WITH_MD5 0x010080 SSL2_RC4_128_EXPORT40_WITH_MD5 0x020080 SSL2_RC2_CBC_128_CBC_WITH_MD5 0x030080 SSL2_RC2_CBC_128_CBC_WITH_MD5 0x040080 SSL2_IDEA_128_CBC_WITH_MD5 0x050080 SSL2_DES_64_CBC_WITH_MD5 0x060040 SSL2_DES_192_EDE3_CBC_WITH_MD5 0x0700C0 SSL2_RC4_64_WITH_MD5 0x080080 CT_SSL_CERT_TYPE 0x800001 PCT_SSL_CERT_TYPE 0x800003 PCT_SSL_HASH_TYPE 0x810001 PCT_SSL_HASH_TYPE 0x810003 PCT_SSL_EXCH_TYPE 0x820001 PCT_SSL_CIPHER_TYPE_1ST_HALF 0x830004 PCT_SSL_CIPHER_TYPE_2ND_HALF_40 0x842840 PCT_SSL_CIPHER_TYPE_2ND_HALF_128 0x848040 PCT_SSL_COMPAT 0x8F8001
TLS 的密碼套件說明符長度為 16 位。我的程式碼,當給定這些 24 位標識符時,會忽略高 8 位。這意味著我確實掃描了幾次 0x0080、0x0040、0x00C0、0x0001、0x0003、0x0004 (*)、0x2840、0x8040 和 0x8001。
由於 0x0004 是
RSA_WITH_RC4_128_MD5
,並且目標伺服器支持該套件,因此我的程式碼錯誤地報告PCT_SSL_CIPHER_TYPE_1ST_HALF
已啟用。剛好巧合。其他值與啟用的密碼套件不一致,因此這是唯一出現的值。我現在刪除了這些定義,因為它們對於 SSL/TLS 是錯誤的。
傻我!