1密碼學(xué)基礎(chǔ)
密碼學(xué)是研究數(shù)據(jù)的加密及其變換的學(xué)科。它包括兩個(gè)分支:密碼編碼學(xué)和密碼分析學(xué),密碼編碼學(xué)主要研究對信息進(jìn)行變換,以保護(hù)信息在傳遞過程中不被敵方竊取、解讀和利用的方法,密碼分析學(xué)主要研究如何分析和破譯密碼。
待加密的消息稱為明文,他經(jīng)過一個(gè)以密鑰(key)為參數(shù)的函數(shù)變換,這個(gè)過程稱為加密,這個(gè)加密的函數(shù)變換稱為加密算法,加密后的信息稱為密文。通過對密文進(jìn)行解密的到明文的過程稱為解密,用到的解密方法稱為解密算法。
從密碼學(xué)的發(fā)展歷程來看:分為古典密碼及現(xiàn)代密碼兩類。
2古典密碼算法
古典密碼學(xué)主要有兩大類:替代密碼、置換密碼。
替代密碼:將明文的字符替換為為密文的另一種字符,通過反向替換進(jìn)行解密;
置換密碼:明文中的字母按順序替換為對應(yīng)的密文中的另一種字符。
比較經(jīng)典的古典密碼有:滾筒密碼,掩格密碼、棋盤密碼、凱撒密碼、圓盤密碼,維吉尼亞密碼。
1、滾筒密碼:
為了保證通信信息的密碼性,古希臘人通過使用一根叫scytale的棍子,將信息進(jìn)行加密。送信人先將一張羊皮條繞棍子螺旋形卷起來,然后把要寫的信息按某種順序?qū)懺谏厦妫又蜷_羊皮條卷,通過其他渠道將信送給收信人。如果不知道棍子的粗細(xì)是不容易解密里面的內(nèi)容的,但是收信人可以根據(jù)事先和寫信人的約定,用同樣的scytale的棍子將書信解密。
2、掩格密碼:
16世紀(jì)米蘭的物理學(xué)和數(shù)學(xué)家Cardano發(fā)明的掩格密碼,可以事先設(shè)計(jì)好方格的開孔,將所要傳遞的信息和一些其他無關(guān)的符號組合成無效的信息,使截獲者難以分析出有效信息。
3、棋盤密碼
我們可以建立一張表,使每一個(gè)字符對應(yīng)一數(shù)(該字符所在行標(biāo)號+列標(biāo)號)。這樣將明文變成形式為一串?dāng)?shù)字密文。
4、凱撒密碼
在羅馬帝國時(shí)期,凱撒大帝曾經(jīng)設(shè)計(jì)過一種簡單的移位密碼,用于戰(zhàn)時(shí)通信。這種加密方法就是將明文的字母按照字母順序,往后依次遞推相同的字母,就可以得到加密的密文,而解密的過程正好和加密的過程相反。
原理:把一個(gè)字母替換為它后面固定位置的另一個(gè)字母(單表代換密碼)。
A B C D E F G……X Y Z
D E F G H I J……A B C
明文:Caesar cipher is a shift substitution
密文:FDHVDU FLSKHU LV D VKLIW VXEVWLWXWLRQ
5、圓盤密碼
人們對凱撒密碼進(jìn)一步改善,只要將字母按照不同的順序進(jìn)行移動就可以提高破解的難度,增加信息的保密程度。如15世紀(jì)佛羅倫薩人Alberti發(fā)明圓盤密碼就是這種典型的利用單表置換的方法加密的方法。凱撒密碼與圓盤密碼本質(zhì)都是一樣的,都屬于單表置換,即一個(gè)明文字母對應(yīng)的密文字母是確定的,截獲者可以分析對字母出現(xiàn)的頻率,對密碼體制進(jìn)行有效的攻擊。Alberti的圓盤理論是古典密碼學(xué)的主要代表之一,在粘土圓盤的表面刻上帶有空格的字母,成為最初人類的加密方式,這種方式至今還無人能破解。
6、維吉尼亞密碼
為了提高密碼的破譯的難度,人們有發(fā)明一種多表置換的密碼,即一個(gè)明文字母可以表示為多個(gè)密文字母,多表密碼加密算法結(jié)果將使得對單表置換用的簡單頻率分析方法失效,其中維吉尼亞密碼就是一種典型的加密方法。維吉尼亞密碼是使用一個(gè)詞組(語句)作為密鑰,詞組中每一個(gè)字母都作為移位替換密碼密鑰確定一個(gè)替換表,維吉尼亞密碼循環(huán)的使用每一個(gè)替換表完成明文字母到密文字母的變換,最后所得到的密文字母序列即為加密得到的密文。維吉尼亞是古典密碼理論發(fā)展上的一個(gè)重要里程碑,他的理論又被稱為多字母編碼。
m個(gè)移位代換表由m個(gè)字母組成的密鑰字確定
明文:w e a r d i s c o v e r e d s a v e
密鑰:d e c e p t i v e d e c e p t i v e
對應(yīng)數(shù)字:3 4 2 15 19 8 21
密文:Z I C V T WQNGRZGVTWAVZH
3現(xiàn)代密碼算法
1、對稱加密:
對稱密碼使用相同的密鑰進(jìn)行加密和解密,作為標(biāo)準(zhǔn)的對稱密碼主要有DES、三重DES和AES,它們都屬于分組密碼,即以分組為單位進(jìn)行處理的密碼算法。DES和三重DES的分組長度都是64比特,而AES的分組長度可以為128比特、192比特和256比特中的一種。
DES(Data Encryption Standard)是一種將64比特的明文加密成64比特的密文的對稱密碼算法,它的密鑰長度是56比特,即7個(gè)字節(jié)。DES于1977年公布,現(xiàn)已被破解。
3DES
3DES是在DES基礎(chǔ)算法上的改良,采用3組56 bits共168 bit的密鑰,對明文數(shù)據(jù)進(jìn)行3次DES加密-解密-加密操作,該算法可向下兼容DES加密算法。3DES考慮了兼容性,但計(jì)算性能不高,暫時(shí)還未被破解。
AES是于2000年被采用的最新的對稱加密標(biāo)準(zhǔn),采用了Rijndael算法。
Rijndael算法也是一種分組算法,密鑰長度規(guī)定為128 bits,192 bits,256 bits三種規(guī)格。與DES不同,Rijndael算法沒有采用Feistel網(wǎng)絡(luò),而是采用SPN結(jié)構(gòu),并通過多個(gè)輪函數(shù)實(shí)現(xiàn)。
2、非對稱加密
非對稱加密算法需要兩個(gè)密鑰:公開密鑰(publickey:簡稱公鑰)和私有密鑰(privatekey:簡稱私鑰)。公鑰與私鑰是一對,如果用公鑰對數(shù)據(jù)進(jìn)行加密,只有用對應(yīng)的私鑰才能解密。因?yàn)榧用芎徒饷苁褂玫氖莾蓚€(gè)不同的密鑰,所以這種算法叫作非對稱加密算法。非對稱加密算法實(shí)現(xiàn)機(jī)密信息交換的基本過程是:甲方生成一對密鑰并將公鑰公開,需要向甲方發(fā)送信息的其他角色(乙方)使用該密鑰(甲方的公鑰)對機(jī)密信息進(jìn)行加密后再發(fā)送給甲方;甲方再用自己私鑰對加密后的信息進(jìn)行解密。甲方想要回復(fù)乙方時(shí)正好相反,使用乙方的公鑰對數(shù)據(jù)進(jìn)行加密,同理,乙方使用自己的私鑰來進(jìn)行解密。典型的是RSA。RSA公開密鑰密碼體制的原理是:根據(jù)數(shù)論,尋求兩個(gè)大素?cái)?shù)比較簡單,而將它們的乘積進(jìn)行因式分解卻極其困難,因此可以將乘積公開作為加密密鑰。
4認(rèn)證技術(shù)
單向散列函數(shù):單向散列函數(shù)也稱為消息摘要函數(shù),哈希函數(shù)。單向散列函數(shù)輸出的散列值又稱為消息摘要或者指紋。單項(xiàng)散列函數(shù)的經(jīng)典算法,包括:MD4MD5SHA1SHA256SHA512等
單向散列函數(shù)的特點(diǎn):
1、加密后密文的長度是定長的(即對任意長度的消息三列,得到的散列值是定長的)
2、散列計(jì)算速度快,非常高效
3、如果明文不一樣,那么散列后的結(jié)果一定不一樣
4、如果明文一樣,那么加密后的密文一定一樣(對相同數(shù)據(jù)加密,5、加密后的密文一樣)
6、所有的加密算法是公開的
7、具備單向性,不可以逆推反算
MD5
MD5全稱是Message Digest Algorithm 5,譯為"消息摘要算法第5版"是由Rivest于1991年設(shè)計(jì)的單項(xiàng)散列函數(shù)
MD5的特點(diǎn)
1、對字符串進(jìn)行MD5加密可以得到一個(gè)32個(gè)字符的密文
對輸入的信息生成唯一的一個(gè)128位散列值(32個(gè)字符)
2、加密之后不能根據(jù)密文逆推出明文
根據(jù)輸出值,不能得到原始的明文,即其過程不可逆
明文不同,則散列值一定不同
明文相同,則散列值一定相同
3)MD5已經(jīng)被破解
MD5的強(qiáng)抗碰撞性已經(jīng)被證實(shí)攻破,即對于重要數(shù)據(jù)不應(yīng)該再繼續(xù)使用MD5加密。
SHA
安全散列算法(英語:Secure Hash Algorithm,縮寫為SHA)是一個(gè)密碼散列函數(shù)家族,是FIPS所認(rèn)證的安全散列算法。能計(jì)算出一個(gè)數(shù)字消息所對應(yīng)到的,長度固定的字符串(又稱消息摘要)的算法。有SHA-1,SHA-224,SHA-256,SHA-384,和SHA-512這幾種單向散列算法。
SHA-1算法也與MD5類似,都是把輸入二進(jìn)制串分成512位的塊,把二進(jìn)制串的位數(shù)存儲在最后64位,二者之間填充為0,依次對每個(gè)塊進(jìn)行一些列高深的數(shù)學(xué)運(yùn)算,最后得到一個(gè)160位的二進(jìn)制串。
SHA算法也是不可逆的。從SHA-1的算法可以簡單看出,SHA-1安全性比MD5稍高(160位VS128位),但算法需要時(shí)間SHA-1稍慢。