2021年1月16日

「暗号技術入門」をお薦めしない理由

暗号技術の入門書として評判が高い「暗号技術入門」という書籍ですが、実はそんなにお薦めではないです、という理由をまとめたもの。 他人の評判だけで鵜呑みにしてはいけないよね、という注意喚起的な。
6
angel as ㌵㌤の猫 @angel_p_57

そういえば、たびたび「『暗号技術入門』(書籍) はお薦めしませんよ」という話をしてるんだけど、一度まとめておいた方がよい気もする。

2021-01-16 15:13:21
angel as ㌵㌤の猫 @angel_p_57

大雑把な理由はこれ。「公開鍵暗号関連の基本がダメだから」 twitter.com/angel_p_57/sta…

2021-01-16 15:13:46
angel as ㌵㌤の猫 @angel_p_57

もう少し細かく言うと3点。デジタル署名の説明、SSL/TLS、技術相関、全部誤解してるから。 twitter.com/angel_p_57/sta…

2021-01-16 15:14:21
angel as ㌵㌤の猫 @angel_p_57

実は、細かいところは結構色々調べられているんだけど、問題になるのは「基本」 幾ら詳細があっても、いやむしろ詳細に踏み込んでいるからこそ基本がダメなのが問題になる。しかもこの本「入門」と謳っているわけだから。

2021-01-16 15:14:42
angel as ㌵㌤の猫 @angel_p_57

なお、共通鍵暗号とかハッシュとかの説明は別に問題ないんじゃないかな、と思う。けど、興味がなくて詳しく見てないので、断言はしない。

2021-01-16 15:15:24
angel as ㌵㌤の猫 @angel_p_57

さて、3点ある内の1点目については、以下の記事で紹介した通り。「ハッシュ値を秘密鍵で暗号化するのが署名」というありがちなパターン。 qiita.com/angel_p_57/ite…

2021-01-16 15:16:01
angel as ㌵㌤の猫 @angel_p_57

そもそも事実に即してない時点で大分問題なんだけども。ただありがちな反論というか擁護として、「分かり易さと正確さのトレードオフ」「単純に言葉の問題に過ぎない」と言うことで、問題ないとする人がいる。

2021-01-16 15:16:28
angel as ㌵㌤の猫 @angel_p_57

というか、記事を書いた時期に著者の結城さん本人にこの問題は指摘しているんだけど、前者に近いことを言ってたような記憶が。あんまり問題を深刻に捉えてない可能性ありそう?

2021-01-16 15:17:05
angel as ㌵㌤の猫 @angel_p_57

「分かり易さ」の問題については簡単。「それは正しく要約してから言ってください」ということになる。なにしろ、基本的に署名の技術に暗号化・復号は関係ないわけだから。

2021-01-16 15:17:26
angel as ㌵㌤の猫 @angel_p_57

「細部は雑でも本質を捉えている要約」と、「そもそも的外れな説明」のどちらかというと、後者に分類される、だから問題だということ。 どんなに分かり易く見えても的外れだったら意味ないし、それは「こじつけ」であってマイナスでしかない、と。

2021-01-16 15:17:50
angel as ㌵㌤の猫 @angel_p_57

で、「言葉の問題」についてはどうかというと、単に「秘密鍵で暗号化・公開鍵で復号(間違いの方)」と「秘密鍵で署名(作成)・公開鍵で(署名)検証」という用語の違いだけを問題にしているわけではない。

2021-01-16 15:18:19
angel as ㌵㌤の猫 @angel_p_57

そうではなくて、単純な説明で把握できるはずの技術を、回りくどくコストをかけた上に誤解させるという、技術理解上の問題になってくるのが致命的。

2021-01-16 15:18:41
angel as ㌵㌤の猫 @angel_p_57

ありがちな不適切な説明だと、「共通鍵暗号がありまして、それと対照的に公開鍵暗号がありまして、またハッシュがありまして、2つ組み合わせるとデジタル署名です」と。そういう感じになってる。 つまり、デジタル署名の説明までに3つの要素技術が前提になる。

2021-01-16 15:19:03
angel as ㌵㌤の猫 @angel_p_57

で、情処の試験対策で、「どっちの鍵で暗号化するんだっけ…」とか悩む人が続出する、と。

2021-01-16 15:19:22
angel as ㌵㌤の猫 @angel_p_57

しかし実際にデジタル署名の技術特性は「特定の人だけが作れて、不特定多数がホンモノだと確認できる『署名』というデータの実現」「対象のデータに応じて『署名』も変わるので、印鑑のようにデータへの同意や保証のための証拠に使える」というだけ。

2021-01-16 15:19:43
angel as ㌵㌤の猫 @angel_p_57

つまり、他の前提全く要らない。 じゃあ公開鍵暗号との関連は? と言うと、「特定の人・不特定多数を区分するために使う、鍵となるデータを秘密鍵・公開鍵と呼ぶ」「公開鍵という言葉が出てくる通り、『公開鍵暗号』という大まかな分類の一種」で終わり。

2021-01-16 15:20:06
angel as ㌵㌤の猫 @angel_p_57

「どう実現しているか」に踏み込むのはどっちにしろ大変だけど、概要はすごくアッサリでいい。 それにそもそも、名前が「署名(印鑑)のような機能を実現してるから」そうついてるのに、暗号化・復号なんか持ち出してもピント外れだろう、と。

2021-01-16 15:20:37
angel as ㌵㌤の猫 @angel_p_57

たまに勘違いしている人がいるように思うんだけど、「細かく詳しく説明するのが良い説明」ではない。ちゃんと本質を捉えた要約ができる方が遥かに重要だし、詳しいつもりで事実に即してなかったら更にマズい。

2021-01-16 15:21:06
angel as ㌵㌤の猫 @angel_p_57

理解していない人が無理に説明しようとすると、どうしても要約ができずに詳しく詳しく行こうとしがちだけど、デジタル署名の説明でも同じようなことが言えるように思う。

2021-01-16 15:21:34
angel as ㌵㌤の猫 @angel_p_57

では続いて2点目、「SSL/TLSの誤解」の話。これは単純で、「公開鍵暗号で共通鍵(の元であるプリマスタシークレット)を暗号化して…」なんて今はやってないよね、ということ。

2021-01-16 15:22:19
angel as ㌵㌤の猫 @angel_p_57

暗号技術入門第三版が出た頃はまだTLSv1.3は発行されてなかったけど、PFSの問題でそういう説明に沿った方式は使われなくなっていってたし、なんとかならんかったものかという感じがする。

2021-01-16 15:22:43
angel as ㌵㌤の猫 @angel_p_57

それだけなら「まだ公開鍵暗号で暗号化する方式も使われてたし間違いとは言えないのでは?」と擁護する余地もあるんだけど、暗号化に囚われるともう1つ問題がある。そっちの方が大きい。

2021-01-16 15:23:06
angel as ㌵㌤の猫 @angel_p_57

それは、暗号化の方にばかり目がいって、肝心の「サーバ証明書の役割」が掴めなくなること。先日のこのまとめでも触れた「視野狭窄」の一環だ。 togetter.com/li/1650110

2021-01-16 15:23:28
angel as ㌵㌤の猫 @angel_p_57

サーバ証明書の目的は、この証明書ビューアで見られる通り「サーバ認証」なんだけど、これの説明がつかない。実際、考えてみて欲しいところだけど、暗号技術入門を読み込んでも説明できるようになる人はほぼ皆無だと思う。これこそがSSL/TLSの基本なんだけども。 pic.twitter.com/Tyb0TtT1HN

2021-01-16 15:24:07
拡大
angel as ㌵㌤の猫 @angel_p_57

でまあ、そこから脱線していくと、「サイトの運営者の実在性を証明する」とか「公開鍵による通信の暗号化」とかにいっちゃうわけだ。

2021-01-16 15:24:47
残りを読む(15)

コメント

angel (as ㌵㌤の猫) @angel_p_57 2021年1月17日
[c8679377] 大丈夫ですか? 技術話なんで、無理に絡んでこなくて良いですよ。何か言いたいなら勉強してからにしてください。
0