ASH | サーバ | セキュリティ | Linux | FreeBSD | DB | Web | CGI | Perl | Java | XML | プログラム | ネットワーク | 標準 | Tips集

暗号化と認証について

 このページでは、情報に関するセキュリティ問題の対策として重要な暗号化についてまとめています。

暗号化の目的

 インターネットの脅威には、サービスの停止を狙ったものや、踏み台として利用するものの他に、メッセージや、データなどの情報を狙ったものがあります。 これらの脅威を「情報に関するセキュリティ問題」と呼ぶこともあります。 これは、インターネットでは、いくつものサーバを経由してデータが転送されるため、その途中のサーバやネットワークで、こっそりデータの中身を見ることも、できてしまうために発生します。 また、そのデータの内容を書き換えることもできてしまうため、データの改ざんや、なりすましをすることもできてしまいます。 これを防ぐためには、第三者に見られても内容が分からないようにし、改ざんされたかのチェックをし、また、相手が本当に目的の相手なのかを確かめなければなりません。

 第三者に見られても内容が分からないようにするための方法として、通信データの暗号化が使われます。 この暗号化には、共通鍵暗号方式(暗号化と復号化に共通の鍵を使う方式)と、公開鍵暗号方式(暗号化と復号化に別々の鍵を使う方式)があります。 通信データの書き換えが行われていないか調べるためには、メッセージ認証を使って、通信データは途中で改ざんされていないかを調べる方法があります。メッセージ認証には、ハッシュ関数などを使います。また、デジタル署名を付けることにより、認証する方法もあります。 相手が本当に目的の相手なのかを確かめるためには、相手の認証局の署名付き証明書をもらい、確認する方式があります。つまり、第三者によって保証してもらった証明書をもらうことで、認証を行うわけです。認証局の署名付き証明書とは、本人の公開鍵等の情報を認証局の秘密鍵で暗号化したものを使ったりします。

 情報に関するセキュリティ問題の種類をまとめると、以下のようになります。 これらの対策として、さまざまな暗号化技術が使われています。

暗号化の方式

 暗号化の方式には、以下の種類があります。

共有鍵暗号方式

 情報の暗号化・復号化に単一の鍵(共有鍵)を使用する方式です。 この方法はシンプルですが、公開鍵を渡す方法が、問題となります。 具体的な暗号化の方式としては、DES(Data Encryption Standard)があります。

 共有鍵を使ったデータ送信の流れを以下に示します。
 (1) 送信側と受信側で、あらかじめ共有鍵を決定
 (2) 送信側:平文を共有鍵で暗号化
   平文 -> 共有鍵 -> 暗号文
 (3) 受信側:暗号文を共有鍵で復号
   暗号文 -> 共有鍵 -> 平文

公開鍵暗号方式

 情報の暗号化・復号化に2つの鍵を使用します。片方の鍵を公開鍵といい、もう一つの鍵を秘密鍵といいます。公開鍵によって暗号化されたデータは、秘密鍵によってのみ復号化できるので、公開鍵を公開しても問題がありません。 公開鍵暗号方式は、共通鍵暗号方式に比べて暗号化と複合化の処理に時間がかかります。そのため、共有鍵を公開鍵暗号方式で暗号化して送信し、残りはその共有鍵で暗号化するという手法が一般的に使われています。 具体的な暗号化の方式としては、RSA(Rivest Shamir Adelman)があります。

 公開鍵を使って、特定の人にデータ送信する場合の流れを以下に示します。
 (1) 送信側:送信先(受信側)の公開鍵を取得(公開されていない場合は、依頼が必要)
 (2) 送信側:平文を公開鍵で暗号化
  平文 -> 公開鍵 -> 暗号文
 (3) 受信側:暗号文を秘密鍵で復号
  暗号文 -> 秘密鍵 -> 平文

 公開鍵を使って、改ざんされていないことを確認する場合の流れを以下に示します。
 (1) 送信側:自分の秘密鍵で暗号化
  平文 -> 秘密鍵 -> 暗号文
 (2) 送信側:自分の公開鍵を公開(Webやメールなどを利用)
 (3) 受信側:送信側の公開鍵を取得
 (4) 受信側:暗号文を公開鍵で復号
  暗号文 -> 公開鍵 -> 平文

ハッシュ関数(片方向暗号)方式

 ハッシュ関数は、可変長のデータからハッシュ値と呼ばれる固定長のデータを作成する関数です。一般的にハッシュ関数は、逆変換できないため、片方向暗号とも呼ばれています。チェックサムの強力なものだと考えるとわかりやすいと思います。特徴としては、非常に高速なので、データの改ざんや、データの破損のチェックに使われます。 具体的なハッシュ関数としては、MD5があります。 ハッシュ関数のことをメッセージダイジェスト関数と呼ぶこともあります。このとき作成されたハッシュ値のことをメッセージダイジェイトと呼びます。

 ハッシュ関数を使ってデータを確認する場合の流れを以下に示します。
 (1) 送信側:平文から、ハッシュ関数を使ってハッシュ値を計算
  平文 -> ハッシュ関数 -> ハッシュ値
 (2) 送信側:ハッシュ値を自分の秘密鍵で暗号化
  ハッシュ値 -> 秘密鍵 -> 暗号化したハッシュ値
 (3) 送信側:自分の公開鍵を公開(Webやメールなどを利用)
 (4) 送信側:平文と暗号化したハッシュ値を送信
 (5) 受信側:送信側の公開鍵を取得
 (6) 受信側:ハッシュ値を公開鍵で復号
  暗号化したハッシュ値 -> 公開鍵 -> ハッシュ値
 (7) 受信側:平文から、ハッシュ関数を使ってハッシュ値を計算
  平文 -> ハッシュ関数 -> ハッシュ値
 (8) 受信側:ハッシュ値が一致することを確認

認証局(CA)

 認証局(CA)は、Certification Authorityの略で、証明書を発行する機関のことです。 CAは、階層構造のCA間のチェインを構築することにより信頼性を向上させています。

    +----------------------------------+
    |             Root CA              |
    +----------------------------------+
          ↑↓証明書発行      ↑↓証明書発行
          ↑↓                ↑↓
証明書要求↑↓      証明書要求↑↓
    +--------------+    +--------------+
    |    下位CA    |    |    下位CA    |
    +--------------+    +--------------+
          ↑↓証明書発行
          ↑↓
証明書要求↑↓
    +--------------+
    |    下位CA    |
    +--------------+

認証局の種類

 認証局の種類には、以下の種類があります。

暗号化・認証関係の用語

共有鍵暗号方式
 情報の暗号化・復号化に単一の鍵(共有鍵)を使用する方式

公開鍵暗号方式
 暗号化と復号化に異なる鍵のペアを用いる暗号化方式
 公開鍵と秘密鍵があり、公開鍵は公開可能
 公開鍵によって暗号化されたデータは、秘密鍵によってのみ復号化可能
 秘密鍵によって暗号化されたデータは、公開鍵によってのみ復号化可能

ハッシュ関数(片方向暗号)方式
 暗号化しかできない方式
 非常に高速なので、データの改ざんや、データの破損のチェックに使われる

認証(Authentication)
 本人を確認する(個人や組織の同一性を保証する)方法
 なりすましを防止するための方法
 認証局によって発行された、認証書を使用

認証書(Certificate)
 本人を確認するためのデータ
 公開鍵が本人のものかを認証局のデジタル署名で証明したもの

認証局(Certification Autority)
 証明書を発行する第三者機関

デジタル署名
 自分のデータが改ざんされていないことを証明するための手段
 公開鍵暗号方式を利用

DES(Data Encryption Standard)
 共有鍵暗号化方式の一つ

RSA(Rivest Shamir Adelman)
 公開鍵暗号化方式の一つ
 発明者の頭文字をとって命名

MD5
 ハッシュ関数の一つ

X.509
 証明書のためのITU-Tの標準規格
 デジタルIDで発行する証明書の内容などを持つ

証明書破棄リスト(CRL)
 CRLは、Certificate Revocation Listsの略
 CAから発行された証明書の破棄リスト
 秘密鍵の漏洩や紛失などが発生した場合には、CAは証明書を無効とする必要あり
 CRLには、証明書のシリアルナンバと失効日のリストなどが含まれている

PEM(Privacy Enhanced Mail)
 電子メールの暗号化方式
 暗号化とデジタル署名に対応
 最近では、S/MIMEが一般的

DER(Distinguished Encoding Rules)
 ブラウザに格納されている認証書のエンコード方式

S/MIME(Secure / Multipurpose Internet Mail Extentions)
 電子メールの暗号化方式
 MIMEに暗号化やデジタル署名などを組み込めるように改良

PGP(Pretty Good Privacy)
 ファイルと電子メールの暗号化方式


Copyright (C)1995-2002 ASH multimedia lab.
mail : info@ash.jp