用 OpenPGP/GnuPG 對郵件簽名和加密

假設(shè)你搞了個大新聞,希望通過安全途徑爆料給記者;又假如你有個互聯(lián)網(wǎng)領(lǐng)域的商業(yè)創(chuàng)意,想發(fā)送到投資人的 QQ 郵箱,卻擔(dān)心友商騰訊會掃描你們的往來郵件進而竊取創(chuàng)意;再或者你的郵件里因為有某些不可描述的文字內(nèi)容被郵件服務(wù)商給退回了……在這些情境之下,你可能需要用 OpenPGP/GnuPG 給你的郵件加密了。

OpenPGP 是廣泛使用的郵件加密標(biāo)準(zhǔn),定義在 RFC 4880 之中。而 GnuPG(又稱 GPG)是 OpenPGP 的一種開源實現(xiàn)。

原理簡述

OpenPGP 從完整性和保密性兩方面保證通信安全。對郵件進行數(shù)字簽名可以防止內(nèi)容被篡改,對郵件進行加密保證內(nèi)容不被刺探。兩部分功能相互獨立,可以獨立或共同使用。

OpenPGP 的工作原理大體是這樣的:用戶針對自己的郵件地址,生成一對密鑰。其中公鑰是完全公開的,可以上傳到公鑰服務(wù)器,讓通信的另一方通過郵件地址搜索到;也可以通過郵件等形式直接發(fā)送給對方。而私鑰是保密的,只有用戶自己知道。

現(xiàn)在假設(shè)用戶 Alice 希望發(fā)送加密郵件給 Bob,Alice 首先需要知道 Bob 的公鑰,然后利用 Bob 的公鑰和自己的私鑰加密郵件。Bob 收到郵件之后,用自己的私鑰就可以解密。如果第三方 Carol 截獲了郵件,雖然她可以獲得 Bob 公開的公鑰,但仍無法破譯郵件內(nèi)容。

有時,Alice 不在乎郵件是否被 Carol 看到,只關(guān)心內(nèi)容是否被篡改。那么她可以用自己的私鑰對郵件內(nèi)容進行數(shù)字簽名,并附在郵件中。Bob 收到郵件后利用 Alice 的公鑰就可以核對信息完整性。由于沒有 Alice 的私鑰,Carol 不可能在修改郵件內(nèi)容后生成合法的簽名。

郵件簽名和加密工具

作為 OpenPGP 標(biāo)準(zhǔn)的一種實現(xiàn),原始的 GnuPG 是個純命令行軟件,盡管許多中文博客對其有介紹,不過看完簡介仍然有可能一頭霧水。好在許多工具都將 GnuPG 集成在內(nèi),對郵件簽名加密并不需要直接在命令行里使用它。

OpenPGP 網(wǎng)站 列出了一系列郵件加密解決方案,涵蓋了各種桌面和移動操作系統(tǒng),有單獨的應(yīng)用,有常用郵件客戶端和瀏覽器的插件,還有直接提供加密服務(wù)的郵件平臺。

GPG Tools 是 macOS 上的一整套加密工具,它基于 GnuPG,包含了 Mail.app 插件、GPG 鑰匙串(GPG Keychain)等工具,可以無縫集成在 macOS 自帶的郵件客戶端中使用。

在 iOS 下,有 iPGMail 和 oPenGP 可選。

如果你習(xí)慣直接通過 web 訪問郵箱,Mailvelope 提供了 Chrome 和 Firefox 插件。

GPG Tools

軟件可以在官網(wǎng)下載。下載完成后,建議進行 SHA256 校驗——如果下載了不正確的版本,那郵件信息安全的基礎(chǔ)就被動搖了。事實上,官網(wǎng)本身都是 SSL 加密傳輸?shù)摹?/p>

sha256sum GPG_Suite-2017.1b2.dmg

安裝完成后,首次打開 Mail.app 時,會提示你創(chuàng)建密鑰對。(軟件提示是“密匙”,不過本文還是使用通用說法“密鑰”,二者同義。)

生成新密鑰對

電子郵件地址應(yīng)該與 Mail.app 中郵件賬戶完全一致。設(shè)置口令(passphrase)可以增強安全性,但以后每次使用時都要輸入,一旦忘記,也無法恢復(fù),安全性與便利性需要權(quán)衡。勾選“上傳公鑰”后,公鑰會在創(chuàng)建完成后被自動上傳到公鑰服務(wù)器,全世界的人都可以通過你的電子郵件地址搜索到你的公鑰,方便固然方便,不過之后就不能修改全名了。初次使用可不勾選,畢竟之后你仍然可以隨時手動上傳。

點擊“生成密匙”,稍等片刻,就可以在 GPG Keychain 中看到新生成的密鑰對。現(xiàn)在,可以發(fā)出第一封加密郵件了!

在“郵件”中點擊“編寫新郵件”,可以看到右上角出現(xiàn)綠色的“OpenPGP”。


OpenPGP

同時在“主題”一欄之后,出現(xiàn)兩個按鈕:加密和數(shù)字簽名。

簽名而不加密

默認(rèn)情況下,“數(shù)字簽名”按鈕是常亮的。而加密需要對方的公鑰,在填寫收件人并且獲得公鑰之前,始終是灰的。為了測試,你可以填上自己的郵箱地址,以打開加密按鈕。

加密并簽名

填寫郵件標(biāo)題和內(nèi)容之后,給自己發(fā)送一封加密郵件。很快,你可以在收件箱中看到剛才發(fā)出的郵件。對于正確配置了 GPG Tools 的收件人來說,郵件驗證和解密完全是透明的,除了抬頭那一欄“安全性”之外,與普通郵件沒有任何區(qū)別。

如何知道對方的公鑰呢?當(dāng)然你可以讓對方通過簽名郵件發(fā)給你(在 GPG Keychain 中右擊密鑰,選擇“Mail public key”),更通常的做法是,通過“查找公鑰”工具,搜索對方電子郵件地址或 key ID 查找。公鑰服務(wù)器有許多,信息是共通的,由于不可描述的原因,默認(rèn)的服務(wù)器連接會超時,在“偏好設(shè)置”里改成 hkp://keys.gnupg.net 可以解決。

公開鑰匙算法的一個弱點就是公鑰的傳播。如果 Carol 生成了一對鑰匙,并偽裝成 Bob 的,Alice 在收到偽造的公鑰后,發(fā)送給 Bob 的郵件一旦被 Carol 截獲,后者可以用自己的私鑰將其解密。所以,通過郵件傳送公鑰時,數(shù)字簽名是必要的。收到公鑰后,通過可信渠道(比如打個電話啥的)核對“指紋”(fingerprint)也能避免這類攻擊。

iPGMail

這款應(yīng)用在 App Store 上賣 12 元人民幣,我買了。與之類似的 oPenGP 賣 30,我沒舍得再買。

這類軟件的功能要件無非這幾樣:

  • 生成并管理自己的一對鑰匙
  • 獲取對方公鑰
  • 用鑰匙給郵件加解密、簽名

iPGMail 可以從 iCloud 導(dǎo)入鑰匙,可以生成鑰匙,也支持從一系列可編輯的服務(wù)器列表中下載公鑰。

由于 iPGMail 是以單獨應(yīng)用而不是插件形式存在的,收發(fā)郵件就相對麻煩了。你可以在 iPGMail 的“Compose”標(biāo)簽頁中生成加密/簽名郵件,然后傳送到 iOS 自帶的客戶端,由自帶客戶端最終發(fā)送;收到密文時,需要發(fā)送或復(fù)制到應(yīng)用中,由 iPGMail 解密。

Mailvelope

TODO


折騰這么半天,終于實現(xiàn)了幾乎全平臺的加密郵件收發(fā),現(xiàn)在你可以隨心所欲地給你同樣配置了 OpenPGP/GnuPG 的朋友們發(fā)信了——如果你真能找到的話。不得不說,開頭設(shè)想的幾種場景略顯中二,如果不是在安全領(lǐng)域,這樣的朋友恐怕很難成對出現(xiàn)。剛才看到個段子,有垃圾郵件發(fā)送者開始發(fā)送經(jīng)過加密和簽名的郵件,收件人解開郵件卻發(fā)現(xiàn)是尼日利亞王子的故事——繞過郵件過濾系統(tǒng)并成功引起收件人的注意,這或許是加密郵件在非極端場合下最大的作用了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,748評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,165評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,595評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,633評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 71,435評論 6 405
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,943評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,035評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,175評論 0 287
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,713評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 40,599評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,788評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,303評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,034評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,412評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,664評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,408評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 47,747評論 2 370

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

  • 終端之間信息傳遞安全性的保證始終是業(yè)務(wù)的剛性需求。不同的加密算法針對不同的業(yè)務(wù)需求,因為公司是金融公司性質(zhì),又不是...
    語歌閱讀 2,829評論 0 5
  • 加密貨幣,特別是比特幣,幾乎從各個方面都得到了大量關(guān)注:規(guī)則、管理、稅務(wù)、技術(shù)、產(chǎn)品創(chuàng)新等等,不勝枚舉。“點對點(...
    簡聞閱讀 677評論 0 9
  • 原文 http://mp.weixin.qq.com/s/7ImZolr7m3tUuyOgMJeFYg?utm_...
    cvmars閱讀 5,294評論 0 1
  • 找工作,這個不簡單? 找工作不難,難的是找好工作!這是她們給我的一個勸告! 也是這個讓我有...
    女人成長驛站閱讀 183評論 0 1
  • 21歲,想吃,想玩,想不勞而獲,想順風(fēng)順?biāo)胱鲇行斡譄o形的風(fēng)
    白月明閱讀 176評論 0 0