Web Crypto API
ブラウザ組み込みの暗号API。window.crypto.subtleから使え、Promiseベース。AES、SHA、RSA、ECDSA、ECDH、HKDF、PBKDF2に対応する。2016年頃から標準で、広く実装されている。
JSライブラリ(CryptoJS、sjcl)より優れる点:ネイティブ実装なので定数時間で動作しハードウェア支援も効く。CryptoKeyオブジェクトは不透明で、鍵がブラウザのプロセス外に出ない。制約:AES-GCM、RSA-OAEP、ECDSAは標準化済みだが、ChaCha20やEd25519の標準化は遅れた(Ed25519はChrome 113、2023年でようやく対応)。新しい暗号が必要なら、libsodiumのWebAssembly版をユーザーランドで使う手がある。典型的な用途は、E2EEのWebアプリ(Standard Notes、ProtonMail)や、アップロード前のクライアント側暗号化。