1密碼學基礎
密碼學是研究資料的加密及其變換的學科。它包括兩個分支:密碼編碼學和密碼分析學,密碼編碼學主要研究對資訊進行變換,以保護資訊在傳遞過程中不被敵方竊取、解讀和利用的方法,密碼分析學主要研究如何分析和破譯密碼。
待加密的訊息稱為明文,他經過一個以金鑰(key)為引數的函式變換,這個過程稱為加密,這個加密的函式變換稱為加密演算法,加密後的資訊稱為密文。透過對密文進行解密的到明文的過程稱為解密,用到的解密方法稱為解密演算法。
從密碼學的發展歷程來看:分為古典密碼及現代密碼兩類。
2古典密碼演算法
古典密碼學主要有兩大類:替代密碼、置換密碼。
替代密碼:將明文的字元替換為為密文的另一種字元,透過反向替換進行解密;
置換密碼:明文中的字母按順序替換為對應的密文中的另一種字元。
比較經典的古典密碼有:滾筒密碼,掩格密碼、棋盤密碼、凱撒密碼、圓盤密碼,維吉尼亞密碼。
1、滾筒密碼:
為了保證通訊資訊的密碼性,古希臘人透過使用一根叫scytale的棍子,將資訊進行加密。送信人先將一張羊皮條繞棍子螺旋形捲起來,然後把要寫的資訊按某種順序寫在上面,接著開啟羊皮條卷,透過其他渠道將信送給收信人。如果不知道棍子的粗細是不容易解密裡面的內容的,但是收信人可以根據事先和寫信人的約定,用同樣的scytale的棍子將書信解密。
2、掩格密碼:
16世紀米蘭的物理學和數學家Cardano發明的掩格密碼,可以事先設計好方格的開孔,將所要傳遞的資訊和一些其他無關的符號組合成無效的資訊,使截獲者難以分析出有效資訊。
3、棋盤密碼
我們可以建立一張表,使每一個字元對應一數 (該字元所在行標號+列標號)。這樣將明文變成形式為一串數字密文。
4、凱撒密碼
在羅馬帝國時期,凱撒大帝曾經設計過一種簡單的移位密碼,用於戰時通訊。這種加密方法就是將明文的字母按照字母順序,往後依次遞推相同的字母,就可以得到加密的密文,而解密的過程正好和加密的過程相反。
原理:把一個字母替換為它後面固定位置的另一個字母(單表代換密碼)。
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、圓盤密碼
人們對凱撒密碼進一步改善,只要將字母按照不同的順序進行移動就可以提高破解的難度,增加資訊的保密程度。如15世紀佛羅倫薩人Alberti發明圓盤密碼就是這種典型的利用單表置換的方法加密的方法。凱撒密碼與圓盤密碼本質都是一樣的,都屬於單表置換,即一個明文字母對應的密文字母是確定的,截獲者可以分析對字母出現的頻率,對密碼體制進行有效的攻擊。Alberti的圓盤理論是古典密碼學的主要代表之一, 在粘土圓盤的表面刻上帶有空格的字母, 成為最初人類的加密方式, 這種方式至今還無人能破解。
6、維吉尼亞密碼
為了提高密碼的破譯的難度,人們有發明一種多表置換的密碼,即一個明文字母可以表示為多個密文字母,多表密碼加密演算法結果將使得對單表置換用的簡單頻率分析方法失效,其中維吉尼亞密碼就是一種典型的加密方法。維吉尼亞密碼是使用一個片語(語句)作為金鑰,片語中每一個字母都作為移位替換密碼金鑰確定一個替換表,維吉尼亞密碼迴圈的使用每一個替換表完成明文字母到密文字母的變換,最後所得到的密文字母序列即為加密得到的密文。維吉尼亞是古典密碼理論發展上的一個重要里程碑,他的理論又被稱為多字母編碼。
m個移位代換表由m個字母組成的金鑰字確定
明文: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
對應數字:3 4 2 15 19 8 21
密文:Z I C V T WQNGRZGVTWAVZH
3現代密碼演算法
1、對稱加密:
對稱密碼使用相同的金鑰進行加密和解密,作為標準的對稱密碼主要有DES、三重DES和AES,它們都屬於分組密碼,即以分組為單位進行處理的密碼演算法。DES和三重DES的分組長度都是64位元,而AES的分組長度可以為128位元、192位元和256位元中的一種。
DES(Data Encryption Standard)是一種將64位元的明文加密成64位元的密文的對稱密碼演算法,它的金鑰長度是56位元,即7個位元組。DES 於 1977 年公佈,現已被破解。
3DES
3DES是在 DES 基礎演算法上的改良,採用 3組 56 bits 共 168 bit 的金鑰,對明文資料進行 3次 DES 加密-解密-加密操作,該演算法可向下相容 DES 加密演算法。3DES 考慮了相容性,但計算效能不高,暫時還未被破解。
AES 是於 2000 年被採用的最新的對稱加密標準,採用了 Rijndael 演算法。
Rijndael 演算法也是一種分組演算法,金鑰長度規定為 128 bits,192 bits, 256 bits 三種規格。與 DES 不同,Rijndael 演算法沒有采用 Feistel 網路,而是採用 SPN 結構,並透過多個輪函式實現。
2、非對稱加密
非對稱加密演算法需要兩個金鑰:公開金鑰(publickey:簡稱公鑰)和私有金鑰(privatekey:簡稱私鑰)。公鑰與私鑰是一對,如果用公鑰對資料進行加密,只有用對應的私鑰才能解密。因為加密和解密使用的是兩個不同的金鑰,所以這種演算法叫作非對稱加密演算法。非對稱加密演算法實現機密資訊交換的基本過程是:甲方生成一對金鑰並將公鑰公開,需要向甲方傳送資訊的其他角色(乙方)使用該金鑰(甲方的公鑰)對機密資訊進行加密後再發送給甲方;甲方再用自己私鑰對加密後的資訊進行解密。甲方想要回復乙方時正好相反,使用乙方的公鑰對資料進行加密,同理,乙方使用自己的私鑰來進行解密。典型的是RSA。RSA公開金鑰密碼體制的原理是:根據數論,尋求兩個大素數比較簡單,而將它們的乘積進行因式分解卻極其困難,因此可以將乘積公開作為加密金鑰 。
4認證 技術
單向雜湊函式:單向雜湊函式也稱為訊息摘要函式, 雜湊函式。單向雜湊函式輸出的雜湊值又稱為訊息摘要 或者 指紋。單項雜湊函式的經典演算法,包括 : MD4\MD5\SHA1\SHA256\SHA512等
單向雜湊函式的特點:
1、加密後密文的長度是定長的(即對任意長度的訊息三列,得到的雜湊值是定長的)
2、雜湊計算速度快,非常高效
3、如果明文不一樣,那麼雜湊後的結果一定不一樣
4、如果明文一樣,那麼加密後的密文一定一樣(對相同資料加密,5、加密後的密文一樣)
6、所有的加密演算法是公開的
7、具備單向性,不可以逆推反算
MD5
MD5全稱是Message Digest Algorithm 5,譯為"訊息摘要演算法第5版"是由Rivest 於1991年設計的單項雜湊函式
MD5的特點
1、對字串進行MD5加密可以得到一個32個字元的密文
對輸入的資訊生成唯一的一個128位雜湊值(32個字元)
2、加密之後不能根據密文逆推出明文
根據輸出值,不能得到原始的明文,即其過程不可逆
明文不同,則雜湊值一定不同
明文相同,則雜湊值一定相同
3)MD5已經被破解
MD5的強抗碰撞性已經被證實攻破,即對於重要資料不應該再繼續使用MD5加密。
SHA
安全雜湊演算法(英語:Secure Hash Algorithm,縮寫為SHA)是一個密碼雜湊函式家族,是FIPS所認證的安全雜湊演算法。能計算出一個數字訊息所對應到的,長度固定的字串(又稱訊息摘要)的演算法。有SHA-1,SHA-224,SHA-256,SHA-384,和SHA-512這幾種單向雜湊演算法。
SHA-1演算法也與MD5類似,都是把輸入二進位制串分成512位的塊,把二進位制串的位數儲存在最後64位,二者之間填充為0,依次對每個塊進行一些列高深的數學運算,最後得到一個160位的二進位制串。
SHA演算法也是不可逆的。從SHA-1的演算法可以簡單看出,SHA-1安全性比MD5稍高(160位VS128位),但演算法需要時間SHA-1稍慢。