1. 電子メールを取り巻く環境
1.3. 電子メールのセキュリティ技術
ここでは、電子メールを保護するための3つの技術について紹介します。
S/MIME
S/MIMEは電子メールのメッセージを暗号化したり、メッセージにデジタル署名を加え
たりするインターネット標準のプロトコルです。電子メールのメッセージはS/MIMEの 手順で暗号化、デジタル署名され、加工されたデータが電子メールとして送信されます。
ドメイン認証
ドメイン認証とは、メールを送信しているドメイン間で信頼性を保証するための技術の 総称です。ここのプロトコルについては、1.3.2で解説します。
SSL
メールサーバーの認証、メールサーバー利用者(クライアント)の認証を行い、伝送デ ータを暗号化するインターネット標準のプロトコルです。S/MIMEとことなり、サーバ ーとクライアントの間の伝送データのみが暗号化されます。回線上は暗号化されていま すが、メールサーバーで転送、蓄積されるメッセージは暗号化されていません。
S/MIMEとSSLは、いずれもPKIに基づく公開鍵証明書を使ったプロトコルです。
29 1.3.1. S/MME
S/MIMEは、先に述べたPKIによる公開鍵証明書を使って暗号化やデジタル署名を行う
プロトコルです。暗号化されたデータのフォーマット、デジタル署名のデータのフォーマ ットを取り決め、それをMIMEと呼ばれる電子メールの書式に適応させる手順を規定し たインターネット標準のプロトコルです。7
a. 暗号化されたメールメッセージの中身
暗号化されたメールメッセージは、図 1-25のような形式になっています。
受信者ごとのデータから識別データが自分宛のものを探し出し、そこについている暗号文 の作成に使った共通鍵暗号の秘密鍵を暗号化したデータを、プライベート鍵を使って復号 し、秘密鍵を得ます。次に秘密鍵を使って、暗号文を復号して平文を得ます。
図 1-25 暗号化されたメールメッセージの中身
b. デジタル署名のついたメールメッセージの中身
デジタル署名をつけたメッセージは、図 1-26のような形式になっています。
署名者を識別するデータの証明書発行者名とシリアル番号から署名者の証明書が明らか になり、その証明書に含まれる公開鍵によって、暗号化されたデータを復号してダイジェ ストを得ます。それとは別に、平文から所定のメッセージダイジェスト関数を使ってダイ
7 (最新の仕様は、RFC3850、RFC3851、RFC3852です。)
http://www.ietf.org/rfc/rfc3850.txt、http://www.ietf.org/rfc/rfc3851.txt、
http://www.ietf.org/rfc/rfc3852.txt
暗号文
受信者ボブを識別するデータ (証明書発行者名+シリア ル番号)
暗号文の作成に用いた、暗号キーを受信者ボブの公開鍵を キーとして公開鍵暗号で暗号化したデータ
受信者アリスを識別するデータ (証明書発行者名+シリ アル番号)
暗号文の作成に用いた、暗号キーを受信者アリスの公開鍵 をキーとして公開鍵暗号で暗号化したデータ
30
ジェストを計算します。この2つのダイジェストを比べ、一致していれば「メッセージの 作成者に偽りのないこと」「改ざんのないこと」が保証されます。
図 1-26 デジタル署名のついたメールメッセージの中身
c. デジタル署名と暗号化を組み合わせて使う
1つのメッセージにデジタル署名と暗号化を行うともに行う場合の、送信側と受信側の処 理の流れをみてみましょう。
送信側
i. デジタル署名をします。
ii. デジタル署名のついたメッセージを入力として暗号化します。
受信側
iii. 受信したメッセージを復号して、デジタル署名されたメッセ-ジを得ます。
iv. デジタル署名を検証します。
メッセージ(平文)
署名者の識別データ (証明書発行者名+シリアル番号) ダイジェストを署名者のプライベート鍵を鍵として公開鍵暗
号方式で暗号化したデータ 署名者の証明書 (オプション)
31
図 1-27 デジタル署名と暗号化の組み合わせ
d. デジタル署名と暗号化を組み合わせる2つの方法
デジタル署名と暗号化を1つのメッセージに対して行う場合、2通りの方法が考えられま す。
(1) デジタル署名したデータを入力として暗号化(Sign-Then-Envelop)
受信側では、暗号文を復号しデジタル署名されたデータを得ます。その後、デジタル署名 の検証を行います。
図ではこの方法について説明しています。S/MIMEではこの方法が使われます。
(2) デジタル署名したデータと暗号化をしたデータを連結(Sign-And-Envelop)
受信側では、暗号文を復号して平文を得ます。
平文のダイジェストとデジタル署名中の暗号化されたダイジェストを復号し、比較および
32 検証を行います。
この方式は、PEMと呼ばれるS/MIMEに似た古い手順で利用されており、S/MIMEでは PEMとの互換のためにのみ用いられます。
e. 電子メールソフトでのサポート
後述するように、S/MIME は電子メールを保護するための標準の仕様として、多くの電子 メールソフトでサポートされています。利用者は、公開鍵証明書の取得し初期設定を行う だけで、デジタル署名や暗号化は設定に従って自動的に行われます。受信側のデジタル署 名の検証や暗号文の復号もほとんどのソフトウェアでは自動化、あるいはメニューのコマ ンドを1つ実行するだけで実行され、その結果を知ることができます。
受信者ボブを識別するデータ (証明書発行者名+シリアル番 号)
暗号文の作成に用いた、暗号キーを受信者ボブの公開鍵をキ ーとして公開鍵暗号で暗号化したデータ
暗号文
署名者の識別データ (証明書発行者名+シリアル番号) ダイジェストを署名者のプライベート鍵を鍵として公開鍵暗
号方式で暗号化したデータ 署名者の証明書 (オプション)
図 1-28 デジタル署名したデータと暗号化をしたデータをくっつける。
33
1.3.2. ドメイン認証
a. フィッシング詐欺を防止するために
個人情報を盗用するフィッシング詐欺などでは、まず「なりすましメール」を送信して、
Web サイトに誘導する手法が多く使われています。「なりすましメール」を正しく検知 することができれば、電話などの方法で電子メールの送信元に内容を確認する必要性に思 い至るため、フィッシング詐欺の被害に会い難くなります。
電子メールは、そのシステム上本文はもとより送信者のメールアドレスなど、容易になり すますことができます。したがって電子メールを安全に利用するためには、より高度な技 術を利用して電子メール送信者の身元を保証する必要があります。
b. 送信ドメイン認証技術とは?
「送信ドメイン認証技術」とは、電子メールを安全に利用するための方法の一つで、主に
「なりすましメールを防止する」ために用いられます。
正しく運用されているメールサーバーでは、そのメールサーバーで取り扱うべきメールア ドレスのメールの配送しか行なう事ができないように設定されています。このように正し く運用されているメールサーバーでは他人に「なりすます」ことができず、「なりすましメ ール」の送信者は、別のメールサーバーを使用せざるをえません。この「別のメールサー バーが利用された」事を検知する仕組みが「送信ドメイン認証技術」です。
送信ドメイン認証技術を利用すれば、受信者が「なりすましメール」の可能性のあるメー ルかどうかを判断する事も容易になりますし、また受信側のメールサーバーで受信を拒否 する事もできますので、電子メールのシステム全体として「なりすましメール」自体が送 りにくくなります。
c. 「送信ドメイン認証」の方式
現在利用されている「送信ドメイン認証」は、大きく分けて以下の二つの方式があります。
IP アドレス方式
SPF(Sender Policy Framework)/SenderID
電子署名方式
DomainKeys/DKIM(DomainKeys Identified Mail)
d. IP アドレス方式
送信者側
あらかじめ自分のドメインで使用するメールサーバーのリストを DNS を用いて公開 します。
34
受信者側
送信してきたメールの送信者アドレスのドメイン部分を基に、DNS からそのドメイン のメールサーバーのリストを得ます。
実際に送信してきたメールサーバーが DNS から受け取ったリストの中にあるかない かを判断します。
図 1-29 「IP アドレス方式」を用いた送信ドメイン認証の流れ
ここで受信者側のメールサーバーは、不正なメールの場合に受信を拒否する事もできます し、受信したメールのヘッダーに認証結果を追加して、その判断を受信者に委ねる事もで きます。
認証結果を表示したヘッダーの例
Authentication-Results: spf=pass (SPF 認証に成功したメール) Authentication-Results: spf=fail (SPF 認証に失敗したメール)
Authentication-Results: spf=none (送信者側が SPF を使っていないメール)
実際には、認証結果のほかに「認証を行ったサーバー」「メールの送信元サーバー」「そ の他の認証方法の結果」などが含まれています。
35 e. 電子署名方式
送信者側
自ドメイン用のプライベート鍵と公開鍵の組を作成します。
作成した公開鍵を DNS を用いて公開します。
作成したプライベート鍵をメールサーバーにインストールします。
電子メールを送信する際には、送信側のメールサーバーがプライベート鍵を用いて電子 メールに署名を行います(署名情報のメールヘッダーを追加します)。
受信者側
署名の部分からドメイン情報を抽出します。
抽出されたドメイン情報から DNS を用いてそのドメインの公開鍵を取得します。
取得した公開鍵で署名を検証します。
図 1-30 「電子署名方式」を用いた送信ドメイン認証の流れ
ここで受信者側のメールサーバーは、不正なメールの場合に受信を拒否する事もできます し、受信したメールのヘッダーに認証結果を追加して、その判断を受信者に委ねる事もで きます。
認証結果を表示したヘッダーの例
Authentication-Results: domainkey=pass (署名が正しく認証できたメール) Authentication-Results: domainkey=neutral (署名が存在しないメール)
Authentication-Results: domainkey=permerror (設定が間違っているため認証できない メール)
実際には、認証結果のほかに「認証を行ったサーバー」「メールの送信元サーバー」「そ