一種可信計算環境中密碼服務接口的封裝方法
【專利摘要】本發明公開了一種可信計算環境中密碼服務接口的封裝方法包括:可信對象標識符的命名和可信接口封裝函數的調用;其中,可信對象標識符的命名由命名對象的選擇、命名對應信息的確定、命名計算和命名對應信息查詢四部分組成;在該命名方法的基礎上,提出一種可信接口封裝函數調用方法,通過關聯信息數據庫和當前狀態信息數據庫,實現了可信對象狀態信息、關聯信息、授權信息的查詢,實現各不同形式接口之間的可信互連。采用本發明的技術方案,實現不同封裝形式的可信模塊之間的相互通訊,使不同對象、不同格式的模塊能用統一的方式進行處理。
【專利說明】
一種可信計算環境中密碼服務接口的封裝方法
技術領域
[0001] 本發明屬于信息安全和通訊接口領域,尤其涉及一種可信計算環境中密碼服務接 口的封裝方法。
【背景技術】
[0002] 隨著信息技術和網絡通訊技術的高速發展,信息安全方面暴露出的問題也層出不 窮,所以只有保證了計算機自身的信息安全才能將這些問題從根本上得到解決,在這種情 況下,可信計算技術應運而生。
[0003] 可信計算技術是基于硬件安全模塊支持下的可信計算平臺,目前的可信平臺模塊 如:TPM、TCM模塊已經問世并已經得到了應用,TPCM模塊正在不斷的發展。開發者需要通過 可信計算開發庫提供的API函數來使用可信計算資源,但是,目前可信計算開發庫有不同的 API接口標準,例如,TCG組織針對TPM1.2模塊提出了 TSS接口標準,隨著TPM2.0規范的推出, TSS標準也將有巨大的變化。國內則針對TCM模塊提出了TSM接口標準。,而TPCM模塊未來也 將提出不同的接口標準。當前標準下的硬件接口,如TSM文檔以及TSS文檔所提供的接口,其 共同特點是非常復雜和繁瑣,而且不同類型的可信根的接口也缺乏兼容性,導致不同的可 信計算模塊之間不能進行相互通訊,并且不能更好的交互和聯系。
[0004] 同時,現有的可信平臺模塊的具有不同的對象和格式,不同可信平臺模塊中的處 理對象和格式不能用統一的方式進行處理。因此,實現過程中必然涉及多種不同的標準和 管理方式,從而使得接口的功能實現異常復雜,導致了可信平臺模塊開發及通訊的困難,影 響了可信平臺模塊的開發和推廣。
【發明內容】
[0005] 本發明要解決的技術問題是,提供一種可信計算環境中密碼服務接口的封裝方 法,使不同封裝形式的模塊之間具有相同類型的接口從而進行相互通訊,并能用統一的方 式處理不同對象和不同格式的模塊。
[0006] 為解決上述問題,本發明采用如下的技術方案:
[0007] -種可信計算環境中密碼服務接口的封裝方法包括以下步驟:
[0008] 步驟S1、在可信對象創建時,獲取可信對象在標準接口庫中的對應句柄,通過所述 句柄獲得可信對象的內容信息,同時計算所述內容信息摘要值作為可信對象的唯一標識 符;并且基于所述可信對象唯一標識符建立當前狀態信息數據庫和關聯信息數據庫;
[0009] 步驟S2、根據所述可信對象唯一標識符并且通過當前狀態信息數據庫和關聯信息 數據庫實現可信對象的創建API、刪除API、功能執行API和授權API函數的調用。
[0010] 作為優選,對內容信息在內存中的可信對象,使用句柄獲得可信對象的內容信息, 按固定次序打包輸出,并計算輸出數據摘要值,將摘要值轉化為字符串作為可信對象的唯 一標識符;對內容信息在可信根中的可信對象,以句柄為參數,調用標準接口庫中的數據輸 出函數,將可信對象內容輸出為數據包并存儲在非易失存儲器上,計算其摘要值作為可信 對象的唯一標識符。
[0011] 作為優選,建立關聯信息數據庫如下:以可信對象的唯一標識符為索引,并將此可 信對象的類型、屬性、內容信息和/或本地存儲對象摘要值、關聯可信對象的唯一標識符放 入所述關聯信息數據庫中;
[0012] 建立當前狀態信息數據庫如下:以可信對象的唯一標識符作為索引,在所述當前 狀態信息數據庫存放可信對象在當前環境中的可信信息,包括可信對象當前狀態,可信對 象的句柄值以及授權信息;
[0013] 其中,關聯信息數據庫向用戶提供API進行查詢以獲得可信對象的關聯信息,當前 狀態信息數據庫在封裝模塊中使用,不允許用戶直接訪問。
[0014] 作為優選,創建API生成可信對象,存儲其內容或存儲對象摘要值到關聯信息數據 庫并返回可信對象唯一標識符;刪除API從關聯信息數據庫中刪除可信對象唯一標識符為 索引的記錄;功能執行API根據唯一標識符檢索對應內容,獲取或恢復可信計算對象句柄, 并使用可信計算對象句柄完成對應操作;可信授權API則根據可信對象標識符獲取或建立 可信計算對象句柄,并且對可信計算句柄所指向的可信對象進行授權操作。
[0015] 作為優選,可信對象功能執行API具體包括以下步驟:
[0016] 步驟2.1:為系統中每一類可信對象設計一個從未載入到標準接口庫狀態開始的 狀態變化軌跡圖;
[0017] 步驟2.2:為可信對象所涉及的函數操作建立函數狀態表,存入每個功能函數的執 行步驟、輸入參數、執行條件、輸出條件,根據狀態表判斷需要調用的輸入參數、函數執行的 條件信息是否滿足、函數參數結果是否滿足輸出條件;
[0018] 步驟2.3:以可信對象的標識符為索引查詢當前狀態信息數據庫,獲得對應可信對 象的當前狀態信息,并對比狀態需求表;若檢查到的狀態信息為不足權限狀態,從關聯關系 數據庫中獲取狀態變迀有關的其它可信對象的唯一標識符值,檢查本對象和關聯對象對狀 態變化是否有足夠授權,輸入授權口令,并與該對象在當前狀態信息數據庫中的授權口令 進行驗證;若檢查到的狀態信息為足夠權限狀態,進入步驟2.4;
[0019] 步驟2.4:根據對象標識符在函數狀態表中查詢該函數需要用到的對象參數并調 用并以此作為函數的輸入參數調用;
[0020] 步驟2.5:調用此系統可信函數,并判斷此時的信息狀態是否達到函數輸出結果, 若沒有達到,則繼續執行此函數直到達到函數輸出結果;若達到,則根據調用函數后輸出的 結果更新當前狀態信息數據庫,存入該對象修改后的信息,以備下次的使用。
[0021] 作為優選,步驟2.3中如出現口令錯誤授權不足狀況,則返回錯誤信息并將對象唯 一標識符和錯誤類型組成錯誤記錄加入錯誤記錄隊列。
[0022]作為優選,在調用可信對象創建API時,首先調用標準可信庫中的對象創建命令, 創建對應對象并獲得其句柄,同時得到對象唯一標識符,創建對象關聯信息數據項和當前 狀態信息數據項并存放到對應數據庫中,并返回唯一標識符作為創建對象的標識。
[0023]作為優選,在調用可信對象刪除API時,若可信對象已被載入到標準接口庫中則獲 取其句柄,并調用對應的可信對象刪除函數從標準接口庫中清除該對象,再從關聯信息數 據庫和當前狀態信息數據庫中刪除該可信對象的記錄項;否則直接刪除關聯信息數據庫和 當前狀態信息數據庫中該可信對象的記錄項。
[0024]作為優選,在調用可信對象授權API時,將授權秘密信息存放于當前狀態數據庫 中;在同一調用過程中需要再次授權時,則直接從當前狀態數據庫中獲取授權秘密信息執 行授權操作。本發明的可信計算環境中密碼服務接口的封裝方法主要分為兩個過程:可信 對象標識符的命名和可信接口封裝函數的調用。可信對象標識符的命名由命名對象的選 擇、命名對應信息的確定、命名計算和命名對應信息查詢四部分組成。在該命名方法的基礎 上,提出一種可信接口封裝函數調用方法,通過兩種數據庫:關聯信息數據庫和當前狀態信 息數據庫,實現了可信對象狀態信息、關聯信息、授權信息的查詢,實現各不同形式接口之 間的可信互連。采用本發明的技術方案,實現不同封裝形式的可信模塊之間的相互通訊,使 不同對象、不同格式的模塊能用統一的方式進行處理。
【附圖說明】
[0025]圖1為系統可信對象唯一標識符命名流程圖;
[0026]圖2為系統調用可信對象創建API流程圖;
[0027]圖3為系統調用可信對象刪除API流程圖;
[0028] 圖4為系統可信對象唯一標識符命名過程;
[0029] 圖5為系統調用可信對象功能執行API流程圖。
【具體實施方式】
[0030] 為了使本領域人員更好地了解和使用本發明,下面對本發明進行進一步的說明。 本實例所描述的實施案例僅是本發明的部分案例,對于本領域的人員來說能夠很容易的對 下述實施案例進行變換和修改,在不脫離本發明與案例的基礎上,使本發明應用到其他可 信接口命名交互過程中。因此,該實施案例僅是用來闡述本發明的原理,而不作為本發明原 理的限定。
[0031] 本發明實施例一種可信計算環境中密碼服務接口的封裝方法,通過以中間件形式 實現對可信計算接口的調用封裝,中間件上層提供可信對象的創建API、刪除API、功能執行 API和授權API函數,函數中所有可信對象均以唯一標識符標識;中間件下層則調用可信根 所提供的標準接口庫,使用句柄來標識可信授權對象。
[0032] 中間件中為每一類可信對象設置兩個數據庫:關聯信息數據庫和當前狀態信息數 據庫,均以可信對象的唯一標識為索引。關聯信息數據庫用來讓API調用者查詢可信對象之 間的關聯關系,提供接口供API調用者檢索,但調用者不能直接修改數據庫內容。當前狀態 信息數據庫用來存放可信對象當前狀態信息供中間件實現調用功能,它供中間件內部使 用,不提供外部接口,禁止用戶對其進行訪問。其中,關聯信息數據庫在中間件首次安裝時 生成,它將系統中每類可信對象的類型、屬性、內容信息和/或本地存儲對象摘要值、關聯可 信對象的唯一標識符等固有信息組成數據項,在此類對象創建時,記錄這些固有信息,并以 對象的唯一標識符為索引,在關聯信息數據庫中添加這些內容作為一項記錄,并在本地非 易失存儲設備上留存備份。中間件重新啟動時從備份中載入相關信息并建立數據庫。用戶 可通過關聯信息數據庫查詢可信對象的具體屬性及其相關信息。當前狀態信息數據庫存放 內容為可信對象在當前環境中的狀態信息,包括可信對象當前狀態,可信對象的句柄值以 及授權信息,當前狀態包括但不限于可信對象未載入、可信對象已載入未授權以及可信對 象已授權。當前狀態信息數據庫它在中間件每次啟動時建立,建立時進行初始化操作,獲取 系統中初始可信對象(包括背書密鑰、可信存儲根密鑰)的句柄值,將其狀態設置為已載入。 在系統通過唯一標識符訪問可信對象時,從關聯信息數據庫中查找到可信對象的具體內 容,并根據這些內容重載可信對象,將所獲得的句柄存入當前狀態信息數據庫中,以供中間 件使用。
[0033]如圖1所示,系統可信對象唯一標識符命名方法為:獲取可信對象在標準接口庫中 的對應句柄,對內容信息在內存中的可信對象,使用句柄獲得可信對象的內容信息,按固定 次序打包輸出,并計算輸出數據摘要值,將摘要值轉化為字符串作為可信對象的唯一標識 符;對具體內容在可信根中的可信對象,則以句柄為參數,調用標準接口庫中的數據輸出函 數,將可信對象內容輸出為數據包并存儲在非易失存儲器上,計算其摘要值作為可信對象 的唯一標識符。
[0034]如圖2所示,系統在調用可信對象創建API時,首先調用標準可信庫中的對象創建 命令,創建對應對象并獲得其句柄,而后執行唯一標識符計算方法,獲得對象唯一標識符, 創建對象關聯信息數據項和當前狀態信息數據項并存放到對應數據庫中,并返回唯一標識 符作為創建對象的標識。
[0035]如圖3所示,系統在調用可信對象刪除API時,若可信對象已被載入到標準接口庫 中則獲取其句柄,并調用對應的可信對象刪除函數從標準接口庫中清除該對象,再從關聯 信息數據庫和當前狀態信息數據庫中刪除該可信對象的記錄項。否則直接刪除關聯信息數 據庫和當前狀態信息數據庫中可信對象的記錄項。
[0036] 系統在調用可信對象授權API時,將授權秘密信息存放于當前狀態數據庫中,在中 間件內部執行可信計算具體功能時,對已授權的可信對象,直接從當前狀態數據庫獲取授 權信息并進行處理。
[0037] 系統在調用可信對象功能執行API時,則首先按照以下方式設計兩個內部數據結 構:
[0038]①為系統中除背書密鑰和存儲根密鑰外每一類可信對象設計一個用標準接口庫 函數實現的,從存放于非易失存儲設備,未載入到標準接口庫中時的狀態開始,直到載入到 標準接口庫中并獲得完整授權的狀態改變過程,建立狀態變化軌跡圖;
[0039] ②對系統功能執行API,確定其在各可信對象得到充分授權時用標準接口庫實現 的過程,確定該過程中每一次標準接口庫調用時相關可信對象所需的可信狀態,并形成狀 態需求表。
[0040] 執行功能執行API時,檢查相關對象的狀態,并與狀態需求表對照,確定其是否滿 足標準接口庫調用的要求。若符合要求,則調用標準接口庫函數,執行實現過程。若不符合 要求,則根據狀態變化軌跡圖,檢查相關對象授權是否符合狀態改變過程的要求,若符合, 則執行狀態改變過程并再次進行狀態檢查;若不符合,則將錯誤類型和錯誤相關可信對象 的唯一標識符組合成錯誤信息添加到錯誤隊列中供用戶查看并確定引發錯誤的可信對象。
[0041] 本發明實施例一種可信計算環境中密碼服務接口的封裝方法包括:兩個過程:
[0042] 步驟S1、系統可信對象唯一標識符命名;如圖4所示,具體如下:
[0043]步驟1.1:可信根相關對象中的選擇,選擇密鑰類、加密數據類、PCR合成類和HASH 類作為命名對象;將策略類此類與選擇對象有一一對應關系的類作為命名對象的屬性處 理,不單獨命名;將文本類、TPM類此類標定會話過程的類作為環境因素不予命名。
[0044] 步驟1.2:命名對象確定一個輸出方式,對于哈希對象、PCR寄存器,其數值均在內 存中的對象,把對象的對應數據輸出,并去掉輸出信息中不確定的內容,再添加對象類型的 定義值,得到對象的命名對應信息,確保該信息與對象間一一對應;對于密鑰對象、加密數 據對象,其主要內容在可信計算平臺模塊根中存放的對象,則調用相關函數將其內部信息 輸出為一個數據文件,使可信平臺模塊可以使用該數據文件,重新載入對象,把數據文件相 關摘要值和屬性值合并計算摘要作為標識符。
[0045] 步驟1.3:通過密碼學上的哈希算法計算摘要值,對對象的命名對應信息進行密碼 學哈希計算,得到對應信息的摘要值,并將其轉化為字符串,作為此對象的唯一通用標識 符。在不同的可信計算環境下,同一對象的標識符值都是唯一的,可以唯一標識此對象。
[0046] 步驟1.4:在可信計算環境中建立關聯信息數據庫和當前狀態信息數據庫,以命名 計算中生成的唯一標識符值作為索引,在數據庫中存儲可信對象的類型、屬性、內容信息 和/或本地存儲對象摘要值、關聯可信對象的唯一標識符、可信對象當前狀態,可信對象的 句柄值以及授權信息。在使用可信計算對象時,可根據唯一標識符查詢到對象索引,根據索 引獲取該對象的其它參數內容信息。
[0047]步驟S2、所述的系統調用可信對象功能執行API,如圖5所示,具體步驟如下:
[0048] 步驟2.1:為系統中每一類可信對象(除背書密鑰和存儲根密鑰)設計一個從未載 入到標準接口庫狀態開始的狀態變化軌跡圖。
[0049] 步驟2.2:為可信對象建立關聯信息數據庫,以可信對象的唯一標識符為索引,并 將此可信對象的類型、屬性、內容信息和/或本地存儲對象摘要值、關聯可信對象的唯一標 識符放入該數據庫中。
[0050] 步驟2.3:為可信對象建立當前狀態信息數據庫,該數據庫以可信對象的唯一標識 符作為索引,存放可信對象在當前環境中的可信信息,包括可信對象當前狀態,可信對象的 句柄值以及授權信息。
[0051] 步驟2.4:為可信對象所涉及的函數操作建立函數狀態表,存入每個功能函數的執 行步驟、輸入參數、執行條件、輸出條件,根據狀態表判斷需要調用的輸入參數、函數執行的 條件信息是否滿足、函數參數結果是否滿足輸出條件。
[0052]步驟2.5:中間件以可信對象的標識符為索引查詢當前狀態信息數據庫,獲得對應 可信對象的當前狀態信息,并對比狀態需求表,狀態信息分為兩種:足夠權限狀態和不足權 限狀態。若檢查到的狀態信息為不足權限狀態,從關聯關系數據庫中獲取狀態變迀有關的 其它可信對象的唯一標識符值,檢查本對象和關聯對象對狀態變化是否有足夠授權,輸入 授權口令,并與該對象在當前狀態信息數據庫中的授權口令進行驗證。
[0053]步驟2.5.1:若檢查到的狀態信息為足夠權限狀態,進入步驟2.6。
[0054]步驟2.5.2:若口令錯誤授權不足,則返回錯誤信息并將對象唯一標識符和錯誤類 型組成錯誤記錄加入錯誤記錄隊列。
[0055] 步驟2.6:根據對象標識符在函數狀態表中查詢該函數需要用到的對象參數并調 用并以此作為函數的輸入參數調用。
[0056] 步驟2.7:調用此系統可信函數,并判斷此時的信息狀態是否達到函數輸出結果, 若沒有達到,則繼續執行此函數直到達到函數輸出結果;若達到,則根據調用函數后輸出的 結果更新當前狀態信息數據庫,存入該對象修改后的信息,以備下次的使用。
[0057] 實施例1:
[0058]以TSS中的密鑰對象接口命名為例,首先,為其設計一個如下的關聯信息數據記錄 項:
[0060]同時設計一個當前狀態信息記錄項:
[0062]命名計算過程具體步驟如下:
[0063]步驟1.1 :TSS對可信根(TPM)中載入的密鑰對象會給出一個密鑰句柄,假設其為 hKey,在 TSS 中通過 Tspi_SetAttribData(hKey,TSS_TSPATTRIB_KEY_BLOB,TSS_TSPATTRIB_ KRYBLOB_BLOB,&blobLength,&Blob)函數,根據密鑰句柄hKey將密鑰數據輸出到Blob中,此 時輸出的密鑰數據被另一個密鑰(封裝密鑰)加密。
[0064] 步驟1.2:用密碼學哈希算法(MD5,SHA1或SM3)計算Blob數據,生成其摘要值,再將 摘要值與密鑰屬性值合并后,通過密碼學哈希計算重新計算摘要值。
[0065]步驟1.3:將步驟1.2生成的摘要值轉化為16進制字符串,并將此字符串作為此對 象的唯一標識符保存。
[0066] 步驟1.4:將Blob數據存儲為一個封裝密鑰文件,可用唯一標識符作為密鑰文件的 名稱。
[0067] 步驟1.5:根據該密鑰生成命令中的相關參數,填充關聯信息數據記錄項中各項內 容,并將關聯信息數據記錄項存儲到密鑰的關聯信息數據庫中。
[0068] 步驟1.6:將111(67寫入當前狀態信息數據庫,調用18口;[_66七?01;^7013」6(31:(111(67, TSS_POLICY_USAGE,&hPolicy)函數獲取密鑰的策略句柄hPolicy并記錄在當前狀態信息數 據記錄項中,根據密鑰是否得到授權來填寫密鑰狀態項,并根據用戶是否已輸入秘密信息 決定是否填寫秘密信息項。并將當前狀態信息記錄項存入密鑰的當前狀態信息數據庫中。 [0069]所述的系統調用可信對象功能執行API,其使用與函數功能直接關聯的可信根相 關對象唯一標識符作為輸入參數,以唯一標識符作為句柄,在關聯信息數據庫和當前狀態 信息數據庫中查詢對象的其他相關信息,根據函數狀態表查詢調用該函數需要用到的對象 參數,并以此作為調用系統函數的輸入信息,完成系統函數調用。以TSS中密鑰對象的封裝 接口為例,來說明封裝函數接口的過程,主要分為創建和調用兩個部分。
[0070] 創建部分:
[0071] 步驟2.1:調用TSS中的創建函數,獲得創建函數的句柄。
[0072] 步驟2.2:調用第一部分中的命名計算過程,獲得對象的存儲數據項和唯一標識 符,同時生成密鑰對象的關聯信息數據項和當前狀態信息數據項。
[0073]調用部分:
[0074] 首先要進行預處理設置,預處理設置包括狀態化軌跡圖的預處理設置以及狀態需 求表的預處理設置。
[0075] 首先設計密鑰對象的狀態變迀軌跡圖。密鑰對象分為三種狀態,狀態一為存儲狀 態,即磁盤中有密鑰對象的存儲文件但密鑰尚未載入TPM中;狀態二為載入狀態,即TPM已從 文件中載入密鑰但未經授權;狀態三為授權狀態,即密鑰已完成授權可以正常使用。
[0076] 狀態一到狀態二需先后調用三個135函數:18口;[_(]〇11丨611:_〇63丨6〇13」6〇1:()函數創 建一個空的密鑰對象,Tspi_SetAttribData()將密鑰數據載入到密鑰對象中密鑰對象, Tspi_Key_LoadKey輸入已載入數據的密鑰對象句柄以及該密鑰對象的封裝密鑰對象句柄, 完成載入數據的解封操作。前兩個函數不需額外授權,第三個函數則要求封裝密鑰對象已 獲得授權。
[0077] 狀態二到狀態三需調用兩個TSS函數:Tspi_GetPolicyObject()函數獲取密鑰對 象句柄的策略。Tspi_Policy_SetSecret()函數則使用密鑰的秘密授權信息為其設定授權 口令。
[0078] 以密鑰的綁定功能為例來說明密鑰對象相關的功能接口實現過程。該功能的封裝 API接口定義如下:
[0079] int TESI_Local_Bind(void氺plaintext,void氺bindtext,char氺bindkey-uuid);
[0080] 其中,第一個參數為綁定密鑰的輸入參數即未綁定的明文信息,第二個參數為綁 定密鑰對象信息,第三個參數為綁定密鑰對象的唯一標識符。
[0081] 密鑰綁定功能在對象均已授權的情況下,需調用三個TSS函數來實現:
[0082] 首先,調用18口;[_(:01^611:_063七6013」601:()函數,對象類型設為綁定數據對象,以 創建一個綁定數據對象,該對象為臨時對象,不必存入數據庫。該函數無需授權,無狀態要 求。
[0083]然后,調用Tspi_Data_Bind〇函數,輸入綁定數據對象和綁定密鑰對象的句柄,執 行綁定操作,該函數需要綁定密鑰對象為授權對象,因此可為其設置狀態需求表,設綁定密 鑰參數為需授權對象;
[0084] 最后調用Tspi_TPM_GetAttribData〇函數將綁定數據對象中的已綁定數據導出, 該函數無需授權,無狀態要求。
[0085]綁定功能API封裝實現的具體步驟如下:
[0086] 步驟3.1:在系統調用TESI_Local_BindAPI接口時,獲取綁定密鑰對象的唯一標識 符key_uuid,
[0087]步驟3.2:根據唯一標識符查詢當前狀態信息數據庫,確認該對象處于何種狀態。 若對象處于存儲狀態則轉步驟3.3,若對象處于載入狀態則轉3.5,若對象處于授權狀態則 轉3.
[0088]步驟3.3:若此時該對象處于存儲狀態,密鑰尚未載入TPM中,則根據密鑰對象的狀 態變化迀移圖,讀入文件數據,創建hKey并存入當前狀態信息數據庫,調用Tspi_ SetAttribData(hKey,TSS_TSPATTRIB_KEY_BLOB,TSS_TSPATTRIB_KRYBLOB_BLOB,& blobLength,&Blob)函數,完成該密鑰對象信息的載入。
[0089] 步驟3.4:通過關聯信息數據庫檢索到綁定密鑰對象的封裝密鑰對象唯一標識符, 根據Tspi_Key_LoadKey ()函數的狀態需求表,確定封裝密鑰對象需要授權,并檢查其授權 狀況,如已授權則調用Tspi_Key_L 〇adKey ()函數解封封裝密鑰,否則以封裝密鑰對象作為 處理對象重復進行步驟3.2所描述的授權狀態變化迀移操作。
[0090] 步驟3.5:判斷密鑰對象是否已設置了授權秘密信息,如未設置,則返回授權秘密 未設置錯誤,并將關聯對象唯一標識符和錯誤類型組成錯誤記錄加入錯誤記錄隊列。
[0091] 步驟3.6從當前狀態信息數據庫中獲取密鑰對象授權秘密,執行密鑰對象從載入 狀態到授權狀態的轉換,如轉換過程中授權秘密驗證失敗,則返回授權秘密不匹配錯誤,并 將關聯對象唯一標識符和錯誤類型組成錯誤記錄加入錯誤記錄隊列。
[0092] 步驟3 · 7:調用Tspi_Data_Bind()函數,輸入綁定密鑰句柄和輸入數據plaintext, 執行密鑰綁定操作,得到裝載綁定數據的綁定數據對象。
[0093] 步驟3.8:調用了8?丨_了?1_66七4七廿訃0&七&〇函數,從綁定密鑰對象中導出綁定數據 并輸出到bindtext地址中,返回綁定密鑰成功信息。
[0094]最后應說明的是:以上示例僅用以說明本發明而并非限制本發明所描述的技術方 案;因此,盡管本說明書參照上述的示例對本發明已進行了詳細的說明,但是本領域的普通 技術人員應當理解,仍然可以對本發明進行修改或等同替換;而一切不脫離發明的精神和 范圍的技術方案及其改進,其均應涵蓋在本發明的權利要求范圍當中。
【主權項】
1. 一種可信計算環境中密碼服務接口的封裝方法,其特征在于,包括以下步驟: 步驟S1、在可信對象創建時,獲取可信對象在標準接口庫中的對應句柄,通過所述句柄 獲得可信對象的內容信息,同時計算所述內容信息摘要值作為可信對象的唯一標識符;并 且基于所述可信對象唯一標識符建立當前狀態信息數據庫和關聯信息數據庫; 步驟S2、根據所述可信對象唯一標識符并且通過當前狀態信息數據庫和關聯信息數據 庫實現可信對象的創建API、刪除API、功能執行API和授權API函數的調用。2. 如權利要求1所述的可信計算環境中密碼服務接口的封裝方法,其特征在于,對內容 信息在內存中的可信對象,使用句柄獲得可信對象的內容信息,按固定次序打包輸出,并計 算輸出數據摘要值,將摘要值轉化為字符串作為可信對象的唯一標識符;對內容信息在可 信根中的可信對象,以句柄為參數,調用標準接口庫中的數據輸出函數,將可信對象內容輸 出為數據包并存儲在非易失存儲器上,計算其摘要值作為可信對象的唯一標識符。3. 如權利要求1所述的可信計算環境中密碼服務接口的封裝方法,其特征在于,建立關 聯信息數據庫如下:以可信對象的唯一標識符為索引,并將此可信對象的類型、屬性、內容 信息和/或本地存儲對象摘要值、關聯可信對象的唯一標識符放入所述關聯信息數據庫中; 建立當前狀態信息數據庫如下:以可信對象的唯一標識符作為索引,在所述當前狀態 信息數據庫存放可信對象在當前環境中的可信信息,包括可信對象當前狀態,可信對象的 句柄值以及授權信息; 其中,關聯信息數據庫向用戶提供API進行查詢以獲得可信對象的關聯信息,當前狀態 信息數據庫在封裝模塊中使用,不允許用戶直接訪問。4. 如權利要求1所述的可信計算環境中密碼服務接口的封裝方法,其特征在于,創建 API生成可信對象,存儲其內容或存儲對象摘要值到關聯信息數據庫并返回可信對象唯一 標識符;刪除API從關聯信息數據庫中刪除可信對象唯一標識符為索引的記錄;功能執行 API根據唯一標識符檢索對應內容,獲取或恢復可信計算對象句柄,并使用可信計算對象句 柄完成對應操作;可信授權API則根據可信對象標識符獲取或建立可信計算對象句柄,并且 對可信計算句柄所指向的可信對象進行授權操作。5. 如權利要求4所述的可信計算環境中密碼服務接口的封裝方法,其特征在于,可信對 象功能執行API具體包括以下步驟: 步驟2.1:為系統中每一類可信對象設計一個從未載入到標準接口庫狀態開始的狀態 變化軌跡圖; 步驟2.2:為可信對象所涉及的函數操作建立函數狀態表,存入每個功能函數的執行步 驟、輸入參數、執行條件、輸出條件,根據狀態表判斷需要調用的輸入參數、函數執行的條件 信息是否滿足、函數參數結果是否滿足輸出條件; 步驟2.3:以可信對象的標識符為索引查詢當前狀態信息數據庫,獲得對應可信對象的 當前狀態信息,并對比狀態需求表;若檢查到的狀態信息為不足權限狀態,從關聯關系數據 庫中獲取狀態變迀有關的其它可信對象的唯一標識符值,檢查本對象和關聯對象對狀態變 化是否有足夠授權,輸入授權口令,并與該對象在當前狀態信息數據庫中的授權口令進行 驗證;若檢查到的狀態信息為足夠權限狀態,進入步驟2.4; 步驟2.4:根據對象標識符在函數狀態表中查詢該函數需要用到的對象參數并調用并 以此作為函數的輸入參數調用; 步驟2.5:調用此系統可信函數,并判斷此時的信息狀態是否達到函數輸出結果,若沒 有達到,則繼續執行此函數直到達到函數輸出結果;若達到,則根據調用函數后輸出的結果 更新當前狀態信息數據庫,存入該對象修改后的信息,以備下次的使用。6. 如權利要求5所述的可信計算環境中密碼服務接口的封裝方法,其特征在于,步驟 2.3中如出現口令錯誤授權不足狀況,則返回錯誤信息并將對象唯一標識符和錯誤類型組 成錯誤記錄加入錯誤記錄隊列。7. 如權利要求4所述的可信計算環境中密碼服務接口的封裝方法,其特征在于,在調用 可信對象創建API時,首先調用標準可信庫中的對象創建命令,創建對應對象并獲得其句 柄,同時得到對象唯一標識符,創建對象關聯信息數據項和當前狀態信息數據項并存放到 對應數據庫中,并返回唯一標識符作為創建對象的標識。8. 如權利要求4所述的可信計算環境中密碼服務接口的封裝方法,其特征在于,在調用 可信對象刪除API時,若可信對象已被載入到標準接口庫中則獲取其句柄,并調用對應的可 信對象刪除函數從標準接口庫中清除該對象,再從關聯信息數據庫和當前狀態信息數據庫 中刪除該可信對象的記錄項;否則直接刪除關聯信息數據庫和當前狀態信息數據庫中該可 信對象的記錄項。9. 如權利要求4所述的可信計算環境中密碼服務接口的封裝方法,其特征在于,在調用 可信對象授權API時,將授權秘密信息存放于當前狀態數據庫中;在同一調用過程中需要再 次授權時,則直接從當前狀態數據庫中獲取授權秘密信息執行授權操作。
【文檔編號】G06F21/62GK106096446SQ201610417911
【公開日】2016年11月9日
【申請日】2016年6月15日 公開號201610417911.3, CN 106096446 A, CN 106096446A, CN 201610417911, CN-A-106096446, CN106096446 A, CN106096446A, CN201610417911, CN201610417911.3
【發明人】胡俊, 孫夢宇, 陶政, 公備
【申請人】北京工業大學