成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQLite3數據庫加密方案

移動開發 iOS
數據庫加密:用戶認證以及訪問控制對訪問數據庫進行了控制,但攻擊者可能會利用操作系統或數據庫漏洞,或物理接觸計算機,而直接接觸數據庫系統文件,從而可能繞過身份認證和存取控制而直接竊取或篡改數據庫內容。對數據庫中的數據進行加密是防范這類威脅的有效手段。

針對sqlite數據庫文件,進行加密。現有兩種方案如下
1.對數據庫中的數據進行加密。
2.對數據庫文件進行加密
兩種加密方式的優缺點,比較如下:

一、對數據庫中的數據進行加密

優點:
1.實現數據加密快速,只需添加兩個方法
一是:對明文數據進行加密返回密文數據
二是:對密文數據進行解密返回明文數據
2.程序無需進行太大變動,僅在對數據進行
添加,修改,刪除,查詢時。針對指定的表字段
進行修改進行加密,解密的字段即可。

不足:
1.由于對數據進行了加密。所以為了看到明文,必須密文進行解密。
因此會增加處理器的消耗。因終端手機的處理能力有限,可能會出現
處理數據緩慢的現象發生。
2.僅僅對數據進行了加密,還是可以看到數據表的sql語句,
可能猜測到表的作用。另外,如果沒有對一個表中的所有字段加密,
則可以看沒有加密的明文數據。

需要做的工作:
1.無需考慮平臺差異性,qt,android,ios都能快速
的實現。只需在每個平臺上,使用各自的語言,實現
同樣的加密,解密算法即可。
2.需要對加密算法進行了解,選擇一種加密算法,進行實現。

二、對數據庫文件進行加密

優點:
1.對整個文件進行了加密,用戶通過編輯器看不到任何有用的數據,
用戶使用sqlite browser軟件也無法打開文件查看數據,保證了數據安全。
2.進行打開數據庫時,使用程序sqlite3_key(db,"********",8);
即可對文件解密,對數據表的操作無需進行加密,采用明文即可。

不足:
1.需要修改sqlite的源代碼,這個工作難度比較大。
2.需要對修改后的sqlite進行編譯,需要對makefile有所了解,
手動編寫makefile文件,對源程序進行編譯。因平臺差異性,可能會造成
某個平臺無法編譯生成動態鏈接庫的可能。
3.需要對數據訪問層代碼進行修改,例如qt平臺需要將以前對數據庫操作使用的
QSqlQuery類,更改為使用sqlite3.h文件中定義操作,對數據庫操作。
其他平臺也一樣,都要做這一步的修改。
4.在程序編譯時,要加入使用加密的動態鏈接庫(linux為共享庫.so文件)
windows平臺最容易,只需將所使用的dll文件copy到應用程序中即可。
其他平臺需要實驗,看如何引入庫,如果編譯。

需要做的工作:
1.修改sqlite源代碼,追加對數據庫文件進行加密的功能。
2.編譯含有加密功能的程序源代碼,生成各自平臺需要使用的庫文件。
3.將加密sqlite庫文件引入各自平臺中,修改數據庫訪問層代碼。
4.進行程序的部署,測試。

加密算法的相關知識:
加密技術通常分為兩大類:“對稱式”和“非對稱式”。
對稱式加密就是加密和解密使用同一個密鑰,通常稱之為“Session Key ”這種加密技術目前被廣泛采用,如美國政府所采用的DES加密標準就是一種典型的“對稱式”加密法,它的Session Key長度為56Bits。
非對稱式加密就是加密和解密所使用的不是同一個密鑰,通常有兩個密鑰,稱為“公鑰”和“私鑰”,它們兩個必需配對使用,否則不能打開加密文件。這里的 “公鑰”是指可以對外公布的,“私鑰”則不能,只能由持有人一個人知道。它的優越性就在這里,因為對稱式的加密方法如果是在網絡上傳輸加密文件就很難把密 鑰告訴對方,不管用什么方法都有可能被別竊聽到。而非對稱式的加密方法有兩個密鑰,且其中的“公鑰”是可以公開的,也就不怕別人知道,收件人解密時只要用 自己的私鑰即可以,這樣就很好地避免了密鑰的傳輸安全性問題。

常見加密算法
DES(Data Encryption Standard):對稱算法,數據加密標準,速度較快,適用于加密大量數據的場合;
3DES(Triple DES):是基于DES的對稱算法,對一塊數據用三個不同的密鑰進行三次加密,強度更高;
RC2和 RC4:對稱算法,用變長密鑰對大量數據進行加密,比 DES 快;
IDEA(International Data Encryption Algorithm)國際數據加密算法,使用 128 位密鑰提供非常強的安全性;
RSA:由 RSA 公司發明,是一個支持變長密鑰的公共密鑰算法,需要加密的文件塊的長度也是可變的,非對稱算法;
DSA(Digital Signature Algorithm):數字簽名算法,是一種標準的 DSS(數字簽名標準),嚴格來說不算加密算法;
AES(Advanced Encryption Standard):高級加密標準,對稱算法,是下一代的加密算法標準,速度快,安全級別高,目前 AES 標準的一個實現是 Rijndael 算法; BLOWFISH,它使用變長的密鑰,長度可達448位,運行速度很快;
MD5:嚴格來說不算加密算法,只能說是摘要算法
對MD5算法簡要的敘述可以為:MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經過了一系列的處理后,算法的輸出由四個32位分組組成,將這四個32位分組級聯后將生成一個128位散列值。
在MD5算法中,首先需要對信息進行填充,使其字節長度對512求余的結果等于448。因此,信息的字節長度(Bits Length)將被擴展至N*512+448,即N*64+56個字節(Bytes),N為一個正整數。填充的方法如下,在信息的后面填充一個1和無數個 0,直到滿足上面的條件時才停止用0對信息的填充。然后,在這個結果后面附加一個以64位二進制表示的填充前信息長度。經過這兩步的處理,現在的信息字節 長度=N*512+448+64=(N+1)*512,即長度恰好是512的整數倍。這樣做的原因是為滿足后面處理中對信息長度的要求。(可參見MD5算 法詞條)
SSF33,SSF28,SCB2(SM1):國家密碼局的隱蔽不公開的商用算法,在國內民用和商用的,除這些都不容許使用外,其他的都可以使用;

三、數據庫加密原理
目前主流的數據庫都采用了各種安全措施,主要包括用戶認證、訪問控
制、數據加密存儲和數據庫操作審計等措施。

用戶認證:用戶或者程序向數據庫提供自己的有效身份證明,數據庫鑒別用戶的身份是否合法,只有合法的用戶才能存取數據庫中的數據。用戶認證是所有安全機制的前提,只有通過認證才能進行授權訪問和審計。

訪問控制:數據庫管理系統為不同的用戶分配不同的權限,保證用戶只能進行授權的訪問。目前,一些大型數據庫(如Oracle 等)都采用了基于角色的訪問控制機制,即為用戶授予不同的角色,如db—owner,security administrator 等,不同的角色允許對數據庫執行不同的操作。

數據庫加密:用戶認證以及訪問控制對訪問數據庫進行了控制,但攻擊者可能會利用操作系統或數據庫漏洞,或物理接觸計算機,而直接接觸數據庫系統文件,從而可能繞過身份認證和存取控制而直接竊取或篡改數據庫內容。對數據庫中的數據進行加密是防范這類威脅的有效手段。

數據庫操作審計:監視和記錄用戶對數據庫所做的各種操作的安全機制,它記錄并存儲用戶的操作,用于事后分析,以檢查導致數據庫現狀的原因以及提供追蹤攻擊者的線索。數據庫的備份與恢復:當數據庫發生不可恢復的故障時,可以將數據庫恢復到先前的某個一致性的狀態。

四、SQLite 加密

由于SQLite 是開放源碼的,并且在其源碼中預留了加密接口,我們可以通過實現其預留的加密接口實現口令認證和數據庫加密以完善其加密機制。

1.口令認證

SQLite 數據庫文件是一個普通文本文件,對它的訪問首先依賴于文件的訪問控制。在此基礎上,再增加進一步的口令認證,即在訪問數據庫時必須提供正確的口令,如果通過認證就可以對數據庫執行創建、查詢、修改、插入、刪除和修改等操作;否則,不允許進一步的訪問。

2.數據庫加密

數據庫加密有兩種方式:
1)在數據庫管理系(Data Base Management System,DBMS)中實現加密功能,即在從數據庫中讀數據和向數據庫中寫數據時執行加解密操作;
2)應用層加密,即在應用程序中對數據庫的某些字段的值進行加密,DBMS 管理的是加密后的密文。
前者與DBMS 結合好,加密方式對用戶透明,但增加了DBMS 的負載,并且需要修改DBMS的原始代碼;后者則需要應用程序在寫入數據前加密,在讀出數據后解密,因而會增大應用程序的負載。在此,通過實現SQLite 源碼中預留的加密接口,實現DBMS 級的加密。

3.使用xxx-tea 算法加密SQLite 數據庫

微型加密算法(TEA)及其相關變種(XTEA,Block TEA,XXTEA) 都是分組加密算法,它們很容易被描述,實現也很簡單(典型的幾行代碼)。

TEA 算法最初是由劍橋計算機實驗室的 David Wheeler 和 Roger Needham在 1994 年設計的。該算法使用 128 位的密鑰為 64 位的信息塊進行加密,它需要進行 64 輪迭代,盡管作者認為 32 輪已經足夠了。該算法使用了一個神秘常數δ作為倍數,它來源于黃金比率,以保證每一輪加密都不相同。但δ的精確值似乎并不重要,這里 TEA 把它定義為 δ=「(√5 - 1)231」(也就是程序中的 0×9E3779B9)。

之后 TEA 算法被發現存在缺陷,作為回應,設計者提出了一個 TEA 的升級版本——XTEA(有時也被稱為“tean”)。XTEA 跟 TEA 使用了相同的簡單運算,但它采用了截然不同的順序,為了阻止密鑰表攻擊,四個子密鑰(在加密過程中,原 128 位的密鑰被拆分為 4 個 32 位的子密鑰)采用了一種不太正規的方式進行混合,但速度更慢了。

在跟描述 XTEA 算法的同一份報告中,還介紹了另外一種被稱為 Block TEA 算法的變種,它可以對 32 位大小任意倍數的變量塊進行操作。該算法將 XTEA 輪循函數依次應用于塊中的每個字,并且將它附加于它的鄰字。該操作重復多少輪依賴于塊的大小,但至少需要 6 輪。該方法的優勢在于它無需操作模式(CBC,OFB,CFB 等),密鑰可直接用于信息。對于長的信息它可能比 XTEA 更有效率。

在 1998 年,Markku-JuhaniSaarinen 給出了一個可有效攻擊 Block TEA 算法的代碼,但之后很快 David J. Wheeler 和 Roger M.Needham 就給出了 Block TEA 算法的修訂版,這個算法被稱為 XXTEA。XXTEA 使用跟 Block TEA 相似的結構,但在處理塊中每個字時利用了相鄰字。它利用一個更復雜的 MX 函數代替了 XTEA 輪循函數,MX 使用 2 個輸入量。

責任編輯:閆佳明 來源: iteye
相關推薦

2011-07-07 16:42:38

iPhone Sqlite3 數據庫

2012-03-06 09:50:24

Android SQLAndroidSQLite3

2013-04-09 16:47:19

iOS嵌入式數據庫SQLit

2021-02-15 15:40:28

SQLite3數據庫

2024-02-19 00:00:00

SQLite3數據庫代碼

2012-03-06 12:59:11

iOS SQLite3iOSSQLite3

2020-07-31 08:07:54

Python開發數據庫

2012-02-29 10:18:31

SQLite3Android

2013-05-03 13:42:20

iOS開發SQLite3存儲讀取

2019-08-12 11:40:48

數據庫SQLite3數據類型

2011-03-03 13:13:51

DelphiSQLite加密

2011-07-04 18:02:29

QT Sqlite 數據庫

2017-10-26 12:37:24

Pythonsqlite3數據庫

2017-07-12 09:20:42

SQLite數據庫移植

2012-03-06 10:17:45

iOS SQLite3iOSSQLite3

2011-07-20 12:34:49

SQLite數據庫約束

2019-08-15 07:00:54

SQLite數據庫內存數據庫

2013-06-14 09:54:04

Unity3D

2020-09-17 09:40:20

數據庫Sqlite3命令

2011-08-01 13:32:07

Objective-C Sqlite3 框架
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: www.天天干.com | 国产高清91 | 夜夜爽99久久国产综合精品女不卡 | 国产欧美一区二区三区久久 | 精品亚洲一区二区三区四区五区 | 精品久久久久久久久久久久 | 成人午夜电影在线观看 | 国产精品一区二区在线播放 | 中国大陆高清aⅴ毛片 | 国产高清精品一区二区三区 | 欧美大片一区 | 天天看夜夜 | 亚洲人成人一区二区在线观看 | av高清| 欧美a级成人淫片免费看 | 午夜影院在线观看免费 | 国产一区二区中文字幕 | 日韩欧美电影在线 | 亚洲欧美一区二区三区1000 | 涩涩视频在线观看 | 国产精品日韩欧美一区二区 | 日韩综合色 | 久久久久久国产精品久久 | 最新黄色毛片 | av一级毛片 | 蜜桃视频成人 | 7777在线视频| 青青草这里只有精品 | 欧美久久久久久久久 | 午夜精品在线观看 | 日韩精品久久久久 | 91在线视频免费观看 | 国产精品久久久久久久久免费相片 | 自拍第1页| 欧美区日韩区 | 一区中文 | 国产精品色一区二区三区 | 日韩欧美中文字幕在线观看 | 欧美日韩不卡合集视频 | 国产69精品久久99不卡免费版 | 国产高清不卡 |