PEM(Privacy Enhanced Mail)は,電子メールシステムにメッセージの暗号化と本人認証の機能を取り込むための仕様である. PEMの仕様は,以下のRFCにPrivacy Enhancement for Internet Electronic Mail(Part 1 ~ 4)として規定されている.
PEMの機能は,電子メールシステムに
の機能を付与することで,メッセージの秘匿は電子メール本文の暗号化により,改ざんやなりすましの検出はディジタル署名を施すことにより実現される.
PEMには上記の機能に対応して,次の3つのモードがある.
ENCRYPTEDモードで,メッセージを送信者Aから受信者Bに送る場合の手順は次のようになる.
----- BEGIN PRIVACY-ENHANCED MESSAGE -----と
----- END PRIVACY-ENHANCED MESSAGE -----で挟まれた行がくる. この間に,Proc-Type:,Key-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 -----
受信者側の手順は次のようになる.
PEMでは,次のアルゴリズムが使われている.
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つの方法がある.
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 のような公式な認証を与えるものではなく,基本的には送られてきた鍵を単に保管し,配布するだけのものである.