用于使用硬件安全引擎通過(guò)網(wǎng)絡(luò)進(jìn)行安全通信的方法和設(shè)備的制作方法
【專利摘要】一種用于與服務(wù)器建立安全通信會(huì)話的方法、裝置和系統(tǒng),包括發(fā)起對(duì)于安全通信會(huì)話的請(qǐng)求,所述安全通信會(huì)話例如是使用在客戶端設(shè)備的片上系統(tǒng)(SOC)的安全引擎中生成的臨時(shí)隨機(jī)數(shù)值的與服務(wù)器的安全套接字層(SLL)通信。此外,在客戶端和服務(wù)器之間執(zhí)行密碼密鑰交換,以便生成對(duì)稱會(huì)話密鑰,該對(duì)稱會(huì)話密鑰被存儲(chǔ)在安全性引擎的安全存儲(chǔ)設(shè)備中。所述密碼密鑰交換可以例如是Rivest-Shamir-Adleman(RSA)密鑰交換或者Diffie-Hellman密鑰交換。在所述密碼密鑰交換期間生成的私有密鑰和其它數(shù)據(jù)可以被所述安全引擎生成和/或存儲(chǔ)在所述安全引擎中。
【專利說(shuō)明】用于使用硬件安全引擎通過(guò)網(wǎng)絡(luò)進(jìn)行安全通信的方法和設(shè)備
【背景技術(shù)】
[0001]密碼通信協(xié)議用于通過(guò)不可信的網(wǎng)絡(luò)或通信鏈路建立計(jì)算設(shè)備之間的安全通信會(huì)話。一個(gè)常用的密碼通信協(xié)議是安全套接字層(SSL)協(xié)議。SSL協(xié)議以及相關(guān)的傳輸層安全(TLS)協(xié)議被用于許多不同類型的安全通信會(huì)話,例如包括在諸如以太網(wǎng)的不可信的網(wǎng)絡(luò)上的安全網(wǎng)絡(luò)瀏覽、電子商務(wù)、安全升級(jí)以及兩個(gè)計(jì)算設(shè)備之間的其它安全通信會(huì)話。其它通信協(xié)議可以利用SSL/TLS協(xié)議以便提供底層安全。例如,超文本傳輸協(xié)議安全(HTTPS)使用SSL/TLS用于設(shè)備之間的消息的加密。典型地,由SSL/TLS協(xié)議提供的密碼安全在帶內(nèi)完成并且在軟件應(yīng)用級(jí)別上執(zhí)行。
[0002]由于一些計(jì)算和電子設(shè)備的相對(duì)小的封裝(footprint),它們利用片上系統(tǒng)(SOC)設(shè)計(jì)。SOC設(shè)備是將電子系統(tǒng)的除了處理核心之外還包括的各種部件結(jié)合在單個(gè)管芯上的集成電路。例如,SOC可以包括位于單個(gè)芯片上的處理器核心、存儲(chǔ)器控制器、視頻部件、音頻部件和/或通信部件。
【專利附圖】
【附圖說(shuō)明】
[0003]在附圖中通過(guò)示例而非限制的方式說(shuō)明了本文描述的發(fā)明。為了說(shuō)明的簡(jiǎn)單性和清楚性,附圖中說(shuō)明的元件不必按照比例繪制。例如,為了清楚性,一些元件的尺寸可能相對(duì)其它元件被放大。進(jìn)而,在認(rèn)為適當(dāng)時(shí),在附圖中重復(fù)附圖標(biāo)記以便指示相對(duì)應(yīng)或者類似的元件。
[0004]圖1是用于通過(guò)網(wǎng)絡(luò)在具有片上系統(tǒng)(SOC)的客戶端設(shè)備和服務(wù)器之間建立安全通信會(huì)話的系統(tǒng)的至少一個(gè)實(shí)施例的簡(jiǎn)化框圖;
[0005]圖2是用于圖1的系統(tǒng)的安全方案的至少一個(gè)實(shí)施例的框圖;
[0006]圖3是用于建立安全通信會(huì)話的圖1的客戶端設(shè)備和服務(wù)器的通信序列的至少一個(gè)實(shí)施例的簡(jiǎn)化序列圖;并且
[0007]圖4是用于建立由圖1的客戶端設(shè)備執(zhí)行的安全通信會(huì)話的方法的至少一個(gè)實(shí)施例的簡(jiǎn)化流程圖。
【具體實(shí)施方式】
[0008]盡管本公開(kāi)的概念容易具有各種修改和替換形式,但是在附圖中通過(guò)示例的方式示出了其具體示例性實(shí)施例并且在本文將對(duì)這些實(shí)施例進(jìn)行詳細(xì)描述。然而,應(yīng)當(dāng)理解的是,并非意在將本公開(kāi)的概念局限于所公開(kāi)的具體形式,而是相反,意在涵蓋與本公開(kāi)和所附權(quán)利要求一致的所有修改、等同物和替代。
[0009]在下面的描述中,闡釋了諸如邏輯實(shí)現(xiàn)、操作碼、指定操作數(shù)的手段、資源劃分/共享/復(fù)制實(shí)現(xiàn)、系統(tǒng)部件的類型和相互關(guān)系以及邏輯劃分/集成選擇,以便提供對(duì)本公開(kāi)的更加全面的理解。然而,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)到,本公開(kāi)的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐。在其它實(shí)例中,沒(méi)有詳細(xì)示出控制結(jié)構(gòu)、門(mén)級(jí)電路和全軟件指令序列,以便不混淆本發(fā)明。使用所包括的描述,本領(lǐng)域的普通技術(shù)人員將能夠?qū)崿F(xiàn)適當(dāng)?shù)墓δ芏鵁o(wú)需過(guò)多實(shí)驗(yàn)。
[0010]在本說(shuō)明書(shū)中對(duì)“ 一個(gè)實(shí)施例”、“實(shí)施例”、“示例實(shí)施例”等等的引用指示所描述的實(shí)施例可以包括特定的特征、結(jié)構(gòu)或特性,但是每一個(gè)實(shí)施例可以不必都包括該特定的特征、結(jié)構(gòu)或特性。而且,這樣的短語(yǔ)不必指代相同的實(shí)施例。進(jìn)而,當(dāng)結(jié)合實(shí)施例描述特定的特征、結(jié)構(gòu)或特性時(shí),應(yīng)當(dāng)認(rèn)為結(jié)合無(wú)論是否被明確描述的其它實(shí)施例來(lái)實(shí)現(xiàn)這樣的特征、結(jié)構(gòu)或特性在本領(lǐng)域技術(shù)人員的知識(shí)范圍內(nèi)。本發(fā)明的實(shí)施例可以被實(shí)現(xiàn)在硬件、固件、軟件或它們的任意組合中。被實(shí)現(xiàn)在計(jì)算機(jī)系統(tǒng)中的本發(fā)明的實(shí)施例可以包括部件之間的一個(gè)或多個(gè)基于總線的互連和/或部件之間的一個(gè)或多個(gè)點(diǎn)對(duì)點(diǎn)互連。本發(fā)明的實(shí)施例也可以被實(shí)現(xiàn)為由機(jī)器可讀介質(zhì)承載或者存儲(chǔ)在該機(jī)器可讀介質(zhì)上的指令,這些指令可以由一個(gè)或多個(gè)處理器讀取和執(zhí)行。機(jī)器可讀介質(zhì)可以被體現(xiàn)為用于以機(jī)器(例如,計(jì)算設(shè)備)可讀的形式存儲(chǔ)或傳輸信息的任何設(shè)備、機(jī)制或物理結(jié)構(gòu)。例如,機(jī)器可讀介質(zhì)可以被體現(xiàn)為只讀存儲(chǔ)器(ROM);隨機(jī)存取存儲(chǔ)器(RAM);磁盤(pán)存儲(chǔ)介質(zhì);光學(xué)存儲(chǔ)介質(zhì);閃存設(shè)備;小型或微型SD卡、記憶棒、電信號(hào)等等。
[0011]在附圖中,可以為了便于描述而示出諸如代表設(shè)備、模塊、指令塊和數(shù)據(jù)元素的那些元件的示意性元件的具體布置或排序。然而,本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理解的是,附圖中示意性元件的具體順序或布置并不意在暗示要求處理的特定順序或序列或者處理的分離。進(jìn)而,附圖中包括示意性元件并不意在暗示在所有實(shí)施例中都要求這樣的元件,或者在一些實(shí)施例中由這樣的元件代表的特征可能不被包括在其它元件中或者沒(méi)有與其它元件相結(jié)口 O
[0012]通常,用于代表指令塊的示意性元件可以使用機(jī)器可讀指令的任何適當(dāng)?shù)男问綄?shí)現(xiàn),例如軟件或固件應(yīng)用、程序、函數(shù)、模塊、例程、過(guò)程、進(jìn)程、插件、小應(yīng)用程序、窗口小部件、代碼片段和/或其它,并且每一個(gè)這樣的指令可以使用任何合適的編程語(yǔ)言、庫(kù)、應(yīng)用編程接口(API)和/或其它軟件開(kāi)發(fā)工具來(lái)實(shí)現(xiàn)。例如,一些實(shí)施例可以使用Java、C++和/或其它編程語(yǔ)言來(lái)實(shí)現(xiàn)。
[0013]類似地,用于代表數(shù)據(jù)或信息的示意性元件可以使用任何合適的電子布置或結(jié)構(gòu)實(shí)現(xiàn),例如寄存器、數(shù)據(jù)存儲(chǔ)、表、記錄、數(shù)組、索引、哈希、映射圖、樹(shù)、列表、圖、(任何文件類型的)文件、文件夾、目錄、數(shù)據(jù)庫(kù)和/或其它。
[0014]進(jìn)而,在附圖中,在使用諸如實(shí)線或者虛線或者箭頭的連接元件來(lái)說(shuō)明兩個(gè)或更多個(gè)其它示意性元件之間的連接、關(guān)系或關(guān)聯(lián)的情況下,不存在任何這樣的連接元件并不意味著暗示沒(méi)有連接、關(guān)系或關(guān)聯(lián)能夠存在。換句話說(shuō),在附圖中可能沒(méi)有示出元件之間的一些連接、關(guān)系或關(guān)聯(lián),以便不混淆本發(fā)明。此外,為了便于說(shuō)明,單個(gè)連接元件可以用于代表元件之間的多個(gè)連接、關(guān)系或關(guān)聯(lián)。例如,在連接元件代表信號(hào)、數(shù)據(jù)或指令的傳輸?shù)那闆r下,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,如果需要,這樣的元件可以代表一個(gè)或多個(gè)信號(hào)路徑(例如,總線),以便實(shí)現(xiàn)通信。
[0015]現(xiàn)在參照?qǐng)D1,用于建立安全通信會(huì)話的系統(tǒng)100包括客戶端設(shè)備102、服務(wù)器104以及網(wǎng)絡(luò)106。在操作中,客戶端設(shè)備102通過(guò)網(wǎng)絡(luò)106發(fā)起對(duì)于與服務(wù)器104的安全通信會(huì)話的請(qǐng)求。為了建立安全通信會(huì)話,客戶端設(shè)備102和服務(wù)器104執(zhí)行密碼密鑰交換,例如Diffie-Hellman或Rivest-Shamir-Adleman (RSA)密鑰交換,以便生成秘密對(duì)稱會(huì)話密鑰。該秘密對(duì)稱會(huì)話密鑰可以接著用于加密和解密客戶端設(shè)備102和服務(wù)器104之間的消息。為了確保安全通信會(huì)話,在客戶端設(shè)備102的片上系統(tǒng)(SOC) 112的安全引擎110內(nèi)完成由客戶端設(shè)備102生成的各種密鑰和其它密碼功能。客戶端設(shè)備102將該密鑰秘密地維持在安全引擎110的安全存儲(chǔ)器114中。例如,如下面討論的,安全引擎110可以包括安全密鑰150,用于簽名和/或以其它方式加密其它密鑰和消息。按照這種方式,客戶端設(shè)備102和服務(wù)器104可以使用客戶端設(shè)備102的帶外(即,不是應(yīng)用級(jí))硬件安全功能來(lái)貫穿網(wǎng)絡(luò)106建立安全通信會(huì)話。在本文描述的說(shuō)明性實(shí)施例中,安全通信會(huì)話是安全套接字層(SSL)通信會(huì)話,但是在其它實(shí)施例中,本文描述的系統(tǒng)100和特征可以用于建立其它類型的安全通信會(huì)話。
[0016]客戶端設(shè)備102可以被體現(xiàn)為能夠通過(guò)網(wǎng)絡(luò)106與服務(wù)器104進(jìn)行通信的任何類型的計(jì)算設(shè)備,例如,客戶端設(shè)備102可以被體現(xiàn)為機(jī)頂盒、數(shù)字電視、智能電話、平板計(jì)算機(jī)、膝上型計(jì)算機(jī)、移動(dòng)互聯(lián)網(wǎng)設(shè)備(MID)、臺(tái)式計(jì)算機(jī)或者能夠與服務(wù)器104進(jìn)行通信的其它設(shè)備。
[0017]如上面討論的,客戶端設(shè)備102包括SOC 112,其可以被體現(xiàn)為具有各種部件和結(jié)構(gòu)的任何類型的片上系統(tǒng)設(shè)備。在圖1的說(shuō)明性實(shí)施例中,SOC 112包括安全引擎110、存儲(chǔ)器控制器116、處理器核心118和多個(gè)硬件外設(shè)130,它們經(jīng)由鏈路120可通信地耦合到彼此。鏈路120可以被體現(xiàn)為任何類型的互連,例如總線、點(diǎn)對(duì)點(diǎn)或者能夠促進(jìn)SOC 112的各種部件之間的通信的其它互連。取決于SOC 112的期望功能,硬件外設(shè)130可以包括任何類型的硬件外圍部件。例如,在說(shuō)明性實(shí)施例中,硬件外設(shè)130包括用于分離音頻和視頻內(nèi)容流的解復(fù)用134 ;用于處理視頻內(nèi)容的視頻處理部件132 ;以及用于處理音頻內(nèi)容的音頻處理部件136。當(dāng)然,應(yīng)當(dāng)意識(shí)到的是,在圖1的說(shuō)明性實(shí)施例中簡(jiǎn)化了 SOC 112的硬件外設(shè)130,并且SOC 112可以包括附加的、不同的和/或更大的詳細(xì)硬件外設(shè)130,為了公開(kāi)的清楚性而未在圖1中示出。
[0018]安全引擎110可以被體現(xiàn)為獨(dú)立于處理器核心118的安全協(xié)處理器或處理電路。安全引擎110包括安全密鑰150和安全存儲(chǔ)器114,該安全存儲(chǔ)器114只能由安全引擎110存取。安全引擎110將安全密鑰150以及下面討論的其它密碼密鑰存儲(chǔ)在安全存儲(chǔ)器114中。在說(shuō)明性實(shí)施例中,在S0C112的制造過(guò)程中提供安全密鑰150,但是在其它實(shí)施例中可以在操作期間由SOC 112生成安全密鑰150。例如,在一些實(shí)施例中,安全密鑰150基于安全引擎110本身內(nèi)的熔斷保險(xiǎn)絲。此外或可選地,安全引擎110可以包括諸如可信平臺(tái)模塊(TPM)的密鑰生成模塊,以便生成安全密鑰150。在使用期間,安全引擎110可以使用任意數(shù)量的安全密鑰150,它們可以彼此相同或者不同。
[0019]在一些實(shí)施例中,取決于客戶端設(shè)備102的類型和期望用途,除了 S0C112之外,客戶端設(shè)備102可以包括其它部件和結(jié)構(gòu)。例如,在圖1的說(shuō)明性實(shí)施例中,客戶端設(shè)備102包括系統(tǒng)存儲(chǔ)器160、數(shù)據(jù)存儲(chǔ)設(shè)備162、通信輸出164以及一個(gè)或多個(gè)輸入/輸出設(shè)備166。系統(tǒng)存儲(chǔ)器160可以被體現(xiàn)為任何類型的主存儲(chǔ)器或者數(shù)據(jù)存儲(chǔ)單元,例如,包括動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器設(shè)備(DRAM)、同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器設(shè)備(SDRAM)、雙倍數(shù)據(jù)速率同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器設(shè)備(DDR SDRAM)、掩模只讀存儲(chǔ)器(ROM)設(shè)備、可擦除可編程ROM(EPROM)、電可擦除可編程ROM(EEPROM)設(shè)備、閃存設(shè)備和/或其它易失性和/或非易失性存儲(chǔ)器設(shè)備。
[0020]數(shù)據(jù)存儲(chǔ)設(shè)備162可以被體現(xiàn)為被配置用于數(shù)據(jù)的短期或長(zhǎng)期存儲(chǔ)的任意類型的一個(gè)或多個(gè)設(shè)備,例如以存儲(chǔ)器設(shè)備和電路、存儲(chǔ)卡、硬盤(pán)驅(qū)動(dòng)、固態(tài)驅(qū)動(dòng)或其它數(shù)據(jù)存儲(chǔ)設(shè)備為例。通信輸出164可以被體現(xiàn)為簡(jiǎn)化的輸出或者作為各種電路和/或設(shè)備,以便例如促進(jìn)與服務(wù)器104的通信。例如,通信輸出164(和/或SOC 112內(nèi)的通信電路)可以使用任何合適的通信協(xié)議,例如以太網(wǎng)(即IEEE 802.3標(biāo)準(zhǔn))或W1-Fi? (即IEEE 802.11
標(biāo)準(zhǔn))和/或其它通信協(xié)議或標(biāo)準(zhǔn)。此外,輸入/輸出設(shè)備166可以被體現(xiàn)為任何類型的I/O設(shè)備,用于與客戶端設(shè)備102進(jìn)行交互。例如,I/O設(shè)備166可以包括輸出設(shè)備,例如用于在客戶端設(shè)備102上顯示數(shù)據(jù)的顯示器;用于生成音頻的揚(yáng)聲器;和/或輸入設(shè)備,例如遙控接收器、鍵盤(pán)、鼠標(biāo)和/或其它。
[0021]服務(wù)器104可以被體現(xiàn)為能夠與客戶端設(shè)備102建立安全通信會(huì)話的任意類型的數(shù)據(jù)服務(wù)器。這樣,服務(wù)器104可以包括在附圖中典型地發(fā)現(xiàn)的用于通過(guò)網(wǎng)絡(luò)通信、維護(hù)和傳輸數(shù)據(jù)的各種硬件和軟件部件。例如,說(shuō)明性服務(wù)器104包括可以與在其它數(shù)據(jù)服務(wù)器中發(fā)現(xiàn)的這樣的部件類似的處理器180、存儲(chǔ)器182以及通信電路184。例如,處理器180可以被體現(xiàn)為能夠執(zhí)行軟件/固件的任意類型的處理器,例如微處理器、數(shù)字信號(hào)處理器、微控制器等,并且可以包括一個(gè)或多個(gè)處理核心。存儲(chǔ)器182可以被體現(xiàn)為任意類型的存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)單元,例如包括動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器設(shè)備(DRAM)、同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器設(shè)備(SDRAM)、雙倍數(shù)據(jù)速率同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器設(shè)備(DDR SDRAM)、掩模只讀存儲(chǔ)器(ROM)設(shè)備、可擦除可編程ROM(EPROM)、電可擦除可編程ROM (EEPROM)設(shè)備、閃存設(shè)備和/或其它易失性和/或非易失性存儲(chǔ)器。通信電路184可以被體現(xiàn)為任意類型的電路和/或設(shè)備,以便例如促進(jìn)與客戶端設(shè)備102的通信。例如,通信電路184可以支持通信協(xié)議,例如以太網(wǎng)(即IEEE 802.3標(biāo)準(zhǔn))和/或W1-Fi? (例如,IEEE 802.11標(biāo)準(zhǔn))和/或其它通信協(xié)議或標(biāo)準(zhǔn)。
[0022]網(wǎng)絡(luò)106可以被體現(xiàn)為任意數(shù)量的各種有線和/或無(wú)線網(wǎng)絡(luò)。例如,網(wǎng)絡(luò)106可以被體現(xiàn)為或者以其它方式包括局域網(wǎng)(LAN)、廣域網(wǎng)(WAN)和/或諸如以太網(wǎng)的公共可訪問(wèn)全球網(wǎng)絡(luò)。此外,網(wǎng)絡(luò)106可以包括任意數(shù)量的附加設(shè)備,以便促進(jìn)客戶端設(shè)備102和服務(wù)器104之間的通信。如上面討論的,在說(shuō)明性實(shí)施例中,客戶端設(shè)備102和服務(wù)器104通過(guò)網(wǎng)絡(luò)106建立SSL通信會(huì)話。然而,在其它實(shí)施例中可以建立其它類型的安全通信會(huì)話。
[0023]現(xiàn)在參照?qǐng)D2,如下面更加詳細(xì)討論的,使用客戶端設(shè)備102的安全引擎110來(lái)執(zhí)行密碼功能并且存儲(chǔ)與建立安全通信會(huì)話相關(guān)聯(lián)的密鑰數(shù)據(jù)允許系統(tǒng)100提供幾個(gè)不同級(jí)別的安全。在系統(tǒng)100中使用的特定安全級(jí)別可以取決于各種準(zhǔn)則,例如網(wǎng)絡(luò)106的本質(zhì)、在客戶端設(shè)備102和服務(wù)器104之間傳輸?shù)臄?shù)據(jù)的重要性和/或其它。例如,一個(gè)說(shuō)明性安全方案200包括如圖2所示的三個(gè)不同的安全級(jí)別。在第O級(jí)安全處,客戶端設(shè)備102被配置為保護(hù)客戶端私有設(shè)備密鑰(即,安全密鑰150),如下面更加詳細(xì)討論的,用于加密、簽名和驗(yàn)證功能。
[0024]在第I級(jí)安全處,客戶端設(shè)備102被配置為保護(hù)會(huì)話密鑰以及用于數(shù)據(jù)加密的相關(guān)密鑰。例如,如果執(zhí)行RSA密鑰交換,則可以將預(yù)主密鑰和主密鑰(B卩,會(huì)話密鑰)存儲(chǔ)在SOC 112的安全引擎110的安全存儲(chǔ)器114中。此外,在下面討論的一些實(shí)施例中,主密鑰可以按照加密或包裹的形式被存儲(chǔ)(例如,使用安全密鑰150加密)。在其中使用Diffie-HelIman密鑰交換的實(shí)施例中,私有Diffie-Hellman客戶端密鑰和/或共享秘密密鑰(即,會(huì)話密鑰)可以被存儲(chǔ)在SOC 112的安全引擎110的安全存儲(chǔ)器114中。再者,在一些實(shí)施例中,私有Diffie-Hellman客戶端密鑰和/或會(huì)話密鑰可以按照加密或包裹的形式被存儲(chǔ)(例如,使用安全密鑰150加密)。
[0025]此外,在第2級(jí)安全處,客戶端設(shè)備102可以被配置為保護(hù)主機(jī)應(yīng)用的數(shù)據(jù)。例如,如果主機(jī)應(yīng)用用于執(zhí)行電子商務(wù)交易,則在這樣的交易中使用的銀行賬戶信息可以使用安全密鑰150被加密并且被存儲(chǔ)在安全存儲(chǔ)器114中。通過(guò)這一方式,銀行賬戶信息對(duì)于主機(jī)應(yīng)用不可用。當(dāng)然,應(yīng)當(dāng)意識(shí)到的是,在其它實(shí)施例中,可以使用具有更多或更少的安全級(jí)別的安全方案。
[0026]現(xiàn)在參照?qǐng)D3,在操作中,客戶端設(shè)備102與服務(wù)器104使用客戶端設(shè)備102的安全引擎110建立安全通信會(huì)話,以便執(zhí)行各種密碼功能并且在其中存儲(chǔ)密鑰數(shù)據(jù)。為了做到這一點(diǎn),客戶端設(shè)備102和服務(wù)器104可以執(zhí)行如在圖3的通信序列300中示出的握手會(huì)話。為了建立安全通信會(huì)話,安全引擎110的安全引擎驅(qū)動(dòng)器302與安全引擎110的固件以及在客戶端設(shè)備102上執(zhí)行的客戶端安全通信應(yīng)用304進(jìn)行通信??蛻舳税踩ㄐ艖?yīng)用304還與在服務(wù)器104上執(zhí)行的相對(duì)應(yīng)的服務(wù)器安全通信應(yīng)用306進(jìn)行通信。
[0027]通信序列300開(kāi)始于塊310,其中客戶端安全通信應(yīng)用304向服務(wù)器安全通信應(yīng)用306發(fā)送ClientHello消息以便請(qǐng)求安全通信會(huì)話的發(fā)起。如上面討論的,在說(shuō)明性實(shí)施例中,安全通信會(huì)話是SSL會(huì)話。在塊312中,為了促進(jìn)該請(qǐng)求,安全引擎驅(qū)動(dòng)器302與SOC 112的安全引擎110進(jìn)行通信,以便從安全引擎110請(qǐng)求隨機(jī)的臨時(shí)隨機(jī)數(shù)。在塊312中,安全引擎110可以使用任何合適的隨機(jī)數(shù)生成算法來(lái)生成隨機(jī)的臨時(shí)隨機(jī)數(shù)。該臨時(shí)隨機(jī)數(shù)被體現(xiàn)為隨機(jī)數(shù)或者偽隨機(jī)數(shù),意在僅在密碼功能中使用一次以便例如阻止重放攻擊。在說(shuō)明性實(shí)施例中,隨機(jī)的臨時(shí)隨機(jī)數(shù)包括32位的時(shí)間戳和28字節(jié)的隨機(jī)數(shù)。當(dāng)然,在其它實(shí)施例中可以使用隨機(jī)的臨時(shí)隨機(jī)數(shù)的其它數(shù)字格式。無(wú)論如何,應(yīng)當(dāng)意識(shí)到的是,因?yàn)樵诎踩?10中生成隨機(jī)的臨時(shí)隨機(jī)數(shù),因此與例如在應(yīng)用級(jí)生成臨時(shí)隨機(jī)數(shù)相比較,保護(hù)了該隨機(jī)的臨時(shí)隨機(jī)數(shù)的生成和存儲(chǔ)。
[0028]在塊312中生成的隨機(jī)的臨時(shí)隨機(jī)數(shù)被包括在在塊310中被發(fā)送到服務(wù)器安全通信應(yīng)用306的ClientHel1消息中。此外,ClientHello消息可以包括密碼套件、壓縮方法以及服務(wù)器104可以從其進(jìn)行選擇用于建立安全通信會(huì)話的其它密碼協(xié)議或算法的列表。在塊314中,對(duì)所述安全通信會(huì)話請(qǐng)求做出響應(yīng),服務(wù)器安全通信應(yīng)用306發(fā)送ServerHello消息。ServerHello消息可以基本上類似于ClientHello消息。例如,在說(shuō)明性實(shí)施例中,ServerHello消息包括由服務(wù)器104生成的服務(wù)器隨機(jī)的臨時(shí)隨機(jī)數(shù)。此外,ServerHello消息包括密碼協(xié)議的選擇和/或來(lái)自ClientHello消息中包括的列表的由服務(wù)器104做出的其它選項(xiàng)。ServerHello消息完成說(shuō)明性握手會(huì)話的會(huì)話發(fā)起階段(第I階段)。
[0029]在塊316中,服務(wù)器安全通信應(yīng)用306向客戶端安全通信應(yīng)用304發(fā)送服務(wù)器證書(shū)。與下面討論的客戶端證書(shū)類似,服務(wù)器證書(shū)典型地由證書(shū)權(quán)威機(jī)構(gòu)生成,所述證書(shū)權(quán)威機(jī)構(gòu)用作服務(wù)器104的認(rèn)證的第三方證實(shí)者。服務(wù)器證書(shū)可以包括由證書(shū)權(quán)威機(jī)構(gòu)分配到服務(wù)器104的用于驗(yàn)證服務(wù)器104到網(wǎng)絡(luò)106上的其它設(shè)備的唯一標(biāo)識(shí)符或號(hào)碼。這樣,在塊318中,客戶端設(shè)備102可以驗(yàn)證服務(wù)器證書(shū)。在一些實(shí)施例中,客戶端設(shè)備102使用由證書(shū)權(quán)威機(jī)構(gòu)頒發(fā)的公共證書(shū)密鑰來(lái)驗(yàn)證服務(wù)器證書(shū)。在這樣的實(shí)施例中,安全引擎110可以在未加密或者加密的狀態(tài)下在安全存儲(chǔ)器114中存儲(chǔ)公共證書(shū)密鑰(例如,使用安全密鑰150)。
[0030]為了建立安全通信會(huì)話,客戶端設(shè)備102和服務(wù)器104執(zhí)行密鑰交換,以便在客戶端設(shè)備102和服務(wù)器104的每一個(gè)中建立共享秘密密鑰(B卩,主密鑰或會(huì)話密鑰)??蛻舳嗽O(shè)備102和服務(wù)器104可以使用任何合適的密鑰交換算法來(lái)實(shí)現(xiàn)共享秘密的建立。在說(shuō)明性實(shí)施例中,密鑰交換可以被體現(xiàn)為RSA密鑰交換或Diffie-Hellman密鑰交換。在其中使用RSA密鑰交換的實(shí)施例中,在塊320中,服務(wù)器安全通信應(yīng)用306執(zhí)行服務(wù)器RSA密鑰交換。在這樣的實(shí)施例中,在塊320中,服務(wù)器104可以生成臨時(shí)RSA公鑰/私鑰對(duì),并且將RSA公鑰發(fā)送到客戶端設(shè)備102。這樣的消息可以由服務(wù)器104進(jìn)行簽名,并且通過(guò)使用公共服務(wù)器密鑰由客戶端設(shè)備102進(jìn)行驗(yàn)證,如上面討論的,所述公共服務(wù)器密鑰可以被存儲(chǔ)在安全存儲(chǔ)器114中。
[0031]可選地,在塊320中,服務(wù)器安全通信應(yīng)用306可以執(zhí)行服務(wù)器Diffie-Hellman密鑰交換。在這樣的實(shí)施例中,在方框320,服務(wù)器104選擇或者以其它方式生成Diffie-Hellman全局值(例如,素?cái)?shù)和素?cái)?shù)的原始根),生成私有和公共Diffie-Hellman服務(wù)器密鑰,并且將Diffie-Hellman全局值和公共Diffie-Hellman服務(wù)器密鑰發(fā)送到客戶端設(shè)備102。再次,這樣的消息可以由服務(wù)器104簽名并且由客戶端設(shè)備102使用公共服務(wù)器密鑰進(jìn)行驗(yàn)證。
[0032]在一些實(shí)施例中,在塊322中,服務(wù)器安全通信應(yīng)用306可以發(fā)送客戶端證書(shū)請(qǐng)求。如果這樣,則該請(qǐng)求可以指定由服務(wù)器104接受的證書(shū)的類型(例如,所使用的公鑰算法)、可接受的證書(shū)頒發(fā)機(jī)構(gòu)和/或其它證書(shū)參數(shù)。隨后,在塊324中,服務(wù)器安全通信應(yīng)用306向客戶端安全通信應(yīng)用304發(fā)送服務(wù)器完成消息(“ServerHelloDone”消息),以便指示服務(wù)器104已經(jīng)完成了握手會(huì)話的這一階段。在說(shuō)明性實(shí)施例中,服務(wù)器完成消息不要求參數(shù)或其它數(shù)據(jù)。ServerHelloDone消息完成說(shuō)明性握手會(huì)話的服務(wù)器認(rèn)證和密鑰交換階段(第2階段)。
[0033]在塊326中,在接收到所述服務(wù)器完成消息之后,通過(guò)發(fā)送客戶端證書(shū),客戶端安全通信應(yīng)用304發(fā)起客戶端認(rèn)證和握手會(huì)話的密鑰交換階段(第3階段)。如上面討論的,客戶端證書(shū)典型地由證書(shū)權(quán)威機(jī)構(gòu)生成,并且可以包括由證書(shū)權(quán)威機(jī)構(gòu)分配到客戶端設(shè)備102以便驗(yàn)證客戶端設(shè)備102到網(wǎng)絡(luò)106上的其它設(shè)備的唯一的標(biāo)識(shí)符或號(hào)碼。在一些實(shí)施例中,客戶端證書(shū)可以按照未加密或加密的狀態(tài)被存儲(chǔ)在SOC 112的安全引擎110的安全存儲(chǔ)器114中。此外,在將證書(shū)發(fā)送到服務(wù)器104之前,客戶端設(shè)備102可以使用由證書(shū)權(quán)威機(jī)構(gòu)簽發(fā)的私有設(shè)備密鑰來(lái)簽名所述證書(shū)。
[0034]在塊328中,客戶端安全通信應(yīng)用304執(zhí)行客戶端密鑰交換。再次,如上面討論的,客戶端設(shè)備102和服務(wù)器104可以使用任何合適的密鑰交換算法來(lái)實(shí)現(xiàn)共享秘密的建立。在其中使用RSA密鑰交換的實(shí)施例中,在塊330中,客戶端設(shè)備102的SOC 112的安全引擎110生成隨機(jī)的預(yù)主密鑰。說(shuō)明性地,預(yù)主密鑰被體現(xiàn)為48字節(jié)的隨機(jī)數(shù),但是在其它實(shí)施例中可以使用其它數(shù)字格式。在塊332中,使用在服務(wù)器認(rèn)證和密鑰交換階段(第2階段)中由服務(wù)器提供的服務(wù)器公鑰來(lái)加密或者以其它方式包裹在塊330中生成的預(yù)主密鑰。在塊328中,被加密的預(yù)主密鑰可以被存儲(chǔ)在S0C112的安全引擎110的安全存儲(chǔ)器114中并且被發(fā)送到服務(wù)器104。
[0035]可選地,在其中使用Diffie-Hellman密鑰交換的實(shí)施例中,在塊334中,安全引擎110使用在塊320中從服務(wù)器104接收的Diffie-HelIman全局值來(lái)生成私有Diffie-HelIman客戶端密鑰和公共Diffie-Hellman客戶端密鑰。私有Diffie-Hellman客戶端密鑰可以被體現(xiàn)為由安全引擎110生成的隨機(jī)值,而公共Di ffie-He I Iman客戶端密鑰可以由安全引擎110使用從服務(wù)器104接收的Diffie-Hellman全局值來(lái)生成。私有Diffie-Hellman客戶端密鑰可以被存儲(chǔ)在安全引擎110的安全存儲(chǔ)器114中。當(dāng)然,在一些實(shí)施例中,客戶端設(shè)備102可以在塊334中生成Diffie-Hellman全局值并且在塊328中將這樣的全局值發(fā)送到服務(wù)器104,以便允許服務(wù)器104基于此來(lái)生成公共Diffie-Hellman服務(wù)器密鑰。不管怎樣,在塊336中,SOC 112的安全引擎110使用安全密鑰150或者安全引擎110的其它私有客戶端密鑰110來(lái)在塊336中簽名公共Diffie-Hellman客戶端密鑰(以及如果由客戶端設(shè)備102生成,Diffie-Hellman全局值)。在塊328中,被簽名的Diffie-Hellman參數(shù)可以使用公共服務(wù)器密鑰被進(jìn)一步加密并且被發(fā)送到服務(wù)器104。
[0036]在一些實(shí)施例中,在塊338中,客戶端安全通信應(yīng)用304可以向服務(wù)器安全通信應(yīng)用306發(fā)送客戶端證書(shū)驗(yàn)證消息。為了這樣做,在塊340中,安全引擎110基于先前的信息生成哈希代碼并且使用安全引擎110的安全密鑰150來(lái)簽名該哈希代碼。在塊338中,客戶端設(shè)備102將被簽名的哈希代碼發(fā)送到服務(wù)器104,作為先前消息的驗(yàn)證。應(yīng)當(dāng)意識(shí)到的是,這樣的客戶端證書(shū)驗(yàn)證消息可以隨后用于從客戶端設(shè)備102發(fā)送到服務(wù)器104的任何消息,以便向安全通信會(huì)話提供安全的附加級(jí)別和驗(yàn)證。在塊338中,客戶端證書(shū)驗(yàn)證消息完成客戶端身份認(rèn)證和說(shuō)明性握手會(huì)話的密鑰交換階段(第3階段)。
[0037]在塊342中,客戶端安全通信應(yīng)用304向服務(wù)器安全通信應(yīng)用306發(fā)送更改密碼說(shuō)明消息,以便通知服務(wù)器104隨后的通信將使用商定的密碼(例如,所生成的會(huì)話密鑰)。在塊344中,客戶端設(shè)備102的安全引擎110生成會(huì)話密鑰(即,“主”密鑰)。在其中使用RSA密鑰交換的實(shí)施例中,安全引擎110根據(jù)在塊330中生成的預(yù)主密鑰來(lái)生成會(huì)話密鑰。為了這樣做,安全引擎110計(jì)算預(yù)主密鑰、在塊312中生成的客戶端隨機(jī)的臨時(shí)隨機(jī)數(shù)以及在塊314中接收的服務(wù)器隨機(jī)的臨時(shí)隨機(jī)數(shù)的哈希函數(shù)??蛇x地,在其中使用Diffie-Hellman密鑰交換的實(shí)施例中,安全引擎110根據(jù)Diffie-Hellman全局值、公共Diffie-Hellman服務(wù)器密鑰和私有Diffie-Hellman客戶端密鑰生成會(huì)話密鑰。如上面討論的,所述會(huì)話密鑰被存儲(chǔ)在安全引擎110的安全存儲(chǔ)器114中。
[0038]在塊346中,安全引擎110生成會(huì)話密鑰的哈希代碼,這取決于所使用的哈希函數(shù)的類型而可以包括附加的填充。在塊348中,會(huì)話密鑰的哈希代碼被發(fā)送到服務(wù)器104用于在客戶端完成消息中進(jìn)行驗(yàn)證。會(huì)話密鑰的哈希代碼可以由安全引擎110使用如上面討論的公共服務(wù)器密鑰進(jìn)行加密。
[0039]在塊350中,對(duì)客戶端完成消息做出響應(yīng),服務(wù)器104發(fā)送確認(rèn)使用商定的密碼(例如,會(huì)話密鑰)的改變密碼規(guī)范消息。在塊352中,服務(wù)器104也發(fā)送服務(wù)器完成消息,該服務(wù)器完成消息包括與所述會(huì)話密鑰類似的哈希代碼,用于由客戶端設(shè)備102進(jìn)行驗(yàn)證。假設(shè)客戶端設(shè)備102和服務(wù)器104驗(yàn)證會(huì)話密鑰的哈希代碼,則握手會(huì)話完成并且客戶端設(shè)備102和服務(wù)器104的每一個(gè)具有用于加密和解密隨后的消息的共享秘密會(huì)話密鑰。再次,應(yīng)當(dāng)意識(shí)到的是,客戶端設(shè)備102的SOC 112的安全引擎110用于所有密碼功能以及敏感密鑰數(shù)據(jù)的存儲(chǔ),以便提供在通信序列300期間使用的密碼密鑰和證書(shū)密鑰的基于硬件的保護(hù)。
[0040]現(xiàn)在參照?qǐng)D4,在使用中,客戶端設(shè)備102可以執(zhí)行方法400,以便與服務(wù)器104建立安全通信會(huì)話。方法400開(kāi)始于塊402,其中提供客戶端設(shè)備102的SOC 112的安全引擎110。為了這樣做,在一個(gè)實(shí)施例中,安全引擎110接收客戶端設(shè)備證書(shū)、私有客戶端設(shè)備密鑰和公共證書(shū)密鑰。所述客戶端設(shè)備證書(shū)、私有客戶端設(shè)備密鑰和公共證書(shū)密鑰典型地由證書(shū)權(quán)威機(jī)構(gòu)生成,如上面討論的,該證書(shū)權(quán)威機(jī)構(gòu)用作客戶端設(shè)備102的認(rèn)證的第三方證實(shí)者。所述客戶端設(shè)備證書(shū)可以包括由證書(shū)權(quán)威機(jī)構(gòu)分配給客戶端設(shè)備102的唯一的設(shè)備標(biāo)識(shí)符或號(hào)碼,以便驗(yàn)證客戶端設(shè)備102到網(wǎng)絡(luò)106上的其它設(shè)備。如下面更加詳細(xì)討論的,私有客戶端設(shè)備密鑰可以由客戶端設(shè)備102用于簽署客戶端設(shè)備證書(shū),以便認(rèn)證該客戶端設(shè)備102到其它設(shè)備。相反,公共證書(shū)密鑰可以由客戶端設(shè)備102使用以便由證書(shū)權(quán)威機(jī)構(gòu)驗(yàn)證網(wǎng)絡(luò)106上其它設(shè)備的證書(shū)。
[0041]安全引擎110使用安全密鑰150加密私有客戶端設(shè)備密鑰,并且將被加密的私有客戶端設(shè)備密鑰存儲(chǔ)在安全存儲(chǔ)器114中。安全引擎110還可以將客戶端設(shè)備證書(shū)和/或公共證書(shū)密鑰存儲(chǔ)在安全存儲(chǔ)器114中。此外,在一些實(shí)施例中,安全引擎110可以使用存儲(chǔ)在安全引擎110中的安全密鑰150來(lái)加密客戶端設(shè)備證書(shū)和/或公共證書(shū)密鑰。
[0042]在塊402中提供安全引擎110之后,在塊404中,客戶端設(shè)備102確定是否要與服務(wù)器104建立安全通信會(huì)話(例如,SSL會(huì)話)。如果為是,則在塊406中,安全引擎110生成隨機(jī)的臨時(shí)隨機(jī)數(shù)值。如上面討論的,安全引擎110可以使用任何合適的隨機(jī)數(shù)生成算法來(lái)生成該隨機(jī)的臨時(shí)隨機(jī)數(shù)。在塊408中,客戶端設(shè)備102發(fā)送請(qǐng)求(ClientHello消息)來(lái)發(fā)起到服務(wù)器104的安全通信會(huì)話。該請(qǐng)求包括在塊406中生成的隨機(jī)的臨時(shí)隨機(jī)數(shù),連同服務(wù)器104可以從中進(jìn)行選擇的密碼協(xié)議、壓縮方法和/或其它密碼選擇的列表。
[0043]在塊410中,客戶端設(shè)備102完成服務(wù)器認(rèn)證和服務(wù)器密鑰交換。在這樣做時(shí),客戶端設(shè)備102可以接收相對(duì)應(yīng)的ServerHello消息,其包括服務(wù)器隨機(jī)的臨時(shí)隨機(jī)數(shù)、服務(wù)器104公鑰以及在ClientHello消息中呈現(xiàn)的密碼選擇的服務(wù)器104的選擇。如上面討論的,服務(wù)器隨機(jī)的臨時(shí)隨機(jī)數(shù)連同客戶端隨機(jī)的臨時(shí)隨機(jī)數(shù)用于生成會(huì)話密鑰。這樣,安全引擎110可以在安全存儲(chǔ)器114中存儲(chǔ)服務(wù)器隨機(jī)的臨時(shí)隨機(jī)數(shù)。此外,在一些實(shí)施例中,安全引擎110可以在安全存儲(chǔ)器114中存儲(chǔ)服務(wù)器證書(shū)和/或其它密鑰數(shù)據(jù)。例如,在其中使用RSA密鑰交換的實(shí)施例中,安全引擎110可以在安全存儲(chǔ)器114中存儲(chǔ)從服務(wù)器接收的公共RSA密鑰??蛇x地,在其中使用Diffie-Hellman密鑰交換的實(shí)施例中,安全引擎110可以在安全存儲(chǔ)器114中存儲(chǔ)Diffie-Hellman全局值和/或公共DiffieHellman服務(wù)器密鑰。
[0044]在塊414中,客戶端104確定服務(wù)器104是否被成功認(rèn)證。如果為否,則方法400循環(huán)回到塊404,其中客戶端設(shè)備102可以重新嘗試與服務(wù)器104建立安全通信會(huì)話。
[0045]然而,如果服務(wù)器104被成功認(rèn)證,則方法400前進(jìn)到塊416,其中客戶端設(shè)備102發(fā)送客戶端證書(shū)給服務(wù)器104。如果客戶端證書(shū)已被加密(例如,使用安全密鑰150),則安全引擎110解密客戶端證書(shū)并且使用私有客戶端設(shè)備密鑰來(lái)簽名客戶端證書(shū)。
[0046]在塊418中,客戶端104使用安全引擎110來(lái)完成客戶端密鑰交換以便維持密鑰函數(shù)的安全。例如,如果選擇了 RSA密鑰交換,則在塊420中,安全引擎110生成預(yù)主密鑰,并且使用在塊410中接收的服務(wù)器公共密鑰來(lái)加密該預(yù)主密鑰,這在將被加密的預(yù)主密鑰發(fā)送到服務(wù)器104之前進(jìn)行??蛇x地,如果選擇了 Diffie-Hellman密鑰交換,則在塊410中,安全引擎110使用從服務(wù)器104接收的Diffie-Hellman全球值來(lái)生成公共和私有Diffie-Hellman客戶端密鑰。安全引擎110可以使用安全密鑰150或者在塊402中設(shè)置的公共客戶端設(shè)備密鑰來(lái)簽名公共Diffie-Hellman客戶端密鑰。在塊422中,客戶端設(shè)備102將被簽名的公共Diffie-Hellman客戶端密鑰發(fā)送到服務(wù)器104。在客戶端密鑰交換期間生成的密鑰和相關(guān)的密鑰數(shù)據(jù)可以在加密狀態(tài)(使用安全密鑰150)或未加密的狀態(tài)下被存儲(chǔ)在安全存儲(chǔ)器114中。
[0047]在塊424中,客戶端設(shè)備102確定客戶端設(shè)備102是否已經(jīng)由服務(wù)器104成功認(rèn)證。如果為否,則方法400循環(huán)回到塊404,其中客戶端設(shè)備102可以重新嘗試與服務(wù)器104建立安全通信會(huì)話。然而,如果客戶端設(shè)備102被成功認(rèn)證,則方法400前進(jìn)到塊426,其中客戶端設(shè)備102通過(guò)通知服務(wù)器104隨后的消息將使用商定的密碼協(xié)議來(lái)確認(rèn)與服務(wù)器104的密碼套件。在這樣做時(shí),安全引擎110可以生成主密鑰或會(huì)話密鑰。為了這樣做,在其中使用RSA密鑰交換的實(shí)施例中,安全引擎110計(jì)算預(yù)主密鑰、在塊406中生成的客戶端隨機(jī)的臨時(shí)隨機(jī)數(shù)以及在塊410中接收的服務(wù)器隨機(jī)的臨時(shí)隨機(jī)數(shù)的哈希函數(shù)??蛇x地,在其中使用Diffie-Hellman密鑰交換的實(shí)施例中,安全引擎110根據(jù)Diffie-Hellman全局值、公共Diffie-Hel Iman服務(wù)器密鑰和私有Diffie-Hel Iman客戶端密鑰來(lái)生成會(huì)話密鑰。一旦被生成,S0C112的安全性引擎110就可以將所述會(huì)話密鑰存儲(chǔ)在安全引擎110的安全存儲(chǔ)器114中。在一些實(shí)施例中,在會(huì)話密鑰存儲(chǔ)在安全存儲(chǔ)器114中時(shí),可以使用安全密鑰150對(duì)其進(jìn)行加密。
[0048]在塊428中,安全引擎110生成會(huì)話密鑰的哈希函數(shù),所述會(huì)話密鑰被發(fā)送到服務(wù)器104用于在客戶端完成消息中進(jìn)行驗(yàn)證。再次,如上面討論的,會(huì)話密鑰的哈希代碼可以通過(guò)安全引擎110使用公共服務(wù)器密鑰進(jìn)行加密。作為響應(yīng),服務(wù)器104確認(rèn)與客戶端設(shè)備102的密碼套件以便確認(rèn)商定的密碼(例如,會(huì)話密鑰)。服務(wù)器104還發(fā)送包括會(huì)話密鑰的類似哈希代碼的服務(wù)器完成消息,用于由客戶端設(shè)備102進(jìn)行驗(yàn)證。假設(shè)客戶端設(shè)備102和服務(wù)器104驗(yàn)證會(huì)話密鑰的哈希代碼,則握手會(huì)話完成并且客戶端設(shè)備102和服務(wù)器104的每一個(gè)具有用于加密和解密隨后消息的共享秘密會(huì)話密鑰。
[0049]盡管在附圖和前面的描述中詳細(xì)說(shuō)明和描述了本公開(kāi),但是這樣的說(shuō)明和描述應(yīng)當(dāng)被認(rèn)為在本質(zhì)上是示例性的而非限制性的,可以理解,僅示出和描述了示例性實(shí)施例,并且請(qǐng)求保護(hù)與本公開(kāi)和所述權(quán)利要求一致的所有修改和變型。
【權(quán)利要求】
1.一種片上系統(tǒng)裝置,包括: 片上系統(tǒng),包括安全引擎,所述安全引擎具有僅能夠由所述安全引擎訪問(wèn)的安全存儲(chǔ)器,所述安全引擎用于: 生成隨機(jī)的臨時(shí)隨機(jī)數(shù),用于使用所述臨時(shí)隨機(jī)數(shù)發(fā)起對(duì)于通過(guò)網(wǎng)絡(luò)與服務(wù)器的安全通信會(huì)話的請(qǐng)求; 執(zhí)行與所述服務(wù)器的密碼密鑰交換,以便生成對(duì)稱會(huì)話密鑰來(lái)在所述安全通信會(huì)話期間對(duì)發(fā)送到所述服務(wù)器的消息進(jìn)行加密并且對(duì)從所述服務(wù)器接收的消息進(jìn)行解密; 將所述會(huì)話密鑰存儲(chǔ)在所述安全存儲(chǔ)器中, 所述片上系統(tǒng)用于使用所述會(huì)話密鑰建立通過(guò)所述網(wǎng)絡(luò)與所述服務(wù)器的所述安全通信會(huì)話。
2.根據(jù)權(quán)利要求1所述的片上系統(tǒng)裝置,其中,所述片上系統(tǒng)用于使用所述會(huì)話密鑰建立通過(guò)所述網(wǎng)絡(luò)與所述服務(wù)器的安全套接字層通信會(huì)話。
3.根據(jù)權(quán)利要求1所述的片上系統(tǒng)裝置,其中,所述安全引擎用于對(duì)所述對(duì)于所述安全通信會(huì)話的請(qǐng)求做出響應(yīng),從所述服務(wù)器接收服務(wù)器臨時(shí)隨機(jī)數(shù),響應(yīng)消息包括服務(wù)器臨時(shí)隨機(jī)數(shù),并且將所述服務(wù)器臨時(shí)隨機(jī)數(shù)存儲(chǔ)在所述安全存儲(chǔ)器中。
4.根據(jù)權(quán)利要求1所述的片上系統(tǒng)裝置,其中,所述安全引擎用于從所述服務(wù)器接收服務(wù)器證書(shū)并且將所述服務(wù)器證書(shū)存儲(chǔ)在所述安全存儲(chǔ)器中。
5.根據(jù)權(quán)利要求1所述的片上系統(tǒng)裝置,其中,所述安全引擎用于執(zhí)行與所述服務(wù)器的Rivest-Shamir-Adleman密鑰交換,以便生成所述對(duì)稱會(huì)話密鑰。
6.根據(jù)權(quán)利要求5所述的片上系統(tǒng)裝置,其中,所述安全引擎用于生成預(yù)主密鑰,使用所述安全引擎的安全密鑰對(duì)所述預(yù)主密鑰進(jìn)行加密,并且將被加密的預(yù)主密鑰發(fā)送到所述服務(wù)器。
7.根據(jù)權(quán)利要求6所述的片上系統(tǒng)裝置,其中,所述安全引擎用于使用服務(wù)器公共密鑰包裹所述預(yù)主密鑰并且將被包裹的預(yù)主密鑰存儲(chǔ)在安全存儲(chǔ)設(shè)備中。
8.根據(jù)權(quán)利要求6所述的片上系統(tǒng)裝置,其中,所述安全引擎用于根據(jù)所述預(yù)主密鑰來(lái)生成所述會(huì)話密鑰。
9.根據(jù)權(quán)利要求8所述的片上系統(tǒng)裝置,其中,所述安全引擎用于根據(jù)由所述安全引擎生成的所述隨機(jī)的臨時(shí)隨機(jī)數(shù)以及從所述服務(wù)器接收的臨時(shí)隨機(jī)數(shù)來(lái)計(jì)算哈希函數(shù)。
10.根據(jù)權(quán)利要求5所述的片上系統(tǒng)裝置,其中,所述安全引擎用于從所述服務(wù)器接收公共Rivest-Shamir-Adleman服務(wù)器密鑰,并且將所述公共Rivest-Shamir-Adleman服務(wù)器密鑰存儲(chǔ)在所述安全存儲(chǔ)器中。
11.根據(jù)權(quán)利要求1所述的片上系統(tǒng)裝置,其中,所述安全引擎用于執(zhí)行與所述服務(wù)器的Diffie-Hellman密鑰交換,以便生成所述對(duì)稱會(huì)話密鑰。
12.根據(jù)權(quán)利要求11所述的片上系統(tǒng)裝置,其中,所述安全引擎用于生成公共Diffie-Hellman客戶端密鑰和私有Diffie-HelIman客戶端密鑰,使用所述安全引擎的安全密鑰來(lái)對(duì)所述公共Diffie-Hellman客戶端密鑰進(jìn)行簽名,并且將被簽名的公共Diffie-Hellman密鑰發(fā)送到所述服務(wù)器。
13.根據(jù)權(quán)利要求12所述的片上系統(tǒng)裝置,其中,所述安全引擎用于從所述服務(wù)器接收公共Diffie-Hellman服務(wù)器密鑰并且根據(jù)所述私有Diffie-Hellman客戶端密鑰和所述公共Diffie-Hellman服務(wù)器密鑰來(lái)生成所述會(huì)話密鑰。
14.根據(jù)權(quán)利要求13所述的片上系統(tǒng)裝置,其中,所述安全引擎用于使用所述會(huì)話密鑰來(lái)對(duì)從所述客戶端設(shè)備發(fā)送到所述服務(wù)器的隨后消息進(jìn)行加密。
15.根據(jù)權(quán)利要求11所述的片上系統(tǒng)裝置,其中,所述安全引擎用于從所述服務(wù)器接收Diffie-Hellman全局值和公共Diffie-Hellman服務(wù)器密鑰,并且將所述Diffie-Hellman全局值和所述公共Diffie-Hellman服務(wù)器密鑰中的至少一個(gè)存儲(chǔ)在安全存儲(chǔ)設(shè)備中。
16.—種方法,包括: 在客戶端設(shè)備的片上系統(tǒng)的安全引擎中生成隨機(jī)的臨時(shí)隨機(jī)數(shù); 使用所述客戶端設(shè)備發(fā)起對(duì)于通過(guò)網(wǎng)絡(luò)與服務(wù)器的安全通信會(huì)話的請(qǐng)求,所述請(qǐng)求包括所述隨機(jī)的臨時(shí)隨機(jī)數(shù); 使用所述片上系統(tǒng)的所述安全引擎執(zhí)行與所述服務(wù)器的密碼密鑰交換,以便生成對(duì)稱會(huì)話密鑰來(lái)在所述安全通信會(huì)話期間對(duì)發(fā)送到所述服務(wù)器的消息進(jìn)行加密并且對(duì)從所述服務(wù)器接收的消息進(jìn)行解密; 將所述會(huì)話密鑰存儲(chǔ)在所述片上系統(tǒng)的所述安全引擎的安全存儲(chǔ)器中;并且 使用所述客戶端設(shè)備,使用所述會(huì)話密鑰來(lái)建立與所述服務(wù)器的所述安全通信會(huì)話。
17.根據(jù)權(quán)利要求16所述的方法,其中,發(fā)起對(duì)于安全通信會(huì)話的請(qǐng)求包括發(fā)起對(duì)于安全套接字層通信會(huì)話的請(qǐng)求。
18.根據(jù)權(quán)利要求16所述的方法,進(jìn)一步包括: 對(duì)所述對(duì)于安全通信會(huì)話的請(qǐng)求做出響應(yīng),從所述服務(wù)器接收響應(yīng)消息,所述響應(yīng)消息包括服務(wù)器臨時(shí)隨機(jī)數(shù),并且 將所述服務(wù)器臨時(shí)隨機(jī)數(shù)存儲(chǔ)在所述片上系統(tǒng)的所述安全引擎的所述安全存儲(chǔ)器中。
19.根據(jù)權(quán)利要求16所述的方法,其中,發(fā)起對(duì)于安全通信會(huì)話的請(qǐng)求包括將包括所述臨時(shí)隨機(jī)數(shù)的ClientHello消息發(fā)送到所述服務(wù)器;并且進(jìn)一步包括: 從所述服務(wù)器接收ServerHello消息,所述ServerHello消息包括服務(wù)器臨時(shí)隨機(jī)數(shù);并且 將所述服務(wù)器臨時(shí)隨機(jī)數(shù)存儲(chǔ)在所述片上系統(tǒng)的所述安全引擎的所述安全存儲(chǔ)器中。
20.根據(jù)權(quán)利要求16所述的方法,進(jìn)一步包括從所述服務(wù)器接收服務(wù)器證書(shū)并且將所述服務(wù)器證書(shū)存儲(chǔ)在所述客戶端設(shè)備的所述片上系統(tǒng)的所述安全引擎的所述安全存儲(chǔ)器中。
21.根據(jù)權(quán)利要求16所述的方法,其中,執(zhí)行與所述服務(wù)器的所述密碼密鑰交換包括使用所述片上系統(tǒng)的所述安全引擎執(zhí)行與所述服務(wù)器的Rivest-Shamir-Adleman密鑰交換。
22.根據(jù)權(quán)利要求21所述的方法,其中,執(zhí)行與所述服務(wù)器的Rivest-Shamir-Adleman密鑰交換包括: 在所述安全引擎中生成預(yù)主密鑰; 使用所述安全引擎的安全密鑰來(lái)對(duì)所述預(yù)主密鑰進(jìn)行加密;并且 將被加密的預(yù)主密鑰發(fā)送到所述服務(wù)器。
23.根據(jù)權(quán)利要求22所述的方法,進(jìn)一步包括: 使用服務(wù)器公共密鑰將所述預(yù)主密鑰包裹在所述片上系統(tǒng)的所述安全引擎中,并且 將被包裹的預(yù)主密鑰存儲(chǔ)在所述片上系統(tǒng)的所述安全引擎的安全存儲(chǔ)設(shè)備中。
24.根據(jù)權(quán)利要求22所述的方法,其中,執(zhí)行與所述服務(wù)器的Rivest-Shamir-Adleman密鑰交換包括:根據(jù)所述預(yù)主密鑰在所述片上系統(tǒng)的所述安全引擎中生成所述會(huì)話密鑰。
25.根據(jù)權(quán)利要求24所述的方法,其中,在所述安全引擎中生成所述會(huì)話密鑰包括:使用所述片上系統(tǒng)的所述安全引擎,根據(jù)由所述安全引擎生成的所述隨機(jī)的臨時(shí)隨機(jī)數(shù)以及從所述服務(wù)器接收的臨時(shí)隨機(jī)數(shù)來(lái)計(jì)算哈希函數(shù)。
26.根據(jù)權(quán)利要求21所述的方法,其中,執(zhí)行與所述服務(wù)器的Rivest-Shamir-Adleman密鑰交換包括: 從所述服務(wù)器接收公共Rivest-Shamir-Adleman服務(wù)器密鑰;并且 將所述公共Rivest-Shamir-Adleman服務(wù)器密鑰存儲(chǔ)在所述片上系統(tǒng)的所述安全引擎的所述安全存儲(chǔ)器中。
27.根據(jù)權(quán)利要求16所述的方法,其中,執(zhí)行與所述服務(wù)器的所述密碼密鑰交換包括:使用所述片上系統(tǒng)的所述安全引擎執(zhí)行與所述服務(wù)器的Diffie-Hellman密鑰交換。
28.根據(jù)權(quán)利要求27所述的方法,其中,執(zhí)行與所述服務(wù)器的Diffie-Hellman密鑰交換包括: 在所述片上系統(tǒng)的所述安全引擎中生成公共Diffie-Hellman客戶端密鑰和私有Diffie-Hellman客戶端密鑰; 使用所述片上系統(tǒng)的所述安全引擎的安全密鑰來(lái)對(duì)所述公共Diffie-Hellman客戶端密鑰進(jìn)行簽名;并且 將被簽名的公共Diffie-Hellman密鑰發(fā)送到所述服務(wù)器。
29.根據(jù)權(quán)利要求28所述的方法,其中,執(zhí)行與所述服務(wù)器的Diffie-Hellman密鑰交換包括: 從所述服務(wù)器接收公共Diffie-Hellman服務(wù)器密鑰; 在所述片上系統(tǒng)的所述安全引擎中,根據(jù)所述私有Diffie-Hellman客戶端密鑰和所述公共Diffie-Hellman服務(wù)器密鑰生成所述會(huì)話密鑰。
30.根據(jù)權(quán)利要求29所述的方法,其中,執(zhí)行與所述服務(wù)器的Diffie-Hellman密鑰交換包括:使用所述會(huì)話密鑰來(lái)對(duì)從所述客戶端設(shè)備發(fā)送到所述服務(wù)器的隨后消息進(jìn)行加密。
31.根據(jù)權(quán)利要求27所述的方法,其中,執(zhí)行與所述服務(wù)器的Diffie-Hellman密鑰交換包括: 從所述服務(wù)器接收Diffie-Hellman全局值和公共Diffie-Hellman服務(wù)器密鑰;并且 將所述Diffie-Hellman全局值和所述公共Diffie-Hellman服務(wù)器密鑰中的至少一個(gè)存儲(chǔ)在所述片上系統(tǒng)的所述安全引擎的安全存儲(chǔ)設(shè)備中。
32.根據(jù)權(quán)利要求16所述的方法,進(jìn)一步包括: 取回被存儲(chǔ)在所述客戶端設(shè)備上的客戶端證書(shū); 使用被存儲(chǔ)在所述片上系統(tǒng)的所述安全引擎的安全存儲(chǔ)器中的安全密鑰對(duì)客戶端證書(shū)進(jìn)行簽名;并且 將所述客戶端證書(shū)發(fā)送到所述服務(wù)器。
33.如權(quán)利要求16所述的方法,進(jìn)一步包括: 在所述片上系統(tǒng)的所述安全引擎中生成從所述客戶端發(fā)送到所述服務(wù)器的先前消息的哈希代碼; 使用被存儲(chǔ)在所述安全引擎的安全存儲(chǔ)器中的安全密鑰對(duì)所述哈希代碼進(jìn)行簽名;并且 向所述服務(wù)器發(fā)送客戶端證書(shū)驗(yàn)證消息,所述客戶端證書(shū)驗(yàn)證消息包括被簽名的哈希代碼。
34.如權(quán)利要求16所述的方法,其中,建立所述安全通信會(huì)話包括: 在所述安全引擎中根據(jù)所述會(huì)話密鑰生成哈希代碼;并且 向所述服務(wù)器發(fā)送包括所述哈希代碼的客戶端完成消息,以便指示所述客戶端已經(jīng)完成初始握手程序。
35.一種源設(shè)備,包括: 片上系統(tǒng),具有安全引擎,所述片上系統(tǒng)包括多個(gè)指令,當(dāng)被執(zhí)行時(shí),所述指令使所述片上系統(tǒng)執(zhí)行根據(jù)權(quán)利要求16-34所述的方法。
36.一個(gè)或多個(gè)機(jī)器可讀介質(zhì),包括多個(gè)指令,對(duì)由客戶端設(shè)備執(zhí)行做出響應(yīng),所述指令使所述客戶端設(shè)備執(zhí)行根據(jù)權(quán)利要求16-34所述的方法。
37.一種方法,包括: 在客戶端設(shè)備的片上系統(tǒng)的安全引擎中生成隨機(jī)的臨時(shí)隨機(jī)數(shù); 使用所述客戶端設(shè)備發(fā)起對(duì)于通過(guò)網(wǎng)絡(luò)與服務(wù)器的安全套接字層通信會(huì)話的請(qǐng)求,所述請(qǐng)求包括所述隨機(jī)的臨時(shí)隨機(jī)數(shù); 使用所述片上系統(tǒng)的所述安全引擎來(lái)執(zhí)行與所述服務(wù)器的密碼密鑰交換,以便生成對(duì)稱會(huì)話密鑰來(lái)在所述安全套接字層通信會(huì)話期間對(duì)發(fā)送到所述服務(wù)器的消息進(jìn)行加密并且對(duì)從所述服務(wù)器接收的消息進(jìn)行解密; 將所述會(huì)話密鑰存儲(chǔ)在所述片上系統(tǒng)的所述安全引擎的安全存儲(chǔ)器中;并且 在所述安全引擎中根據(jù)所述會(huì)話密鑰生成哈希代碼;并且 向所述服務(wù)器發(fā)送包括所述哈希代碼的客戶端完成消息,以便指示所述客戶端已經(jīng)完成初始握手程序。
38.根據(jù)權(quán)利要求37所述的方法,其中,執(zhí)行與所述服務(wù)器的所述密碼密鑰交換包括:使用所述片上系統(tǒng)的所述安全引擎執(zhí)行與所述服務(wù)器的Rivest-Shamir-Adleman密鑰交換。
39.根據(jù)權(quán)利要求38所述的方法,其中,執(zhí)行與所述服務(wù)器的Rivest-Shamir-Adleman密鑰交換包括: 在所述安全引擎中生成預(yù)主密鑰; 使用所述安全引擎的安全密鑰對(duì)所述預(yù)主密鑰進(jìn)行加密;并且 將被加密的預(yù)主密鑰發(fā)送到所述服務(wù)器。
40.根據(jù)權(quán)利要求39所述的方法,進(jìn)一步包括: 使用服務(wù)器公共密鑰來(lái)將預(yù)主密鑰包裹在所述安全引擎中,并且 將被包裹的預(yù)主密鑰存儲(chǔ)在所述片上系統(tǒng)的所述安全引擎的安全存儲(chǔ)設(shè)備中。
41.根據(jù)權(quán)利要求39所述的方法,其中,執(zhí)行與所述服務(wù)器的Rivest-Shamir-Adleman密鑰交換包括:在所述片上系統(tǒng)的所述安全引擎中根據(jù)所述預(yù)主密鑰生成所述會(huì)話密鑰。
42.根據(jù)權(quán)利要求41所述的方法,其中,在所述安全引擎中生成所述會(huì)話密鑰包括:使用所述片上系統(tǒng)的所述安全引擎,根據(jù)由所述安全引擎生成的所述隨機(jī)的臨時(shí)隨機(jī)數(shù)以及從所述服務(wù)器接收的臨時(shí)隨機(jī)數(shù)來(lái)計(jì)算哈希函數(shù)。
43.根據(jù)權(quán)利要求37所述的方法,其中,執(zhí)行與所述服務(wù)器的所述密碼密鑰交換包括:使用所述片上系統(tǒng)的所述安全引擎執(zhí)行與所述服務(wù)器的Diffie-Hellman密鑰交換。
44.根據(jù)權(quán)利要求43所述的方法,其中,執(zhí)行與所述服務(wù)器的Diffie-Hellman密鑰交換包括: 在所述片上系統(tǒng)的所述安全引擎中,生成公共Diffie-Hellman客戶端密鑰和私有Diffie-Hellman客戶端密鑰; 使用所述片上系統(tǒng)的所述安全引擎的安全密鑰對(duì)所述公共Diffie-Hellman客戶端密鑰進(jìn)行簽名;并且 將被簽名的公共Diffie-Hellman密鑰發(fā)送到所述服務(wù)器。
45.根據(jù)權(quán)利要求44所述的方法,其中,執(zhí)行與所述服務(wù)器的Diffie-Hellman密鑰交換包括: 從所述服務(wù)器接收公共Diffie-Hellman服務(wù)器密鑰; 在所述片上系統(tǒng)的所述安全引擎中,根據(jù)所述私有Diffie-Hellman客戶端密鑰和所述公共Diffie-Hellman服務(wù)器密鑰生成所述會(huì)話密鑰。
46.一種源設(shè)備,包括: 具有安全引擎的片上系統(tǒng),所述片上系統(tǒng)包括多個(gè)指令,當(dāng)被執(zhí)行時(shí),所述指令使所述片上系統(tǒng)執(zhí)行根據(jù)權(quán)利要求37-45所述的方法。
47.一個(gè)或多個(gè)機(jī)器可讀介質(zhì),包括多個(gè)指令,對(duì)由客戶端設(shè)備執(zhí)行做出響應(yīng),所述指令使所述客戶端設(shè)備執(zhí)行根據(jù)權(quán)利要求37-45所述的方法。
【文檔編號(hào)】H04L9/32GK104170312SQ201180075550
【公開(kāi)日】2014年11月26日 申請(qǐng)日期:2011年12月15日 優(yōu)先權(quán)日:2011年12月15日
【發(fā)明者】H·M·科斯拉維, E·C·埃普, F·卡比爾 申請(qǐng)人:英特爾公司