[Optiga TPM] TPM1.2 工廠測試SOP範例

一、前言: 

OEM、ODM,產線端經常需索取生產SOP。
 
由於不同產品會搭配其他應用,穿插在其中,所以我依據經驗,提出產線流程建議與注意事項說明,提供產線端參考應用,自行開發出符合貴公司流程的生產SOP,或是系統端驗證的使用參考。
 
主要是上件後如何確認TPM IC 是否運作正常,以及出貨前TPM需確認旗標狀態。
 
雖然我們提供不同OS 平台環境下的工具,但強烈建議使用UEFI Shell。
理由是: Window作業系統,會自動配置啟用TPM。DOS 運作於Legacy BIOS。Linux 須掛driver。都比較麻煩,因此UEFI Shell相對的比較單純,若要使用TXT Provisioning 也可在相同環境設置。
 

 

二、工具:

 TPM Tool壓縮檔中,已包含所支援OS種類的Tool版本。

 TPM1.2 的壓縮包是Tool4TPM 6.02.0.0.zip

包含 DOS,Linux(ARM,x64,x86),UEFI(x64),Win(x64,x86),四種環境版本。
參數使用方法與注意事項說明請參見,各別目錄中ReadMe.txt
產線搭配TPM1.2的command file
  1. PHY_LLO.TXT
  2. NV_DS.TXT
  3. NV_LIST.TXT
  4. NV_LOCK.TXT

 

 

三、注意事項(TPM1.2 DOS) :

 DOS版本須在 Extend memory 下執行(參見ReadMe.txt 章節1.1),所以請先至

下載 CSDPMI DPMI Host
解開後,再將BIN\CWSDPMI.EXE copy 至 Tool4TPM.EXE 同一目錄中 。

 

 

四、注意事項(Windows):

 在選用Windows版本時須先安裝low level driver,且操作身分須為Administrator。(參見ReadMe.txt 章節1.1)

 
Win 8以後版本會對TPM自動預先配置,也就是會Enable TPM 且設置owner。
 
但產線端的測試,通常會使用一顆硬碟,測試所有的板子或TPM daughter card。
因此易造成測試上一些不可預期的狀況。
 
建議測試用的硬碟(硬盤)安裝Windows OS後,先進行關閉自動配置。
該如何關閉預先配置,可參考微軟技術網頁
Disable-TpmAutoProvisioning
 
由於自動配置為預設,所以第一顆TPM IC 應該已經被Enable 並set owner。
因此第一顆,需做TPM Clear 。
 
TPM Clear 可於搜尋欄中輸入 TPM.MSC [Enter],於右方選項來執行(Clear TPM…)。

 

 

五、注意事項(Debug需求):

 TPM1.2

請修改Tool4tpm.cfg 內的level = 2、或3存檔(level越大,耗時越長,一般使用2即可)
執行ToolTPM,選按 “I”、”T”、”R”、”Q”
請將Tool4tpm.log 與問題描述,寄給代理商FAE
 

 

六、注意事項(TPM1.2 NV Storage):

 NVM(Non-volatile memory),是TPM功能之一,主要是提供給系統廠商,或終端客戶,用來存放一些認證,或私密確認碼的地方。

 
在使用上,必須先經過規劃,設定Index、Attribute、Size,然後才能存取資料。
因為安全性考量,避免規劃的設定被竄改,必須上鎖(執行NV_LOCK)。
 
由於NV_LOCK是一次性,一旦Lock之後,就無法UN Lock,也無法再做任何規劃設定。 若沒有Owner authorization 就無法修改原先規劃的區域屬性。
 
在微軟文件 windows8-hardware-cert-requirements-system.pdf 有提到需驗證NV_LOCK是否已設置。
以及BIOS必須支援 TCG Physical Presence Interface 1.2(PPI 1.2)的規格。
 
但文件上並沒有提到如何規劃與設定,以及提供使用的工具軟體。所以我們也無法提供任何的使用上建議。若需要明確知道如何使用,請尋求微軟協助。
 
已知 PPI 1.2文件中提及,需在NVM保留0x50010000的Index,存放一些Flag status。通常這個Index 在初次開機的階段,會由BIOS Create起來。 在NV_Lock之前需確認此Index是否已在NVM建立。
 
如何進行NV_LOCK有兩種情況:
1. 若系統包含Intel® TXT(Trusted Execution Technology) ,在Intel提供的工具組,可讓廠家對NVM規劃,並在最後的步驟會執行NV_LOCK。
 
但在進行該Intel工具進行配置TPM 的NVM之前,仍應檢查該系統TPM的NVM中是否已被BIOS建立0x50010000的Index?
 
可使用tool4tpm工具,帶入讀取NVM的Index list 來檢查。
Command 如下:
Tool4tpm –commandfile nv_List.txt nv_list.out
檢查nv_list.out內容,從最後4個byte為一組,代表一個Index,搜尋是否有50 01 00 00 的Index,作為確認。
 
2. 若沒有使用 Intel® TXT,可參考SLB9660TT1.2_AN_ManufGuideline_Rev1.00_2013-03.pdf第三章有詳細說明。以及Annex A.有相關指令的範例。(註,SLB9660TT1.2_AN_ManufGuideline此文件須從MyInfienon 帳號下載,有關帳號申請,請洽代理商。)
 
透過使用Infineon 的測試工具,tool4tpm 帶入command file方式,直接做NV_LOCK來通過WHQL檢測。
在執行下列command進行Lock之前,仍須如前段落說明,確認Index 0x50010000已存在。
Command 如下:
tool4tpm –commandfile nv_lock.txt nv_lock.out
 
檢查Index 範例說明
使用Note開啟nv_list.out,如下,每四個Byte為一組,找到一組50 01 00 00(紅字顯示),表示該Index已存在NVM中:
00 C4 00 00 00 22 00 00 00 00 00 00 00 14 30 00 00 01 10 00 F0 00 50 01 00 00 10 00 00 01 50 00 00 01 50 00 00 03
 

 

七、注意事項(TPM1.2 Setting physicalPresenceLifetimeLock):

 參考SLB9660TT1.2_AN_ManufGuideline_Rev1.00_2013 03.pdf 第二章節,該章節說明

PhysicalPresenceLifeTimeLock 的重要性,以及相關旗標值的必須注意事項。
 
Physical Presence有兩種路徑選擇來達成 Enable/Disable 的動作。
若要使用HW(pin 7) PP pin ,來做 Disable/Enable ,則須設定 PhysicalPresenceHWEnable
為 1 PhysicalPresenceCMDEnable 為 0 。
若使用SW(BIOS command) command),來做 Disable/Enable ,則須設定PhysicalPresenceHWEnable 為 0,PhysicalPresenceCMDEnable 為 1 。
 
PhysicalPresenceLifeTimeLock是對 PhysicalPresenceHWEnable 和PhysicalPresenceCMDEnable 選用設定的上鎖,上鎖之後,就不能更改 HW/SW 選定的方式。
 
所以在進行PhysicalPresenceLifeTimeLock 上鎖之前,須確保 PhysicalPresenceHWEnable 和
PhysicalPresenceCMDEnable 兩路訊號,至少要有一路為開啟 (1 /Enable) 。
 
注意 若兩路皆關閉的狀態下,進行上鎖的動作 ,將導致該 TPM 無法再被使用,無法使用軟
體或硬體的方式復原。
 
現在常用的是CMD 的方式, HW 已經不太使用了。
後面提供兩種設定PhysicalPresenceLifeTimeLock 的參考範例。
 
1. 如何BIOS 方式進行 PhysicalPresenceLifeTimeLock 設定?
在 BIOS 加入 TPM_Presence_LifetimeLock 的 function 。
此function 在最初第一次呼叫,會 return no error 。
爾後每次開機呼叫該 function ,會 return 0x00003 的錯誤,這是正常 因為已經設定過 )),請忽略該錯誤訊息。
BIOS 設定 可避免產線檢查時,發生人為疏忽的情況,而報廢 IC 。
 
2. 如何在產線以人工方式進行 PhysicalPresenceLifeTimeLock 設定?
先設定PhysicalPresenceCMDEnable(執行“tool4tpm automenu 1”)
然後檢查 PhysicalPresenceCMDEnable(執行 tool4tpm automenu I 察看 physPresCMDEnbel : 1)
確認後再設定PhysicalPresenceLifeTimeLock(執行 "tool4tpm -ccommandfile phy_llo.txt phy_llo.log")
再次檢查PhysicalPresenceLifeTimeLock (執行 "tool4tpm –automenu I”察看 physPresLifeTimeLock : 1)
 

 

八、TPM1.2  產測SOP範例:

 

  

九、TPM1.2 Flag check 建議參數:

 若使用flagchk.txt 檔案內的參數為檢查條件,注意須將 FIRWARE 與 ROMCRC 修改為實際 IC

的版本,其餘 Flag 可參考下列檢測值。
 
[VERSION]
FIRMWARE = 01.02.03.16
ROMCRC = 9AE5
 
[Persistent_flags]
Disable = 1
Ownership = 1
Deactivated = 1
ReadPubek = 1
DisableOwn
erClear = 0
PhysPresLifetimeLock = 1
PhysPresHWEnable = 0
PhysPresCMDEnable = 1
operator = 0
nvLocked = 1
readSRKPub = 0
tpmEstablished = X
 
[Volatile_flags]
Deactivated = 1
DisableForceClear = 0
PhysicalPresence = 0
PhysicalPresenceLock = X
GlobalLock = 0

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論