第三部 暗号化

  1. セキュリティ対応(概要)
    セキュリティを考える場合、何を保護するのか(目標)を決めておかないと対策の 強度が決まりません。保護すべき対象としては、サービス機能と機密情報が考えられます。
    以降は機密情報(プライバシー、パスワード…)をいかに保護するかを考えます。
    機密情報に対する不正アクセスには、次のようなものがあります。
    • 盗聴 - サーバーマシンに直接入り込んでパスワードファイルを覗いたり、ま たはネットワーク上のパケットをダンプする手段が考えられます。
    • 改竄 - 上記と同様の手段で情報の中身を書き換えることです。
    • なりすまし - 電子メールの発信者に他人のメールアドレスを設定し、あたかもその 人がメールを出したかのように装うことは容易です。
    以上の不正行為からセキュリティを保護するためには
    • 機密性 - 暗号化により盗聴を防ぐ
    • 完全性 - 電子書名をつけて改竄を発見する
    • 否認防止 - 電子署名を確認することにより発信者の否認を防止します。
    • 認証 - 電子署名(認証書)により発信者(個人、サイト)を認証する
    ことが必要です。

  2. 暗号方式および認証方式
    暗号化および復号化のプロセスは

    平文メッセージ + 暗号化キー暗号化メッセージ
    => 伝送 =>
    暗号化メッセージ + 復号化キー平文メッセージ

    となります。 暗号化キー、復号化キーの管理方式には3つの方式があります。

    • 単一キー方式
      暗号化キーと復号化キーが同一である方式。この方式は暗号メッセージの 送り手と受け手が同じキーを持つ必要があり、キーの伝達方法が問題になる。 また、送り手と受けての組み合わせによりキーの数が膨大になってしまう。 DES(Data Encryption Standard),IDEA(International Data Encryption Algorithm)等
    • 公開キー方式
      暗号化キーと復号化キーが異なる(非対称)方式。公開キー方式は、目的により 暗号化キーあるいは復号化キーのいずれかを公開する。そして非公開のキーを 秘密キーとして自分で管理する。 暗号化キーを公開キーとする場合は、誰でもその公開キーでメッセージを暗号化 できるが、復号化できるのは復号キーを持っている人だけなので、暗号化 メッセージを受け取る場合である。復号化キーを公開する場合は、自分の暗号化 キーで暗号化したメッセージを他人に送って、受信者が公開キーで復号化できる ことにより送信者の認証を行う。一般には暗号化キーを公開し、復号化キーを 保持する。 公開キー方式は復号化に時間がかかる。 RSA,DSS(Digital Signature Standard)等
    • 混合キー方式
      公開キー方式は復号化に時間がかかるため、最初に公開キー方式で、単一キーを 暗号化してやり取りし、以降は単一キー方式で暗号化する方式もある。

    暗号化とは直接関係ないが、メッセージダイジェストについて説明しておきます。 メッセージダイジェストとは、メッセージに対して一方向ハッシングをして作成された ビットパターンで、復号化はできませんがメッセージの一部でも違っていれば同一の ビットパターンは現れないといわれているものです。つまり、メッセージダイジェスト付の メッセージを受け取った場合、そのメッセージに一方向ハッシュをかけて見ればメッセージが 改竄されていないことを確認できます。

    認証書とは、ベリサイン社のような認証局(CA)が、公開カギに対してそれが特定の個人( 実際はクライアント)またはサイトのものであることを証明したものです。ベリサイン社の 個人証明書クラス1は60日間無料で試用できます。これを取得するとS/MIMEプロトコルで netscape,outlook等のメールの暗号化、電子署名が使えます。公開カギはCAで管理します。 PGPツールの場合は公開カギに第三者が署名することにより信用を高めることができます。 公開カギは公開カギサーバーまたは自分のWebサイトまたはメールに添付します。

    電子署名とは、メッセージダイジェストを暗号化キーで暗号化したものを添付することに により実現されます。公開キーで署名が復号化できれば送信者の認証ができます。また、 復号化したメッセージダイジェストと、受信社側で作成したメッセージダイジェストを照合 することにより完全性の確認ができます。

  3. 電子メールのセキュリティ
    電子メールのセキュリティ対応は、PGPツールとS/MIMEプロトコルを使用したツールがあ ります。

    1. PGP(Pretty Good Privacy)
      PGPツールはメールクライアントに組み込みでなくスタンドアローンで動きます。 したがってメールだけでなく、ドキュメントやバイナリーに署名、暗号化ができます。 JPCERT/CC(コンピュータ緊急対応センター)の公式文書にも電子署名がなされています。 PGPをインストールして確認してみましょう。
        <インストール手順>
      • 確認環境 WindowsNT4.0
      • PGP6.5.1のWindows版を取得(非商用であれば無料のようです)
        ftp://pgp.iijlab.net/pub/pgp5/6.5/6.5.1int/PGPfreeware651int.exe
      • ダブルクリックすればインストーラが起動されます。
        PGPnetはVPNのツールのようです(私はインストールしていません)
      • 日本語のユーザマニュアルを取得する。(PGP5.0だが基本的に同じ、非常に便利)
        http://pgp.iijlab.net/man/
      • 自分の個人用キーペア(Private/Public)を作成
        これで、電子署名、暗号化ができます。

    2. S/MIME(Secure/MIME)
      S/MIMEは電子メールの署名、暗号化のプロトコールでメールクライアントにPlug-IN されています。Netscapeでベリサイン社の60日間無料の個人認証を使ってみましょう。
        <インストール手順>
      • NSの左下のカギマークをクリックしセキュリティ情報を表示する。
      • 「本人証明」→「証明書を入手」以下ベリサイン社のページで必要項目を入力する。
      • Netscapeが勝手にキーを生成し、証明書が添付される。
      • メッセージ送信時にセキュリティパスワードを指定して送信すると、電子署名がついて 暗号化されます。

  4. Telnet
    インターネットからTelnetコマンドでサーバーに接続する場合、パスワードが平文で流れ てしまうため盗聴の危険があります。そのためSSHプロトコルにより暗号メッセージにします。 なお、サーバーに対しては通常のTelnetでは接続できない設定をしておきます。 SSHプロトコルは、単一キー方式で暗号文の送受信を行いますが、接続開始時に公開キー方式 により暗号化された単一キーを交換します。この場合の単一キーはセッションないだけで有効な 使い捨てのキーです。公開キーの生成はサーバはSSHのインストール時に行われるようです。 クライアントの公開キーの生成は?です。
      <サーバー側インストール手順>
    • 動作環境はLinux
    • SSH1.2.27を取得
      ftp://ftp.cs.hut.fi/pub/ssh/ssh-1.2.27.tar.gz
    • ソースを解凍しmake&installする。(詳細は参考図書を見てください)
      <クライアント側インストール手順>
    • 動作環境はWindowsNT4.0,TeraTermProが既にインストールされている。
    • TeraTermProのSSH対応ツールttsshを取得
      http://www.zip.com.au/~roca/ttssh.html/ttssh151.zip
    • ttsshを解凍したものをTeraTermProの実行ファイルのあるディレクトリに移す。
    • ttssh.exeを起動しServiceでSSHをチェックします。Known Hostsについて問い合わせ がありますが、それに答えるとユーザID,パスワードの入力画面が現れます。 ログインのユーザID,パスワードを入力するとサーバーにログインできます。このユーザID パスワードは既に暗号化されているため安全です。以降のサーバーとクライアントの メッセージは全て暗号化されます。

  5. WWW
    Webで電子商取引を行う場合に必要なセキュリティは
    • Webブラウザとサーバーのメッセージが盗聴されないこと(クレジットカード番号等)
    • Webサーバーが認証されていること
    • クライアントが本人であることが認証されること
    です。SSL(Secure Socket Layer)プロトコルでは、セッション確立時にハンドシェイクをを行い、以降の 暗号化のキーを決定する。このキーはセッションが確立されている間だけ有効です。Webサーバーとクライアントの 認証はオプションになっています。
      <サーバー側インストール>
    • 動作環境はLinux+Apache1.3.9+mod_ssl2.4.8+mm-1.0.9+OpenSSL-0.9.4
    • 各ソフトウェアのインストールは参考図書を見てください。
    • CA(Certificate Authority)キー,Webサイトキーを作成し自分で署名する。
      正式なWebサイトの認証書が必要な場合はベリサイン社等のCAにサイトキーに署名してもらう 必要があります。
    • Webブラウザでhttps://...と指定するとセキュリティ証明のメッセージが表示されます。
      (Webブラウザに登録されているCAの証明書でない旨のメッセージもでます)続行するとhttp://... で指定した場合と同様のページが表示されますが、httpsの場合はSSLプロトコルにより暗号化および サイト認証がなされています。

  6. セキュリティ対応の難しさ
    各機能毎によく使用されるセキュリティ対応ツールを使ってみましたが、いろいろ難しい面があります。
    • セキュリティ対応が有効になっていることを確認するのが難しい
      クライアントの画面だけ見ていても本当に暗号化されているのか、認証されているのかがわからない。
    • クライアント/サーバに設定が必要でありクライアントもセキュリティ対応の操作が必要
      必要性との関係で最小限の機能に絞って使用したほうがいいようだ。
    • 機能毎にセキュリティ対応ツールが必要であり管理がややこしい
      VPN(Virtual Private Network)のようにネットワーク間をまとめて暗号化してくれるツールの方が 楽かもしれない。

  7. 当サイトでの対応
    当サイトでは現在のところテスト以外に暗号化を施す必要性は感じていませんが今後は
    • リモートメンテナンスのために外部からTELNETする。(現在禁止)
    • FTPで他ホストとのデータの転送を行う。
    ことが想定されます。
    なお、当サイトではダウンロードファイル等になるべくPGPの電子署名をするようにします。 確認時はPGPの公開キーをご利用ください。

付録A 参考図書、ホームページ

あとがき
次世代IP(IPv6)ではプロトコールの中にセキュリティの機能が含まれているため、IPv6が普及すれば TCP/IPレベルでかなりのセキュリティ機能がカバーされるのではないかと言われています。


セキュリティ全般の参考図書、Webサイト