密碼技術是網路安全的基礎,也是核心。現在對隱私保護、敏感資訊尤其重視,所以不論是系統開發還是App開發,只要有網路通訊,很多資訊都需要進行加密,以防止被擷取篡改,雖然很多人每天都在用密碼學的知識,但並不是人人都知道,謹以此篇科普一下~~~
PS:2016.7.10 補充 雜湊函式與訊息摘要
基本概念
明文M:原始資料,待加密的資料
密文C:對明文進行某種偽裝或變換後的輸出
金鑰K:加密或解密中所使用的專門工具
加密E:用某種方法將明文變成密文的過程
解密D:將密文恢復成明文的過程
密碼系統
一個密碼系統由五元組(M、C、K、E、D)組成,如圖所示
密碼體制
對稱密碼體制:對資訊進行明/密文變換時,加解和解密使用相同金鑰的密碼體制
安全性依賴於:1、加密演算法的安全性 2、金鑰的祕密性 優點:演算法公開、速度快、保密強度高、佔用空間小
缺點:金鑰的分發和管理非常複雜
用途:資訊量大的加密
代表演算法:DES演算法、3DES演算法、IDEA演算法、AES演算法
問題:若接收方偽造一個訊息並誣陷是傳送方傳送的,傳送方無法辯解,也就是無法解決訊息的確認問題,不能實現數字簽名;另一個問題是建立安全的通道之前,如何實現通訊雙方的加密金鑰的交換
非對稱密碼體制:對資訊進行明/密文變換時,加密和解密金鑰不相同的密碼體制 在非對稱密碼體制中,每個使用者都具有一對金鑰,一個用於加密,一個用於解密,其中加密金鑰可以公開,稱之為公鑰,解密金鑰屬於祕密,稱之為私鑰,只有使用者一人知道。
優點:通訊雙方不需要通過建立一個安全通道來進行金鑰的交換,金鑰空間小,降低了金鑰管理的難度
缺點:實現速度慢,不適合通訊負荷較重的情況
用途:加密關鍵性的、核心的機密資料
代表演算法:RSA演算法、ElGamal演算法、橢圓曲線加密演算法
問題:由於自己的公鑰對外公開,因此
1、如果一個人用自己的公鑰加密資料傳送給我,我無法斷定是誰傳送的;
2、我用私鑰加密的資料,任何知道我公鑰的人都能解密我的資料。
混合加密體制:同時使用對稱密碼和非對稱密碼的體制 對稱加密的一個很大問題就是通訊雙方如何將金鑰傳輸給對方,為了安全,一般採取帶外傳輸,也就是說如果加密通訊是在網路,那麼金鑰的傳輸需要通過其他途徑,如簡訊,即使如此,也很難保證金鑰傳輸的安全性。非對稱加密加解最大的優點是事先不需要傳輸金鑰,但速度慢,因此實際應用中,經常採取混合密碼體制。假設A與B要實現保密通訊,工作過程如下:
1、A找到B的公鑰
2、A選擇一個大隨機數作為此次會話的加密金鑰,即會話金鑰
3、A以會話金鑰加密通訊內容,再以B的公鑰加密會話金鑰後傳送給B
4、B收到資料以後,先用自己的私鑰解密出會話金鑰,然後用會話金鑰解密出通訊內容
雜湊函式與訊息摘要
Hash函式也稱為雜湊函式,它能夠對不同長度的輸入資訊,產生固定長度的輸出。這種固定長度的輸出稱之為原訊息的雜湊或者訊息摘要,訊息摘要長度固定且比原始資訊小得多,一般情況下,訊息摘要是不可逆的,即從訊息摘要無法還原原文,為什麼說一般情況下呢,中國出了個牛人王小云,感興趣的自行Google~~~
雜湊演算法:雜湊演算法就是產生資訊雜湊值的演算法,它有一個特性,就是在輸入資訊中如果發生細微的改變,比如給變了二進位制的一位,都可以改變雜湊值中每個位元的特性,導致最後的輸出結果大相徑庭,所以它對於檢測訊息或者金鑰等資訊物件中的任何微小的變化非常有用。
一個安全的雜湊演算法H需要滿足:
1、輸入長度是任意的,輸出是固定的
2、對每一個給定的輸入,計算輸出是很容易的
3、給定H,找到兩個不同的輸入,輸出同一個值在計算上不可行
4、給定H和一個訊息x,找到另一個不同的訊息y,使它們雜湊到同一個值在計算上不可行
常見的雜湊演算法:MD2、MD4、MD5、SHA、SHA-1
數字簽名
數字簽名是指傳送方以電子形式簽名一個訊息或檔案,簽名後的訊息或檔案能在網路中傳輸,並表示簽名人對該訊息或檔案的內容負有責任。數字簽名綜合使用了訊息摘要和非對稱加密技術,可以保證接受者能夠核實傳送者對報文的簽名,傳送者事後不抵賴報文的簽名,接受者不能篡改報文內容和偽造對報文的簽名。
數字簽名需要做到兩點:
1、確認資訊是由簽名者傳送的;
2、確認資訊從簽發到接受沒有被修改過。
數字簽名的過程與示意圖:
如果通訊的內容是加密的,就需要採用數字信封:傳送方用對稱金鑰加密明文,然後用對方的公鑰加密對稱金鑰傳送給對方,對方收到電子信封,用自己的私鑰解密,得到對稱金鑰解密,還原明文。此時數字簽名的過程如下:1、傳送方要傳送訊息運用雜湊函式(MD5、SHA-1等)形成訊息摘要;
2、傳送方用自己的私鑰對訊息摘要進行加密,形成數字簽名;
3、傳送方將數字簽名附加在訊息後傳送給接收方;
4、接受方用傳送方的公鑰對簽名資訊進行解密,得到訊息摘要;
5、接收方以相同的雜湊函式對接收到的訊息進行雜湊,也得到一份訊息摘要;
6、接收方比較兩個訊息摘要,如果完全一致,說明資料沒有被篡改,簽名真實有效;否則拒絕該簽名。
1、傳送方要傳送訊息運用雜湊函式(MD5、SHA-1等)形成訊息摘要;
2、傳送方用自己的私鑰對訊息摘要進行加密,形成數字簽名;
3、傳送方用對稱加密演算法對訊息原文、數字簽名進行加密,得到密文資訊;
4、傳送方用接收方的公鑰加密對稱加密演算法的金鑰進行加密,形成數字信封;
5、傳送方將3中的密文資訊和數字信封一起發給接收方;
6、接收方首先用自己的私鑰解密數字信封,還原對稱加密演算法的金鑰;
7、接受方用6中的金鑰解密接收到的密文,得到原文資訊和數字簽名;
8、接受方用傳送方的公鑰對簽名資訊進行解密,得到訊息摘要;
9、接收方以相同的雜湊函式對接收到的訊息進行雜湊,也得到一份訊息摘要;
10、接收方比較兩個訊息摘要,如果完全一致,說明資料沒有被篡改,簽名真實有效;否則拒絕該簽名。
數字證書
數字證書是一種權威的電子文件,由權威公正的第三方認證機構(CA)簽發,廣泛用於涉及需要身份認證和資料安全的領域。
數字證書種類:
1、伺服器證書:證明伺服器的身份和進行通訊加密,客戶端可以與伺服器端建立SSL連線,然後通訊資料都會被加密。
2、電子郵件證書:證明電子郵件發件人的真實性,也可傳送加密郵件,只有接收方才能打得開。
3、客戶端證書:主要用於身份驗證和數字簽名,安全的客戶端證書經常儲存的專門的USBKey中,使用的時候需要輸入保護密碼,以防被匯出和複製,如指紋識別、語音播報、帶顯示器的USBKey等等。
數字證書功能:
1、資訊保密
2、身份確認
3、不可否認性
4、資料完整性
數字證書的格式: 最簡單的可以是:公鑰、名稱和證書授權中心的數字簽名,目前 X.509 是一種通用的證書格式,它的第三個版本目前使用廣泛,證書內容包括:版本、序列號、簽名演算法標識、簽發者、有效期、主體、主體公開金鑰、CA的數字簽名、可選型等等