上一篇介紹了訊息傳遞存在的問題:機密性
XOR
將結果 11100110 在與 B 做一次異或運算。
1 1 1 0 0 1 1 0 // 結果
1 0 1 0 1 0 1 0 // B
0 1 0 0 1 1 0 0 // 第二次的結果 === A
第一次對 A 和 B 做 異或運算 可以看成是 加密行為。
// 加密過程
0 1 0 0 1 1 0 0 // A:訊息
1 0 1 0 1 0 1 0 // B:金鑰
1 1 1 0 0 1 1 0 // 結果:密文,加密之後看不懂的東東
第二次對第一次運算的結果再與 B 做 異或運算 可以看成是 解密行為 。
// 解密行為
1 1 1 0 0 1 1 0 // 結果:密文
1 0 1 0 1 0 1 0 // B:金鑰
0 1 0 0 1 1 0 0 // A:密文通過金鑰處理之後又得到密文 A
電腦裡的視訊,圖片,文字檔案等如果要做加密,都是先轉化為計算機識別的二進位制資料,也就是 0 和 1 組成的資料,然後再做異或運算。
這個過程 B(金鑰) 及其重要,加密時候使用它進行加密,解密也要使用它進行解密,如果你的金鑰洩露了,那麼別人就可以輕而易舉的破解你的加密資訊。
3)當前使用的對稱加密演算法
異或運算只是對稱加密的最底層,實際使用的對稱加密演算法都是在這基礎上發展的,並且要複雜的多,這裡介紹這個是為了以後吹逼的時候增加光環屬性。
前面介紹了異或運算加/解密訊息,那麼加密演算法如何理解呢。比如有個演算法對訊息進行 16 次異或操作,這是一種演算法,另一個將訊息拆分兩半,只對其中一半進行加密,這又是一種加密演算法。
**個人總結:**加密演算法就是加密的具體行為。比如上面使用異或運算加密中,異或加密這個行為就是個演算法。對於訊息加密,只有同時知道 加密演算法 和 金鑰 這兩個東東才能正確得到明文。
DES 對稱加密演算法
DES 加密演算法是 1977 年美聯邦使用的標準,在那個年代被政府和銀行廣泛使用。
老外整出了加密演算法之後,為了驗證加密演算法的安全性,會定期舉辦個密碼比賽邀請全世界的密碼學大師來破譯加密演算法。在 1999 年舉辦的 DES challenge 第三次比賽中被人用了 22 個小時就給破譯了(在 1997 年舉辦的 DES challenge 第一次比賽就被人用 96 天給破譯了),自此之後安全性存在嚴重問題,新的加密演算法應運而生。
三重 DES 對稱加密演算法
由於 DES
存在安全性問題,不久 三重 DES 加密演算法
就誕生了,在 DES
基礎上做細微修改,並且重複三次 DES
加密,所以叫 三重
。
當然,DES 底層做了 16 次異或運算,三重 DES 也就做了 48 次異或運算(不僅僅做異或運算,還有其它行為),運算次數變得更復雜,導致加/解密速度並不高。有了不爽的東西人們就會尋求替代品。
AES 對稱加密演算法
1997 年的時候,米國標準化機構 NIST 對外海選新的加密演算法,以求替代 DES
帶來的尷尬境遇。並提前指定了新的密碼演算法的名稱就叫做 AES
。
直到 2000 年,在世界各地的密碼學專家競爭中,最終篩選出 15 個最終可能選擇的加密演算法;這 15 個加密演算法經過又一輪的生死搏殺,最終比利時密碼學家帶來的加密演算法 Rijndael
成為 AES
的最終選擇。
最在用的最多的對稱加密演算法還是 AES
,當然沒有絕對安全的演算法,被破解也是時間問題,只不過這個時間來的會比較晚一點。
4)對稱密碼實際應用中的缺陷
你將用對稱密碼加密後的紙條扔給你的同事,他需要知道金鑰才能解密出明文,由於你們都在一個辦公室裡,可以很方便的告訴他金鑰是什麼(這裡舉例好傻,都能告訴他金鑰是啥了,怎麼不直接告訴他明文資訊,只是舉例而已~~)。
如果你在上海,你的好朋友在北京,你用對稱加密給他寫了封信,你的好朋友需要金鑰,你只好將金鑰與信件一起塞進信封寄給好朋友。這樣又顯得很傻,信件被任何人拿到都可以通過金鑰得到明文,加密失去意義。
最初看到這個場景的時候,我沒忍住破口大罵,花了十分鐘讀到這裡原來是個自相矛盾的東東,純屬浪費時間。對稱加密的金鑰傳遞是個老大難的問題,但可以通過其它技術彌補。
2. 公鑰加密(也叫非對稱加密)
(未完待續,簡書不能設定文章順序,關於密碼工具箱其它工具還需查閱資料完善,這裡先發布文章佔個位置,避免後續文章切斷了遨遊密碼世界兩篇文章的連續性)
写评论
很抱歉,必須登入網站才能發佈留言。