可靠、可信、安全。

经过验证的 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% 的这些差异,我们还将继续添加测试用例以涵盖所有边缘情况。

KEY=VALUE

步骤 5

密钥提取

每个键值对(以及任何注释)都在内存中提取。

KEY=VALUE KEY VALUE

步骤 6

密钥划分

密钥被划分为单独的密钥和值。 这是有意为之的。 它们将被存储在独立的数据库中以增强安全性。 这样,如果攻击者以某种方式获得了对一个数据库的访问权限,他们将无法理解数据 - 因为他们只掌握了拼图的一半。

KEY key_b46…
VALUE val_a8e…

步骤 7

AES-GCM 加密

KEY 被加密。 VALUE 被加密。 它们使用不同的主加密密钥加密。 这样,如果攻击者以某种方式获得了 VALUE 解密密钥的访问权限,他们会发现数据毫无用处。 他们将无法知道密钥属于 Twilio 还是 AWS。

加密使用 AES-GCM 算法。 它

  • 经过充分研究
  • NIST 推荐
  • IETF 标准
  • 由于专用的指令集而速度快

此外,所有主加密密钥都按照未公开的时间表轮换,进一步提高了安全性。

val_a8e… Dotenv 保管库存储 token_fd4b…

步骤 8

令牌化

加密的 VALUE 被发送到 Dotenv 保管库以安全存储。 一个令牌将作为标识符返回。 令牌在下一步中用于将 KEY 映射到 VALUE 以便稍后进行安全读取操作。

保管库采用了多项安全措施。 这些措施包括但不限于

  • 与应用程序数据库分开的存储库
  • 无法通过互联网访问,并阻止所有外部连接
  • 要求使用加密客户端,这些客户端必须经过应用程序 - 应用程序本身具有额外的加密层
  • 连接到保管库时有更严格的 TLS 要求。 无法使用 TLS 1.0 进行连接。
  • 存储在保管库中的密钥不仅在存储库级别加密。 就像您在之前的步骤中看到的那样,它们还在每个存储库条目中加密。
key_b46… token_fd4b… Dotenv 应用程序数据库

步骤 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

创始人兼首席技术官

立即保护您的 .env 文件

创建 Dotenv 帐户