身份認證、金鑰體系與信封加密
DNS Worker 在後臺解析管道與 Web 控制面板中全面踐行零信任深度防禦安全標準。本篇全面解析身份鑑權協議、信封金鑰輪換機制以及核心安全環境變數。
1. Web 控制面板零信任身份鑑權
Section titled “1. 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 ────│核心安全防線
Section titled “核心安全防線”- 硬體通行金鑰 (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)避免誤判登出。
2. 信封加密 (DEK / KEK) 架構
Section titled “2. 信封加密 (DEK / KEK) 架構”在 Account & Security Settings(賬戶與安全設定)卡片中管理主金鑰、通行金鑰及後量子 E2EE:
服務端儲存的敏感資料(包括使用者會話令牌與加密查詢日誌)由兩層信封加密機制保護:
┌────────────────────────────────────────────────────────┐│ 密钥加密密钥 (KEK_v1 / KEK_v2) ││ (保存在安全环境变量或 Cloudflare Secrets 中) │└────────────────────────────────────────────────────────┘ │ (加密 / 解密) ▼┌────────────────────────────────────────────────────────┐│ 数据加密密钥 (DEK) ││ (为每批日志或会话动态独立生成) │└────────────────────────────────────────────────────────┘ │ (加密 / 解密) ▼ [ 核心敏感数据 / 密文载荷 ]無感平滑金鑰輪換
Section titled “無感平滑金鑰輪換”- 服務端自動載入最高版本的金鑰(如
KEK_v2)加密所有新寫入的資料。 - 歷史老資料仍可使用舊版
KEK_v1或相容的JWT_SECRET(v0)無縫解密。 - 伴隨資料更新或定期維護任務,系統會自動將舊資料無縫重新加密至最新啟用版本。
3. 安全環境變數速查
Section titled “3. 安全環境變數速查”在 .env(Serverfull 模式)中配置,或在 Cloudflare Workers 中通過 wrangler secret put <NAME> 設定。
JWT_SECRET
Section titled “JWT_SECRET”- 型別:
string(至少 32 字元) - 職責:令牌簽名根金鑰與 KEK_v0 信封加密基礎後備。
- 安全要求:必須使用高強度密碼學偽隨機數生成,嚴禁使用弱口令。
- 生成方式:
終端機視窗 openssl rand -base64 32
KEK_v1, KEK_v2, …
Section titled “KEK_v1, KEK_v2, …”- 型別:
string(至少 32 字元) - 職責:多版本信封加密主金鑰。
- 配置範例:
系統會自動識別數字最大的版本(KEK_v1=c3VwZXJzZWNyZXRrZXl2MWV4YW1wbGUxMjM0NTY3ODk=KEK_v2=bmV3ZXJzZWNyZXRrZXl2MmV4YW1wbGUxMjM0NTY3ODk=
v2)作為當前加密金鑰,同時保留對舊版本的解密支援。
SERVERFULL_API_KEY
Section titled “SERVERFULL_API_KEY”- 型別:
string - 職責:獨立伺服器 API 管理令牌,以及 Cloudflare Worker 呼叫獨立伺服器時的鑑權憑據。
- 請求頭:
Authorization: Bearer <SERVERFULL_API_KEY>。
ADMIN_PASSWORD
Section titled “ADMIN_PASSWORD”- 型別:
string - 職責:初次部署時系統預設的管理員密碼。初始化建立後憑據將安全加密儲存於資料庫中。
