一、PGP簡介
1.什么是PGP
??PGP是一款由個(gè)人編寫的密碼軟件,PGP是為了保護(hù)處于極端狀況下的人們的隱私而開發(fā)的,如果這些人的信息被竊聽,那么可能是性命攸關(guān)的大事件。
2.關(guān)于OpenPGP
??OpenPGP是對(duì)密文和數(shù)字簽名格式進(jìn)行定義的標(biāo)準(zhǔn)規(guī)格。
3.關(guān)于GNU Privacy Guard
??GNU Privacy Guard ( GnuPG、GPG)是一款基于OpenPGP標(biāo)準(zhǔn)開發(fā)的密碼學(xué)軟件“,支持加密、數(shù)字簽名、密鑰管理、S/MIME、ssh等多種功能。GnuPG是基于GNU GPL協(xié)議發(fā)布的一款自由軟件,因此任何人都可以自由使用它。
4.PGP的功能
(1)支持用對(duì)稱密碼加密和解密。
(2)支持生成公鑰密碼的密鑰對(duì),以及用公鑰密碼進(jìn)行加密和解密。
(3)支持?jǐn)?shù)字簽名的生成和驗(yàn)證,也可以將數(shù)字簽名附加到文件中,或者從文件中分離出數(shù)字簽名。
(4)PGP可以用單向散列函數(shù)計(jì)算和顯示消息的散列值。
(5)PGP可以生成OpenGPG中規(guī)定格式的證書,以及與X.509規(guī)范兼容的證書。除此之外,還可以頒發(fā)公鑰的作廢證明。
(6)PGP支持?jǐn)?shù)據(jù)的壓縮和解壓縮,壓縮采用ZIP、ZLIB、BZIPZ等格式。
(7)PGP可以將二進(jìn)制數(shù)據(jù)和文本數(shù)據(jù)相互轉(zhuǎn)換。
(8)在文件過大無法通過郵件發(fā)送的情況下,PGP可以將一個(gè)大文件拆分成多個(gè)文件,反過來也可以將多個(gè)文件拼合成一個(gè)文件。
(9)PGP可以管理所生成的密鑰對(duì)以及從外部獲取的公鑰。用于管理密鑰的文件稱為鑰匙串( key ring )。
二、加密和解密
1.加密
??PGP的加密過程如下圖所示,在這張圖中,消息經(jīng)過混合密碼系統(tǒng)加密,然后轉(zhuǎn)化為報(bào)文數(shù)據(jù)。

(1)用為隨機(jī)數(shù)生成器生成會(huì)話密鑰
(2)用公鑰密碼加密會(huì)話密鑰,這里使用的是接收者的公鑰
(3)壓縮消息
(4)使用對(duì)稱密碼對(duì)壓縮的消息加密,密鑰為(1)中的會(huì)話密鑰
(5)將加密后的會(huì)話密鑰與加密后的消息合并
(6)將(5)中的結(jié)果轉(zhuǎn)換為文本數(shù)據(jù),轉(zhuǎn)換后得到的就是報(bào)文數(shù)據(jù)
2.解密

(1)接收者輸入解密的口令
(2)求口令的散列值,生成用于解密的密鑰
(3)將私鑰解密
(4)將報(bào)文數(shù)據(jù)轉(zhuǎn)換成二進(jìn)制數(shù)據(jù)
(5)將二進(jìn)制數(shù)據(jù)分解成加密的會(huì)話密鑰和經(jīng)過壓縮并加密的消息兩部分
(6)用公鑰密碼解密會(huì)話密鑰,私鑰是(3)中生成的接收者的私鑰
(7)使用(6)會(huì)話密鑰將(5)中經(jīng)過壓縮并加密的消息解密
(8)將(7)中得到的經(jīng)過壓縮的消息解壓縮
(9)得到原消息
三、生成和驗(yàn)證數(shù)字簽名
1.生成數(shù)字簽名

(1)發(fā)送者輸入簽名用的口令
(2)求口令的散列值,生成用于解密的密鑰
(3)將私鑰解密
(4)用單項(xiàng)散列函數(shù)計(jì)算消息的散列值
(5)對(duì)(4)中的散列值進(jìn)行簽名,相當(dāng)于用(3)得到的私鑰進(jìn)行加密
(6)將(5)得到的數(shù)字簽名和消息拼合
(7)將(6)的結(jié)果壓縮
(8)將(7)的結(jié)果轉(zhuǎn)換成文本數(shù)據(jù)
(9)步驟(8)中的結(jié)果就是報(bào)文數(shù)據(jù)
2.驗(yàn)證數(shù)字簽名

(1)將報(bào)文數(shù)據(jù)轉(zhuǎn)換成二進(jìn)制數(shù)據(jù)
(2)對(duì)壓縮過的數(shù)據(jù)解壓縮
(3)將解壓縮后的數(shù)據(jù)分解為經(jīng)過簽名的散列值和消息兩部分
(4)將簽名后的散列值用發(fā)送者的公鑰加密,恢復(fù)發(fā)送者發(fā)出的散列值
(5)將(3)中分解出的消息輸入單項(xiàng)散列函數(shù)計(jì)算出散列值
(6)將(4)中生成的散列值與(5)生成的散列值進(jìn)行對(duì)比
(7)如果(6)的結(jié)果相等則數(shù)字簽名驗(yàn)證成功,不想等則驗(yàn)證失敗。
三、生成數(shù)字簽名并加密以及解密并驗(yàn)證數(shù)字簽名
1.生成數(shù)字簽名并加密

2.解密并驗(yàn)證數(shù)字簽名

四、信任網(wǎng)
??之前我們介紹過是使用認(rèn)證機(jī)構(gòu)對(duì)公鑰簽名認(rèn)證的方法來確保公鑰的合法性,PGP中并沒有用到認(rèn)證機(jī)構(gòu),而是采用的一種信任網(wǎng)的方法。在這種方法中,PGP用戶會(huì)互相對(duì)對(duì)方的公鑰進(jìn)行數(shù)字簽名。
五、小測(cè)驗(yàn)
1.壓縮和加密的順序
??從用PGP加密的過程圖中可以看出,消息是先進(jìn)行壓縮再加密的,為什么一定要按照壓縮→加密的順序來處理呢?
我的回答:加密會(huì)導(dǎo)致比特序列的冗余性消失,而壓縮就是消除冗余性,所以如果加密之后就沒有壓縮的必要了。
2.確認(rèn)公鑰合法性的手段
??Alice有一個(gè)好朋友叫EIma,兩人經(jīng)常煲電話粥。有一天,她收到了一封來自Elma的郵件,里面說“這是我的公鑰",并附帶了一個(gè)公鑰。
??Alice考慮到這封郵件可能經(jīng)過了主動(dòng)攻擊者M(jìn)allory 的篡改,于是她打算給Elma打電話以便確認(rèn)自己所收到的公鑰是否來自EIma本人。 可是,由于收到的公鑰文件太大,不可能一個(gè)字節(jié)一個(gè)字節(jié)地通過電話來口頭確認(rèn),這可怎么辦呢?
我的回答:不需要讀出公鑰的內(nèi)容本身,只需要將公鑰輸入單向散列函數(shù),通過電話對(duì)比散列值就可以了。
3.大量的數(shù)字簽名
??Alice收到了來自Jerry 的公鑰,這個(gè)公鑰上帶有10個(gè)合法的數(shù)字簽名,Alice能判斷這個(gè)公鑰是合法的嗎?
我的回答:不能。公鑰的合法性的確可以通過數(shù)字簽名來保證,可是數(shù)字簽名的合法性也是需要確認(rèn)的,必須確認(rèn)對(duì)此公鑰進(jìn)行簽名的是否是Alice的信任機(jī)構(gòu)才可以確認(rèn)公鑰的合法性。
4.基礎(chǔ)知識(shí)
下列說法中,請(qǐng)?jiān)谡_的旁邊畫○,錯(cuò)誤的旁邊畫×。
(1) PGP中是先對(duì)數(shù)據(jù)進(jìn)行壓縮,然后再進(jìn)行加密的。
(2) PGP的用戶使用http://www.pgp.com/上設(shè)立的認(rèn)證機(jī)構(gòu)。
(3) 使用PGP可以生成自己的公鑰密鑰對(duì)。
(4) 在用PGP進(jìn)行加密時(shí),不使用對(duì)稱密碼算法,而是使用公鑰密碼算法。
(5) 在用PGP驗(yàn)證數(shù)字簽名時(shí),需要輸入口令。
(6) 在用PGP生成數(shù)字簽名并加密時(shí),需要輸入發(fā)送者的口令。文章來源:http://www.zghlxwxcb.cn/news/detail-447663.html
我的回答:(1)○;(2)×;(3)○;(4)×;(5)×;(6)○;
(2)PGP中使用的是信任網(wǎng)而不是認(rèn)證機(jī)構(gòu)。
(3)PGP使用的是混合密碼系統(tǒng),所以既要使用對(duì)稱密碼算法,也要使用公鑰密碼算法,使用公鑰密鑰算法對(duì)會(huì)話秘鑰加密,使用對(duì)稱密碼算法對(duì)消息加密。
(5) 在用PGP驗(yàn)證數(shù)字簽名時(shí),不需要輸入口令,使用PGP解密的時(shí)候需要輸入口令。文章來源地址http://www.zghlxwxcb.cn/news/detail-447663.html
到了這里,關(guān)于精讀《圖解密碼技術(shù)》——第十三章 PGP的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!