ディスカッション (8件)
なぜセキュリティの専門家はラバランプを並べて乱数を作ろうとするのか?一見無意味にも思えるこの手法が、暗号学においてどのような役割を果たしているのか、その背景にある「真のランダム性」の概念を分かりやすく紐解きます。
ラバランプについての最初の投稿は覚えてないけど、あれはエントロピーが何かってことを一般の人にも分かりやすく伝えるための、単なるマーケティングのギミックだと思ってたわ。確かにエントロピーの生成としてスケーラブルな解決策じゃないし、それ単体に頼るには故障する要因が多すぎるよね。
ワンタイムパッドこそが唯一の「真に強力な」暗号化だという理解なんだけど、ペアになったハードドライブの市場がないのが不思議でならないよ。同じワンタイムパッドを保存したペア(どうやってその乱数を生成するかは、それを売る企業の腕の見せどころだね)があればいいのに。
メッセージの送受信側で簡単なアプリを使えば、ドライブをパッド代わりにして暗号化できるはず。
もし片方のドライブが侵害された(盗まれたとかね)と分かったら、もう片方を破棄すればいい。
(ドライブ自体をコピー困難な設計にすれば、物理的に所持している必要があるから、当事者が知らない3つ目のドライブが存在する可能性も低くできるんじゃないかな。)
もしそれが破られたら…終わりだ、残念。暗号化もCSPRNGも同じ暗号方式に依存しているから、どっちかが破られたらシステム全体が崩壊するんだよ。
必ずしもそうとは言い切れないかな。CSPRNGの状態は理論上サイドチャネル攻撃で漏洩する可能性がある。暗号鍵もサイドチャネルで漏れることはあるけど、共通鍵暗号の鍵は短期間で使い捨てられることが多いからね。
暗号学的なセキュリティ・シアター(形だけのセキュリティ)としては、ラバランプを使ってるくらいなら目くじらを立てるほどでもないかな。
記事に「初期シードの取得方法」っていうセクションがあって、いろいろ例が挙げられてるのに、なぜかラバランプの壁がリストに入ってないのはどういうことだ。
実際には何の意味もないんだけど、Cloudflareみたいに暗号学的にしっかりした組織がやっている以上、状況を悪化させているというストーリーを作るのは難しいと思う。彼らが使っている既存の堅牢なCSPRNG(ほぼ間違いなくLinuxカーネルのRNGだよね)に混ぜ込んでいるだけだし。
予測不可能なソース(または複数のソース)をデジタル録音して256ビット以上のエントロピーを確保し、それを256ビットのハッシュ関数(SHA-256やBLAKE2sなど)でハッシュ化すれば、ほら、マスターシードの出来上がり。
SHA-256って、あらゆるソースに対して良い「抽出器(extractor)」とは言えないんじゃない?SHA3の方が向いてるかも。
もっと厳密な話をするなら、乱数抽出や生成に関する構成法(HKDFやNIST SP 800-90AのDBRGなど)があるよね。