WEBVTT

00:00.550 --> 00:07.810
このセクションと次の講義では､ Pjpを使ってテキストファイルや電子メールを暗号化・復号化する方法を紹介します｡

00:07.840 --> 00:18.250
また､ ファイルや電子メールなどの署名や整合性の検証にも使用します｡

00:18.730 --> 00:25.060
そうすれば､ 送受信するデータはすべて暗号化され､ 送信データの完全性を確認することができるので､

00:25.060 --> 00:29.890
安全に通信することができるようになるのです｡

00:29.890 --> 00:36.730
つまり､ 私たちが送信するデータには署名がつき､ 受信者はそのデータが実際に私たちから送られたもので､

00:36.730 --> 00:40.690
改ざんされていないことを確認することができるのです｡

00:41.640 --> 00:48.270
さて､ なぜBGPを暗号化と整合性の検証に使うかというと､ これは時の試練に耐え､

00:48.270 --> 00:54.240
まだ破られていない非常に強力な暗号化だからです｡

00:54.330 --> 01:01.530
リーク情報に基づいても､ 政府機関ですらまだ破ることができないようです｡ 

01:01.530 --> 01:07.360
だから､ PJPはかなり良い暗号化の略なのに､ とてもとても強い暗号化なのです｡ 

01:07.380 --> 01:13.500
この発言は実は皮肉で､ これは非常に強力でパワフルな暗号なのです｡ 

01:14.070 --> 01:19.110
さて､ 今回の講義では､ Pjpの一般的な仕組みについて説明したいと思います｡ 

01:19.110 --> 01:27.420
そして､ 次の講義では､ あらゆるデータの暗号化に使う方法と､ 署名や整合性の検証に使う方法を紹介します｡

01:28.490 --> 01:33.800
さて､ Pjpは公開鍵または非対称暗号である｡ 

01:33.800 --> 01:41.720
その仕組みを理解するために､ まず､ もう一つの伝統的な暗号である対称型暗号について見てみましょう｡

01:42.620 --> 01:47.850
では､ DavidとJohnという二人の人間がいる場合を例に挙げてみましょう｡ 

01:47.870 --> 01:50.630
どうやってコミュニケーションをとるか､ 忘れてしまいそうです｡ 

01:50.630 --> 01:55.580
ここでは､ DavidがJohnにメッセージを送りたいのだと仮定します｡ 

01:55.580 --> 01:59.090
そして､ このメッセージの中身はシークレットメッセージです｡ 

01:59.720 --> 02:05.780
さて､ Davidが自分のメッセージを傍受したり､ 読んだりする者から守りたい場合､

02:05.810 --> 02:14.300
暗号鍵を使ってこのメッセージを暗号化すれば､ メッセージはちんぷんかんぷんなものになります｡

02:15.080 --> 02:24.620
そして､ このメッセージを電子メールや郵便､ テキストメッセージなど､ あらゆる方法でジョンに送ることができる｡

02:24.620 --> 02:26.060
そんなことはどうでもいいんです｡ 

02:26.150 --> 02:31.850
そして､ このメッセージが傍受された場合､ その内容はちんぷんかんぷんなものになるのです｡ 

02:31.850 --> 02:35.390
だから､ これを傍受する側にとっては､ 何の役にも立たない｡ 

02:35.780 --> 02:37.610
ジョンがメッセージを受け取ります｡ 

02:37.610 --> 02:39.020
メッセージを開いてくれる｡ 

02:39.020 --> 02:41.090
メッセージはちんぷんかんぷんなままです｡ 

02:41.090 --> 02:51.050
そして､ ジョンは同じ暗号鍵を使ってこのメッセージを解読し､ その内容であるシークレットメッセージを明らかにするつもりです｡

02:51.530 --> 02:53.450
とても､ シンプルなんですね｡ 

02:53.450 --> 02:56.740
基本的に､ Davidはメッセージを暗号化するためにキーを使用します｡ 

02:56.750 --> 03:02.300
ジョンは同じ鍵を使って復号化し､ こうして二人はメッセージを読むことができるようになる｡ 

03:02.300 --> 03:07.340
しかし､ その鍵を持っていない人は､ メッセージを読むことができません｡ 

03:07.880 --> 03:12.020
つまり､ DavidとJohnは同じキーを使っているのです｡ 

03:12.020 --> 03:15.740
したがって､ これは対称的な暗号化として知られています｡ 

03:16.130 --> 03:18.350
さて､ もうお分かりだと思いますが｡ 

03:18.350 --> 03:20.530
この鍵はプライベートである必要があります｡ 

03:20.540 --> 03:28.520
そのため､ 秘密鍵と呼ばれています｡ この鍵を手に入れることができれば､ DavidがJohnに送るメッセージも､

03:28.520 --> 03:34.010
その逆も解読することができます｡

03:35.220 --> 03:43.290
つまり､ これまでの話を総合すると､ 秘密鍵を使えばメッセージを復号化できることがわかるのです｡

03:43.590 --> 03:46.360
そのため､ 秘密にしておくべきなのです｡ 

03:46.380 --> 03:53.580
しかし､ Davidはどうにかして､ JohnやDavidがコミュニケーションを取りたい相手と共有しなければならないのです｡ 

03:54.030 --> 04:00.930
したがって､ これは対称型暗号の大きな欠点です｡ なぜなら､ 鍵は秘密にしなければなりませんが､ 同時に共有しなければならず､

04:00.930 --> 04:10.020
より多くの人と共有することで､ 実際の鍵を共有する問題はもちろんのこと､ 攻撃対象が増えるからです｡

04:10.050 --> 04:11.300
どうやって共有するのか？

04:11.310 --> 04:13.410
別メッセージで送るのでしょうか？

04:13.410 --> 04:15.720
もし､ そのメッセージが傍受されたら？

04:15.750 --> 04:21.810
もし､ インターネット上で物を送るときに､ データが何ホップ通過できるか分かっていたらどうでしょう？

04:21.840 --> 04:27.600
これを傍受され､ 読まれ､ そして残りの通信が解読される可能性があります｡ 

04:28.080 --> 04:37.470
これが､ より安全な暗号を考え出す大きなきっかけとなり､ 非対称暗号や公開鍵暗号が登場することになった｡

04:38.190 --> 04:42.540
では､ ダビデがジョンにメッセージを送りたいという話に戻ろう｡ 

04:42.540 --> 04:47.640
そして､ その内容は秘密メッセージと非対称暗号化である｡ 

04:47.640 --> 04:50.460
1つの鍵でメッセージを暗号化する｡ 

04:50.490 --> 04:57.480
メッセージを空中で送信し､ 別の鍵を使ってメッセージを復号する｡ 

04:57.960 --> 05:06.090
つまり､ この暗号化では2つの異なる鍵が使われるため､ 非対称暗号と呼ばれるようになったのです｡ 

05:06.810 --> 05:10.700
この2つの鍵はキーペアと呼ばれる｡ 

05:10.710 --> 05:13.020
これらは数学的な関係があります｡ 

05:13.020 --> 05:18.180
一つはメッセージの暗号化に使われ､ もう一つは復号化に使われる｡ 

05:18.180 --> 05:23.700
そのため､ 復号鍵が共有されることはなく､ より安全性が高いと言えます｡ 

05:24.120 --> 05:28.680
さて､ 復号化キーが共有されないのであれば､ これはどのように機能するのだろうかとお考えでしょう｡ 

05:29.040 --> 05:33.120
さて､ 話を戻して､ この仕組みについて詳しく見ていきましょう｡ 

05:33.210 --> 05:36.690
そこでまた､ ダビデはジョンにメッセージを送ろうとする｡ 

05:36.690 --> 05:39.630
メッセージの中身はシークレットメッセージです｡ 

05:39.630 --> 05:48.930
しかし､ このメッセージを送信する前に､ そして暗号化する前に､ ジョンは公開鍵と秘密鍵のキーペアを作成するつもりです｡

05:49.560 --> 05:59.460
先ほど言ったように､ これらの鍵は数学的にリンクされており､ ジョンはメッセージを送信する人物であるDavidに公開鍵を送ることになるのです｡

05:59.820 --> 06:02.970
そのため､ 公開鍵は誰とでも共有することができます｡ 

06:02.970 --> 06:07.470
実際にインターネットや主要なディレクトリで公開することができます｡ 

06:07.500 --> 06:13.030
秘密鍵を決定するために使用することはできないので､ 実際には重要ではありません｡ 

06:13.050 --> 06:16.830
したがって､ 公開鍵を共有しても全く問題ありません｡ 

06:17.310 --> 06:19.920
そこで､ Davidは公開鍵を受け取る｡ 

06:19.950 --> 06:23.100
彼は公開鍵を使ってメッセージを暗号化する｡ 

06:23.100 --> 06:25.860
メッセージは任意の方法で送信されます｡ 

06:25.860 --> 06:27.120
そんなことはどうでもいいんです｡ 

06:27.120 --> 06:30.320
仮に傍受されてもちんぷんかんぷんだろうし｡ 

06:30.330 --> 06:32.430
ジョンが受信します｡ 

06:32.430 --> 06:33.840
メッセージを開いてくれる｡ 

06:33.840 --> 06:40.410
メッセージは相変わらずちんぷんかんぷんだが､ 彼は秘密鍵を使ってこのメッセージを復号する｡ 

06:40.860 --> 06:44.310
そうすれば､ 彼は秘密のメッセージの内容を知ることができる｡ 

06:44.310 --> 06:48.200
そして､ ご覧の通り､ 秘密鍵は決して共有されていませんでした｡ 

06:48.210 --> 06:52.210
Johnが秘密鍵を作成し､ Johnが秘密鍵を保管した｡ 

06:52.230 --> 07:01.280
共有されるのは公開鍵のみで､ 秘密鍵の特定やメッセージの解読には使用できない｡

07:01.290 --> 07:04.530
メッセージの暗号化にのみ使用することができます｡ 

07:05.420 --> 07:13.330
つまり､ 通信が終わるころには､ DavidはJohnの公開鍵を持ち､ Johnは2人の秘密鍵を持つことになるのです｡

07:13.340 --> 07:21.800
したがって､ Davidは常にJohnにメッセージを送ることができ､ Johnは常に自分の秘密鍵を用いてメッセージを復号することができるようになりました｡

07:21.890 --> 07:29.060
それだけでなく､ DavidがJohnの公開鍵で暗号化した場合､ John以外の誰もこのメッセージを解読することができないので安心です｡

07:29.060 --> 07:38.990
Johnは唯一の秘密鍵を持っており､ 彼の秘密鍵は決して共有されてはならないからです｡

07:39.020 --> 07:44.660
共有する意味がないので､ ジョンが自分の行動を知っていれば､ 100人にメッセージを送ってもらいたい場合でも､

07:44.660 --> 07:50.420
秘密鍵ではなく､ 公開鍵を共有すればいいだけです｡

07:51.140 --> 07:56.780
さて､ ジョンがデビッドに何かを送りたい場合､ 同じことが逆方向にもできる｡ 

07:56.780 --> 07:59.100
そこで､ Davidはキーペアを作成することになる｡ 

07:59.120 --> 08:06.000
彼はジョンに自分の公開鍵を送り､ ジョンはデビッドの公開鍵を使ってメッセージを暗号化する｡ 

08:06.020 --> 08:10.760
それを受け取ったDavidは､ 自分の秘密鍵を使って復号化する｡ 

08:10.910 --> 08:13.100
だから､ 発想はとてもとてもシンプルです｡ 

08:13.100 --> 08:20.030
公開鍵を共有することで､ 秘密鍵の特定やメッセージの解読に使用できないため､

08:20.030 --> 08:24.830
完全に安全な公開鍵という名前になっています｡

08:24.830 --> 08:31.100
つまり､ 公開鍵を共有し､ あなたにメッセージを送りたい人は､ そのメッセージをあなたの公開鍵で暗号化し､

08:31.100 --> 08:37.160
この方法であなただけがこのメッセージを復号することができるようになるのです｡

08:37.340 --> 08:39.740
別のメッセージを送りたいときも同様です｡ 

08:39.740 --> 08:47.180
例えば､ あなたが私にメッセージを送りたかったら､ そのメッセージを私の公開鍵で暗号化すればいいだけです｡

08:47.180 --> 08:53.390
そして､ この方法では､ 私は秘密鍵を誰とも共有しないので､ メッセージを読むことができるのは私一人になるのです｡

08:53.390 --> 08:55.370
だから､ このメッセージはどこにでも入れることができるのです｡ 

08:55.370 --> 09:02.360
公開しても､ そのメッセージは私以外には読めないので安全です｡
