AES-256-CBC+パスフレーズから AES-256-GCM への移行と graceful migration
Node.js
セキュリティ
暗号化
脆弱な暗号化(弱 KDF・低エントロピー鍵・MACなし)は、Node 標準 node:crypto の aes-256-gcm へ置換すれば依存ゼロで解決できる。鍵は base64 デコードした 32 byte raw key を KDF を介ずそのまま使い、IV はときごとに randomBytes(12)、出力は base64(IV[12]+authTag[16]+ciphertext)。GCM は AEAD なので setAuthTag+final で改ざんを例外検出でき、PKCS#7 パディング不使用で padding oracle も発生しない。既存暗号データがある場合は一気に切り替えず、v1(旧)/v2(新)を prefix で分岐し、新規暗号は v2、復号は prefix 判定、トークンの refresh ごとに自然 v2 化させて v1 残存ゼロ確認後に旧鍵と crypto-js を撤去する graceful migration が推奨。鍵自体を差し替える場合は新 SSM パラメータを2鍵並走させる。