存儲(chǔ)設(shè)備輔助式內(nèi)聯(lián)加密和解密的制作方法
【專(zhuān)利說(shuō)明】存儲(chǔ)設(shè)備輔助式內(nèi)聯(lián)加密和解密
[0001]根據(jù)35 U.S.C.§ 119的優(yōu)先權(quán)要求
[0002]本專(zhuān)利申請(qǐng)要求于2013年4月16日提交的題為“DEVICE ASSISTED INLINESTORAGE ENCRYPT1N(設(shè)備輔助式內(nèi)聯(lián)存儲(chǔ)加密)”的臨時(shí)申請(qǐng)N0.61/812,616的優(yōu)先權(quán),該臨時(shí)申請(qǐng)已轉(zhuǎn)讓給本申請(qǐng)受讓人并因此通過(guò)引用明確納入于此。
[0003]背景
[0004]領(lǐng)域
[0005]本公開(kāi)涉及與外部存儲(chǔ)設(shè)備聯(lián)用的主機(jī)存儲(chǔ)控制器,尤其涉及數(shù)據(jù)的內(nèi)聯(lián)加密和解密。
【背景技術(shù)】
[0006]為了保護(hù)數(shù)據(jù),此類(lèi)數(shù)據(jù)通常在傳輸期間和/或在存儲(chǔ)時(shí)被加密。在一個(gè)示例中,數(shù)據(jù)被存儲(chǔ)于經(jīng)由存儲(chǔ)總線(xiàn)與主機(jī)片上系統(tǒng)(SoC)相連接的外部存儲(chǔ)設(shè)備中。典型的SoC可包括應(yīng)用處理電路和主機(jī)存儲(chǔ)控制器,主機(jī)存儲(chǔ)控制器是SoC的硬件元件。應(yīng)用處理電路執(zhí)行用于發(fā)起去往/來(lái)自外部存儲(chǔ)設(shè)備的讀/寫(xiě)事務(wù)的主機(jī)軟件。例如,主機(jī)軟件組件可命令主機(jī)存儲(chǔ)控制器向外部存儲(chǔ)設(shè)備發(fā)布讀/寫(xiě)事務(wù)。主機(jī)存儲(chǔ)控制器進(jìn)而在存儲(chǔ)總線(xiàn)上與外部存儲(chǔ)設(shè)備通信以復(fù)制去往/來(lái)自該存儲(chǔ)設(shè)備的數(shù)據(jù),并且隨后通知主機(jī)軟件此類(lèi)操作已完成。主機(jī)存儲(chǔ)控制器還可經(jīng)由單獨(dú)的存儲(chǔ)器總線(xiàn)來(lái)訪(fǎng)問(wèn)主機(jī)存儲(chǔ)器。一般而言,主機(jī)存儲(chǔ)器通常是被保護(hù)免受惡意攻擊的較安全的存儲(chǔ)器,而外部存儲(chǔ)設(shè)備通常是易受此類(lèi)攻擊的不那么安全的片外存儲(chǔ)器設(shè)備。因此,存儲(chǔ)于外部存儲(chǔ)設(shè)備中的數(shù)據(jù)可能需要加密,而存儲(chǔ)于主機(jī)存儲(chǔ)器中的數(shù)據(jù)通常不需要加密。加密過(guò)程可能需要對(duì)于主機(jī)存儲(chǔ)控制器而言不可用的參數(shù)。在此類(lèi)系統(tǒng)內(nèi),主機(jī)存儲(chǔ)控制器通常作為具有有限命令解碼(或者根本沒(méi)有命令解碼)的通道來(lái)操作。讀/寫(xiě)操作(例如,命令生成/解碼和訪(fǎng)問(wèn)優(yōu)化)的復(fù)雜性駐留在主機(jī)軟件中以及由存儲(chǔ)設(shè)備執(zhí)行的固件中。相應(yīng)地,為了保護(hù)存儲(chǔ)于外部存儲(chǔ)設(shè)備中的數(shù)據(jù),數(shù)據(jù)的加密/解密通常由主機(jī)軟件和/或存儲(chǔ)設(shè)備執(zhí)行,而不是由主機(jī)存儲(chǔ)控制器執(zhí)行。
[0007]然而,需要改為準(zhǔn)許由主機(jī)存儲(chǔ)控制器進(jìn)行高效內(nèi)聯(lián)加密/解密的解決方案。
[0008]概述
[0009]—種在主機(jī)存儲(chǔ)控制器處操作的用于在向主機(jī)存儲(chǔ)控制器外部的存儲(chǔ)設(shè)備的寫(xiě)操作期間加密數(shù)據(jù)的方法,包括:從請(qǐng)求方主機(jī)軟件組件獲得要向所述存儲(chǔ)設(shè)備寫(xiě)入數(shù)據(jù)的寫(xiě)命令;向所述存儲(chǔ)設(shè)備發(fā)送所述寫(xiě)命令;從所述存儲(chǔ)設(shè)備獲得與所述數(shù)據(jù)相關(guān)聯(lián)的參數(shù);基于所述參數(shù)生成加密密鑰;以及使用所述加密密鑰來(lái)加密所述數(shù)據(jù)。
[0010]在另一方面,一種在主機(jī)存儲(chǔ)控制器處操作的用于在從主機(jī)存儲(chǔ)控制器外部的存儲(chǔ)設(shè)備的讀操作期間解密數(shù)據(jù)的方法,包括:從請(qǐng)求方主機(jī)軟件組件獲得要從所述存儲(chǔ)設(shè)備讀取數(shù)據(jù)的讀命令;向所述存儲(chǔ)設(shè)備發(fā)送所述讀命令;從所述存儲(chǔ)設(shè)備獲得經(jīng)加密數(shù)據(jù)以及與所述經(jīng)加密數(shù)據(jù)相關(guān)聯(lián)的參數(shù);基于所述參數(shù)生成解密密鑰;以及使用所述解密密鑰來(lái)解密所述經(jīng)加密數(shù)據(jù)。
[0011]在又一方面,一種設(shè)備包括用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)設(shè)備、以及耦合至所述存儲(chǔ)設(shè)備的處理電路,該處理電路具有主機(jī)存儲(chǔ)控制器,該主機(jī)存儲(chǔ)控制器配置成:從請(qǐng)求方主機(jī)軟件組件獲得要向所述存儲(chǔ)設(shè)備寫(xiě)入數(shù)據(jù)的寫(xiě)命令;向所述存儲(chǔ)設(shè)備發(fā)送所述寫(xiě)命令;從所述存儲(chǔ)設(shè)備獲得與所述數(shù)據(jù)相關(guān)聯(lián)的參數(shù);基于所述參數(shù)生成加密密鑰;以及使用所述加密密鑰來(lái)加密所述數(shù)據(jù)。
[0012]在又一方面,一種設(shè)備包括用于存儲(chǔ)數(shù)據(jù)的存儲(chǔ)設(shè)備、以及耦合至所述存儲(chǔ)設(shè)備的處理電路,該處理電路具有主機(jī)存儲(chǔ)控制器,該主機(jī)存儲(chǔ)控制器配置成:從請(qǐng)求方主機(jī)軟件組件獲得要從所述存儲(chǔ)設(shè)備讀取數(shù)據(jù)的讀命令;向所述存儲(chǔ)設(shè)備發(fā)送所述讀命令;從所述存儲(chǔ)設(shè)備獲得經(jīng)加密數(shù)據(jù)以及與所述經(jīng)加密數(shù)據(jù)相關(guān)聯(lián)的參數(shù);基于所述參數(shù)生成解密密鑰;以及使用所述解密密鑰來(lái)解密所述經(jīng)加密數(shù)據(jù)。
[0013]附圖簡(jiǎn)述
[0014]在結(jié)合附圖理解下面闡述的詳細(xì)描述時(shí),各種特征、本質(zhì)和優(yōu)點(diǎn)會(huì)變得明顯,在附圖中,相同的附圖標(biāo)記貫穿始終作相應(yīng)標(biāo)識(shí)。
[0015]圖1解說(shuō)具有內(nèi)聯(lián)加密/解密的示例性片上系統(tǒng)(SoC)。
[0016]圖2解說(shuō)示例性應(yīng)用處理電路、主機(jī)存儲(chǔ)控制器和外部存儲(chǔ)設(shè)備以及在它們之間交換的信息。
[0017]圖3更詳細(xì)地解說(shuō)示例性SoC,其中該SoC包括裝備成用于存儲(chǔ)設(shè)備輔助式內(nèi)聯(lián)加密/解密的主機(jī)存儲(chǔ)控制器。
[0018]圖4解說(shuō)可由主機(jī)存儲(chǔ)控制器協(xié)同片外存儲(chǔ)設(shè)備執(zhí)行的示例性?xún)?nèi)聯(lián)加密/寫(xiě)操作。
[0019]圖5解說(shuō)在主機(jī)存儲(chǔ)控制器與片外存儲(chǔ)設(shè)備之間執(zhí)行的示例性?xún)?nèi)聯(lián)加密/寫(xiě)操作。
[0020]圖6解說(shuō)與用于存儲(chǔ)設(shè)備輔助式內(nèi)聯(lián)加密/解密的通用閃存(UFS)實(shí)現(xiàn)的事務(wù)排隊(duì)聯(lián)用的示例性寄存器和主機(jī)存儲(chǔ)器空間。
[0021]圖7解說(shuō)與圖6的實(shí)現(xiàn)聯(lián)用的示例性UFS傳輸請(qǐng)求描述符(UTRD),其中該UTRD包括密鑰索引。
[0022]圖8解說(shuō)與圖6的實(shí)現(xiàn)聯(lián)用的示例性準(zhǔn)備好傳輸(RTT) UFS協(xié)議信息單元(UPIU),其中該UPIU包括邏輯塊地址(LBA)指示符和塊計(jì)數(shù)指示符。
[0023]圖9解說(shuō)可由主機(jī)存儲(chǔ)控制器協(xié)同片外存儲(chǔ)設(shè)備執(zhí)行的示例性?xún)?nèi)聯(lián)解密/讀操作。
[0024]圖10解說(shuō)在主機(jī)存儲(chǔ)控制器與片外存儲(chǔ)設(shè)備之間執(zhí)行的示例性?xún)?nèi)聯(lián)解密/讀操作。
[0025]圖11解說(shuō)與圖10的實(shí)現(xiàn)聯(lián)用的示例性“數(shù)據(jù)輸入’0JPIU,其中該UPIU包括LBA指示符和塊計(jì)數(shù)指示符。
[0026]圖12是解說(shuō)采用可利用圖1-11的系統(tǒng)、方法和裝置的處理系統(tǒng)的裝置的硬件實(shí)現(xiàn)的示例的框圖。
[0027]圖13是解說(shuō)圖12的處理電路的示例性組件的框圖。
[0028]圖14是解說(shuō)圖12的機(jī)器可讀介質(zhì)的示例性指令組件的框圖。
[0029]圖15解說(shuō)在主機(jī)存儲(chǔ)控制器處操作的用于在對(duì)存儲(chǔ)設(shè)備的寫(xiě)操作期間加密數(shù)據(jù)的方法。
[0030]圖16解說(shuō)在主機(jī)存儲(chǔ)控制器處操作的用于在從存儲(chǔ)設(shè)備的讀操作期間解密數(shù)據(jù)的方法。
[0031]圖17解說(shuō)在存儲(chǔ)設(shè)備處操作的用于促成在寫(xiě)操作期間由主機(jī)存儲(chǔ)控制器進(jìn)行數(shù)據(jù)加密的方法。
[0032]圖18解說(shuō)在存儲(chǔ)設(shè)備處操作的用于促成在讀操作期間由主機(jī)存儲(chǔ)控制器進(jìn)行數(shù)據(jù)解密的方法。
[0033]圖19解說(shuō)在主機(jī)存儲(chǔ)控制器處操作的用于在對(duì)存儲(chǔ)設(shè)備的寫(xiě)操作期間加密數(shù)據(jù)的替換方法。
[0034]圖20解說(shuō)在主機(jī)存儲(chǔ)控制器處操作的用于在從存儲(chǔ)設(shè)備的讀操作期間解密數(shù)據(jù)的替換方法。
[0035]詳細(xì)描述
[0036]在以下描述中,給出了具體細(xì)節(jié)以提供對(duì)本公開(kāi)的各方面的透徹理解。然而,本領(lǐng)域普通技術(shù)人員將理解,沒(méi)有這些具體細(xì)節(jié)也可實(shí)踐這些方面。例如,電路可能用框圖示出以避免使這些方面煙沒(méi)在不必要的細(xì)節(jié)中。在其他實(shí)例中,公知的電路、結(jié)構(gòu)和技術(shù)可能不被詳細(xì)示出以免模糊本公開(kāi)的這些方面。
[0037]措辭“示例性”在本文中用于表示“用作示例、實(shí)例或解說(shuō)”。本文中描述為“示例性”的任何實(shí)現(xiàn)或方面不必被解釋為優(yōu)于或勝過(guò)本公開(kāi)的其他方面。同樣,術(shù)語(yǔ)“方面”不要求本公開(kāi)的所有方面都包括所討論的特征、優(yōu)點(diǎn)或操作模式。
[0038]綜覽
[0039]若干新穎特征涉及存儲(chǔ)設(shè)備輔助式內(nèi)聯(lián)加密和解密。在一個(gè)方面,通過(guò)將片外存儲(chǔ)設(shè)備配置成提供參數(shù)以促成由片上系統(tǒng)(SoC)的主機(jī)存儲(chǔ)控制器對(duì)數(shù)據(jù)進(jìn)行內(nèi)聯(lián)加密/解密來(lái)執(zhí)行內(nèi)聯(lián)讀/寫(xiě)操作。在本文描述的各種示例中,由主機(jī)存儲(chǔ)控制器從片外存儲(chǔ)設(shè)備獲得的參數(shù)提供標(biāo)識(shí)符,該標(biāo)識(shí)符對(duì)于特定數(shù)據(jù)塊的讀和寫(xiě)操作是相同的,但隨數(shù)據(jù)塊而不同。此類(lèi)參數(shù)的具體示例是從存儲(chǔ)設(shè)備獲得的關(guān)于要加密/解密的數(shù)據(jù)的邏輯塊地址(LBA) ο然而,作為L(zhǎng)BA的補(bǔ)充或替換,可使用其他參數(shù)來(lái)提供增強(qiáng)安全性。為了提供本文中內(nèi)聯(lián)加密/解密規(guī)程的具體示例,以下描述中的一些描述針對(duì)使用LBA的實(shí)現(xiàn),但應(yīng)當(dāng)理解,可使用其他參數(shù)作為L(zhǎng)BA的補(bǔ)充或替換。
[0040]主機(jī)存儲(chǔ)控制器使用從存儲(chǔ)設(shè)備獲得的參數(shù)來(lái)生成或以其他方式獲得密鑰以用于加密/解密數(shù)據(jù),由此緩解使SoC的其他組件執(zhí)行或控制此類(lèi)功能的需求,從而提供更高效的內(nèi)聯(lián)加密/解密。在其中由主機(jī)存儲(chǔ)控制器從存儲(chǔ)設(shè)備獲得LBA的示例中,LBA被用作在加密/解密中使用的初始向量(或初始化向量)。該規(guī)程不同于原本將從不同于片外存儲(chǔ)設(shè)備的源獲得初始向量(諸如通過(guò)嘗試從接收自主機(jī)軟件的讀/寫(xiě)命令提取此類(lèi)信息)的內(nèi)聯(lián)加密/解密系統(tǒng)。還應(yīng)注意,通過(guò)將LBA用作初始向量,該初始向量對(duì)于寫(xiě)/加密操作和讀/解密操作兩者將會(huì)是相同的,由此允許主機(jī)存儲(chǔ)控制器解密先前已被加密并存儲(chǔ)于片外存儲(chǔ)設(shè)備中的數(shù)據(jù)。此外,該初始向量對(duì)于每個(gè)數(shù)據(jù)塊而言將會(huì)是不同的,由此為每個(gè)數(shù)據(jù)塊提供唯一的初始值。再進(jìn)一步,通過(guò)從片外存儲(chǔ)設(shè)備獲得LBA或其他合適的參數(shù)來(lái)用作初始向量,初始向量信息無(wú)需存儲(chǔ)在片上存儲(chǔ)器中,由此節(jié)省了寶貴的片上存儲(chǔ)空間。還應(yīng)注意,通常情況下,不向主機(jī)存儲(chǔ)控制器提供由片外存儲(chǔ)設(shè)備使用的實(shí)際存儲(chǔ)地址,而是改為僅向主機(jī)存儲(chǔ)控制器提供數(shù)據(jù)的主機(jī)存儲(chǔ)器地址,主機(jī)存儲(chǔ)器地址對(duì)于相同數(shù)據(jù)在讀和寫(xiě)操作之間可以不同。因此,主機(jī)存儲(chǔ)器地址通常不能被用于內(nèi)聯(lián)加密/解密。就此,由存儲(chǔ)設(shè)備使用的地址(無(wú)論是物理的還是邏輯的)位于與由主機(jī)處理器使用的存儲(chǔ)器地址不同的地址空間內(nèi)。常規(guī)情況下,主機(jī)存儲(chǔ)控制器不從片外存儲(chǔ)設(shè)備接收(并因此不能使用)存儲(chǔ)地址以在加密/解密中使用。
[0041]本文中描述的一些示例包括通常根據(jù)JEDEC固態(tài)技術(shù)聯(lián)盟(原來(lái)稱(chēng)作電子器件工程聯(lián)合委員會(huì)(JEDEC))的UFS主機(jī)控制器接口標(biāo)準(zhǔn)執(zhí)行的讀和寫(xiě)操作。例如,參見(jiàn)2012年6月的JESD220A和JESD223A標(biāo)準(zhǔn)文件。如下所述,JEDEC UFS讀和寫(xiě)操作被修改以提供本文所公開(kāi)的各種特征。然而,應(yīng)當(dāng)理解,本文中所描述的特征中的至少一些特征可在通常不遵循JEDEC標(biāo)準(zhǔn)的其他系統(tǒng)(包括專(zhuān)有的或其他系統(tǒng))中實(shí)現(xiàn)。
[0042]具有內(nèi)聯(lián)寫(xiě)加密和讀解密的示例性設(shè)備
[0043]圖1寬泛地解說(shuō)具有內(nèi)聯(lián)加密/解密的示例性片上系統(tǒng)100。簡(jiǎn)言之,SoClOO包括裝備成執(zhí)行主機(jī)軟件或軟件組件102的應(yīng)用處理電路101并進(jìn)一步包括主機(jī)存儲(chǔ)控制器104。在該示例中,主機(jī)存儲(chǔ)控制器104包括內(nèi)聯(lián)加密/解密模塊105,該加密/解密模塊105能夠加密經(jīng)由存儲(chǔ)總線(xiàn)108寫(xiě)入外部存儲(chǔ)設(shè)備106的數(shù)據(jù)和/或解密經(jīng)由相同的存儲(chǔ)總線(xiàn)從存儲(chǔ)設(shè)備106讀取的數(shù)據(jù)。這些操作可協(xié)同存儲(chǔ)于經(jīng)由存儲(chǔ)器總線(xiàn)112訪(fǎng)問(wèn)的主機(jī)存儲(chǔ)器110內(nèi)的數(shù)據(jù)或其他參數(shù)來(lái)執(zhí)行。為了促成由加密/解密模塊105執(zhí)行的操作,存儲(chǔ)設(shè)備106被配置成在讀和寫(xiě)操作期間向主機(jī)存儲(chǔ)控制器104提供參數(shù)(諸如LBA值)。
[0044]圖2提供了時(shí)序圖200,其解說(shuō)應(yīng)用處理電路202、主機(jī)存儲(chǔ)控制器204和外部存儲(chǔ)設(shè)備206的示例性讀和寫(xiě)操作并且具體解說(shuō)了在它們之間交換的以供與內(nèi)聯(lián)加密/解密聯(lián)用的信息。處理始于應(yīng)用處理電路202(代表未具體示出的請(qǐng)求方主機(jī)軟件組件)經(jīng)由內(nèi)部連接線(xiàn)向主機(jī)存儲(chǔ)控制器204發(fā)送寫(xiě)命令208,其標(biāo)識(shí)要被寫(xiě)入外部存儲(chǔ)設(shè)備206的數(shù)據(jù)。數(shù)據(jù)可藉由主機(jī)存儲(chǔ)器地址來(lái)標(biāo)識(shí)(其中主機(jī)存儲(chǔ)器設(shè)備未在圖中具體示出以允許更清楚地解說(shuō)其他組件)。主機(jī)存儲(chǔ)控制器204通過(guò)經(jīng)由存儲(chǔ)總線(xiàn)(也未在圖2中示出)向外部