可靠、可信、安全。
经过验证的 AES-GCM 加密、独立的保管库存储以及鼓励安全的开发人员体验。
安全的工作原理。
以下是将您的 .env 文件与 dotenv-vault 同步时发生的情况。
步骤 1
npx dotenv-vault push
您运行 npx dotenv-vault push。您的请求已启动。
步骤 2
加密连接
您的 .env 文件已加密并通过 SSL 安全地发送到 Dotenv 的内存服务器。
步骤 3
Dotenv 服务器
此加密有效负载将被解密并短暂地保存在内存中以完成后续步骤。 之后,内存将被刷新。 请放心,解密版本永远不会持久保存到 Dotenv 系统。
步骤 4
解析
您的 .env 文件将在内存中逐行解析。
注意: 不同语言和框架的 dotenv 解析器之间存在细微差异。 到目前为止,Dotenv Vault 能够处理 100% 的这些差异,我们还将继续添加测试用例以涵盖所有边缘情况。
步骤 5
密钥提取
每个键值对(以及任何注释)都在内存中提取。
步骤 6
密钥划分
密钥被划分为单独的密钥和值。 这是有意为之的。 它们将被存储在独立的数据库中以增强安全性。 这样,如果攻击者以某种方式获得了对一个数据库的访问权限,他们将无法理解数据 - 因为他们只掌握了拼图的一半。
步骤 7
AES-GCM 加密
KEY 被加密。 VALUE 被加密。 它们使用不同的主加密密钥加密。 这样,如果攻击者以某种方式获得了 VALUE 解密密钥的访问权限,他们会发现数据毫无用处。 他们将无法知道密钥属于 Twilio 还是 AWS。
加密使用 AES-GCM 算法。 它
- 经过充分研究
- NIST 推荐
- IETF 标准
- 由于专用的指令集而速度快
此外,所有主加密密钥都按照未公开的时间表轮换,进一步提高了安全性。
步骤 8
令牌化
加密的 VALUE 被发送到 Dotenv 保管库以安全存储。 一个令牌将作为标识符返回。 令牌在下一步中用于将 KEY 映射到 VALUE 以便稍后进行安全读取操作。
保管库采用了多项安全措施。 这些措施包括但不限于
- 与应用程序数据库分开的存储库
- 无法通过互联网访问,并阻止所有外部连接
- 要求使用加密客户端,这些客户端必须经过应用程序 - 应用程序本身具有额外的加密层
- 连接到保管库时有更严格的 TLS 要求。 无法使用 TLS 1.0 进行连接。
- 存储在保管库中的密钥不仅在存储库级别加密。 就像您在之前的步骤中看到的那样,它们还在每个存储库条目中加密。
步骤 9
使用令牌存储密钥部分
最后,加密的 KEY 和令牌(代表加密的 VALUE)被放在一个信封中并一起存储在应用程序数据库中。
步骤 10
成功 201
成功消息将返回给开发人员。
安全规范
以下是构建 dotenv-vault 时采用的其他规范。
✓ Dotenv 保管库是与应用程序数据库分开的存储库。 这样,如果攻击者获得了对应用程序数据库的访问权限,他们将无法访问保管库存储库。 |
✓ Dotenv 保管库存储库无法通过互联网访问,并阻止所有外部连接。 这样,攻击者无法远程访问 Dotenv 保管库存储库。 |
✓ 要求使用加密客户端,这些客户端必须经过应用程序 - 应用程序本身具有自己的加密层。 |
✓ 连接到 Dotenv 保管库存储库时有更严格的 TLS 要求。 无法使用 TLS 1.0 进行连接。 |
✓ 存储在 Dotenv 保管库中的密钥不仅在存储库级别加密。 它们还在每个 VALUE 中加密。 这样,即使攻击者获得了对存储库的访问权限,他们也无法理解加密的值。 |
✓ VAULT 不存储 KEY。 它只存储 VALUE。 KEY 存储在应用程序数据库中,一个共享指针(在两个数据库中)使它们能够被识别为一对。 这样,攻击者必须同时获得对应用程序数据库和 Dotenv 保管库存储库的访问权限才能理解这些值。 |
✓ 用于加密密钥值的加密密钥会按照未公开的时间表轮换。 这样,攻击者可能会获得旧的加密密钥的访问权限,但无法获得最新的加密密钥 - 从而阻止他们解密密钥值。 |
✓ 加密使用 AES-GCM 加密。 它是一种经过充分研究、NIST 推荐的 IEFT 标准算法。 |
如您所见,我们竭尽全力确保您的密钥安全。 毕竟,我们也在这里保管我们的密钥。
安全声明
来自 Dotenv 创始人兼首席技术官的信息。
亲爱的开发人员,
如您所知,安全是一个不断变化的目标 - 一场军备竞赛。 但这并不意味着它应该难以使用。 良好的设计可以使复杂的事情变得简单,而这正是我们在 Dotenv 追求的目标。
Dotenv 是一种安全工具。 从 2013 年首次开发以来,它一直如此。 我们看到开发人员难以保护他们的密钥安全,因此我们开创了 .env 安全文件格式标准。 该设计带来了更好的开发人员安全体验 - 这为数百万开发人员带来了更安全的密钥。 今天,我们将此提升到下一个合乎逻辑的步骤。
如今 .env 文件有什么问题? 世界已经改变。 开发人员管理的密钥规模比十年前更大。 .env 文件不容易在机器、环境和团队成员之间共享。 结果,开发人员通过 Slack、电子邮件和其他消息服务共享密钥。 这不可扩展,而且存在安全风险。 对于首席技术官或首席安全官来说,这是一种他们不应该承担的风险。
因此,今天,我们将扩展 .env 文件格式以支持跨机器、环境和团队成员进行同步。 这是一项令人兴奋的开发,我们欢迎您与我们一起踏上这段旅程。
加入我们。
- Mot
创始人兼首席技术官