• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      基于SGX技術的Windows遺留信息系統(tǒng)安全增強方案

      2022-06-29 03:43:10張亞暉
      陸軍工程大學學報 2022年3期
      關鍵詞:遺留源代碼信息系統(tǒng)

      張亞暉, 趙 敏, 李 劍, 韓 歡

      (1.陸軍工程大學 通信士官學校,重慶 400035;2.陸軍工程大學 指揮控制工程學院,江蘇 南京 210007)

      信息系統(tǒng)(information system,IS)是以處理信息流為目的的人機一體化系統(tǒng),在人類的社會生活、生產(chǎn)實踐、政治生態(tài)、軍事斗爭和人文學術等領域扮演著越來越重要的角色。但隨著計算機軟硬件的飛速發(fā)展,越來越多的信息系統(tǒng)成為遺留系統(tǒng)。長期運行的遺留信息系統(tǒng)通常承載著某些關鍵復雜業(yè)務,并具有以下特征:(1)系統(tǒng)架構陳舊、維護困難;(2)開發(fā)維護人員流動大、代碼和文檔缺失;(3)業(yè)務功能獨立,沒有集成;(4)安全防護問題突出。

      遺留信息系統(tǒng)雖然存在較多問題,但因為長期運行,通常包含大量的業(yè)務數(shù)據(jù),是企業(yè)非常重要的資源。大部分企業(yè)在處理遺留信息系統(tǒng)時通常有兩種方式:(1)完全拋棄遺留信息系統(tǒng),進行重新開發(fā);(2)對遺留信息系統(tǒng)進行性能和安全優(yōu)化。重新開發(fā)的信息系統(tǒng)可以采用較新的軟硬件和開發(fā)技術,但通常需要對原有的數(shù)據(jù)進行適配轉換,在此過程中,還需要繼續(xù)使用遺留系統(tǒng)。因此,可以先對遺留信息系統(tǒng)進行性能和安全優(yōu)化,再根據(jù)需求進行信息系統(tǒng)的重新開發(fā)。目前雖然有關于遺留信息系統(tǒng)工程方面的文獻[1-2],但關于安全方面的研究相對較少,特別是目前遺留信息系統(tǒng)主要運行于基于Intel處理器的商用Windows平臺,操作系統(tǒng)和信息系統(tǒng)本身都可能存在漏洞,易受攻擊。雖然一些遺留信息系統(tǒng)具有身份認證、殺毒、加密等傳統(tǒng)安防手段,但仍面臨較大的安全風險,如無法解決運行態(tài)內存中的數(shù)據(jù)安全問題。

      針對上述不足,本文以A公司在Windows上運行的無源代碼無文檔的遺留人力資源管理信息系統(tǒng)為例,提出采用SGX可信計算技術為該遺留信息系統(tǒng)中的敏感信息提供機密性和完整性保護,最大程度減少敏感信息的泄露問題。

      本文的貢獻主要有:(1) 設計了Windows場景中基于SGX技術保護遺留信息系統(tǒng)的架構,解決了該場景中信息系統(tǒng)的敏感信息保護問題,推廣了SGX的典型應用場景。(2) 提出了基于Hook技術調用SGX的方法,解決了Windows遺留信息系統(tǒng)無法直接使用SGX的問題,豐富了遺留信息系統(tǒng)安全防護的技術手段。

      1 背景和相關工作

      1.1 微軟Detours庫

      微軟Detours庫[3]可以在程序運行過程中動態(tài)攔截函數(shù)調用。它的工作原理是將目標函數(shù)前幾個指令替換為一個無條件的跳轉,跳轉到用戶定義的Detour函數(shù)。而被攔截的函數(shù)保存在一個名為Trampoline的函數(shù)中。Trampoline函數(shù)保存了目標函數(shù)移除的指令和一個無條件跳轉,可以使執(zhí)行流重新跳轉回目標函數(shù)的執(zhí)行體部分(即未被移除的部分)。當執(zhí)行到目標函數(shù)的時候,可以根據(jù)用戶指令直接跳轉到用戶提供的Detours函數(shù),Detours函數(shù)開始執(zhí)行自己的函數(shù)代碼,執(zhí)行完畢后可以直接返回或調用Trampoline函數(shù)將執(zhí)行流程跳轉到原目標函數(shù)前。當目標函數(shù)執(zhí)行完以后,再將控制權交給Detour函數(shù),Detour函數(shù)執(zhí)行適當?shù)拇a返回。

      1.2 SGX技術

      SGX是Intel公司提出的一種芯片級信息隔離安全防護新技術,是對Intel體系(intel architecture)新的擴展,用于增強軟件的安全性[4],Intel公司在Skylake系列CPU中開始加入了對SGX技術的支持。SGX通過在硬件級別上為應用程序實現(xiàn)一個被隔離的內存空間來保證運行代碼和數(shù)據(jù)的機密性與完整性,被隔離的空間稱為飛地(enclave)。不同于以往的識別和隔離平臺上的惡意軟件,SGX是將用戶代碼和數(shù)據(jù)以明文形式封裝在Enclave中,而Enclave外的代碼和數(shù)據(jù)則需要加密存儲,因此對于非Enclave訪問,外部存儲器讀取的和總線監(jiān)聽的都是加密后的數(shù)據(jù)。

      另外,在x86架構中,Intel CPU的運行級別分為Ring 0、Ring 1、Ring 2和Ring 3四級。其中Ring 0權限級別最高,Ring 3最低,權限級別高的可以修改查看與它同級或較低級別的數(shù)據(jù)和代碼,但反過來則經(jīng)常被認為是非法操作而不被允許。在不支持SGX技術的硬件設備中,一些惡意攻擊者可以通過獲取Ring 0權限級別,對Ring 3權限級別的用戶代碼和數(shù)據(jù)實施竊取和破壞。但在SGX技術中,雖然SGX運行于Ring 3權限級別,但操作系統(tǒng)等均不被SGX信任,可以防止更高權限的攻擊者對Enclave內代碼和數(shù)據(jù)的攻擊。

      與當前流行的可信平臺模塊TPM[5]和ARM TrustZone[6]兩種硬件安全隔離技術相比,SGX還具有較小的可信計算基TCB(trusted computing base),僅包括CPU和Enclave本身,避免了基于軟件的TCB的漏洞與威脅。同時SGX可保障軟件運行時的安全,惡意軟件無法訪問和篡改Enclave中運行時的內容;SGX基于指令集的擴展與獨立的認證方式,使應用程序可以靈活調用SGX的安全功能并進行驗證。

      1.3 基于SGX的相關研究

      自SGX技術提出以來,學術界和工業(yè)界對基于SGX的網(wǎng)絡應用和針對SGX攻擊與防御等[7-19]進行了大量研究與驗證。其中,基于SGX技術構建可信的系統(tǒng)調用庫LibOS可以提高安全應用的開發(fā)效率,為遺留系統(tǒng)提供安全增強保護,因而成為研究熱點。

      文獻[7,8,11,12,17]基于SGX技術分別提出了Haven、SCONE、Panoply、Graphene-SGX和Occlum等LibOS方案。但遺憾的是,SCONE、Panoply、Graphene-SGX和Occlum只適用于Linux環(huán)境,且SCONE、Panoply和Occlum是利用交叉編譯器實現(xiàn)的源代碼級別兼容,即雖然可以不修改應用的源代碼但必須要對源代碼進行重新編譯;而Graphene-SGX是二進制級別兼容,解決了大部分應用在無源代碼情況下的隔離保護,已經(jīng)成為非常受歡迎的LibOS,但其存在性能和數(shù)據(jù)同步一致性的問題。Haven是Windows環(huán)境中的LibOS方案,但它需要在Enclave中重新封裝系統(tǒng)調用及其他的Shield模塊等,使得其可信計算基過大,且因其閉源而導致Windows環(huán)境中基于SGX可用的遺留系統(tǒng)安全增強方案幾乎空白。

      2 威脅模型

      A公司的遺留人力資源管理信息系統(tǒng),主要用于存儲公司的人力資源信息。因該系統(tǒng)開發(fā)時間較早,開發(fā)人員、文檔和源代碼等均已缺失,已成為無源代碼無文檔的遺留信息系統(tǒng)。經(jīng)安裝使用、逆向工程分析,其系統(tǒng)架構如圖1所示。

      圖1 某遺留人力資源管理信息系統(tǒng)架構

      該遺留信息系統(tǒng)是基于MFC開發(fā)的32位應用程序,并通過DLL動態(tài)鏈接庫實現(xiàn)對SQL Server數(shù)據(jù)庫的訪問。系統(tǒng)中的敏感信息是人員數(shù)據(jù),特別是用戶口令、薪酬數(shù)據(jù)等。且用戶口令和薪酬數(shù)據(jù)等敏感信息以明文的形式,分別存儲在數(shù)據(jù)庫表UsersLogin和WagesInfo中。

      為該遺留人力資源管理信息系統(tǒng)的相關操作提供一個安全可信的執(zhí)行環(huán)境,并有效保護系統(tǒng)中的數(shù)據(jù)是亟待解決的問題?;诖耍疚募僭O系統(tǒng)的處理器是可信的,即Enclave安全容器及容器中的代碼和數(shù)據(jù)都是可信的。而Enclave外部是不可信的,即BIOS、操作系統(tǒng)及遺留信息系統(tǒng)自身是不可信的。攻擊者可以利用系統(tǒng)或軟件漏洞攻擊BIOS、操作系統(tǒng)或遺留信息系統(tǒng)等,獲得Ring 0級別特權,進而可以修改系統(tǒng)配置,植入惡意代碼、病毒,從而竊取、偽造或破壞遺留信息系統(tǒng)中的敏感信息。

      3 基于SGX的無源代碼無文檔遺留信息系統(tǒng)安全增強方案

      3.1 可行性分析

      該遺留人力資源管理信息系統(tǒng)是32位的應用程序,運行于基于Intel處理器的商用Windows平臺。而Intel SGX可信技術對硬件的要求是6代Skylake CPU及以上,對操作系統(tǒng)的要求是64位的Windows 7及以上,目前主流的64位操作系統(tǒng)是Windows 10、Windows Server 2012和Windows Server 2016等,可以兼容運行32位的應用程序,這為A公司的遺留信息系統(tǒng)使用SGX可信計算技術提供了硬件和軟件支持。

      3.2 安全增強方案

      安全增強方案的目的是保護該遺留人力資源管理信息系統(tǒng)中的敏感信息。方案的基本思路是:

      (1) 通過逆向工程、靜態(tài)分析等方法找到Windows無源代碼遺留信息系統(tǒng)的注入點;

      (2) 編寫Hook邏輯改變遺留信息系統(tǒng)中的數(shù)據(jù)庫操作函數(shù)執(zhí)行流程,使新的執(zhí)行流程調用SGX不可信組件的接口函數(shù);

      (3) 使用不可信組件的接口函數(shù)將遺留信息系統(tǒng)的明文敏感信息傳入可信Enclave安全容器;

      (4) 在可信Enclave中對明文敏感信息進行加密處理并將相關的密鑰等隱私數(shù)據(jù)綁定至Enclave;

      (5) 將加密后的敏感信息返回給原數(shù)據(jù)庫操作函數(shù),并將相關的密文存儲到數(shù)據(jù)庫中。

      基于SGX和Enclave是安全可信的,即使操作系統(tǒng)或遺留信息系統(tǒng)內部被攻擊或篡改,仍可以保證Enclave安全容器中代碼和數(shù)據(jù)的安全可信,防止敏感信息被竊取,架構示意圖如圖2所示。

      圖2 基于SGX的遺留信息系統(tǒng)安全增強方案框架

      基于上述思路,開發(fā)人員不需要對原遺留信息系統(tǒng)進行任何修改,只需要:

      (1) 改變原數(shù)據(jù)庫操作函數(shù)的執(zhí)行流程。

      (2) 開發(fā)Hook函數(shù)與SGX不可信組件交互的接口函數(shù)。

      (3) 開發(fā)SGX組件,包括可信組件(方案命名為可信Enclave,TEnclave)和不可信組件(除去可信組件的其他部分,命名為UTBridge)。其中可信組件用于執(zhí)行密鑰生成、敏感信息加解密等安全相關的操作;不可信組件負責與Hook函數(shù)以及可信組件的交互。可信組件中的代碼和數(shù)據(jù)在可信內存區(qū)域受到SGX可信計算技術保護,而不可信組件的代碼和數(shù)據(jù)位于一般的內存中。

      3.2.1 方案的形式描述

      重點對安全增強方案中敏感信息的加解密進行描述。

      定義安全增強方案SES={KSGX,NSGX,SSGX}。其中:KSGX={key1, key2,…, keyn}為飛地中密鑰的有限集;NSGX={nonce1,nonce2,…,noncen}為飛地中隨機數(shù)的有限集;SSGX={(KSGX,NSGX)}為飛地中密鑰和隨機數(shù)組合的有限復合集。

      算法1對明文敏感信息的加密算法(SGX_encrypt)

      輸入:明文敏感信息Plaintext

      輸出:密文敏感信息Ciphertext

      a) 輸入Plaintext;

      b)RSGX=Random(SSGX),從SSGX中隨機選取一組密鑰和隨機數(shù)的組合;

      c) rv=Encrypt(Plaintext,Ciphertext,RSGX),在飛地中加密敏感信息;

      d )if rv!=SGX_SUCCESS,轉f);

      else轉e);

      e) 輸出Ciphertext;

      f) 結束。

      算法2對密文敏感信息的解密算法(SGX_decrypt)

      輸入:密文敏感信息Ciphertext

      輸出:明文敏感信息Plaintext

      a) 輸入Ciphertext;

      b) 循環(huán):fori=1;i≤n;i++

      rv=Decrypt(Ciphertext, Plaintext,SSGXi)

      if rv!= SGX_SUCCESS continue;

      else break;

      c) if rv!=SGX_SUCCESS,轉e);

      else轉d);

      d ) 輸出Plaintext;

      e) 結束。

      3.2.2 改變原數(shù)據(jù)庫操作函數(shù)執(zhí)行流程

      改變函數(shù)執(zhí)行流程的方法有很多,最簡單的方式是修改函數(shù)的源碼,但對于無源代碼的遺留信息系統(tǒng),則可以通過Hook技術更改函數(shù)的執(zhí)行流程。方案使用逆向工程、靜態(tài)分析等方式分析獲取原遺留信息系統(tǒng)的注入點,使用微軟Detours庫實現(xiàn)Hook函數(shù)的注入。

      通過對原遺留信息系統(tǒng)進行逆向工程分析,其數(shù)據(jù)訪問層的DLL動態(tài)鏈接庫中主要有兩個與數(shù)據(jù)庫操作相關的函數(shù),分別是Dboperafunc和Dbselectfunc。經(jīng)分析驗證,其中Dboperafunc主要用于更改數(shù)據(jù)庫,即將人員信息寫入數(shù)據(jù)庫;而Dbselectfunc主要用于查詢數(shù)據(jù)庫,即查詢人員信息從而顯示到MFC應用中。

      根據(jù)Detours庫的使用規(guī)則,安全增強方案需要定義4個函數(shù)實現(xiàn)Hook邏輯,包括2個Trampoline函數(shù)和2個Detour函數(shù)。定義的Trampoline函數(shù)為Real_dbopera和Real_dbselect,分別用于保存Dboperafunc和Dbselectfunc的移除指令和無條件跳轉,以及分別用于還原恢復Dboperafunc和Dbselectfunc函數(shù)的執(zhí)行流程。定義的Detour函數(shù)為Hook_dbopera和Hook_dbselect,分別用于改變Dboperafunc和Dbselectfunc的執(zhí)行流程,以便在更改后的執(zhí)行流程中使用SGX可信計算技術對敏感信息進行加密和解密操作。注意設計的Trampoline和Detour函數(shù)的參數(shù)列表、類型及函數(shù)返回值等均應與原函數(shù)相同,否則函數(shù)跳轉將失敗。更改前后的執(zhí)行流程分別如圖3、圖4所示。

      圖3 函數(shù)正常的執(zhí)行流程

      圖4 hook注入后的函數(shù)執(zhí)行流程

      所需函數(shù)定義完成后,可以使用DetourAttach攔截目標函數(shù)。DetourAttach需要2個參數(shù):目標函數(shù)指針地址和Detour函數(shù)地址,但目標函數(shù)不能直接作為參數(shù)傳入,而需要傳入目標指針。DetourAttach為調用目標函數(shù)分配并準備好一個Trampoline函數(shù)。Detour運行以后,目標函數(shù)和Trampoline會被重寫,目標指針被更新,指向Trampoline函數(shù)。一旦目標函數(shù)被攔截,目標函數(shù)的調用會被轉到Detour函數(shù)。目標函數(shù)通過Trampoline被執(zhí)行的時候,Detour函數(shù)將參數(shù)復制過來。要想移除攔截,可以調用DetourDetach。與DetourAttach類似,DetourDetach也需要2個參數(shù):目標函數(shù)指針地址和Detour函數(shù)地址。DetourDetach執(zhí)行后,目標函數(shù)被重寫為其原來的狀態(tài)。Trampoline函數(shù)被刪除,目標函數(shù)指針恢復為原來的目標函數(shù)。

      在安全增強方案中,因為要攔截的程序沒有源代碼,所以需要將Trampoline函數(shù)Real_dbXXfunc和Detour函數(shù)Hook_dbXXfunc封裝在HookHrMis.dll中,并在遺留信息系統(tǒng)啟動時,使用DetourCreateProcessWithDllEx將HookHrMis.dll注入遺留信息系統(tǒng)進程中。

      3.2.3 安全操作與敏感信息的隔離保護

      遺留信息系統(tǒng)的數(shù)據(jù)庫操作函數(shù)執(zhí)行流程被更改后,需使新的執(zhí)行流程調用SGX不可信組件的接口函數(shù),通過接口函數(shù)將系統(tǒng)中的明文敏感信息由不可信組件傳入可信Enclave安全容器,并在Enclave中對明文敏感信息進行加密處理。

      SGX組件由可信組件和不可信組件組成,其中本方案的可信組件命名為TEnclave,不可信組件為除TEnclave以外的部分,命名為UTBridge??尚沤M件TEnclave與不可信組件UTBridge會進行交互,其交互規(guī)則要按照SGX規(guī)范編寫Enclave定義語言(enclave definition language, EDL)文件[20]。在安全增強方案中,編寫TEnclave.edl文件對方案的可信組件與不可信組件進行明確的劃分與定義,SGX可以使用該EDL文件自動完成可信組件和不可信組件相關文件的生成,并為可信容器TEnclave創(chuàng)建相關的OCALL和ECALL例程。自動生成的可信組件文件包括TEnclave_t.h、TEnclave_t.c,不可信組件文件包括TEnclave_u.h、TEnclave_u.c。ECALL和OCALL主要完成可信組件TEnclave與不可信組件UTBridge的交互,ECALL是不可信部分調用可信部分的方式,函數(shù)的執(zhí)行將從不可信組件UTBridge轉到可信組件TEnclave,而OCALL則是可信部分調用不可信部分的方式,函數(shù)執(zhí)行將從可信組件TEnclave轉到不可信組件UTBridge。

      可信組件TEnclave和不可信組件UTBridge均被封裝為單獨的dll,從HookHrMis到TEnclave的函數(shù)調用將遵循圖5所示流程。

      圖5 安全增強方案函數(shù)調用示意圖

      3.2.4 敏感信息增強保護示例

      下面以對遺留人力資源管理信息系統(tǒng)中的人員薪酬數(shù)據(jù)進行增強保護為例,說明如何改變原數(shù)據(jù)庫操作函數(shù)執(zhí)行流程,以及如何對安全操作與敏感信息進行隔離保護,其流程如圖6所示。

      圖6 敏感信息增強保護示例流程圖

      第1階段為改變函數(shù)流程。通過逆向工程、靜態(tài)分析等手段獲取原數(shù)據(jù)庫操作函數(shù),主要包括Dboperafunc和Dbselectfunc,分別設計相應的Trampoline函數(shù)和Detour函數(shù)。

      (1) Trampoline函數(shù),用于保存原數(shù)據(jù)庫操作函數(shù)的移除指令和無條件跳轉,以便還原執(zhí)行流和實現(xiàn)原始的函數(shù)調用,有Real_dbopera和Real_dbselect。

      (2) Detour函數(shù),用于攔截原數(shù)據(jù)庫的操作函數(shù),以實現(xiàn)對人員薪酬數(shù)據(jù)的加解密,有Hook_dbopera和Hook_dbselect。Hook_dbopera函數(shù)用于更改原數(shù)據(jù)庫操作函數(shù)Dboperafunc的執(zhí)行流程,通過分析得知原函數(shù)的參數(shù)為要執(zhí)行的SQL語句。通過使用SQL Server數(shù)據(jù)庫管理員賬號查看該人力資源管理信息系統(tǒng)數(shù)據(jù)庫的表結構,人員薪酬數(shù)據(jù)表為WagesInfo,其中的薪酬列名為Wage。分析函數(shù)Dboperafunc的參數(shù)SQL語句中是否存在表名“WagesInfo”以及是否存在“Insert”或“Update”等詞句,若存在這些詞句,則需要對該語句進行解析重寫,否則應直接調用Real_dbopera還原執(zhí)行流。

      第2階段為隔離保護安全操作與敏感信息。提取SQL語句中的薪酬Wage字段,調用UTBridge.dll中的封裝函數(shù)Ew_X,再由Ew_X函數(shù)進行ECALL調用進入可信組件TEnclave。

      (1) 啟動Enclave安全區(qū),使用Enclave前必須啟動Enclave并將生成的Enclave ID提供給ECALL例程。這對于其他函數(shù)應該是透明的,安全增強方案通過使用一個全局變量保存該ID信息,但這會導致在安全區(qū)內一次只能存在一個線程。對于安全應用來說這是一個合理的解決方案,因為較少的線程意味著較小的可信計算基和攻擊面。為了解決透明性問題,UTBridge.dll中的函數(shù)應首先檢查安全區(qū)是否已啟動,如果Enclave已啟動,則直接使用,否則先進行Enclave安全區(qū)的創(chuàng)建和啟動。通過檢查ECALL例程的返回值,除SGX_SUCCESS以外的任何結果都表明函數(shù)未成功進入Enclave安全區(qū),并且所請求的功能未成功執(zhí)行。

      (2) 定義可信組件與不可信組件的交互接口。安全增強方案的交互接口通過EDL文件進行定義,以實現(xiàn)對人員薪酬數(shù)據(jù)的加解密。因為薪酬數(shù)據(jù)的明文和密文處于Enclave內外不同的地址空間,因此要將其從不可信部分封送到受Enclave保護的內存空間中。SGX可信部分與不可信部分之間的參數(shù)傳遞與傳統(tǒng)函數(shù)不同,需要明確:① 數(shù)據(jù)復制方向,對于加密過程,薪酬數(shù)據(jù)的明文先封送到可信Enclave中,加密完成后將密文返回給不可信部分。對于解密過程,薪酬數(shù)據(jù)的密文先封送到可信Enclave中,解密完成后將明文返回給不可信部分。SGX為了指明指針數(shù)據(jù)復制的方向,需要在函數(shù)的指針參數(shù)前指定方向,方向類型有[in]、[out]、[in, out],含義如表1所列;② 指針引用的數(shù)據(jù)緩沖區(qū)大小,SGX要求對于數(shù)組、Char和Wchar_t字符串等類型,如果要復制的數(shù)據(jù)緩沖區(qū)的長度超過一個元素,就必須指定緩沖區(qū)中的元素數(shù),否則將僅復制一個元素。安全增強方案需要在傳遞指針數(shù)據(jù)前,正確獲取要傳遞的元素個數(shù)或數(shù)組的長度,并將其作為函數(shù)的一個參數(shù)。

      表1 ECALL和OCALL中的指針方向參數(shù)及其含義

      (3) 選擇加解密函數(shù)。SGX的可信內存空間不能依賴第三方庫,因此Enclave中的加解密函數(shù)只能自己編寫或者選擇SGX所提供的加解密算法。SGX的密碼庫中自帶了一些常用的加解密方法和HASH函數(shù),方案分別選擇了SGX可信加密庫函數(shù)SGX_aes_ctr_encrypt和SGX_aes_ctr_decrypt進行薪酬數(shù)據(jù)的加解密操作,二者執(zhí)行的是CTR(計數(shù)器)模式下的AES加解密操作,可支持128位的密鑰。

      至此,對薪酬數(shù)據(jù)明文加密完成后,將該密文字段傳回Hook_dbopera函數(shù),并重寫原SQL語句,利用DetourDetach還原數(shù)據(jù)庫操作函數(shù)執(zhí)行流程,使其執(zhí)行重寫后的SQL語句,將加密后的薪酬數(shù)據(jù)保存至數(shù)據(jù)庫。

      4 驗證與分析

      4.1 實驗環(huán)境

      實驗所選主機為Thinkpad E490筆記本電腦,CPU為支持SGX功能的i7-8565U,內存16 GB。SGX開發(fā)環(huán)境搭建步驟為:在BIOS中啟用主機的SGX功能;安裝Windows 10操作系統(tǒng),版本為1809;安裝Intel管理引擎驅動程序,版本為1909.12.0.1236;安裝Visual Studio 2017;安裝Intel Windows SGX SDK 2.7,SGX PSW 2.7。

      4.2 加解密功能驗證

      在該遺留人力資源管理信息系統(tǒng)中注入HookHrMis.dll,對人員的口令、薪酬數(shù)據(jù)等敏感信息重新錄入后,查看數(shù)據(jù)庫中人員口令表UsersLogin中的口令字段和薪酬表WagesInfo中的薪酬字段已全部為密文,但在應用中可以查看到正確的明文信息。

      結果表明,基于SGX的無源碼遺留信息系統(tǒng)安全增強方案正確實現(xiàn)了對人員口令和薪酬數(shù)據(jù)等敏感信息的加解密。惡意的數(shù)據(jù)庫攻擊者在沒有正確使用遺留人力資源管理信息系統(tǒng)的前提下,即使獲取到該數(shù)據(jù)庫,也無法獲取其中的敏感信息,實現(xiàn)了對敏感信息的增強保護。

      4.3 性能分析

      安全增強方案使用SGX可信計算技術,對原遺留信息系統(tǒng)的性能會帶來一定的損耗。通過運行不同次數(shù)的安全增強方案測試程序,分別測試了在遺留信息系統(tǒng)中注入HookHrMis.dll前后插入人員信息和更新人員信息所耗費的時間,測試結果分別如圖7、圖8所示。

      圖7 注入HookHrMis.dll前后插入人員信息所需時間

      圖8 注入HookHrMis.dll前后更新人員信息所需時間

      從測試結果可以看出,在原遺留信息系統(tǒng)中注入HookHrMis.dll后插入人員信息和更新人員信息相比注入前分別帶來了3.3%和4.37%的額外性能損耗。

      分析性能損耗的原因主要在于Enclave安全容器的創(chuàng)建與銷毀、ECALL/OCALL調用過程中的數(shù)據(jù)傳遞以及敏感信息在Enclave安全容器中的加密和解密。但在應用的實際運行過程中,可以通過調整Enclave的創(chuàng)建與銷毀策略,如在應用的運行期間只創(chuàng)建一次Enclave,并只在應用退出時才銷毀該Enclave,這樣可以將Enclave創(chuàng)建與銷毀所帶來的開銷降至最低。因此,安全增強方案所帶來的額外性能開銷在可接受的范圍內。

      4.4 Enclave內存分析

      因為所有Enclave可信內存都在EPC(enclave page cache)內存區(qū)域中實例化,但EPC是內存中的共享資源,即系統(tǒng)中所有正在運行的Enclave都必須位于其中。在系統(tǒng)中, EPC的大小可以在BIOS中設定,通常為64 MB或128 MB。由于此限制,應將Enclave的大小調整為適合其實際內存的使用量,并且分配給Enclave的內存不應超過其使用量,同時還應注意在使用完Enclave后及時釋放以避免可能的內存泄露。分配給Enclave的內存量是在Enclave配置文件中設置的,默認為每個線程分配256 kB??臻g和1 MB全局堆空間。

      可以使用SGX提供的EMMT工具來測量運行安全增強方案的Enclave大小,運行安全增強方案測試程序1、100和1 000次的Enclave大小測量結果如圖9所示。

      圖9 Enclave內存占用

      測量結果表明,該安全增強方案在執(zhí)行期間Enclave安全區(qū)共使用了2 kB的??臻g和4 kB的堆空間,沒有發(fā)生內存泄露問題。

      5 結論

      首先對相關背景知識進行研究,Intel的硬件可信計算技術SGX在越來越多的安全工程領域得到應用,然后針對當前Windows遺留信息系統(tǒng)中的敏感信息保護問題,提出了基于SGX技術的安全增強方案,方案不需要對原遺留信息系統(tǒng)進行任何修改,與數(shù)據(jù)庫系統(tǒng)弱相關。并以某無源代碼無文檔的遺留人力資源管理信息系統(tǒng)為例設計實現(xiàn)了該安全增強方案,對其中的隱私信息實現(xiàn)了安全保護。實測結果表明基于SGX技術的安全增強方案所帶來的額外性能開銷在可接受的范圍,并驗證了方案的正確性。本文主要針對Windows的無源代碼無文檔遺留信息系統(tǒng)進行增強保護,下一步將考慮Linux的無源代碼無文檔的遺留信息系統(tǒng)安全增強及Web信息系統(tǒng)安全增強等。

      猜你喜歡
      遺留源代碼信息系統(tǒng)
      人工智能下復雜軟件源代碼缺陷精準校正
      計算機仿真(2023年8期)2023-09-20 11:23:42
      企業(yè)信息系統(tǒng)安全防護
      哈爾濱軸承(2022年1期)2022-05-23 13:13:18
      基于TXL的源代碼插樁技術研究
      許林濤作品
      基于區(qū)塊鏈的通航維護信息系統(tǒng)研究
      電子制作(2018年11期)2018-08-04 03:25:54
      基于單片機控制的小孩遺留小汽車內智能安全裝置
      電子制作(2018年11期)2018-08-04 03:25:46
      軟件源代碼非公知性司法鑒定方法探析
      信息系統(tǒng)審計中計算機審計的應用
      消費導刊(2017年20期)2018-01-03 06:26:40
      靜寂的故宮博物館
      歲月(2016年5期)2016-08-13 00:32:59
      天龍,遺留六百年的傳奇
      珲春市| 芦山县| 奎屯市| 贵阳市| 灌云县| 聂荣县| 饶阳县| 卢氏县| 皮山县| 滦平县| 海南省| 婺源县| 廊坊市| 锡林浩特市| 海原县| 永德县| 莲花县| 延长县| 忻城县| 诸城市| 赤水市| 嘉黎县| 梁山县| 惠州市| 玉田县| 杭锦旗| 临汾市| 玉屏| 垫江县| 乌兰察布市| 犍为县| 五常市| 黔西| 同德县| 陕西省| 横山县| 美姑县| 三亚市| 辛集市| 文化| 阿拉善盟|