每家使用加密技术保护敏感数据的公司都必须遵循加密密钥管理最佳实践。这些做法可确保加密密钥在整个生命周期中的安全,并确保网络安全措施不会因缺乏适当的密钥管理而落空。
本文介绍了 16 个加密密钥管理最佳实践 ,使您能够保持对加密策略的控制。实施以下措施有助于防止数据泄露、避免罚款并确保加密保持安全有效。
我们对密钥管理的介绍深入探讨了公司如何使用加密和密码学来保证敏感数据的安全。
使用适当的算法和密钥大小
为每个加密密钥选择正确的算法和密钥大小。此决定取决于用例,并且必须考虑:
- 安全风险。
- 钥匙的使用寿命。
- 加密数据的数量和价值。
- 性能要求。
根据用例,可以使用:
- 对称算法 (例如 AES)。
- 非对称算法 (例如 RSA 或 ECDSA)。
对称算法是保护静态数据的不错选择,因此使用这种方法来保证 数据库 安全。非对称加密非常适合保护动态数据,例如电子邮件或网页内容。选择正确的密钥大小需要平衡。
密钥越大,加密越安全,但密钥长度会影响性能。请明智地选择密钥大小,因为大密钥通常会导致问题。例如,对所有进程使用 AES-256 对称加密将使系统安全,但您会遇到性能问题。
详细了解如何利用云安全的新兴趋势( 机密计算)保护静态数据、使用中的数据和传输中的数据。
依靠最小特权原则
员工只能访问履行其职责和任务所需的密钥。同样的“需要知道”的基础也适用于应用程序。确保只有授权用户和系统才能访问密钥有助于:
- 使用受损密钥限制攻击者的选择。
- 减少攻击面。
- 如果发生违规,则缩小嫌疑人范围。
- 限制内部威胁的风险 。
- 防止系统之间的横向移动。
每次访问、管理或使用加密密钥时,对用户进行正确的身份验证。使用 基于角色的访问控制 (RBAC) 根据每个用户的特定职责来限制权限。
考虑对负责重要操作(例如旋转或删除)的按键使用 双控制原理(又称四眼)。这种做法需要两个或更多授权人员批准该流程才能开始。
我们关于 零信任安全的文章 解释了最小特权原则如何成为安全策略的支柱。
定期密钥轮换
组织中的每个密钥都应该有一个加密期 ,在此期间密钥可以发挥作用。可以通过考虑两个因素来计算加密周期:
- 发起者使用期 (OUP): 对系统应用加密保护的时间。
- 接收者使用期 (RUP): 用户可以使用特定密钥解密数据的时间。
这两个周期同时开始并且很灵活,因此根据以下条件定义加密周期:
- 加密算法的强度。
- 加密数据的价值。
- 密钥长度。
- 安全风险。
- 法律规定。
加密期限到期后,进行轮换以用新密钥替换旧密钥。限制使用一把密钥加密的数据量可以降低凭据丢失或被盗的风险。理想情况下,轮换过程应该是自动的,以防止人为错误并将团队从重复性任务中解放出来。
集中加密密钥管理
一家公司可以依赖数百甚至数千个加密密钥。集中管理平台有助于组织、保护、管理和使用所有这些密钥。集中式平台可以带来:
- 简化管理,无需使用一组不同的工具。
- 简化且安全的生成、存储和分配流程。
- 全面了解员工和团队如何使用密钥。
集中密钥管理可降低风险、提高效率并简化管理任务。您可以使用此策略来:
- 为所有关键相关操作(访问控制、职责分离、知识分割等)创建策略和程序。
- 实施各种自动化选项并消除手动任务。
- 确保全面的审核日志并跟踪活动。
- 使用用户配置文件、角色和凭据控制对有价值密钥的访问。
- 确保关键管理能够与您的公司一起扩展。
- 通过自动化任务和减少必要的员工数量来降低成本。
我们的加密管理平台允许您集中所有与密钥相关的任务,并从单一管理平台管理您的加密策略。
切勿对密钥进行硬编码
在源代码中包含关键材料是一个重大的安全问题。如果代码是公开的,攻击者就可以直接读取密钥。即使代码是私有的,开发团队也会成为黑客的首选目标,并且您的攻击面会不必要地增加。
由于攻击者可以在不损害管理应用程序的情况下获取密钥,因此您可能会遭受完全未被检测到的破坏。除了引入不必要的风险之外,对密钥进行硬编码还会带来翻转和整体加密敏捷性的问题。
充分利用自动化
依赖手动密钥管理既耗时又昂贵,而且容易出错。自动化使您能够:
- 消除重复性任务。
- 加快所有与按键相关的操作。
- 限制人为错误的空间。
- 减少所需工作人员的数量。
- 理清团队的日程安排,让员工专注于创新和改进。
- 更可靠地实施安全策略和记录活动。
- 实现 密钥的高可用性级别。
密钥管理的自动化改进了密钥整个生命周期的流程,因此请考虑自动化以下操作:
- 生成新的密钥对。
- 按设定的时间间隔轮换密钥,以避免超过加密期限。
- 备份密钥。
- 撤销对密钥的访问。
- 销毁过期或受损的密钥。
您使用的密钥越多,自动化就变得更有价值。随着公司规模的扩大和密钥数量的增加,依赖手动任务将成为更大的安全风险。
图片
制定并执行全公司范围的政策
安全策略规定了员工和团队应如何存储、使用和管理密钥。这些政策规定:
- 整个密钥生命周期的说明和规则。
- 确保操作安全和合规性的要求。
- 关于用户可以使用密钥执行哪些操作和不能执行哪些操作的指南。
- 管理加密密钥材料的职责。
准备好政策后,请举办培训课程,以确保员工了解您对团队的期望。集中式平台是执行、更新和传达政策的最可靠方法。
此外,如果您的加密依赖于云,请确保您的密钥管理和 云安全策略 相互协调一致。
将密钥存储在 HSM 上
HSM (硬件安全模块) 是一种物理设备,用于存储密钥并使您能够在本地执行加密操作。这些设备提供强大的物理和逻辑安全性,因为从 HSM 窃取密钥需要攻击者:
- 闯入你的设施。
- 窃取访问 HSM 所需的访问卡。
- 在不引起注意的情况下将设备带出场所。
- 绕过保护密钥的加密算法。
依赖云中的 HSM 也是一种可行的方法。在这种情况下,成功取决于 云服务提供商的 安全级别,因此如果您选择该选项,请始终选择信誉良好的供应商。
了解数据中心安全 以及您需要实施的措施来确保您的设施免受入侵者的侵害。
单独的员工职责
对于任何具有安全意识的组织来说,分离密钥管理任务是一项基本实践。该策略要求您在不同员工之间划分关键任务的职责。通过这样做,您:
- 限制冒充员工的入侵者的选择。
- 最大限度地减少欺诈和内部威胁的可能性。
例如,您可以指派一个人负责授权访问,另一个人负责分发密钥,第三个人负责创建密钥。在这种情况下,允许访问的用户无法在分发期间窃取密钥或在生成阶段知道密钥的值。
安全的线上线下分发
公司应该使用专门构建的安全 API 将密钥从创建点安全地分发到将使用它们的系统或人员。考虑以下:
- 对于在线分发,您应该加密密钥并通过安全的传输层安全性 (TLS)发送它们
- 对于离线传输,加密密钥并将其分成 2 或 3 个单独无用的组件。
密钥分割在加密密钥管理最佳实践中排名靠前。通过这种策略,丢失的组件不会导致密钥被盗,除非攻击者可以收集其他部分。
当密钥到达目的地时,请考虑使用 白盒加密技术。白盒加密使用基于软件的算法来保护密钥,无论密钥位于何处或是否有硬件支持。
可靠的密钥备份和恢复
如果您的存储遇到错误或有人对其进行攻击,您必须具有恢复密钥的能力。无法恢复密钥可能会导致加密数据永久丢失。确保您拥有强大的备份,使您能够快速可靠地恢复丢失的密钥。良好做法包括:
- 使用对称加密保护备份。
- 使用 不可变备份 来防止数据篡改。
- 每天多次备份密钥。
- 定期检查备份应用程序以确保一切正常。
可靠的审计追踪
安全、自动化和集中的日志记录和报告对于安全且合规的密钥管理至关重要。良好做法包括:
- 在每个密钥的整个生命周期中保留其完整的历史记录。
- 记录与密钥的每次交互的详细信息,包括目的、用户(个人或系统)、访问的数据、查询和使用时间。
- 跟踪 授予的权限和访问级别。
- 记录成功和尝试的登录。
干净、详细的日志记录和报告有助于:
- 准备合规审计。
- 事后取证。
- 了解密钥管理的机制。
- 寻找系统改进的机会。
考虑将密钥管理平台与SIEM工具集成 ,以实现更深入的分析和报告。
切勿将同一密钥用于不同目的
每个密钥应该只有一个用途,例如:
- 数据加密或解密。
- 用户认证。
- 数字签名。
- 密钥包装。
确保员工不会在不同的任务中使用重复的钥匙。坚持使用单一用途的密钥是最安全的策略。
让密钥远离加密数据
切勿将密钥与加密数据保存在同一个数据库中。虽然这种做法简化了管理,但将加密内容与解密密钥一起保存使黑客能够通过一次违规来破坏数据。
准备稳健的灾难恢复计划
不管你制定多少政策和措施,最终都会出问题。即使实施了所有加密密钥管理最佳实践,仍然可能发生以下事件:
- 用户将丢失其密钥的凭据。
- 有人会不小心将钥匙发送给错误的人。
- 心怀不满的前雇员可能会删除密钥。
- 黑客可能会闯入密钥存储。
- 加密算法可能存在缺陷。
- 开发人员可能会意外地在公共存储库上发布私钥。
事故时有发生,因此做好准备有助于降低风险。确定所有可能性并创建强大的 灾难恢复计划 ,以确保团队为所有场景做好准备。了解 云灾难恢复 以及将关键数据备份到云中的好处。
分布式加密和解密过程
公司可以运行加密和解密过程:
- 本地在文件、数据库字段或应用程序级别。
- 在单一用途的加密服务器上。
从安全角度来看,分散加扰和解扰过程是更好的选择。如果您设置安全密钥分发,则分离加密和解密会导致:
- 更好的性能。
- 较低的带宽。
- 由于故障点更少,可用性更高。
- 更好的数据传输。
在中央服务器上运行加密和解密设置起来更简单,但可能会遇到性能问题。此外,如果攻击者破坏了中央服务器,整个安全基础设施可能会崩溃。
加密密钥管理最佳实践保持加密安全和健康
实施上面列出的做法将确保密钥管理不会成为安全策略中的弱点。使用强大的策略、强大的访问控制和集中化来保护和控制您的加密密钥。