關於什麼是 email 加密,什麼是 OpenPGP,以及它們在桌機(和筆電)上各種作業系統 (Unix-like, Windows, Mac OS …) 的設定方法,網路上已有許多良好的中文說明,請自行搜尋。
但目前網路上似乎還沒有中文版的「如何在 Android 手機或平板上加密 email 步驟」。這裡提供步驟圖解。
目錄
- 需要的軟硬體
- 如何建立金鑰
- 如何把公鑰給別人?(或者別人如何給你他的公鑰)
- 如何匯入別人的公鑰
- 設定 K-9 Mail 與 OpenKeychain 的合作
- 如何在 K-9 Mail 寫加密(或/和簽名)信給別人
1. 需要的軟硬體
- Android 手機或平板電腦(或者相容於Android的作業系統,例如 CyanogenMod, Replicant, OmniROM);
- email 帳號,隨便哪一家。
- 適用於 Android 的電子郵件客戶端軟體,Android 有內建,你的 email 服務業者通常也會提供自家的軟體,但本範例推薦使用 K-9 Mail(Play 商店下載)(理由:Prism-Break 推薦在 Android 系統上使用的 email 客戶端軟體。開源軟體,功能齊全,好操作,無廣告,免費)。
- 適用於 Android 的 OpenPGP 金鑰管理程式,本範例推薦使用 OpenKeychain(理由:同 K-9 Mail)(注意!另一個金鑰管理程式 GPG for Android 已停止維護,他的官網推薦改用 OpenKeychain;還有一個金鑰管理程式 APG 雖然仍有人維護,但進度緩慢,所以 The Guardian Project 也是推薦使用 OpenKeychain)。
- 以下將介紹如何使用 OpenKeychain 結合 K-9 Mail,在Android裝置上為 email 加密。至於其他的金鑰管理軟體(例如 APG),或者其他的電子郵件客戶端軟體,設定方法應該類似。
2. 如何建立金鑰
2. 安裝後在手機或平板上開啟 OpenKeychain。這是第一次啟動的畫面,尚無任何金鑰:
3. 按右上角的「…」並選擇「管理我的金鑰」,會出現如下畫面:
* 如果你已經創建過金鑰,可以把「私鑰」檔案存到手機或平板上,然後選擇「從檔案匯入金鑰」。
4. 按「建立金鑰」,會出現這個畫面:
輸入你給這個金鑰的名稱(其實是這「組」金鑰,因為每次至少會創造出兩把金鑰,分別是一把公鑰和一把私鑰 [技術細節];如果還要用來簽署檔案或認證他人的公鑰,則會有更多把金鑰),這名稱會出現在後面步驟「上傳伺服器」的公開資訊裡面,所以謹慎思考一下,如果你不希望公開本名,想個以後會固定使用的假名;也可以乾脆留白,不填這格(本範例設為hello world)。
6. 輸入這組金鑰所對應的 email,並按「下一步」:
7. 為這個金鑰設定密碼(建議使用強密碼。密碼欄右邊的長條會指出你的密碼有多強或弱。如果你有按照本站另一篇文章的建議安裝 KeePass 或 KeePass2Android 或類似的密碼管理員,可以使用它來自動產生強密碼):
8. 「網路同步」選項:如果打勾,等一下金鑰建立完成後,公鑰會上傳到公用的伺服器(例如:http://www.keyserver.net/ 或 http://hkps.pool.sks-keyservers.net),讓所有人可以根據你的 email 地址去查詢你最新的公鑰。
也可以不勾選,改透過私下檔案交換(方法見下一節),或者貼在自己的網頁上,讓其他人取得你的公鑰(注意不要誤把私鑰給出去):
* 如果你哪天不想再使用這支公鑰(可能原因:換信箱,改名,私鑰被別人竊取),只要私鑰還在,隨時可以使用 OpenKeychain 的「撤銷」(吊銷)指令。撤銷後,任何想要使用這隻公鑰的人只要連上網路,他的金鑰管理程式便會從伺服器更新資料,從而拒絕或至少警告他不要使用這支公鑰。
* 撤銷之後,只要你不從手機或電腦裡刪除相應的私鑰,仍然可以解碼別人用這支公鑰寫給你的加密信。
9. 按下「建立金鑰」後,程式大概需要10~20秒的時間來產生新的金鑰。完成後自己按回到主畫面(或者按左上角的三條槓,選擇「金鑰」),會看到剛才創建的金鑰。
3. 如何把公鑰給別人?(或者別人如何給你他的公鑰)
別人要有你的公鑰才能寫加密信給你。在 Android 手機或平板上把公鑰給別人,有多種方法,以下介紹幾種。
方法1:如果剛才在建立金鑰時,你有勾選「網路同步」,那麼對方可以到公鑰伺服器搜尋你的 email 帳號,就會得到你的公鑰。
方法2:如果你現在想要把公鑰上傳到伺服器,則打開 OpenKeychain,點選你想要上傳公鑰的 email 帳號,例如我們剛才建立的 helloworld@mymail.com。會進入這個畫面:
按右上角的「…」,再按「更多密鑰詳情」,再按「分享」,會進入這個畫面:
在這裡你可以「上傳到金鑰伺服器」。或者…
方法3:如果對方就在你身邊,或者你們正在視訊通話中,讓他的手機用 OpenKeychain 掃描這個二維條碼就可以了(跟上一頁的二維條碼是同一個)。
方法4:如果對方不在你身邊,你可以按下「金鑰」下方的這個圖示:(代表「分享」)
然後可以選擇透過 K-9 Mail 或是其他的通訊軟體來寄送公鑰檔案(檔名跟你剛才設訂金鑰名稱一樣,副檔名為 .asc,例如本範例是 “hello world.asc”)。
方法5:你也可以按「金鑰」下方的另一個圖:(代表「複製」)。
然後自己打開 K-9 Mail 或是其他的通訊軟體﹐貼上剛才複製的公鑰。這是一長串亂碼,中間會有幾百個字,只有頭尾是正常英文,長得像這樣:
—–BEGIN PGP PUBLIC KEY BLOCK—–
mQGNGJf2rjkfZ3kjjdf ….
—–END PGP PUBLIC KEY BLOCK—–
方法6:也可以將上述的二維條碼、 .asc 檔、或者公鑰亂碼字串貼到你自己的網站上(通常是貼在 email 旁),讓任何人都能下載或複製使用。
在給 .asc 檔案時,為了要降低錯誤發生的風險(可能你不小心放錯連結,而使想與你聯絡的人下載到錯誤的公鑰;或者下載、檔案複製的過程出了錯;或者下載過程被駭客置換了其他的公鑰),通常會將公鑰的指紋(見上圖的 “fingerprint”,有40碼)全部或後8碼寫在旁邊,讓對方下載完後可以比對。例如本範例中的後8碼是 B2A5 A576(大小寫沒差)。
一個實際的例子:OpenVPN,一套開源且廣受信賴的VPN軟體,在他的官網列出供下載的哪個檔案是用哪個 email 的金鑰簽名,以及屬於該金鑰組的公鑰檔案,和公鑰的指紋(如下圖,或這裡看官網)。
方法7:你也可以用手機的螢幕快照,結合你的任何通訊軟體或 email,把包含二維條碼或者公鑰文字的螢幕截圖傳給對方,讓他自己想辦法輸入。或者再狠一點,把這一長串的公鑰文字念給他抄寫(不推薦)。
4. 如何匯入別人的公鑰
要有別人的公鑰,才能寫加密信給別人。
收到別人的公鑰後,要先匯入 OpenKeychain 裡面才能使用。匯入公鑰也有多種方法,都要先打開 OpenKeychain,按「+」符號,選擇「從文件導入」(或匯入),進入這個畫面:
- 如果你收到 .asc 公鑰檔案,按這個畫面右邊的(代表「開啟檔案」),並找到你收到的檔案。
- 如果你收到公鑰文字,則需要複製整串字,包含開頭和結尾(從 “—–BEGIN” 到 “BLOCK—-“),然後按這個畫面右邊的(代表「貼上」)。
若看到類似這樣的畫面,表示已匯入公鑰:
匯入對方的金鑰後,還差一步就可以寫加密信件給他了。那之前要先設定好你的郵件軟體與 OpenKeychain 合作。
5. 設定 K-9 Mail 與 OpenKeychain 的合作
- 已經安裝了K-9 Mail的人,只需要看本節的8和9。
如果還沒有安裝 K-9 Mail,到 Play 商店下載安裝:
2. 安裝好後,開啟 K-9 Mail,會看到類似這樣的畫面
3. 按右下角第二個的「+」符號,進入「設定新帳戶」畫面:
填入自己的 email 帳號和密碼,並按「下一步」。
4. 然後選擇帳戶類型:如果您知道各類型的差異,請依喜好選擇。這裡推薦 IMAP,因為在所有的客戶端都可以同步閱讀的進度,以及有「新郵件推送」功能,讓你不需要打開郵件軟體就得知有沒有新郵件。
5. 然後會進入 IMAP 伺服器(收信伺服器)的詳細設定。一般而言,如果您的電子郵件服務供應商有照著電子郵件的技術慣例來設定伺服器,直接按下一步就可以了。如果下一步出現錯誤(無法登入),請去查詢您的電子郵件業者網站上的「郵件客戶端設定」。(Gmail 用戶可能會比較麻煩,見下面)
* Gmail 的用戶有一些麻煩之處。請先按照 Gmail 網站上的說明來輸入伺服器和帳號密碼。如果還是不行,試試以下處理方法:
(1) 請到「Google帳戶」網站調整安全性設定(Google自身的說明),然後回到 K-9 Mail 按下一步。
(2) 如果還是不行,回想一下您是否設定了「應用程式密碼」?如果有,請去「Google帳戶」網站產生一個新的密碼給 K-9 Mail。
(3) 如果還是不行,請洽 Google 客服。
6. 接下來是 SMTP(寄信伺服器)的詳細設定:如同 IMAP 那邊,基本上按下一步就可以了。如果出現錯誤,處理方法也同 IMAP 那邊。
7. 郵件帳戶成功設定後,回到主畫面,已經可以看到剛才新增的帳戶:
8. 點選帳號名稱(這裡是 helloworld@mymail.com),會進入該帳號的收件匣。按右下角的「…」,選擇「設定」,再選擇「帳戶設定」:
9. 到選單最下面,選擇「加密」,再選擇「OpenPGP提供者」,再選擇「OpenKeychain」:
完成!現在你已經可以讀取別人寫給你的加密郵件,以及在你寫給別人的郵件上「簽名」了(見下節)。
但是如果要寫加密郵件給別人,要先跟對方索取他的公鑰。如果要讓別人能夠寫加密信給你,要先把你的公鑰給對方。
6. 如何在 K-9 Mail 使用加密(或/和簽名)信件
前提:(1) 你已取得收件人的公鑰。 (2) 你已按照上一節的8和9,在 K-9 Mail 裡面設定 OpenKeychain 為預設的 OpenPGP 程式。
6.1 寫加密(或/和簽名)信給別人
- 當你在 K-9 Mail 撰寫新信件時,會看到「簽名」和「加密」兩個選項,打勾即可使用。這兩個選項可以只勾選一個,但要保障通信安全的最好方法是兩個都勾選。
2. 「簽名」的功能
與真實郵件一樣,email 的寄件人地址很容易在寄送中途被竄改。
在「簽名」的 email 上,收件人的郵件軟體會結合金鑰管理程式,自動驗證這封信是不是真的來自寄件人地址。
勾選「簽名」後,在寄出時 K-9 Mail 會要求輸入「你的」私鑰密碼(在我們的範例裡是 “test123″),因為簽名使用你的私鑰。(所以私鑰和私鑰密碼不能外洩,不然其他人就能冒用你的名義寫信)
如果你選取的寄件帳號還沒有私鑰在 OpenKeychain 裡,卻勾選了簽名時,是寄不出去的。因為簽名要使用自己的私鑰。
3. 「加密」的功能
與真實郵件一樣,任何人如果取得你的信件,並且懂那個語言,就看得懂。
在「加密」的 email 上,只有持有收件人私鑰的人能解碼這封信。因為每一對公鑰和私鑰的組合是獨一無二的(技術細節),不可能製造出第二對一樣的加密/解密組合(所以私鑰和它的密碼不能外洩,私鑰如果有備份檔,最好鎖在本身也是加密的檔案裡)。
如果你選取的收件人(別人的 email 帳號)還沒有公鑰在 OpenKeychain 裡,卻勾選了加密時,是寄不出去的。因為加密要使用別人的公鑰。
如果你只勾選加密而沒有勾選簽名,信件寄出前不會問你的密碼,因為加密給別人的信使用別人的公鑰,不需要密碼。
4. 進階的加密應用:如果你除了寫信之外也寄附件給別人,可以開啟 OpenKeychain, 先把附件檔案用對方的公鑰加密後,再加入到郵件中寄給對方。對方再用自己的私鑰開鎖。
5. 進階的加密應用:如果你使用 LINE, Skype, Facebook 等等的聊天工具,可以開啟OpenKeychain,把要說的話用對方的公鑰加密後,再貼到聊天軟體裡面傳給對方。對方再用自己的私鑰開鎖。(但是每句對話都要加密很麻煩,方便的做法請搜尋關鍵字 ” Off-the-Record Messaging ” 或者 ” OTR ” ,並加上想使用的軟體,例如:” LINE OTR “; 或者 ” facebook OTR “)
6.2 讀別人寫來的加密(或/和簽名)信
K-9 Mail 會自動判斷來信是否加密和/或簽名。
- 針對簽名,會結合 OpenKeychain 自動判斷簽名是否與寄件人地址的金鑰相同。
- 針對加密,會跳出要求輸入密碼的視窗,這裡要輸入「你的」私鑰密碼,輸入正確即可自動解碼郵件。(所以私鑰和私鑰密碼不能外洩,不然其他人就能讀取你的信件)
- 如果收到加密的附件,必須先存到手機或平板上後,使用 Openkeychain 來開啟。
以上就是如何在 Android 手機或平板上使用加密電子郵件的方法。當然你可以選用其他的郵件軟體和金鑰管理軟體,也希望你設定成功之後,能夠像本範例一樣寫篇說明文來造福社會。畢竟在這個(尤其來自政府的)網路竊聽、監視、人肉搜索無所不在的時代,學習使用加密功能是最佳的防身之道。(搜尋關鍵字:NSA 竊聽)
Hi, Great.. Tutorial is just awesome..It is really helpful for a newbie like me.. I am a regular follower of your blog. Really very informative post you shared here
Hi, Great.. Tutorial is just awesome..It is really helpful for a newbie like me.. I am a regular follower of your blog. Really very informative post you shared here
topic says the feelings of many readers
Unique content useful for readers
I didn’t know anything until I read this topic, it was really helpful
nice post
nice post
In summer like this, everyone should surf news like this
interesting topic, hope to have more topics
Today is a cloudy day and coincidentally I read this interesting topic
The day was really long and I accidentally saw this topic
This is an interesting topic suitable for reading
Today is a beautiful day and I love this topic
tên miền
shit
worn
wore
greater
well
great