Protonホームページ

暗号化 > 用語集 > ChaCha20

ChaCha20とは?

ChaCha20は、お客様がアプリやサービスを使用してメッセージを送信したり、ファイルを保存したり、プライベートに閲覧したりする際にお客様のデータを保護するのに役立ちます。

これは、幅広いデバイスにおいて高速かつ効率的でありながら、情報の機密性を維持するように設計された現代的な暗号化アルゴリズムです。

ChaCha20の仕組み、現代の暗号技術における重要性、およびAESとの比較についてご覧ください。

ChaCha20とは?

ChaCha20は、データの暗号化および復号化に使用される、高速で軽量、かつ非常に安全な256ビット 対称鍵暗号 です。 これは、Salsa20と呼ばれる初期の暗号を改良したものとして、ダニエル・J・バーンスタインによって設計されました。 その目的は、特にソフトウェアにおいて、効率性と安全性の両方を兼ね備えたものを作成することでした。

ChaCha20の仕組み

ChaCha20は、安全な擬似乱数バイトのストリームを生成し、そのストリームを元のメッセージと結合することによってデータを暗号化します。 その結果、秘密鍵を持たない人にとってはランダムに見える暗号化済みの出力が得られます。

データの暗号化と復号化に同じ鍵を使用するため、ChaCha20は公開鍵と秘密鍵を使用する非対称アルゴリズムであるRSAよりもはるかに高速です。 RSAは鍵交換や署名には便利ですが、大量のインターネットトラフィックを暗号化するにはChaCha20の方が適しています。

大まかに言えば、ChaCha20は三つの入力を受け取ります。それらは、秘密鍵、ナンス(一度だけ使用される数値 — 各暗号化に使用される一意の値)、およびカウンター(異なる出力ブロックの生成を支援するもの)です。 これらの値を使用して内部状態を初期化し、それを繰り返し混合することで、キーストリームと呼ばれる安全な疑似乱数バイトのストリームを生成します。

その混合プロセスは、加算、XOR、ビット回転という三つの単純な操作に依存しており、データを徹底的にスクランブルするために20ラウンドにわたって適用されます。 得られたキーストリームをプレーンテキストと結合して、暗号化済みデータである暗号文を生成します。

なぜChaCha20が重要なのか

ChaCha20は、現代のセキュリティにおける実用的な課題を解決します。それは、多くのデバイスにおいて効率的かつ信頼性の高い強力な暗号化をどのように実現するかという課題です。 ソフトウェアでの処理が非常に高速で、スマートフォン、小型デバイス、古いCPUに適しており、コンピューターが得意とする単純な操作(加算、XOR、回転)に基づいています。

これらの機能により、TLS、VPN(新しいウィンドウ)、SSH、メッセージングアプリなどのシステムにおいて魅力的なものとなっています。 例えば、ChaCha20はWireGuard®(新しいウィンドウ) VPNプロトコル(新しいウィンドウ)で使用されており、専用のAESハードウェアを持たないデバイスでも、優れたパフォーマンスで高速かつ安全な暗号化を提供します。

ChaCha20対AES

ChaCha20とAESの比較は以下の通りです:

ChaCha20対AES

項目

ChaCha20

AES

暗号の種類

ストリーム暗号

ブロック暗号

基本操作

32ビットワードに対する加算/XOR/回転

128ビットブロックに対する置換・換字

標準の鍵サイズ

256ビット

128、192、256ビット

専用ハードウェアのないCPUでのパフォーマンス

通常は非常に高速

多くの場合、ChaCha20よりも低速

ハードウェアアクセラレーションを搭載したCPUでのパフォーマンス

通常、AES-NI / ARM暗号拡張機能を備えたAESに劣る

多くの場合、非常に高速

代表的な認証モード

ChaCha20-Poly1305

AES-GCM

主なユースケース

モバイル/埋め込みのTLS、ソフトウェアのみの暗号、WireGuard®

TLS、ディスク暗号化、エンタープライズシステム、ハードウェア支援型暗号化

最適な用途

移植性、一貫したソフトウェア速度、より安全なソフトウェア実装

最新のハードウェアにおける最高速度、幅広い準拠/サポート

AES暗号化は長年確立された標準であり、AESハードウェアサポートが組み込まれたプロセッサでは非常に高速です。 そのため、多くのデスクトップ、サーバー、および新しいモバイルチップで特に優れたパフォーマンスを発揮します。 しかし、AESハードウェアサポートがない場合、ソフトウェアのみのAESは低速になり、安全に実装することが難しくなる場合があります。 対照的に、ChaCha20は、ほとんどすべてのプロセッサで効率的に動作する加算、XOR、回転などの単純な操作を使用するため、通常のソフトウェアにおいて非常に高速に動作するように設計されています。

アプリケーションがAESとChaCha20の両方を提供している場合、ほとんどの最新のアプリはお客様のデバイスとプロセッサに基づいて自動的に最適なオプションを選択するため、通常はお客様が手動で選択する必要はありません。 一般に、AESはAESサポートが組み込まれた新しいデバイスで最高のパフォーマンスを発揮しますが、一部のスマートフォン、低電力ハードウェア、古いCPUなど、暗号化が主にソフトウェアで処理されるデバイスでは、ChaCha20がより有力な選択肢となります。

ChaCha20は安全ですか?

ChaCha20は、正しく実装され、暗号化ごと一意のナンスとともに使用される場合、現代の基準で安全であるとみなされます。

強力な暗号化

ChaCha20は、加算・回転・XOR操作を20ラウンド使用し、既知の実用的な攻撃に対して耐性があるとされています。

優れたソフトウェアセキュリティ

そのシンプルな設計により、ソフトウェアにおいて効率的であり、特定のAES実装で見られる一部のサイドチャネルリスクを軽減できます。

広くデプロイされている

ChaCha20は、主要なブラウザでサポートされており、最新のHTTPS/TLS接続、SSH、およびWireGuard®で使用されています。

通常、Poly1305とペアで使用される

多くの場合、機密性とメッセージの完全性の両方を保護する ChaCha20-Poly1305 として使用されます。 ChaCha20-Poly1305は、TLS 1.3で使用される主要な対称暗号化オプションの一つです。

Proton VPNとChaCha20

Proton VPNのWireGuard®プロトコル(新しいウィンドウ)により、ChaCha20-Poly1305はVPNトンネルを保護し、外出先でプライベートに閲覧、コンテンツのストリーミング、公衆Wi-Fiを使用する際にも、速度を損なうことなくお客様のインターネットトラフィックのプライベート性を維持するのに役立ちます。

暗号化について詳しく知る