電子メールプロトコル


PEM

PEM(Privacy Enhanced Mail)は,電子メールシステムにメッセージの暗号化と本人認証の機能を取り込むための仕様である. PEMの仕様は,以下のRFCにPrivacy Enhancement for Internet Electronic Mail(Part 1 ~ 4)として規定されている.

PEMの機能は,電子メールシステムに

の機能を付与することで,メッセージの秘匿は電子メール本文の暗号化により,改ざんやなりすましの検出はディジタル署名を施すことにより実現される.

PEMには上記の機能に対応して,次の3つのモードがある.

ENCRYPTEDモードで,メッセージを送信者Aから受信者Bに送る場合の手順は次のようになる.

  1. 公開鍵証明書の発行局(CA)と受信者Bの公開鍵証明書をCAより入手する.
  2. Bの公開鍵証明書をCAの公開鍵で復号し,Bの公開鍵 PKB を取り出す.
  3. メッセージを暗号化するための鍵 DEK をランダムに生成し,PKBを用いてRSA暗号で暗号化する.
  4. DES暗号の初期ベクトルIVを設定し,鍵 DEK を用いDESのCBCモードでメッセージを暗号化する.
  5. CAの公開鍵証明書などの情報を以下の図のようにフィールドに設定します(MIC-Infoフィールドを除く).
    PEMのメッセージ形式はこのように,From:,To:,Subject:行の後に
      ----- BEGIN PRIVACY-ENHANCED MESSAGE -----
    
      ----- END PRIVACY-ENHANCED MESSAGE -----
    
    で挟まれた行がくる. この間に,Proc-Type:,Key-Infoなどにより始まるフィールドと呼ばれる部分がくる.各フィールドは,","により複数のサブフィールドに分けられそれぞれ対応する情報が設定される.
  6. 全フィールドを対象に,ハッシュ関数によりダイジェストを作成する.
  7. このダイジェストに対し,発信者Aの秘密鍵 SKAでRSA暗号により署名を付ける.この署名情報をMIC-Infoフィールドに書き込む.
  ----- BEGIN PRIVACY-ENHANCED MESSAGE -----
  Proc-Type:4,ENCRYPTED
  Content-Domain:RFC822
  DEK-Info:DES-CBC, {IV Parameter}
  Originator-Certificate:
  {送信者の公開鍵証明書}

  Key-Info:RSA,
  {送信者の公開鍵で暗号化した暗号文の暗号鍵}

  Issuer-Certificate:
  {送信者の証明書発行局の公開鍵証明書}

  MIC-Info:RSA-MD5,RSA,
  {ディジタル署名}

  Recipient-ID-Asymmetric:
  {受信者の証明書発行局の情報,バージョン・期限}

  Key-Info:RSA,
  {受信者の公開鍵で暗号化した暗号鍵}

  {暗号文}
  ----- END PRIVACY-ENHANCED MESSAGE -----

受信者側の手順は次のようになる.

  1. Originator-Certificateフィールドの中の送信者の公開鍵証明書を復号し,送信者の公開鍵を PKA を取り出す.
  2. MIC-Infoの中のディジタル署名を鍵 PKA で検証する.
    これは,受信メッセージから得られるハッシュ値とMIC-Infoの情報から得られる値( PKA で復号化した値)が一致するか否かで判定する.
  3. 暗号文の直前のKey-Infoフィールド中の暗号化された鍵を受信者の秘密鍵 SKB で復号する.
  4. 得られた鍵とDEK-Infoフィールドの初期ベクタIVを用いて暗号文を復号する.

PEMでは,次のアルゴリズムが使われている.

S/MIME

S/MIMEは,Secure/Multipurpose Internet Mail Extensionsの略であり,暗号電子メール用にMIMEを拡張した規格である.しかし,S/MIMEはメールに限定されずHTTPのようなMIME形式のデータを転送する機構にも適用できる.

S/MIMEの仕様は,以下のRFCに記載されている.

バージョン2

バージョン3

S/MIMEバージョン3では,PKCS\#7をベースに規定されたCryptographic Message Syntax(CMS)のデータ形式を用いる.

S/MIMEでは,メッセージの署名と暗号化のために次のデータタイプが用いられる.

メッセージの暗号化に使う共通鍵暗号用の鍵(コンテンツ暗号鍵)の交換方法には,次の4つの方法がある.

  1. key transport
    受信者の公開鍵でコンテンツ暗号鍵を暗号化する.
  2. key agreement
    受信者の公開鍵と送信者の秘密鍵を用いてDH法により共有鍵を生成し,この共有鍵を用いてコンテンツ暗号鍵を暗号化する.
  3. symmetric key-encryption keys
    あらかじめ配布された鍵を用いてコンテンツ暗号鍵を暗号化する.
  4. passwords
    パスワードまたは他の秘密情報から生成された鍵を用いてコンテンツ暗号鍵を暗号化する.

PGP

PGP (Pritty Good Privacy) は,Philip Zimmerman 氏によって開発されたフリーソフトウェアとして流通している暗号パッケージである. PGP はコマンドとしてスタンドアロンで利用する形態と,電子メールプログラムに組み込んで使用する形態がある. PGP は鍵の生成・管理,ファイルに対する暗号化・復号,署名の生成・検証の機能を持ち,電子メールばかりでなく個人で利用するファイルに対する暗号化や署名の付与などのツールとしても利用できる.

OpenPGP として,標準化が進められている (→ OpenPGP).

    RFC 4880: OpenPGP Message Format, November, 2007.
    RFC 3156: MIME Security with OpenPGP, August, 2001.

PGP は次の基本的なメッセージタイプをサポートしている.

PGP では次のアルゴリズムが用いられている.

また,PGP では ZIPアルゴリズムによるファイル圧縮をサポートしている. これは暗号化の前に行なわれる.

PGP における公開鍵の正当性の証明は,Web of trust(信用の輪)に依存している.PGPでは,利用者は誰でも他人の鍵を証明することができる. 特定の個人が複数の鍵を証明することもできる.PGP では,各利用者が互いに相手の鍵を証明し連帯保証を行なっている.信頼できる人が証明した公開鍵はまた信頼できるという,信頼の輪を作り公開鍵を認証している.

Certificate Authority (CA) のような公的機関が必要ないため,利用に対する障害が少なく簡単に使える反面,鍵の管理やその認証は利用者個人の責任になっている. インターネット上で使えるPGP公開鍵サーバもあるが,CA のような公式な認証を与えるものではなく,基本的には送られてきた鍵を単に保管し,配布するだけのものである.

inserted by FC2 system