為量子時代而生
UniAuth 從根本設計就以安全性為預設 — 而非日後才補上。每個雜湊、每個權杖、每個工作階段,都以能同時抵禦當今與未來攻擊的密碼學守護。
密碼學基石
靜態 AES-256-GCM 加密
每個機敏值 — TOTP 密鑰、OAuth 存取權杖、PQC 私密金鑰、LDAP 繫結密碼 — 都會在寫入資料庫之前以 AES-256-GCM 加密。格式為 iv:tag:ciphertext。
加密金鑰是獨立的 256 位元密鑰(ENCRYPTION_KEY),並非從 JWT 密鑰衍生而來。輪替其中一個並不會危及另一個。
ML-DSA-44 工作階段簽章
每個工作階段都帶有後量子數位簽章(FIPS 204 ML-DSA-44,前身為 CRYSTALS-Dilithium)。每次請求時,touchSession() 都會驗證該簽章;一旦不符,立即撤銷工作階段並記錄事件。
即使傳統的 ECDSA 或 RSA 簽章被量子電腦破解,ML-DSA 工作階段依然安全無虞。
Argon2id 密碼雜湊
新密碼採用 Argon2id(OWASP 建議值:64 MB 記憶體、3 次迭代、4 路平行)。舊有的 bcrypt 雜湊會在登入時自動移轉。密碼強度以 zxcvbn 評分(須達分數 ≥ 2),並透過 HaveIBeenPwned 的 k-匿名 API 進行比對。
成對的主體識別碼
已連結的應用程式絕對看不到您真正的 UUID。每個應用程式都會取得一個唯一、具決定性且專屬於該應用程式的識別碼:HMAC-SHA256(userId:clientId, secret)。應用程式無法跨服務串連使用者身分 — 您的隱私是結構性的保障,而非僅靠政策。
執行階段防護
自適應威脅偵測
跨 6 項因子的統計式登入風險評分:新 IP、新 user-agent、異常時段、連續失敗突發、地理異常與裝置信任。高風險登入會自動觸發升級 2FA 或 CAPTCHA。
漸進式帳戶鎖定
5 次失敗 = 1 分鐘、10 次 = 5 分鐘、15 次 = 15 分鐘、20 次以上 = 1 小時。一律回傳通用的 401(不洩漏帳戶是否存在)。驗證成功後即重設。鎖定同樣適用於密碼、密碼金鑰與魔術連結等流程。
工作階段生命週期
24 小時閒置逾時 + 30 天絕對效期。每次請求都會驗證 SHA-256 指紋(IP + UA);一旦不符,立即終止工作階段。每位使用者最多 10 個並行工作階段,最舊的會被淘汰。
防 SSRF 的對外連線
每個對外的 HTTP 請求(Webhook、OIDC 探索、後端通道登出)都會經過 safeFetch — 先做 DNS 解析,再將連線固定到已驗證的 IP。在檢查與 socket 連線之間發動 DNS 重新繫結是不可能的。
CORS + CSP + 速率限制
所有 API 路由皆採嚴格的同源 CORS。CSP 設定 frame-ancestors 'none'。雙層速率限制(記憶體內 + Redis 滑動視窗)。各路由的門檻皆依端點的風險樣態調校。
全面固定時間防護
每一次雜湊比對、權杖驗證、備援碼檢查與 SCIM 權杖查詢,都使用 crypto.timingSafeEqual。任何地方都沒有時間旁路。
合規與稽核
每項操作都會記錄,每條鏈都會驗證,每次匯出都會遮蔽敏感內容。