「暗号」という言葉が暗号技術の理解の妨げになるというお話

暗号技術、最もメジャーなのは SSL/TLS(https) ですが、「暗号化」だとか、「平文」「暗号文」という言葉にさらされすぎると、暗号技術の重要な部分を見落とすことにも繋がりかねないですね、ということをつらつらtweetしたものです。 ※7/24 httpsのことで色々追加
37
angel (as ㌵㌤の猫) @angel_p_57

@Iruyan_Zak いや実は、平文か暗号文かと言うのが前面に出すぎて、暗号技術の理解の妨げになってる面はありまして。( 重要ではあるけど一面でしかない )

2018-07-20 18:05:08

話の発端は、フォローしている方のこのtweetに反応したことから。

いるやん @Iruyan_ZAK

「平文」と言われると「ヤバそうだな・・・」と思うんだけど、ネットワーク上をメッセージが平文で流れることがどんなヤバさを持っているのか、どうやって危機を防ぐのか、そういうことは全く知らないのでして。

2018-07-20 15:10:32

ということで話が始まりました。

いるやん @Iruyan_ZAK

@angel_p_57 もう少し詳しく聞きたいです。

2018-07-20 18:11:58
angel (as ㌵㌤の猫) @angel_p_57

@Iruyan_Zak ざっくりと言うと、近代的な暗号はハイブリッド、複数の特長を備えています。SSL/TLSの場合だと、機密性・完全性・認証ですね。「平文じゃない」というのは ( 通信を傍受されたとしても ) 内容が漏洩しないということで、機密性の話でしかないのです。

2018-07-20 18:17:56
いるやん @Iruyan_ZAK

@angel_p_57 本当にセキュリティのことを気にするときは平文であるか否かのみが重要になるわけではなくて、シチェーションによっては平文でも問題ないし、逆にもっと他の部分を気にする必要があるケースがある、ということでしょうか

2018-07-20 18:20:18
angel (as ㌵㌤の猫) @angel_p_57

@Iruyan_Zak それもなくはないですが、「ハイブリッド」と言うのは、異なる特長がバラバラに機能してる訳ではなくて、連携しなければならない、不可分な関係にあるのです。

2018-07-20 18:24:22
angel (as ㌵㌤の猫) @angel_p_57

@Iruyan_Zak そして、古典的な暗号 ( 運用面で ) と近代的なハイブリッド暗号の最大の違い。それは、前者が「暗号を解読できるのはその資格を持っている人だけだ ( 例えは暗号表を渡してるとか )」という前提があるのに対し、後者はそうでないという違いです。

2018-07-20 18:22:14

おそらく一般に「暗号」と聞いて思い浮かべるのはここで「古典的」と言っている、「解読のための情報を限定された人しか持たない」ようなイメージではないでしょうか。

angel (as ㌵㌤の猫) @angel_p_57

@Iruyan_Zak 例えは、ですが。IT技術関係ない日常の話を想像してください。誰かと大事な話がしたい、当人以外に漏らしたくないとします。

2018-07-20 18:30:34
angel (as ㌵㌤の猫) @angel_p_57

@Iruyan_Zak 普通に街中で話すと、誰に聞かれているか分かりませんね。なのでホテルの一室を借りてサシで話すことにしました ( 盗聴器とかは今は考えないでください )。…これは平文を暗号文に変えた、「機密性」に相当する対処になっています。これで十分でしょうか? (反語)

2018-07-20 18:34:17
angel (as ㌵㌤の猫) @angel_p_57

@Iruyan_Zak ホテルの部屋で待ち合わせたら、フルフェイスヘルメットをかぶった相手が来ました。顔がよく分かりませんし、声もくぐもっていつもと違うかも…。でも他の誰にも聞かれてないし、「機密性」は守られてるよね! …んなわけないですよね、と。

2018-07-20 18:37:27
angel (as ㌵㌤の猫) @angel_p_57

@Iruyan_Zak この例だと、目当ての人とは違う人と話をして漏れてしまっている懸念があるわけです。つまり「機密性」は単独では担保できない、相手側確かに想定どおりであるという「認証」が前提として必要なのです。

2018-07-20 18:41:16

「相手側確かに」→「相手が確かに」

angel (as ㌵㌤の猫) @angel_p_57

@Iruyan_Zak 古典的な暗号と近代的な暗号の違いはここにあります。前者は、暗号を解読できる人が限られている、つまり解読できる能力がある時点で信頼できる相手だという前提なので、認証のフェーズが要りません。しかし後者は通信相手を限定しません。なので認証がどうしても欠かせません。

2018-07-20 18:46:40

ここでは「古典的」と言ってますが、例えば自宅のインターネット用に無線LANを使う、その時にWPA2等の暗号化を使う、というような状況も当てはまります。
無線機器とPC/モバイル機器に共通のパスワードを設定して使いますし、無線接続するとき接続先がニセモノかどうかなんて意識しませんよね。
一方で、SSL/TLS(https)の場合、「ブラウザで鍵マークがついていること」が目安になりますが、これはちゃんと意図したサイトに接続されているという「認証」もブラウザが確認しているのです。

angel (as ㌵㌤の猫) @angel_p_57

@Iruyan_Zak …という観点で世の中暗号技術の説明を見渡すと、認証を考慮していないものが相当多いことに気付くと思います。SSL/TLSで言うと、証明書の妥当性の確認 (検証) と、証明書の正当な所有者であることの確認、この2点ですが、後者にまで言及している説明はほぼありません。

2018-07-20 18:51:04

証明書の妥当性の話は、PKIという枠組みで色々説明を見て理解している人も多いと思います。
が、「その証明書の正当な持ち主であること」これをどう確認するか、説明できる人はほとんどいないのではないでしょうか…?
良ければ考えてみて下さい。

angel (as ㌵㌤の猫) @angel_p_57

@Iruyan_Zak …とまあ、こんなとこでしょうか。暗号、暗号と言う言葉に引きずられると、同じ位重要な認証の話が置き去り荷されてしまうのです。

2018-07-20 18:53:16

ちなみに「完全性」には言及していませんが、SSL/TLSならMACによる改ざん検知の機能になります。
「認証」が通っても、その後の通信の内容の改ざんに気づけないようなら意味がないですよね、ということで「認証」と「完全性」も不可分です。こちらはまだ分かり易いのではないでしょうか。

最後に。「認証」の話がそれほど簡単ではないというのは分かっていて、なので十分な説明が見られないというのは、やむを得ない面もあるとは思います。
ただ…。ねえ。分かってて簡略化しているというより、最初から考えてないんじゃないかなあというのはあり。

一応自分で書いてみたこともありますが、なかなか簡単に、とはいかなかったですね。
https://qiita.com/angel_p_57/items/a8ed4e00cb04ebcccb98

ちょっと続きを追加

angel (as ㌵㌤の猫) @angel_p_57

SSL/TLS(https)の場合。ちゃんと通信が保護されているかどうか見るには、今時なら「ブラウザの鍵マーク」ってことになってる。togetterのサイトにFireFoxでアクセスするとこんな感じ。 pic.twitter.com/ZFAoNghmts

2018-07-23 22:32:34
拡大