軟件許可內部碼

軟件許可內部碼Software Licensing Internal Code),是Windows VistaWindows 7作業系統中一項關於產品激活(Product activation)的技術。

概述

微軟公司用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 Description Table,軟件許可描述表)中的,SLDT長374位元組。而SLDT寫在ACPI(Advanced Configuration and Power Management Interface,高級配置和電源管理接口)。

運作模式

Windows XP OEM版激活,使用的是微軟SLP 1.0。SLP(Software Licensing and Protection,軟件許可和保護)服務是一項軟件激活服務,使獨立軟件開發商為他們的用戶採取靈活的軟件許可條款。該1.0版本的激活技術並未使用數字簽名技術,而是一段明文標識,比較容易被破解。

Windows Vista和Windows 7,取消了其他大客戶版本,僅保留OEM版激活。其並使用的是微軟SLP 2.x,公鑰取代了明文,給破解造成一定的困難。SLP 2.x技術的驗證具體過程如下:

  1. 當安裝的時候,零售版本用戶需要輸入光盤盒上的序列號(CD-KEY)。對於隨機購買了OEM版本Vista的用戶,可以在主機上找到一個相應版本的標籤,作為購買OEM版的憑證。標籤上面有一個帶有象徵意義的序列號,因為OEM版本的用戶並不需要輸入序列號。系統根據序列號識別Vista的不同版本,如基本家庭版、高級家庭版、商業版、旗艦版等。安裝完畢後,序列號會被轉換為四組字母或數字,即在「系統屬性」里看到的「產品ID」。其中第二組是「OEM」的,即為OEM版本的序列號(CD-KEY)。從這裏開始,產品ID代替了CD-KEY。同時,安裝程序為OEM版本的安裝生成一個OEM證書
  2. 當每次系統啟動時,BIOS里的信息就會被加載到內存中。
  3. 當登錄系統之後,系統調用SLP服務,驗證作業系統的許可權,尤其是激活狀態。開始根據產品ID來識別系統的授權狀態。如果沒有檢測到產品ID或者沒有檢測到合法的零售版產品ID,則視為未激活。如果檢測到合法的零售版產品ID,則視為成功激活。如果檢測到OEM版的產品ID,則繼續驗證。
  4. 如果檢測到OEM版產品ID,驗證過程啟動,並檢查已安裝的OEM證書是否正確。主要是用先前從BIOS加載到內存里的SLIC的公鑰驗證產品證書的數字簽名。如果驗證失敗,則視為未激活。
  5. 驗證ACPI里SLIC與RSDT(Root System Description Table,根系統描述表)的OEM ID字段比較,以及用ACPI里SLIC標誌和XSDT(Extended System Description Table,擴展系統描述表)中的OEM ID和OEM Table ID字段比較,如果不一致,則視為未激活。
  6. 經過以上重重關卡之後,方視為正確的OEM授權,否則視為未激活並按照相關流程處理,例如要求激活。

參見

外部連結