對包括機密信息的存儲器區域的訪問的制作方法
【專利摘要】本發明的實施例涉及訪問包括機密信息的存儲器區域。可以接收來自進程的存儲器請求。存儲器請求可以包括進程的進程ID(PID)、所請求的存儲器地址和所請求的訪問類型。可以對該存儲器請求與關聯于包括機密信息的存儲器區域的許可集進行比較。可以基于比較結果控制進程對存儲器區域的訪問。
【專利說明】對包括機密信息的存儲器區域的訪問
[0001]優先權信息
[0002]本申請要求2011年7月18日提交的美國臨時申請N0.61/509,078的優先權的權益,該美國臨時申請的全部內容通過引用整體并入本文。
【背景技術】
[0003]設備可以存儲機密信息,如密碼安全參數(CSP)。然而,如果機密信息被未經授權方訪問,則可能損害該機密信息的完整度或安全性。將設備的進程編程為僅訪問該進程有權訪問的機密信息可能是不可靠的。
[0004]例如,進程可能發生故障和/或被未經授權方(如黑客)操縱,并且訪問該進程對其沒有權限的機密信息。制造者、銷售者和/或用戶面臨提供用于保護機密信息的更安全方法的挑戰。
【專利附圖】
【附圖說明】
[0005]下面的【具體實施方式】參照了附圖,其中:
[0006]圖1是用于控制對存儲器區域的訪問的設備的示例性框圖;
[0007]圖2是圖1的設備的許可模塊的示例性框圖;
[0008]圖3是在圖2的設備的許可模塊中包含的各模塊的示例性框圖;
[0009]圖4是圖1的設備的許可模塊的另一示例性框圖;
[0010]圖5是圖4的許可模塊的許可集的示例性框圖;
[0011]圖6是用于控制對存儲器區域的訪問的設備的另一示例性框圖;
[0012]圖7是包括圖6的設備的系統的示例性框圖;
[0013]圖8是包括用于控制對存儲器區域的訪問的指令的計算設備的示例性框圖;以及
[0014]圖9是用于控制對存儲器區域的訪問的方法的示例性流程圖。
【具體實施方式】
[0015]下面的描述給出了具體細節,以提供對實施例的全面理解。然而,本領域技術人員之一將理解,各實施例可以在沒有這些具體細節的情況下付諸于實踐。例如,可以在框圖中示出各系統,以便不會以不必要的細節使實施例不清楚。在其它情況中,可以在沒有不必要的細節的情況下示出眾所周知的進程、結構和技術,以便避免使實施例不清楚。
[0016]設備可以存儲機密信息,如密碼安全參數(CSP)。為了保持該機密信息的完整度或安全性,該設備可以使用從處理器來控制對機密信息的訪問。然而,這可能增加該設備的成本和復雜度并且降低性能。例如,該設備的主處理器可能在接收對機密信息的訪問之前必須與從處理器進行通信。
[0017]可替代地,機密信息可與可以使用該機密信息的進程分離并一起被存儲。然而,在此情況下,該機密信息可能不可訪問,除非相應的進程被加載并運行。進一步,如果該進程運行,則存儲器管理單元(MMU)可以限制對該進程的存儲器的訪問。此外,在多個位置之間分離機密信息可能損害該機密信息的完整度和/或安全性。此外,該進程可能發生故障和/或被未經授權方(如黑客)操縱,因此降低該機密信息的完整度或安全性。
[0018]實施例可以提高機密信息的安全性和/或完整度,而不會嚴重提高該設備的復雜度。例如,在實施例中,可以接收來自進程的存儲器請求。存儲器請求可以包括該進程的進程ID (PID)、所請求的存儲器地址和所請求的訪問類型。可以對該存儲器請求與關聯于包括機密信息的存儲器區域的許可集進行比較。可以基于比較來控制進程對存儲器區域的訪問。因此,對機密信息的每個部分的訪問許可可以單獨地和選擇性地基于多種因素,如PID、所請求的地址、所請求的訪問類型、意圖和用戶ID (UID)0
[0019]進一步,如果進程對機密信息的訪問被拒絕,則實施例還可以執行附加操作。例如,當進程請求不適當的訪問類型時,可以生成審計日志(audit log),以便保持訪問機密信息的失敗嘗試的記錄。進一步,如果進程的PID或所請求的地址不相容,則實施例可以執行諸如清除機密信息或生成中斷之類的動作。
[0020]現在參照附圖,圖1是用于控制對存儲器區域190的訪問的設備100的示例性框圖。設備100可以包含在對存儲器進行訪問的任何類型的設備中,如安全微處理器、筆記本計算機、臺式計算機、一體化系統、板式計算設備、便攜式閱讀設備、無線電子郵件設備、移動電話等。在圖1的實施例中,設備100包括許可模塊110。許可模塊110進一步包括許可集 120。
[0021]許可模塊110可以包括例如包括用于實現下面描述的功能的電子電路的硬件設備,如寄存器或布爾邏輯。此外或作為替代,許可模塊110可以被實現為在機器可讀存儲介質上編碼的并可由處理器運行的一系列指令。
[0022]存儲器區域190可以是機器可讀存儲介質的一部分,如能夠存儲諸如數據或指令之類的信息的任何類型的電子存儲設備、磁性存儲設備、光存儲設備或其它物理存儲設備。機器可讀存儲介質的示例包括隨機存取存儲器(RAM)、電可擦寫可編程只讀存儲器(EEPROM),存儲驅動器、光盤只讀存儲器(CD-ROM)等。
[0023]許可模塊110將從進程180接收存儲器請求。術語“進程”可以指計算機程序的任何一部分或者其實例。存儲器請求可以包括進程180的進程ID (PID)、所請求的存儲器地址和所請求的訪問類型。許可模塊110可以對存儲器請求與許可集120進行比較,其中許可集120與存儲機密信息192的存儲器區域190相關聯。然后,許可模塊110可以基于比較來控制進程180對存儲器區域190的訪問。例如,許可模塊110可以向存儲器區域190輸出訪問控制信號,該訪問控制信號啟用和/或禁用進程180訪問存儲器區域190的能力。
[0024]機密信息192可以是對其的訪問受限于經授權方的任何類型信息。機密信息192的示例可以包括密鑰、證書、與設備100的平臺安全性相關聯的信息、密碼信息、私人用戶數據等等。下面將關于圖2至圖4更詳細地說明許可模塊110的示例性操作。
[0025]圖2是圖1的設備100的許可模塊210的示例性框圖。在圖2的實施例中,許可模塊210包括許可集220、PID模塊230、地址模塊240、訪問類型模塊250、第一 NAND門260、第一 AND 門 270 和 NOT 門 280。
[0026]許可集220包括與存儲器區域190相關聯的一個或多個被允許的PID222、存儲器地址范圍224以及一個或多個被允許的訪問類型226。一個或多個被允許的PID222可以指被允許訪問存儲器區域190的一個或多個進程。存儲器地址范圍224可以指在請求訪問存儲器區域190時可以訪問的地址。訪問類型226包括讀類型、寫類型和引用類型中的至少一種。讀類型表示進程180是否得到讀取所請求的存儲器地址處的值的許可。寫類型表示進程180是否得到修改、清除、寫入和/或覆蓋所請求的存儲器地址處的值的許可。引用類型表示進程180是否得到提供指向所請求的存儲器地址的指針而不是所請求的存儲器地址處的值的許可。將關于圖5更詳細地說明許可集220。
[0027]PID模塊230、地址模塊24、以及訪問類型模塊250可以包括例如包括用于實現下面描述的功能的電子電路的硬件設備,如寄存器或布爾邏輯。此外或作為替代,模塊230、240和250可以被實現為在機器可讀存儲介質上編碼的并可由處理器運行的一系列指令。
[0028]PID模塊230對進程180的PID與許可集220的一個或多個被允許的PID222進行比較。例如,如果進程180的PID包含在一個或多個被允許的PID222中,則PID模塊230可以輸出邏輯“I”或“高”。否則,PID模塊230可以輸出邏輯“O”或“低”。
[0029]地址模塊240對所請求的存儲器地址與許可集220的存儲器地址范圍224進行比較。例如,如果所請求的存儲器地址包含在存儲器地址范圍224中,則地址模塊240可以輸出邏輯“I”或“高”。否則,地址模塊240可以輸出邏輯“O”或“低”。
[0030]訪問類型模塊250對所請求的訪問類型與許可集220的一個或多個被允許的訪問類型226進行比較。例如,如果所請求的訪問類型包含在一個或多個被允許的訪問類型226中,則訪問類型模塊250可以輸出邏輯“I”或“高”。否則,訪問類型模塊250可以輸出邏輯“O”或“低”。訪問類型模塊250的輸出通過NOT門280被反轉,并且從許可模塊210輸出故障信號。
[0031 ] 第一 NAND門260邏輯上對PID模塊230的輸出和地址模塊240的輸出進行NAND,并且從許可模塊210輸出消失(miss)信號。第一 AND門270邏輯上對PID模塊230的輸出、地址模塊240的輸出和訪問類型模塊250的輸出進行AND,并且從許可模塊210輸出訪問控制信號。
[0032]因此,許可模塊210基于PID模塊230、地址模塊240和訪問類型模塊250的比較而允許進程180對存儲器區域190的訪問。此外,如果PID模塊230指示一個或多個被允許的PID222不包括進程180的PID和/或地址模塊240指示存儲器地址范圍224不包括所請求的存儲器地址,則許可模塊210使消失信號有效。下面關于圖3提供模塊230、240和250的更詳細示例。
[0033]圖3是包含在圖2的設備的許可模塊210中的模塊230、240和250的示例性框圖。在圖3的實施例中,PID模塊230可以包括例如逐位XOR門232和第一 NOR門234。由逐位XOR門232接收的從進程180輸出的進程信號的PID和從由許可集220輸出的被允許的PID信號可以是多位字段。例如,進程信號的PID和被允許的PID信號中的每個位可以對應于多個不同類型的PID之一,其中每個PID對應于不同的進程或不同的進程類型。
[0034]依賴于與存儲器區域190相關聯的PID的數目,在被允許的PID信號中可以設置一個以上的位。然而,僅進程信號的PID的位之一可以被設置為表示進程180的標識。因此,逐位XOR門232對進程信號的PID和被允許的PID信號的對應位邏輯上逐位進行X0R。第一 NOR門234邏輯上對XOR門232的輸出的所有位進行N0R,因此還合并了從逐位XOR門232輸出的所有位。因此,如果進程180的PID包含在許可集220的一個或多個被允許的PID222中,則第一 NOR門234的輸出以及PID模塊230的輸出是邏輯“ I”或“高”。[0035]地址模塊240可以包括例如加法器242、第一比較器244、第二比較器246和第二NOR門248。第一加法器242從存儲器地址范圍224接收初始地址和長度。初始地址表示存儲器區域190的第一地址,長度表示存儲器區域190中包含的地址的數量。加法器242對初始地址和長度進行相加,以將存儲器區域190的最后的存儲器地址輸出至第二比較器246。第一比較器244對進程180的所請求的地址和存儲器地址范圍224的初始地址進行逐位量值比較。如果所請求的地址小于初始地址,則第一比較器244輸出邏輯“ I”或“高”信號。否則,第一比較器244輸出邏輯“低”或“零”信號。
[0036]第二比較器246對最后的存儲器地址與進程180的所請求的地址進行逐位量值比較。如果最后的存儲器地址小于所請求的地址,則第二比較器246輸出邏輯“I”或“高”信號。否則,第二比較器246輸出邏輯“低”或“零”信號。第二 NOR門248邏輯上對第一比較器244的輸出和第二比較器246的輸出進行N0R。如果進程180的所請求的地址包含在許可集220的存儲器地址范圍224中,則第二 NOR門248的輸出以及地址模塊240的輸出是邏輯“I”或“高”。
[0037]訪問類型模塊250可以包括例如逐位AND門252和第一 OR門254。向逐位AND門252輸入的許可集220的被允許的訪問類型信號以及進程180的所請求的訪問類型信號可以是多位字段。例如,被允許的訪問類型信號和所請求的訪問類型信號中的每個位可以對應于上面說明的多個不同訪問類型(如讀類型、寫類型和引用類型)之一。
[0038]依賴于與存儲器區域190相關聯的訪問類型的數目,在被允許的訪問類型信號中可以設置一個以上的位。然而,由于進程180每次訪問存儲器區域190僅可以執行訪問類型之一,所以僅所請求的訪問類型的位之一可以被設置。因此,逐位AND門252邏輯上對被允許的訪問類型信號和所請求的訪問類型信號的對應位進行逐位AND。第一 OR門254邏輯上對逐位AND門252的輸出的所有位進行0R,因此還合并了從逐位AND門252輸出的所有位。因此,如果所請求的訪問類型包含在許可集220的一個或多個被允許的訪問類型222中,則第一 OR門254的輸出以及訪問類型模塊250的輸出是邏輯“I”或“高”。第一 NAND門260、第一 AND門270以及NOT門280可以如上面關于圖2說明的那樣操作。
[0039]圖4是圖1的設備100的許可模塊410的另一示例性框圖。在圖4的實施例中,許可模塊410包括許可集420、PID模塊430、地址模塊440、訪問類型模塊450、第一 NAND門460、第一 AND門470、NOT門480以及意圖模塊490。圖4的PID模塊430、地址模塊440、訪問類型模塊450、第一 NAND門460、第一 AND門470和NOT門480可以分別類似于圖2的PID模塊230、地址模塊240、訪問類型模塊250、第一 NAND門260、第一 AND門270以及NOT門280。然而,第一 AND門470還可以接收意圖模塊490的輸出。此外,進程80的請求可以進一步包括用戶ID (WD)字段和請求的意圖。
[0040]圖4的許可集420可以類似于圖2的許可集220。例如,圖4的許可集420包括一個或多個被允許的PID422、存儲器地址范圍424以及一個或多個被允許的訪問類型426,這些類似于圖2中的許可集220中包含的一個或多個被允許的PID222、存儲器地址范圍224以及一個或多個被允許的訪問類型226。然而,如下面說明的,圖4的許可集420還接收WD,并且包括一個或多個被允許的意圖428。
[0041]UID字段可以識別用戶的類型和/或用戶的標識。用戶的類型可以與用戶組(如職員或管理員)有關。用戶的標識可以與識別特定用戶有關。許可集420可以包括許可集420的至少一部分的多個實例。如下面關于圖5更詳細地說明的,這些實例中的每個實例可以與多個WD之一相關聯,并且包括關于存儲器區域190的分離的許可。
[0042]所請求的意圖表示進程180試圖如何使用所請求的存儲器地址處的機密信息192。所請求的意圖的示例可以包括機密信息192的存儲目的地(如外部存儲器)、要對機密信息192執行的操作的類型(如密碼操作的類型)等等。
[0043]意圖模塊490可以包括例如包括用于實現下面描述的功能的電子電路的硬件設備,如寄存器或布爾邏輯。此外或作為替代,許可模塊410可以被實現為在機器可讀存儲介質上編碼的并可由處理器運行的一系列指令。
[0044]意圖模塊490對所請求的意圖與許可集420的一個或多個被允許的意圖進行比較。例如,許可集420可以將被允許的意圖類型信號發送至意圖模塊480,其中被允許的意圖類型信號和所請求的意圖信號是多位信號。意圖模塊490可以以與訪問類型模塊450的方式類似的方式執行兩個多位信號的比較。如果所請求的意圖包含在一個或多個被允許的意圖類型428中,則意圖模塊480可以輸出邏輯“I”或“高”。否則,意圖模塊480可以輸出邏輯“O”或“低”。
[0045]第一 AND門470邏輯上對意圖模塊480的輸出、PID模塊430的輸出、地址模塊440的輸出和訪問類型模塊450的輸出進行AND,并且從許可模塊410輸出訪問控制信號。因此,許可模塊410基于意圖模塊490、PID模塊430、地址模塊440和訪問類型模塊450的比較結果允許進程180對存儲器區域190的訪問。
[0046]與圖2類似,第一 NAND門460邏輯上對PID模塊430的輸出和地址模塊440的輸出進行NAND,并且從許可模塊410輸出消失信號。此外,NOT門480對訪問類型模塊450的輸出進行反轉,以輸出故障信號。因此,如果一個或多個被允許的訪問類型426不包括所請求的訪問類型,則許可模塊410使該故障信號有效。然而,如果一個或多個意圖類型428不包括所請求的意圖,則實施例也可以例如使該故障信號有效。
[0047]圖5是圖4的許可模塊410的許可集520的示例性框圖。在該實施例中,許可集520包括七個字段521至527,其中字段525至527中至少一些字段包括多個實例。第一字段521可以存儲表示許可集520是否是活躍的以及是否被分派給存儲器區域190的有效位。如果第一字段521的有效位未被設置,則設備100可以忽略許可集520。第二字段522可以存儲實際地址,如進程180的所請求的地址。第三字段523可以存儲與存儲器區域190中被映射至該實際地址的位置對應的虛擬地址。第四字段524可以存儲存儲器區域190的存儲器地址范圍,如存儲器區域190的初始地址和長度。第五字段525至第七字段527可以具有η個實例,其中η是自然數。第五字段525-1至525-η的實例中的每個實例可以存儲WD中相應WD的被允許的訪問類型。第六字段526-1至526-n的實例中的每個實例可以存儲WD中相應WD的被允許的PID。第七字段527-1至527_n中的實例中的每個實例可以存儲WD中對應WD的被允許的意圖類型。
[0048]每個HD的每組實例可以具有不同的許可。例如,第一 WD的第一實例525-1至527-1可以與職員用戶相關,而第n UID的第η實例525-η至527-η可以與管理員用戶相關。在該示例中,第一 WD525-1的被允許的訪問類型可以僅啟用讀訪問類型,而第n UID525-n的被允許的訪問類型可以啟用讀類型、寫類型和引用訪問類型中的全部。基于由UID識別的用戶,許可集520可以選擇這些組實例之一來轉發至模塊480、430和450。[0049]盡管將許可集520示出為具有七個字段521至527以及這些字段中針對不同WD的三個字段525至527的多個實例,但是實施例不局限于此。例如,實施例可以具有比七個字段更多或更少的字段和/或比這些字段中三個字段更多或更少的字段的實例。進一步,可以根據除UID之外的準則創建實例和/或對實例進行分組。
[0050]圖6是用于控制對存儲器區域190的訪問的設備600的另一示例性框圖。在該實施例中,設備600包括多個圖1的許可模塊110-1至110-n,其中η是自然數。設備600的實施例還可以包括多個其它類型的許可模塊,如圖2或圖4的許可模塊210或410。設備600進一步包括第二 AND門620、第三AND門640、第二 OR門670、動作模塊630以及審計模塊 650。
[0051]動作模塊630和審計模塊650可以包括例如包含用于實現下面描述的功能的電子電路的硬件設備,如寄存器或布爾邏輯,此外或作為替代,動作模塊630和審計模塊650可以被實現為在機器可讀存儲介質上編碼的并可由處理器運行的一系列指令。
[0052]如下面關于圖7更詳細地說明的,許可模塊110-1至110-n中的每個許可模塊可以包括與不同的存儲器區域相關聯的分離的許可集。然而,許可模塊110-1至110-n中的所有許可模塊可以從進程180接收進程180的相同PID、所請求的存儲器地址以及所請求的訪問類型。第二 AND門620邏輯上可以對所有許可模塊110-1至110_n的消失信號進行AND,并且向動作模塊630輸出動作信號。因此,如果許可模塊110-1至110_n中的所有許可模塊使消失信號有效,則僅使動作信號有效。
[0053]如果使動作信號有效,例如許可模塊110-1至110-n的PID模塊230和/或地址模塊240確定一個或多個被允許的PID222不包括進程180的PID和/或存儲器地址范圍224不包括所請求的存儲器地址,則動作模塊630會執行動作。由動作模塊630執行的動作可以包括什么也不做、擦除所請求的存儲器地址處的值、擦除存儲器區域處的全部值和/或生成中斷。中斷可以阻止對設備600和/或與設備600相關的組件(如處理器或存儲器)的訪問,和/或停止設備600和/或與設備600相關的組件(如處理器或存儲器)的功能的操作。上面動作中的一些動作可以通過防止未經授權方進一步嘗試訪問所請求的存儲器地址來提高安全性。
[0054]第三AND門620邏輯上對所有許可模塊110-1至110_n的故障信號進行AND,并且輸出審計信號。因此,如果許可模塊110-1至110-n中的所有許可模塊使故障信號有效,則僅使審計信號有效。如果使審計信號有效,例如許可模塊110-1至110-n的訪問類型模塊250確定一個或多個被允許的訪問類型226不包括所請求的訪問類型,則審計模塊650將生成審計日志660。審計日志660可以包括進程180的PID、所請求的地址、所請求的訪問類型、WD、失敗的訪問嘗試的數目、一個或多個失敗的訪問嘗試的時間戳和/或類似物。審計日志660可以是可配置的。例如,可以將審計模塊650配置為改變審計日志660的內容和/或長度。進一步,還可以配置用于保存審計日志660的方法,如當審計日志660滿時停止的平面文件(flat file)方法、當審計日志660滿時用新數據覆蓋舊數據的循環文件(circular file)方法和/或它們的組合。
[0055]第二 NOR門620邏輯上對所有許可模塊110-1至110_n的訪問控制信號進行N0R,并且輸出訪問控制信號。因此,如果許可模塊110-1至110-n中的至少一個許可模塊準許訪問存儲器區域180,則設備600使訪問控制信號有效,來準許進程180訪問存儲器區域180。盡管將動作模塊630和審計模塊650示出為與多個許可模塊110-1至110_n結合操作,但是動作模塊630和審計模塊650還可以與單個許可模塊110結合操作。
[0056]圖7是包括圖6的設備600的系統700的示例性框圖。在圖7的實施例中,系統700包括設備705、處理器710、存儲器管理單元720以及存儲器730。圖7的設備705可以類似于圖6的設備600。然而,系統700的實施例還可以包括其它類似設備,如圖1的設備100。存儲器730包括多個存儲器區域190-1至190-η (η是自然數),其中存儲器區域190-1至190-η中的每個存儲器區域可以類似于圖1的存儲器區域190。許可模塊110-1至110-n中的每個許可模塊對應于存儲器區域190-1至190-η之一。例如,許可模塊110-1至110-n中的每個許可模塊可以包括許可集120,許可集120控制對相應的存儲器區域190-1至190-η之一的機密信息192的訪問。
[0057]處理器710可以是至少一個中央處理器單元(CPU)、至少一個基于半導體的微處理器、至少一個圖形處理單元(GPU)、適合于進程180的指令的獲取和運行的其它硬件設備。處理器710可以輸出進程180的存儲器請求和/或接收動作信號。
[0058]MMU720可以與設備700分擔用于控制存儲器映射管理的方面的責任。例如,設備700和MMU210中的至少之一可以為存儲器730的不同部分(如多個存儲器區域190-1至190-η)限定地址范圍,和/或將實際地址(例如內部地址或物理地址)映射至虛擬地址(例如邏輯地址或外部地址)。進一步,MMU720可以管理對存儲器730的不包括機密信息192的區域的訪問控制,而設備700可以管理對存儲器730的確實包括機密信息192的區域的訪問控制。
[0059]當處理器710試圖訪問存儲器730時,如在運行進程180的指令之后,處理器710可以與MMU710進行通信。例如,處理器710可以將一個或多個請求傳送至MMU720。然后,MMU720可以將所有存儲器請求傳送至設備700或者僅將與由許可模塊110-1至110_η管理的機密信息192相關的存儲器請求傳送至設備700。如果將所有存儲器請求傳送至設備700,則設備700可以包括附加處理邏輯,以執行通常還在MMU720處執行的一些功能,但是總體性能可以得到提高。如果僅將與由許可模塊110-1至110-n管理的機密信息192相關的存儲器請求發送至設備700,則設備700可以具有更緊湊的設計并且允許在系統700內的更方便集成。當存儲器請求被設備700接收時,存儲器請求被傳送至多個許可模塊110-1至110-n中的全部許可模塊。
[0060]圖8是包括用于控制對存儲器區域(未示出)的訪問的指令的計算設備800的示例性框圖。在圖8的實施例中,計算設備800包括處理器810和機器可讀存儲介質820。機器可讀存儲介質820進一步包括用于控制對存儲器區域(未示出)的訪問的指令822、824、826和 828。
[0061]計算設備800可以是例如芯片集、筆記本計算機、板式計算設備、便攜式閱讀設備、無線電子郵件設備、移動電話或能夠運行指令822、824、826和828的任何其它設備。在特定示例中,計算設備800可以包括或者連接至諸如存儲器、傳感器、顯示器等的附加組件。
[0062]處理器810可以是至少一個中央處理器單元(CPU)、至少一個基于半導體的微處理器、至少一個圖形處理單元(GPU)、適合于在機器可讀存儲介質820中存儲的指令的獲取和運行的其它硬件設備、或它們的組合。處理器410可以獲取、解碼和運行指令822、824、826和828,以實現控制對存儲器區域的訪問。作為獲取和運行指令的替代或除獲取和運行指令之外,處理器810可以包括包含用于運行指令822、824、826和828的功能的多個電子組件的至少一個集成電路(1C)、其它控制邏輯、其它電子電路或者它們的組合。
[0063]機器可讀存儲介質820可以是包含或存儲可運行指令的任何電子存儲設備、磁性存儲設備、光存儲設備或其它物理存儲設備。因此,機器可讀存儲介質820可以是例如隨機存取存儲器(RAM)、電可擦寫可編程只讀存儲器(EEPR0M)、存儲驅動器、光盤只讀存儲器(CD-ROM)等。于是,機器可讀存儲介質820能夠是非瞬態的。如下面詳細地描述的,機器可讀存儲介質820可以被編碼有用于控制對存儲器區域的訪問的一系列可運行指令。
[0064]而且,當指令822、824、826和828由處理器(例如經由處理器的一個處理元件或多個處理元件)運行時,指令822、824、826和828能夠促使處理器執行進程,例如圖9的進程。例如,處理器810可以執行比較PID指令822,以對進程的PID (未示出)與一個或多個被允許的PID進行比較。處理器810可以運行比較請求地址指令824,以將所請求的地址與被允許的地址范圍進行比較。
[0065]處理器810可以運行比較請求訪問類型指令826,以將所請求的訪問類型與一個或多個被允許的訪問類型進行比較。如果一個或多個被允許的PID包括該進程的PID,被允許的地址范圍包括所請求的地址,并且一個或多個被允許的訪問類型包括所請求的訪問類型,則處理器810可以運行允許指令828,以允許進程訪問包括機密信息的存儲器區域(未示出)。
[0066]機器可讀存儲介質820還可以包括如下指令(未示出):如果一個或多個被允許的PID不包括該進程的PID,被允許的地址范圍不包括所請求的地址和/或一個或多個被允許的訪問類型不包括所請求的訪問類型,則該指令執行生成審計日志和執行動作中至少之一。審計日志包括以下至少之一:進程的PID、所請求的存儲器地址、所請求的訪問類型、用戶ID(UID)、所請求的意圖、失敗的訪問嘗試的數量以及一個或多個失敗的訪問嘗試的時間戳。動作包括以下至少之一:什么也不做、擦除所請求的存儲器地址處的值、擦除存儲器區域處的所有值以及生成中斷。設備800的操作可以關于圖9更詳細地描述。
[0067]圖9是用于控制對存儲器區域190的訪問的方法900的示例性流程圖。雖然在下面關于設備600描述方法900的運行,但是可以利用用于方法900的運行的其它適合組件,如設備100。此外,用于運行方法900的組件可以散布在多個設備中(例如與輸入輸出設備通信的處理設備)。在特定場景中,協調作用的多個設備能夠被視為執行方法900的單個設備。方法900可以以存儲在機器可讀存儲介質(如存儲介質820)上的可運行指令的形式和/或以電子電路的形式實現。
[0068]在框905處,設備600從進程180接收訪問具有機密信息192的存儲器區域190的請求。請求包括該進程的進程ID(PID)、所請求的地址和所請求的訪問類型。然后,在框910處,設備600對進程180的PID與一個或多個被允許的PID222進行比較,并且流程前進至框915。如果一個或多個被允許的PID不包括進程180的PID,則在框920處設備600生成動作。如上面說明的,動作包括以下至少之一:什么也不做、擦除所請求的存儲器地址處的值、擦除存儲器區域處的所有值以及生成中斷。
[0069]如果一個或多個被允許的PID包括進程180的PID,則在925處,設備600對所請求的地址與被允許的地址范圍進行比較,然后流程前進至框930。如果被允許的地址范圍不包括所請求的地址,則在框920處,設備600生成動作。
[0070]如果被允許的地址范圍包括所請求的地址,則在框935處,設備600對所請求的地址類型與一個或多個被允許的訪問類型進行比較,然后流程前進至框940。如果一個或多個被允許的訪問類型包括所請求的訪問類型,則在框945處,設備600允許進程180訪問存儲器區域190。如果一個或多個被允許的訪問類型不包括所請求的訪問類型,則設備600的流程前進至框950,以確定是否啟用審計日志。如果不啟用審計日志,則在框960處,設備600拒絕進程180對存儲器區域190的訪問。如果啟用審計日志,則在框955處設備600生成審計日志660,然后在框960處拒絕進程180對存儲器區域190的訪問。
[0071]根據上述內容,實施例可以提高機密信息的安全性和/或完整度,而不會嚴重提高該設備的復雜度。例如,在實施例中,可以接收來自進程的存儲器請求。存儲器請求可以包括進程的PID、所請求的存儲器地址和所請求的訪問類型。可以對該存儲器請求與關聯于包括機密信息的存儲器區域的許可集進行比較。可以基于比較結果控制進程對存儲器區域的訪問。
【權利要求】
1.一種設備,包括: 許可模塊,用于從進程接收存儲器請求,所述存儲器請求包括所述進程的進程ID(PID)、所請求的存儲器地址以及所請求的訪問類型,其中 所述許可模塊對所述存儲器請求與關聯于存儲機密信息的存儲器區域的許可集進行比較,并且 所述許可模炔基于該比較控制所述進程對所述存儲器區域的訪問。
2.根據權利要求1所述的設備,其中: 所述許可集包括一個或多個被允許的PID、存儲器地址范圍以及與所述存儲器區域相關聯的一個或多個被允許的訪問類型, 所述訪問類型包括讀類型、寫類型和引用類型中的至少一種,并且 所述引用類型與提供指向所請求的存儲器地址的指針有關。
3.根據權利要求2所述的設備,其中所述許可模塊包括: PID模塊,用于對所述進程的所述PID與所述一個或多個被允許的PID進行比較; 地址模塊,用于對所請求的存儲器地址與所述存儲器地址范圍進行比較;以及訪問類型模塊,用于對所請求的訪問類型與所述一個或多個被允許的訪問類型進行比較,其中 基于所述PID模塊、所述地址模塊和所述訪問類型模塊的比較,所述許可模塊允許所述進程對所述 存儲器區域的訪問。
4.根據權利要求2所述的設備,其中: 所述存儲器請求進一步包括用戶ID (WD)字段,所述用戶ID字段識別用戶的類型和所述用戶的標識中的至少一種,并且 所述許可集包括關于所述存儲器區域的所述許可集的一部分的多個實例,每個實例與多個UID之一相關聯。
5.根據權利要求2所述的設備,其中: 所述存儲器請求進一步包括請求的意圖,所請求的意圖表示將如何使用所請求的存儲器地址處的機密信息, 所述許可集包括一個或多個被允許的意圖, 所述許可模塊包括意圖模塊,所述意圖模塊對所請求的意圖與所述一個或多個被允許的意圖進行比較,并且 基于所述PID模塊、所述地址模塊、所述訪問類型模塊和所述許可模塊的比較,所述許可模塊允許所述進程對所述存儲器區域的訪問。
6.根據權利要求2所述的設備,進一步包括: 審計模塊,如果所述訪問類型模塊確定所述一個或多個被允許的訪問類型不包括所請求的訪問類型,則所述審計模塊生成審計日志,其中 所述審計日志包括以下至少之一:所述進程的PID、所請求的存儲器地址、所請求的訪問類型、用戶ID (UID)、所請求的意圖、失敗的訪問嘗試的數量以及一個或多個失敗的訪問嘗試的時間戳。
7.根據權利要求2所述的設備,進一步包括: 動作模塊,如果所述訪問類型模塊確定所述一個或多個被允許的訪問類型不包括所請求的訪問類型,則所述動作模塊執行動作,其中 所述動作包括以下至少之一:什么也不做、擦除所請求的存儲器地址處的值、擦除所述存儲器區域處的所有值以及生成中斷,并且 所述中斷阻擋對所述設備的訪問和/或停止所述設備的功能的操作。
8.根據權利要求2所述的設備,其中: 如果所述PID模塊指示所述一個或多個被允許的PID不包括所述進程的PID和/或所述地址模塊指示所述存儲器地址范圍不包括所請求的存儲器地址,則所述許可模塊將使消失信號有效,并且 如果所述訪問類型模塊指示所述一個或多個被允許的訪問類型不包括所請求的訪問類型,則所述許可模塊將使故障信號有效。
9.一種系統,包括: 根據權利要求8所述的多個許可模塊; 包括多個存儲器區域的存儲器,所述許可模塊中的每一個對應于所述存儲器區域中的一個; 處理器,輸出請求并且接收所述消失;以及 存儲器管理單元(MMU),將所述請求傳送至所述多個許可模塊。
10.根據權利要求9所述的系統,其中: 所述許可模塊中 的每一個包括與所述存儲器區域中的一個相關聯的分離的許可集, 只有當所述許可模塊中的全部都使所述消失信號有效時,所述系統才使動作信號有效, 只有當所述許可模塊中的全部都使所述故障信號有效時,所述系統才使審計信號有效,并且 如果所述許可模塊中的至少一個允許訪問,則所述系統使訪問控制信號有效,以準許所述處理器訪問所述存儲器。
11.根據權利要求9所述的系統,其中: 所述MMU接收多個存儲器請求,并且 所述MMU傳輸所述存儲器請求中的所有存儲器請求或僅傳輸與關聯于所述許可模塊至少之一的存儲器區域相關的存儲器請求。
12.一種用于存儲器訪問的方法,包括: 從進程接收對具有機密信息的存儲器區域的訪問的請求,所述請求包括所述進程的進程ID (PID)、所請求的地址以及所請求的訪問類型; 對所述進程的PID與一個或多個被允許的PID進行比較; 如果所述一個或多個被允許的PID包括所述進程的PID,則對所請求的地址與被允許的地址范圍進行比較; 如果所述被允許的地址范圍包括所請求的地址,則對所請求的訪問類型與一個或多個被允許的訪問類型進行比較;以及 如果所述一個或多個被允許的訪問類型包括所請求的訪問類型,則允許所述進程訪問所述存儲器區域。
13.根據權利要求12所述的設備,進一步包括:如果所述一個或多個被允許的PID不包括所述進程的PID和/或所述被允許的地址范圍不包括所請求的地址,則生成動作;以及 如果所述一個或多個被允許的訪問類型不包括所請求的訪問類型,則生成審計日志。
14.一種非瞬態計算機可讀存儲介質,所述非瞬態計算機可讀存儲介質存儲如果被設備的處理器運行則促使所述處理器執行以下操作的指令: 對進程的進程ID (PID)與一個或多個被允許的PID進行比較; 對所請求的地址與被允許的地址范圍進行比較; 對所請求的訪問類型與一個或多個被允許的訪問類型進行比較;以及如果所述一個或多個被允許的PID包括所述進程的PID,所述被允許的地址范圍包括所請求的地址并且所述一個或多個被允許的訪問類型包括所請求的訪問類型,則允許所述進程訪問包括機密信息的存儲器區域。
15.根據權利要求14所述的非瞬態計算機可讀存儲介質,進一步包括如果被所述處理器運行則促使所述處理器執行以下操作的指令: 如果所述一個或多個被允許的PID不包括所述進程的PID、所述被允許的地址范圍不包括所請求的地址和/或所述一個或多個被允許的地址類型不包括所請求的地址類型,則生成審計日志和/或執行動作,其中 所述審計日志包括以下至少之一:所述進程的PID、所請求的存儲器地址、所請求的訪問類型、用戶ID (UID)、請求的意圖、失敗的訪問嘗試的數量以及一個或多個失敗的訪問嘗試的時間戳;并且 所述動作包括以下至少之一:什么也不做、擦除所請求的存儲器地址處的值、擦除存儲器區域處的所有值以及生成中斷。
【文檔編號】G11C7/24GK103890852SQ201280035799
【公開日】2014年6月25日 申請日期:2012年1月31日 優先權日:2011年7月18日
【發明者】特德·A·哈德利 申請人:惠普發展公司,有限責任合伙企業