密碼學(對稱與非對稱密碼 雜湊演算法)
目錄
密碼學
密碼學發展
- 古典密碼:古代----19世紀末
- 近代密碼:20世紀初---1949年
- 現代密碼:1949(夏農發表的《保密系統的加密原理》)---1975
- 公鑰密碼:1976(W.Diffie和M.Hellman發表的《密碼學的新方向》)--至今
對稱加密體制
加密和解密祕鑰相同,或者由一個能很容易的推出另一個。對稱加密演算法如:DES、3DES、AES等
優點:
- 效率高,演算法簡單,系統開銷小
- 適合加密大量資料
- 明文長度和密文相同
缺點:
- 需要以安全方式進行金鑰交換
- 金鑰管理複雜
非對稱加密體制
加密和解密祕鑰不相同。其中,對外公開的祕鑰,稱為公鑰。不對外公開的祕鑰,稱為私鑰。對稱加密演算法如:RSA加密演算法
優點:
- 解決金鑰傳遞問題、金鑰管理簡單
- 大大減少金鑰持有量
- 提供了對稱密碼技術無法或很難提供的服務(數字簽名)
缺點:
- 計算複雜、耗用資源大
- 非對稱會導致得到的密文變長
混合加密
由於對稱加密體制和非對稱加密體制各有優缺點。所以,在實際生活中,我們還是經常用混合加密方式來對資料進行加密的。
常見的混合加密演算法主要是指RSA加密演算法和DES加密演算法這兩種加密演算法混合加密
混合加密實現方式:
- 資訊(明文)採用DES金鑰加密。
- 使用RSA加密前面的DES金鑰資訊,最終將混合資訊進行傳遞。
接收到資訊後解密:
- 用RSA解密DES金鑰資訊。
- 再用DES解密獲取到的金鑰資訊解密密文資訊,最終就可以得到我們要的資訊(明文)。
雜湊演算法
雜湊(Hash),一般翻譯做"雜湊",也有直接音譯為"雜湊"的,就是把任意長度的輸入(又叫做預對映, pre-image),通過雜湊演算法,變換成固定長度的輸出,該輸出通常稱作雜湊值、數字指紋 或 訊息摘要。這種轉換是一種壓縮對映,也就是,雜湊值的空間通常遠小於輸入的空間(不同的輸入有可能會雜湊成相同的輸出,機率非常小),而不可能從雜湊值來逆向推出輸入值,也就是說,雜湊函式是不可逆的。簡單的說就是一種將任意長度的訊息壓縮到某一固定長度的訊息摘要的函式。
雜湊函式也稱為雜湊函式、雜湊函式等。
雜湊函式的特點:不可逆性,碰撞約束
目前網上大部分的雜湊破解都是利用雜湊值的密碼字典進行爆破。
常見的雜湊演算法有:MD4 、MD5 、 SHA1、 SHA224 、 SHA256 、 SHA384 、SHA 512
- MD5 , 輸出128bit的雜湊值
- SHA1 , 輸出160bit的雜湊值
- SHA224, 輸出224bit的雜湊值
- SHA256, 輸出256bit的雜湊值
- SHA384, 輸出384bit的雜湊值
- SHA512, 輸出512bit的雜湊值
雜湊演算法的用途:檔案校驗、數字簽名、安全傳輸和儲存口令
數字簽名過程
假如小明要給小紅髮一個檔案,那麼怎樣才能保證小紅收到的檔案是小明發的並且沒有被篡改呢?
- 小明告訴小紅自己的公鑰,並且私鑰只有小明自己一個人知道
- 小明對訊息M計算摘要,得到摘要D
- 小明使用私鑰對D進行簽名,得到簽名S
- 將M和S一起傳送出去
小紅收到訊息後
- 小紅首先對M使用跟小明一樣的摘要演算法計算摘要,得到D
- 使用小明的公鑰對S進行解籤,得到D’
- 如果D和D’相同,那麼證明M確實是小明發出的,並且檔案資料沒有被篡改過
密碼學的應用--網站認證
密碼學的應用很廣,在實際生活中處處可見。比如網購,網銀,郵件,網頁等等。今天我們講一下密碼學應用之網站認證。
比如我們開啟百度,那麼百度是如何保證顯示在我們眼前的網頁就一定是百度生成的,而沒有其他人修改的呢?這就是藉助數字簽名來實現的。
瀏覽器工具->Internet選項->內容->證書,就可以看到我們瀏覽器上的數字證書了。所謂證書,其實是對公鑰的封裝,在公鑰的基礎上添加了諸如頒發者之類的資訊。
雙擊對應的證書,我們可以看到該證書的詳細資訊。如下,我們可以看到該證書是使用 sha1演算法進行摘要,然後使用RSA演算法對摘要進行簽名。
證書的使用者是 www.baidu.com 。公鑰資訊那一欄對應的就是 百度對外的公鑰。