Tls

什麼是 PCT_SSL_CIPHER_TYPE_1ST_HALF?

  • January 8, 2016

我正在編寫一個工具來評估 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 是錯誤的。

傻我!

引用自:https://crypto.stackexchange.com/questions/31775