PGP/MIME

PGP/MIME

暗号化

multipart/encrypted媒体型で、 protocol パラメーターと 最初の部分を媒体型 application/pgp-encrypted とします。 その本文は、「Version: 1」とだけ書きます。 (と書かれてるけど、その後に *CRLF があっていいみたい。)

2番目の部分が、実際の暗号化データになります。 実質的なデータは全てこちらに含まれます。 '-----BEGIN PGP MESSAGE-----' で始まります。

See also PGPメッセージ交換形式 (RFC 1991/2440)

署名

multipart/signed媒体型で、 protocol パラメーターと 2番目の部分を application/pgp-signature にします。 '-----BEGIN PGP MESSAGE-----' で始まるデータです。

micalg パラメーターは、 "pgp-<hash-symbol>" と定義されてます。 RFC 2015 では <hash-symbol> は md5 と sha1 が定義されてます。 RFC 3156 は OpenPGP を参照しています。 See PGPメッセージ交換形式

署名する

1. データを用意する。 text/plain媒体型では CRLF 正規形で 適切な charset にする。 (たぶん、他の text/*媒体型でも 正規形にする必要がある。)

2. 必要なら CTE で 7bit データにする。この結果、改行は CRLF 正規形になってなきゃあかん。

3. MIME 頭を追加。改行は CRLF だよ。 (しつこいね。)

4. 頭・本文の署名を計算。

5. 署名は署名したデータとは別個に生成されなければならず、 よって過程はいかなる方法でも署名したデータを 替えてはいけません

検証

1. CRLF 正規形に改行を変換

2. 頭・本文と PGP 署名を検証サービスに渡す

暗号化と署名

multipart/encrypted と multipart/signed を組み合わせてもいいし、 PGP にまとめてやらせてもいいらしい。

参考

RFC 2015 は PGP 公開鍵用の application/pgp-keys媒体型を定義しています。

"PGP", "Pretty Good", "Pretty Good Privacy" は幾つかの地域では Network Associates, Inc. の登録商標です。

[2] S/Mime and PGP Products and Interoperability (1998-11-11 03:18:36 +09:00 版) <http://www.strom.com/places/smime.html> (名無しさん)

[3] secure email-clients with PGP/MIME (Martin Bretschneider 著, 版) <http://www.bretschneidernet.de/tips/secmua.html.en>

[4] MUA supported PGP and PGP/MIME ( 版) <http://www.cla-ri.net/pgp/pgp04.html>

[5] Code Probrem ( 版) <http://www.cla-ri.net/pgp/pgp02.html>

[1] PGP/MIME 入門 ( 版) <http://www.mew.org/~kazu/doc/pgpmime.html>