葉清明 劉曉燕* 付曉東,2
1(昆明理工大學(xué)信息工程與自動(dòng)化學(xué)院 云南 昆明 650500)2(云南省計(jì)算機(jī)技術(shù)應(yīng)用重點(diǎn)實(shí)驗(yàn)室 云南 昆明 650500)
基于MDA的SQLite碎片數(shù)據(jù)清除技術(shù)
葉清明1劉曉燕1*付曉東1,2
1(昆明理工大學(xué)信息工程與自動(dòng)化學(xué)院 云南 昆明 650500)2(云南省計(jì)算機(jī)技術(shù)應(yīng)用重點(diǎn)實(shí)驗(yàn)室 云南 昆明 650500)
清除SQLite數(shù)據(jù)庫中含有用戶重要信息的碎片數(shù)據(jù)是保障用戶信息安全的重要手段。在國內(nèi)尚未有數(shù)據(jù)清除標(biāo)準(zhǔn)的情況下,提出一種基于MDA(Model Driven Architecture)的SQLite碎片數(shù)據(jù)清除技術(shù)。該技術(shù)將SQLite主文件映射成頁位圖集合,并根據(jù)頁位圖進(jìn)行碎片清除,以提高碎片數(shù)據(jù)的完整性以及碎片數(shù)據(jù)定位和清除的準(zhǔn)確性。同時(shí),采用基于MDA的EMF(Eclipse Modeling Framework)框架建立SQLite碎片數(shù)據(jù)清除技術(shù)的平臺(tái)無關(guān)模型,使用MDA工具解決該技術(shù)跨平臺(tái)軟件復(fù)用的問題。
SQLite 碎片數(shù)據(jù) 清除 信息安全 MDA
SQLite 是獨(dú)立、無服務(wù)、零配置、事務(wù)性的SQL數(shù)據(jù)庫引擎,是在各種嵌入式平臺(tái)上廣泛使用的數(shù)據(jù)庫之一。Adobe的 Photoshop Lightroom、 Airbus的 A350 XWB以及Android、 iPhone等智能手機(jī)中的大部分應(yīng)用都采用SQLite數(shù)據(jù)庫作為數(shù)據(jù)的存儲(chǔ)和管理方式。
在使用SQLite過程中,系統(tǒng)提供的刪除API只對(duì)數(shù)據(jù)做刪除標(biāo)記,并沒有對(duì)物理層上的數(shù)據(jù)做清除,因此大量的碎片數(shù)據(jù)會(huì)駐留在SQLite的物理層。這些碎片數(shù)據(jù)中殘留有大量用戶信息,會(huì)涉及到個(gè)人、企業(yè)、軍隊(duì)、國家機(jī)關(guān)尤其是保密機(jī)關(guān)的重要隱私和機(jī)密,對(duì)用戶的隱私安全乃至國家安全構(gòu)成嚴(yán)重的威脅。例如,在Android手機(jī)中的短信、通話記錄等大部分應(yīng)用在刪除數(shù)據(jù)后,仍然有很大的概率被恢復(fù)。筆者經(jīng)過對(duì)碎片數(shù)據(jù)的研究分析得出,數(shù)據(jù)庫碎片數(shù)據(jù)量會(huì)隨著數(shù)據(jù)庫的增大而增多。SQLite引擎沒有提供具體API或命令對(duì)物理層上的碎片數(shù)據(jù)做專門的清除。SQLite的vacuum命令通過將數(shù)據(jù)庫中的數(shù)據(jù)以頁為單位覆寫到空閑頁中,以重新利用數(shù)據(jù)庫中的空閑頁。這種寫覆蓋方式只對(duì)空閑頁具有一定的清除效果,而數(shù)據(jù)庫中其它頁的碎片數(shù)據(jù)仍然存在。在此背景下,需要一種徹底清除SQLite物理層碎片數(shù)據(jù)的技術(shù)以保障用戶的信息安全。
在國內(nèi),尚未形成數(shù)據(jù)清除標(biāo)準(zhǔn),文獻(xiàn)[1]對(duì)硬盤數(shù)據(jù)的清除與安全性研究對(duì)數(shù)據(jù)清除有一定的指導(dǎo)意義。針對(duì)SQLite物理層數(shù)據(jù)的研究主要集中在數(shù)據(jù)恢復(fù)領(lǐng)域,對(duì)數(shù)據(jù)清除領(lǐng)域涉及較少。文獻(xiàn)[2-6]描述的SQLite刪除數(shù)據(jù)恢復(fù)方法中也需要對(duì)SQLite底層碎片數(shù)據(jù)進(jìn)行研究,但其主要針對(duì)BTree頁自由塊數(shù)據(jù)的研究,而沒有對(duì)SQLite中的其他頁進(jìn)行解析。在國外,SQLite物理層數(shù)據(jù)的研究也是針對(duì)數(shù)據(jù)恢復(fù)領(lǐng)域,文獻(xiàn)[7-8]中講述了對(duì)SQLite溢出頁碎片數(shù)據(jù)的分析。然而,上述研究都不能清晰完整地表示SQLite碎片數(shù)據(jù)的分布狀態(tài),且不能直接用于數(shù)據(jù)清除領(lǐng)域。
由于在Andriod、iPhone等平臺(tái)下的大多數(shù)應(yīng)用都采用SQLite對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)和管理,這些平臺(tái)的多樣性導(dǎo)致清除不同平臺(tái)上的SQLite碎片數(shù)據(jù)會(huì)增加重復(fù)開發(fā)的工作量,降低了開發(fā)效率。OMG提出的模型驅(qū)動(dòng)架構(gòu)MDA很好地解決了軟件復(fù)用的問題。MDA中系統(tǒng)的功能需求被描述為機(jī)器可讀、獨(dú)立于平臺(tái)且標(biāo)準(zhǔn)化存儲(chǔ)的模型,再通過對(duì)不同平臺(tái)或?qū)崿F(xiàn)技術(shù)的模型之間映射規(guī)則的定義,實(shí)現(xiàn)了抽象模型到代碼的轉(zhuǎn)換[9-13]。由此,引入MDA到SQLite碎片數(shù)據(jù)清除技術(shù)以解決不同平臺(tái)下軟件復(fù)用的問題。
本文首先介紹SQLite物理層布局,然后詳細(xì)介紹筆者對(duì)SQLite物理層碎片數(shù)據(jù)的研究結(jié)論以及將SQLite主文件映射到位圖算法,并給出SQLite碎片數(shù)據(jù)清除技術(shù)SFDET(SQLite Fragment Data Erasure Technique)的業(yè)務(wù)流程。最后針對(duì)SFDET的業(yè)務(wù)功能采用基于EMF的Eclipse Modeling Tools 可視化工具建立SFDET的平臺(tái)無關(guān)模型PIM(Platform Independent Model),通過工具提供的模型轉(zhuǎn)換和代碼生成技術(shù)實(shí)現(xiàn)了基于MDA的SFDET框架代碼的生成。
SQLite最終將用戶的數(shù)據(jù)存儲(chǔ)在“主數(shù)據(jù)庫文件”的單文件中,本文稱為主文件,頁是其基本組成單位,頁從1開始編號(hào)且每頁大小相同。相關(guān)用戶數(shù)據(jù)存儲(chǔ)在表和索引中,并使用master表來記錄所有表和索引的元數(shù)據(jù)。
SQLite主文件包含BTree頁、溢出頁、空閑頁,每一個(gè)頁的類型唯一。Btree頁又包括索引內(nèi)部頁、索引葉子頁、表內(nèi)部頁和表葉子頁;空閑頁包括空閑枝干頁和空閑葉子頁。SQLite使用不同的數(shù)據(jù)結(jié)構(gòu)來管理這些不同類型的頁,其中,索引采用B-tree管理索引內(nèi)部頁和索引葉子頁;表采用B+tree管理表內(nèi)部頁和表葉子頁;空閑頁用空閑鏈表的方式管理空閑枝干頁,在每個(gè)空閑枝干頁下又擁有其空閑葉子頁指針數(shù)組;溢出頁采用鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)。
Btree頁中每一條數(shù)據(jù)稱為單元,不同類型的Btree頁其單元格式不同。當(dāng)Btree頁的某個(gè)單元數(shù)據(jù)量超過該Btree頁負(fù)載時(shí),會(huì)產(chǎn)生該單元的一個(gè)或多個(gè)溢出頁,只有表內(nèi)部頁沒有溢出頁。文獻(xiàn)[14]給出了主文件的官方定義。
筆者在某手機(jī)隱私清除項(xiàng)目中,為了清除SQLite主文件中的碎片數(shù)據(jù),使用Winhex工具對(duì)Android平臺(tái)下的瀏覽器、通話記錄、通訊錄、短信、百度地圖等含用戶高危隱私數(shù)據(jù)應(yīng)用的數(shù)據(jù)庫進(jìn)行研究分析,得出SQLite碎片數(shù)據(jù)來源與分布。在此基礎(chǔ)上提出將主文件映射成頁位圖集合的算法,最后根據(jù)頁位圖集合對(duì)SQLite主文件中的碎片數(shù)據(jù)進(jìn)行清除。
2.1 SQLite碎片數(shù)據(jù)來源與分布
通過對(duì)SQLite系統(tǒng)刪除API的原理的研究以及大量的手機(jī)app數(shù)據(jù)庫分析,總結(jié)得到碎片數(shù)據(jù)的兩個(gè)重要來源: ①用戶對(duì)數(shù)據(jù)庫中的用戶數(shù)據(jù)執(zhí)行刪除操作后,被刪除的數(shù)據(jù)在物理層沒有被清除。②頁A與頁B之間的覆蓋會(huì)導(dǎo)致B的數(shù)據(jù)出現(xiàn)在A的未分配區(qū)。
進(jìn)一步對(duì)大量碎片數(shù)據(jù)的統(tǒng)計(jì)發(fā)現(xiàn),SQLite用戶數(shù)據(jù)的刪除過程以及SQLite頁與頁之間的寫覆蓋方式,都會(huì)導(dǎo)致碎片數(shù)據(jù)在數(shù)據(jù)庫主文件中呈散列狀排布。筆者采用圖1描述了對(duì)Bree頁、溢出頁和空閑枝干頁中碎片數(shù)據(jù)分布的研究結(jié)果。其中,BTree頁的碎片數(shù)據(jù)會(huì)出現(xiàn)在其未分配區(qū)、自由塊以及頁內(nèi)碎片中;溢出頁的頁內(nèi)未占用區(qū)域和空閑枝干頁的未占用區(qū)域均為碎片數(shù)據(jù),空閑葉子頁全為碎片數(shù)據(jù)。后文所述的空閑頁是指空閑枝干頁。
圖1 Btree頁、溢出頁和空閑頁的碎片分布圖
2.2 SQLite主文件到頁位圖集合的映射
在SFDET中為了能精確定位主文件中的碎片數(shù)據(jù),并將其清晰地提供給清除模塊,筆者從數(shù)據(jù)有效性的角度出發(fā),把SQLite數(shù)據(jù)庫中的數(shù)據(jù)分為有效數(shù)據(jù)和無效數(shù)據(jù),使用位圖中的一位來表示一字節(jié)數(shù)據(jù)的有效性,其中1表示有效數(shù)據(jù),0表示無效數(shù)據(jù),由此,可將SQLite主文件映射成頁位圖集合。為了實(shí)現(xiàn)該映射,給出如下定義:
定義1 非空集合S={s1, …,si, …,sn},表示SQLite主文件。其中n=主文件大小/頁大小,1≤i≤n;si表示第i頁的頁內(nèi)容。
定義2btpi=
定義3 非空集合B={btp1, …,btpj, …,btpn},表示由定義2中頁位圖btp構(gòu)成的頁位圖集合。其中n=主文件大小/頁大小,1≤j≤n;btpj表示第j頁的頁位圖。
使用上述定義,構(gòu)成從SQLite主文件到頁位圖集合的映射關(guān)系f:S->B。由于SQLite主文件包含3種類型的頁,f的實(shí)現(xiàn)需要3個(gè)映射算法。采用映射算法MapBtreePg、MapOvfwPg和MapFreePg分別實(shí)現(xiàn)Btree頁、溢出頁和空閑頁的映射關(guān)系f。
在映射算法的偽代碼中,Setbmp(num ,start , len, valid)函數(shù)的參數(shù)依次表示頁號(hào)、數(shù)據(jù)的頁內(nèi)偏移、數(shù)據(jù)長度、有效位標(biāo)志,其作用是設(shè)置定義2中的頁位圖btp,其中pn=num,位圖塊bmp內(nèi)從start位置開始長度為len的一段位圖有效性置為valid。
算法 1MapBtreePg(PgNum,PgSize)
Input: PgNum, PgSize
//輸入頁號(hào)、頁大小
Output: btp
//輸出位圖
01 call Setbmp(PgNum ,0, PgSize,0)
//初始化頁位圖
02 FreeblkPtr=first freeblock offset
//取自由塊的首指針
03 while FreeblkPtr != 0x0000 do
04 call Setbmp(PgNum ,FreeblkPtr,2,1)
05 FreeblkPtr=next freeblock offset
//取下一個(gè)自由塊
06 endwhile
07 while I in cell count do
08 get CellLenth
//獲取單元長度
09 if cell has overflow page
10 get OvfwPgNum and OvfwBytes
//取溢出頁號(hào)和溢出字?jǐn)?shù)
11 call MapOvfwPg(OvfwPgNum, PgSize, OvfwBytes)
12 call Setbmp(PgNum ,cell[i], CellLenth,1)
//將單元有效性置1
13 endwhile
14 call Setbmp(PgNum ,0, PgHeaderLenth,1)
//將頁頭有效性置1
15 output btp
算法 2 MapOvfwPg(OvfwPgNum, PgSize, OvfwBytes)
Input: OvfwPgNum, PgSize, OvfwBytes
//頁號(hào)、大小、溢出字?jǐn)?shù)
Output: btp
//輸出位圖
01 call Setbmp(OvfwPgNum,0, PgSize, 0)
02 NextOvfwPg= first 4 bytes
//獲取下一個(gè)溢出頁號(hào)
03 if NextOvfwPg=0 and OvfwBytes<=PgSize-4
04 call Setbmp(OvfwPgNum,0, 4+OvfwBytes,1)
05 else if NextOvfwPg != 0 and OvfwBytes>PgSize-4
06 call Setbmp(OvfwPgNum,0, PgSize,1)
07 OvfwBytes -=PgSize-4
//計(jì)算下一個(gè)溢出字節(jié)數(shù)
08 call MapOvfwPg(NextOvfwPg, PgSize, OvfwBytes)
09 else
call Setbmp(OvfwPgNum,0, PageSize,1)
10 endif
11 output btp
算法 3 MapFreePg(FstTrkPgNum, PgSize)
Input: FstTrkPgNum, PgSize
//輸入第一個(gè)空閑枝干頁號(hào)、頁大小
Output: btp
//輸出位圖
01 call Setbmp(FstTrkPgNum,0, PgSize, 0)
02 NextTrkPg= first 4 bytes
//獲取下一個(gè)空閑枝干頁
03 FreeLfPgCnt =next 4 bytes
//獲取空閑葉子頁個(gè)數(shù)
04 FreeLfPg[]=contents from offset 8 to (8+ FreeLf-PgCnt*4)
05 for i in FreeLfPgCnt do
06 call Setbmp(FreeLfPg[i],0, PgSize,0)
//將空閑頁有效性置0
07 if NextTrkPg!=0
08 call MapFreePg (NextTrkPg, PgSize)
09 endif
10 call Setbmp(FirstTrkPgNum,0, 8+FreeLfPgCnt*4,1)
11 output btp
2.3 SFDET的業(yè)務(wù)流程
本節(jié)給出的SFDET流程如圖2所示,master表、表和索引的解析過程都采用先序遍歷BTree頁的方式解析,在此不再贅述先序遍歷的流程。在具體解析某個(gè)BTree頁時(shí),使用BTree映射算法MapBtreePg。此外,在解析空閑頁鏈表的過程中,使用空閑頁映射算法MapFreePg。
圖2 SQLite碎片數(shù)據(jù)清除技術(shù)流程圖
為了能跨平臺(tái)使用SFDET技術(shù),采用MDA工具對(duì)該技術(shù)的業(yè)務(wù)領(lǐng)域進(jìn)行建模。筆者選用EMF框架對(duì)其建模,以實(shí)現(xiàn)模型到Java代碼的轉(zhuǎn)換。
3.1 EMF描述的SFDET-PIM
EMF是Eclipse的模型框架,它是MDA的—個(gè)實(shí)現(xiàn)[15]。使用基于EMF的Eclipse Modeling Tools可視化工具,對(duì)SFDET進(jìn)行建模,抽象出的SFDET主框架類圖PIM如圖3所示,類的功能介紹如下:
SQLiteIO類提供對(duì)數(shù)據(jù)庫進(jìn)行加載、關(guān)閉、讀寫的函數(shù)。ReadPage函數(shù)和WritePage函數(shù)分別用于對(duì)指定頁號(hào)的讀寫。LoadFile函數(shù)和CloseFile函數(shù)實(shí)現(xiàn)對(duì)SQLite文件的加載和卸載。
SQLiteControl類提供解析SQLite數(shù)據(jù)庫必要的參數(shù)和解析函數(shù)。InitialSQLite函數(shù)用于初始化參數(shù),ParseBtree函數(shù)解析表和索引,ParseFreeList函數(shù)解析空閑頁,ClearSQLiteFrag-ment函數(shù)清除指定頁的數(shù)據(jù)。
SQLiteBitMap類提供對(duì)位圖的管理,m_BitMapArray屬性用于存放由SQLitePage類解析后生成的位圖,ClearBitmap函數(shù)用于對(duì)位圖的清零和回收。
SQLiteBtree是一個(gè)抽象類, 提供ParseBtree-Page抽象函數(shù)對(duì)某一個(gè)數(shù)據(jù)表或索引表解析, GetPageProduct函數(shù)生成具體的SQLitePage對(duì)象。
抽象類SQLitePage提供對(duì)某一個(gè)Btree頁解析的抽象函數(shù)ParsePage,并使用CreatPageBitmap將解析的結(jié)果映射成位圖。
SQLiteCell也是一個(gè)抽象類,它負(fù)責(zé)對(duì)某一個(gè)Btree頁中的單元進(jìn)行解析,抽象函數(shù)ParseCell完成這一解析。
圖3 SFDET主框架PIM
圖4是SQLiteBtree、SQLitePage、SQLiteCell抽象類泛化子類的PIM,子類通過實(shí)現(xiàn)其父類的抽象函數(shù)具體地實(shí)現(xiàn)各個(gè)頁的解析。單元進(jìn)行解析,抽象函數(shù)ParseCell完成這一解析。
圖4 抽象類泛化PIM
3.2 EMF的模型轉(zhuǎn)換和代碼生成
在基于EMF的Eclipse Modeling Tools工具中, 首先將PIM模型描述為如圖4所示的ecore 模型并存放在.ecore文件中,利用其模型轉(zhuǎn)換器將.ecore模型轉(zhuǎn)化為平臺(tái)相關(guān)模型(Platform Specific Model, PSM),即genmodel模型,然后以genmodel模型為輸入,使用JET利用模板生成java代碼。每個(gè)類模型產(chǎn)生一個(gè)Java接口和一個(gè)Java實(shí)現(xiàn)。在類模型中,將每個(gè)屬性映射成包含具體數(shù)據(jù)類型的Java類屬性,同時(shí)為每個(gè)屬性根據(jù)其修飾符的不同自動(dòng)生成某個(gè)或全部的set()/get()方法。類模型中所有方法只生成空的函數(shù)體,具體的內(nèi)容通過開發(fā)人員在此基礎(chǔ)上進(jìn)行函數(shù)體的編寫。
該技術(shù)已運(yùn)用到某手機(jī)隱私清除軟件產(chǎn)品中,并對(duì)Android手機(jī)下的通話記錄、通訊錄、短信、QQ、百度地圖等含用戶高危隱私數(shù)據(jù)應(yīng)用的數(shù)據(jù)庫做了充分的實(shí)驗(yàn)及測(cè)試,結(jié)果如表1所示。
表1 碎片數(shù)據(jù)清除前后對(duì)比
表1中數(shù)據(jù)來自某用戶日常使用的手機(jī),360衛(wèi)士app僅有掃描刪除短信以及刪除通話記錄功能。在未作清除以前,通過360衛(wèi)士能發(fā)現(xiàn)刪除的短信、通話記錄等信息。同時(shí),通過該技術(shù)的產(chǎn)品進(jìn)行掃描,能夠掃描更多的刪除短信和通話記錄,原因在于該技術(shù)對(duì)溢出頁和索引頁、以及空閑頁進(jìn)行了全面掃描。進(jìn)一步研究發(fā)現(xiàn),除了刪除的信息,還可能在碎片數(shù)據(jù)中掃描到“正常數(shù)據(jù)”的信息,這是因?yàn)椤罢?shù)據(jù)”來源于頁之間的覆蓋,也進(jìn)一步說明了數(shù)據(jù)恢復(fù)和數(shù)據(jù)清除的差異,即數(shù)據(jù)恢復(fù)僅關(guān)注一條數(shù)據(jù)的恢復(fù),數(shù)據(jù)清除更傾向于全部碎片。
在使用該技術(shù)的產(chǎn)品進(jìn)行清除以后,仍然能夠掃描到極少量的殘缺信息,通過進(jìn)一步研究發(fā)現(xiàn),這些殘缺信息并非是未徹底清除的結(jié)果,而是應(yīng)用程序緩存數(shù)據(jù)再次寫進(jìn)了數(shù)據(jù)庫,從而對(duì)結(jié)果產(chǎn)生了影響。
在實(shí)踐中發(fā)現(xiàn),絕大多數(shù)app的數(shù)據(jù)庫碎片均未作處理,目前,常用app中只有騰訊公司的微信,在數(shù)據(jù)刪除后,對(duì)刪除數(shù)據(jù)做了處理,同是其旗下的QQ卻未作處理。盡管QQ數(shù)據(jù)庫是加密的,但仍然被破解,并能明文取出刪除數(shù)據(jù)。
SQLite碎片數(shù)據(jù)清除技術(shù)在信息安全領(lǐng)域是一個(gè)新型技術(shù),該技術(shù)采用位圖映射方法能徹底清除SQLite數(shù)據(jù)庫中的碎片數(shù)據(jù),從而充分保護(hù)用戶的隱私,尤其是保證了用戶對(duì)數(shù)據(jù)進(jìn)行的刪除操作是真正意義上的刪除。同時(shí),結(jié)合MDA思想建立該技術(shù)的PIM,以提高其可移植性和開發(fā)效率。
該技術(shù)也存在著不足,沒有對(duì)SQLite內(nèi)存數(shù)據(jù)庫以及-wal文件進(jìn)行研究,從而導(dǎo)致清除某些app數(shù)據(jù)庫的結(jié)果受到影響。未來的工作是將該技術(shù)用于SQLite的-wal文件的碎片清除。
[1] 周開明, 趙強(qiáng), 張曉, 等. 數(shù)據(jù)殘留的清除與安全性的研究[J]. 科學(xué)技術(shù)與工程, 2006, 6(17):2769-2771.
[2] 方冬蓉, 張秋余, 董瑞洪, 等. Android系統(tǒng)刪除數(shù)據(jù)恢復(fù)方法研究[J]. 計(jì)算機(jī)工程, 2014, 40(10):275-280.
[3] 張開翔, 周安民. iPhone短信刪除數(shù)據(jù)恢復(fù)方法的研究[J]. 現(xiàn)代計(jì)算機(jī), 2015(1):3-8.
[4] 劉瓊, 葉猛. 基于SQLite的iPhone 數(shù)據(jù)恢復(fù)方法研究[J]. 信息網(wǎng)絡(luò)安全, 2013(11):90-93.
[5] 沙晶, 蔡立明. SQLite數(shù)據(jù)庫結(jié)構(gòu)分析在司法鑒定中的應(yīng)用[J]. 中國司法鑒定, 2013(6):73-78.
[6] 陳明輝, 方均灘, 吳世雄. 對(duì)SQLite中刪除的數(shù)據(jù)進(jìn)行恢復(fù)的方法和裝置:中國, CN104376091 A[P]. 2015.
[7] Jeon S, Bang J, Byun K, et al. A recovery method of deleted record for SQLite data-base[J]. Personal and Ubiquitous Computing, 2012, 16(6):707-715.
[8] Lee G W, Yang S J, Hwang H U, et al. A Recovery Scheme for the Deleted Overflow Data in SQLite Database[J]. Journal of Korean Institute of Information Technology, 2012, 10(11):143-153.
[9] 曾一, 周吉, 孫政, 等. 支持MDA的設(shè)計(jì)模式建模與模型轉(zhuǎn)換方法研究[J]. 計(jì)算機(jī)工程與應(yīng)用, 2012, 48(1):76-80.
[10] 王永濤, 劉勇. 基于MDA的模型轉(zhuǎn)換研究與應(yīng)用[J]. 計(jì)算機(jī)工程, 2011, 37(16):84-85,103.
[11] 侯金奎, 萬建成, 張玉艷. 一種支持MDA的PIM建模方法[J]. 計(jì)算機(jī)工程, 2007, 33(8):71-73.
[12] OM. Meta object facility core specification v2.0[OL]. [2015-08-03]. http://www.om.org/cgi-bin/apps/doc?forma/06-01-01.
[13] OM. Unified modeling language: Superstructure v2.0[OL]. [2015-7-21]. http://www.omg.org/docs/formal/05-07-04.
[14] SQLite Official Documents. The SQLite Database File For-mat[OL]. [2015-07-25]. http://www.sqlite.org/fileformat2.html.
[15] Eclipse Juno. EMF Developer Guide[OL]. [2015-08-15]. http://help.eclipse.org/helios/index.jsp.
SQLITE FRAGMENT DATA ERASURE TECHNIQUE BASED ON MDA
Ye Qingming1Liu Xiaoyan1*Fu Xiaodong1,2
1(FacultyofInformationEngineeringandAutomation,KunmingUniversityofScienceandTechnology,Kunming650500,Yunnan,China)2(YunnanKeyLaboratoryofComputerTechnologyApplications,Kunming650500,Yunnan,China)
Erasing the fragment data which contains the user’s significant information in SQLite database is an important measure to ensure information security. In the case of nodata eliminating standard, an SQLite fragment data erasure technique based on MDA is proposed. This technique maps the SQLite main file to a bitmap collection that helps to erase the fragment, which improves accuracy of the fragment data location and the integrity. At the same time, this measure builds the platform independent model of the method which uses EMF based on MDA and uses MDA tools that improves the reusability of the technique in different platform.
SQLite Fragment data Erasure Information Security MDA
2015-10-24。國家自然科學(xué)基金項(xiàng)目(61462056);云南省應(yīng)用基礎(chǔ)研究計(jì)劃重點(diǎn)項(xiàng)目(2014FA028)。葉清明,碩士生,主研領(lǐng)域:軟件工程,信息安全。劉曉燕,副教授。付曉東,教授。
TP311.1
A
10.3969/j.issn.1000-386x.2017.01.009