ChaCha20-Poly1305 暗号化 & 復号

無料オンライン ChaCha20-Poly1305 暗号化 & 復号 ツール。100% ローカル処理 — データは端末の外に出ません。

National Standards
Legacy
出力

結果がここに表示されます...

入力 暗号化

Usage Guide

ChaCha20-Poly1305について

ChaCha20-Poly1305は、ChaCha20ストリーム暗号とPoly1305メッセージ認証コードを組み合わせた認証付き暗号化(AEAD)アルゴリズムです。Daniel J. Bernsteinが設計し、 RFC 8439 で標準化され、TLS 1.3、SSH、 WireGuard でプライマリ暗号スイートとして採用されています。単一の操作で機密性(暗号化)と完全性(認証)の両方を提供し、盗聴と暗号文の改ざんを防ぎます。ChaCha20-Poly1305は、ハードウェアAES加速のないプラットフォーム向けに、AES-GCMのソフトウェアフレンドリーな代替として開発されました。

現代のTLS標準:ChaCha20-Poly1305はTLS 1.3の2つの必須暗号スイートの1つです(AES-256-GCMと並んで)。モバイルおよびIoTデバイスで優先される選択であり、すべてのプラットフォームで AES-256-GCM と同等のセキュリティを提供します。

使用手順

このツールは暗号化と復号の両方をサポートします。キーは必須です。ナンスは空のままにすると自動生成されます:

1. キーの生成または入力'Secret Key'の横のランダムボタンをクリックして32バイト(256ビット)のランダムキーを生成するか、独自の32文字の文字列を入力してください
2. ナンス(オプション)空白のままにすると、暗号化ごとにランダムな12バイトのナンスが自動生成されます。復号の場合、ナンスは暗号文に埋め込まれています — このフィールドは空のままにしてください
3. 暗号化入力ボックスに平文を入力し、「暗号化」を選択して「暗号化」をクリックします。出力は、12バイトのナンスを暗号文+タグの前に付加したbase64文字列です
4. 復号base64の暗号文を入力ボックスに貼り付け、「復号」を選択し、暗号化に使用した同じキーを入力して「復号」をクリックします
プライバシー保護:すべてのChaCha20-Poly1305操作は、WebAssemblyを使用してブラウザ内で完全に実行されます。データがサーバーに送信されることは一切ありません — 完全なオフライン処理です。

キーとナンスの形式

ChaCha20-Poly1305は固定サイズのパラメータを使用します:

キー32バイト(256ビット)— 32文字の文字列として入力するか、ランダムジェネレーターを使用してください
ナンス12バイト(96ビット)— 12文字の文字列として入力するか、自動生成のために空白のままにしてください。同じキーで同じナンスを再使用しないでください
暗号文の形式base64(ナンス[12バイト] + 暗号文 + 認証タグ[16バイト])。ナンスが前置されているため、復号は自己完結しています
タグ16バイト(128ビット)のPoly1305認証タグ。暗号化中に自動的に追加され、復号中に自動的に検証されます
ナンスの再使用は絶対禁止:同じ(キー、ナンス)ペアを再使用すると、ChaCha20-Poly1305のセキュリティが完全に破られます — 攻撃者がキーストリームを回復してすべてのメッセージを解読できるようになります。常に各暗号化に一意のナンスを使用するか、このツールに自動生成させてください。

ChaCha20-Poly1305 vs AES-GCM

どちらもTLS 1.3のAEAD暗号です。各々を選ぶタイミングを以下に示します:

ChaCha20-Poly1305ハードウェアAESのないモバイル、ARM、IoTデバイスで優先。ソフトウェアで定数時間で動作し、タイミング攻撃に耐性あり。ハードウェアアクセラレーターは不要
AES-GCMAES-NIハードウェア命令が利用可能な場合(最新のx86/x64 CPUのほとんど)に優先。ハードウェアアクセラレーションにより大幅に高速
セキュリティの同等性どちらも256ビットのキー強度と128ビットの認証タグを提供します。セキュリティの観点からどちらが強いとは言えません
TLS 1.3の戦略TLS 1.3の実装はネゴシエーションします:AES-NIを持つサーバー/デスクトップではAES-GCM;ハードウェアAESのないモバイルクライアントではChaCha20-Poly1305

FAQ

Q: なぜ出力が入力より長いのですか?

A: 暗号化された出力はbase64エンコードされており、12バイトのナンス + 平文の長さ + 16バイトのPoly1305認証タグが含まれています。そのため、バイナリのオーバーヘッドは28バイト(12ナンス + 16タグ)で、base64エンコードがさらに約33%の長さを追加します。

Q: 暗号文を改ざんするとどうなりますか?

A: ChaCha20-Poly1305は改ざんされた暗号文の復号を拒否します。Poly1305タグは暗号文全体に対して計算されたメッセージ認証コードです。1ビットでも変更があるとタグ検証が失敗し、復号関数は壊れた平文を生成する代わりにエラーを返します。

Q: ChaCha20-Poly1305と単純なChaCha20の違いは何ですか?

A: 単純なChaCha20は機密性のみを提供します — データを暗号化しますが改ざんを検出しません。 ChaCha20-Poly1305はChaCha20暗号化とPoly1305認証タグを組み合わせ、機密性完全性の両方を提供します。実用的な用途では常にChaCha20-Poly1305を単純なChaCha20より優先してください。

Q: 複数のメッセージに同じキーを使用できますか?

A: はい、ただし各メッセージは一意のナンスを使用する必要があります。(キー、ナンス)ペアは絶対に再使用してはいけません。12バイトのナンスでは、ランダムなナンス生成により誕生日の衝突確率は約1/296で、数十億のメッセージに対して安全です。

Q: ChaCha20-Poly1305は量子コンピューターに耐性がありますか?

A: すべての対称暗号と同様に、ChaCha20-Poly1305はグローバーのアルゴリズムの影響を受け、256ビットのセキュリティが128ビット相当に減少します。128ビットの耐量子セキュリティはほとんどのアプリケーションに十分と考えられています。そのため、256ビットキーを持つChaCha20-Poly1305は128ビットセキュリティレベルで耐量子と見なされており、 AES-256-GCM も同様です。

Q: 「無効なキー、ナンス、または暗号文」で復号が失敗するのはなぜですか?

A: このエラーは認証タグの検証が失敗したことを意味します。一般的な原因:
間違ったキー:キーが暗号化に使用されたものと一致していません。
破損した暗号文:base64文字列が変更、切り詰め、または誤って貼り付けられました。
非ChaCha20-Poly1305データの復号:入力が別のアルゴリズムまたはツールで暗号化されました。

Use Cases

推奨:対称ファイルおよびメッセージ暗号化

ChaCha20-Poly1305は優れた汎用対称暗号化の選択肢です。WireGuard VPNのすべてのトンネルトラフィックに使用され、TLS 1.3の2つの主要な暗号スイートの1つです。常にメッセージごとに新しいランダムなナンスを生成してください(このツールは自動的に前置します)。

Recommended Configuration:
  • ✅ ChaCha20-Poly1305(モバイル、クロスプラットフォーム、ソフトウェアのみに推奨)
  • AES-256-GCM(AES-NIハードウェアが利用可能な場合に推奨)
  • ✅ XChaCha20-Poly1305(拡張24バイトナンス、大量メッセージング向け)
  • ❌ 新しいプロジェクトでは非認証暗号(AES-CBC、単純なChaCha20)を使用しないでください
推奨:モバイルおよびIoT暗号化

ハードウェアAES加速のないプラットフォームでは、ChaCha20-Poly1305がAES-GCMを上回ります。ChaCha20はソフトウェアフレンドリーなため、すべてのプラットフォームで定数時間で実行され、タイミングサイドチャンネルのリスクがありません。Googleはこの理由でAndroid TLSトラフィックの優先暗号としてChaCha20-Poly1305を選択しました。

Recommended Configuration:
  • ✅ ChaCha20-Poly1305(ハードウェアAESなしで最高のパフォーマンス)
  • ✅ AES-256-GCM(AESハードウェアを持つデバイスで許容可能)
  • 💡 TLS 1.3は自動的にネゴシエーションします — 両方の暗号スイートが必須
  • ❌ 制約のあるデバイスでAES-CBCを使用しないでください(認証なし、遅い)
許容可能:暗号化されたローカルストレージ

ChaCha20-Poly1305はローカルに保存された機密データを保護できます。パスワードを直接使用するのではなく、 Argon2id を使用してユーザーパスワードからキーを導出してください。

Recommended Configuration:
  • ✅ ChaCha20-Poly1305 + Argon2idキー導出(パスワードベースの暗号化)
  • ✅ AES-256-GCM + PBKDF2(FIPS準拠環境)
  • 💡 保存:Argon2idパラメータ + ソルト + ChaCha20ナンス + 暗号文
  • ❌ ローカルストレージにECBモードや非認証暗号を使用しないでください
非推奨:大きなファイルの暗号化

標準的なChaCha20-Poly1305は認証前に暗号文全体をバッファリングするため、大きなファイルに対してメモリ集約的です。数メガバイトを超えるファイルには、チャンク暗号化を処理する専用ツールまたはライブラリを使用してください(例:libsodium secretstream、age)。

Recommended Configuration:
  • 💡 数MB以上のファイルにはチャンクAEADを使用してください
  • ✅ libsodium secretstream(ストリーミングChaCha20-Poly1305)
  • ✅ age暗号化ツール(ファイル指向、内部でChaCha20-Poly1305を使用)
  • ✅ AES-256-GCMストリーミングモード(ハードウェア加速環境向け)
非推奨:鍵交換または認証

ChaCha20-Poly1305は対称暗号です — 両者がすでに同じ秘密鍵を共有している必要があります。鍵配布問題を解決しません。安全な鍵交換には、非対称プロトコルまたはTLS 1.3などの完全なプロトコルを使用してください。共有シークレットなしの認証には、 RSA またはECDSAデジタル署名を使用してください。

Recommended Configuration:
  • ❌ ChaCha20-Poly1305は鍵配布を解決しません
  • ✅ TLS 1.3(鍵交換 + ChaCha20-Poly1305データ暗号化を処理)
  • ✅ X25519 + ChaCha20-Poly1305(Noiseプロトコルパターン)
  • ✅ RSA / ECDSAデジタル署名と身元確認
非推奨:パスワードハッシュ

ChaCha20-Poly1305は暗号化アルゴリズムであり、パスワードハッシュ関数ではありません。暗号化は可逆です — キーを持つ誰でもパスワードを復号できます。パスワードストレージには Argon2id (優先)または bcrypt を使用してください。

Recommended Configuration:
  • ❌ パスワードストレージにChaCha20-Poly1305を使用しないでください(可逆です)
  • Argon2id(優先パスワードハッシュアルゴリズム)
  • bcrypt(広くサポート、既存システム)
  • ✅ scrypt / PBKDF2(代替パスワードKDF)

ベストプラクティスのまとめ

  • AESハードウェア加速が利用できない場合 — モバイル、IoT、クロスプラットフォームソフトウェア — の対称暗号化にChaCha20-Poly1305を使用してください。
  • 暗号化ごとに常に一意のランダムナンスを使用してください。ナンスフィールドを空のままにすると、ツールが自動的に1つを生成します。
  • 暗号文の出力には12バイトのナンスと16バイトの認証タグが埋め込まれています — 復号に必要なのは単一のbase64文字列のみです。
  • (キー、ナンス)ペアを絶対に再使用しないでください。ナンスの再使用はChaCha20-Poly1305のセキュリティを完全に破ります。
  • パスワードベースの暗号化では、最初にArgon2idでキーを導出してください — パスワードをChaCha20-Poly1305のキーとして直接使用しないでください。

ディスカッション&フィードバック

0件のコメント
自分