Web Crypto API 端侧加密与密钥管理:AES-GCM、SHA-256 与安全实践技术背景Web Crypto API 提供原生的加密与哈希能力,适用于端侧数据保护、完整性校验与安全协议辅助。正确的密钥管理与安全参数选择是关键。核心内容生成与导入密钥(AES-GCM)async function generateAesKey() { return crypto.subtle.generateKey( { name: 'AES-GCM', length: 256 }, true, ['encrypt', 'decrypt'] ); } async function importAesKey(raw: ArrayBuffer) { return crypto.subtle.importKey('raw', raw, { name: 'AES-GCM' }, true, ['encrypt', 'decrypt']); } 加密与解密(AES-GCM)async function encryptAesGcm(key: CryptoKey, data: ArrayBuffer) { const iv = crypto.getRandomValues(new Uint8Array(12)); const ciphertext = await crypto.subtle.encrypt( { name: 'AES-GCM', iv }, key, data ); return { iv, ciphertext }; } async function decryptAesGcm(key: CryptoKey, iv: Uint8Array, ciphertext: ArrayBuffer) { return crypto.subtle.decrypt({ name: 'AES-GCM', iv }, key, ciphertext); } 哈希校验(SHA-256)async function sha256(data: ArrayBuffer) { const digest = await crypto.subtle.digest('SHA-256', data); return new Uint8Array(digest); } 密钥与隐私安全- 使用不可导出密钥(non-extractable)优先,必要时谨慎导出并短期存储 - 避免将密钥放入持久化存储;如需会话内存储,使用 sessionStorage,并在会话结束清理 - 通过 HTTPS 与严格 CSP,避免中间人与脚本注入风险 技术验证参数在 Chrome 128/Edge 130(Windows 11)下:AES-GCM 加密吞吐:≥ 50MB/s(小块)解密时延:P95 < 5ms(1KB 数据)哈希计算:SHA-256 P95 < 3ms(1KB 数据)应用场景端侧敏感数据加密与传输保护文件完整性校验与去重安全协议辅助与密钥派生最佳实践采用随机 12 字节 IV 并避免重用;必要时加入 AAD控制密钥生命周期与作用范围,定期轮换建立安全策略与审计,避免密钥泄露与误用

发表评论 取消回复