查看單個文章
舊 2003-12-11, 07:38 PM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 菜鳥教學--密碼學概述

文章題目:菜鳥教學--密碼學概述

作 者: 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
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次