記得有人這麼說:
我們作為一個普通人,錢沒有國家機器多,武力沒有國家機器強大——但是在密碼學上,可能是第一次個人能夠與這種巨大的機器平起平坐。
互聯網每時每刻都充斥著各種各樣的信息,我們說出的每一句話,點的每一個贊,都相當於是說給了每一個人聽,在這裡,我們的每一句話都可以傳播的很遠,我們的每一個動作,潛在地都會被任何人看到。這是和我們平時生活所不同的。我們的生活是看得見摸得著的,是可以感知和控制的。你說話大聲,聽到的人就多,反之,說的小,那聽到的人就少。你能夠看得到和你說話的人的表情,能夠聽到他們的聲音。可是網絡不同,很多人還把它以現實來對待——說一個著名的梗(互聯網的虛擬性):
你根本不知道在網絡的另一端,和你聊天的其實是一隻狗。
隱私
互聯網上該如何保護自己的隱私?近幾年人們終於開始意識到這個問題,可惜大部分的人還是會講:“我沒有什麼好隱瞞”——這不是掩飾什麼——只是讓你的生活和以前一樣罷了,讓你說的話,和你現實生活中一樣——只讓需要看到的人看到。
可是這麼簡單的一個需求,在互聯網上卻成了最難的命題——這在於互聯網的另一個特性:資源共享。
所以說,在網上,默認來講一切都是公開的,數據都是公開的!任何人只要願意,就可以輕易地瀏覽你在往上做的一切。
——你願意每天都不穿衣服出門嗎?
密碼學
所以說,我們有必要用一些手段來保護自己。你所說的話——不一定是秘密,但我們也不願意讓它被所有人聽到。現實中你的聲音會由於能量的散失最終消散於虛無,即便被人聽到,也會隨著時間而被忘記。互聯網中,這些都是信息,信息會被永久地保存。
你的鍵盤會忠實地記錄你的一切。
你知道最近幾年吵得火熱的雲存儲嗎?你知道高可用是它的重要特性之一嗎?好吧,這是個專業的術語,不過沒關係,很簡單,意思就是高度可用罷了。在以前,我們把文檔存到網上,就是存到了遠端的某一個服務器上。一旦你刪除或者服務器下線,你的文檔就永遠的消失了。
現在,你把文檔傳到網上,則進入了一堆服務器組成的集群裡,甚至,可能是世界各地的服務器集群組合起來的集群——誰也不知道你的文檔物理上存在了哪塊硬盤裡——或者說,其實哪塊硬盤裡都有你的這個文檔的副本——因為不論哪個服務器壞掉了或者下線了,你的文檔終究還是可以被訪問得到——即使你刪除了——你怎麼就那麼確信真的刪除了呢?其實只是把你對自己文檔的訪問權限給關閉了罷了。
所以說,我們有必要運用密碼學手段,退而求其次,讓不可銷毀的文檔在今後都只能被指定的人來閱讀。
對稱加密
我們說加密,那加密到底是怎麼個回事呢?直接來說的話,就是用一把“鎖”,把你的文檔鎖起來,然後把鑰匙發給你允許打開的人。
當然,我們使用一些特殊的數學公式來計算那些零和一,得到的結果就是鑰匙,在這裡,我們的專業叫法是——密鑰。
關於這個是叫它“月”還是“要”,看你心情吧,反正是個多音字:)
說起加密,我就不得不提 愛麗絲 和 短發 這一對兒,哈哈——他倆是誰呢?恩,就像是英語課裡的李明和韓梅梅吧~
你看,我們的Bob 給 Alice 發了一封郵件說“你好愛麗絲!”,可他又不想讓全世界的人都知道這個事兒對吧?我已他就把郵件的內容加密,所以其他人看到的就是亂碼了。然後 Alice 收到了郵件,用和 Bob 約定好的鑰匙進行解密,然後她就得到了“你好愛麗絲!”的內容——整個過程裡,只有 Alice 和 Bob 能知道郵件裡的真正內容,而其他人,比如郵件的轉發者,以及偷取到郵件的人,就看不到了。
你知道嗎?你每天都在發送的郵件,其實是根本沒有一絲加密手段的,任何人都可以輕鬆拿到你的郵件內容副本。你更不可能刪除郵件,你以為它們都被刪除了,其實服務器管理員可以輕易查找你的賬號下所有郵件!他們只是被標記為“刪除”並且不再給你顯示而已!
可是這裡有個問題,那如果有人獲取了我的密鑰就也可以解開我的郵件了嗎?嗯, Bob 肯定也想到了這個事情,如果兩人線下見面還好說,直接拷貝密鑰就好了——可是如果是距離比較遠,就要從網上來傳密鑰,這樣就不安全了不是嗎?於是,就有了另外一種加密的辦法:
公鑰(非對稱)加密
在 Bob 升級了算法之後,我們的數學公式有兩個解了——一個只能計算加密的內容出來,而另一個只能對加密的內容解密。這樣,我們只需把只能加密的密鑰分發出去就好啦,別人就算得到了公鑰,他也只能加密而無法解密!
你看,Bob 通知 Alice 說他要給 Alice 發郵件啦,所有壞人都瞇起了眼。然後 Alice 發給了 Bob 一個公鑰,所有的壞人也得到了它。Bob 用公鑰加密郵件發給了 Alice ,這個過程中無數人得到了這封郵件的副本,他們有得到的密鑰去解密郵件——失敗了。
Alice 用自己保留的私鑰對郵件解密,哈哈,內容只有她自己知道。
注意,我們對信息的偷盜與現實生活中的偷盜也是不同的。你有一百塊錢,我偷走了它,你的錢就沒有了;而對於信息,尤其是電子信息,我偷到了,你的信息還在——你甚至根本不知道它被偷了!這也是社會工程學的目的,這裡我們先講技術手段。
那麼,這種技術到底叫什麼呢?
PGP(良好隱私)
這個加密一開始是開源的後來因為它太牛逼所以導致了一系列的事情,所以它在後來把整個軟件開源並且在1996年成立了公司。現在,我們普遍用 PGP 來稱呼這家公司而不是加密了。
但是,由於這個加密實在是太重要了,它早已風靡世界,所以人們開始考慮開發一個能和它兼容並且免費的解決方案。
但這樣太混亂了,最終,PGP 向 IETF 提交了PGP 5 的標準,然後 IETF 的人一琢磨,覺得不錯,就搞了個 的OpenPGP 這個標准出來。這樣,大家就都可以開發軟件來完美兼容 PGP 啦。
的GnuPG(GNU隱私衛士)
所以,自由軟件基金會就開發了這個 GPG 出來,它完全基於 OpenPGP 標準,與 PGP 通用而且它免費!
這裡我們就說說,如何在 Mac 上
保護你的隱私
GPGTools
說起來,如果直接使用 GnuPG的 其實也可以,不過它沒有圖形界面,使用命令行我覺得對於已然高手的你來說也一定不是什麼難事——可是,這樣畢竟麻煩——畢竟,與 GUI 有關的東西,我們還是用 GUI 工具來解決才更合適。
所以,我們這裡用一個專門為 OS X 封裝的管理工具 GPGTools,它可以幫助你以圖形的方式使用 GnuPG,還能幫你搞定升級等問題,一鍵安裝喲~
好了,我們現在了來下載它:https://gpgtools.org
這是一個 OSX 適用的加密套件,裡邊包含了:
- 蘋果自帶郵件 app 的 GPG 插件——我推薦你使用ThunderBird郵件客戶端而不是自帶的,這個更好使,對 GPG 的支持也更好一些;
- 一個圖形端的 GPG 管理工具;
- 給你的電腦安裝 GPG 服務,這樣你就可以在幾乎任何軟件裡使用它;
- 當然還有 GnuPG 命令行,所以你也可以直接使用它。
配置
我們打開 GPG鑰匙扣 這個應用,然後打開它,這個就是我們的管理圖形端。
點擊左上角的新建來新建一個密鑰:
這裡它會自動從你的郵件裡讀取添加的郵箱,如果沒有,那麼你需要自己寫進去。第一行當然就是你的名字了。然後是密碼,這個密碼是用來保護你的私鑰的!當你需要解密文檔的時候,就要用到私鑰對吧?用私鑰的時候就會提示你先給私鑰解密!
然後是那個“上傳公鑰“,它是什麼意思呢?其實就是說它會自動把你的公鑰上傳到公鑰服務器——畢竟,密鑰這個東西已經有 4096 位長度,你直接公開可能還挺麻煩,這樣就可以通過郵件地址直接搜索到了!現在你就可以試試在裡邊搜索我的郵箱:)
對於高級設置,無所謂,因為默認就是最強的了。不過你的密鑰有個保質期,過期了就作廢了,避免它會被一直用下去~默認來說是五年。
然後就生成吧,生成的過程可能有點長啊,它需要計算大量的隨機數字,這時候你就動動鼠標瀏覽下網頁,這樣是可以幫助它計算的快一些的(理論上,並且更加隨機)。
一旦完成,你的密鑰就 Ready to use 了!
進階配置
編輯 〜/.GnuPG的/GPG.CONF ,在文件末尾(如果沒有就創建文件)把已經存在的行註釋掉,然後添加下邊的內容:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
auto-key-locate keyserver keyserver hkps://hkps.pool.sks-keyservers.net keyserver-options no-honor-keyserver-url keyserver-options ca-cert-file=/etc/sks-keyservers.netCA.pem keyserver-options no-honor-keyserver-url keyserver-options debug keyserver-options verbose personal-cipher-preferences AES256 AES192 AES CAST5 personal-digest-preferences SHA512 SHA384 SHA256 SHA224 default-preference-list SHA512 SHA384 SHA256 SHA224 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed cert-digest-algo SHA512 s2k-digest-algo SHA512 charset utf-8 fixed-list-mode no-comments no-emit-version keyid-format 0xlong list-options show-uid-validity verify-options show-uid-validity with-fingerprint |
最後,使用如下命令來給 Keyserver 添加證書好讓它使用 Https 請求證書:
1 2 |
$ curl -O https://sks-keyservers.net/sks-keyservers.netCA.pem $ sudo mv sks-keyservers.netCA.pem /etc |
使用
首先去 系統偏好設置 →。 鍵盤→。 快捷鍵 →。 服務 裡把關於 OpenPGP 的所有選項都勾選。
然後,你就可以試試看,到這個頁面,選中所有的亂碼內容,包括 - 開始 PGP 上市 鍵 塊 - 和 - 結束 PGP 上市 鍵 塊 - 這上下的兩行註釋哦!然後點擊右鍵,選擇最下方的 服務 然後在彈出的二級菜單中選擇 的OpenPGP: 進口 鍵 從 選擇
如果一切順利,你應該看到類似如下的對話框:
或者,你也可以到 GPG 鑰匙串裡直接搜索我的郵箱地址 lomyr.已經@Gmail的.同 ,如果你看到多個結果,就盡量導入那個最新的即可。
這下,你就可以給我發加密內容啦!怎麼加密呢?
在任意位置寫下你想說的話,然後選擇它們,點右鍵選擇在新窗口加密即可!
在彈出的窗口裡選擇你要用哪個公鑰加密——一般來說,你要讓誰看,就加密給誰啦!自己測試就選自己,然後一個可複制的窗口就出來了,你只需要復制裡邊的加密內容然後發送即可! (比如說 QQ~比如說郵件~)
同樣的,選中你看到的加密信息,然後選擇解密,就能夠解密啦~前提是你得確定這是發給你的——即用了你的公鑰加密的內容~否則可解不開啦!
另外,如果你是在 的TextWrangler 這類編輯器裡加密解密的話,你可能找不到右鍵裡的服務了——沒關係,在菜單欄的 TextWrangler 這個菜單裡,有 服務 這個菜單,裡邊就是啦!
最後,我們再來說說郵件,畢竟,這個是最常用的東西。對於郵件,這裡我拿 雷鳥 做為例子,我們點擊菜單“ 工具(ŧ)–>附加組件(一個) “,從“獲取附加組件”中搜索 Enigmail中,選擇“ 添加至 雷鳥(一個)... “,來安裝 ThunderBird 下的Enigmail 插件,它提供了 OpenPGP 的支持。其實 ThunderBird 自帶的安全裡邊也有 PGP 的支持,只不過用起來不方便罷了。我們使用這個插件,更舒心。
然後在安裝嚮導裡邊直接設置即可。如果你有多個郵箱並且生成了多個密鑰,那麼你需要進入郵箱的設置裡的 的OpenPGP安全 中選中“使用這個標識的電子郵件地址標示 OpenPGP 密鑰“。
現在,你就可以在編寫新郵件的時候嘗試使用加密啦!如果必要,你也可以勾選“附送我的公鑰“;另外,如果你的收件人沒有公鑰而你又強制加密,插件就會提示你並幫你自動從公鑰服務器上下載一個……當然,如果還是沒找到……那就只好取消強制加密才能發出去啦!
如果你收到了一封加密的郵件,只需要在頁面內點擊解密,然後輸入你私鑰的密碼即可~
是不是很方便?
試一試
最後,你配置好了服務,學會了加密,並且還添加了我的公鑰——現在你可以嘗試來給我發送一封加密郵件啦!我是絕對會回复你的喲~
還有,記得用我的公鑰加密,可別弄錯了我就解不開啦,還有,記得附送你的公鑰以便我回复你:)
lomyr.jo@gmail.com 落格博客。
參考文獻
本文由 落格博客 原創撰寫:落格博客 » 加密解密——讓你的信息更安全
轉載請保留出處和原文鏈接:https://www.logcg.com/archives/1471.html
註釋