Friday, July 19, 2019

微軟Windows的SLIC激活技術

在軟件業,尤其指代微軟的操作系統激活技術範疇時,SLIC全稱是Software Licensing Internal Code,即軟件許可內部碼。

微軟公司用SLIC來控制用戶對OEM版本的非法使用。OEM(Original Equipment Manufacture)的基本含義是定牌生產合作,俗稱“代工”。微軟為特定的合作夥伴發放操作系統的OEM版本,以滿足合作雙贏的需求。這些OEM版本的操作系統隨機器預安裝,並採用批量許可的授權模式。這樣的批量許可難以有效識別合法用戶和非法用戶,可能被濫用而導致版權問題。為了控制這個問題,微軟規定在安裝每一個操作系統時將其激活。OEM可在安裝過程中根據OEM和批量許可的媒體安裝映像。OEM銷售的大部分系統包括由製造商預激活的Windows Vista標準版。

  一般認為主板是硬件升級中最不可能更換的部件,甚至有觀點認為,主板的更換約等於整台機器的更換。要有效識別一台機器是否為OEM合法用戶,可以在每台預裝操作系統的機器主板上,在BIOS里寫入特定的信息,來標示這是一台OEM合法用戶的機器。這樣的信息就是SLIC。不同的OEM廠商的SLIC不同,所以他們的OEM操作系統不能混用。在沒有預裝系統的機器,即便是品牌機,也不會含有SLIC信息。這樣,OEM版的操作系統就可以限定在OEM機器上使用。

  SLIC一般是寫在SLDT(Software Licensing Des cription Table,軟件許可描述表)中的,SLDT長374字節。而SLDT寫在ACPI(Advanced Configuration and Power Management Interface,高級配置和電源管理接口)。

  微軟從Windows XP 開始引入了SLP(System-Locked Preinstallation)技術, 用於OEM產品的輔助激活。SLP僅用於OEM產品,只會在零售版戒批量授權產品中出現。

  軟件許可和保護SLP(Software Licensing and Protection)服務是一項軟件激活服務。每次啟動之後,BIOS里的信息就會被加載到內存中。登錄系統之後,系統會調用SLP服務驗證操作系統的許可權,尤其是激活狀態,開始根據產品ID來識別系統的授權狀態。如果是OEM版本,會檢查已安裝的OEM證書是否正確。

  Windows XP採用的是SLP 1.0版,其原理是檢測BIOS中是否存在由OEM硬件廠家設置的特定SLP字串,如果有,則認為軟件為OEM合法授權,成為激活狀態;否則,則要求用戶輸入OEM硬件附帶的COA號碼,並通過網絡或電話激活軟件。

  Windows Vista操作系統中,升級了SLP技術為2.0版。SLP 2.0根據1.0的不足,加強了驗證的技術,使其由簡單的驗證字串,變為驗證BIOS中的SLP證書、標誌以及硬件相關的特徵。SLP 2.0在BIOS的ACPI中擴展出了一個新表-SLIC,用於儲存SLP證書公鑰(SLP PubKey)以及SLP授權標誌(SLP Marker)。

  Windows7採用的是SLP 2.1,用先前從BIOS加載到內存里的SLIC的公鑰驗證產品證書的數字簽名。如果驗證失敗,則視為未激活。

SLP 2.0技術的驗證具體過程如下:

  1、當Vista安裝的時候,零售版本用戶需要輸入光盤盒上的序列號(CD-KEY)。對於隨機購買了OEM版本Vista的用戶,可以在主機上找到一個相應版本的標籤,作為購買Vista OEM版的憑證。標籤上面有一個帶有象徵意義的序列號,因為OEM版本的用戶並不需要輸入序列號。系統根據序列號識別Vista的不同版本,如基本家庭版、高級家庭版、商業版、旗艦版等。安裝完畢後,序列號會被轉換為四組字母或數字,即在“系統屬性”里看到的“產品ID”。其中第二組是“OEM”的,即為OEM版本的序列號(CD-KEY)。從這裡開始,產品ID代替了CD-KEY。同時,安裝程序為OEM版本的安裝生成一個OEM證書。

  2、當每次系統啟動時,BIOS里的信息就會被加載到內存中。

  3、當登錄Vista系統之後,系統調用SLP服務,驗證操作系統的許可權,尤其是激活狀態。開始根據產品ID來識別系統的授權狀態。如果沒有檢測到產品ID或者沒有檢測到合法的零售版產品ID,則視為未激活。如果檢測到合法的零售版產品ID,則視為成功激活。如果檢測到OEM版的產品ID,則繼續驗證。

  4、如果檢測到OEM版產品ID,驗證過程啟動,並檢查已安裝的OEM證書是否正確。主要是用先前從BIOS加載到內存里的SLIC的公鑰驗證產品證書的數字簽名。如果驗證失敗,則視為未激活。

  5、驗證ACPI里SLIC與RSDT(Root System Des cription Table,根系統描述表)的OEM ID字段比較,以及用ACPI里SLIC標誌和XSDT(Extended System Des cription Table,擴展系統描述表)中的OEM ID和OEM Table ID字段比較,如果不一致,則視為未激活。

  6、經過以上重重關卡之後,方視為正確的OEM授權,否則視為未激活並按照相關流程處理,例如要求激活。

Related Post

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.