GnuPG 的三個使用場景

以前寫過一篇文章跪但,詳細(xì)介紹了 GnuPG驼抹,以及如何使用 GPG 工具給郵件簽名和加密荸百。考慮到實際上你的朋友們并不會和你一樣使用 GPG桥帆,這些基本就成了屠龍之技。

好在 GPG 還是有其他用處的慎皱。

驗證下載內(nèi)容

不管是政策法規(guī)原因,還是運營商出國帶寬原因叶骨,反正現(xiàn)在要去國外的軟件官網(wǎng)下點東西茫多,是越來越難了。如果去國內(nèi)第三方下載忽刽,怎么保證下到的文件沒有經(jīng)過篡改呢天揖?畢竟,之前鬧得沸沸揚揚的 XcodeGhost 事件就是前車之鑒啊跪帝。

有的網(wǎng)站提供 MD5 驗證今膊。通過對比本地使用 md5sum 計算得到的校驗和與官網(wǎng)提供的校驗和,來驗證文件完整性伞剑。但是 MD5 可以構(gòu)造沖突斑唬,發(fā)動所謂碰撞攻擊 collision attack,也就是說黎泣,被篡改的文件明明和原文件不一樣恕刘,但是可以構(gòu)造出相同的 MD5 校驗和。

又有網(wǎng)站提供 SHA256 驗證抒倚。使用方法差不多褐着,抵御 collision attack 的能力比 MD5 要強。如果是在 TLS/SSL 加密過的官網(wǎng)(你得好好確認(rèn))獲得的 SHA256 校驗和的話托呕,那么這種方法還是具有一定可靠性的含蓉。

為什么要強調(diào) TLS/SSL 呢?因為沒有簽名的網(wǎng)頁給出的校驗和本身有可能被篡改啊项郊。某些第三方的鏡像馅扣,同時還鏡像了官方的未簽名的校驗和,那就簡直搞笑了:第三方如果真的篡改了文件呆抑,只要相應(yīng)修改鏡像內(nèi)的校驗和即可岂嗓,用戶拿著它在本地校驗純屬浪費時間。

所以為了驗證文件完整性鹊碍,一方面需要保證哈希算法的 collision resistance厌殉,另一方面還要保證官方給出的校驗和正確送達(dá)你手中食绿。防不勝防啊。

第二種需求就是 GPG 的典型應(yīng)用場景——郵件簽名嘛公罕。官方公開一份用自己的私鑰簽名了的文件器紧,其中包含了正確的 SHA256 校驗和,無論用戶在哪里得到了它楼眷,都可以驗證內(nèi)容是否由官方發(fā)出铲汪,是否被篡改。只要確保擁有官方的公鑰罐柳,無論在哪里獲得的軟件掌腰,無論在哪里獲得的校驗和,都可以放心地用 sha256sum 驗證對比后使用张吉。

怎么獲得對方公鑰呢齿梁?你得知道對方的 key ID,然后從公鑰服務(wù)器上獲取肮蛹。

gpg --keyserver hkp://keys.gnupg.net --recv-key 7D8D0BF6

7D8D0BF6Kali Linux 發(fā)布軟件用的鑰匙勺择,其文檔中有詳細(xì)的校驗步驟,本文就是參考文檔寫成伦忠。

話說回來省核,你還是得知道對方的 key ID。不過 key ID 很短昆码,比較容易獲得和記憶气忠,而且鑰匙一旦獲得,會保存在本地赋咽,下次使用就不需要再次獲取了笔刹。

查看 fingerprint,確認(rèn)公鑰正確導(dǎo)入:

gpg --fingerprint 7D8D0BF6

輸出差不多是這樣:

pub   4096R/7D8D0BF6 2012-03-05 [expires: 2018-02-02]
      Key fingerprint = 44C6 513A 8E4F B3D3 0875  F758 ED44 4FF0 7D8D 0BF6
uid                  Kali Linux Repository <devel@kali.org>
sub   4096R/FC0D0DCB 2012-03-05 [expires: 2018-02-02]

和軟件一起下載到的 SHA256SUMSSHA256SUMS.gpg冬耿,前者是校驗和舌菜,后者是對前者的簽名,用公鑰對簽名進行驗證亦镶。

gpg --verify SHA256SUMS.gpg SHA256SUMS

確比赵拢看到 Good signature 的提示,否則就是驗證失敗了缤骨。

官方給出的校驗和沒問題爱咬,接下來就看與本地算出的校驗和是不是一致了。

你當(dāng)然可以算出后進行肉眼比對绊起,但是下面的命令更方便直觀:

grep kali-linux-2016.2-amd64.iso SHA256SUMS | shasum -a 256 -c

如果不出意外精拟,結(jié)果差不多是這樣:

kali-linux-2016.2-amd64.iso: OK

看到 OK,就是驗證成功了。

第一次導(dǎo)入公鑰成功后蜂绎,以后每次驗證只需要兩條命令栅表,算是比較方便的了。

ubuntu 也使用了同樣的驗證方式师枣。CentOS 驗證方式略有不同怪瓶,它提供了一個同時包含校驗和與簽名的 sha256sum.txt.asc,可以這樣校驗簽名:

gpg --verify sha256sum.txt.asc

如果在 Mac 上裝了 GPG Suite 的話践美,雙擊 .asc 文件就可以完成校驗洗贰,導(dǎo)入公鑰都省了。

.asc.iso 放在同一目錄下陨倡,可以用以下命令驗證校驗和:

sha256sum -c sha256sum.txt.asc 2>&1 | grep OK

為 GitHub 每一次提交簽名

仍然是保證提交完整性的一個應(yīng)用場景敛滋。先在 GitHub 賬戶中上傳你的公鑰,隨后對每次提交兴革,在本地用私鑰簽名矛缨,當(dāng) git push 到 GitHub 后,服務(wù)器會驗證這次提交是不是由你完成的帖旨。

服務(wù)器端,在 GitHub 的 Settings -> SSH and GPG keys 里灵妨,添加你的 GPG 公鑰解阅。

在本地,首先告知 git 鑰匙信息泌霍。用 gpg --list-secret-keys --keyid-format LONG 命令货抄,查詢私鑰 ID。

$ gpg --list-secret-keys --keyid-format LONG
/Users/hubot/.gnupg/secring.gpg
------------------------------------
sec   4096R/3AA5C34371567BD2 2016-03-10 [expires: 2017-03-10]
uid                          Hubot 
ssb   4096R/42B317FD4BA89E7A 2016-03-10

像上面那樣朱转, 3AA5C34371567BD2 就是私鑰的 key ID蟹地。

告知 git

git config --global user.signingkey 3AA5C34371567BD2

如果用的不是 GPG Suite藤为,還要設(shè)置環(huán)境變量怪与,

echo 'export GPG_TTY=$(tty)' >> ~/.bash_profile

GPG 鑰匙對應(yīng)的郵件地址必須和 git 提交的郵件地址一致,否則看這里缅疟。

提交的時候分别,加參數(shù) -S 可簽名。

git commit -S -m 'your commit message'

如果要默認(rèn)簽名存淫,可以設(shè)置

git config commit.gpgsign true

如果希望本機所有提交都簽名耘斩,給上面的命令加 —global 參數(shù)即可。

加密 Facebook 郵件通知

Facebook 為用戶提供上傳 GPG 公鑰服務(wù)桅咆。點擊設(shè)置括授,選擇安全與登錄,在頁面最下方上傳。上傳后荚虚,既可以打開加密郵件通知薛夜,也可以在個人頁面公開,以便和你的 geek 朋友們通信曲管。設(shè)置完成后却邓,需要點擊郵件鏈接確認(rèn)。注意院水,如果打開加密腊徙,賬戶找回通知也是加密發(fā)送的。要是哪天重裝系統(tǒng)把私鑰給弄丟了檬某,趕緊關(guān)掉加密或者換掉公鑰吧撬腾。

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市恢恼,隨后出現(xiàn)的幾起案子民傻,更是在濱河造成了極大的恐慌,老刑警劉巖场斑,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件漓踢,死亡現(xiàn)場離奇詭異,居然都是意外死亡漏隐,警方通過查閱死者的電腦和手機喧半,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來青责,“玉大人挺据,你說我怎么就攤上這事〔绷ィ” “怎么了扁耐?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長产阱。 經(jīng)常有香客問我婉称,道長,這世上最難降的妖魔是什么构蹬? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任酿矢,我火速辦了婚禮,結(jié)果婚禮上怎燥,老公的妹妹穿的比我還像新娘瘫筐。我一直安慰自己,他們只是感情好铐姚,可當(dāng)我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布策肝。 她就那樣靜靜地躺著肛捍,像睡著了一般。 火紅的嫁衣襯著肌膚如雪之众。 梳的紋絲不亂的頭發(fā)上拙毫,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天,我揣著相機與錄音棺禾,去河邊找鬼缀蹄。 笑死,一個胖子當(dāng)著我的面吹牛膘婶,可吹牛的內(nèi)容都是我干的缺前。 我是一名探鬼主播,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼悬襟,長吁一口氣:“原來是場噩夢啊……” “哼衅码!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起脊岳,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤逝段,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后割捅,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奶躯,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年亿驾,在試婚紗的時候發(fā)現(xiàn)自己被綠了嘹黔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡颊乘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出醉锄,到底是詐尸還是另有隱情乏悄,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布恳不,位于F島的核電站檩小,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏烟勋。R本人自食惡果不足惜规求,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望卵惦。 院中可真熱鬧阻肿,春花似錦、人聲如沸沮尿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赴邻,卻和暖如春印衔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背姥敛。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工奸焙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人彤敛。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓与帆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親臊泌。 傳聞我的和親對象是個殘疾皇子鲤桥,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,573評論 2 359

推薦閱讀更多精彩內(nèi)容