一、自由軟件基金會的呼吁
上周,2012年將近結束的時候,自由軟件基金會(FSF)發出呼吁,要求人們繼續支持反Secure Boot壟斷,希望簽名者能達到5萬人(目前是4萬)。我覺得,這個呼吁很重要。如果我們不支持,未來就無法自由地使用硬件、安裝自己想要的軟件。
這絕非危言聳聽。而且,由於這個事件直接與Windows 8操作系統有關,因此意味著一切已經迫在眉睫了。
下面,我根據自己的理解,談談這到底怎麼回事。如果你是一個Linux愛好者,或者喜歡自己安裝操作系統,下面的內容與你直接相關。
二、BIOS和UEFI
所有電腦啟動的時候,都會運行BIOS程序,用於初始化硬件。
自從個人電腦誕生後,就一直如此。過去30年我們都在使用類似上圖的畫面,設置硬件參數。不用說,BIOS已經變得日益不適用了。
1998年,Intel牽頭,聯合AMD、AMI、Apple、Dell、HP、IBM、Lenovo、Microsoft和Phoenix等業界主要廠商,開始制定新一代BIOS。這個項目叫做"統一的可擴展固定接口"(Unified Extensible Firmware Interface),簡稱UEFI。2005年推出1.1版,目前是2.3版。
將來一開機,電腦運行的將不是BIOS,而是UEFI BIOS。等它運行結束,再載入操作系統。
三、微軟的態度UEFI是一個很先進的、面向未來的規格。但是很長時間內無法推廣,原因就是微軟公司不支持。
Windows操作系統是桌面市場的主流系統,如果它不部署UEFI代碼,就沒有硬件廠商會跟進。所以,普通消費者對這個新規格所知甚少。
意想不到的變化,出現在2011年9月,微軟毫無預兆地突然宣布,Windows 8將支持UEFI。
這本來是一件好事。但是,問題是微軟感興趣的不是整個UEFI,而是UEFI的一個子規格Secure Boot。它要強行部署Secure Boot。
四、Secure BootSecure Boot只是UEFI的一個部分。兩者的關系是局部與整體的關系。
Secure Boot的目的,是防止惡意軟件侵入。它的做法就是采用密鑰。UEFI規定,主板出廠的時候,可以內置一些可靠的公鑰。然後,任何想要在這塊主板上加載的操作系統或者硬件驅動程序,都必須通過這些公鑰的認證。也就是說,這些軟件必須用對應的私鑰簽署過,否則主板拒絕加載。由於惡意軟件不可能通過認證,因此就沒有辦法感染Boot。
這個設想是好的。但是,UEFI沒規定哪些公鑰是可靠的,也沒規定誰負責頒發這些公鑰,都留給硬件廠商自己決定。
現在,微軟就是要求,主板廠商內置Windows 8的公鑰。
五、Windows 8首先明確,在不打開Secure Boot的情況下,Windows 8可以安裝。這與安裝以前版本的Windows沒有差別。
但是,微軟規定,所有預裝Windows 8的廠商(即OEM廠商)都必須打開Secure Boot。因此,消費者購買一台預裝Windows 8的台式機或筆記本,想要在上面再安裝其他操作系統(包括以前版本的Windows)是不可能的,除非關閉Secure Boot,或者其他操作系統能夠通過Windows 8公鑰的認證。
如果選擇關閉Secure Root,那麼預裝的Windows 8將無法使用,需要重新安裝。
六、實例:微星主板ITwire的記者Sam Varghese,做了一個實驗,想了解在打開Secure Boot的主板上,如何安裝操作系統。
實驗對象是微星公司Z77A-G41主板。它帶有Secure Boot功能,默認是關閉的。
第一步,開機後按Delete鍵,進入BIOS,選擇Windows 8 Configration選項。
第二步,選擇最後一個Secure Boot選項。
第三步,打開(Enabled)Secure Boot功能,然後選擇最後一個Key Management(密鑰管理)選項。
第四步,輸入廠商提供的公鑰,也就是Windows 8的公鑰(目前,任何其他操作系統都沒有這類公鑰。)
第五類,安裝Windows 8之後,在命令行界面輸入confirm-securebootuefi命令,結果為true,表示secureboot功能打開。
根據Sam Varghese測試,打開Secure Boot之後,再安裝其他操作系統(包括以前版本的Windows),全部被主板拒絕。
七、對Linux的影響Secure Boot規格的本意是,讓操作系統廠商自行選擇公鑰,通過認證。但是實際上,只有微軟公司才有能力,讓主板廠商內置它的公鑰,其他公司都不具備這種能力。
因此,如果要在打開Secure Boot的主板上安裝Linux系統,這個系統就必須通過Windows 8的認證。
目前,微軟公司把Windows 8的私鑰委托給Verisign,頒發認證。操作系統廠商想要通過認證,就必須花99美元,向Verisign買一張數字證書,嵌入自家的操作系統。
最新動態是,Linux的各個發行版之中,Ubuntu已經購買了數字證書,Fedora和SUSE計劃購買,其他發行版還沒做出決定。
因此,在預裝Windows 8的電腦上安裝Linux(或其他操作系統)的最佳做法,就是進入BIOS,關閉Secure Boot。但是,這意味著你花錢買來的Windows 8將無法使用,而且對於普通用戶,這種操作有一定難度。
八、為什麼Windows 8的公鑰不可接受?目前看上去,Linux購買Windows 8的數字證書,是眼下唯一可行的相對容易的解決方法。但是,這種做法不可接受。
首先,系統的公鑰被微軟控制,後果難以預料。如果微軟決定更換和廢除這個公鑰,Linux就要被迫跟進。
其次,Linux的啟動管理器Grub是GPL許可證,該許可證(第三版)明文禁止軟件附帶非GPL許可證下的密鑰,因此要改用非GPL許可證的啟動管理器。
再次,只有幾個較大的Linux發行版才有能力購買數字證書,較小的發行版和用戶自己定制的版本最終還是需要有自己的公鑰。
九、關於移動設備Secure Boot對移動設備的影響,比PC還要嚴重。
微軟明確規定,所有PC主板必須帶有關閉Secure Boot的選項。這不是因為微軟的善意,而是因為如果不這樣做,它一定會遭到反壟斷起訴。
但是,在移動設備領域,微軟不占優勢,所以它就沒有顧慮,規定所有安裝Windows的移動設備的Secure Boot必須打開,而且沒有關閉選項。
微軟的平板電腦Surface RT就是一個最好的例子。它的Secure Boot是打開的,沒法關閉,而且微軟用了一個不同於桌面電腦Windows 8操作系統的公鑰,且不提供獲得數字證書的途徑。因此理論上,用戶不可能在Surface RT上安裝其他操作系統。
還有報道稱,使用Windows Phone 8操作系統的智能手機也將采用這種做法。那麼,用戶也就不可能在Windows Phone上安裝其他操作系統了。
十、結語Secure Boot的本來用意是保證系統安全,但現在似乎成了廠商保護市場壟斷、阻礙競爭一種手段。
除了微軟公司,蘋果公司也有這種傾向。在新一代的iPhone和iPad上面安裝其他操作系統,似乎是不可能的。
自由軟件基金會呼吁反Secure Boot壟斷,就是基於這種考慮:用戶應該擁有硬件和軟件的使用自由,操作系統應該是開放的,而不是封閉的。
作為一種規格,自由軟件基金會並不反對Secure Boot,它只是要求硬件廠商提供便利,使得用戶可以更容易地安裝和管理公鑰,從而使用硬件平台對所有操作系統(以及設備驅動)保持開放。
我認為,這是完全合理的要求,對於保證用戶的自由和業界的健康生態極為重要。讓我們一起支持這個行動(簽名和捐助),密切關注事態下一步的發展。