接上文,進一步分析雙哈希 (HASH1+HASH2) 結構的信息洩露風險、離線破解可行性及現代版本改進現狀。
password 列數據 (需 sysadmin 或備份文件讀取權限)。0x0100 | KEY(4B) | HASH1(20B) | HASH2(20B)。Verify(pwd_candidate) = (SHA1(lower(pwd)+KEY)==HASH1) AND (SHA1(upper(pwd)+KEY)==HASH2)?d?d?d?d?d?d (10^6 空間,秒級破解)。| 版本 | 哈希算法 | 鹽值 | 網絡層 |
|---|---|---|---|
| SQL 2000/2005 | SHA1 雙哈希 | 4字節固定KEY | 弱可逆加密 |
| SQL 2012/2014 | SHA2-512 + 32字節隨機鹽 | 高熵隨機 | 仍依賴 TLS |
| SQL 2016+ | 同上 + 可選更強 | 同上 | 強制 TLS 1.2 選項 |
| Azure SQL | 托管標識/Entra ID 為主 | N/A | 強制加密 |
ForceEncryption=Yes + 客戶端 Encrypt=Yes;TrustServerCertificate=No。sys.sql_logins 檢查弱密碼 (PwnedPasswords API 對照)。sa、重命名 sa、建立專用低權限應用賬號。xp_cmdshell、Ad Hoc Distributed Queries、OLE Automation。Login Auditing: Failed logins only (最小) 或 Both。BACKUP DATABASE ... WITH ENCRYPTION (ALGORITHM = AES_256, SERVER CERTIFICATE = ...),防備份文件離線破解。SQL Server 早期版本密碼體系在現代威脅模型下**不安全**。核心對策不是「加強哈希」,而是**「消除密碼認證」**。若業務強依賴 SQL 認證,務必升級至 2016+、強制 TLS、啟用備份加密、實施嚴格審計輪換,將風險控制在可接受範圍內。