2012-11-21

Linux財団が自前軽量ブートローダーをMSのUEFI鍵で署名してもらうのに四苦八苦

[Phoronix] Linux Foundation Struggles With Microsoft UEFI Signing

Linux財団が過去に発表したUEFIに対する方針とは、自前の軽量ブートローダーを用意し、それをMS鍵で署名して、その軽量ブートローダーが実際のブートローダーをブートするという仕組みを作るというものだ。問題は、その軽量ブートローダーの署名プロセスに手間取っている。

まず、ブートローダーを署名してもらうためには、VerisignかSymantecの認証局による署名鍵が必要だ。それを超えたらMSの秘密鍵でブートローダーを署名してもらうために、マイクロソフトのWebサイトでブートローダーをアップロードするのだが、このWebサイトのアップローダーが、こともあろうかSilverlightで実装されている。MonoベースのMoonlightでは正しく動作せず、結局、ブートローダーのアップロードには不自由なWindowsを使わなければならない。

今時Silverlightを使うとは何と時代錯誤な。私にとっては、FlashやSilverlightは、パンチカードと同等に聞こえる。

さらに、マイクロソフト側でも何かおかしいことが発生しているらしく、特別な後から無効化できる鍵を関連付けるのではなく、単なる汎用の鍵で署名するのみだという。これでは使えない。UEFIは、後から特定のバイナリを無効化できるからこそ、暗号理論的にはまともであるのに、その無行こうかができないとは。

しかし、Linux財団の方針は、UEFIの思想とは合わないような気がする。

UEFIは、ブートローダーレベルからバイナリを認証する。この認証というのは、バイナリが改変されていないことを保証する。これにより、例えばマイクロソフトの出荷から、顧客の手元に届くまで、ブートローダーが悪意ある者により改変されていないことを保証できる。

そして、UEFIの思想に従えば、UEFIによって制御が渡された最初のブートローダーも、その後のより高機能なブートローダーや、あるいは直接OSを認証して、改変されていないことを保証する。OSも、ドライバーを認証して、改変されていないことを保証する。と、このように認証が連続して続くべきなのだ。

この方法は、あくまで途中の改変を防ぐだけであり、大本からして悪意あるプログラムを認証して配布する問題は防げない。ただし、特定のバイナリは、後から認証を取り消しできる仕組みがある。これにより、悪事が発覚した後は、広範な影響を与えることが難しくなる。

この仕組みは、UEFIだけではなく、SSLでも同じだ。SSLが保証するのは、経路途中の改変や傍受がなされていないことであり、Webサイトに悪意がないかどうかは保証しない。ただし、ひとたび特定のWebサイトに悪意のあることが発覚したならば、認証局は取り消しができる。

UEFIで問題になるのは、最初のUEFIによって認証されるブートローダーを認証する公開鍵だ。この公開鍵は、あらかじめUEFI側に格納されていなければならない。UEFIに格納するというのは、マザーボードの出荷段階で書き込んでおかなければならない。では、その秘密鍵は誰が管理するのか。認証局は誰が引き受けるのか。

UEFIはマイクロソフトが音頭を取って主導したので、今のところ、マイクロソフトが唯一の認証局として機能している。マイクロソフトは、いかなるバイナリでも、Verisignの認証を受けた者が提出したバイナリであれば、機械的に署名する。バイナリに問題があれば、あとから無効化する。

FedoraのUEFIへの対応は、UEFIの思想にあうものだ。まずマイクロソフト鍵により署名された軽量ブートローダーをUEFIに認証させて制御を移し、軽量ブートローダーは署名されたブートローダー(GRUB2)を認証して制御を移し、GRUB2はOS(Linuxカーネル)の署名を認証してOSに制御を移し、Linuxカーネルはモジュールを認証する。

ところが、Linux財団の方針を聞いている限りでは、どうも違うような気がする。署名されたLinux財団の軽量ブートローダーは、その後一切認証せずに設定されたバイナリに制御を移すそうだ。これではUEFIの目的が損なわれないだろうか。そのようなブートローダーは無効化されるのではないか。

UEFIは、本当に正しく実装されれば、すばらしいものである。何故ならば、利用者はマイクロソフトの鍵をUEFIから取り除いて、マイクロソフトの不自由なソフトウェアの実行を拒否することができるからだ。しかし、経験的に、マザボベンダーのファームウェアの実装はひどいものであり、複雑なUEFIの実装には、まず確実に欠陥が生じるだろう。

少なくとも、マザボベンダーは、ともかくもWindowsをブートすることに注力するので、たまたまWindowsは特定のUEFIの規格違反の実装でも起動するところ、その他のOSは起動しないということが、頻繁に起こる。従来のBIOSでも頻繁に起こっているのだから、より仕様が複雑なUEFIではなおさら頻繁に起こるだろう。そのような規格違反のUEFIの実装による認証が信頼できるだろうか。

No comments:

Post a Comment

You can use some HTML elements, such as <b>, <i>, <a>, also, some characters need to be entity referenced such as <, > and & Your comment may need to be confirmed by blog author. Your comment will be published under GFDL 1.3 or later license with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.