暗号化のアルゴリズムとは?種類と特徴・ハッシュ化との違いを解説

暗号化

暗号化ソフトを選ぶ際、どの暗号アルゴリズムに対応しているかを確認する必要があります。暗号アルゴリズムの種類と特徴を把握しておかなければ、暗号化ソフトを選ぶ際に判断できず困ってしまうでしょう。この記事では、暗号アルゴリズムの種類と特徴、ハッシュ化との違いについて解説します。

暗号化を行う「暗号アルゴリズム」とは

暗号アルゴリズムとは、暗号化を行う手順・ルールのことです。アルゴリズムの種類によって、暗号化の強度は変化します。誰にでも憶測可能なアルゴリズムでは、解読される可能性が高くなるため避けなくてはなりません。

暗号化したデータを元に戻すことを復号化と言います。現在多く利用されている暗号アルゴリズムは、一般的に復号化する「鍵」がないと解読できない複雑なアルゴリズムを実装しています。

現在、暗号アルゴリズムは復号化する鍵をやり取りする方法によって2種類の方式に分類されています。暗号アルゴリズムの方式については、以降で詳しく見ていきます。

暗号化するアルゴリズムの種類3つ

暗号アルゴリズムの2つの主な方式として、公開鍵暗号方式と共通鍵暗号方式、そして両方の方式を組み合わせたハイブリッド暗号方式の特徴を解説します。

1、共通鍵暗号方式

共通鍵暗号方式とは、暗号化と復号化に使用する鍵が共通で、データをやり取りする相手とだけ、鍵を共有する方式です。鍵を公開する必要がないため「秘密鍵暗号方式」とも呼ばれます。

共通鍵暗号方式は、公開鍵暗号方式に比べて処理速度が速い点がメリットです。一方、データをやり取りする相手ごとに共通鍵を作成して送信する手間や、送信時に共通鍵を盗まれるリスクがある点はデメリットです。

共通鍵暗号方式は、ストリーム暗号化方式とブロック暗号化方式に分かれます。ストリーム暗号化方式は、乱数を利用し、データを1bitや1byteなど細かい単位で暗号化する方式です。一方ブロック暗号化方式は、128・256bitなど、ある程度まとまった単位のデータに対して暗号化を行います。

ストリーム暗号化方式の代表的な暗号化アルゴリズムはRC4(Rivest Cipher 4)。ブロック暗号化方式の代表例は、DES(Data Encryption Standard)・AES(Advanced Encryption Standard)です。

2、公開鍵暗号方式

公開鍵暗号方式は、暗号化と復号化に使用する鍵を別個で作成し、暗号用の鍵だけを一般に公開する方式です。公開する鍵は暗号化のみ可能なので、暗号化したデータを復号化されることはありません。代表的な暗号アルゴリズムは「RSA」です。

データの受信者は、あらかじめ復号化する鍵を持っており、受信者ごとに鍵を生成・送信する必要はありません。このように、公開鍵暗号方式は鍵生成の手間や送信時のリスクのない方式ですが、処理速度が遅いというデメリットはあります。

3、ハイブリッド暗号方式

ハイブリッド暗号方式は、共通鍵暗号方式と公開鍵暗号方式のデメリットを補完するために考えられた方式です。ハイブリッド暗号方式は以下のような流れで、共通鍵暗号方式の処理速度と公開鍵暗号方式の安全性を両立しています。

  1. 送信者:共通鍵を生成
  2. 受信者:公開鍵と秘密鍵を生成して送信者に公開鍵を送信
  3. 送信者:送信するデータと共通鍵の2つを公開鍵で暗号化
  4. 送信者:暗号化したデータと共通鍵を送信
  5. 受信者:秘密鍵で共通鍵を、共通鍵でファイルを復号

上記の中でやり取りするのは公開鍵ですが、共通鍵を復号化するには秘密鍵が必要です。公開鍵を盗まれても復号化には使えないので、高い安全性が保たれます。

ハイブリッド暗号方式の代表的な例はHTTPS通信です。

暗号アルゴリズムの種類別一覧

暗号アルゴリズムは、非常に多く開発されています。暗号アルゴリズムの種類別に一覧化しました。

暗号アルゴリズムの種類 暗号アルゴリズム
共通鍵暗号
ストリーム暗号化方式
A5
CRYPT(1)
GCC
Chaos
Cryptosystem
LFSR暗号
RC4
SEAL
共通鍵暗号
ブロック暗号化方式
3-Way
AES (Advanced Encryption Standard)
Blowfish
CAST128
CRAB
DES(Data Encryption Standard)
Triple DES
FEAL-N
FEAL-NX
GOST
IDEA
RC2
RC5
MULTI2
MYSTY
SAFER
SKIPJACK
公開鍵暗号 El Gamal
ECC (Elliptic Curve Cipher)
Diffie-Hellman
Merkle-Hellman napsack
Rabin
RSA

この中でも代表的な暗号アルゴリズムをピックアップして解説します。

共通鍵暗号方式の代表的な暗号アルゴリズム3つ

共通鍵暗号方式の代表的な暗号アルゴリズムは、DES・AES・RC4ですが、現在主流となっているのはAESです。他の2種類が主流ではなくなった理由もあわせて確認しておきましょう。

1、DES(ブロック暗号化方式)

DESは56bitの鍵を使った方式で、暗号アルゴリズムの中でもとくに有名です。現在では、56bit程度のサイズは簡単に解読されるリスクがあるため、利用は推奨されていません。

2、AES(ブロック暗号化方式)

AESは、DESよりも長いサイズの128・192・256bitの鍵を利用した暗号アルゴリズムです。SSL通信にも使われ、現在でも高い安全性を得られるため、共通鍵暗号方式の代表的な暗号アルゴリズムとなっています。

3、RC4(ストリーム暗号化方式)

40~256bitという可変長サイズの鍵を使った暗号アルゴリズムです。高速な処理が可能ですが、解読方法がインターネット上で公開されてしまったため、現在では使用されていません。

公開鍵暗号方式の代表的な2つの暗号アルゴリズム

公開鍵暗号方式の代表的な暗号アルゴリズムは、RSAとECCの2種類です。どちらも解答が困難な数学上の問題を安全性の根拠としていることが大きな特徴です。

1、RSA

RSAは、公開鍵暗号方式の中でも代表的な暗号アルゴリズムです。RSAは、素数の積を元に公開鍵を作成し、2つの素数を元に秘密鍵を作成します。素数の積を計算するのは簡単だが、2つの素数を素因数分解が導くのは難しい、という特性を利用しており、秘密鍵を導き出すことを困難にしています。

処理コストが非常にかかるため、大きなファイルの暗号化には向きませんが、電子署名など広く利用されているアルゴリズムです。

2、ECC(楕円曲線暗号)

離散対数問題と素因数分解という、数学上の難解な問題を利用して安全性を確保した公開鍵暗号方式の暗号アルゴリズムです。

RSAよりも鍵のサイズは小さくて済み、処理コストもRSAに比べて少ないことから、ICカードなど処理能力が限られた機器で実用化されています。近年ではビットコインの暗号化方式に用いられていることで有名です。

暗号化とハッシュ化との違い

ハッシュ化は、主にパスワードなど、元の状態で見られると問題のあるデータを、人間が見て意味のないデータとして扱いたい場合に利用する技術です。

暗号化とハッシュ化は、どちらも特定のアルゴリズムを使用してデータを変換するため、混同されや粋傾向があります。ハッシュ化は、復号化を考えない点で暗号化とは異なります。

暗号化の特徴を知り適切な暗号アルゴリズムを選ぼう

暗号化に用いる暗号アルゴリズムは、暗号化・復号化する鍵の扱いによって、共通鍵暗号方式と公開鍵暗号方式の2種類に大別できます。両方式の長所を活かした、ハイブリッド暗号方式もあります。

暗号化の方式や暗号アルゴリズムにはそれぞれ特徴があるため、どういう場面にはどの暗号化方式を採用するかを確認しましょう。暗号化ソフトを選ぶ際は、暗号アルゴリズムも確認して、利用目的に向いているかどうかを検討することが重要です。

タイトルとURLをコピーしました