0 / 8
ENCRYPTED: 署名を付け、本文も暗号化する
PEM(Privacy-Enhanced Mail)は、メールを送る側と受け取る側の両端だけで署名と暗号化を処理する。ENCRYPTED は、署名を付けて本文まで暗号化する種類である。
途中のメールサーバーは PEM を知らなくても、メールをそのまま届ける。
例: Alice が Bob に「明日3時に会議」というメールを送る。
メールサーバーに見える本文は暗号文である。
1 / 8
Alice: 本文の MIC を作る
Alice が本文をメールの標準形式(改行など)に整えてからハッシュ関数に入れ、MIC(Message Integrity Check)a41f を作る。MIC は、本文が1文字変わっただけでも変わる短い値である。
2 / 8
Alice: MIC に署名する
Alice が MIC を自分の秘密鍵で暗号化して署名 7be2 を作る。秘密鍵は Alice だけが持っているので、この署名は Alice にしか作れない。Alice は本文全体ではなく、短い MIC に署名する。
3 / 8
Alice: DEK で本文を暗号化する
Alice がこのメール1通だけに使う新しい鍵 DEK(Data Encrypting Key)k58 を作る。DEK で本文を暗号化すると暗号文 x9Fq… ができる。DEK はメールごとに新しく作る。本文はこの DEK 1つだけで暗号化する。
4 / 8
Alice: DEK を Bob の公開鍵で暗号化する
DEK は Bob だけが知っていなければならない。そこで Alice は DEK を Bob の公開鍵で暗号化して c3d9 を作る。公開鍵で暗号化した値は、対になる Bob の秘密鍵でしか開けない。
5 / 8
Alice → Bob: メールで送る
署名も同じ DEK でもう一度暗号化する。署名と暗号化した DEK はメールのヘッダー部分に、暗号文は空行のあとの本文部分に入れる。これらの値は、メールに載せても壊れない文字に変換(エンコード)して書き、全体を BEGIN と END の境界行の間に入れて送る。メールサーバーは普通のメール文として届ける。メールサーバーに見える本文は暗号文で、読めない。
6 / 8
Bob: DEK を取り出す
Bob がヘッダー部分の暗号化された DEK を文字から元に戻し、自分の秘密鍵で復号して k58 を取り出す。Bob の秘密鍵は Bob だけが持っているので、メールサーバーや他の人は DEK を得られない。
7 / 8
Bob: 本文を復号する
Bob が本文部分の文字を元に戻して暗号文を得て、DEK k58 で復号し、本文「明日3時に会議」を読む。ヘッダー部分の署名も文字から戻して同じ DEK で復号すると 7be2 になる。
8 / 8
Bob: 署名を確認する
Bob が Alice の公開鍵で署名 7be2 を復号して、MIC a41f を取り出す。受け取った本文から計算し直した MIC も a41f で、2つの値が同じである。だから本文は変わっていない(完全性)。署名は Alice にしか作れないので、送ったのが Alice であることも確かめられる(送信者認証)。公開鍵方式なので、Alice は送ったことを否認しにくい(送信否認防止)。
1 / 6
Alice: 本文の MIC を作る
Alice が本文をメールの標準形式(改行など)に整えてからハッシュ関数に入れ、MIC(Message Integrity Check)a41f を作る。MIC は、本文が1文字変わっただけでも変わる短い値である。
2 / 6
Alice: MIC に署名する
Alice が MIC を自分の秘密鍵で暗号化して署名 7be2 を作る。秘密鍵は Alice だけが持っているので、この署名は Alice にしか作れない。Alice は本文全体ではなく、短い MIC に署名する。
3 / 6
Alice: 本文を文字に変換する
この種類は本文を暗号化しない。Alice は本文を、メールに載せても壊れない文字に変えるだけ(エンコード)で 6Ky1b… を得る。メールが届くまでの間に文が壊れるのを防ぐための変換なので、DEK は要らない。
4 / 6
Alice → Bob: メールで送る
署名は文字に変えてヘッダー部分に、変換した本文は空行のあとの本文部分に入れ、BEGIN と END の境界行の間に収めて送る。メールサーバーに見える本文は変換された文字で、そのままでは読みにくい。暗号化ではないので、変換方法を知っている人なら誰でも元の文に戻せる。
5 / 6
Bob: 本文を元に戻す
Bob が変換された文字を元に戻して、本文「明日3時に会議」を読む。鍵が要らない変換なので、Bob の秘密鍵は使わない。
6 / 6
Bob: 署名を確認する
Bob が Alice の公開鍵で署名 7be2 を復号して、MIC a41f を取り出す。受け取った本文から計算し直した MIC も a41f で、2つの値が同じである。だから本文は変わっていない(完全性)。署名は Alice にしか作れないので、送ったのが Alice であることも確かめられる(送信者認証)。公開鍵方式なので、Alice は送ったことを否認しにくい(送信否認防止)。
1 / 6
Alice: 本文の MIC を作る
Alice が本文をメールの標準形式(改行など)に整えてからハッシュ関数に入れ、MIC(Message Integrity Check)a41f を作る。MIC は、本文が1文字変わっただけでも変わる短い値である。
2 / 6
Alice: MIC に署名する
Alice が MIC を自分の秘密鍵で暗号化して署名 7be2 を作る。秘密鍵は Alice だけが持っているので、この署名は Alice にしか作れない。Alice は本文全体ではなく、短い MIC に署名する。
3 / 6
Alice: 本文は読める文のまま
この種類は本文を暗号化せず、文字に変える変換(エンコード)もしない。先に標準形式(改行など)に整えたまま、本文は読める文「明日3時に会議」として残る。
4 / 6
Alice → Bob: メールで送る
署名は文字に変えてヘッダー部分に書き、読める原文のままの本文は空行のあとの本文部分に入れて、BEGIN と END の境界行の間に収めて送る。PEM に対応していないメールソフトでも本文は読める。ただし署名の確認ができるのは PEM に対応したソフトだけである。メールサーバーが本文を少しでも書き換えると、確認に失敗することもある。
5 / 6
Bob: 本文を読む
Bob は復号も元に戻す操作もせず、本文「明日3時に会議」をそのまま読む。
6 / 6
Bob: 署名を確認する
Bob が Alice の公開鍵で署名 7be2 を復号して、MIC a41f を取り出す。受け取った本文から計算し直した MIC も a41f で、2つの値が同じである。だから本文は変わっていない(完全性)。署名は Alice にしか作れないので、送ったのが Alice であることも確かめられる(送信者認証)。公開鍵方式なので、Alice は送ったことを否認しにくい(送信否認防止)。