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

嵌入式數(shù)據(jù)庫(kù)SQLite的安全機(jī)制分析與設(shè)計(jì)

2013-12-31 00:00:00孫世剛
消費(fèi)電子·下半月 2013年10期

摘 要:針對(duì)開(kāi)源嵌入式數(shù)據(jù)庫(kù)SQLite存在的安全問(wèn)題,設(shè)計(jì)了一套可行的安全機(jī)制。將口令認(rèn)證與數(shù)據(jù)加密結(jié)合,通過(guò)增加密鑰創(chuàng)建、數(shù)據(jù)加解密、頁(yè)面編碼和事件記錄等代碼,實(shí)現(xiàn)了更安全SQLite數(shù)據(jù)庫(kù)。

關(guān)鍵詞:數(shù)據(jù)庫(kù);安全;加密;SQLite

中圖分類(lèi)號(hào):TP311.13 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-7712 (2013) 20-0000-01

SQLite是一個(gè)開(kāi)源小型數(shù)據(jù)庫(kù),具有存儲(chǔ)效率高、查詢(xún)快、運(yùn)行時(shí)占用內(nèi)存小、能被多進(jìn)程同時(shí)訪問(wèn)和單文件存儲(chǔ)數(shù)據(jù)庫(kù)內(nèi)容等優(yōu)點(diǎn),在嵌入式數(shù)據(jù)庫(kù)領(lǐng)域應(yīng)用廣泛。開(kāi)源SQLite數(shù)據(jù)庫(kù)沒(méi)有提供任何安全控制機(jī)制,對(duì)有安全需求的系統(tǒng),是SQLite的缺點(diǎn)。在分析數(shù)據(jù)庫(kù)安全機(jī)制的基礎(chǔ)上,為SQLite設(shè)計(jì)實(shí)現(xiàn)了相應(yīng)的安全機(jī)制,保持單文件存儲(chǔ)特點(diǎn)和優(yōu)勢(shì),增強(qiáng)了數(shù)據(jù)的安全性。

一、數(shù)據(jù)庫(kù)安全機(jī)制分析

數(shù)據(jù)庫(kù)通常保存著企業(yè)、組織和政府部門(mén)的重要數(shù)據(jù),是信息系統(tǒng)安全的關(guān)鍵。數(shù)據(jù)庫(kù)安全機(jī)制是指為保護(hù)數(shù)據(jù)庫(kù)以防止非法用戶越權(quán)使用、竊取、更改或破壞數(shù)據(jù)而采取的技術(shù)手段。

(一)常用數(shù)據(jù)庫(kù)安全機(jī)制。目前主流數(shù)據(jù)庫(kù)都采用了各種安全控制措施,包括用戶認(rèn)證、存取控制、數(shù)據(jù)加密和數(shù)據(jù)庫(kù)操作審計(jì)等措施。

(1)用戶認(rèn)證:用戶或者程序向數(shù)據(jù)庫(kù)提供自己的有效身份證明,數(shù)據(jù)庫(kù)鑒別用戶的身份是否合法,只有合法的用戶才能存取數(shù)據(jù)庫(kù)中的數(shù)據(jù)。(2)存取控制:數(shù)據(jù)庫(kù)管理系統(tǒng)為不同的用戶分配不同的權(quán)限,保證用戶只能進(jìn)行授權(quán)訪問(wèn)。(3)數(shù)據(jù)庫(kù)加密:用戶認(rèn)證和存取控制對(duì)訪問(wèn)數(shù)據(jù)庫(kù)進(jìn)行了控制,但攻擊者可能會(huì)利用操作系統(tǒng)或數(shù)據(jù)庫(kù)漏洞,或物理接觸計(jì)算機(jī),直接接觸數(shù)據(jù)庫(kù)系統(tǒng)文件,可能繞過(guò)身份認(rèn)證和存取控制,直接竊取或篡改數(shù)據(jù)庫(kù)內(nèi)容。對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行加密是防范這類(lèi)威脅的手段。(4)數(shù)據(jù)庫(kù)操作審計(jì):監(jiān)視和記錄用戶對(duì)數(shù)據(jù)庫(kù)所做的各種操作的安全機(jī)制,記錄存儲(chǔ)用戶的操作,用于事后分析,以檢查導(dǎo)致數(shù)據(jù)庫(kù)現(xiàn)狀的原因和攻擊者的線索。(5)數(shù)據(jù)庫(kù)備份與恢復(fù):當(dāng)數(shù)據(jù)庫(kù)發(fā)生不可恢復(fù)的故障時(shí),將數(shù)據(jù)庫(kù)恢復(fù)到先前的某個(gè)一致性狀態(tài)。

(二)SQLite安全機(jī)制分析。為滿足嵌入式系統(tǒng)對(duì)數(shù)據(jù)庫(kù)本身輕便性和對(duì)數(shù)據(jù)存儲(chǔ)效率、訪問(wèn)速度、內(nèi)存占用率等性能要求,SQLite采取不同于大型數(shù)據(jù)庫(kù)的實(shí)現(xiàn)機(jī)制,也有一些潛在的安全隱患。SQLite不提供網(wǎng)絡(luò)訪問(wèn)服務(wù),使用單一文件存儲(chǔ)數(shù)據(jù)庫(kù)的結(jié)構(gòu)和內(nèi)容,使得數(shù)據(jù)庫(kù)非常輕便,便于移植。數(shù)據(jù)庫(kù)沒(méi)有用戶管理、訪問(wèn)控制和授權(quán)機(jī)制,利用操作系統(tǒng)對(duì)文件的訪問(wèn)控制能力實(shí)施文件級(jí)別的訪問(wèn)控制,即凡是操作系統(tǒng)的合法用戶,該用戶對(duì)數(shù)據(jù)庫(kù)文件具有讀/寫(xiě)權(quán)限,可直接訪問(wèn)數(shù)據(jù)庫(kù)文件。開(kāi)源SQLite數(shù)據(jù)庫(kù)不提供加密機(jī)制和數(shù)據(jù)級(jí)的保密性。SQLite存儲(chǔ)格式簡(jiǎn)單,不需專(zhuān)門(mén)工具,使用任何文本編輯器都可查看文件內(nèi)容。由于不提供多用戶機(jī)制,所以數(shù)據(jù)庫(kù)沒(méi)有審計(jì)機(jī)制,其備份和恢復(fù)依賴(lài)于對(duì)數(shù)據(jù)庫(kù)文件的手工拷貝。

二、SQLite安全機(jī)制設(shè)計(jì)

為保持SQLite的優(yōu)點(diǎn),提供其安全性,可從口令認(rèn)證、數(shù)據(jù)庫(kù)加密、審計(jì)、備份和恢復(fù)對(duì)SQLite的安全性進(jìn)行改進(jìn)。

(一)口令認(rèn)證。SQLite數(shù)據(jù)庫(kù)文件是一個(gè)普通文本文件,對(duì)它的訪問(wèn)首先依賴(lài)于文件的訪問(wèn)控制。再增加進(jìn)一步的口令認(rèn)證,即在訪問(wèn)數(shù)據(jù)庫(kù)時(shí)必須提供正確口令,如果通過(guò)認(rèn)證就可以對(duì)數(shù)據(jù)庫(kù)執(zhí)行創(chuàng)建、查詢(xún)、修改、插入、刪除和修改等操作;否則,不允許進(jìn)一步訪問(wèn)。

(二)數(shù)據(jù)庫(kù)加密。數(shù)據(jù)庫(kù)加密有兩種方式:(1)在數(shù)據(jù)庫(kù)管理系統(tǒng)(DataBaseManagementSystem,DBMS)中實(shí)現(xiàn)加密功能,即在從數(shù)據(jù)庫(kù)中讀數(shù)據(jù)和向數(shù)據(jù)庫(kù)中寫(xiě)數(shù)據(jù)時(shí)執(zhí)行加解密操作;(2)應(yīng)用層加密,即在應(yīng)用程序中對(duì)數(shù)據(jù)庫(kù)某些宇段的值進(jìn)行加密,DBMS管理是加密后的密文。前者與DBMS結(jié)合好,加密方式對(duì)用戶透明,但增加了DBMS的負(fù)載,且需要修改DBMS的原始代碼;后者需要應(yīng)用程序在寫(xiě)人數(shù)據(jù)前加密,在讀出數(shù)據(jù)后解密,會(huì)增大應(yīng)用程序負(fù)載。

SQLite源碼中預(yù)留了加密接口,可實(shí)現(xiàn)DBMS級(jí)加密。國(guó)內(nèi)外已有關(guān)于SQLite加密的實(shí)現(xiàn),這些實(shí)現(xiàn)是基于早期版本的SQLite,而SQLite版本更新非???,新的版本彌補(bǔ)了早期版本一些缺陷,功能更完善,其內(nèi)部的函數(shù)和數(shù)據(jù)結(jié)構(gòu)都發(fā)生了很大變化,不能照搬早期版本的實(shí)現(xiàn)結(jié)果。

(三)審計(jì)機(jī)制。作為可移植的嵌入式數(shù)據(jù)庫(kù),SQLite不宜調(diào)用系統(tǒng)日志來(lái)執(zhí)行審計(jì)功能。由于SQLite沒(méi)有用戶管理功能,所以也不需要詳細(xì)審計(jì)功能。為不改變系統(tǒng)原來(lái)的導(dǎo)出接口,本研究使用特定的文本文件來(lái)記錄系統(tǒng)的重要事件,如打開(kāi)數(shù)據(jù)庫(kù)、關(guān)閉數(shù)據(jù)庫(kù)、設(shè)置口令和修改口令等。如果用戶確實(shí)需要詳細(xì)的日志功能,可在應(yīng)用程序中使用。

(四)備份和恢復(fù)機(jī)制。由于SQLite使用單個(gè)文件存儲(chǔ)數(shù)據(jù)庫(kù)的完整內(nèi)容,所以可以通過(guò)文件的拷貝方便地實(shí)現(xiàn)數(shù)據(jù)庫(kù)備份和恢復(fù)功能。

三、SQLite加密機(jī)制的實(shí)現(xiàn)

本研究通過(guò)修改SQLite源代碼,在DBMS級(jí)實(shí)現(xiàn)了口令認(rèn)證、數(shù)據(jù)加密、簡(jiǎn)單日志功能及備份和恢復(fù)功能。將口令認(rèn)證和數(shù)據(jù)加密二者結(jié)合,統(tǒng)一為加密機(jī)制,即對(duì)數(shù)據(jù)庫(kù)結(jié)構(gòu)信息和存儲(chǔ)數(shù)據(jù)都加密。訪問(wèn)數(shù)據(jù)庫(kù)時(shí)必須提供口令,如果口令不正確,則數(shù)據(jù)庫(kù)結(jié)構(gòu)信息不能正確解析,不允許后續(xù)的訪問(wèn)。

(一)SQLite提供的加密接口。在開(kāi)源SQLite代碼中,已預(yù)留了加密接口,包括4個(gè)函數(shù)原型:在sqlite3.h中提供了sqlite3_key()和sqlite3_rekey()函數(shù)原型,前者用于指定數(shù)據(jù)庫(kù)使用的密鑰,后者用于為數(shù)據(jù)庫(kù)重新設(shè)定密鑰;在文件attach.c中提供了密鑰與數(shù)據(jù)庫(kù)關(guān)聯(lián)接口函數(shù),即函數(shù)sqlite3CodecGetKey()和sqlite3CodecAttach,前者用于返回?cái)?shù)據(jù)庫(kù)當(dāng)前密鑰,后者用于將密鑰及頁(yè)面編碼函數(shù)與數(shù)據(jù)庫(kù)進(jìn)行關(guān)聯(lián)。要實(shí)現(xiàn)SQLite數(shù)據(jù)庫(kù)加密功能,必須給出這幾個(gè)關(guān)鍵函數(shù)的具體實(shí)現(xiàn),提供數(shù)據(jù)加解密函數(shù)、頁(yè)面編碼函數(shù)等必備函數(shù)。

(二)加密算法選擇。SQLite數(shù)據(jù)庫(kù)以頁(yè)面(page)為單位進(jìn)行保存,頁(yè)面大小可定制。現(xiàn)有加密算法分為分組加密算法和序列加密算法,分組加密算法需要將明文分成固定長(zhǎng)度的塊,以塊為單位進(jìn)行加密;序列加密算法則產(chǎn)生密鑰序列,逐個(gè)字節(jié)地對(duì)明文加密。

(三)密鑰。用戶選擇的口令長(zhǎng)度一般不固定,而且從安全角度考慮,如果直接使用輸入的口令作為加密密鑰,則可能會(huì)在應(yīng)用程序中泄露數(shù)據(jù)庫(kù)的密鑰。為此,本文提供一個(gè)密鑰導(dǎo)出函數(shù),對(duì)輸入的口令進(jìn)行變換,將變換的結(jié)果作為數(shù)據(jù)庫(kù)加密的密鑰。

(四)實(shí)現(xiàn)。本研究在SQLite3.6.15版本的源代碼基礎(chǔ)上,使用標(biāo)準(zhǔn)C實(shí)現(xiàn)了SQLite上述安全機(jī)制;通過(guò)文本文件記錄數(shù)據(jù)庫(kù)打開(kāi)、關(guān)閉和加密等操作來(lái)實(shí)現(xiàn)審計(jì)功能;增加導(dǎo)出函數(shù),通過(guò)文件拷貝實(shí)現(xiàn)數(shù)據(jù)庫(kù)文件備份與恢復(fù);選用RC4序列加密算法實(shí)現(xiàn)SQLite加密機(jī)制。函數(shù)sqlite3_key和sqlite3_rekey是最終的導(dǎo)出API函數(shù)。修改后的代碼在windows平臺(tái)VC6.0環(huán)境和Linux平臺(tái)上GCC環(huán)境下分別進(jìn)行了編譯,并對(duì)生成的動(dòng)態(tài)鏈接庫(kù)和靜態(tài)鏈接庫(kù)進(jìn)行了測(cè)試。

四、結(jié)論

數(shù)據(jù)庫(kù)是信息系統(tǒng)中存放數(shù)據(jù)的集中結(jié)構(gòu),是安全防范的關(guān)鍵。在分析當(dāng)前數(shù)據(jù)庫(kù)所采取的安全機(jī)制基礎(chǔ)上,為SQLite設(shè)計(jì)了一系列的安全機(jī)制,詳細(xì)說(shuō)明了如何修改Sqlite源代碼以實(shí)現(xiàn)加密機(jī)制過(guò)程。測(cè)試結(jié)果表明:實(shí)現(xiàn)的SQLite系統(tǒng)在繼承原有系統(tǒng)優(yōu)點(diǎn),提高了安全性。

參考文獻(xiàn):

[1]倪天龍,張賢高,王培.數(shù)據(jù)庫(kù)SQLite在嵌入式系統(tǒng)中的應(yīng)用[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2005,10.

主站蜘蛛池模板: 国产99精品视频| 亚洲精品卡2卡3卡4卡5卡区| 国产精品亚洲精品爽爽| 日韩第九页| 人妻精品久久久无码区色视| 亚洲va在线观看| 欧美有码在线观看| 国产区网址| 欧美 国产 人人视频| 免费jizz在线播放| 国产在线精品99一区不卡| 欧美午夜视频| 亚洲成aⅴ人在线观看| 欧美午夜视频| 久久无码免费束人妻| 亚洲床戏一区| 国产麻豆精品手机在线观看| 2021精品国产自在现线看| 中文字幕亚洲另类天堂| 色精品视频| 久久夜色精品| 国产综合精品一区二区| 国产免费久久精品99re不卡| 精品無碼一區在線觀看 | 国产青青草视频| 亚洲乱码在线播放| 国产免费高清无需播放器| 88av在线| 久久久久久久久久国产精品| 日本不卡免费高清视频| a国产精品| 欧美精品H在线播放| 免费国产高清精品一区在线| 国产精品福利社| 精品夜恋影院亚洲欧洲| 美女无遮挡免费网站| 五月婷婷综合网| 国产美女久久久久不卡| 成人在线亚洲| 国产毛片不卡| 欧美区国产区| 无码专区在线观看| 国产交换配偶在线视频| 美女亚洲一区| 日本免费a视频| 国产精品亚洲日韩AⅤ在线观看| 色成人亚洲| 国产成人午夜福利免费无码r| 免费av一区二区三区在线| 亚洲精品动漫| 欧美日韩激情在线| 日韩免费毛片| 国产精品自在在线午夜| 色婷婷成人| 国产成人综合亚洲网址| 亚洲小视频网站| 国产精品午夜福利麻豆| 精品無碼一區在線觀看 | 亚洲AV永久无码精品古装片| 国产成人盗摄精品| 亚洲一道AV无码午夜福利| 久久久久人妻精品一区三寸蜜桃| 九色91在线视频| 狠狠躁天天躁夜夜躁婷婷| 国产成人凹凸视频在线| 欧美第二区| 国产成人欧美| 亚洲日韩精品无码专区97| 国产aⅴ无码专区亚洲av综合网| 亚洲三级a| 婷婷亚洲视频| 国产成人高清精品免费| 国产黄色片在线看| 亚洲日韩日本中文在线| 国产人前露出系列视频| 久久99国产综合精品1| 亚洲精品动漫| 亚洲国产天堂久久九九九| 欧美a在线看| 国产精品视频免费网站| 国产欧美日韩视频怡春院| 国产第一页免费浮力影院|