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

面向隱私保護的異構數據庫集成中間件系統

2020-01-10 06:38:32申東凡
計算機技術與發展 2020年1期
關鍵詞:數據庫

申東凡,楊 庚

(1.南京郵電大學 計算機學院、網絡空間安全學院,江蘇 南京 210023;2.江蘇省大數據安全與智能處理重點實驗室,江蘇 南京 210023)

0 引 言

在大數據時代,傳統關系數據庫在對大量數據進行同時查詢時擴展性差,讀寫速度較慢。雖然數據庫分布式存儲的應用[1]和水平、垂直切分等技術能夠緩解上述問題,但數據遷移比較困難,對性能的要求和管理成本都相對較高。新興的非關系數據庫NoSQL[2-5]存儲靈活,模式自由,便于擴展,但每個NoSQL系統都有自己的API,往往不支持SQL和JDBC的標準,因此關系數據庫和NoSQL都不能全面高效地應對大數據時代的挑戰,兩者結合使用的方案應運而生?,F有的關系與NoSQL集成方案[6-7]的查詢語言沒有統一標準,系統的可移植性低,且關系數據庫沒有對隱私數據進行保護,不能保證數據的安全性。

針對數據安全面臨的威脅[8],隱私保護成為重要的研究內容,對隱私數據加密存儲是一種簡單可行的解決方案。文獻[9-10]提出的可搜索加密技術解決了傳統數據加密存儲在云端后,用戶無法直接操作密文數據的問題,提高了密文數據庫的檢索效率。現有的對數據庫操作系統層、數據庫管理系統DBMS(database management system)內核層以及DBMS外層的加解密服務都存在一定的缺陷。文獻[11-12]提出的數據庫中間件技術將上層應用與底層數據庫隔離,實現在業務層對數據的加密和更改操作,并且不會影響其他組建應用。

文中提出的中間件系統以標準SQL語言同時操作密文數據庫和NoSQL,實現異構數據庫的集成。其中關系數據庫存儲隱私數據,采用可搜索加密技術,NoSQL存儲非結構化數據。中間件不僅保障了數據的安全性和機密性,也為應用程序提供統一的接口,滿足水平可伸縮性的需要而不影響應用程序邏輯實現,可以更加高效地處理海量數據。

1 相關工作

在過去的幾十年里,關系系統因具有規范的查詢語言和接口標準、支持事務處理保持數據的一致性等特點,一直是數據存儲的主要形式。為了適應大數據時代海量數據處理,非關系系統被廣泛應用在許多領域來處理關系數據庫難以解決的問題。NoSQL系統擴展性較好,但是缺乏通用標準API和標準化查詢語言,這使得系統的可移植性降低。關系數據庫使用標準化SQL,有JDBC、ODBC等通用訪問接口,具有可移植性。為了充分利用SQL的價值,為新興的NoSQL數據庫提供SQL訪問具有很大的研究價值。

目前的研究成果主要集中在如何結合SQL與NoSQL系統以及標準化的API,文獻[13]中SQL查詢轉換使用正則表達式和規則直接分析字符串完成,而不是使用查詢解析器和翻譯器。文獻[14]提出了一個在關系模型中表示NoSQL數據的框架,以及將SQL查詢映射到NoSQL系統,但在此框架中,所有查詢操作都在SQL數據庫中執行,并將非關系數據映射到關系數據庫,占用了大量空間。

網絡時代數據激增使其存儲安全問題[15-16]亟待解決,數據在第三方平臺上可能會受到來自外部和內部的攻擊。Song等[17]研究的可搜索加密技術實現在不解密的情況下可執行密文查詢。麻省理工學院MIT研究提出的CryptDB[18-19]借助數據屬性分拆和中間件改寫查詢的設計實現了密文數據查詢,有效緩解了上述研究帶來的用戶主機負載大、對數據庫密文查詢支持度弱的問題,為使用數據庫管理系統(DBMS)的應用程序提供機密性。

2 面向隱私保護的異構數據庫集成中間件系統

NoSQL處理海量數據有強大功能,但實際應用中不能完全拋開關系數據庫,異構數據庫的集成,是一種可選方案。針對NoSQL沒有通用API和標準的查詢語言以及與關系數據庫的異構問題,考慮數據的安全性,文中設計并實現了一種面向隱私保護的異構數據庫集成中間件系統。該系統使用標準SQL統一操作密文數據庫和非關系數據庫,屏蔽底層數據庫的異構性。

面向隱私保護的異構數據庫集成中間件系統結構圖如圖1所示。

圖1 面向隱私保護的異構數據庫

其中數據存儲層包含兩種類型的數據庫:關系數據庫和NoSQL。其中關系數據庫使用MySQL為例,并對隱私數據采用可搜索加密算法加密,NoSQL選擇MongoDB,存儲非結構化數據。中間件用來屏蔽數據存儲層的異構性差異,提供統一的訪問接口,且文中對數據源的處理除了查詢操作,還支持插入、刪除、更新、連接等操作。

2.1 明密文數據庫映射

明文數據庫直接存儲到云端,隱私數據的安全性得不到保障,因此需要對關系數據庫中已有的明文數據進行加密,中間件實現明密文數據庫映射步驟如下:

2.1.1 獲取明文表信息

獲取數據庫所有表名,保存到數組中,由表名循環得到各個列名,嵌套查詢到數據內容,將其保存。

2.1.2 修改明文表的結構

使用可搜索加密算法對原有數據加密,該算法包含確定加密、保序加密、同態加密三種模型,原始表的字段需要被擴展和修改,須創建滿足密文結構的密文表。如:

用戶輸入語句為:

insert into tablename (column_1,column_2) values (value_1,value_2);

經過加密改寫后的語句為:

insert into tablename (mycolumn_1_DET,mycolumn_1_OPE,mycolumn_1_HOM,mycolumn_2_DET)

values(value_1_DET,value_1_OPE,value_1_HOM,value_2_DET);

原明文數據表的結構發生了變化,需要創建新的表存儲密文數據。

2.1.3 數據加密

讀取保存的明文數據,調用可搜索加密算法,循環批量加密插入對應的密文表,此過程與單純加密數據不同的是要保持原有數據的約束,保證明文表的主鍵在新的密文表中仍然有主鍵特性。

2.1.4 實現新舊數據庫的融合

刪除原有明文數據,用戶的所有操作都直接在密文表上執行,SQL改寫模塊將明文SQL改寫為可在密文上執行的操作SQL語句,整個映射過程對用戶透明,減少了用戶執行復雜操作的負擔。

具體過程如圖2所示。

圖2 明密文數據庫映射流程

2.2 中間件系統執行過程

中間件的核心模塊包括路由選擇模塊、SQL改寫模塊、加解密模塊、SQL解析模塊以及SQL轉換模塊。中間件執行流程如圖3所示。應用層傳來SQL請求,路由選擇模塊判斷該請求操作密文數據庫或NoSQL,若為密文數據庫請求,則進行SQL改寫,否則進行SQL解析和轉換,生成MongoDB可識別的操作語句,若是查詢操作,對結果進行翻譯和轉化,最后將統一格式的結果返回給用戶。

圖3 中間件執行過程

2.3 路由選擇模塊

該模塊主要實現對請求數據庫類型的判斷,使用表名來確定要訪問數據庫的類型,業務開發人員保證在同一域中數據庫不能建立名稱相同的表,以避免出現混亂。路由選擇模塊中存有路由信息表(RouteInfoTable),該表存儲不同數據庫的表名。分析SQL請求,對照表名與路由信息表的信息,判斷請求的數據庫類型,若為密文數據庫,則交由SQL改寫模塊,否則,對SQL進行解析和轉換。考慮數據量大的情況可能有很多表名,為了加快查詢速度,在路由選擇模塊緩存常用的表名,稱為路由信息緩存表(RouteInfoCacheTable),它是路由信息表的子表,用來存儲訪問頻率比較高的表名,這樣每次先匹配路由信息緩存表,減少查詢時間。

2.4 SQL解析模塊

SQL解析模塊將SQL語句轉化為抽象語法解析樹(abstract syntax tree,AST)。用戶輸入的SQL請求經過詞法和語法分析,輸出抽象語法樹,查詢解析器支持SELECT,INSERT,UPDATE和DELETE語句的標準SQL語法,以及內部外部連接,子查詢和GROUP BY,ORDER BY。

該模塊由三個部分組成:解析(parser)、抽象語法樹(AST)和抽象語法樹訪問(AST visitor)。

2.4.1 解 析

Parser將輸入文本轉換為抽象語法樹,包括詞法和語法分析。用戶輸入SQL請求,如:Select id,name,age from Student where score>90;首先詞法分析解析出語句中每個單詞,然后進行語法分析,使組合成的語句有一定的語法規則,語法解析器根據語法規則,解析出此語句的唯一含義。

2.4.2 抽象語法樹

抽象語法樹是SQL語句經過解析過程的詞法、語法分析后生成的,表示語言結構中的層次關系,形式化表示出語言中的語義。Select id,name,age from Student where score>90,轉換成對應的抽象語法樹如圖4所示,根據該樹狀結構,得出被查詢對象是id,name,age,查詢主體為Student,查詢條件為score>90,將SQL轉換成抽象語法樹,層次清晰,便于查找。

圖4 抽象語法樹

2.4.3 抽象語法樹訪問

抽象語法樹訪問的功能是遍歷AST,其目的是正確表達語義。該模塊使用VISITOR模式遍歷,從根節點開始,到最后一個葉子節點為止,在遍歷的過程中,不斷收集信息到一個上下文中。完成整個遍歷過程后,AST所表達的語法含義,被保存到上下文。

2.5 SQL轉換模塊

該模塊遍歷SQL解析模塊得到的內容,獲取其表名、字段名、查詢條件、操作方法、數據內容等相關信息,根據NoSQL語法,對應組合轉換生成MongoDB可識別的語句,在NoSQL上執行操作。關系數據庫的表名、行名、列名、數據分別對應于非關系數據庫MongoDB的集合名、文檔、字段、值等,根據此對應關系形成SQL與NoSQL語句的映射。

查詢語句

Select url from course where title="JAVA";

經過SQL轉換后的語句為:

db.course.find({"title":"JAVA"},

{"url":"https://www.atguigu.com"});

更新語句

Update course set url="https://www.icourse163.org/" where

title="MongoDB";

經過SQL轉換后的語句為:

db.course.update({title: "MongoDB"},

{$set:{url="https://www.icourse163.org/"}},

{multi: true });

2.6 SQL改寫模塊

該模塊的功能是對關系數據庫請求的SQL進行改寫,生成可在密文上直接執行的SQL語句。解析函數針對不同的查詢類型執行相應的操作,對Create、Select、Insert、Update、Delete中的明文數據進行加密,并且擴展、修改列名。對數值型數據,擴展為三列,分別用確定加密、保序加密、同態加密算法加密該列,對于字符型數據,只用確定加密算法。下面通過一個例子說明SQL語句改寫過程,更新員工表,用戶輸入:

update Employee set city='Nanjing'

whereEmployeeId=10;

經過SQL改寫模塊,上述語句輸出為:

UPDATE Employee SETytic_DET=

'9ur1uvonEfaJZ/8pAOFwuQ=='

WHERE dIeeyolpmE_DET=

'HRwGHDSkRhxgiAhq0g2b/w==';

EmployeeId=10屬于等值匹配的操作謂詞,解析函數調用加解密模塊對明文數字10使用等值加密模型進行加密,得到密文'HRwGHDSkRhxgiAhq0g2b/w==',列名為city,更新值為'Nanjing',因為city對應的數據類型為字符型,所以僅將該列改寫為等值加密模型下的列名city_DET,并將值'Nanjing'使用確定加密算法得到密文'9ur1uvonEfaJZ/8pAOFwuQ=='。輸出改寫后的SQL語句,直接在密文上進行增刪改查操作。

2.7 加解密模塊

該模塊在中間件中的功能是對關系數據庫中的隱私數據進行加解密,為了實現直接在密文數據上執行SQL查詢,利用了基于CryptDB的洋蔥加密模型,加密模型如圖5所示。

圖5 加密模型

2.7.1 等值加密模型

等值加密模型用來實現等值比較,該模型采用兩層結構,內層使用確定加密算法(deterministic encryption algorithm,DEA)生成內層密文,外層使用隨機加密算法(random encryption algorithm,REA)再次對數據進行加密。在進行兩個密文等值比較時,中間件先將外層密文解密,完成等值比較后再進行隨機加密。使用兩層加密結構在保證數據安全性的同時,還支持密文的等值比較。

2.7.2 保序加密模型

保序加密模型用于實現直接在密文上進行順序比較。該模型采用單層加密,使用保序加密算法(order preserving encryption algorithm,OPEA)加密后,密文能夠保持明文的順序關系。

2.7.3 同態加密模型

同態加密模型用于實現在密文上進行數據庫操作中的求和以及求平均數。該模型也采用單層加密,使用同態加密算法(homomorphic encryption algorithm,HEA)進行加乘運算時,解密后的密文運算結果與直接在明文上進行加乘運算結果等同。

2.8 結果解析模塊

中間件連接MySQL客戶端,返回的結果要以關系數據庫的格式呈現。結果解析轉換模塊解析查詢返回的文檔形式的結果,獲取集合名、文檔、字段、值等,分別對應于關系數據庫的表名、行、列名、數據。經過此模塊對應轉換合成標準的關系數據庫格式,將獲取的數據記錄組合為一個單一的查詢結果返回給用戶。下面通過一個例子說明,假設MongoDB查詢結果為:

{"_id":1999,"title":"MongoDB Demo","description":"database","by":"baidu point","url":"http://www.baidu.com/mongodb/","new_field":""}

經過解析翻譯模塊返回統一的關系數據庫格式如圖6所示。

id1999titleMongoDB Demodescriptiondatabasebyyiibai pointurlhttp://www.yiibai.com/mongodb/new_field

圖6 關系數據庫格式

3 系統實驗及性能分析

3.1 系統實驗

分別對中間件的性能以及密文數據庫加解密時間進行測試分析。

系統采用Java編程語言,在Windows10操作系統上安裝MySQL和MongoDB作為SQL與NoSQL集成存儲架構的數據存儲層,其中MongoDB采用自動分片的Shard模式。

開發環境如下:

硬件:處理器為Intel Core i5-3230M,內存為6 GB;

軟件:操作系統為Windows 10,Java開發環境為JDK1.8,MySQL版本為5.7.0,MongoDB版本為3.0.1 2008R2Plus SSL。

3.2 性能測試與分析

3.2.1 中間件性能測試

客戶端訪問MySQL數據庫和MongoDB服務。使用JDBC訪問數據庫服務器,該實驗對SELECT操作在有無中間件的情況下分別進行測試,每個SELECT操作的間隔為10 ms,查詢表中包含10個字段。

圖7描述了密文數據庫使用中間件前后吞吐量與客戶端連接數的關系。不使用中間件時,應用程序直接連接密文數據庫,執行SQL請求。添加中間件后,對SQL語句進行分析、路由、改寫等語義轉換,這些邏輯操作會帶來一些性能損失,吞吐量隨著客戶端連接數的增加而增加,當客戶端連接數為60時,吞吐量達到最大值,加入中間件后,系統的吞吐量將會平均每秒減少1 000條記錄。

圖7 客戶端連接數與吞吐量的關系

圖8 客戶端連接數與響應時間的關系

圖8描述的是密文數據庫使用中間件前后響應時間與客戶端連接數的關系。添加中間件后,平均響應時間將會增加11 ms,邏輯處理帶來的性能損失在可接受的范圍之內。使用中間件可以在水平方向對數據庫進行擴展,且加解密和集成異構數據庫的業務在中間件完成,不需要更改數據庫底層源碼,帶來便利性和可擴展性。

3.2.2 mongo-jdbc與中間件性能對比測試

mongo-jdbc是MongoDB的官方開源項目,它可以實現一些簡單的SQL操作,但不支持嵌套查詢、聚合查詢等。該實驗分別通過中間件和mongo-jdbc向非關系數據庫MongoDB中插入數據,比較兩者的性能。

圖9比較了使用中間件和mongo-jdbc在執行插入時的性能。mongo-jdbc相比于中間件大約有150 ms的平均延遲,使用中間件比mongo-jdbc有顯著的性能提高且支持Group by等復雜查詢,在功能和性能上都優于mongo-jdbc,進一步證明了該中間件系統的優勢。

圖9 mongo-jdbc與中間件插入數據時間對比

3.2.3 關系數據庫加解密測試

實驗主要測試中間件系統對明文數據的加密情況,數據集選用美國勞工部統計局官方發布的數據。測試分兩種情況:第一種創建表中的字段為10個int型,每張表的數據量為1 000;第二種創建表中的字段為10個varchar型,每張表的數據量也為1 000。將數據集對應的數據導入數據庫,執行中間件系統,明文表整體映射為密文表。

圖10 不同數據類型執行加密時間對比

圖10描述了中間件對不同類型的明文表執行明密文映射的時間消耗。隨著數據表數量的增加,執行時間相應增加,圖中顯示10個int類型字段的映射速度比varchar類型要慢,這是由于需要對int類型的數據進行保序和同態加密,而對varchar類型數據只要進行確定加密,所以執行完成時間比int型少。

4 結束語

關系數據庫與非關系數據庫的集成是大數據時代處理數據的重要方法,文中提出了一種面向隱私保護的異構數據庫集成中間件系統設計方案,該中間件實現對明文數據庫的整體加密以及統一操作密文數據庫和NoSQL。與其他中間件系統相比,該系統用SQL語言透明操作關系數據庫和非關系數據庫,支持增刪改查和Group by等操作,返回統一的關系數據庫格式,提供標準的API,并且關系數據庫采用可搜索加密,保證數據的安全性和機密性,支持用戶直接在密文上執行操作。仿真結果表明,該中間件系統可以完成對關系數據庫的加密,實現SQL統一操作密文數據庫和非關系數據庫,性能損耗在可接受范圍內。

猜你喜歡
數據庫
數據庫
財經(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麻豆| 亚洲国产成人自拍| 婷婷亚洲最大| 伊人婷婷色香五月综合缴缴情| 97精品国产高清久久久久蜜芽| 欧美精品不卡| 99伊人精品| 99久久人妻精品免费二区| 九九热精品在线视频| 无码丝袜人妻| 午夜限制老子影院888| 四虎成人在线视频| 又爽又大又光又色的午夜视频| 国产91视频免费观看| 最新亚洲人成无码网站欣赏网| 亚洲成在人线av品善网好看| 国产手机在线ΑⅤ片无码观看| 国产男女XX00免费观看| 亚洲美女高潮久久久久久久| 91视频精品| 国产精品自在自线免费观看| 国产欧美在线观看精品一区污| 国产小视频a在线观看| 人禽伦免费交视频网页播放| 国产91无码福利在线| 精品国产成人a在线观看| 国产原创自拍不卡第一页| 亚洲综合第一页| 色综合久久久久8天国| 亚洲成a人片7777| 男人天堂亚洲天堂| 国产伦精品一区二区三区视频优播 | 色婷婷狠狠干| 欧美午夜在线观看| 夜夜高潮夜夜爽国产伦精品| 日日摸夜夜爽无码| 欧美日韩国产精品va| 国产乱人免费视频| 亚洲va精品中文字幕| 日韩在线影院| 国产原创第一页在线观看| 国产福利在线观看精品| 国产成人AV男人的天堂| 在线观看国产网址你懂的| 97在线视频免费观看| 国产第一色| 久久精品aⅴ无码中文字幕| 丁香婷婷激情网| 青青操视频免费观看| 久久综合伊人77777| 日本不卡视频在线| 人妻精品久久久无码区色视| 午夜啪啪福利| 久久天天躁夜夜躁狠狠| 麻豆AV网站免费进入| 免费jizz在线播放| 国产成人凹凸视频在线| 免费A级毛片无码无遮挡| 天天躁日日躁狠狠躁中文字幕| 97影院午夜在线观看视频| 福利国产微拍广场一区视频在线 | 国产呦精品一区二区三区下载| 久久精品一品道久久精品| 久久99国产综合精品1| 啪啪永久免费av| 中文一区二区视频| 黄色a一级视频| 亚瑟天堂久久一区二区影院| 午夜成人在线视频| 亚洲经典在线中文字幕| 免费又黄又爽又猛大片午夜| 日本少妇又色又爽又高潮| 又黄又爽视频好爽视频| 亚洲综合色婷婷| 久久久久亚洲精品成人网| 久久亚洲黄色视频| 第一页亚洲| 又黄又湿又爽的视频| 国产麻豆精品久久一二三| 欧美人在线一区二区三区| 97影院午夜在线观看视频|