登入
瀏覽器先把密碼雜湊再送出。Saturn 再用 PBKDF2 雜湊一次,不保存密碼本身。
信任
工具參數、上游回應,以及交回給 Agent 的結果,共用一個 AES-256-GCM 信封。資料金鑰以 ML-KEM-1024 封給 Saturn 不持有的公鑰。
密碼、成員私鑰與工具 Payload 不共用同一把秘密。
瀏覽器先把密碼雜湊再送出。Saturn 再用 PBKDF2 雜湊一次,不保存密碼本身。
另一把只在瀏覽器衍生的金鑰包住 ML-KEM 私鑰。登入用的雜湊解不開它。
一把隨機的 AES-256-GCM 資料金鑰加密請求與回應。ML-KEM-1024 再把這把金鑰封給組織與每位成員。Saturn 隨即丟棄資料金鑰。
Access token 與 client secret 用 Gateway 自己的 ML-KEM-1024 金鑰封存,已授權的呼叫才能完成。Agent 拿不到密鑰。
這些欄位一起封存。演算法是 ML-KEM-1024-HKDF-SHA384-AES-256-GCM。
Agent 隨工具呼叫送出的參數。
Saturn 轉送給工具的請求。
工具回來的原始內容。
Saturn 交回給 Agent 的結果。
白皮書
2026 年 10 月 16 日
本文件說明 Saturn MCP 在登入、成員金鑰、工具 Payload 與上游憑證上使用的密碼學。
Saturn 位於 AI Agent 與它獲准呼叫的 MCP Server 之間。Gateway 驗證呼叫者、評估政策、轉送已核准的呼叫,並寫下一筆審計紀錄。本文件涵蓋支撐這項工作的四條密碼學路徑:登入驗證值、成員私鑰、工具 Payload 信封,以及上游憑證金庫。
以下描述對應產品裡實際運行的機制。本文件不陳述認證、第三方稽核,或軟體沒有實作的控制措施。
密碼在請求離開頁面之前,先由瀏覽器雜湊。瀏覽器對標籤 saturn-login-v1、一個換行,以及密碼計算 SHA-256,再送出前綴 v1. 與 64 個小寫十六進位字元。註冊、重設密碼、變更密碼、重新驗證、接受邀請,以及 OAuth 登入表單,都使用同一個驗證值。
Gateway 保存的是這串十六進位的 PBKDF2-HMAC-SHA256:210,000 次迭代、16 位元組隨機鹽,格式為 pbkdf2_sha256$210000$salt$digest。仍以明文密碼送出的呼叫者(例如營運種子帳號)會先套用同一個帶標籤的 SHA-256,再做 PBKDF2,因此存檔的驗證值與瀏覽器一致。
登入驗證值與成員金鑰的包裝金鑰以標籤分開。登入所保存的字串是第二層雜湊的輸入,與包裝成員私鑰的材料是兩個不同的值。
Payload 金鑰為 ML-KEM-1024(FIPS 203)。封裝公鑰為 1,568 位元組。備份所記錄的私鑰是 64 位元組種子。瀏覽器把這顆種子展開成解封裝金鑰。Gateway 保存封裝公鑰與加密備份,不以明文保存種子。
成員備份在瀏覽器裡用密碼建立。包裝材料是標籤 saturn-member-wrap-v1、一個換行與密碼的 SHA-256。PBKDF2-HMAC-SHA256 再對該摘要與隨機鹽迭代 600,000 次,並以 AES-256-GCM 加密種子。附加資料是 password、換行與使用者 id。登入驗證值無法通過這次解密。
組織復原備份使用建立組織金鑰時顯示的復原金鑰。HKDF-SHA256 以 info saturn-recovery-v1 衍生 AES-256-GCM 金鑰。附加資料是 recovery、組織 id 與金鑰版本。復原金鑰不存放在 Gateway。
組織已有 Payload 金鑰時,一筆審計事件產生一個信封。一起封存的欄位是工具參數、上游請求、上游回應、Gateway 結果,以及交回給 Agent 的結果。等待核准的參數使用同一種包裝,並標示 org-mlkem1024-v1。
Gateway 抽取 32 位元組隨機資料金鑰,以 AES-256-GCM 加密正規化 JSON。附加資料是組織 id、紀錄 id、Payload 類型與格式版本,以換行分隔。格式版本為 1。密文含 16 位元組驗證標籤。同一份正規化 JSON 的 SHA-256 與密文一起保存。
資料金鑰再封給組織封裝公鑰與每位成員的封裝公鑰。ML-KEM-1024 封裝產生 32 位元組共享秘密與 1,568 位元組密文。HKDF-SHA384 把共享秘密變成 32 位元組 AES 金鑰。鹽為空,亦即 HKDF-SHA384 所規定的 48 個零位元組;info 為 saturn-payload-mlkem1024-v1。信封上的演算法名稱是 ML-KEM-1024-HKDF-SHA384-AES-256-GCM。
每一份包裝依序是版本位元組 0x02、KEM 密文、12 位元組 nonce,以及資料金鑰的 AES-256-GCM 密文。所有包裝寫入後,Gateway 刪除資料金鑰。成員在瀏覽器以解封裝金鑰打開包裝、核對內容雜湊,並在瀏覽器裡閱讀 Payload。
長度不是 1,568 位元組的公鑰會被略過。若沒有可用的 ML-KEM 金鑰,Gateway 不寫入工具內容。審計列標示加密不可用。
Access token 與 client secret 使用另一把屬於 Gateway 的 ML-KEM-1024 金鑰。種子是一把固定的 64 位元組金鑰。每筆密鑰封成前綴 pq1.,接著是 ML-KEM-1024 封裝、info 為 saturn-credential-aes-256-gcm-v1 的 HKDF-SHA384,以及 AES-256-GCM。
Gateway 在一筆已授權呼叫進行期間打開該密鑰,再用於上游。主控台 API 回報密鑰是否存在。Agent 收到的是呼叫結果。這把金庫金鑰與組織 Payload 金鑰是兩把金鑰:Gateway 完成呼叫,成員打開已封存的審計 Payload。
保持可讀的那一列寫下呼叫者、工具、政策版本與決策,以及加密狀態與內容雜湊。被封住的本文就是上述信封。經授權的成員在瀏覽器解開成員金鑰之後,於本地解密。