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