现代密码学应用的范例-PGP
PGP(Pretty Good Privacy),是一個基于RSA公鑰加密體系的郵件加密軟件。
產生背景:
電子郵件在傳輸中使用SMTP協議存在這樣的問題
1.無法保證郵件在傳輸過程中不被人偷看
2.無法確認來源
3.無法確定郵件是否在傳輸過程中被篡改
4.當郵件被發到錯誤地址,可能造成信息泄漏
?
PGP對這些問題提供一個安全電子郵件解決方案,具有以下功能
1.消息加密
2.數字簽名
3.完整性確認
4.數據壓縮
?
PGP使用的對稱算法: IDEA, DES, Triple DES, CAST, AES, Twofish
PGP使用的不對稱算法: RSA, DH
?
加密流程:
?
用會話鑰匙加密明文,然后用公共鑰匙加密會話鑰匙,講這兩個加密出來的內容打包放在一起傳輸。
?
解密流程:
將收到的數據(密文和加密后的會話鑰匙)分開,用私鑰來解密加密后的會話鑰匙,得到會話鑰匙,用會話鑰匙來解密密文。
?
會話鑰匙加密解密用的同一把,所以是對稱加密算法。另外的公鑰加密,私鑰解密,是公鑰加密算法。
PGP整合了對稱加密和公鑰加密的方案。
保持了對稱加密算法速度快的特點,又具有公鑰算法密鑰分配方便的特點。
?
PGP數字簽名:
簽名算法:RSA+MD5, RSA+ SHA1, DSS+SHA1
數字簽名過程:
數字簽名是用私鑰加密,就可以確認消息來源和保證完整性,因為私鑰是個人持有的且是對明文簽名。
?
但是直接對明文進行數字簽名存在一些問題
1.速度非常慢
2.生成大量的數據
?
PGP的解決辦法是對明文使用一種Hash函數(PGP使用Hash函數: MD5, SHA1),產生定長的數據,稱為消息摘要。使用簽名算法對摘要簽名,然后將簽名和明文放在一起。
?
下面來說說公鑰密碼算法的一個重要問題,如何傳播公鑰?
假設有這樣一個場景,A想寫信給B,A先要得到B的公鑰,A在某處查到一個公鑰以為是B的,實際上是C的公鑰,是C有意假冒B,C竊聽到密信,然后用對應的私鑰解密,C看到了信的內容。此時,C已經假冒B成功了,C再給A寫一封信,A仍用B的假公鑰來打開C的信,A讀到C假冒B寫的信。
因此,公鑰的分發是很重要的。
?
公鑰分發模型:
1.金字塔模型
這個模型的基礎是要有上層的機構是值的信賴的機構,由上層機構來分發公鑰,需要公鑰的時候,向上層機構詢問。
?
2.信任網絡模型(PGP采用):
?
?
PGP數據證書:
證書包含擁有者的信息
證書可以自己創建和聲明
證書上包含自簽名
證書可能包含多個人的簽名
?
證書正確性檢查
1.手工途徑:要求接收者親自把公鑰交給你
檢查證書的指紋
2.信任途徑:相信已經進行了檢查過程的第三方結果(上面可能有一些簽名,保證證書上的公鑰屬于某個人)
?
私鑰保護問題:
PGP利用一個Passphrase來獲得自己的私鑰。
?
壓縮預處理問題:
PGP對明文加密前進行壓縮處理,使用PKZIP算法壓縮。
好處:壓縮后比原來的明文更短,節省網絡傳輸的時間;壓縮相當于一次變換,信息變的雜亂,對攻擊的抵御能力更強。
轉載于:https://www.cnblogs.com/13jhzeng/p/5517770.html
總結
以上是生活随笔為你收集整理的现代密码学应用的范例-PGP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux档案属性与目录配置
- 下一篇: Java中怎样创建线程安全的方法