オルタナティブ・ブログ > 一般システムエンジニアの刻苦勉励 >

身の周りのおもしろおかしい事を探す日々。ITを中心に。

クラウドコンピューティングにカオスが必要な理由

»

クラウドコンピューティングって無敵だなぁと思うことばかりだったのですが、珍しくそうでもない事例を見つけました。

YAMDASさん経由で発見したのはこちらの記事です。

Why Cloud Computing Needs More Chaos
クラウドコンピューティングにもっと「カオス」が必要な理由

Virtual machines, which perform like physical machines but are simulated with software, have fewer sources of entropy:

(物理機器であるかのように振る舞う仮想マシンはエントロピーが小さい)

"The fundamental issue is that with virtualized hardware, many of those random variations don't exist."

(仮想マシンの根本的な問題は「でたらめさ」が足りないことだ)

と、いうことです。前提条件として、そのへんのパソコンは別としてサーバ上で実行されるような本気度の高いプログラムでは、乱数を発生させるにもソフトウェアに頼らない方法が用意されています。HSM(Hardware Security Module)などと言われる専用の物理乱数を生成する装置を取り付けて熱雑音(というのもよく存じませんが)から物理的に「でたらめ」な数を生成するという方法があるそうです。USBで物理乱数を生成する製品なんていうのもありますね。

では乱数を物理的に生成しないと何が問題なのでしょうか。ソフトウェアで乱数を生成する場合、プログラミング経験のある方はご存知と思いますがランダムシードを与えて乱数生成関数を初期化するような操作があります。簡易的にはランダムシードにそのときの時刻を与えるのですが、同じランダムシードを与えると同じ順番で同じ乱数が出てきてしまいます。ジャンケンゲームならともかく、これでは暗号の合言葉を生成するなどのシビアな用途には向かないことになります。同じ条件を再現されたら合言葉がばれてしまいます。

そこでリンク先にもあるのですが、キーボードやマウスを使って人間の適当さという能力を借りてめちゃくちゃな入力をさせ、それによりランダムシードを生成したり、HDDの回転のぶれから読み取り速度の揺らぎを利用したり、またオーディオのラインインデバイスのノイズや、外からのネットワークパケットの到着間隔などが「でたらめ」なものとして利用されます。お手軽なHDD暗号化ソフトのTrueCryptなどでは「しばらくマウスをぐりぐりしてください」という機能がありますが、あれが「でたらめ」さを確保している操作そのものです。人間ってすばらしい。

仮想化には大きく2つのパターンがあり、ハイパーバイザー系とアプリケーション系があります。ハイパーバイザー系であれば、Trusted Platform Module(TPM)を仮想化するvTPMという技術があるそうで、物理乱数生成装置からの出力を仮想OSに安全に引き渡すことができるようです。しかしアプリケーション系の仮想化となると入出力はホストOSが計算して引き渡すものになってしまうため、上であげたような様々なランダムさを保証することが難しくなるかもしれません。もちろんvTPMから供給された乱数が別の仮想OSから読み出されてしまうというのは仮想OS自身のセキュリティ機能により制限されます。(しかし間接情報と言われるもの、例えば自分の仮想OSから同じHW上の別の仮想OSの負荷上昇が、ディスクのレスポンスなどの悪化により察知できてしまう問題は仕方ないかもしれません。)

オンプレミスで仮想化技術を使う間はそれほど大きな問題も思い浮かびませんが、クラウドコンピューティングでPaaSを利用するようなケースだとどうでしょうか。攻撃対象のサービスと同じクラウドサービスベンダーに同じと思われるメニューで基盤サービスを申し込み、乱数系のモジュールを設置して乱数の発生傾向を解析すれば、どのようなアルゴリズムで乱数が生成されているのかを突き止めることができるかもしれません。それにより攻撃対象のサービスで使用されている暗号強度を脅かすかもしれません。

これは本質的には物理乱数供給ができないケースがあるというアプリケーション型の仮想化の弱点であるわけですが、同じ構成のサーバを誰にでも供給してしまうというクラウドコンピューティングの特性と組み合わせになることで脅威が増すというおもしろいケースだと思います。ちなみに物理乱数が供給されるとなれば同じ装置からどれだけ大量の乱数を受け取ろうとも脅威はないはずです。(装置にクセがあり、分布のバラつきがあることがばれるかもしれませんが)

おそらくクラウドコンピューティングの基盤としてはハイパーバイザー系の仮想化が主流であり、暗号化サービスもvTPMのような規格によりきちんとした物理乱数が提供されるものと思います。ひょっとしたらアプリケーション系の仮想化でも物理乱数生成だけは物理から通すとかそういう技術の製品があるかもしれません。しかし「まさか大丈夫だろう」という思い込みで利用して痛い目に合うことのないようにしたいものです。

Comment(0)