1. 程式人生 > >《圖解密碼技術》[01] 密碼概述

《圖解密碼技術》[01] 密碼概述

span idt 微信公眾 一個 order 大寫 密鑰 能夠 隱藏


技術分享
《圖解密碼技術》(點擊查看詳情)


1、寫在前面的話

因為接觸了微信公眾號開發,之中涉及支付功能時用到了大量簽名加密之類的東西,對於密碼安全這一塊,其實一直不是很明白,大部分方法自己在用到時也是去直接google,然後復制粘貼,可以說完全不知其所以然。
加密這一塊查了下有很多人推薦這本書,於是就決定看看。我個人涉及到真正的加密技術的實際應用可能不算那麽多,所以這裏筆記準備記錄一些淺顯和核心的東西。


2、加密和解密

發送信息和接受信息的過程中,因為傳遞過程涉及多方,可能會存在竊聽者。就像你給別人寫了一封信,在寄出的途中,如果有人惡意想要偷窺信件的內容,是完全可能的,比如郵遞員。
如果不想讓別人看到明確的信息,就要對信息進行加密,接收者進行解密,這樣就算中途被人看到信息,他也看不明白信息的內容。
加密之前的消息稱為“明文
”,即明白的誰都看得懂的信息,加密之後的消息則稱為“密文”。技術分享 技術分享
接收者還原密文稱之為“解密”,如果是第三方試圖還原,則稱之為“破譯”。 另外,密碼安全涉及的信息方面很廣,主要在機密性、完整性、認證和不可否認性上做文章。而相應的,也就誕生了用來應對的密碼技術:技術分享

3、隱寫術和數字水印

密碼主要是一種能夠讓消息內容變得無法解讀的技術。除此之外,還有另外一種技術,不是將消息內容變得無法解讀,而是能夠隱藏信息,這種技術叫做隱寫術。
隱寫術的第一個典型就是大家都知道的藏頭詩:
  1. 畫藍江水悠悠,
  2. 晚亭上楓葉愁。
  3. 月溶溶照佛寺,
  4. 煙裊裊繞經樓。
技術分享

隱寫術在計算機中的應用,數字水印就是其中的一種,將著作權擁有者及購買者的信息嵌入文件中的技術,但僅憑數字水印技術是無法對信息進行保密的,因此需要和其他技術配合使用。
比如將密碼和隱寫術結合使用,將明文加密後通過隱寫術隱藏到圖片中,這樣即便有人發現了密文的存在,也無法讀取內容。密碼隱藏的是消息內容,隱寫書隱藏的是消息本身



4、歷史上的密碼

4.1 愷撒密碼

假設我們要保密的信息為 yoshiko 這個女性的名字,我們將每個字母按字母表順序向後平移3位並轉換為大寫字母,即:
  • y --> B
  • o --> R
  • s --> V
  • h --> K
  • i --> L
  • k --> N
  • o --> R

於是,yoshiko 經過加密就變成了 BRVKLNR 。在這裏,將字母平移n位替換,就是密碼的算法,這裏平移的數量n就是密鑰,這種加密叫做愷撒密碼
當然,解密的話,接收者也要知道密鑰,即這裏是3,反向平移即可得到明文。如果是第三方想要破解該密文,因為字母表只有26個字母,所以密鑰實際上也只有0到25共26種,破譯者只要從0到25挨個嘗試密鑰破解,總會得到明文。這種方法稱之為暴力破解
,也稱之為窮舉搜索

4.2 簡單替換密碼

愷撒密碼實際上也是簡單替換密碼的一種,因為其本質就是字母的替換,但是因為替換的規則是確定的,所以更為簡單。
字母之間一對一的對應替換,則是簡單替換密碼,例如:技術分享 當然,簡單替換密碼的解密就必須要依賴替換表了,所以發送者和接收者都必須同時擁有替換表,而這份替換表也就相當於簡單替換密碼的密鑰。
另外,一個密碼能夠使用的“所有密鑰的集合”稱之為密鑰空間,密鑰空間越大,暴力破解就越困難。簡單替換密碼中,每個字母可以隨意對應字母表中無匹配的任意一個,所以實際上密鑰空間為 36*25*...*2*1 = 403291461126605635584000000;而凱撒密碼只有0-25共26種,所以簡單替換密碼更難通過暴力破解來破譯,但是,使用“頻率分析”的密碼破譯方法,則能夠破譯簡單替換密碼。(頻率分析的破譯方法在書中有詳細例子page27,很有意思,這裏不再展開)


5、加密算法和密鑰

凱撒密碼:
  • 加密算法:將明文中的各個字母按照指定的字母數平移
  • 密鑰:平移的字母數量

簡單替換密碼:
  • 加密算法:按照替換表對字母表進行替換
  • 密鑰:替換表

不難看出,加密算法是固定的,密鑰是可變的。因為如果每次加密都必須完全產生新的加密算法,那太麻煩了,於是我們喜歡加密算法可以重復使用,但是隨著重復使用的次數其破譯可能性也逐漸增大,所以準備了可變的部分,即密鑰。所以加密算法和密鑰分開考慮,就解決了加密算法希望得到重復利用,但重復使用會增加風險這個難題。

《圖解密碼技術》[01] 密碼概述