|
論壇說明 | 標記討論區已讀 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2003-12-11, 07:38 PM | #1 |
榮譽會員
|
菜鳥教學--密碼學概述
文章題目:菜鳥教學--密碼學概述
作 者: WiNrOOt 常用工具:RSATool2v17 ,CC 1.1 (beta 6) ,MD5 Brute Forcer ,CrypTooL v 1.2(christal), DAMN Hash Calculator,dsatoolv13,EccTool 1.2 BY StKman hash 0.35 by yyxzz[CCG](yyxzz是著名灌水組織WaterClub[WC]的發起人和領導者^_^) 聲 明: 本文是一篇基礎教學文章,對密碼學進行了大概的介紹,為菜鳥(和我一樣的人)以後學習研究密碼學提供 一些基礎. 目錄: 一.前言 二.密碼學概念及常用術語 三.密碼學算法分類及簡單介紹 四.總結 ******************************************************************************************** * 前言 * ******************************************************************************************** 我愛說廢話,大家不要煩! 初學破解者大都是從明碼比較到算法分析,在學習程序中總能聽到一些算法屬於密碼學. 一聽到密碼學大家都感到有點玄,感到很神秘.網上關於特定的某個算法的文章還是有不少的, 但是很少有一篇文章來把各個算法合在一起,系統的講一下,使大家對密碼學有個大致的瞭解. 所以就有了我這篇廢文. 廢話少說,我們來說正題,省得浪費大家時間^_^ ******************************************************************************************** * 密碼學概念及常用術語 * ******************************************************************************************** 密碼學 顧名思義就是 研究密碼 的一門學科(雞蛋,香蕉皮,拖鞋................!@#$%^&*) 密碼學最早適用於軍事通訊領域,他從誕生的那天起就決定了他的主要作用就是 通訊加密(並非是專門用於編寫軟體註冊算法),這一點很重要,這樣使我們可以比較密碼學的用語與 軟體註冊算法用語的差別,以及在使用上的差別. 一 下面先來一些名詞解釋: 1.加密系統:由算法以及所有可能的明文,密文和密鑰組成. 2.密碼算法:密碼算法也叫密碼(cipher),適用於加密和解密的數學函數.(通常情況下, 有兩一個用於解密個相關的函數: 一個用於加密,兩一個用於解密) 3.明文(plaintext):未被加密的消息. 4.密文(ciphertext):被加密的消息. 5.加密(encrypt),解密(decrypt): kao這還用解釋嗎?玩我? 凸-_-凸 用某種方法偽裝消息以隱藏他的內容的程序稱為加密. 解密…………………自己想^_^ 6.密鑰(key):這個概念不好解釋(有種只可意會不可言傳的意思^_^我水準不夠),密鑰就是參與加密及解密算法 的關鍵資料.沒有他明文不能變成密文,密文不能明文,畫個圖來解釋把 加密密鑰 解密密鑰 | | 明文----->【加密】----->密文----->【解密】----->明文 註:有時候:加密密鑰=解密密鑰 二 密碼分析學:密碼分析學是在不知道密鑰的情況下,恢復出明文的學科. 請大家注意這個句子的定語:在不知道密鑰的情況下!!!!!!!!!!!! 有什麼要注意的?後面再說!!^_^ ******************************************************************************************** * 密碼學算法分類及簡單介紹 * ******************************************************************************************** 一傳統密碼學 這類加密方法算是加密算法的鼻祖,從古代一直套用到到近代。當然它主要還是套用於軍事。 現在很少有人用這種方式加密這裡只是簡單的提一下,如果你想詳細瞭解請查閱相關資料。 1。簡單替代密碼:凱撒(Caesar)。 2。多表替代密碼:維吉尼亞(Vigenere)。 3。換位密碼 4。轉輪機:恩尼格馬(Enigma)。 註:他們都不能算是電腦密碼算法,因為那時候還沒有電腦。^_^ 二對稱算法 對稱算法(symmetric algorithm)就是加密密鑰能夠從解密密鑰中推算出來,反過來也成立。在大多數對稱算法中,加/解密密鑰是相同的。 對稱算法可分為兩類: 1。序列密碼(stream cipher):一次只對明文中的單個位(有時對字元)運算的算法。 常用的序列密碼算法有:A5(GSM用的加密算法,千萬不要告訴我你不知道GSM是什麼,看看你的手機^_^) RC4,SEAL,WAKE,PKZIP。 2。分組密碼(block cipher):對明文的一組位進行運算的算法,典型的分組長度是64位。 一般的分組密碼算法有:DES&DES各種變形,IDEA,RC2,GOST,BLOWFISH,RC5,MISTY1,CAST128, CAST256,AES.MARS,RC6,Rijndael,TEA,3-WAY,Twofish………… 對稱算法的加/解密方式: 密鑰 密鑰 | | 明文----->【加密】----->密文----->【解密】----->明文 就是如此。 聰明的您很快就會發現:對稱算法如果套用於通訊中,我們可以比較簡單的得到密文。但是對於解密關鍵的密鑰,我們是很難獲取的。這時我們就需要一種密碼的攻擊方式:唯密文攻擊。這需要套用到密碼分析學的知識。搞這些的都是高人,需要有深厚的數學功底,超強的耐心還有一點點運氣。^_^ 看到這裡可能有一些人覺得這麼困難我放棄,千萬不要放棄,我們要看一下上段話的條件,那是用於通訊中。而我們要分析的是共享軟體加密算法^_^。 而當我們將對稱算法套用到共享軟體加密的時候,我們能比較容易得到軟體註冊算法的密鑰,因為共享軟體(大部分)的密鑰經過反彙編後我們都能找得到,就在進入加密算法前我們能看到密鑰,得到密鑰後,又知道是哪種算法,這樣很簡單的就可得到密文(明文),我們可以借助各種算法工具來…………^_^。 這就是對稱算法在共享軟體加密上套用的一個軟肋,如何克服?我們來引用看雪書上的一段話:若要採用對稱算法驗證註冊碼,正確的使用方法是把用戶輸入的註冊碼(或者註冊碼的一部分,註冊碼的散列值)作為加密算法或者解密算法的密鑰。這樣,解密這項要找到一個正確的註冊碼時,只能採用窮舉法。 這樣可以加大分析的難度,但是當有一個正確的註冊碼後,還是可以攻破的,這就靠你自己了。^_^ 三單向散列函數算法(hash) 單向散列函數H(M)作用於任意長度的消息M,他返回一類BIOS長度的散列值h: h=H(M) 其中h的長度為m。 輸入為任意長度且輸出為類BIOS長度的函數有很多種,但單向散列函數具有使其單向的如下特徵: * 給定M,很容易計算h。 * 給定h,根據H(M)=h計算M很難。 * 給定M,要找到另一條消息M'並滿足H(M)=H(M')很難。 這就是定義,簡單的說就是他能把任意長度的消息變成一個類BIOS長度的散列值(是散列值而不是字串串) 但是你從散列值很難推出他的消息。而且不存在兩個不同的消息有相同的散列值的情況。 由定義和這些特性我們可以得出單項散列算法,是不能單獨用於共享軟體加密,這樣會非常容易被破解或者作者本人就很難得到註冊碼。所以單向散列函數算法,在通訊中套用於數字簽名,消息的完整性檢測,消息起源的驗證等,當它套用於共享軟體加密就只能作為加密的一個中間步驟。 一般情況下,破解者是不需要瞭解hash函數的具體內容,只要能鑒別是何種算法就行了。 一般的單向散列函數算法有: HAVAL, MD2, MD4, MD5, PanamaHash, RIPEMD160, SHA, SHA256, SHA384, SHA512, Tiger 「winroot」的各種散列值 MD2_128 : EFCB691878944AC42E1FD7F044FAF8D0 MD4_128 : D3E81CD9EF4A4854017B3E37E0D7E545 MD5_128 : F366A5751A638525F5226D25D446B018 SHA160 : 860A3EA72714EFFBED4D35218D3C3FD662B4113B SHA256 : DE0B5A0FC4BADDB8BED3859FE024562E79B6D05E1ACEF7644E361574C223CF08 SHA384 : 54FAD90387747873ED77F7029A2C458C25AF0C1D74EC7EC8BFC3F91A0A03B42E78F39E345AB499FC659054C8C5ACDA05 SHA512 : 7387E2037B225651F2C859BBC09C2C43E1F8F081E75CDDFDAC6DB16792F7008C0BD15B9E2B715004D2EBC6E5A5E8A62394EC7B76439578EE4814641B395820C6 RIPEMD160: 1FE6301049FAF5A3221BBDCB802ACCE3E609EC37 Tiger_192: 14BEEAD7C220E46F49BDE02DDB17D23BA315A012309772D5 PanamaHash_256: A5A9DE1855766746B9AFCA26D3C08C8DAD2E51E0EBF5F8BB5059CD084A8000B9 HAVAL(128bit,pass=3): C004F3C26B8BA5390C036654002BFC5B HAVAL(160bit,pass=3): 624D82E66D1C496A8DBC385B3732857821B2E6E0 HAVAL(192bit,pass=3): E9C02C115CF4026E13FE204601FB4E9E2FB56A715B7E7207 HAVAL(224bit,pass=3): 416ADBD1C21472D79856B77E7FE2C31F21332C68EFE70F1A2DD16730 HAVAL(256bit,pass=3): C59A131E3C8A0519B248AA7D70CD6153F64F44B62337471BAE01ACE985468A56 HAVAL(128bit,pass=4): A53DAB690512E28AB714F76A25A1FCC1 HAVAL(160bit,pass=4): 63C9A7871EDFAE9505A5C34F4309972431F09EB6 HAVAL(192bit,pass=4): A4FA8440A261995965BD3DFB27B03E6FD4F43462094B0D8A HAVAL(224bit,pass=4): DC6E5EB71A02637A7A5D53BC84DD60904F136989BD73DFAF3CF88E2C HAVAL(256bit,pass=4): 5070D8015AA9A849A6DF4F7FF8F154A3F626B841720AF12D2DB866E782D6AF24 HAVAL(128bit,pass=5): 2D0B887087B7AB076FA34334D553C532 HAVAL(160bit,pass=5): 028EC2A53F09CF0C527F176D73C7F8EC2FFD22FF HAVAL(192bit,pass=5): A5320BDB1771C4872A4DAC85DF49DC41D01F513EF6A393BF HAVAL(224bit,pass=5): 8B687C32D71699ED80F886BA7DB37F8B1BEFDDA027111B7A73F92442 HAVAL(256bit,pass=5): EA2D86A050C2707FCA1AAF5B42D3B4C632A6372ECA9877C203365B59B46950E4 常用工具:DAMN Hash Calculator,hash 0.35 by yyxzz[CCG](yyxzz是著名灌水組織WaterClub[WC]的發起人和領導者^_^) 四公開密鑰算法 公開密鑰算法(public-key algorithm,也叫非對稱算法):用做加密的密鑰不同於用作解密的密鑰,而且解密密鑰不能根據加密密鑰計算出來(至少在合理假定的長時間內)。 之所以叫做公開密鑰算法,是因為加密密鑰能夠公開,即陌生人可以用加密密鑰加密信息,但只有用相應的解密密鑰才能解密信息。 加密密鑰也叫做公開密鑰(public-key,簡稱公鑰),解密密鑰叫做私人密鑰(private key,簡稱私鑰) 請大家注意,上面說到的用公鑰加密,私鑰解密是用於通訊嶺域中的信息加密。在共享軟體加密算法中,我們用的是用私鑰加密,公鑰解密,即公開密鑰算法的另一用途--數字簽名。 關於 公開密鑰算法的安全性我們引用看雪書上的一段話: 「公開密鑰算法的安全性都是關於複雜的數學難題。根據所給予的數學難題來分類,有以下三類系統目前被認為是安全和有效的:大整數因子分解系統(代表性的有RSA),離散對數系統(代表性的有DSA,ElGamal)和橢圓曲線離散對數系統(代表性的有ECDSA)」 一般公開密鑰算法: RSA 能用於信息加密和數字簽名 ElGamal 能用於信息加密和數字簽名 DSA 數字簽名 ECDSA 能用於信息加密和數字簽名 公開密鑰算法將成為共享軟體加密算法的主流,因為它的安全(當然還是作者的使用)。以RSA為例:當N的位數大於1024後(強素數),現在認為無法分解。 ******************************************************************************************** * 結語 * ******************************************************************************************** 說了這麼多廢話,就是讓菜鳥們對密碼學有個大致的瞭解。謝謝大家捧場!! 好了,密碼學算法我就介紹到這裡,具體的算法描述自己找資料,我這裡只是概述,找不到資料?請訪問www.google.com找不到你來找我^_^。 主要參考文獻 Bruce Schneier 《套用密碼學》,機械工業出版社 娃娃 《MD5的介紹,算法以及實現》 ZMWorm[CCG] 《ECC加密算法入門介紹》 娃娃 《DSA算法的理論,實現,以及在破解中的套用》 blowfish 《如何用非對稱密碼算法製作共享軟體的註冊碼》 WiNrOOt 2003-10-2 |
送花文章: 3,
|