經驗證。受信任。安全。
經驗證的 AES-GCM 加密、獨立的保險庫儲存,以及鼓勵安全性的開發者體驗。
運作方式。安全地。
以下是當您使用 dotenv-vault 同步您的 .env 檔案時發生的情況。
步驟 1
npx dotenv-vault push
您執行 npx dotenv-vault push。您的請求開始。
步驟 2
加密連線
您的 .env 檔案會被加密並透過 SSL 安全地傳送到 Dotenv 的記憶體伺服器。
步驟 3
Dotenv 伺服器
此加密的 payload 會被解密並短暫保存在記憶體中,以完成後續步驟。之後,記憶體會被清除。請放心,解密版本永遠不會持久化到 Dotenv 系統中。
步驟 4
解析
您的 .env 檔案會逐行在記憶體中進行解析。
注意:不同語言和框架之間的 dotenv 解析器存在細微差異。到目前為止,Dotenv Vault 處理了 100% 的情況,我們將繼續新增測試案例以涵蓋所有邊緣案例。
步驟 5
密鑰提取
每個鍵/值對(和任何註解)都會在記憶體中被提取出來。
步驟 6
密鑰分割
密鑰會被分割成單獨的鍵和值。這是經過設計的。它們會儲存在不同的資料庫中以提高安全性。這樣一來,如果攻擊者以某種方式獲得了其中一個資料庫的存取權,他們也無法理解數據的意義,因為他們只有一半的拼圖。
步驟 7
AES-GCM 加密
KEY 會被加密。VALUE 會被加密。它們會使用不同的主加密金鑰進行加密。這樣一來,如果攻擊者以某種方式獲得了 VALUE 解密金鑰的存取權,他們也會發現數據無用。他們不會知道密鑰屬於 Twilio 還是 AWS。
加密使用 AES-GCM 演算法。它是
- 經過充分研究的
- NIST 推薦的
- IETF 標準
- 由於專用的指令集而速度快
此外,所有主加密金鑰都會按照未公開的排程進行輪換,進一步提高了安全性。
步驟 8
權杖化
加密的 VALUE 會被傳送到 Dotenv Vault 以進行安全儲存。權杖會作為識別碼返回。權杖會在下一步中使用,以將 KEY 對應到 VALUE,以便日後安全讀取操作。
保險庫中包含多種安全措施。它們包括但不限於:
- 與應用程式資料庫分離的資料儲存
- 無法透過網際網路存取,且所有外部連線都會被阻止
- 需要加密的用戶端,而且這些用戶端必須通過應用程式 - 該應用程式本身具有額外的加密層
- 連線到保險庫有更嚴格的 TLS 要求。不能使用 TLS 1.0 進行連線。
- 儲存在保險庫中的密鑰不僅在資料儲存層級進行加密。它們還會像您在先前的步驟中所看到的那樣在每個資料儲存項目中進行加密。
步驟 9
儲存帶有權杖的金鑰部分
最後,加密的 KEY 和權杖(代表加密的 VALUE)會被放置在信封中,並一起儲存在應用程式資料庫中。
步驟 10
成功 201
成功訊息會返回給開發人員。
安全規格
以下是構建 dotenv-vault 的其他規格。
✓ Dotenv Vault 是與應用程式資料庫分離的資料儲存。這樣一來,如果攻擊者獲得了應用程式資料庫的存取權,他們也無法獲得保險庫資料儲存的存取權。 |
✓ Dotenv Vault 資料儲存無法透過網際網路存取,並且所有外部連線都會被阻止。這樣一來,攻擊者就無法遠端存取 Dotenv Vault 資料儲存。 |
✓ 需要加密的用戶端,而且這些用戶端必須通過應用程式 - 該應用程式本身具有自己的加密層。 |
✓ 連線到 Dotenv Vault 資料儲存有更嚴格的 TLS 要求。不能使用 TLS 1.0 進行連線。 |
✓ 儲存在 Dotenv Vault 中的密鑰不僅在資料儲存層級進行加密。它們還會在每個 VALUE 中進行加密。這樣一來,即使攻擊者獲得了資料儲存的存取權,他們也無法理解加密值。 |
✓ VAULT 不會儲存 KEY。它只會儲存 VALUE。KEY 會儲存在應用程式資料庫中,而一個共享指標(在兩個資料儲存中)允許將它們識別為一對。這樣一來,攻擊者必須獲得應用程式資料庫和 Dotenv Vault 資料儲存的存取權,才能理解這些值的意義。 |
✓ 用於加密密鑰值的一個或多個加密金鑰會按照未公開的排程進行輪換。這樣一來,攻擊者可能會獲得舊的加密金鑰的存取權,但無法獲得最新的加密金鑰 - 從而阻止他們解密密鑰值的能力。 |
✓ 加密使用 AES-GCM 加密。它是一種經過充分研究的、NIST 推薦的和 IEFT 標準演算法。 |
如您所見,我們竭盡全力確保您的密鑰安全。畢竟,我們也將我們的密鑰保存在這裡。
安全聲明
來自 Dotenv 創始人兼技術長的訊息。
各位開發人員,
正如您已經知道的,安全性是一個不斷變動的目標 - 一場軍備競賽。但這並不代表它應該很難使用。好的設計可以將複雜的事情變得簡單,而這正是我們在 Dotenv 所追求的。
Dotenv 是一種安全工具。自 2013 年首次開發以來,它一直都是。我們看到開發人員在保護密鑰方面面臨困難,因此我們開創了 .env 安全檔案格式標準。該設計帶來了更好的開發人員安全體驗 - 從而為數百萬開發人員帶來了更安全的密鑰。今天,我們將此提升到下一個合乎邏輯的步驟。
現今 .env 檔案的問題是什麼?世界已經改變了。開發人員管理的密鑰規模比十年前更大。.env 檔案不容易在機器、環境和團隊成員之間共享。因此,開發人員透過 Slack、電子郵件和其他訊息服務共享密鑰。這是不具擴展性且存在安全風險的。對於技術長或資安長而言,這是一個不應該承擔的風險。
因此,今天,我們正在擴展 .env 檔案格式,以支援跨機器、環境和團隊成員進行同步。這是一個令人興奮的發展,我們歡迎您與我們一起踏上這段旅程。
加入我們。
- Mot
創始人兼技術長
