题論#
讓我們先從簡單的場景出發,也就是先考慮我們的本地活動。這是一類不被重視的活動(至少對於個人而言),因為個人很少在本地面對攻擊,除非處境危險(這種情況我們需要更加一致的體系設計,本地自然也有)。
備份#
個人更多在現在關心的應該是備份和可用性 —— 本地數據的失效是常見的。在這方面,網盤備份同步的服務是應用的。常用的服務我使用的倒較少,因為 onedrive 同步的目錄我不怎麼用;Google 雲盤受限於 GFW,因此不得不轉向國內的應用。
我不怎麼使用文件同步服務(但是現在各軟體都有自己的雲同步,代碼有 git 倉庫),對於文件的備份,國內服務其實是可用的。但這裡我們談論的當然不是大文件備份,因為那也不太會是 Secret(當然,如果我們真的有冷大文件還是 Secret 的,那可真是個問題,或許物理備份(為了 Secret 起見甚至要有獨立存儲 —— 指放硬盤的保險箱?當然還有全盤加密。)。(當然,有付費的雲端加密備份服務,但是對於一般需求不如白嫖,對於極端安全需求 —— 付費甚至是一個攻擊面)。
小的文件備份,用來幹什麼了呢?答案並不多,我個人用於電子書,小的程式工具(這些東西找起來不易),還有,最 Secret 的,密鑰備份。
是的,密鑰備份。無論是自動填充用的密碼庫,還是 pgp 密鑰,ssh 密鑰。但是,要謹記,秘密文件雲端絕不可有一點明文!保證已加密上傳,本地處理,同步處理。這就涉及了一種動態的文件加密:
加密#
這確實是個問題。
如果你不是在做備份,也不是在為長期存儲而離線存檔,也不是為了安全地將文件發送給別人而加密,也不是為了完成工作而掛載 / 卸載的虛擬驅動器。
這種加密並不是長期備份 —— 可能會被頻繁訪問,不是離線的,不是為了發送(從而或多或少依賴於公鑰密碼學),不是虛擬驅動器而是文件(盡管我覺得 VeraCrypt 在這是可用的)。
那麼這確實是個問題,尤其是,比如對於 pgp 的主密鑰,不會有明文的備份。從而對可訪問性提出要求 —— 盡管實際上我們用 U 盤(而且還加密了)來解決,但多途徑仍然要考慮 —— 如果 U 盤丟失,也要保證安全性和易訪問密鑰呢?
首先,密鑰一般自身就有加密,以至於可以直接放出 —— 但是沒有人會這麼做。將它簽名(防止對密鑰的意外修改)並整合,最簡便的方法無疑是加密壓縮包。完整性可有簽名保證(而加密工具本身就面臨拷問:怎麼保證軟體本身不是一個修改了的惡意版本?—— 這在後面還會導致我的一些考慮,考慮表明這一問題在苛刻條件下的確無解)。
一個推薦工具是age,至少有人認為它實現了目的。但是先生們,這只是把一個密鑰問題變成了兩個。總的來說,問題是 ——本地加密到底在防禦什麼?
這確實是個謎。如果離線環境的確處於危險,那麼就必須具體情況的分析考慮物理來源的威脅。如果只是對於一種潛在的物理威脅,那麼本地防禦的強度根本不在加密(因為這是物理的)—— 那是給雲端準備的。
弱點在於本地設備本身。
這裡才引出本地的問題關鍵:
設備安全#
開源硬件?除非有一條完整流程都可以完全掌控,否則也並無多用。當然,大可不必假設這麼極端。只要稍微不那麼極端,正常設備已經(但是不包括沒有充分考慮過的手機)夠了。
操作系統#
linux 發行版(比如 debian),或者極端點的發行版比如Qubes(我得說,我沒用過) 已經太足夠了。對於頻繁移動的情景,Tails是選擇之一,但是移動情景的設備安全依賴於偶然匿名(畢竟你不能保證到處設備都安全),對於被追蹤恐怕並無大用。也就是說,自己的設備終究是必要的,但是為了便攜如果想用手機,那可需要認真考慮風險。IPhone 真的總是很好,我也不知道為什麼,也許 Apple 的市值值得這種信任吧。但是安卓其實有很多空間可操作,這是技術問題。
Windows 很受懷疑,但其實不極端的說也無所謂,更何況一般不止於此 —— 誠然,這是一種侥幸,但是控制好連接可能比系統的漏洞要重要得多,Mac 也是如此。
這正是日常化的安全所在了。完全使用虛擬機以及上面那種系統當然是好的,但是太不日常了(當然日常似乎又不需要一點保護似的,問題是這之間的地帶呢?)。在不影響日常下,我們當然盡可能採取更激進的措施。這裡的尺度當然是我個人的,但是具體設計可以解耦並且在正確組裝下提供相當的安全(當然對於產品的評估是爭議的但凡可替換的大可自己代換之)
使用 Win 的話,適當的保持安全更新和檢查就要考慮了。細枝末節的安全細節我在此不多談(那些到處都能看到的建議無需我來重複)。一個看上去關係不大的問題是文件整理 —— 請確保你對你有什麼保持認識,讓工具代勞管理不意味著忘記。
軟體#
開源 + 便攜式軟體是極好的,幾乎避免了各種問題。目前對我來說,壓縮,代理,文本編輯器,markdown 編輯器,播放器,圖片查看編輯都使用了便攜開源產品。總之,避免不必要的專有軟體總歸是好的,畢竟現在已經妥協太多了。
專用於安全的軟體,我希望它們明白(並且實現)不要把實時數據放進硬盤 —— 但這是不一定的。虛擬機和外置磁盤之類或許有助於此,但是有待考察。
元數據#
本地元數據事先考慮是有其重要性的,你當然可以等到連接後再考慮,但是為什麼不提前考慮一些呢?其實我會建議你使用純文本避免元數據災難,畢竟聯機時的元數據問題夠麻煩了。但總是有其他格式的嘛……
Office 文檔危險得令人害怕,元數據當然要予以清除;PDF 格式元數據也可能含有問題。這些都要予以考究,當然,你甚至可以利用這些進行偽裝……
魔怔#
本地問題是無止境的 —— 在極度危險的物理問題下,本地的一切運算設施最好都一次性化,儲存移動化。但是對常人來說
個人很少在本地面對攻擊。
本地備份主要還是防止損失,但是這方面和雲備份自然要結合,兩者安全級別亦有不同。
…… 待續……