遨遊密碼世界(二)

NO IMAGE

密碼工具箱

上一篇介紹了訊息傳遞存在的問題:機密性

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. 公鑰加密(也叫非對稱加密)






(未完待續,簡書不能設定文章順序,關於密碼工具箱其它工具還需查閱資料完善,這裡先發布文章佔個位置,避免後續文章切斷了遨遊密碼世界兩篇文章的連續性)