菜鳥教學--密碼學概述 (10千字)

看雪資料發表於2015-11-15

常用工具: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,他返回一固定長度的雜湊值h:
                             h=H(M)
其中h的長度為m。
    輸入為任意長度且輸出為固定長度的函式有很多種,但單向雜湊函式具有使其單向的如下特徵:
 * 給定M,很容易計算h。
 * 給定h,根據H(M)=h計算M很難。
 * 給定M,要找到另一條訊息M'並滿足H(M)=H(M')很難。

  這就是定義,簡單的說就是他能把任意長度的訊息變成一個固定長度的雜湊值(是雜湊值而不是字串)
但是你從雜湊值很難推出他的訊息。而且不存在兩個不同的訊息有相同的雜湊值的情況。

  由定義和這些特性我們可以得出單項雜湊演算法,是不能單獨用於共享軟體加密,這樣會非常容易被破解或者作者本人就很難得到註冊碼。所以單向雜湊函式演算法,在通訊中應用於數字簽名,訊息的完整性檢測,訊息起源的驗證等,當它應用於共享軟體加密就只能作為加密的一箇中間步驟。
  一般情況下,破解者是不需要了解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

相關文章