とりあえず難しいことはすっ飛ばして説明する証明書除外問題
文章目录
証明書が適切に除外されてるかを判定できるサイトを紹介する私のツイートの解説
何が起こったのか
答え: インドの認証局eMudhraで,本来はめっちゃデカい桁のランダムな魔法の合言葉が,何故か4とか56みたいな小さい数字になってて,それに気づかず使ってた
なんで発覚したのか
ある人物が弱い鍵を探すツールで試したら,実在の証明書の合言葉が簡単に割れちゃった
どう対応したのか
とりあえず該当の合言葉で署名された鍵を認めない処置を, 通信の認証とかを決める人たちでした
じゃあなんで俺の端末で赤が出るんだよ
無効化された証明書や鍵の情報を,ちゃんと自分から取り込んでくれる仕組みのあるソフトが思ったよりなかったので,古いものに限らず,ソフトや証明書ストアそのものの更新が必要になる場合があるんだよ!!!
これ何がヤバいんだよ
これがもし赤なら今見てるこの記事が通信中に改変されてても気づけねえってこと。 インターネット世界における正しさの証明ができなくなって,誰でも好きなサイトのフリができちゃうわけ。
もう少し詳しく説明
この4とか56ってなんだよ
公開鍵暗号における秘密鍵のこと
秘密鍵っていうのは,ある秘密鍵があるとき,その鍵から導ける公開鍵があって,秘密鍵から公開鍵はわかるけど,正しく生成された鍵なら,逆を求めるのは現実的には無理ってやつ。有名なのだと素数を使ったRSA暗号だけど今回は楕円曲線暗号ってのも絡んでくる。 下の図みたいになんかいい感じの曲線上の点を使ってるんだなとか思ってくれてたらいい。
なんで起こったんだよ
インドの認証局eMudhraは,自らがこの鍵を発行する際の処理にバグがあったと説明してるとのこと。 要するに人災で,チェック手順が不十分だったらしい。
証明書ってなんだよ
証明書っていうのは,「このドメインの公開鍵はこれです」みたいな情報に,認証局が電子署名を付けたもの。その電子署名は,情報の断片(厳密にはハッシュ)と秘密鍵を使っていい感じに計算したもの。
元の情報と署名を認証局の公開鍵で検証すると,「これを作れるのはあの秘密鍵を持ってるやつだから,あいつが認めたんだな」と確認できる。"秘密鍵が漏れたり簡単に推測されたりしない限りは"ね。
でもインドだろ?何の関係があるんだよ
root認証局っていう大本がいくつかあって,そこから署名でつながる世界各地の中間認証局が代わりに署名を求める人を検証して署名してあげる仕事をしています。 なので,ここが侵害されたら当然僕らが使ってるOS/ブラウザ/ライブラリ等が信頼するrootの代わりに署名してる機関なので僕らも道連れってこと。
赤のまま更新が降ってこないんだけど
ブラウザの組み合わせなどを変えても解決しないならその端末は嘘の証明書を見抜けないので,あなたが開いてるサイトが本物かどうかを検証するのが困難になっちゃう。 なので極力重要な操作に使わず,更新や配信が来て緑になるまで放置しかできない。
自動でいい感じに更新するシステムってないの
ある。ブラウザ向けだとコイツラとか。
-
OneCRL
-
CRLite
-
CRLSets
対応しているブラウザでは,こっから情報を自動で取り込んで,いち早く問題の証明書を信用しないようにしてくれる。ただし,別のアプリやOSやライブラリにはその仕組みがないこともあるんだよね。
俺は全部緑だったからセーフだよな?
と思ったか?
例えばみんなが使ってるDiscordのPC版アプリが採用しているElectronや,
さまざまなソフト開発でよく使われるこれらなど
ブラウザ以外にも,大量のライブラリやフレームワークが独自に証明書ストアを持って管理してるので,コイツラにも修正がはいって,そのバージョンを使うようにアプリが更新されないと,俺等が使ってるアプリのどっかが偽物になってても気付けないってわけ。
よりによってコイツラには最近のOSやブラウザのように失効通知を自動反映する機能もないので更新が絶対必要。
なのでとにかくバージョンを最新に全てし続けないと,何も信頼できない状況ですよ〜って感じです。
詳しくは ↓リストとチェックできるサイト (MozillaチームのDennis Jackson氏によるもの)






