1. 程式人生 > >【1.學習__密碼學】

【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 常用演算法及實現原理:

......