以嫦娥后羿的故事,同大家聊聊加密解密
嫦娥奔月是我們耳熟能詳的神話傳說,下面我們將通過嫦娥和后羿的神話故事為背景題材,和大家一起分享信息安全技術基礎知識。假設:嫦娥想告訴后羿約他在 "9月20日一起去看一場電影" 的消息,讓通過網絡將這個消息發給后羿,我們如何保證消息的安全傳遞?
首先我們需要思考的問題有:
- 消息怎么保證信息安全,只有后羿能夠解密,讀取加密內容?
- 怎么保證消息是完整,不能被被篡改,如果日期或者地點被改了后羿找不到嫦娥該怎么辦?
- 如何保證消息就是嫦娥發的呢,而不是玉兔頑皮冒充嫦娥發的呢?
網絡可以作為信息傳遞的媒介,但是如果對所有的信息都采用明文的方式進行傳輸,如果我們的網絡遭到監聽,或者遭到劫持。如果我們的聊天記錄,通話信息被泄露,我們的生活將失去隱私;如果我們的賬戶密碼被人竊取那么我們的財產安全將無法得到保障。所以學習安全基礎知識也是必要的。
對稱加密
常見的對稱加密算法:
1.DES:替換+位移、56位密鑰、64位數據塊、速度快、密鑰容易產生。
- 3DES(三重 DES):兩個64位的密鑰 K1、K2
- 加密:K1 加密 -> K2 解密 -> K1 加密
- 解密:K1 解密 -> K2 加密 -> k1 解密
2.RC-5: RSA 數據安全公司的很多產品都使用了 RC-5
3.IDEA 算法: 128 位密鑰、64位數據塊、比DES的加密性好、針對計算機功能要求低,PGP。
4.AES 算法:高級加密標準,又稱為 Rijndael 加密法,是每個政府采用的一種區塊加密標準。
缺陷:
- 加密強度不高, 但是效率非常高
- 密鑰分發困難
特點:加密解密密鑰相同
非對稱加密
常見的非對稱加密算法有:
1.RSA :2048 位(或1024位)密鑰、計算量大、難破解
2.Elgamal :安全性依賴于計算機上有限域上離散對數這一難題
3.ECC:橢圓曲線算算法
缺點:加密速度慢 特點:
1.公鑰可以公開,私鑰不能公開。
2.公鑰加密私鑰解密,私鑰加密公鑰解密。
image.png
消息摘要
信息摘要:單向散列函數、固定長度的散列值。
常用的消息摘要算法有 MD5, SHA 等,市場上廣泛使用的 MD5, SHA 算法的散列值長度分別為 128 和 160位, 由于SHA 通常采用的加密長度較長,因此安全性高于 MD5。
比如我們在某網站下載 “鏡像文件”的時候,上面也會給出 MD5 摘要值。我們下載下來過后可以通過文件的 MD5 值和官方給出的 MD5 值來進行對比。檢查是否文件完整正確,避免造成安全裝錯誤。
數字簽名
數字簽名(又稱公鑰數字簽名)是只有信息的發送者才能產生的別人無法偽造的一段數字串,這段數字串同時也是對信息的發送者發送信息真實性的一個有效證明。它是一種類似寫在紙上的普通的物理簽名,但是在使用了公鑰加密領域的技術來實現的,用于鑒別數字信息的方法。一套數字簽名通常定義兩種互補的運算,一個用于簽名,另一個用于驗證。數字簽名是非對稱密鑰加密技術與數字摘要技術的應用。
我們還是以嫦娥告訴后羿,“9.20 日我們去看電影”這段信息為例子,說一下數字簽名的過程。整體流程如下圖所示:
圖示解讀:
1.嫦娥需要通過網絡傳遞給后羿 “9.20 日我們去看電影” 這個消息首先生成加密后的消息“V7btGj2ZhQsdada /..... T1Ram6AzforA==”,發送密文;
2.然后在對原文生成 消息摘要 “2d43abe9ec71c90952101bc0d8241fba” ;
3.最后嫦娥在對 消息摘要 通過 自己私鑰 進行加密生成數字簽名。 “EDadada3432f#CC1”。然后發送數字簽名。
4.后羿收到密文后進行解密,然后得到原文并計算出摘要信息,再通過數字簽名解密出來摘要信息。最后對兩個摘要信息進行比較,如果相同表示這個消息是嫦娥發的(防止抵賴),并且消息沒有被篡改。
5.這個例子我們就很好的把消息加密,消息摘要,數字簽名等技術串起來,并且實現了消息安全傳遞。
綜合實踐
設計安全郵件系統,要求如下:該郵件以加密方式傳輸,郵件最大附件內容可達 2G, 發送者不可以抵賴,若郵件被三方截獲,三方無法篡改。
答案:參考上一個案例實現即可。
本文轉載自微信公眾號「運維開發故事」