3. S/MIME に関する調査

S/MIME によりサポートされる PKCS によるメール本文の暗号化においては、 セッション毎に秘密鍵を生成し、それを用いて暗号化を行なう。メール本文を 暗号化する際には、送信相手の公開鍵が既知である必要がない。暗号化された 本文は MIME オブジェクトとして base64 エンコーディングされる。

この秘密鍵を、受信者毎に各々の公開鍵を用い、自身の秘密鍵と併せて使用する ことにより、公開鍵暗号方式により暗号化する。暗号化された秘密鍵は、それぞれ MIME オブジェクトとして base64 エンコーディングされる。

電子署名には、送信者の証明書のメッセージダイジェストを作成し、 送信者自身の秘密鍵を用いて公開鍵方式により暗号化したものが使用される。

S/MIME メールは、暗号化された本文、送信先の数に応じた暗号化された 秘密鍵、および電子署名を含んだ形で送信される。

電子署名の認証を行なう場合には、信頼できる認証局から得られる公開証明書 からメッセージダイジェストを計算する。一方で電子署名を送信者の公開鍵 を用いて復号化し、両者の結果の一致によって送信者が認証される。

これらの一連の機能を実装するにあたって、利用することが期待できるツール あるいはライブラリなどの既存実装を以下に挙げる。

3.1 PKCS オブジェクトのデコードプログラム

OpenSSL 0.9.4 の暗号化ライブラリを使用した PKCS デコード機能のテストの ため、以下のようなのサンプルプログラムを作成した。

このサンプルプログラムが示す通り、既存のライブラリやPerl用モジュールの 利用により、暗号化および認証機能に関する開発の多くの部分を省力化する ことが可能である。

3.2 OpenSSL による認証局のテスト運用

本調査においては、OpenSSL 0.9.4 を以下の環境にインストールし、認証局 のテスト運用を行なった。

いずれの環境においても、暗号化および認証に必要な、以下の所定の動作に 問題がないことを確認している。

  1. 公開鍵暗号化方式による暗号化でで使用するキーペアの作成
  2. メッセージダイジェストの暗号化による電子署名の作成
  3. メッセージダイジェストの照合による電子署名の認証
  4. 公開鍵を含む証明書の作成
  5. 電子署名による証明書の認証
  6. 秘密鍵の逐次生成による平文テキストの暗号化
  7. 証明書を使用して解読した秘密鍵による平文テキストの復号化

3.3 S/MIME 送信/受信エージェントのサンプル調査

S/MIME によるメール本文の暗号化、およびメール送信者の認証機能を持つ メール送信/受信エージェントとして、Netscape messanger を用いた 暗号化メールの送受信テストを行なった。

認証局として、 「4.2 OpenSSL による認証局のテスト運用」 において設定した Tru64 UNIX 上の OpenSSL テスト環境を使用した。

Netscape messanger では、受信した S/MIME メールの送信者を電子署名に より認証し、メール本文を復号化するために、メール送信者の公開証明書 を取得し、その有効性を検証する機能を持っている。

公開証明書の取得方法としては、LDAP サーバーのアクセスによる ディレクトリ・サービスの利用を前提としている。

そのため、メール送受信テストにあたっては、テスト環境の一部として OpenLDAP サーバーの運用テストを併せて行なった。これについては 次章に述べる。