一次登入真正需要的一切,都在一處。
記錄不是固定的表單。把密碼放在它的一次性驗證碼、復原備註、用來付款的卡片與透過電子郵件收到的檔案旁邊。它們保存在一起,也一起加密。
- 登入與密碼附帶一個把設定保存在您裝置上的產生器。
- 一次性驗證碼兩步驟登入的驗證碼,在您的裝置上產生。
- 銀行卡卡號、有效期限與安全碼作為普通的加密欄位。
- 備註與文件普通備註,或受保護的備註,在您要求之前保持隱藏。
- 照片與檔案掃描件、PDF 與圖片,在封存前於您的裝置上調整大小。
- Wi-Fi 網路由已儲存的密碼產生的 QR 碼,供您的訪客掃描。
- API 金鑰與權杖在您顯示之前保持隱藏,一步即可複製。
- SSH 金鑰附帶原生代理程式,每次使用前都會徵求您的確認。
- 您自己的欄位您需要的任何其他內容。編輯時不會丟棄任何東西。
- 完整歷史每次變更都被保留。可以開啟一筆記錄的任何早期版本。
搬家只需一次匯入。
Confidex 可從 1Password、Bitwarden、KeePass 與 CSV 匯入,也可匯出回這些格式。用您的真實資料試一試;如果改變主意,可以帶著全部資料離開。
- 1Password
- Bitwarden
- KeePass
- CSV
桌面
面向 Mac、Linux 與 Windows 的真正原生應用程式,用 Rust 編寫,介面由 GPU 加速。沒有 Electron,沒有 Flutter,沒有網頁檢視。
- macOS
- Linux
- Windows
離線優先
每台裝置都保存完整的保險庫。您可以隨時同步,透過我們的伺服器或您自己的伺服器,也可以從不同步:把保險庫留在一台裝置上並備份到檔案。如果兩台裝置的內容不一致,您會看到兩個版本並自行選擇。
兩把鑰匙開啟您的保險庫。除了您,沒有人同時持有兩把。
密碼和秘密金鑰共同開啟存放保險庫私鑰的小鎖. 紀錄個別加密, 每個修訂版都有簽章. 同步伺服器驗證簽章, 無需接收任何一個解鎖秘密, 也無需使用者帳戶.
-
您的密碼
由您記住。它從不儲存在任何地方,也從不傳送。
-
您的秘密金鑰
由您的裝置保存。在新裝置上,您以傳輸碼的形式輸入一次:77 個字母與數字,每 7 個一組。
-
鎖
保存著保險庫金鑰,只有兩者齊備才會開啟。Argon2id 刻意讓每次密碼猜測都很慢:每次嘗試需要 64 MiB 記憶體與三輪運算。
單獨一把鑰匙改變不了什麼。伺服器上所有內容的副本甚至不能用來猜測您的密碼,因為伺服器從不持有秘密金鑰。
您的裝置透過一台無法窺視內容的伺服器保持同步。
每次變更離開您的裝置時都已封存並簽章。伺服器在您的裝置之間傳遞密封盒並檢查簽章,因此其他任何人都無法變更您的保險庫。它打不開任何一個盒子,而且在明文 HTTP 上和在 HTTPS 上一樣安全。
伺服器只負責儲存與轉發。只有來自您自己金鑰的簽章才能讓變更進入。
鎖定後,它就從記憶體中消失了。
保險庫開啟期間,金鑰與您檢視的記錄存在於記憶體中。當您鎖定時,Confidex 在那一刻就把它們丟棄。Rust 以確定性方式釋放記憶體,沒有可能讓秘密多停留一段時間的垃圾收集器。剪貼簿或作業系統製作的副本不在此保證範圍內。
不是垃圾收集器決定您的秘密何時離開記憶體。鎖定決定。
如果我們的伺服器被入侵會怎樣?
切換攻擊者設法得到的東西。
切換攻擊者擁有的東西。答案遵循專案文件中的威脅模型。
- 可以。兩把鑰匙合在一起即可開啟保管庫。這是唯一真正的進入途徑。這也是您在全新裝置上開啟自己保管庫的方式,因此密碼與傳輸代碼絕不能存放在一起。
- 可以。兩把鑰匙合在一起即可開啟保管庫。攻擊者可以透過公開地址擷取封存資料並將其開啟。請務必將密碼與傳輸代碼分開保管。
- 不能,只要您的密碼夠強大。雖然金鑰允許他們擷取鎖並在離線狀態下暴力破解密碼,但每次猜測都需要耗費 64 MiB 記憶體與 3 輪 Argon2id 計算。長密碼穩固可靠,短弱密碼則存在風險。
- 不能。金鑰從未傳送到伺服器。即便獲知了密碼,也無法對照資料庫傾印進行驗證。推導鎖金鑰必須使用僅留在您裝置上的私有金鑰。
- 不能。他們無處使用該密碼。沒有金鑰他們就無法衍生鎖金鑰,而沒有保管庫地址,他們甚至無法擷取封存資料。
- 不能。根本無從猜測與核對。伺服器上不儲存任何密碼、密碼雜湊或金鑰。沒有金鑰,任何密碼猜測都無法在資料庫傾印上進行驗證。
使用我們的同步伺服器,或自己執行同一個伺服器。
伺服器很小,因為它沒有什麼需要保護。它儲存密封盒,為每個保險庫維護一個計數器,並在接受變更之前檢查簽章。可以在任何機器上作為 Docker 映像檔執行,也可以作為免費方案的 Cloudflare Worker 執行,無需自己的伺服器,也無需付費。新保險庫使用 sync.confidex.me;一項設定即可把它們指向您的副本。
- 執行方式
- Docker 映像檔、原生二進位檔,或免費方案的 Cloudflare Worker。
- 索引
- 原生執行時使用 SQLite 或 PostgreSQL,在 Worker 中使用 D1。
- 物件
- S3 相容儲存桶、普通目錄與 Git 儲存庫的任意組合。寫入到全部目的地;讀取時逐一退回並校驗摘要。
- 傳輸
- HTTP 或 HTTPS,由您選擇。無論哪種方式,盒子都已封存並簽章。
- 帳號
- 沒有。保險庫透過上傳其已簽章的鎖來註冊。此後只有簽章金鑰的持有者才能變更它。
- 完全不用
- 同步是選用的。保險庫可以留在一台裝置上,備份到本機 ZIP 檔案,永不接觸網路。
- 授權條款
- AGPL-3.0。您為他人執行的修改版本必須保持開放。
Confidex 不保護什麼。
密碼學保護靜態與傳輸中的資料。它無法保護一台已解鎖的裝置,也無法隱藏一切。以下是我們已知的邊界,如實陳述。
已解鎖且受感染的裝置
保險庫開啟期間,金鑰與您檢視的記錄都在記憶體中。在那台裝置上執行的惡意軟體可以讀取它們。離開時請鎖定。
形態,而非內容
伺服器能看到保險庫與記錄的識別碼、哪個修訂版本接在哪個之後、時間戳記以及封存值的大小。內容、名稱、類型與標籤保持隱藏;形態則不會。
弱密碼加上洩漏的秘密金鑰
持有您傳輸碼的人可以離線嘗試密碼。Argon2id 讓每次猜測都要付出 64 MiB 與三輪運算的代價,因此長的密碼片語能夠抵擋。短的則不能。
本機搜尋索引
標題、網址、標籤與未受保護的備註以明文形式在您的裝置上建立索引以供搜尋。索引永遠不會離開裝置,但任何讀取您磁碟的人都能得知這些標籤。
沒有前向保密性
如果保險庫的私密材料一旦暴露,在它之下封存的記錄就可以被讀取。變更密碼會重新包裝鎖;它不會重新封存舊的修訂版本。
應用程式之外的副本
鎖定時清除記憶體涵蓋的是 Confidex 持有的內容。剪貼簿、瀏覽器與作業系統可能保留它們自己的副本。
給願意核對的人看的構造。
純 Rust 實作,沒有 C 繫結。每個構造都有固定的測試向量,儲存格式、鎖、記錄加密、簽章與同步協定都逐位元組地寫入了規格。
密碼學頁面逐步跟隨一個保險庫,從它的第一個隨機位元組到一個已同步的修訂版本:材料如何變成兩個金鑰對,鎖如何封存與開啟,修訂版本如何加密、簽章與命名,以及伺服器驗證什麼。
- 建立保險庫32 個隨機位元組、X25519 秘密金鑰、Ed25519 簽章金鑰對、UUIDv5 位址、77 個符號的傳輸碼。
- 鎖Argon2id 64 MiB,結合秘密金鑰的 HKDF-SHA256,對 33 位元組的 XChaCha20-Poly1305,總共 344 位元組。
- 記錄與修訂版本MessagePack,一次 zlib,HPKE base 模式,對精確位元組的 Ed25519,SHA-256 修訂版本 ID。
- 同步伺服器分離的鎖簽章、釘選的金鑰、精確位元組、游標比較並推進。
- 哪些資訊仍然可見識別碼、父版本、epoch、大小與時間。沒有任何可讀內容。