通信を行う両者の間で鍵をどう扱うかによって、暗号化と復号化に同じ鍵を用いる共通鍵方式と異なる鍵を用いる公開鍵の2通りの方式が存在します。
- 共通鍵方式 -
暗号化と復号化に同じ鍵を用います。鍵は通信を行う両者のみが知ることになるので、秘密鍵方式とも呼ばれます。
おおよそ以下のような手順で、暗号化~復号化を行います。
(1) |
送信者と受信者で鍵を決める |
(2) |
送信者が鍵を使って平文を暗号化する |
(3) |
暗号化したデータを受信者へ送信する |
(4) |
受信者は鍵を使って暗号データを復号化する |
非常にシンプルな方法ですが、それ故に送信者~受信者間での鍵の授受が大きな問題となります。まだ鍵が定まっていない段階では平文を使うことになるため、鍵自体は平文で送受信せざるを得なくなります。
- 公開鍵方式 -
暗号化と復号化に異なる鍵を用います。暗号化に用いる鍵は公開鍵と呼ばれ、これが受信側へ送られます。復号化の鍵は受信側しか知り得ない秘密鍵となっています。双方が異なる鍵を用いることから、非対称方式とも呼ばれます。
おおよそ以下のような手順で、暗号化~復号化を行います。
(1) |
受信者が送信者に公開鍵を送信する |
(2) |
送信者は鍵を使って平文を暗号化する |
(3) |
暗号化したデータを受信者へ送信する |
(4) |
受信者は秘密鍵を使って暗号データを復号化する |
公開鍵方式で送信者に渡される暗号化のための鍵は、暗号化だけに使えます。この鍵では復号化はできません。復号化するには、秘密鍵を使うしかありません。仮に暗号化されたデータを盗まれても、公開鍵では平文に戻せないのです。これが公開鍵方式のメリットです。
このように、公開鍵方式は共通鍵方式に比べて安全ですが、その半面データの暗号化と複合化に複雑なロジックを用いるため、処理に時間がかかるというデメリットも持っています。
- ハイブリッド(混合)方式 -
共通鍵と公開鍵双方のメリットを活かし、デメリットを抑えるため、一般にはハイブリッド方式がよく用いられます。
データ自体は共通鍵方式でやり取りをし、共通鍵だけを公開鍵方式で送信するという方法です。鍵を公開鍵方式で送信すれば、共通鍵を第三者に盗み見される危険性がなくなります。鍵さえ隠蔽できれば、量の多い本文は処理速度の速い共通鍵で暗号化~復号化しても安全です。
ハッシュ方式
暗号化するほど重要ではなくても、内容の正当性を保証しておきたい場合があります。ネットでは、横取りした情報の中身を書き換え、正しい受信者に送信することが可能です。これを「データの改ざん」と呼びます。
データが送達途中で改ざんされたかどうかは、ハッシュ方式と呼ばれる仕組みでチェックできます。
ハッシュ方式ではデータそのものは平文で流れるため、「情報を隠蔽」する機能はありません。しかし、その分処理が非常に高速です。従って、データの改ざんや破損の防止を重視する通信の場合に用いられます。
ハッシュ関数と呼ばれる関数で、可変長データである平文から固定長の値――ハッシュ値(メッセージ・ダイジェスト)を生成します。ハッシュ値から元の可変長データに戻すこと(逆変換)はできません。そのため、送信前のハッシュ値と受信後のハッシュ値とを比較することで、通信途中でのデータ改ざんの有無がわかります。
実際には、以下のような手順でデータ改ざんの有無を調べます。
(1) |
送信者が平文からハッシュ値を生成する |
(2) |
送信者がハッシュ値を秘密鍵で暗号化する |
(3) |
送信者が受信者に公開鍵を送信する |
(4) |
受信者が公開鍵を受け取る |
(5) |
送信者が平文と共に暗号化したハッシュ値を送信する |
(6) |
受信者が公開鍵を使ってハッシュ値を複号化する |
(7) |
受信者が受け取った平文からハッシュ値を生成する |
(8) |
生成したハッシュ値と複合化したハッシュ値を比較する |
(4)で受け取った(暗号化された)ハッシュ値と、(7)で受信者が生成したハッシュ値とを比較し、同じであればデータは改ざんされていないことが保証されます。
変換が「平文→ハッシュ値」という一方向だけしかできないので、この方式は「片方向方式」とも呼ばれます。 |
|
|
|