信息安全咙咽,是個(gè)很古老的話(huà)題老玛,但是也是個(gè)最容易被忽視的部分。作為普通人,我們經(jīng)陈叽叮可以看到某某網(wǎng)站數(shù)據(jù)庫(kù)資料被竊取互亮,某某網(wǎng)站存在巨大漏洞導(dǎo)致用戶(hù)資料泄露。作為 IT 從業(yè)者余素,我們自己親手寫(xiě)的代碼甚至可能會(huì)有嚴(yán)重的安全漏洞豹休。安全問(wèn)題,層出不窮桨吊,我們今天來(lái)聊聊如何安全的傳輸我們的密碼威根。
場(chǎng)景
在項(xiàng)目交接過(guò)程中,澳洲的一位同事需要和我交接這個(gè)項(xiàng)目视乐。我拿到項(xiàng)目代碼后洛搀,在運(yùn)行項(xiàng)目工程的過(guò)程中,發(fā)現(xiàn)配置文件中寫(xiě)了很多密碼的占位符佑淀×裘溃看來(lái)這位同事安全意識(shí)挺強(qiáng),關(guān)鍵的密碼都沒(méi)有存在代碼中伸刃,看起來(lái)是直接從環(huán)境變量中讀取的谎砾。
當(dāng)我通過(guò) Google Hangouts 找那位同事尋求密碼時(shí),她告訴我通過(guò) Hangouts 直接發(fā)送密碼不太安全捧颅。于是我決定使用 GPG 來(lái)加密我們之間的文本信息景图。
關(guān)于 GPG 加密
GPG 全稱(chēng) GNU Privacy Guard,屬于一種用戶(hù)加密碉哑、數(shù)字簽名以及生成非對(duì)稱(chēng)密鑰對(duì)的軟件挚币。更多信息,可以參考維基百科扣典。
我們下面用到的 GPG 加密妆毕,使用非對(duì)稱(chēng)加密的方式來(lái)加密信息的。
引用這段最經(jīng)典的密碼學(xué)場(chǎng)景:
- Bob 使用 GPG 軟件生成了自己的私鑰和公鑰激捏。然后將自己的公鑰發(fā)送給 Alice设塔;
- Alice 將收到的公鑰導(dǎo)入到自己的電腦上凄吏,然后用這個(gè)公鑰加密了一段密文远舅,發(fā)送給 Bob;(即使在發(fā)送過(guò)程中被黑客 Jerry 截胡,Jerry 看到的也只是一段密文)
- Bob 拿到密文后痕钢,使用自己的私鑰解密了 Alice 發(fā)送的信息图柏,看到了 “Hello Bob” 這段文字;
使用 GPG Suite 加密和解密
上述談到了這段密碼學(xué)場(chǎng)景任连,可是實(shí)際情況下蚤吹,作為 Bob 的我如何真的從 Alice 那里獲取一段密文呢?
1. 在 Mac 上安裝 GPG Suite
Bob 現(xiàn)在啥公鑰和私鑰都沒(méi)有,那么首先需要安裝 GPG Suite 生成公鑰和私鑰裁着,開(kāi)始下載 GPG Suite:https://gpgtools.org繁涂。安裝完成后,打開(kāi)軟件 GPG Keychain
二驰。
注意扔罪,如果密鑰強(qiáng)度過(guò)低,在生成密鑰對(duì)的時(shí)候, GPG Keychain 會(huì)有相關(guān)提示桶雀,所以最好設(shè)置一個(gè)復(fù)雜度比較高的密碼矿酵。這里的 email 應(yīng)該輸入 Bob 工作郵箱,代表了 Bob 的身份矗积。后文 Alice 在生成加密文件的時(shí)候回用到這個(gè)郵箱全肮。
2. Bob 導(dǎo)出公鑰并發(fā)送給 Alice
點(diǎn)擊Export
,最下面有個(gè)復(fù)選框 Include secret key in exported file
棘捣,注意不要勾選辜腺。因?yàn)?Bob 只需要將公鑰發(fā)送給 Alice 即可。私鑰應(yīng)該妥善保存乍恐,不要與他人分享哪自。
Bob 就這樣,通過(guò)郵件附件的形式禁熏,將這個(gè)公鑰發(fā)送給 Alice 了壤巷。
3. Alice 導(dǎo)入公鑰并開(kāi)始加密
Alice 的電腦上也安裝了 GPG Suite,所以在接收到 Bob 的公鑰后瞧毙,直接點(diǎn)擊Import
胧华,選擇公鑰文件,即導(dǎo)入了 Bob 的公鑰宙彪【囟可以從 Type
的值看出這個(gè)密鑰是公鑰還是私鑰,以及密鑰的所有者释漆。
Bob 的公鑰導(dǎo)入成功后悲没,Alice 把所有的密碼寫(xiě)到了 secretfile.txt 中。然后開(kāi)始打開(kāi) terminal 加密:
gpg --output encrypted.gpg --encrypt --recipient bob@gmail.com secretfile.txt
--output
: 指定輸出文件的路徑男图,這里是 encrypted.gpg示姿;
--recipient
: 指定收件人,通過(guò)收件人直接到 GPG Keychain 中找到 Bob 的公鑰逊笆;
加密完成后栈戳,在當(dāng)前目錄可以看到加密后的文件encrypted.gpg
。于是 Alice 將這個(gè)加密后的文件發(fā)送給了 Bob难裆。
4. Bob 接收到加密文件并開(kāi)始解密
直接在命令行中輸入:
gpg --output secretfile.txt --decrypt encrypted.gpg
輸入完成后子檀,按照提示輸入該鍵值對(duì)的密碼镊掖,完成后可以看到 secretfile.txt 中的文本內(nèi)容。
使用 FlowCrypt 加密你的 Gmail
上面的過(guò)程描述了 Bob 和 Alice 如何傳輸了一個(gè)密鑰文件褂痰。但是隨著 Bob 和 Alice 越來(lái)越多的信息往來(lái)亩进,他們希望自己 Gmail 的所有郵件信息都可以默認(rèn)進(jìn)行加密,手工的來(lái)進(jìn)行加密雖然是可行的缩歪,但是還是稍顯麻煩镐侯。
于是,FlowCrypt 這 Chrome 插件被 Bob 和 Alice 發(fā)現(xiàn)了驶冒。按照提示進(jìn)行設(shè)置之后苟翻,Bob 和 Alice 對(duì)自己的 Gmail 郵箱進(jìn)行了集成。最后骗污,他們之間開(kāi)始直接使用郵件進(jìn)行方便而安全的密鑰傳輸崇猫。