Wednesday, November 9, 2011

UEFI Secure Boot的兩三事

(從 http://dreamundream.blogspot.com/ 轉移過來)


昨天把UEFI Specification 2.3.1的第27章複習一次,增加對Secure Boot的了解。之後跟微軟的WINDOWS 8 UEFI Logo Requirement (draft)的內容交叉比對。

UEFI Specification是一個相當的中立規格。不可否認UEFI Specification的敘述常常寫得過於模糊,故意把相當的細節丟給設計者,不過也建議設計者把最後的決定權留給使用者。這樣的設計不但把彈性留給了使用者,同時也是一種尊重 - 相信使用者做出對他們最有利的決定。

簡單來說,UEFI制定Secure Boot是為了防止惡意程式在使用者不知情的情況下執行並竊取重要資料。因此,UEFI定義了系統韌體(BIOS)只會執行「被信任」的程式:

1. 系統的設計者(OEM)信任的程式:直接寫入出貨的BIOS「被信任」的資料庫。
2. 作業系統信任的程式:作業系統可以更新「被信任」的資料庫。
3. 使用者信任的程式:當程式不在BIOS的信任名單中,BIOS會提醒使用者並讓使用者決定是否把程式加入「被信任」的資料庫(註1)。

註1:在UEFI Specification 2.3.1第1457頁包含以下文字「If the user approves of the UEFI image, then the UEFI image’s signature is saved in the firmware’s signature database.」

相對之下,微軟的的requirement對使用者就沒有如此的友善。

由於微軟的文件並非公開,不在此詳細討論裡面的內容。但簡單來說,微軟的Secure Boot限制了「使用者信任的程式」 - 並沒有使用者自行增加的選項,使用者的彈性完全移除(只信任1 + 2)。換句話說,使用者不再完全「擁有」他們購買的機器。他們擁有的權力被控制在「1 + 2」的手上 - 縱使他們已經付錢給「1」買了物品,而且想要更換不同「2」的產品。姑且不提很多網路上所謠傳的陰謀論(註2),但是限制使用者使用他們購買的機器的作法,只怕同時間也傷害了使用者反饋的信任感。

註2:很多人相信Secure Boot會把開源軟體的作業系體阻擋在PC的大門外。

Security和Usability並非容易兼顧,但也不是mission impossible。我們研發人員在設計的時候更要努力把專家的傲慢收起來,才能提供給我們的客戶 - 最終的使用者既安全又友善的環境。

No comments:

Post a Comment