999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于對偶編碼函數的密文過濾技術在醫院Oracle數據庫中的應用研究

2010-10-09 08:23:14肖飛王琳黃正東
中國醫療設備 2010年1期
關鍵詞:數據庫

肖飛,王琳,黃正東

(廣州軍區武漢總醫院 a.信息科;b.醫療科,湖北 武漢 430070)

基于對偶編碼函數的密文過濾技術在醫院Oracle數據庫中的應用研究

肖飛a,王琳b,黃正東a

(廣州軍區武漢總醫院 a.信息科;b.醫療科,湖北 武漢 430070)

對數據庫進行加密后,如何提高密文數據的操作性能是一個非常重要的問題,而基于對偶編碼函數的密文過濾技術則可很好地解決此問題。文中在給出對偶編碼函數的定義后,著重分析了四種基本查詢基于對偶編碼函數的轉換規則,并利用JAVA語言將基于對偶編碼函數的密文過濾技術在醫院Oracle數據庫中進行了實現,最后通過實驗驗證了此技術對密文數據操作性能有巨大提升。

對偶編碼函數;密文過濾技術;Oracle數據庫;數據庫加密

Abstract:After carrying on encryption to the database,how to improve the operation performance of the cryptograph data becomes an important problem.Cryptograph filtration technology based on the pairs coding function can settle the problem perfectly.After giving the definition of pairs coding function , conversion rule of four basic query based on the pairs coding function was analyzed expressly in this paper.Cryptograph filtration technology based on the pairs coding function was actualized in oracle database by using JAVA language,in the end great promotion of the technology to cryptograph operation performance was validated by experiment.

Key words:pairs coding function;cryptograph filtration technology;Oracle database;database encryption

0 前言

對密文數據庫中的密文信息進行查詢時要進行脫密操作,脫密時數據庫系統的性能將大大下降,而一些可直接操作密文數據的加密方式(如秘密同態技術[1、2]及保持有序的加密技術[3])的抗攻擊能力較差,在保證密文數據庫具有較好的抗攻擊能力的同時如何提高密文數據的操作性能,是數據庫加密中面臨的一個重要問題。基于特征函數的密文過濾技術[4]能很好地解決這個問題,該技術能夠在不影響數據庫加密強度的條件下大幅度地提高密文數據的檢索性能。

基于特征函數的密文過濾技術在對明文數據加密的同時,通過某種特征函數對待加密明文生成一個特征碼信息,此特征碼信息也存儲在數據庫中,在對密文數據進行檢索時,首先根據特征碼進行檢索,對特征碼檢索出的結果解密后再進行明文檢索,與直接解密密文相比,此方式較大幅度地提高了密文檢索的性能。對偶編碼函數是一種安全性較高的特征函數,由于其中使用了哈希函數[5],攻擊者很難通過特征碼信息直接分析出加密字段的值,從而保證了數據庫加密系統的安全性。

1 對偶編碼函數

1.1 對偶編碼函數的定義

定義1 設有函數FC:Sl→S2,其中,S1為字符串C1C2...Cn,S2為二進制字符串b0bl...bm-1,S2初始值所有位為0,n

1.2 查詢條件的轉換

使用對偶編碼函數后,在進行密文查詢時,就需要對原始查詢語句where子句中的條件進行轉換,將其轉換為對加密關系中對偶編碼字段進行查詢的條件語句,轉換函數用Transfer()表示,column1是需要加密的明文字段,C1C2...Cn為條件字符串,其中可能含有通配符,也可能不含通配符,*為通配符,Ci(1≤i≤n)代表條件字符串中第i個字符,FC()是對偶編碼函數,FC_column1是column1所對應的對偶編碼,FC_column1M(k,k+1)是column1所對應的對偶編碼的第H(CkCk+1)位字符,其中,M(k,k+1)= H(CkCk+1)。

通常,對字符串數據的查詢主要有下列幾種類型。

(1) 相等查詢,它給出一個屬性的一個特定值,即“屬性=值”,那么轉換函數定義如下:

定義2 Transfer(column1=value)=>FC_column1=FC(value)。

(2) 不等查詢,它給出一個屬性不等于某個值,即“屬性<>值”,那么轉換函數定義如下:

定義3 Transfer(column1<>value)<=>(FC_column1<>FC(value) or (FC_column1 =FC(value) and column1<>value))。

(3) LIKE查詢,它給出了一個屬性包含某個特定值。

當條件字符串不含通配符時,其格式描述為C1C2...Cn,我們定義:若(FC_column1M(1,2)=1 and FC_column1M(2,3)=1…and FC_column1M(n-1,n)=1),則FC_column1 like FC(C1C2…Cn)。

當條件字符串含有通配符時,其格式描述為C1C2…Ck-1CkCk+1…Cn,其中ck為通配符*,1≤k≤n,我們定義:若(FC_column1M(1,2)=1 and FC_column1M(2,3)=1…and FC_column1M(k-2,k-1)=1 and FC_column1M(k+1,k+2)=1…and FC_column1M(n-1,n)=1),則FC_column1 like FC(C1C2…Ck-1CkCk+1…Cn)。

若條件值中除通配符外的字符不足兩個,則就不需再采用對偶編碼過濾,因為不足兩個字符無法產生對偶編碼。

然后,LIKE查詢的轉換函數可定義如下:

定義4 Transfer(column1 like C1C2…Cn)=>FC_column1 like FC(C1C2…Cn)。

(4) NOT LIKE查詢,它給出了一個屬性不包含某個特定值。

當條件字符串不含通配符時,其格式描述為C1C2…Cn,我們定義:若(FC_column1M(1,2)=0 or FC_column1M(2,3)=0…or FC_column1M(n-1,n)=0),則FC_column1 not like FC(C1C2…Cn)。

當條件字符串含有通配符時,其格式描述為C1C2…Ck-1CkCk+1…Cn,其中ck為通配符*,1≤k≤n,我們定義:若(FC_ column1M(1,2)=0 or FC_column1M(2,3)=0…or FC_column1M(k-2,k-1)=0 or FC_column1M(k+1,k+2)=0…or FC_column1M(n-1,n)=0),則FC_column1 not like FC(C1C2…Ck-1CkCk+1…Cn)。

若條件值中除通配符外的字符不足兩個,則就不需再采用對偶編碼過濾,因為不足兩個字符無法產生對偶編碼。

然后,NOT LIKE查詢的轉換函數可定義如下:

定義5 Transfer(column1 not like C1C2…Cn)<=>(FC_column1 not like FC(C1C2…Cn) or (FC_column1 like FC(C1C2…Cn) and column1 not like C1C2…Cn))。

對于其他條件的查詢操作,均可通過條件轉換分解為上述四種基本查詢操作的組合。

2 對偶編碼函數在Oracle中的實現

2.1 Oracle中JAVA函數的使用

JAVA是一種具有跨平臺能力的面向對象語言,具有很高的安全性[6],從Oracle8.1.5版本開始,JAVA編譯運行環境就被引入Oracle數據庫中,其全稱為Oracle Java Server(Jserver)。Jserver的引入,使得在Oracle數據庫中可以方便地使用JAVA函數[7],由此可基于JAVA語言的特性實現了Oracle內部函數無法實現的功能。

在調用JAVA函數之前,要先將相應的JAVA文件加載到數據庫中,加載使用loadjava工具,被加載進數據庫的JAVA文件中的方法必須被定義為靜態方法。

加載語法為:loadjava -user username/password@database -resolve -verbose ####.####

卸載語法為:dropjava -uers username/password@database -verbose ####.####

其中:####.####為所要加載的文件的文件名及擴展名,它可以是JAVA類文件、JAVA源文件或者.Jar或者.Zip文件。

JAVA文件被加載到數據庫中之后,其中的方法是不能被PL/SQL直接使用的,必須先為方法創建一個包裝器,包裝器就是一個PL/SQL過程或函數,它對加載到數據庫中的JAVA靜態方法進行包裝,Oracle中就是通過包裝器來調用JAVA文件中的相應靜態方法。

當JAVA文件中的靜態方法沒有返回值時,創建包裝器的語法如下:

當JAVA文件中的靜態方法有返回值時,創建包裝器的語法如下:

name '類名.方法名(參數列表) return Java規范的返回值類型';/

當數據庫中的其他用戶要調用此包裝器時,必須由此包裝器的OWNER來對其進行授權,授權語句包括兩部分,第一部分為訪問此JAVA資源的權限,第二部分為執行此包裝器的權限。授權語句如下:

2.2 對偶編碼函數在Oracle中的實現

使用JAVA語言[8]實現對偶編碼函數類CharactorCoding,其類主要結構如表1所示。利用loadjava工具將對偶編碼函數類加載進Oracle數據庫,分別為對偶編碼生成函數、對偶編碼相等比較函數及對偶編碼相似比較函數創建對象包裝器CreateCharactorCoding(sinput varchar2)、CharactorCodingEqual (spcode varchar2,sarg varchar2)和 CharactorCodingLike( spcode varchar2,sarg varchar2)。

表 1 對偶編碼函數類主要結構

3 基于對偶編碼函數的密文過濾技術在Oracle中的實現

3.1 基于對偶編碼函數的密文過濾技術

執行密文操作時,首先對操作語句的條件語句部分進行轉換,在加解密操作之前先根據對偶編碼過濾掉部分記錄,然后將剩余記錄進行解密,再將解密后的數據根據原始條件語句進行精細過濾,從而確定數據操作的范圍。

以包含5萬條記錄的診斷記錄表DIAGNOSIS(patient_ id,visit_id,diagnosis_type,diagnosis_no,diagnosis_text)為例來演示基于對偶編碼函數的密文過濾技術在Oracle中的實現。診斷記錄表只建立主鍵索引(patient_id,visit_id,diagnosis_no),加密前其結構如表2所示。

表 2 診斷記錄表DIAGNOSIS

選擇AES算法[9,10]為加密算法,AES_encrypt()為根據此算法設計的加密函數,extendkey為128位原始密鑰生成的擴展密鑰。待加密數據列為diagnosis_text列,此列明文寬度48位,數據加密前先對此列進行擴展以滿足加密后數據存儲的需要,進行加密操作后,此列數據將被密文數據替代。對于待加密的每個數據項,為其生成一個48位對偶編碼,實現時將對偶編碼與密文信息存儲在同一列中,因此實際加密后的診斷記錄表為DIAGNOSIS(patient_id,visit_id,diagnosis_ type,diagnosis_no,CreateCharactorCoding(diagnosis_text)||AES_ encrypt(diagnosis_text,extendkey))。

其中,對密文數據的操作,可分為下面幾種類型。

3.1.1 查詢操作

對于未涉及到加密列(查詢內容及查詢條件中均未涉及)的查詢,加密操作對其沒有影響,對于涉及到加密列的查詢,均可通過條件轉換分解為下述四種基本查詢操作的組合。其中AES_dec_user()函數為將密文診斷記錄列解密為明文的解密函數,spara為解密密鑰。

(1) 相等條件查詢

對diagnosis_text列加密前,查詢診斷記錄的相等條件查詢語句為:

3.1.2 插入操作

加密操作前,對診斷記錄表進行插入的語句為:

其中,where子句的變化規則同查詢操作中的變化規則。

3.1.3 更新操作

對于未涉及到加密列(查詢內容及查詢條件中均未涉及)的更新,加密操作對其沒有影響,而對于涉及到加密列的,操作語句的變化如下。

加密操作前,對診斷記錄表進行更新的語句為:

其中,where子句的變化規則同查詢操作中的變化規則。

3.1.4 刪除操作

刪除操作時,當刪除條件未涉及到加密列時,加密前后的操作語句不變。當刪除條件涉及到加密列時,操作語句的where子句發生變化,變化規則同查詢操作中的變化規則。

3.2 實驗及實驗分析

3.2.1 實驗環境

實驗機為DELL4600服務器(至強2.4CPU,2G內存,5*146G硬 盤,RAID5), 操 作 系 統 為 WINDOWS2000 SERVER,數據庫為Oracle8.1.7,JDK版本為1.4.0。

表 3 查詢性能實驗數據記錄表

3.2.2 實驗方法

選擇包含5萬條記錄的診斷記錄表DIAGNOSIS(patient_ id,visit_id,diagnosis_type,diagnosis_no,diagnosis_text)為實驗表,其中診斷列diagnosis_text為加密數據列,存儲擴展前此列明文寬度為48位,生成的對偶編碼長度也為48位。診斷記錄表只建立主鍵索引(patient_id,visit_id,diagnosis_no),查詢其中“上呼吸道感染”診斷,對比測試下面兩種方式的查詢時間,各查詢時間均測試10次求其平均值。

方式1:diagnosis_text為密文形式,查詢方式為本方案中基于對偶編碼過濾查詢。

方式2:diagnosis_text為密文形式,查詢方式為全表解密后查詢。

實驗包括四個測試,分別用于測試相等條件查詢、相似條件查詢、不等條件查詢及不相似條件查詢四種情況。每個測試又包括兩部分,第一部分用于記錄以密文形式返回查詢結果所用時間,第二部分用于記錄以明文形式返回查詢結果所用時間。

測試1:以相等條件查詢。

查詢條件:明文diagnosis_text=’上呼吸道感染’

查詢結果:共2450條滿足查詢條件記錄。

測試2:以相似條件查詢。

查詢條件:明文diagnosis_text like ’%上呼吸道感染%’

查詢結果:共2712條滿足查詢條件記錄。

測試3:以不等條件查詢。

查詢條件:明文diagnosis_text<>’上呼吸道感染’

查詢結果:共47550條滿足查詢條件記錄。

測試4:以不相似條件查詢。

查詢條件:明文diagnosis_text not like ’%上呼吸道感染%’。

查詢結果:共47288條滿足查詢條件記錄。

各測試中兩種查詢方式花費時間及實際解密數據行數如表3所示。

3.2.3 實驗分析及結論

由表3可知,四個測試中均為方式2花費時間較長,這與方式1為對部分數據脫密后查詢、方式2為對所有數據脫密后查詢的實際相符。各測試中均為第二部分花費時間較長,這與第二部分多了對密文結果解密的時間開銷相符。

分析1:通過各測試中兩種方式花費時間對比可以看出,基于對偶編碼過濾查詢的效率明顯高于全表脫密的查詢,并且,本方案中采用的48位對偶編碼的過濾效率極高,在相等和相似條件查詢中過濾效率分別達到99.93%和99.90%,其中,過濾效率=根據對偶編碼函數過濾掉的不符合查詢條件的數據行數/根據原始查詢條件過濾掉的不符合查詢條件的數據。

分析2:各測試中第二部分均比本方法第一部分花費時間長,這與第二部分多了對密文結果解密的時間開銷相符,并且,由各測試第二部分和第一部分的時間差值可以看出,查詢結果解密的時間開銷與查詢結果解密的數據行數基本成正比例關系。

分析3:分析各測試中各部分兩種方法的查詢時間與實際解密數據行數(查詢條件解密數據行數+查詢結果解密數據行數)可知,拋開解密時間開銷外,查詢本身所占時間開銷極小,而解密時間開銷與實際解密數據行數基本成正比例關系。

由上述分析,可得出以下結論:在對密文數據的查詢中,查詢本身所占時間開銷較小,解密所占時間開銷較大,在扣除查詢本身所花費時間后,剩余查詢時間開銷與解密的數據量成正比。采用對偶編碼過濾技術對密文數據進行查詢時,其查詢效率遠高于全表脫密的查詢方式,可極大地提高密文數據操作的性能。

[1] Rivest R L,Adlem A L,Dertouzos M L.On Data Banks and Privacy Homomorphism[M].//Foundations of SecureComputation.New York:Academic Press,1978:169-178.

[2] 楊勇,方勇,周安民.秘密同態技術研究及其算法實現[J].計算機工程,2005,37(2):157-159.

[3] R.Agrawal,J.Kirenan,R.Srikant,et al.Order Preserving Encryption for Numeric Data[C].//SIGMOD.Proceedings of the 2004 ACM SIGMOD international conference on Management of data.New York:ACM Press,2004:563-574.

[4] Zhengfei Wang,Jing Dai,Wei Wang,et al.Fast Query over Encrypted Character Data in Database[J].International Symposium on Computer Information Science,2004,4(4):289-300.

[5] 強士卿,程光.基于流的哈希函數比較分析研究[J].南京師范大學學報(工程技術版),2008,8(4):25-28.

[6] 蔣曹清.Java安全體系結構研究[J].廣西科學院學報,2006,22(4): 246-249.

[7] Bjarki Holm,John Carnell,等.Oracle 9i Java程序設計[M].康博,譯.北京:清華大學出版社,2002:11-387.

[8] 霍斯特曼,科奈爾.Java2核心技術卷I:原理[M].李如豹,等.譯.第五版.北京:機械工業出版社,2002:2-86.

[9] FIPS 197.Advanced Encryption Standard[M].US:National Institute of Scienceand Technology,2001:1-51.

[10] Nechvatal J,Bassham E,Bassham L,et al.Report on the Development of the Advanced Encryption Standard [J]. Res National Institute of Standards and Technology, 2000,106(3):511-577.

Application Research of Cryptograph Filtration Technology Based on the Pairs Coding Function in Oracle Database

XIAO Feia,WANG Linb,HUANG Zheng-donga
(a.Information Department;b. Medical Department,Wuhan General Hospital of Guangzhou Command,Wuhan Hubei 430070,China)

TP309.7

B

1674-1633(2010)08-0037-05

2009-04-20

2009-11-10

作者郵箱:hawking-1979@163.com

猜你喜歡
數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
兩種新的非確定數據庫上的Top-K查詢
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
數據庫
財經(2015年3期)2015-06-09 17:41:31
數據庫
財經(2014年21期)2014-08-18 01:50:18
數據庫
財經(2014年6期)2014-03-12 08:28:19
數據庫
財經(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 久久久国产精品无码专区| 欧美色综合网站| 国产91精品最新在线播放| 一级毛片高清| 国产在线精品香蕉麻豆| 成人免费午间影院在线观看| 中文字幕无线码一区| 好吊日免费视频| 日韩在线网址| 自拍偷拍欧美| 婷婷五月在线| 精品久久国产综合精麻豆| 国产在线观看精品| 日本精品视频一区二区 | 色偷偷一区二区三区| 91色国产在线| 久热99这里只有精品视频6| 在线a视频免费观看| 国产免费久久精品99re不卡| 在线播放国产一区| 日韩国产黄色网站| 亚洲一区网站| 欧美国产日韩在线观看| 久久www视频| 国产一级毛片在线| 亚洲精品日产精品乱码不卡| 四虎精品免费久久| 美女内射视频WWW网站午夜| 综合五月天网| 女人18毛片一级毛片在线 | 少妇人妻无码首页| 久久黄色毛片| 亚洲九九视频| 99精品高清在线播放| 亚洲国模精品一区| 精品成人一区二区三区电影| 国产精品无码制服丝袜| 免费又爽又刺激高潮网址 | 国产91丝袜在线播放动漫 | 无码'专区第一页| 亚洲Va中文字幕久久一区| 国产日韩欧美视频| 国禁国产you女视频网站| AV不卡在线永久免费观看| 国产精品私拍99pans大尺度| 中文字幕欧美日韩高清| 成年A级毛片| 国产精品久久久久无码网站| 久久伊人色| 99在线观看国产| 四虎在线高清无码| 在线播放精品一区二区啪视频 | 久久午夜夜伦鲁鲁片无码免费| 国产制服丝袜91在线| 香蕉视频国产精品人| 久久人与动人物A级毛片| 成人无码区免费视频网站蜜臀| 日韩欧美中文字幕在线韩免费| 成人午夜久久| 天堂岛国av无码免费无禁网站| 国产亚洲精品自在久久不卡| 日韩一区精品视频一区二区| 综合色88| 成人国产一区二区三区| 国产日韩欧美一区二区三区在线| 99re热精品视频国产免费| 欧美成在线视频| 日韩国产无码一区| 亚洲婷婷丁香| 欧美在线免费| 色AV色 综合网站| 少妇精品久久久一区二区三区| 国产精品亚洲精品爽爽| 国产一级视频在线观看网站| 91po国产在线精品免费观看| 国产在线观看一区精品| 色噜噜狠狠狠综合曰曰曰| 欧美一级夜夜爽www| 午夜精品久久久久久久99热下载 | 青草免费在线观看| 综合社区亚洲熟妇p| 无码国产伊人|