暗号化アルゴリズム一覧は?代表的な種類と特徴も(AES・RSA・DES・ECC・比較など)
暗号化は、第三者に見られては困る情報を読めない形へ変換し、正しい鍵を持つ人だけが元に戻せるようにする技術です。
Webサイトの通信、オンライン決済、クラウド保存、社内ファイルの共有など、日常的なサービスの多くで利用されています。
一方で、AES、RSA、DES、ECCといった名称を見ても、どれを選ぶべきか迷う方は少なくありません。
この記事では代表的な暗号化アルゴリズムの一覧と違いを整理し、用途、鍵の長さ、安全性、導入時の注意点まで分かりやすく解説します。
暗号化アルゴリズムの種類と選び方

それではまず、暗号化アルゴリズムの全体像と選び方について解説していきます。
共通鍵暗号方式と公開鍵暗号方式
暗号化アルゴリズムは大きく、共通鍵暗号方式と公開鍵暗号方式に分けられます。
共通鍵暗号方式は、暗号化と復号に同じ鍵を使う方式です。
処理が速く、大量のデータを扱いやすいため、ファイル暗号化、ストレージ暗号化、VPN通信、データベースの保護などで広く使われています。
代表例はAES、DES、3DES、ChaCha20です。
ただし、送信者と受信者が同じ鍵を安全に共有しなければならず、鍵配送が課題になります。
公開鍵暗号方式では、公開してよい公開鍵と、本人だけが保管する秘密鍵を組み合わせます。
公開鍵で暗号化したデータは、対応する秘密鍵でのみ復号できます。
RSAやECCが代表的であり、事前に秘密の鍵を共有できない相手との安全な通信に役立ちます。
| 方式 | 主な特徴 | 代表的なアルゴリズム | 向く用途 |
|---|---|---|---|
| 共通鍵暗号 | 処理が高速で大量データに強い | AES、ChaCha20、3DES | ファイル、通信本文、保存データ |
| 公開鍵暗号 | 鍵配送問題を軽減しやすい | RSA、ECC | 鍵交換、電子署名、認証 |
| ハイブリッド暗号 | 両方式の利点を組み合わせる | TLSでのAESとRSAまたはECC | Web通信、メール、業務システム |
| ハッシュ関数 | 元のデータへ復号しない | SHA-256、SHA-3 | パスワード管理、改ざん検知 |
ハイブリッド暗号による実用的な構成
実際のインターネット通信では、一つの暗号化アルゴリズムだけで完結する場面は多くありません。
公開鍵暗号で一時的な共通鍵を安全にやり取りし、その後の大量データは高速な共通鍵暗号で保護するハイブリッド暗号が一般的です。
HTTPSで利用されるTLSは、この考え方を活用した代表例です。
ブラウザとWebサーバーは認証と鍵交換を行い、その後のページ内容、ログイン情報、決済情報などを共通鍵暗号で暗号化します。
公開鍵暗号だけで通信本文をすべて暗号化すると、計算負荷が高くなりやすいためです。
設計では、暗号方式そのものだけではなく、鍵交換方式、認証局の証明書、乱数生成、鍵の保管方法まで含めて考える必要があります。
暗号化方式を選ぶときは、名称の知名度だけで決めないことが重要です。
守りたいデータ量、通信相手、必要な処理速度、法令や業界基準、将来の運用負担を合わせて判断しましょう。
暗号化とハッシュ化の違い
暗号化と混同されやすい仕組みに、ハッシュ化があります。
暗号化は正しい鍵があれば復号できる可逆的な処理です。
これに対してハッシュ化は、元の値から一定の長さの値を計算する一方向の処理で、原則として元データに戻すことを目的にしません。
パスワードを保存するときは、通常、元のパスワードを暗号化して保存するのではなく、パスワードハッシュを保存します。
ログイン時に入力された文字列を同じ方法でハッシュ化し、保存済みの値と照合する仕組みです。
パスワード保管に単純なSHA-256だけを使う方法は望ましくありません。
総当たり攻撃への耐性を高めるため、saltを付与し、bcrypt、scrypt、Argon2などのパスワード専用関数を採用することが大切です。
AESによる共通鍵暗号の基礎
続いては、現在もっとも広く利用されるAESを確認していきます。
AESの仕組みと鍵長
AESはAdvanced Encryption Standardの略で、米国の標準暗号として採用された共通鍵暗号アルゴリズムです。
ブロック暗号に分類され、128ビット単位でデータを処理します。
鍵長はAES-128、AES-192、AES-256の3種類があり、数字は鍵のビット数を示します。
一般的なWebサービス、PC、スマートフォン、クラウドサービスでは、AES-128またはAES-256が使われる場面が多いでしょう。
鍵長が長いほど理論上の総当たり攻撃には強くなりますが、実務では鍵の管理不備や実装ミスの方が重大なリスクになりやすい点も見逃せません。
AES-128は128ビットの鍵を使う方式です。
AES-256は256ビットの鍵を使う方式で、より長い鍵空間を持ちます。
ただし、AES-256を選んでも鍵を平文で保存すれば安全性は確保できません。
暗号利用モードと初期化ベクトル
AESを実装するときは、AESという名称だけでなく、暗号利用モードを確認する必要があります。
代表的なモードにはCBC、CTR、GCM、CCMなどがあります。
同じAESでもモード選択が不適切であれば、データのパターンが漏れたり、改ざんを検知できなかったりする可能性があります。
現在は、暗号化と改ざん検知をまとめて扱えるAES-GCMが選ばれることが多い傾向です。
GCMではnonceや初期化ベクトルの再利用が危険になるため、実装ごとに重複しない値を安全に生成しなければなりません。
ECBモードは同じ平文ブロックが同じ暗号文になりやすく、画像や定型データの構造を推測されるおそれがあります。
特別な理由がなければ、ECBモードを新規設計に採用しない方が安心です。
AESが適する利用シーン
AESは速度と安全性のバランスに優れ、幅広い環境で採用されています。
代表的な利用シーンは、パソコンやスマートフォンのディスク暗号化、クラウド上の保存データ、バックアップファイル、データベースの機微情報、VPNの通信内容です。
無線LANの保護や、Web通信のセッションデータにも関わっています。
ハードウェア側でAES命令を備えるCPUも多く、大量データを高速に処理したい場面では有力な選択肢になります。
一方、相手に共通鍵をどう渡すかという問題は残るため、社外との通信ではRSAやECCによる鍵交換と組み合わせる構成が基本です。
RSAとECCによる公開鍵暗号の特徴
続いては、RSAとECCの特徴および使い分けを確認していきます。
RSAの安全性と利用目的
RSAは、素数の積を使った数学的な問題の難しさを安全性の基盤とする公開鍵暗号方式です。
公開鍵を配布し、秘密鍵を厳格に守ることで、暗号化、復号、電子署名、署名検証に利用できます。
長年にわたり広く実装されてきた実績があり、企業システムや電子証明書、メール暗号化などでも見かける方式です。
ただし、RSAは共通鍵暗号より計算量が多く、長いデータの暗号化には向きません。
実際にはAES用のセッション鍵など、短い鍵情報を保護する目的で使われることが中心です。
新規導入では鍵長にも注意が必要であり、現在はRSA-2048以上を最低限の目安として検討することが一般的です。
| 比較項目 | RSA | ECC |
|---|---|---|
| 安全性の根拠 | 大きな整数の素因数分解 | 楕円曲線上の離散対数問題 |
| 鍵長の傾向 | 高い安全性には比較的長い鍵が必要 | 短い鍵で同程度の安全性を得やすい |
| 処理負荷 | 鍵長の増加で負荷が大きくなりやすい | 条件によって効率的に運用しやすい |
| 主な用途 | 証明書、署名、既存システムとの連携 | モバイル、IoT、TLS、署名 |
| 注意点 | 古いパディング方式を避ける | 曲線と実装ライブラリの選定が重要 |
ECCの鍵長と処理効率
ECCはElliptic Curve Cryptographyの略で、楕円曲線暗号と呼ばれます。
RSAと同じ公開鍵暗号の仲間ですが、比較的短い鍵長で高い安全性を得やすい点が特徴です。
通信量や計算資源を抑えたいスマートフォン、IoT機器、組み込み機器では、ECCの利点が活かされやすいでしょう。
たとえばECDHは鍵共有、ECDSAは電子署名に利用されます。
短い鍵で済むことは、単なる保存容量の削減だけを意味しません。
証明書や署名データの送受信量を減らし、接続開始時の負荷を抑える効果も期待できます。
ただし、ECCは使用する曲線、乱数、ライブラリ実装の品質に強く影響されます。
独自の曲線や独自仕様を安易に採用せず、信頼できる標準と実績ある暗号ライブラリを使う姿勢が重要です。
RSAとECCは、どちらが常に優れているという関係ではありません。
既存環境との互換性、証明書基盤、接続先の対応状況、性能要件を確認したうえで、採用方式を決めることが現実的です。
電子署名と暗号化の役割
公開鍵暗号は、秘密情報を隠す暗号化だけでなく、電子署名にも使われます。
電子署名では、送信者が秘密鍵で署名を作成し、受信者は公開鍵で署名を検証します。
これにより、誰が作成したデータか、途中で書き換えられていないかを確認できます。
暗号化は機密性、電子署名は真正性と完全性に主な役割があります。
機密性とは内容を第三者に読まれない性質です。
完全性は内容が改ざんされていない性質であり、真正性は正しい作成者や送信者であることを確認できる性質です。
契約書、ソフトウェア更新、電子請求書、API通信などでは、暗号化と電子署名の両方が必要になる場合があります。
DESと古い暗号方式の注意点
続いては、DESや3DESを含む古い暗号方式の注意点を確認していきます。
DESが推奨されない理由
DESはData Encryption Standardの略で、かつて標準的に利用された共通鍵暗号方式です。
しかしDESの有効鍵長は56ビットであり、現在の計算能力では総当たり攻撃に対して十分な安全性を期待できません。
このため、DESは新規システムで採用すべきではない暗号方式です。
古い業務システムや機器との連携でDESが残っている場合は、即時の停止が難しいこともあります。
その場合でも、ネットワーク分離、接続元制限、データの追加保護、移行計画の策定など、段階的なリスク低減が求められます。
古い暗号方式を残す判断には、互換性だけでなく、漏えい時の影響と代替方法を具体的に検討する必要があります。
3DESと移行計画
3DESはTriple DESとも呼ばれ、DESを複数回適用して強度を高めた方式です。
DESより安全性は改善されましたが、処理性能やブロックサイズの制約があり、現在では長期的な採用に向きません。
特に大量の通信を扱う環境では、64ビットのブロックサイズに起因するリスクを考慮する必要があります。
既存の3DES利用箇所を洗い出す際は、アプリケーションのソースコードだけでなく、VPN装置、決済端末、メールサーバー、外部連携API、バックアップ製品の設定まで確認しましょう。
移行先は一般にAESが候補になりますが、単純に方式名だけを置き換えるのでは不十分です。
暗号利用モード、鍵長、鍵ローテーション、互換テスト、旧データの再暗号化も計画に含めることが大切です。
移行の基本的な流れは、利用箇所の棚卸し、影響範囲の確認、新方式での検証、段階的な切り替え、旧鍵の廃止です。
本番切り替え後も、旧方式で復号できるデータが残っていないかを確認しましょう。
危険な実装パターン
暗号化アルゴリズムが強力でも、実装に問題があれば安全性は大きく下がります。
代表的な危険なパターンには、鍵をソースコードに直接書くこと、初期化ベクトルを固定すること、nonceを再利用すること、独自暗号を作ることがあります。
パスワードから鍵を生成する場合に、単純な文字列変換だけで済ませる方法も避けるべきです。
鍵導出関数を使い、十分なsaltと反復処理を設定する必要があります。
また、暗号文の改ざんを検知しない設計では、攻撃者がデータを加工できる余地が残ります。
暗号化と認証を一体で扱えるAEAD方式を選ぶことは、実装上の事故を減らす有効な考え方です。
ライブラリの暗号APIを利用する際は、古いサンプルコードをそのまま流用せず、公式ドキュメントと現在の推奨設定を確認してください。
暗号化アルゴリズム比較のポイント
続いては、AES、RSA、ECC、DESを比較する際のポイントを確認していきます。
安全性と鍵長の比較
暗号方式を比較するとき、鍵長だけを見て安全性を判断することはできません。
RSAの2048ビットとAESの256ビットは、同じ単位を使っていても、数学的な構造も攻撃方法も異なります。
同じ安全性水準を保つために必要な鍵長は、方式ごとに変わります。
AESは128ビットでも非常に大きな鍵空間を持ち、一般用途で実用的な安全性を確保しやすい方式です。
RSAではより長い鍵が必要になり、ECCはRSAより短い鍵で近い安全性水準を目指しやすい特徴があります。
将来の量子計算の進展も視野に入れる場合は、暗号アジリティを意識するとよいでしょう。
暗号アジリティとは、脆弱性の発見や標準変更が起きた際に、暗号方式や鍵長を無理なく切り替えられる設計思想です。
速度と通信量の比較
速度を重視するなら、共通鍵暗号のAESやChaCha20が有利です。
とくに大容量ファイル、動画、バックアップ、継続的なネットワーク通信では、公開鍵暗号のみでデータを保護する設計は効率的ではありません。
RSAは鍵長が長くなるほど計算負荷や通信量が増えやすくなります。
ECCは鍵や署名をコンパクトにしやすく、リソースが限られる環境で検討されることがあります。
ただし、実際の性能はサーバー性能、クライアント端末、暗号ライブラリ、ハードウェアアクセラレーション、接続数などにも左右されます。
ベンチマーク結果だけで判断せず、想定トラフィックに近い条件で負荷試験を行うことが重要です。
大量データの保護にはAESなどの共通鍵暗号が適しています。
安全な鍵共有、電子署名、接続先の認証にはRSAまたはECCなどの公開鍵暗号を利用します。
この役割分担が、現代の通信セキュリティの基本です。
用途別の比較一覧
用途から考えると、暗号化アルゴリズムの選択は整理しやすくなります。
以下の表は、代表的な利用目的ごとの考え方をまとめたものです。
| 利用目的 | 主な候補 | 選定時の要点 |
|---|---|---|
| ファイル暗号化 | AES-256、AES-128 | 鍵の保管、復元手順、利用モードを確認 |
| Web通信 | TLS、AES-GCM、ECC、RSA | 証明書、TLS設定、対応ブラウザを確認 |
| 電子署名 | RSA、ECDSA | 署名方式、鍵長、証明書運用を確認 |
| IoT機器 | AES、ECC | メモリ、電力、更新手段、鍵注入方法を確認 |
| パスワード保存 | Argon2、bcrypt、scrypt | 暗号化ではなく専用ハッシュを採用 |
| 旧システム移行 | AES、RSA、ECC | DESや3DESの残存箇所と互換性を調査 |
比較表はあくまで出発点です。
個人情報、決済情報、営業秘密、医療情報など、守る対象の重要度が高いほど、鍵管理や監査ログを含めた運用設計が欠かせません。
鍵管理と安全な運用体制
続いては、暗号化の効果を支える鍵管理と運用体制を確認していきます。
鍵の生成と保管方法
暗号化において、鍵はもっとも重要な保護対象です。
強いAESを採用しても、鍵が漏えいすれば暗号文を復号される可能性があります。
鍵は十分な乱数を使って生成し、予測しやすいパスワード、連番、固定文字列から作らないようにします。
アプリケーションの設定ファイルやソースコード、共有フォルダに秘密鍵を置く運用は危険です。
鍵管理サービス、HSM、アクセス制御された秘密情報管理基盤などを利用し、利用者と利用権限を最小限に絞り込みます。
データと鍵を同じ場所に同じ権限で保管しないことも、基本的な対策の一つです。
鍵ローテーションと失効対応
鍵は一度作成したら永久に使い続けるものではありません。
定期的な鍵ローテーションを行い、利用期間を区切ることで、万が一の漏えい時に影響範囲を抑えやすくなります。
ローテーションの頻度は、データの重要度、利用量、法令、契約条件、システム構成によって決めます。
鍵を更新するときは、新しい鍵で暗号化を始めるだけではなく、既存データをいつ再暗号化するか、旧鍵をいつ無効化するかも決めておく必要があります。
退職者のアカウント、委託先のアクセス権、漏えいが疑われる端末に紐づく鍵については、迅速な無効化手順が必要です。
暗号化の強度は、アルゴリズム単体では決まりません。
鍵の生成、保管、利用権限、更新、廃棄、監査までを一連の運用として整えることで、実効性のあるセキュリティになります。
監査ログとインシデント対応
鍵にアクセスした記録や暗号化処理の失敗を監査ログとして残すことは、異常の早期発見に役立ちます。
誰が、いつ、どの鍵や秘密情報にアクセスしたかを追跡できれば、不正利用の調査を進めやすくなるでしょう。
ログには機密情報そのものや秘密鍵を出力しないよう、マスキングとアクセス制御も必要です。
インシデントが起きた際には、影響を受ける鍵の特定、鍵の失効、再発行、データの再暗号化、関係者への連絡を迅速に進める必要があります。
平時から手順書と連絡体制を準備し、定期的に訓練しておくと、緊急時の判断がしやすくなります。
暗号化アルゴリズム一覧のまとめ
暗号化アルゴリズム一覧では、共通鍵暗号のAES、公開鍵暗号のRSAとECC、旧式となったDESや3DESを中心に整理できます。
AESは大量データを高速に保護する用途に適しており、現在のシステムで中心的な役割を担います。
RSAとECCは鍵交換、認証、電子署名に活用され、AESなどと組み合わせるハイブリッド暗号が実用的です。
DESは鍵長が短く、3DESも長期利用には適さないため、残っている環境では移行計画を進めることが望まれます。
方式選びと同じくらい、鍵管理、利用モード、乱数、アクセス制御、監査が重要です。
新規導入では実績ある標準方式と信頼できるライブラリを選び、独自実装を避けることが安全性向上への近道になります。
守るべき情報の重要度とシステムの運用条件を整理したうえで、AES、RSA、ECCを適切に組み合わせていきましょう。