【1.學習__密碼學】
最近開始了新的工作,進入了一家做 安全 和 證書 類的公司,目前需要學習一些東西,感覺跟 Java 沒有什麼關係,總是會懷疑 這一年的學習工作 對以後是不是有幫助。也總想不明白。還是認真學習吧! 沒準做得好了,有機會去360參觀呢,還有極棒大會。
學習一週了,主要掌握了三個 重點概念: 數字簽名、數字證書、加密演算法(常用實現)
數字簽名:
數字簽名用來 認證資料資訊的來源。
應用的場景: 假設有 A B C三個人要通訊,
1. A生成一個 金鑰對,並將公鑰給 B,
2. A寫了一封信,然後使用雜湊演算法對信的內容進行雜湊處理,得到一個數字摘要,
3.A使用 自己的私鑰對數字摘要進行加密處理,得到一個密文,稱為A的數字簽名(因為只有A才能產生)
A將 明文 + 數字簽名 傳送給 B(傳送過程涉及到 對稱加密 和 非對稱加密)
4.B接收到資料資訊,使用B的公鑰對數字簽名進行解密,得到數字摘要
5.B使用同一個雜湊演算法 對 明文進行雜湊處理, 得到 一個數字摘要
6. B將兩個數字摘要做對比,確定資料資訊是否來自於 A
數字證書:(CA 與 RA之間傳輸也是加密的,也有簽名證書存在)
此時,C加入了通訊,且C帶有惡搞的興致。C在機緣巧合下接觸到B的電腦,並將A的公鑰替換成自己的公鑰,這樣C就可以用A的身份寫信給B,並使用自己的私鑰加密,而C依然認為資訊來自於A。
這樣,就失去了安全性。所以我們引入第三方管理機構來管理 那些公開的金鑰。
1. A要通訊,首先生成一個金鑰對,然後將自己的身份資訊 和 公鑰提交給 RA,
2. RA對 A 的身份進行核實,提交給 CA,
3.CA印發簽名證書,包含:主題的身份資訊、公鑰、頒發機構的簽名和一些資訊,
4.CA將證書傳送給RA,RA將證書傳送給A,
5. A在寫信給B的時候,在信的末尾加上,數字簽名 和 數字證書,
6. B在接收到 資料之後,查詢證書管理系統, 使用CA的公鑰對證書進行解密,得到A的公鑰,
7. 使用A的公鑰對數字簽名進行解密,得到數字摘要,
8. 使用同一個雜湊演算法 對明文進行雜湊處理,得到數字摘要,
9. B 對得到的兩個數字摘要做對比,判斷 來自於A
這樣做的好處是,改善了 獲取 公鑰的方式,由本地儲存變成第三方認證,會更加的安全。
加密傳輸:(通常使用 對稱加密 和 非對稱加密演算法結合)
假設 A要向B傳送資料:
1. A準備好要傳送的明文,
2. A產生一個隨機金鑰,使用隨機金鑰對明文進行加密處理,得到密文,
3. A使用B的公鑰對 隨機金鑰進行加密,得到 被加密的金鑰,稱為數字信封,
A將 密文 + 被加密的金鑰 傳送給 B,
4. B使用B的私鑰對 被加密的金鑰進行解密,得到 隨機金鑰,
5. B使用隨機金鑰對密文進行解密,得到 明文,
其中,隨機金鑰加解密 稱為 對稱金鑰方式,多用來加密資料量大的檔案或者資訊,
使用B的金鑰對進行加解密 屬於 非對稱金鑰演算法,用來解密資料量小的資訊。
搞清楚這三個概念,再看密碼學的東西,就會輕鬆很多。以下的內容,還有來得及更新,可能有誤,請自行甄別。
1. 密碼學的基礎
1.1 什麼是簽名?
1.2 什麼是加密?
1.3 雜湊演算法:
1.4 對稱/非對稱 加密演算法:
1.5 常用演算法及實現原理:
......