在加密過程中,Type7將首先從壹個具有26位ASCII的字符表中生成壹個隨機種子,並將該種子分解為兩位數字並將其放在密碼的前兩位數字中;將隨機種子與明文密碼的第壹個字符進行異或運算,以生成放置在3位和4位中的密文;然後將1加到隨機種子中,將其與第二個字符進行異或運算,然後將其放在後續位置...逐位運算完成運算,形成密文。
解密過程是加密過程的逆操作。首先從前兩位獲得種子,然後逐步從密文中提取字符並與ASCII字符表進行異或運算,最後恢復密文。
1.密碼很容易被反推。
據報道,思科的26位ASCII字符列表定義如下:
我們可以很容易地從密文和加密算法中推導出真正的明文密碼。關於這方面,網上有很多相關的資料和工具,這裏就不贅述了。
2.字符表爆破的風險很高。
其實我更想說的是,即使思科的26位字符列表沒有泄露,也很容易爆炸。它的復雜度只與加密字符的長度有關,有很大的被炸毀的風險,下面我們會詳細分析。
PassLib是壹個基於python的密碼哈希庫,它提供了30多種密碼哈希算法的跨平臺實現和壹個管理現有密碼哈希的框架。PassLib還實現了Cisco Type7密碼,我用它來驗證Type7的加密強度。
PassLib需要基於Python環境,因為我安裝了Anaconda,所以我安裝PassLib庫的命令是:
當然,您也可以選擇安裝Python3並與pip3壹起安裝。
在第壹步中,我測試了cisco_type7類的生成。
結果如下:
可以看出密文長度等於明文長度X2+2。例如:h1明文cisco123的長度為7,密文長度為16;h2的明文長度為14,密文長度為30。
在第二步中,我們推導出加密結果的重復。
結果如下:
同壹密碼加密5000次有16種不同的密文。知道了算法,我們很容易推斷出PassLib使用16位ASCII字符表作為種子。
同樣,在不同的環境中,我們可以設置壹個足夠長的明文,使其可以通過Type7加密進行加密,然後通過逐位推導來推導字符表,從而使加密不再可靠。
總之,Type7加密方法是爆炸性和可逆的,並且不安全。到目前為止,壹些設備仍在使用它,我猜原因可能只是方便。