crypto-js の AES パスフレーズモードの弱点とリスク評価
セキュリティ
暗号化
判断基準
crypto-js の AES.encrypt(plain, passphrase) は OpenSSL EVP_BytesToKey 互換の KDF(MD5×1ラウンド)+AES-256-CBC+8byte salt で、MAC なし(非 AEAD)。弱点は3つ: (1)弱い KDF、(2)低エントロピー鍵だとオフライン辞書攻撃が成立、(3)改ざん検知不可・CBC で padding oracle リスク。重要な判断軸: KDF の理論的弱さは入力鍵のエントロピーで打ち消せる。鍵が高エントロピー乱数(openssl rand -base64 24 等)ならオフライン総当たりは非現実的で即時脆弱性ではないが、人手で設定した低エントロピー文字列だと DB ダンプ入手時に辞書攻撃が理論上成立する。加えて crypto-js は実質メンテ停止。