传输信息是互联网能力的核心要素。然而,只有确保信息传输的安全性,才能消除对重要信息泄漏的担忧,进而促进信息上网,发挥数据价值。
1、信息安全与密钥安全
保证信息安全的重要手段是数据加密。数据加密是一种标准化的数据变换方法,能将明文数据转化为不可读的密文数据。为了确保转化过程可逆,在进行数据转化前,操作人需要提供私有的凭证(即 Key)。可以用凭证进行加密,也可以用正确的凭证进行解密。
除了对数据加密,在不同的应用场景下,还有许多具体的特殊安全手段。这些场景化的手段更清晰地指导了信息安全的保护方法。
| Category | Methods |
|---|---|
| Privacy-Preserving | Homomorphic Encryption(直接基于加密数据计算)Zero-Knowledge Proof(不告诉年龄,证明不是未成年)Searchable Encryption(不可信云存储) |
| Access Control | Identity-Based Encryption(用邮箱做密钥)Attribute-Based Encryption(用个性来做密钥) |
| Data Security | Format-Preserving Encryption(加密后还保留原来的 UUID 格式)Threshold Encryption(拆分密钥分开加密) |
| Advanced Techniques | Quantum Encryption |
这些手段的核心依旧离不开密钥管理。要确保信息安全,就得保证加密过程中涉及的密钥(Key)安全。
2、Key Lifecycle(三个“-ge”)
根据加密方法的不同,密钥可分为以下两类:
- Single Key:加解密使用同一密钥。
- Pair Key:加密用公钥,解密用私钥(私钥需保证安全)。
密钥有三大关键的生命周期:Exchange(交换/生成)、Storage(存储)、Usage(使用)。只有在每一个阶段都确保密钥的安全,才能保证最终信息的安全。
2.1、Exchange
交换是密钥流出的关键,涉及密钥的生成以及如何将生成的密钥安全地传输至加解密双方。对称密钥安全传输的前提是建立安全信道,因为在不安全信道中传输的密钥可能被中间人拦截,进而解密后续信息。而非对称密钥可直接公开加密公钥,数据发送方使用公钥加密,接收方用保存的私钥解密。但非对称加密速度慢且能加密的数据量小,一般只用于对凭证进行加密,常用于证书核验,也可用于加密会话。例如,OpenPGP 是一种典型的保密数据传输方法:先使用非对称加密交换对称会话加密密钥,再使用对称加密进行数据通信。然而,这种两步法在安全方面仍有不足,特别是不能解决 Forward Secrecy 问题,即私钥一旦被泄漏,会导致历史会话都能被解码。
这是因为使用私钥加密传输的对称密钥通常用作后续会话的加密凭证。拥有私钥就能解码出会话的主要加密凭证,进而解析出加密前的原始数据。D-H Exchange 是一种更好的对称会话密钥生成与交换方法。
D-H Exchange 在每轮会话前会选择不同的随机参数。它通过类似零知识证明的形式,借助公开参数隐晦地达成共识(即会话密钥)。在此过程中,不会涉及跨越多个会话的固定私钥(乃至固定参数),进而避免了前向安全问题。
2.2、Storage
密钥的安全与密钥存储的安全紧密相关。一种常见做法是将密钥集中交由安全的托管平台(软件)统一管理,而非由用户自行保存。用户在使用时,向托管平台提交正确的身份凭证,平台则根据请求的资源正确取用密钥。
对于个人用户,常见的“托管平台”有 iOS 上的 passwords 和 Microsoft Authenticator。对于开发者而言,则是 Key Management System(KMS)。KMS 具备完善的密钥管理、操作审计和密钥轮换(Rotation)能力,能确保较高的密钥安全基线。
密钥存储安全也有一些更高级的手段,可参考 Optimal Key Storage。
2.3、 Usage(and destruction)
密钥使用是密钥生命周期的最后一环,同时也是最容易泄漏密钥的阶段。为了进一步提升密钥安全,在使用阶段也可采取一些措施。
密钥轮换(Rotation) 是最常见的一种手段。简单来说,密钥轮换要求定期更新密钥,避免长期使用同一个密钥进行数据加密交换。这样,在数据泄漏时,能最大限度减少泄漏的数据总量,提升加密安全。
3、Optimal Key Storage
密钥生命周期的基础在于具备高等级的密钥安全存储能力。若密钥存储在一定时间内无法避免被攻击者拉取数据,那么安全性就完全无法得到满足。
保证密钥存储安全的方式有很多,但整体可分为两大类:一是隐藏密钥本身,防止被外界访问;二是将密钥拆分为多个部分,以增加攻击者获取完整密钥的成本。
3.1、HSM、TPM 和 TEE(密钥隐藏)
安全的密钥操作应隐藏其执行条件。密钥的执行涉及密钥本身及其执行环境。密钥最好既不能被获取,也不能在使用过程中泄漏。
密钥安全可在不同逻辑计算机层级实现,最低为硬件级,最高(最抽象)是软件级。HSM(Hardware Security Module,硬件安全模块)是独立的硬件模块,可独立存储密钥并完成密态操作。由于密钥的提取和密态内容的产出对上层软件不可见,HSM 提供了较高的保密能力。TPM(Trusted Platform Module,可信平台模块)是简化的密态硬件模块,也被称为虚拟 HSMs 或“Poor Man's Hardware Security Modules”。TPM 也能提供硬件级安全能力,但因成本限制,只能提供基础的密态操作。
TEE(Trusted Execution Environment,可信执行环境)是一种高层级操作,能为高层软件执行提供密态能力。TEE 是隔离的程序运行环境,有独立的 CPU 上下文和内存等。普通环境的代码(程序)无法获取 TEE 环境的内存数据,也不能通过 DEBUG 等手段窥探 TEE 执行过程。TEE 依赖底层硬件提供基础的内存和环境隔离能力,同时整体在软件上层执行,为软件开发者提供了最大的密态执行灵活度。
3.2、MPC(密钥拆分,理论上的猜测)
多方计算提供了一种在不暴露输入的情况下的安全计算方法。此方法适用于需要综合多方源数据来计算结果的情况。参与方的源数据会被随机切分为多个部分(share),且每个参与方会被分配其他参与方特定位置的部分数据来进行运算。因为一个参与方无法知道其他参与方的完整源数据,所以累积各个参与方的计算结果便成为整个计算过程的最终结果。
目前尚无较为活跃且统一的多方计算框架可用。像 SPDZ-2 等比较早期的计算框架大多已进入维护期,多数开源项目也处于休眠状态。不过,MPC 行业仍在缓慢且持续地向前发展。MPC alliance 便是在这样的发展背景下建立的,旨在持续推进 MPC 在各种场景下的落地。
对于安全存储密钥,在 MPC 情形下,密钥“被切分为多个部分”(可这样此抽象理解),并交付给各个参与方。每个参与方独立完成部分密钥操作。在 MPC 下,没有参与方拥有完整的“密钥”,这极大地提升了密钥维护的安全性。(这个理解可能不够充分,MPC 在密钥存储上和 Threshold Encryption 有些相似)
4、结束
本文概括性地介绍了一些信息安全方法,主要讨论了密钥在维护信息安全过程中的核心地位,以及相关的管理和维护方法。