国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      數(shù)據(jù)庫信息加密方法和系統(tǒng)的制作方法

      文檔序號:6483950閱讀:124來源:國知局

      專利名稱::數(shù)據(jù)庫信息加密方法和系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      :本發(fā)明涉及數(shù)據(jù)庫信息安全,具體地說,涉及一種數(shù)據(jù)庫信息加密方法和使用該方法的數(shù)據(jù)庫信息加密系統(tǒng)。屬于信息安全
      技術(shù)領(lǐng)域
      。
      背景技術(shù)
      :隨著信息化進程的不斷推進,信息資產(chǎn)成為了企業(yè)的核心資產(chǎn)之一,如何采用技術(shù)手段維護企業(yè)業(yè)務(wù)數(shù)據(jù)的安全性已成為企業(yè)普遍關(guān)注的問題。而作為數(shù)據(jù)存儲和管理的核心部件,數(shù)據(jù)庫系統(tǒng)的安全性更是引起的廣泛的重視。在配置了信息系統(tǒng)的企業(yè)中,通常會雇傭數(shù)據(jù)庫管理員來進行數(shù)據(jù)庫系統(tǒng)的維護和管理,這些超級用戶擁有數(shù)據(jù)庫中所有數(shù)據(jù)的控制權(quán)。然而,在現(xiàn)代企業(yè)業(yè)務(wù)流程中,數(shù)據(jù)庫管理員僅是技術(shù)人員,而并非這些數(shù)據(jù)的所有者。一旦數(shù)據(jù)庫管理員被收買,將企業(yè)的機密數(shù)據(jù)泄露出去,將對企業(yè)造成非常嚴重的損害。如何限制數(shù)據(jù)庫管理員濫用權(quán)限成為信息系統(tǒng)應(yīng)用中亟待解決的問題之一。此外,存儲介質(zhì)的丟失也是企業(yè)信息系統(tǒng)的重要威脅之一。競爭對手可以通過竊取服務(wù)器磁盤等手段,獲得存儲介質(zhì),并進一步解析出敏感數(shù)據(jù)。解決信息系統(tǒng)中敏感數(shù)據(jù)的機密性問題,其最有效手段就是進行加密。數(shù)據(jù)庫管理系統(tǒng)廠商紛紛在產(chǎn)品中提供了相應(yīng)的安全功能,現(xiàn)有DBMS產(chǎn)品中支持加密的包括0racle、DB2和MS-SQLServer。下表1對各DBMS產(chǎn)品中的加密機制進行了列表對比。表l:DBMS內(nèi)部加密機制對比名稱密鑰管理特點針對威脅加密粒度實現(xiàn)方法Oracle完全由服務(wù)器管理,安全管理員操作存儲介質(zhì)丟失字段級在磁盤操作過程加解密DB2由用戶口令生成,存儲口令提示保護私人數(shù)據(jù),非擁有者拒絕訪問字段級擴展SQL語句和函數(shù)實現(xiàn)SQLServer根密鑰受操作系統(tǒng)保保護私人數(shù)據(jù),字段級擴展SQL語句和函數(shù)實5<table>tableseeoriginaldocumentpage6</column></row><table>通過對0racle、DB2和SQLServer的分析不難發(fā)現(xiàn),使用數(shù)據(jù)庫管理系統(tǒng)所提供的加密機制實現(xiàn)敏感數(shù)據(jù)的機密性保護,存在著難以克服的缺點,主要體現(xiàn)在以下三個方面:(1)對上層應(yīng)用不透明,更新成本高。企業(yè)信息系統(tǒng)一旦投入使用,其生命周期往往很長,這主要是因為信息系統(tǒng)的造價較高,且業(yè)務(wù)數(shù)據(jù)模型基本穩(wěn)定。若要在應(yīng)用中增加對敏感數(shù)據(jù)的加密保護策略,除了需要采購支持加密功能的DBMS,還需對原有的應(yīng)用層軟件進行改造。由于數(shù)據(jù)庫管理系統(tǒng)所提供的加密機制往往使用特殊的SQL語句,對上層應(yīng)用的更改就不可避免,部署成本極高。(2)密鑰由數(shù)據(jù)庫管理員管理,難以防范數(shù)據(jù)庫管理員濫用權(quán)限。在oracle和sqlserver提供的加密機制之中,加解密密鑰依賴于數(shù)據(jù)庫管理員進行管理;DB2中雖然密鑰是由用戶口令經(jīng)變化生成的,但用戶口令也存儲于數(shù)據(jù)庫系統(tǒng)之內(nèi),數(shù)據(jù)庫管理員依然可以通過獲取用戶口令再進一步的獲取數(shù)據(jù)加解密密鑰。使用數(shù)據(jù)庫管理系統(tǒng)提供的加密機制,就無法避免密鑰受到數(shù)據(jù)庫管理員的控制。數(shù)據(jù)庫管理員掌握著密鑰,也就間接的掌握了敏感數(shù)據(jù),如何限制數(shù)據(jù)庫管理員對權(quán)限的濫用,成為難以解決的問題(3)密鑰和密文數(shù)據(jù)保存在同一服務(wù)器中,存儲介質(zhì)丟失風(fēng)險大。由于庫內(nèi)加密模式的局限,用戶用于加解密的密鑰也依賴數(shù)據(jù)庫系統(tǒng)進行管理。一旦攻擊者獲取了存儲介質(zhì),就可以首先找出庫內(nèi)存儲的密鑰,然后對密文信息進行解密,存儲介質(zhì)丟失所引起的風(fēng)險巨大。
      發(fā)明內(nèi)容本發(fā)明的目的在于克服現(xiàn)有技術(shù)中存在的問題,提供一種數(shù)據(jù)庫信息加密方法和使用該方法的數(shù)據(jù)庫信息加密系統(tǒng)。本發(fā)明所述數(shù)據(jù)庫信息加密方法包括a)對于一個或多個數(shù)據(jù)庫中的一個或多個數(shù)據(jù)表,使用相同或不同的密碼設(shè)備單元,以相同或不同的密鑰加密其中一個或多個敏感字段,并為其創(chuàng)建同名視圖,所述視圖指向加密后的數(shù)據(jù)表;b)維護數(shù)據(jù)庫用戶對加密密鑰的使用權(quán)限,以及各個經(jīng)加密的敏感字段在加密時所使用的密碼設(shè)備單元、加密方式和密鑰;C)用戶請求讀取經(jīng)加密的數(shù)據(jù)表時,檢查用戶是否具有相應(yīng)的敏感字段的密鑰使用權(quán)限,若是,則取得并使用密鑰以和所述加密方式相應(yīng)的解密方式解密,用戶獲得正確的敏感字段信息;若否,則使用隨機密鑰以和所述加密方式相應(yīng)的解密方式解密,用戶獲得經(jīng)錯誤解密的敏感字段信息;所述隨機密鑰優(yōu)選為和所述正確的密鑰長度相同的由隨機數(shù)生成的密鑰。所述方法還可包括d)用戶請求修改所述經(jīng)加密的敏感字段信息時,檢査用戶是否具有相應(yīng)敏感字段的密鑰使用權(quán)限,若是,則加密修改后的內(nèi)容;若否,則返回獲取密鑰失敗信息,不進行數(shù)據(jù)修改操作。優(yōu)選地,步驟a)所述加密通過由抽象密碼設(shè)備組件提供的統(tǒng)一的接口實現(xiàn),所述抽象密碼設(shè)備組件進一步調(diào)用一個或多個不同的所述密碼設(shè)備單元實施加解密操作,所述密碼設(shè)備單元由所述抽象密碼設(shè)備組件管理,并可以動態(tài)的加載或移除。優(yōu)選地,對于步驟a)所述一個或多個數(shù)據(jù)庫,每個數(shù)據(jù)庫均可使用單獨的所述抽象密碼設(shè)備組件,或各個數(shù)據(jù)庫共享同一個所述抽象密碼設(shè)備組件。優(yōu)選地,所述密碼設(shè)備單元可以是硬件加密設(shè)備或軟件加密設(shè)備。優(yōu)選地,步驟a)通過下述方法實現(xiàn)對數(shù)據(jù)表A中的敏感字段col實施加密i.生成一個長度為k-length的隨機數(shù)key,作為加密密鑰;ii.在待加密的數(shù)據(jù)表A中創(chuàng)建一個新的字段col—encrypt;iii.對敏感字段col以key為密鑰,選定加密設(shè)備和加密方式進行加密,并將密文存儲于col—encrypt中;iv.將col字段中的所有信息置為空;v.將數(shù)據(jù)表A改名為A—bak;vi.創(chuàng)建基于A—bak的視圖A,所述視圖對應(yīng)的字段包括AjDak中除AjDak.col和A—bak.col—encrypt之外的所有字段和A.col字段,所述A.col字段的定義為col的值等于對A—bak.col—encrypt字段解密所得到的內(nèi)容。優(yōu)選地,步驟c)所述密鑰可以更新,所述更新使用事務(wù)進行封裝以保證操作的完整性,所述更新按照下述步驟進行事務(wù)開始;使用當(dāng)前密鑰解密關(guān)系;使用新密鑰加密關(guān)系;銷毀當(dāng)前密鑰;事務(wù)結(jié)束。此外,本發(fā)明還提供了使用上述方法的數(shù)據(jù)庫信息加密系統(tǒng),如圖1所示,本發(fā)明所述系統(tǒng)包括一個安全管理主機和一個或多個數(shù)據(jù)庫服務(wù)器主機;所述安全管理主機包括安全管理組件和與之?dāng)?shù)據(jù)連接的密碼元數(shù)據(jù)管理單元;所述安全管理組件為安全管理員提供用戶接口,以設(shè)定密文安全策略;所述密碼元數(shù)據(jù)管理單元維護數(shù)據(jù)庫用戶對加密密鑰的使用權(quán)限,以及各個經(jīng)加密的敏感字段在加密時所使用的密碼設(shè)備單元、加密方式和密鑰;所述數(shù)據(jù)庫服務(wù)器主機包括數(shù)據(jù)庫管理系統(tǒng),加密代理單元,抽象密碼設(shè)備組件和一個或多個密碼設(shè)備單元;所述加密代理單元和所述安全管理組件,所述數(shù)據(jù)庫管理系統(tǒng)和抽象密碼設(shè)備組件數(shù)據(jù)連接;各個密碼設(shè)備單元均和所述抽象密碼設(shè)備組件數(shù)據(jù)連接;所述數(shù)據(jù)庫管理系統(tǒng)提供標(biāo)準SQL查詢接口,接受用戶操作請求并返回操作結(jié)果,所述操作請求包括數(shù)據(jù)的查詢和修改等;所述加密代理單元接受加解密請求并在所述抽象密碼設(shè)備組件的協(xié)調(diào)下指導(dǎo)所述密碼設(shè)備單元進行加解密操作,并返回加解密結(jié)果。具體地,所述安全管理組件包括一個在線監(jiān)聽裝置;所述在線監(jiān)聽裝置用于接收發(fā)自加密代理單元的密鑰査詢請求包,所述請求包至少包括以下信息數(shù)據(jù)庫服務(wù)器主機名、關(guān)系名、用戶名;所述安全管理組件為安全管理員提供以下功能模塊(1)列舉數(shù)據(jù)庫服務(wù)器主機模塊,用于列出所有受到安全管理組件管理的數(shù)據(jù)庫服務(wù)器主機;(2)新增數(shù)據(jù)庫服務(wù)器主機模塊,用于將某一個數(shù)據(jù)庫服務(wù)器納入到安全管理主機的管理域內(nèi);(3)取消數(shù)據(jù)庫服務(wù)器主機模塊,用于將某一數(shù)據(jù)庫服務(wù)器從安全管理主機的管理域內(nèi)刪除;(4)選定目標(biāo)數(shù)據(jù)庫服務(wù)器主機模塊,用于將安全管理員的操作空間定義為選定的數(shù)據(jù)庫服務(wù)器;(5)列舉所有數(shù)據(jù)庫中的關(guān)系模塊,用于列出當(dāng)前操作空間中所有的關(guān)系;(6)查詢某個關(guān)系的加密保護狀態(tài)模塊,用于列舉該關(guān)系所有的加密字段、列舉能解密該關(guān)系的所有用戶、列出該關(guān)系所使用的加密參數(shù),所述加密參數(shù)包括加密算法、密鑰長度和算法工作模式(7)設(shè)定對關(guān)系的加密保護模塊,該模塊可以對未曾加密的關(guān)系實施加密保護,也可以修改已經(jīng)實施了加密保護的關(guān)系的加密策略;(8)列舉數(shù)據(jù)庫中的用戶模塊,用于列出當(dāng)前操作空間中的所用用戶標(biāo)識;(9)密鑰更新模塊,用于對某個已加密關(guān)系的加密密鑰進行更新,該操作使用事務(wù)進行封裝以保證操作的完整性,按照如下步驟進行事務(wù)開始,使用舊的密鑰解密該關(guān)系,使用新密鑰對關(guān)系進行加密,銷毀舊的密鑰,事務(wù)結(jié)束;(10)修改加密設(shè)備配置模塊,用于修改加密設(shè)置項所采用的加密算法、密鑰長度、加密工作模式。所述密碼元數(shù)據(jù)管理單元用于存儲和管理密鑰、加密工作模式配置信息、關(guān)系與密鑰的對應(yīng)關(guān)系和用戶對密鑰的支配關(guān)系。所述數(shù)據(jù)庫管理系統(tǒng)用于處理和應(yīng)答用戶的査詢請求,并根據(jù)用戶査詢是否涉及加密過的數(shù)據(jù),執(zhí)行不同的操作流程若用戶査詢不涉及密文數(shù)據(jù),則直接進行數(shù)據(jù)查詢,并返回給用戶;若用戶査詢涉及密文數(shù)據(jù),則向加密代理單元發(fā)送解密請求,如果該用戶具有密文查詢權(quán)限則向其返回解密后的明文,若該用戶不具有解密權(quán)限則向其返回?zé)o意義的密文。所述加密代理單元用于根據(jù)由安全管理組件發(fā)來的指令執(zhí)行相應(yīng)操作,由數(shù)據(jù)庫管理系統(tǒng)發(fā)來的請求,并調(diào)用抽象密碼設(shè)備單元進行數(shù)據(jù)的加解密;所述加密管理單元執(zhí)行的相應(yīng)操作包括(1)對關(guān)系中的某一字段實施加密操作,此時由所述安全管理組件發(fā)來的指令包括以下內(nèi)容待加密的關(guān)系的標(biāo)識、待加密的字段標(biāo)識、使用的密碼設(shè)備單元標(biāo)識、工作模式和密鑰長度;(2)對關(guān)系中的某一字段實施解密操作,此時由所述安全管理組件發(fā)來的指令包括以下內(nèi)容待加密的關(guān)系的標(biāo)識、待加密的字段標(biāo)識、使用的密碼設(shè)備單元標(biāo)識、工作模式和密鑰長度;所述由數(shù)據(jù)庫管理系統(tǒng)發(fā)來的請求包括(1)數(shù)據(jù)讀取請求;讀取請求包括以下內(nèi)容發(fā)起讀取的用戶標(biāo)識;讀取的關(guān)系的標(biāo)識;(2)數(shù)據(jù)寫入請求。所述加密代理單元在根據(jù)安全管理組件發(fā)來的指令執(zhí)行對關(guān)系A(chǔ)的所述某一字段col實施加密操作時,按照如下步驟進行(1)接收并解析安全管理組件發(fā)來的指令;待加密關(guān)系的標(biāo)識A;待加密字段標(biāo)識:C0l;密碼設(shè)備單元標(biāo)識n;工作模式m;密鑰長度k-length;(2)生成一個長度為k-length的隨機數(shù)key,作為加密密鑰;(3)修改關(guān)系A(chǔ)為其創(chuàng)建一個新的字段col_encrypt;(4)對于A中的每一條記錄,對其col字段以key為密鑰,使用密碼設(shè)備單元n以工作模式m進行加密操作,將得出的密文存儲于col一encrypt字段中;(5)將A中的col字段的所有信息置為空;(6)將A改名為A_bak;(7)創(chuàng)建基于A—bak的視圖A,定義A的字段包括A_bak中除col和col_encrypt之外的所有其它字段和一個新的col字段,所述新的col字段的定義為col的值等于對A_bak中col—encrypt字段以key為密鑰,使用密碼設(shè)備單元n以工作模式m進行解密操作所得到的值;(8)創(chuàng)建對于A的寫入觸發(fā)器update—trigger,當(dāng)用戶對A進行寫入操作時,使用密碼設(shè)備單元n以工作模式m對用戶提交的col字段的數(shù)據(jù)進行加密操作,并將得出的密文存儲于A的C0l_encrypt字段中,A的col字段置為空;(9)發(fā)送加密關(guān)系成功數(shù)據(jù)包,將所使用的密鑰key發(fā)送給安全管理組件進行注冊。所述加密代理單元在根據(jù)安全管理組件發(fā)來的指令執(zhí)行對關(guān)系的所述某一字段實施解密操作時,按照如下步驟進行(1)接收并解析安全管理組件發(fā)來的指令;待解密關(guān)系的標(biāo)識A;待解密字段標(biāo)識C0l;密碼設(shè)備單元標(biāo)識n;工作模式ffl;密鑰長度k-length;密鑰key(2)刪除A;(3)刪除A的寫入觸發(fā)器update_trigger;(4)對于A—bak中的每一條記錄,對其col—encrypt字段以key為密鑰,使用密碼設(shè)備單元n以工作模式m進行解密操作,將得出的明文存儲于col字段中;(5)刪除A_bak中的col_encrypt字段;(6)將A—bak更名為A;(7)發(fā)送解密成功數(shù)據(jù)包,安全管理組件清除對A進行加密的注冊信息。所述加密代理單元在根據(jù)數(shù)據(jù)庫管理系統(tǒng)發(fā)來的指令執(zhí)行數(shù)據(jù)讀取請求時,按照如下步驟進行(l)解析數(shù)據(jù)讀取請求數(shù)據(jù)包;發(fā)起讀取的用戶標(biāo)識Uid;讀取的關(guān)系的標(biāo)識Tid;.(2)獲取解密密鑰,將Uid和Tid發(fā)送到安全管理組件,請求解密密鑰并根據(jù)Uid是否具有對Tid的解密權(quán)限執(zhí)行不同的流程(a)若Uid具有對Tid的解密權(quán)限,則安全管理組件將返回以下信息密鑰key、密碼設(shè)備單元標(biāo)識符n、工作模式m和密鑰長度k—length;(b)若Uid沒有對Tid解密的權(quán)限,安全管理組件將返回以下信息密碼設(shè)備單元標(biāo)識符n、工作模式m和密鑰長度k_length;加密代理單元隨機生成一個密鑰長度為k_length的密鑰key;(3)構(gòu)建加密代理消息包,依次取得關(guān)系Tid中某一記錄中的密文字段msg,并將其與密鑰key、密碼設(shè)備單元標(biāo)識符n、工作模式m和密鑰長度k—length—起生成一個加密代理消息包,并將該加密代理消息包發(fā)送給抽象密碼設(shè)備組件進行解密操作;(4)將抽象密碼設(shè)備組件返回的明文字段返回給數(shù)據(jù)庫管理系統(tǒng)。所述加密代理單元在根據(jù)數(shù)據(jù)庫管理系統(tǒng)發(fā)來的指令執(zhí)行數(shù)據(jù)寫入請求時,按照如下步驟進行(1)解析數(shù)據(jù)讀取請求數(shù)據(jù)包;發(fā)起讀取的用戶標(biāo)識Uid;讀取的關(guān)系的標(biāo)識Tid;(2)獲取加密密鑰,將Uid和Tid發(fā)送到安全管理組件,請求解密密鑰并根據(jù)Uid是否具有對Tid的解密權(quán)限執(zhí)行不同的流程(a)若Uid具有對Tid的加密權(quán)限,則安全管理組件將返回以下信息密鑰key、密碼設(shè)備單元標(biāo)識符n、工作模式m和密鑰長度k—length;加密代理單元取得要插入的明文字段msg,并將其與密鑰key、密碼設(shè)備單元標(biāo)識符n、工作模式m和密鑰長度k—length—起組成加密代理消息包,將該包發(fā)送給抽象密碼設(shè)備組件進行加密操作;并將加密后的密文字段返回給數(shù)據(jù)庫管理系統(tǒng)進行存儲;(b)若Uid沒有對Tid解密的權(quán)限,安全管理組件將返回以下信息密碼設(shè)備單元標(biāo)識符n、工作模式m和密鑰長度k—length;加密代理向數(shù)據(jù)庫管理系統(tǒng)返回獲取密鑰錯誤信息。所述抽象密碼設(shè)備組件用于管理多個密碼設(shè)備單元;為加密代理單元提供統(tǒng)一的加密和解密調(diào)用接口;根據(jù)加密代理消息包構(gòu)建密文服務(wù)請求包,并按照加密代理消息包中的密碼設(shè)備單元標(biāo)識,將所述密文服務(wù)請求包發(fā)至相應(yīng)的密碼設(shè)備單元執(zhí)行數(shù)據(jù)加解密操作;解密操作完成后,抽象密碼設(shè)備組件將從密文服務(wù)應(yīng)答包中返回的數(shù)據(jù),傳遞給加密代理單元;所述加密代理消息包至少包括以下信息密碼設(shè)備單元標(biāo)識符n、密鑰key、工作模式m和數(shù)據(jù)msg。所述密碼設(shè)備單元用于對抽象密碼設(shè)備組件提交的密文服務(wù)請求包進行加密或解密操作,并將操作結(jié)果以密文服務(wù)應(yīng)答包的形式返回給抽象密碼設(shè)備組件,其中,密文服務(wù)請求包的內(nèi)容包括密鑰key、工作模式m和數(shù)據(jù)msg;密文服務(wù)應(yīng)答包的內(nèi)容包括密文服務(wù)處理后的數(shù)據(jù)R一msg;所述密碼設(shè)備單元可以是加密卡、加密機等硬件形式的加密設(shè)備,或者是軟件形式的加密設(shè)備,但無論采用何種形式,均應(yīng)能夠提供數(shù)據(jù)加解密服務(wù)。和現(xiàn)有技術(shù)相比,本發(fā)明具有如下優(yōu)勢1.基于本發(fā)明的數(shù)據(jù)庫系統(tǒng)具有對上層應(yīng)用軟件和底層數(shù)據(jù)庫管理系統(tǒng)的透明性。數(shù)據(jù)庫加密系統(tǒng)與數(shù)據(jù)庫管理系統(tǒng)的交互,全部通過加密代理單元,采用標(biāo)準SQL接口實現(xiàn)。同時,對于上層應(yīng)用來說,加密后的關(guān)系與加密前的關(guān)系沒有名稱或調(diào)用方式上的差異,因此,無需對已部署的上層應(yīng)用進行修改。2.基于本發(fā)明的數(shù)據(jù)庫系統(tǒng)可通過單獨的安全管理主機進行密鑰的統(tǒng)一管理,通過將密鑰管理與數(shù)據(jù)庫服務(wù)器管理分離實現(xiàn)對數(shù)據(jù)庫管理員權(quán)限的限制,同時避免了存儲介質(zhì)丟失所引起的信息泄漏風(fēng)險。經(jīng)本發(fā)明數(shù)據(jù)庫信息保護方法保護后的數(shù)據(jù)只有合法用戶才能夠訪問,包括數(shù)據(jù)庫管理員在內(nèi)的任何其他用戶,只要不持有相關(guān)密鑰,就無法訪問明文格式的數(shù)據(jù)內(nèi)容,大大增強了數(shù)據(jù)庫系統(tǒng)的安全性。3.除此之外,基于本發(fā)明的數(shù)據(jù)庫系統(tǒng)還提供了良好的算法兼容性和可擴展性??紤]到部分用戶可能會采用非公開的加密算法,基于本發(fā)明的數(shù)據(jù)庫系統(tǒng)使用統(tǒng)一的協(xié)調(diào)組件(抽象密碼設(shè)備組件)以過濾加密設(shè)備或算法在接口上的差異,為用戶使用特殊的密碼算法提供了便利。圖1是本發(fā)明數(shù)據(jù)庫信息加密系統(tǒng)的結(jié)構(gòu)圖2是本發(fā)明實施例數(shù)據(jù)庫信息加密系統(tǒng)的結(jié)構(gòu)圖。具體實施例方式下面結(jié)合附圖和具體實施例對本發(fā)明做進一步詳細的說明,但不以任何方式限制本發(fā)明的范圍。本實施例采用如圖2所示的數(shù)據(jù)庫系統(tǒng)結(jié)構(gòu),其中,設(shè)定數(shù)據(jù)庫系統(tǒng)中有三個用戶,分別是admin、tom和jerry,其中admin是數(shù)據(jù)庫系統(tǒng)的數(shù)據(jù)庫管理員,torn和jerry是一般用戶。假定數(shù)據(jù)庫中保存著一個由admin創(chuàng)建的涉及機密信息的數(shù)據(jù)表emp,該數(shù)據(jù)表的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)內(nèi)容分別如下表2,3所示,其中,Salary字段屬于機密信息,需要加密存儲。表2:數(shù)據(jù)表emp的數(shù)據(jù)結(jié)構(gòu)<table>tableseeoriginaldocumentpage13</column></row><table>表3:數(shù)據(jù)表emp的數(shù)據(jù)內(nèi)容<table>tableseeoriginaldocumentpage13</column></row><table>本實施例展示如何使用本發(fā)明對emp中的Salary字段實施加密保護,并為torn賦予解密密鑰使用權(quán)限。如附圖2所示,tom在使用前端應(yīng)用2(VisualSQL)訪問e卿時,可以正常的讀取Salary字段的值,而其他用戶(包括數(shù)據(jù)庫系統(tǒng)的管理員admin和一般用戶jerry)在訪問emp時,僅能正確讀取除Salary字段之外的其他字段,而Salary字段的取值為無意義的密文。在本實施例中,采用了Ingres作為數(shù)據(jù)庫管理系統(tǒng),采用了Ingres系統(tǒng)自帶的VisaulSQL作為前端應(yīng)用,采用了軟件實現(xiàn)的AES算法作為密碼設(shè)備單元,但在實際應(yīng)用中,這些組件都可以進行替換。安全管理員8對表emp中需要加密的Salary字段實施加密策略,具體的,該策略按照以下歩驟進行(1)安全管理組件9向加密代理單元5發(fā)送對表emp的Salary字段實施加密的指令。指令參數(shù)為A=emp;col=Salary;n=AES;m=encrypt;k-length=192;(2)加密代理單元5生成一個長度為192的隨機數(shù)key,作為加密密鑰;(3)修改數(shù)據(jù)表emp為其創(chuàng)建一個新的字段Salary—encrypt;(4)對于表emp中的每一條記錄,對其Salary字段以key為密鑰,使用密碼設(shè)備單元AES進行加密操作,將得出的密文存儲于Salary—encrypt字段中;(5)將表emp中的Salary字段的所有信息置為空;(6)將表emp改名為emp_bak;(7)創(chuàng)建基于表emp—bak的視圖emp,定義emp的字段包括表emp—bak中除Salary和Salary—encrypt之外的所有其它字段和一個新的Salary字段,所述新的Salary字段的定義為Salary的值等于對表emp_bak中Salary—encrypt字段以key為密鑰,使用密碼設(shè)備單元AES進行解密操作所得到的值;(8)創(chuàng)建對于視圖emp的寫入觸發(fā)器update_trigger,當(dāng)用戶對視圖emp進行寫入操作時,使用密碼設(shè)備單元AES對用戶提交的Salary字段的數(shù)據(jù)進行加密操作,并將得出的密文存儲于表emp—bak的Salary_encrypt字段中,表emp—bak的Salary字段置為空;(9)加密代理單元5向安全管理組件9發(fā)送加密數(shù)據(jù)表成功數(shù)據(jù)包,安全管理組件9對本次加密所使用的密鑰key進行注冊,并將其保存在密碼元數(shù)據(jù)管理單元10中。應(yīng)用了上述加密策略之后,安全管理員將表emp訪問密鑰的使用權(quán)賦予給用戶tom。此操作將在密碼元數(shù)據(jù)管理單元10中保存tom對于表emp的訪問權(quán)限。經(jīng)過上述配置之后,分別用不同的用戶身份登錄VisaulSQL,在其中對表emp進行査詢,輸入相同的査詢語句select*fromemp,可以看到不同的查詢結(jié)果。用tom進行訪問可以看到有意義的明文,如表4所示,其中salary字段的信息是經(jīng)過解密后的明文,其數(shù)值與應(yīng)用加密策略之前的數(shù)值是一致的。表4:Tom査詢emp得到的結(jié)果<table>tableseeoriginaldocumentpage15</column></row><table>而使用管理員用戶admin和其他一般用戶jerry執(zhí)行相同的査詢語句則返回如表5所示的數(shù)據(jù)表5:—般用戶査詢emp得到的結(jié)果<table>tableseeoriginaldocumentpage15</column></row><table>表中五個未實施加密策略的字段Id、Name、Age、Enrollment和Address,其取值都正常的返回至前端應(yīng)用,而實施了加密策略的字段Salary則返回?zé)o意義的密文值。這是因為兩個用戶admin和jerry沒有使用密鑰key的權(quán)限,使用錯誤的密鑰進行了解密操作。從本實施例可以看出,即便是數(shù)據(jù)庫系統(tǒng)的管理員,只要沒有正確的解密密鑰,就無法獲得正確的敏感信息。從存儲介質(zhì)的角度上來看,保密字段也是被加密后進行存儲的,所有明文信息在加密策略實施完成之后即被清除,即使攻擊者獲得了敏感信息的存儲介質(zhì),只要不掌握密鑰,也無法解密敏感信息。權(quán)利要求1.一種數(shù)據(jù)庫信息加密方法,其特征在于,所述方法包括a)對于一個或多個數(shù)據(jù)庫中的一個或多個數(shù)據(jù)表,使用相同或不同的密碼設(shè)備單元,以相同或不同的密鑰加密其中一個或多個敏感字段,并為其創(chuàng)建同名視圖,所述視圖指向加密后的數(shù)據(jù)表;b)維護數(shù)據(jù)庫用戶對加密密鑰的使用權(quán)限,以及各個經(jīng)加密的敏感字段在加密時所使用的密碼設(shè)備單元、加密方式和密鑰;c)用戶請求讀取經(jīng)加密的數(shù)據(jù)表時,檢查用戶是否具有相應(yīng)的敏感字段的密鑰使用權(quán)限,若是,則取得并使用密鑰以和所述加密方式相應(yīng)的解密方式解密,用戶獲得正確的敏感字段信息;若否,則使用隨機密鑰以和所述加密方式相應(yīng)的解密方式解密,用戶獲得經(jīng)錯誤解密的敏感字段信息。2.如權(quán)利要求1所述的數(shù)據(jù)庫信息加密方法,其特征在于,所述方法包括d)用戶請求修改所述經(jīng)加密的敏感字段信息時,檢査用戶是否具有相應(yīng)敏感字段的密鑰使用權(quán)限,若是,則加密修改后的內(nèi)容;若否,則返回獲取密鑰失敗信息,不進行數(shù)據(jù)修改操作。3.如權(quán)利要求1或2所述的數(shù)據(jù)庫信息加密方法,其特征在于,步驟a)所述加密通過由抽象密碼設(shè)備組件提供的統(tǒng)一的接口實現(xiàn),所述抽象密碼設(shè)備組件進一步調(diào)用一個或多個不同的所述密碼設(shè)備單元實施加解密操作,所述密碼設(shè)備單元由所述抽象密碼設(shè)備組件管理,并可以動態(tài)的加載或移除。4.如權(quán)利要求3所述的數(shù)據(jù)庫信息加密方法,其特征在于,對于所述一個或多個數(shù)據(jù)庫,每個數(shù)據(jù)庫均使用單獨的所述抽象密碼設(shè)備組件,或各個數(shù)據(jù)庫共享同一個所述抽象密碼設(shè)備組件。5.如權(quán)利要求3所述的數(shù)據(jù)庫信息保護方法,其特征在于,所述密碼設(shè)備單元是硬件加密設(shè)備或軟件加密設(shè)備。6.如權(quán)利要求1或2所述的數(shù)據(jù)庫信息加密方法,其特征在于,步驟a)通過下述方法實現(xiàn)對數(shù)據(jù)表A中的敏感字段col實施加密i.生成一個長度為k-length的隨機數(shù)key,作為加密密鑰;ii.在待加密的數(shù)據(jù)表A中創(chuàng)建一個新的字段col_encrypt;iii.對敏感字段col以key為密鑰,選定加密設(shè)備和加密方式進行加密,并將密文存儲于col—encrypt中;iv.將col字段中的所有信息置為空;v.將數(shù)據(jù)表A改名為A一bak;vi.創(chuàng)建基于A—bak的視圖A,所述視圖對應(yīng)的字段包括A—bak中除AJ)ak.col和A—bak.C0l_enCrypt之外的所有字段和A.col字段,所述A.col字段的定義為col的值等于對A_bak.col—encrypt字段解密所得到的內(nèi)容。7.如權(quán)利要求1或2所述的數(shù)據(jù)庫信息加密方法,其特征在于,步驟c)所述隨機密鑰是和所述正確的密鑰長度相同的由隨機數(shù)生成的密鑰。8.如權(quán)利要求1或2所述的數(shù)據(jù)庫信息加密方法,其特征在于,步驟c)所述密鑰可以更新,所述更新使用事務(wù)進行封裝以保證操作的完整性,所述更新按照下述步驟進行事務(wù)開始;使用當(dāng)前密鑰解密關(guān)系;使用新密鑰加密關(guān)系;銷毀當(dāng)前密鑰;事務(wù)結(jié)束。9.一種數(shù)據(jù)庫信息加密系統(tǒng),其特征在于,包括一個安全管理主機和一個或多個數(shù)據(jù)庫服務(wù)器主機;所述安全管理主機包括安全管理組件(9)和與之?dāng)?shù)據(jù)連接的密碼元數(shù)據(jù)管理單元(10);所述安全管理組件(9)為安全管理員提供用戶接口,以設(shè)定密文安全策略;所述密碼元數(shù)據(jù)管理單元(10)維護數(shù)據(jù)庫用戶對加密密鑰的使用權(quán)限,以及各個經(jīng)加密的敏感字段在加密時所使用的密碼設(shè)備單元、加密方式和密鑰;所述數(shù)據(jù)庫服務(wù)器主機包括數(shù)據(jù)庫管理系統(tǒng)(3),加密代理單元(5),抽象密碼設(shè)備組件(6)和一個或多個密碼設(shè)備單元(7);所述加密代理單元(5)和所述安全管理組件(9)、所述數(shù)據(jù)庫管理系統(tǒng)(3)和抽象密碼設(shè)備組件(6)數(shù)據(jù)連接;各個密碼設(shè)備單元(7)均和所述抽象密碼設(shè)備組件(6)數(shù)據(jù)連接;所述數(shù)據(jù)庫管理系統(tǒng)(3)提供標(biāo)準SQL查詢接口,接受用戶操作請求并返回操作結(jié)果;所述加密代理單元(5)接受加解密請求并在所述抽象密碼設(shè)備組件(6)的協(xié)調(diào)下指導(dǎo)所述密碼設(shè)備單元(7)進行加解密操作,并返回加解密結(jié)果。全文摘要本發(fā)明公開了一種數(shù)據(jù)庫信息加密方法和使用該方法的數(shù)據(jù)庫信息加密系統(tǒng),屬于信息安全
      技術(shù)領(lǐng)域
      。本發(fā)明方法包括通過密碼設(shè)備單元加密數(shù)據(jù)表中的敏感字段,并為其創(chuàng)建指向加密后的數(shù)據(jù)表的同名視圖;維護用戶對密鑰的使用權(quán)限,和加密所使用的密碼設(shè)備單元、加密方式和密鑰;對于有權(quán)限的用戶,允許其順利讀取并修改加密信息;對于無權(quán)限的用戶,讀取加密信息時使用隨機密鑰錯誤解密,修改加密信息時則返回獲取密鑰失敗信息。本發(fā)明系統(tǒng)包括一個安全管理主機和一個或多個數(shù)據(jù)庫服務(wù)器主機,并設(shè)置抽象密碼設(shè)備組件提供統(tǒng)一的加解密接口并調(diào)用一個或多個不同的密碼設(shè)備單元實現(xiàn)加解密。本發(fā)明可用于數(shù)據(jù)庫信息的加密。文檔編號G06F21/00GK101504706SQ20091007878公開日2009年8月12日申請日期2009年3月3日優(yōu)先權(quán)日2009年3月3日發(fā)明者咸鶴群,然安,敏張,馳陳申請人:中國科學(xué)院軟件研究所
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1