Wind_Mask的博客

;

关于Secret的沉思(2):本地

10 min read


题论

让我们先从简单的场景出发,也就是先考虑我们的本地活动。这是一类 不被重视的活动(至少对于个人而言),因为个人很少在本地面对攻击,除非处境危险(这种情况我们需要更加一致的体系设计,本地自然也有)。

备份

个人更多在现在关心的应该是备份和可用性——本地数据的失效是常见的。在这方面,网盘备份同步的服务是应用的。常用的服务我使用的倒较少,因为onedrive同步的目录我不怎么用;Google云盘受限于GFW,因此不得不转向国内的应用。 我不怎么使用文件同步服务(但是现在各软件都有自己的云同步,代码有git仓库),对于文件的备份,国内服务其实是可用的。但这里我们谈论的当然不是大文件备份,因为那也不太会是Secret(当然,如果我们真的有冷大文件还是Secret的,那可真是个问题,或许物理备份(为了Secret起见甚至要有独立存储——指放硬盘的保险箱?当然还有全盘加密。)。(当然,有付费的云端加密备份服务,但是对于一般需求不如白嫖,对于极端安全需求——付费甚至是一个攻击面)。 小的文件备份,用来干什么了呢?答案并不多,我个人用于电子书,小的程序工具(这些东西找起来不易),还有,最Secret的,密钥备份。 是的,密钥备份。无论是自动填充用的密码库,还是pgp密钥,ssh密钥。但是,要谨记,秘密文件云端绝不可有一点明文!保证已加密上传,本地处理,同步处理。这就涉及了一种动态的文件加密:

加密

这确实是个问题。 如果你不是在做备份,也不是在为长期存储而离线存档,也不是为了安全地将文件发送给别人而加密,也不是为了完成工作而挂载/卸载的虚拟驱动器。

这种加密并不是长期备份——可能会被频繁访问,不是离线的,不是为了发送(从而或多或少依赖于公钥密码学),不是虚拟驱动器而是文件(尽管我觉得VeraCrypt在这是可用的)。

那么这确实是个问题,尤其是,比如对于pgp的主密钥,不会有明文的备份。从而对可访问性提出要求——尽管实际上我们用U盘(而且还加密了)来解决,但多途径仍然要考虑——如果U盘丢失,也要保证安全性和易访问密钥呢?

首先,密钥一般自身就有加密,以至于可以直接放出——但是没有人会这么做。将它签名(防止对密钥的意外修改)并整合,最简便的方法无疑是加密压缩包。完整性可有签名保证(而加密工具本身就面临拷问:怎么保证软件本身不是一个修改了的恶意版本?——这在后面还会导致我的一些考虑,考虑表明这一问题在苛刻条件下的确无解)。

一个推荐工具是age,至少有人认为它实现了目的。但是先生们,这只是把一个密钥问题变成了两个。总的来说,问题是——本地加密到底在防御什么?

这确实是个谜。如果离线环境的确处于危险,那么就必须具体情况的分析考虑物理来源的威胁。如果只是对于一种潜在的物理威胁,那么本地防御的强度根本不在加密(因为这是物理的)——那是给云端准备的。

弱点在于本地设备本身。

这里才引出本地的问题关键:

设备安全

开源硬件?除非有一条完整流程都可以完全掌控,否则也并无多用。当然,大可不必假设这么极端。只要稍微不那么极端,正常设备已经(但是不包括没有充分考虑过的手机)够了。

操作系统

linux发行版(比如debian),或者极端点的发行版比如Qubes(我得说,我没用过) 已经太足够了。对于频繁移动的情景,Tails是选择之一,但是移动情景的设备安全依赖于偶然匿名(毕竟你不能保证到处设备都安全),对于被追踪恐怕并无大用。也就是说,自己的设备终究是必要的,但是为了便携如果想用手机,那可需要认真考虑风险。

Windows很受怀疑,但其实不极端的说也无所谓,更何况一般不止于此——诚然,这是一种侥幸,但是控制好连接可能比系统的漏洞要重要得多,Mac也是如此。

这正是日常化的安全所在了。完全使用虚拟机以及上面那种系统当然是好的,但是太不日常了(当然日常似乎又不需要一点保护似的,问题是这之间的地带呢?)。在不影响日常下,我们当然尽可能采取更激进的措施。这里的尺度当然是我个人的,但是具体设计可以解耦并且在正确组装下提供相当的安全(当然对于产品的评估是争议的但凡可替换的大可自己代换之)

使用Win的话,适当的保持安全更新和检查就要考虑了。细枝末节的安全细节我在此不多谈(那些到处都能看到的建议无需我来重复)。一个看上去关系不大的问题是文件整理——请确保你对你有什么保持认识,让工具代劳管理不意味着忘记。

软件

开源+便携式软件是极好的,几乎避免了各种问题。目前对我来说,压缩,代理,文本编辑器,markdown编辑器,播放器,图片查看编辑都使用了便携开源产品。总之,避免不必要的专有软件总归是好的,毕竟现在已经妥协太多了。

专用于安全的软件,我希望它们明白(并且实现)不要把实时数据放进硬盘——但这是不一定的。虚拟机和外置磁盘之类或许有助于此,但是有待考察。

元数据

本地元数据事先考虑是有其重要性的,你当然可以等到连接后再考虑,但是为什么不提前考虑一些呢?其实我会建议你使用纯文本避免元数据灾难,毕竟联机时的元数据问题够麻烦了。但总是有其他格式的嘛……

Office文档危险得令人害怕,元数据当然要予以清除;PDF格式元数据也可能含有问题。这些都要予以考究,当然,你甚至可以利用这些进行伪装……

魔怔

本地问题是无止境的——在极度危险的物理问题下,本地的一切运算设施最好都一次性化,储存移动化。但是对常人来说

个人很少在本地面对攻击。

本地备份主要还是防止损失,但是这方面和云备份自然要结合,两者安全级别亦有不同。


……To be continued……