UniAuth
安全性不是一層防護 — 而是最低標準

為量子時代而生

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。任何地方都沒有時間旁路。

合規與稽核

每項操作都會記錄,每條鏈都會驗證,每次匯出都會遮蔽敏感內容。

防竄改的雜湊串接稽核軌跡
含 IP、UA、風險評分的活動紀錄
GDPR 資料匯出(JSON)
帳戶自助刪除並完整清除
可設定的資料保存政策
密碼歷史紀錄(預設:5)
以 Webhook 簽署的事件通知
管理員模擬身分稽核紀錄
信任層級制度(T0–T4)

對我們的安全性有疑問嗎?

我們很樂意與您的安全團隊討論架構、分享稽核報告,或一同檢視我們的威脅模型。