暗号化におけるアルゴリズムとは
暗号アルゴリズムとは、暗号化処理の手順や規則のことです。たとえば「ABC」を暗号化して「BCD」にする場合、「アルファベット順に1つ後ろにずらす」がアルゴリズムといえます。
アルゴリズムは暗号化の強度を左右します。上記の例のような単純なアルゴリズムでは、第三者にも簡単に復号されるでしょう。通常は、専用の鍵がなければ復号できない高度なアルゴリズムで暗号化を施します。
そして、暗号アルゴリズムは鍵をやり取りする方式によって公開鍵暗号方式と共通鍵暗号方式の2種類に大別されます。それぞれ次の項で見ていきましょう。
暗号アルゴリズムの種類
公開鍵暗号方式と共通鍵暗号方式の概要と、代表的なアルゴリズムを紹介します。
1.公開鍵暗号方式
暗号化と復号に使う鍵が別々の方式です。暗号化にはデータ受信者が一般公開した公開鍵、復号にはデータ受信者だけが持つ秘密鍵が使われます。そのため、非対称鍵(Asymmetric Key)方式とも呼ばれます。
公開鍵暗号方式の特徴は安全性の高さです。データを復号するのに欠かせない秘密鍵を送受信する必要がなく、第三者に盗まれる可能性が低いためです。公開鍵は第三者でも入手可能ですが、暗号化にしか使えないため問題ありません。
この安全性の高さから、メッセージのやり取りだけでなく電子署名などにも使われています。ただし、共通鍵暗号方式と比べて処理のコストは高くなります。
RSA
RSAは公開鍵暗号方式の中ではもっとも広く使われているアルゴリズムです。「Rivest」 「Shamir」「Adleman」の3人によって開発されたことから、RSAという名前になりました。暗号化と同時に電子署名を行えるのが特徴です。
RSAは大きな素数による素因数分解が困難であることを安全性の根拠としています。第三者が秘密鍵を得るには公開鍵から得られる数値を素因数分解しなければなりませんが、それを現実的にほぼ不可能にしてあります。
コンピュータで計算を続ければいつかは算出できますが、そのころには情報の価値が失われているでしょう。
ElGamal
ElGamal暗号はエジプト人のElGamal氏が考案した暗号アルゴリズムです。ElGamal氏は同じ仕組みを用いた電子署名方法も発表しており、それはElGamal署名と呼ばれています。
ただし、RSAとは異なり、ElGamal暗号とElGamal署名で行われる計算内容は同一ではありません。
ElGamal暗号は離散対数問題の難しさを根拠としています。離散対数問題とは、以下の条件のとき、q・g・mからxを算出することです。
- q
- 素数
- g
- q以下の自然数
- x
- q以下の自然数
- m
- gのx乗をqで割った余り
q・g・mを公開鍵、算出困難なxを秘密鍵として暗号化・復号を行います。
2.共通鍵暗号方式
共通鍵暗号方式とは、暗号鍵と復号鍵が同一である暗号アルゴリズムで、公開鍵暗号方式と比べ、処理速度に優れているのが特徴です。
ただし、安全性は公開鍵暗号方式より劣ります。なぜなら、暗号化に使った鍵が復号時にも必要な以上、データ送信者はデータ受信者に鍵を送信しなければならないからです。その途中で第三者に鍵を奪われないように工夫しなければなりません。
また、鍵の管理が大変なのも難点です。同じ鍵を利用すると、正規の受信者以外が復号できてしまうためです。たとえば、AさんがB・Cさん相手に同じ鍵を使うと、CさんはAさんがBさん宛に送信したデータを不正に復号できます。
したがって、データをやり取りする相手ごとに異なる鍵を用意しなければなりません。
RC4
RC4は「Rivest’s Cipher 4」の略です。Rivest氏が考案した暗号アルゴリズムであるためこのように呼ばれています。RC4はSSL通信や無線LANの規格などに使われてきました。
RC4の特徴はストリーム暗号であること。ストリーム暗号とは、データを1bitずつ暗号化していく方法です。それに対し、一定量のデータをまとめて暗号化する方法はブロック暗号といいます。
RC4では1bitごとに暗号鍵に基づく疑似乱数を発生させて平文との排他的論理和を計算し、その結果を暗号文とします。排他的論理和はコンピュータにおける演算の一種です。復号時には、暗号化の際と同じ疑似乱数を使って再び排他的論理和を計算すれば平文が得られます。
DES
DESは「Data Encryption Standard」の略で、日本語に訳すと「データ暗号化標準」となります。1977年にアメリカ連邦政府標準の暗号方式として採用され、広く使われてきました。鍵長56bitのブロック暗号です。
アメリカ政府に採用された時には安全性の高いアルゴリズムでした。しかし、現在では鍵長56bitは短すぎるため、簡単に破られてしまいます。その後、DESの鍵を長くする方法として2DESや3DESが登場しました。
しかし、1999年にはAESがアメリカ政府に採用されます。その後、徐々にAESがDESの代わりに使われるようになり、現在ではDESはあまり使われていません。
AES
AESは「Advanced Encryption Standard」の略で、日本語に訳すと「高度な暗号化標準」となります。その名のとおり、DESよりも高度なものとして登場しました。現在ではもっとも信頼性の高い暗号アルゴリズムとして、無線LAN規格やファイル暗号化に使われています。
鍵長は128・192・256bitから選択可能なブロック暗号です。データの入替や排他的論理和の計算、行列変換などの処理を組み合わせてデータを暗号化します。
暗号アルゴリズムの暗号強度
暗号アルゴリズムによって暗号化の強度は異なります。たとえば長い鍵を用いたアルゴリズムの方が強度が高くなります。暗号化を施す際にはできるだけ強度の高い暗号アルゴリズムを使うのが理想的です。
たとえば、自社のWebサイトでSSL/TLS通信を導入する場合を考えてみましょう。
SL/TLS通信を実現するにはさまざまな暗号技術・アルゴリズムが使われます。用いる暗号化アルゴリズムの組み合せは、クライアントサイドで選ぶことができます。適切な選択によって自社の望む暗号強度を達成できるでしょう。
ただし、サーバーが対応可能なものに限られるので確認の必要があります。
適切なアルゴリズムで暗号化を実施しよう!
暗号アルゴリズムとは暗号化の手順のことです。代表的なアルゴリズムは以下のとおりです。
【公開鍵暗号方式】
- RSA
- 素因数分解の困難さを利用
- ElGamal
- 離散対数問題を利用
【共通鍵暗号方式】
- RC4
- 疑似乱数を活用して排他的論理和を計算
- DES
- 鍵長の短いブロック暗号
- AES
- DESの後継的存在
以上を参考にして、暗号アルゴリズムへの理解を深めましょう。