piapia123
ja

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 行ずつコピーすることも、すべてコピーすることもできます

使い方

  1. 「暗号化」または「復号」を選び、パスフレーズを入力します
  2. 暗号化:平文を貼り付けます(任意で vault-id ラベル)
  3. 復号:`$ANSIBLE_VAULT` のテキスト全体を貼り付けます
  4. 結果と内訳(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` コマンドを使ってください。

関連ツール