跳到內容

身份認證、金鑰體系與信封加密

DNS Worker 在後臺解析管道與 Web 控制面板中全面踐行零信任深度防禦安全標準。本篇全面解析身份鑑權協議、信封金鑰輪換機制以及核心安全環境變數。


Web 控制面板生物識別通行金鑰登入

Web 管理面板嚴格遵循 WebApp Trust 零信任安全架構標準:

[ 浏览器客户端 ] [ DNS Worker 服务端 ]
│ │
│── 1. POST /api/auth/login (密码 + 随机数 Nonce) ────────▶│
│ │ (Argon2 / PBKDF2)
│◀── 2. Access Token (内存) + Refresh Token (Cookie) ──────│
│ │
│── 3. 授权 RPC 调用 (Authorization: Bearer) ─────────────▶│
│ │
│── 4. POST /api/auth/refresh (RTR 宽限窗口) ──────────────▶│
│ │ (签发全新令牌对)
│◀── 5. 轮换后的 Access Token + 轮换后的 Refresh Token ────│
  • 硬體通行金鑰 (WebAuthn Passkey):支援 Touch ID、Face ID、Windows Hello 及 YubiKey 生物認證,徹底阻斷撞庫與釣魚攻擊。
  • 隨機數防重放 (Nonce Anti-Replay):所有敏感操作均包含加密隨機數,杜絕重放攻擊。
  • 非可匯出 Web Crypto 金鑰:前端私鑰運算(如後量子 ML-KEM、AES-GCM 日誌解密)在獨立 Web Worker 中使用不可匯出的 Web Crypto API 原生物件執行。
  • 單次重新整理令牌輪換 (RTR):Refresh Token 具備一次性屬性,每次換髮新 Token 時舊 Token 立即吊銷。
  • 併發寬限視窗 (Concurrency Grace Period):在多瀏覽器標籤頁併發請求時,通過原子寬限期(RTR_GRACE_WINDOW_MS)避免誤判登出。

在 Account & Security Settings(賬戶與安全設定)卡片中管理主金鑰、通行金鑰及後量子 E2EE:

賬戶與安全設定面板

服務端儲存的敏感資料(包括使用者會話令牌與加密查詢日誌)由兩層信封加密機制保護:

┌────────────────────────────────────────────────────────┐
│ 密钥加密密钥 (KEK_v1 / KEK_v2) │
│ (保存在安全环境变量或 Cloudflare Secrets 中) │
└────────────────────────────────────────────────────────┘
│ (加密 / 解密)
▼
┌────────────────────────────────────────────────────────┐
│ 数据加密密钥 (DEK) │
│ (为每批日志或会话动态独立生成) │
└────────────────────────────────────────────────────────┘
│ (加密 / 解密)
▼
[ 核心敏感数据 / 密文载荷 ]
  1. 服務端自動載入最高版本的金鑰(如 KEK_v2)加密所有新寫入的資料。
  2. 歷史老資料仍可使用舊版 KEK_v1 或相容的 JWT_SECRET(v0)無縫解密。
  3. 伴隨資料更新或定期維護任務,系統會自動將舊資料無縫重新加密至最新啟用版本。

在 .env(Serverfull 模式)中配置,或在 Cloudflare Workers 中通過 wrangler secret put <NAME> 設定。

  • 型別:string(至少 32 字元)
  • 職責:令牌簽名根金鑰與 KEK_v0 信封加密基礎後備。
  • 安全要求:必須使用高強度密碼學偽隨機數生成,嚴禁使用弱口令。
  • 生成方式:
    終端機視窗
    openssl rand -base64 32
  • 型別:string(至少 32 字元)
  • 職責:多版本信封加密主金鑰。
  • 配置範例:
    KEK_v1=c3VwZXJzZWNyZXRrZXl2MWV4YW1wbGUxMjM0NTY3ODk=
    KEK_v2=bmV3ZXJzZWNyZXRrZXl2MmV4YW1wbGUxMjM0NTY3ODk=
    系統會自動識別數字最大的版本(v2)作為當前加密金鑰,同時保留對舊版本的解密支援。
  • 型別:string
  • 職責:獨立伺服器 API 管理令牌,以及 Cloudflare Worker 呼叫獨立伺服器時的鑑權憑據。
  • 請求頭:Authorization: Bearer <SERVERFULL_API_KEY>。
  • 型別:string
  • 職責:初次部署時系統預設的管理員密碼。初始化建立後憑據將安全加密儲存於資料庫中。