Ansible Vault の暗号化と復号
エンコード処理はすべてブラウザ内で完結します。データは送信されません
`ansible-vault` とバイト単位で互換です。鍵は PBKDF2-HMAC-SHA256(パスフレーズ, salt, 10000 回, 80 バイト) から導出し、先頭 32 バイトが AES-256-CTR の鍵、次の 32 バイトが HMAC の鍵、最後の 16 バイトが IV です。本文は 二重 16 進数で salt と HMAC を含みます。復号は HMAC を先に検証するため、パスフレーズの誤りは乱码ではなく明確なエラーになります。`1.1` と `1.2`(vault-id ラベル)の両方に対応。計算はローカルで、パスフレーズも平文も送信しません。
機能
- ansible-vault と同じ鍵導出:PBKDF2-HMAC-SHA256・10000 回
- AES-256-CTR(カウンタは全ブロック)+ PKCS#7 パディング
- 二重 16 進数の封筒と 1 行 80 文字の折り返し
- 1.1 と 1.2(vault-id ラベル)の両ヘッダーに対応
- 復号前に HMAC を検証し、パスフレーズ誤りを明確なエラーに
- 暗号化時の salt は crypto.getRandomValues 由来
- https 限定の Web Crypto に依存しない純 JS の AES
- 1 行ずつコピーすることも、すべてコピーすることもできます
使い方
- 「暗号化」または「復号」を選び、パスフレーズを入力します
- 暗号化:平文を貼り付けます(任意で vault-id ラベル)
- 復号:`$ANSIBLE_VAULT` のテキスト全体を貼り付けます
- 結果と内訳(salt・HMAC・ヘッダー)がすぐ表示されます
よくある質問
- パスフレーズを間違えるとどうなりますか?
- 「HMAC 検証に失敗」と明確に出ます。多くの対称暗号ツールでは鍵が違っても「成功」してランダムなバイトが出るだけですが、Ansible は復号の前に HMAC を検証するため、本ツールも明確なエラーを返します —— 画面いっぱいの乱码を推理するより有用です。
- なぜファイルは二重 16 進数なのですか?
- 本文はまず ASCII テキスト `hex(salt) \n hex(hmac) \n hex(暗号文)` で、それをさらに 16 進数で符号化し、1 行 80 文字で折り返します。1 層だけ戻すとテキストに見えて実は 16 進数のものが得られます —— これは Ansible 自身の形式で、本ツールの誤りではありません。
- パスフレーズ保護は十分ですか?
- Vault は PBKDF2 を 10000 回で、今日の基準では少なめです。頼りになるのはパスフレーズ自体の強度です。回数を変えると互換性が壊れるため、強くなることは期待せず、長くランダムな Vault パスフレーズを使ってください。
- バイナリは扱えますか?
- いいえ。本ツールは UTF-8 テキストとして扱い、復号結果が有効なテキストでなければその旨を明示します(暗号化されたキーストアなど)。バイナリには `ansible-vault` コマンドを使ってください。
関連ツール
AES / DES
エンコードAES・DES・3DES でテキストを暗号化・復号します。CBC・GCM・CTR・ECB の4モードに対応し、鍵はテキスト・16進数・Base64 で指定できます。
HMAC 署名
エンコード秘密鍵とメッセージから HMAC 署名を計算します。空白や日本語、中国語を含む鍵でも Node・Java・Python と一致し、鍵は端末内の計算にだけ使われて送信されません。
ハッシュ計算
エンコードMD5・SHA-1・SHA-256・SHA-512 のダイジェストを計算します(旧システム向けの MD4・MD2 も可)。日本語も UTF-8 バイトで計算します。
Base64 変換
エンコードテキストを Base64 に変換し、Base64 からテキストへ戻します。日本語や中国語、emoji も UTF-8 として正しく処理。すべてブラウザ内で完結し、内容は送信しません。
URL エンコード
エンコード日本語や中国語、空白・記号を %XX にエスケープし、復元します。URL 全体とパラメータ値では方式が異なり、間違えるとリンクが開けません。ブラウザ内で処理します。
HTML 実体参照
エンコード< > & と引用符を HTML 実体参照に変換し、文字へ戻します。デコードは1回だけで、&lt; は山括弧ではなく < になります。すべてブラウザ内で処理します。