これまで､ BGPを使用してメッセージを暗号化し､ 受信者だけがメッセージの内容を読み取れるようにする方法を学びました｡
そのために､ この例では送信者であるDavidは受信者の公開鍵を使用します｡
つまり､ 受信者はその名の通り､ 自分の公開鍵を公開するわけです｡
公開鍵はメッセージの解読には使えないので､ それでいいんです｡
メッセージの暗号化にのみ使用可能です｡
そこで､ Davidは受信者のJohns公開鍵でメッセージを暗号化する｡
メッセージを送信し､ それを受け取ったジョンは､ 誰にも教えない自分の秘密鍵を使ってメッセージを復号化する｡
したがって､ DavidはJohnにどのような方法でメッセージを送ることもできる｡
彼はそれをテキストメッセージとして､ インスタントメッセージとして､ あるいは安全でないサービスを使って送ることができます｡
それでいいんです｡ 誰かがメッセージを読んだら､ ちんぷんかんぷんでしょうからね｡
秘密鍵を持っていない限り､ コンテンツを見ることはできない｡
そして､ Johnが秘密鍵を共有しない限り､ 秘密鍵を共有する必要はないのです｡
そうすれば､ ジョン以外の誰もこのメッセージを読むことができなくなる｡
だから､ 本当に､ いいんです｡
ただ､ ここで問題なのは､ 受け取ったメッセージが本当にDavidから送られたものなのか､ Johnが確認する方法がないことです｡
ですから､ 先ほども言ったように､ これを実現するためには､ ジョンが自分の公開鍵を公開する必要があるのです｡
だから､ ジョンの公開鍵を手に入れるのは簡単だ｡
したがって､ ジョンは自分の署名とメールにそれを入れることができた｡
掲示板の署名に書いてもらってもいいそうです｡
暗号化されたメッセージを送ってほしいから､ 公に共有しているのかもしれません｡
ですから､ 公開鍵を公開しても何の問題もありません｡
唯一の問題は､ 誰かが入ってきてDavidのふりをし､ Johnの公開鍵を使ってメッセージを暗号化し､ Johnに送ることができることです｡
そうすれば､ このメッセージが本当にダビデから来たのかどうか､ ヨハネには知る由もない｡
この問題を解決するために､ Davidはメッセージに署名する必要がある｡
これは､ 実はPjpでも可能なんです｡
では､ この例でどのように動作するかをお見せしましょう｡
そこで再び､ Davidの登場です｡
彼はジョンに秘密のメッセージを送りたいのだ｡
そして､ 先ほど学んだように､ Davidが最初に行うことは､ Johnの公開鍵を使ってメッセージを暗号化することです｡
メッセージが意味不明なものに変わります｡
さて､ 前回の講義ではこの段階でメッセージを送信しましたが､ 今回はDavidが自分の秘密鍵でメッセージに署名することになります｡
つまり､ 彼はまだ秘密鍵を送っていないのです｡
メッセージは､ やはりDavidのほうにある｡
そして､ このメッセージの署名を作成するのです｡
この署名は､ このメッセージに対応する｡
そして､ メッセージの中で何かが修正されると､ 一文字でも修正されると､ 署名が変わってしまいます｡
したがって､ この署名は､ メッセージがDavidの秘密鍵で署名された後に変更されていないことを確認するために使用することができます｡
さて､ Davidはまだ自分自身の秘密鍵を保持していることに留意してください｡
通信手段で送ったわけではないそうです｡
これで､ 暗号化された内容のメッセージと､ David Private Keyに対応する署名ができたことになります｡
そして､ そのメッセージを任意の通信手段で送信する｡
先ほども言ったように､ 安全でない通信手段を使うことも可能です｡
Johnはメッセージと署名を受け取り､ 自分の秘密鍵でこのメッセージを復号する前に､
Davidの公開鍵を使って署名を検証することにしています｡
つまり､ 先ほど言ったように､ 署名はDavidの秘密鍵で作成されているのです｡
そして､ JohnはDavidの秘密鍵を持っていませんが､ Davidの公開鍵を使って署名を検証することになります｡
メッセージが変更されていない場合､ 検証は成功する｡
こうすることで､ ジョンはこのメッセージが実際にDavidが送ったもので､ 誰にも修正されていないことを知ることができる｡
なぜなら､ 先ほども言ったように､ 1文字でも修正されると､ 公開鍵､ つまりDavidの公開鍵は署名を検証できないからです｡
そのため､ 署名が検証されれば､ Davidが実際にメッセージを送った人であり､ メッセージがインターネット上のテキストメッセージやその他の通信手段で送られたとしても､
送信時に変更されていないことがわかるのです｡
次のステップは､ 前回の講義で起こったことと非常によく似ています｡
Johnは自分の秘密鍵を用いてメッセージを復号し､ その内容を読み取りますが､ それは単なる秘密のメッセージに過ぎません｡
その結果､ 各自が自分の秘密鍵を保持したままであることがおわかりいただけると思います｡
誰も自分の秘密鍵を相手に送っていない｡
そこで､ 送信者は受信者の公開鍵でメッセージを暗号化し､ 自分の秘密鍵でメッセージに署名する｡
メッセージが送信されます｡
受信者は送信者の公開鍵で署名を検証し､ 自分の秘密鍵で復号化する｡
こうすることで､ このメッセージが送信者から来たものであることを確認することができる｡
彼は､ メッセージが送信される際に変更されていないことを確認することができます｡
そして､ メッセージは暗号化されています｡
そして､ それを読むことができるのは受信者だけです｡ なぜなら､ 受信者は自分の秘密鍵を秘密にしていて､ 誰とも共有されていないからです｡
さて､ 次回の講義では､ メッセージを暗号化し､ 送信者として署名する方法を紹介しますので､ これらすべてが明らかになるはずです｡
そして､ 受信者として署名を検証し､ メッセージを復号化する方法も紹介します｡