Io設(shè)備與硬件安全元件的自動(dòng)配對(duì)的制作方法
【專(zhuān)利說(shuō)明】
[0001 ] 背景
技術(shù)領(lǐng)域
[0002]各實(shí)施例總體上涉及計(jì)算平臺(tái)和/或系統(tǒng)中的安全性。更具體地,各實(shí)施例涉及輸入輸出(10)設(shè)備與硬件安全元件的自動(dòng)配對(duì)。
[0003]討論
[0004]計(jì)算系統(tǒng)(諸如個(gè)人計(jì)算機(jī))可運(yùn)行會(huì)易于受到惡意軟件(惡意軟件)攻擊的主機(jī)操作系統(tǒng)(0S)。為了提高安全性,專(zhuān)用硬件元件(例如,“安全元件”)可被結(jié)合到計(jì)算系統(tǒng)中,其中,該元件可安全地引導(dǎo),僅運(yùn)行與0S和其他基于主機(jī)的軟件隔離的硬件環(huán)境中的受信固件。安全元件因此可以用于以受信的方式實(shí)現(xiàn)安全性和可管理性特征。
[0005]對(duì)于某些使用場(chǎng)景,安全元件可與系統(tǒng)上的其他硬件設(shè)備交互。在這些情況下,因此,可存在危害其他硬件設(shè)備和/或篡改安全元件與其他硬件設(shè)備之間的通信通道的惡意軟件的潛在風(fēng)險(xiǎn)。在某些情形下,安全元件和另一個(gè)硬件設(shè)備之間的通信通道可流經(jīng)主機(jī)
OSo
[0006]實(shí)際上,許多輸入輸出(10)設(shè)備(諸如鍵盤(pán)、鼠標(biāo)、觸摸屏、打印機(jī)等等)可通過(guò)USB(通用串行總線,例如,USB規(guī)范3.0版本,2008年11月12日,USB實(shí)現(xiàn)者論壇)連接到系統(tǒng)。由于硬件限制,這些USB設(shè)備可僅由主機(jī)軟件(諸如0S或B10S(基本輸入輸出系統(tǒng)、UEFI/統(tǒng)一可擴(kuò)展固件接口等等))通過(guò)USB控制器直接訪問(wèn)。相應(yīng)地,當(dāng)使用專(zhuān)用硬件安全元件可能在某些情況下合適時(shí),為改進(jìn)10設(shè)備留出了足夠的空間。
【附圖說(shuō)明】
[0007]通過(guò)閱讀以下說(shuō)明書(shū)和所附權(quán)利要求書(shū)并且通過(guò)參考以下附圖,本發(fā)明實(shí)施例的各種優(yōu)點(diǎn)將對(duì)本領(lǐng)域普通技術(shù)人員變得明顯,在附圖中:
[0008]圖1是根據(jù)實(shí)施例的計(jì)算架構(gòu)的示例的框圖;
[0009]圖2是根據(jù)實(shí)施例的在受信配對(duì)代理和安全元件之間建立受信通道的方法的示例的流程圖;以及
[0010]圖3是根據(jù)實(shí)施例的在安全元件和輸入輸出(10)設(shè)備之間建立受信通道的方法的示例的流程圖。
[0011]詳細(xì)描述
[0012]圖1示出其中輸入輸出(10)設(shè)備12耦合到計(jì)算系統(tǒng)10的計(jì)算架構(gòu)。計(jì)算系統(tǒng)10可包括例如服務(wù)器、工作站、臺(tái)式計(jì)算機(jī)、筆記本計(jì)算機(jī)、平板計(jì)算機(jī)、可轉(zhuǎn)換平板計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA)、移動(dòng)互聯(lián)網(wǎng)設(shè)備(MID)、智能電話、媒體播放器等等。此外,10設(shè)備12可包括例如可用于通信敏感、隱私和/或個(gè)人信息(諸如與各種各樣的應(yīng)用(例如銀行、電子商務(wù)、社交網(wǎng)絡(luò)等等)相關(guān)聯(lián)的登錄、賬戶(hù)和/或財(cái)務(wù)信息)的鍵盤(pán)、鼠標(biāo)、觸摸屏、打印機(jī)等等。
[0013]在一個(gè)示例中,10設(shè)備12是USB設(shè)備,盡管還可使用其他總線配置和/或技術(shù)。因此,10設(shè)備12可以是可僅由在計(jì)算系統(tǒng)10的主機(jī)處理器16(中央處理單元/CHJ)或者B1S18 (基本輸入輸出系統(tǒng)和/或UEFI)上運(yùn)行的軟件直接訪問(wèn)的咼散設(shè)備。相應(yīng)地,計(jì)算系統(tǒng)10和10設(shè)備12之間的通信可能受到基于主機(jī)的惡意軟件的攻擊。如將更詳細(xì)討論的,計(jì)算系統(tǒng)10可被配置成用于當(dāng)10設(shè)備12連接到計(jì)算系統(tǒng)10時(shí)自動(dòng)地將10設(shè)備12與基于硬件的安全元件14配對(duì),從而使得可關(guān)于10設(shè)備12和安全元件14之間的通信避免惡意軟件擔(dān)憂(例如,監(jiān)聽(tīng)、密鑰登錄)。
[0014]總體上,安全元件14可在計(jì)算系統(tǒng)10的早期引導(dǎo)階段期間與B1S18中的受信配對(duì)代理20建立受信通道/關(guān)系,并且利用該受信通道以便在10設(shè)備12耦合到計(jì)算系統(tǒng)10時(shí)與10設(shè)備建立附加受信通道。更具體地,所示出的受信配對(duì)代理20可生成隨機(jī)配對(duì)認(rèn)證值(PAV)并且將PAV存儲(chǔ)到隱藏存儲(chǔ)器空間26。在一個(gè)示例中,受信配對(duì)代理20是系統(tǒng)管理中斷(SMI)處理程序并且隱藏存儲(chǔ)器空間26位于與在系統(tǒng)管理模式(SMM)之外運(yùn)行的代碼隔離的系統(tǒng)管理隨機(jī)存取存儲(chǔ)器(SMRAM)中。因此,所示出的受信配對(duì)代理20的執(zhí)行環(huán)境不能由其他系統(tǒng)軟件預(yù)占。在另一個(gè)示例中,受信配對(duì)代理20是也具有其自身的存儲(chǔ)器空間(例如,AC-RAM)和與不受信代碼隔離并隱藏的執(zhí)行環(huán)境的認(rèn)證代碼模塊(ACM)。
[0015]受信配對(duì)代理20還可在引導(dǎo)過(guò)程(例如,上電自檢測(cè)/POST、轉(zhuǎn)變到SO ACPI/高級(jí)配置和功率接口,例如ACPI規(guī)范,版本5.0a,2011年12月6日等等)期間向安全元件14發(fā)送配對(duì)認(rèn)證值。傳輸配對(duì)認(rèn)證值可被配置成用于在引導(dǎo)過(guò)程中相對(duì)早地發(fā)生(例如,在預(yù)定的B1S階段之前,諸如執(zhí)行第三方代碼,或B1S的選項(xiàng)只讀存儲(chǔ)器/ROM中的固件)以便確保惡意軟件不被給予監(jiān)聽(tīng)或以其他方式篡改配對(duì)認(rèn)證值的機(jī)會(huì)。此外,安全元件14可包括固件22,該固件接收配對(duì)認(rèn)證值并且僅當(dāng)在預(yù)定的B1S階段之前接收到配對(duì)認(rèn)證值時(shí)才接受配對(duì)認(rèn)證值。接受配對(duì)認(rèn)證值可涉及將配對(duì)認(rèn)證值存儲(chǔ)在安全元件14的本地存儲(chǔ)器24 (例如,受信的并且安全的)。拒絕配對(duì)認(rèn)證值可涉及例如節(jié)流請(qǐng)求、拒絕未來(lái)請(qǐng)求、重置計(jì)算系統(tǒng)和/或其他實(shí)現(xiàn)方式特定的行為。配對(duì)認(rèn)證值可通常用在受信配對(duì)代理20和安全元件14之間的后續(xù)通信中以便維持這些組件之間的關(guān)系的受信性質(zhì)。
[0016]當(dāng)10設(shè)備12耦合到(例如,連接到、插入到、注冊(cè)有)計(jì)算系統(tǒng)10時(shí),在主機(jī)處理器16上運(yùn)行的10驅(qū)動(dòng)器堆棧30可與在10設(shè)備12上運(yùn)行的固件32通信以便檢測(cè)10設(shè)備12的存在。此外,在主機(jī)處理器16上運(yùn)行的0S模塊28(例如,主機(jī)配對(duì)請(qǐng)求器)可從10驅(qū)動(dòng)器堆棧30獲得10設(shè)備12的設(shè)備地址并且向受信配對(duì)代理20發(fā)布配對(duì)請(qǐng)求,其中,配對(duì)請(qǐng)求可包括10設(shè)備12的設(shè)備地址。響應(yīng)于接收到配對(duì)請(qǐng)求,受信配對(duì)代理20可生成隨機(jī)配對(duì)密鑰(例如,隨機(jī)或偽隨機(jī)128位數(shù))。
[0017]受信配對(duì)代理20還可向安全元件14發(fā)送包括配對(duì)密鑰、之前所生成的配對(duì)認(rèn)證值和10設(shè)備12的地址的消息。安全元件14可進(jìn)而根據(jù)在引導(dǎo)過(guò)程期間早期接收的配對(duì)認(rèn)證值驗(yàn)證包含在消息中的配對(duì)認(rèn)證值。如果發(fā)現(xiàn)匹配,所示出的安全元件14使用配對(duì)密鑰和地址與10設(shè)備12建立安全通道。
[0018]圖2示出在配對(duì)代理和安全元件之間建立受信通道的方法34。方法34可被實(shí)現(xiàn)為存儲(chǔ)在使用電路技術(shù)(諸如例如專(zhuān)用集成電路(ASIC)、互補(bǔ)金屬氧化物半導(dǎo)體(CMOS)或晶體管-晶體管邏輯(TTL)技術(shù)或其任何組合)的固定功能邏輯硬件中的可配置邏輯(諸如例如可編程邏輯陣列(PLA)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)、復(fù)雜可編程邏輯器件(CPLD))中的機(jī)器或計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(諸如隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(R0M)、可編程ROM(PR0M)、閃存等等)中的防篡改邏輯和/或固件指令集。例如,可用一種或多種編程語(yǔ)言的任何組合編寫(xiě)用于執(zhí)行方法34中所示的操作的計(jì)算機(jī)程序代碼,包括面向?qū)ο蟮木幊陶Z(yǔ)言(諸如Java、Smalltalk、C++等等)以及常規(guī)程序編程語(yǔ)言(諸如“C”編程語(yǔ)言或類(lèi)似的編程語(yǔ)言)。在一個(gè)示例中,在已經(jīng)討論的受信配對(duì)代理(諸如例如受信配對(duì)代理20(圖1)和/或安全元件固件(諸如例如安全元件固件22(圖1)))中實(shí)現(xiàn)該方法。
[0019]所示出的代理框36提供生成隨機(jī)配對(duì)認(rèn)證值(PAV),其中,PAV可在框38處保存在隱藏存儲(chǔ)器空間中。如上所述,隱藏存儲(chǔ)器空間可以與在SMM之外運(yùn)行的代碼隔離???0可在系統(tǒng)的早期引導(dǎo)過(guò)程期間向計(jì)算系統(tǒng)的安全元件發(fā)送PAV。例如,PAV可結(jié)合POST、從S5/S4/S3狀態(tài)到SO ACPI狀態(tài)的轉(zhuǎn)變等等發(fā)送到安全元件。此外,安全元件框42可接收PAV,其中,可在安全元件框44處確定是否在引導(dǎo)過(guò)程的預(yù)定階段之前(例如,在執(zhí)行第三方代碼之前)接收到PAV???4可考慮安全元件可以訪問(wèn)的B10S/UEFI中的各個(gè)標(biāo)記和/或檢查點(diǎn)。如果在預(yù)定階段之前接收到PAV,可在安全元件框46處接受PAV。否則,可繞過(guò)接受PAV(例如,安全元件忽略PAV) ο如果不接受PAV,可實(shí)現(xiàn)其他響應(yīng),諸如例如節(jié)流請(qǐng)求、拒絕未來(lái)請(qǐng)求、重置計(jì)算系統(tǒng)和/或其他實(shí)現(xiàn)方式特定的行為。
[0020]圖3示出在安全元件和10設(shè)備之間建立受信通道的方法48。方法48可被實(shí)現(xiàn)為存儲(chǔ)在使用電路技術(shù)(諸如ASIC、CMOS或TTL技術(shù)、或其任意組合)的固定功能性邏輯硬件中的可配置邏輯(諸如例如PLA、FPGA、CPLD)中的機(jī)器或計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)(諸如例如RAM、ROM、固件、閃存等等)中的邏輯和/或固件指令集。例如,可用一種或多種編程語(yǔ)言的任何組合編寫(xiě)用于執(zhí)行方法48中所示的操作的計(jì)算機(jī)程序代碼,包括面向?qū)ο蟮木幊陶Z(yǔ)言(諸如Java、Smalltalk、C++等等)以及常規(guī)程序編程語(yǔ)言(諸如“(Γ編程語(yǔ)言或類(lèi)似的編程語(yǔ)言)。
[0021]在一個(gè)示例中,在已經(jīng)討論的10設(shè)備(諸如例如10設(shè)備12(圖1))、0S模塊(諸如例如0S模塊28(圖1))、受信配對(duì)代理(諸如例如受信配對(duì)代理20(圖1))和/或安全元件固件(諸如例如安全元件固件22(圖1)))中實(shí)現(xiàn)方法48。10設(shè)備可經(jīng)由USB、PC1-e(外圍組件互連Express,例如PCI Express xl6圖形150W-ATX規(guī)范1.0,PCI特殊興