導航:首頁 > 文檔加密 > 資料庫存加密數據還是未加密

資料庫存加密數據還是未加密

發布時間:2022-07-12 20:52:25

A. 什麼是數據加密

考慮到用戶可能試圖旁路系統的情況,如物理地取走資料庫,在通訊線路上竊聽。對這樣的威脅最有效的解決方法就是數據加密,即以加密格式存儲和傳輸敏感數據。
數據加密的術語有:明文,即原始的或未加密的數據。通過加密演算法對其進行加密,加密演算法的輸入信息為明文和密鑰;密文,明文加密後的格式,是加密演算法的輸出信息。加密演算法是公開的,而密鑰則是不公開的。密文,不應為無密鑰的用戶理解,用於數據的存儲以及傳輸。
例:明文為字元串:
AS KINGFISHERS CATCH FIRE
(為簡便起見,假定所處理的數據字元僅為大寫字母和空格符)。假定密鑰為字元串:
ELIOT
加密演算法為:
1) 將明文劃分成多個密鑰字元串長度大小的塊(空格符以"+"表示)
AS+KI NGFIS HERS+ CATCH +FIRE
2) 用00~26范圍的整數取代明文的每個字元,空格符=00,A=01,...,Z=26:
0119001109 1407060919 0805181900 0301200308 0006091805
3) 與步驟2一樣對密鑰的每個字元進行取代:
0512091520
4) 對明文的每個塊,將其每個字元用對應的整數編碼與密鑰中相應位置的字元的整數編碼的和模27後的值取代:
5) 將步驟4的結果中的整數編碼再用其等價字元替換:
FDIZB SSOXL MQ+GT HMBRA ERRFY
如果給出密鑰,該例的解密過程很簡單。問題是對於一個惡意攻擊者來說,在不知道密鑰的情況下,利用相匹配的明文和密文獲得密鑰究竟有多困難?對於上面的簡單例子,答案是相當容易的,不是一般的容易,但是,復雜的加密模式同樣很容易設計出。理想的情況是採用的加密模式使得攻擊者為了破解所付出的代價應遠遠超過其所獲得的利益。實際上,該目的適用於所有的安全性措施。這種加密模式的可接受的最終目標是:即使是該模式的發明者也無法通過相匹配的明文和密文獲得密鑰,從而也無法破解密文。
1. 數據加密標准
傳統加密方法有兩種,替換和置換。上面的例子採用的就是替換的方法:使用密鑰將明文中的每一個字元轉換為密文中的一個字元。而置換僅將明文的字元按不同的順序重新排列。單獨使用這兩種方法的任意一種都是不夠安全的,但是將這兩種方法結合起來就能提供相當高的安全程度。數據加密標准(Data Encryption Standard,簡稱DES)就採用了這種結合演算法,它由IBM制定,並在1977年成為美國官方加密標准。
DES的工作原理為:將明文分割成許多64位大小的塊,每個塊用64位密鑰進行加密,實際上,密鑰由56位數據位和8位奇偶校驗位組成,因此只有256個可能的密碼而不是264個。每塊先用初始置換方法進行加密,再連續進行16次復雜的替換,最後再對其施用初始置換的逆。第i步的替換並不是直接利用原始的密鑰K,而是由K與i計算出的密鑰Ki。
DES具有這樣的特性,其解密演算法與加密演算法相同,除了密鑰Ki的施加順序相反以外。
2. 公開密鑰加密
多年來,許多人都認為DES並不是真的很安全。事實上,即使不採用智能的方法,隨著快速、高度並行的處理器的出現,強制破解DES也是可能的。"公開密鑰"加密方法使得DES以及類似的傳統加密技術過時了。公開密鑰加密方法中,加密演算法和加密密鑰都是公開的,任何人都可將明文轉換成密文。但是相應的解密密鑰是保密的(公開密鑰方法包括兩個密鑰,分別用於加密和解密),而且無法從加密密鑰推導出,因此,即使是加密者若未被授權也無法執行相應的解密。
公開密鑰加密思想最初是由Diffie和Hellman提出的,最著名的是Rivest、Shamir以及Adleman提出的,現在通常稱為RSA(以三個發明者的首位字母命名)的方法,該方法基於下面的兩個事實:
1) 已有確定一個數是不是質數的快速演算法;
2) 尚未找到確定一個合數的質因子的快速演算法。
RSA方法的工作原理如下:
1) 任意選取兩個不同的大質數p和q,計算乘積r=p*q;
2) 任意選取一個大整數e,e與(p-1)*(q-1)互質,整數e用做加密密鑰。注意:e的選取是很容易的,例如,所有大於p和q的質數都可用。
3) 確定解密密鑰d:
d * e = 1 molo(p - 1)*(q - 1)
根據e、p和q可以容易地計算出d。
4) 公開整數r和e,但是不公開d;
5) 將明文P (假設P是一個小於r的整數)加密為密文C,計算方法為:
C = Pe molo r
6) 將密文C解密為明文P,計算方法為:
P = Cd molo r
然而只根據r和e(不是p和q)要計算出d是不可能的。因此,任何人都可對明文進行加密,但只有授權用戶(知道d)才可對密文解密。

下面舉一簡單的例子對上述過程進行說明,顯然我們只能選取很小的數字。
例:選取p=3, q=5,則r=15,(p-1)*(q-1)=8。選取e=11(大於p和q的質數),通過d * 11 = 1 molo 8,計算出d =3。
假定明文為整數13。則密文C為
C = Pe molo r
= 1311 molo 15
= 1,792,160,394,037 molo 15
= 7
復原明文P為:
P = Cd molo r
= 73 molo 15
= 343 molo 15
= 13
因為e和d互逆,公開密鑰加密方法也允許採用這樣的方式對加密信息進行"簽名",以便接收方能確定簽名不是偽造的。假設A和B希望通過公開密鑰加密方法進行數據傳輸,A和B分別公開加密演算法和相應的密鑰,但不公開解密演算法和相應的密鑰。A和B的加密演算法分別是ECA和ECB,解密演算法分別是DCA和DCB,ECA和DCA互逆,ECB和DCB互逆。若A要向B發送明文P,不是簡單地發送ECB(P),而是先對P施以其解密演算法DCA,再用加密演算法ECB對結果加密後發送出去。密文C為:
C = ECB(DCA(P))
B收到C後,先後施以其解密演算法DCB和加密演算法ECA,得到明文P:
ECA(DCB(C))
= ECA(DCB(ECB(DCA(P))))
= ECA(DCA(P)) /*DCB和ECB相互抵消*/
= P /*DCB和ECB相互抵消*/
這樣B就確定報文確實是從A發出的,因為只有當加密過程利用了DCA演算法,用ECA才能獲得P,只有A才知道DCA演算法,沒有人,即使是B也不能偽造A的簽名。

B. 數據加密 是否所有數據都需要加密

重要和隱私的數據和文件是非常需要加密的。

個人感覺加密這些數據和文件最好的辦法就是使用軟體加密,我自己電腦上所安裝的是一款叫超級加密3000的軟體。用起來很方便,加密效果也是非常不錯的,您不妨考慮使用。

C. 余額寶的金額在資料庫中是加密存儲的嗎

都是非加密的,但是你訪問不到他們的資料庫

D. 系統數據安全

部分航空物探項目是帶有一定密級的,其項目所取得的成果資料屬於保密數據,這部分數據也存儲在本系統的資料庫中。因此,需防止保密數據被竊走或蓄意破壞,如越權提取資料庫保密數據或在通信線路上進行竊聽等。對這樣的威脅最有效的解決方法就是對數據進行加密處理,把可讀的保密數據轉化為密碼數據,以加密格式存儲和傳輸,在使用時再解密。

航空物探保密項目的密級分機密、秘密、絕密3個密級。本系統僅對保密項目數據進行加密處理,機密和秘密項目資料採用64位密鑰進行加密,絕密項目資料採用128位密鑰進行加密,非保密項目數據不做任何加密處理。進入資料採集庫中的數據通過正確性檢查後,歸檔入庫進入資料庫時,系統根據設置的項目密級進行自動加密。用戶也可以通過加密-解密功能對資料庫中的數據進行加密或解密。相同類型的加密數據與未加密數據均存儲在資料庫同一張表的同一欄位中,但在數據加密-解密記錄表資料庫(表3-8)中,記錄了加密資料庫表代碼和欄位代碼。當用戶獲得授權訪問保密數據時,系統根據該表中的記錄自動對數據進行解密。

表3-8 數據加密-解密記錄表資料庫結構

一、數據加密與解密

根據密鑰類型不同將現代密碼技術分為兩類:對稱加密演算法(秘密鑰匙加密)和非對稱加密演算法(公開密鑰加密)。對稱鑰匙加密系統是加密和解密均採用同一把秘密鑰匙,而且通信雙方都必須獲得這把鑰匙,並保持鑰匙的秘密。非對稱密鑰加密系統採用的加密鑰匙(公鑰)和解密鑰匙(私鑰)是不同的。

對稱加密演算法用來對敏感數據等信息進行加密,常用的演算法包括:DES(Data En-cryption Standard),數據加密標准,速度較快,適用於加密大量數據的場合;3DES(Triple DES),是基於DES,對一塊數據用三個不同的密鑰進行三次加密,強度更高;AES(Advanced Encryption Standard),高級加密標准,速度快,安全級別高。常見的非對稱加密演算法有:RSA,由RSA公司發明,是一個支持變長密鑰的公共密鑰演算法,需要加密的文件快的長度也是可變的;DSA(Digital Signature Algorithm),數字簽名演算法,是一種標準的DSS(數字簽名標准)。

本系統採用AES和DES加密演算法對資料庫數據進行加算或解密(圖3-4)。

圖3-4 資料庫數據加密-解密過程

AES加密演算法是美國國家標准和技術協會(NIST)2000年10月宣布通過從15種候選加密演算法中選出的一項新的密鑰加密標准,於2002年5月26日制定了新的高級加密標准(AES)規范。

AES演算法基於排列(對數據重新進行安排)和置換(將一個數據單元替換為另一個)運算,採用幾種不同的方法來執行排列和置換運算。它是一個迭代的、對稱密鑰分組的密碼,可以使用128、192和256位密鑰,並且用128位(16位元組)分組加密和解密,數據通過分組密碼返回的加密數據的位數與輸入數據相同。迭代加密使用一個循環結構,在該循環中重復置換和替換輸入數據。

DES演算法把64位的明文輸入塊變為64位的密文輸出塊,它所使用的密鑰也是64位。首先,DES把輸入的64位數據塊按位重新組合,並把輸出分為L0、R0兩部分,每部分各長32位,並進行前後置換(輸入的第58位換到第一位,第50位換到第2位,依此類推,最後一位是原來的第7位),最終由L0輸出左32位,R0輸出右32位。根據這個法則經過16次迭代運算後,得到L16、R16,將此作為輸入,進行與初始置換相反的逆置換,即得到密文輸出。

二、日誌跟蹤

為了有效地監控航空物探保密數據的訪問,確保保密數據安全,本系統針對保密數據開發了保密數據訪問日誌跟蹤功能。該功能類似於「攝像機」,把訪問資料庫中保密數據的時間、用戶、IP地址等信息記錄在資料庫的日誌庫表中,以備偵查。

首先,對保密數據進行日誌跟蹤定義,即對用戶的哪些操作進行跟蹤。系統提供了對用戶的查詢、新增、修改、刪除4種操作進行跟蹤功能,可以根據需要進行選擇其一或多個(圖3-5)。

日誌跟蹤定義生效後,系統自動對用戶實施跟蹤,並記錄用戶登錄名、登錄和退出時間(年/月/日,時/分/秒)、登錄計算機的IP地址,用戶對資料庫數據所進行的查詢、新增、修改、刪除操作。系統還提供了跟蹤日誌記錄查詢、列印、導出Excel表格文件等功能,便於資料庫管理人員使用。

圖3-5 資料庫日誌跟蹤設置

三、數據提取安全機制

數據提取是航空物探信息系統向地質、地球物理等領域的科研人員提供數據服務的重要內容之一。防止越權提取數據,保證數據安全,是本系統提供優質、高效服務的前提。

越權提取數據是兩個方面的問題。一是用戶在沒有獲得授權情況竊取數據,此問題屬系統使用安全。二是獲得授權的用戶擅自擴大提取數據的范圍,「順手牽羊」多提取數據。針對該問題,本系統採用以下機制(圖3-6)。

圖3-6 資料庫數據提取安全機制模型

首先由用戶(需要數據的單位或個人)提出使用數據申請,填寫使用數據審批表。該表包含申請號、申請人、使用數據的范圍(經緯度坐標)、審批人、審批日期、使用數據目的等信息。

用戶申請獲批准後,與中心簽訂資料使用保密協議。系統管理員授予用戶「數據提取權」,根據批準的申請設置提取數據的范圍,和數據提取權的有效期限。

在有效期限內,用戶可以提取設定范圍內的數據。同時,系統自動在數據提取記錄表中記錄用戶數據提取日誌(記錄提取數據的范圍、數據測量比例尺、數據來源的庫表、數據提取人和提取日期等),以備查系統數據安全。

E. 為什麼要進行數據加密 不加密有什麼後果!

加密的目的是防止其他人將文件復制到別的電腦上使用。
加密後沒有密鑰的文件是無法打開和破解的。
就算是把文件復制到其他電腦,但是由於沒有密鑰是無法正常使用的。

F. 資料庫存儲過程可以加密嗎

可以加密,但一定要留一份原始未加密的,不然,回頭哭都找到不北啊

G. 資料庫怎麼查詢未加密的存量數據

加密一個未加密的資料庫或者更改一個加密資料庫的密碼,打開資料庫,啟動SQLiteConnection的ChangePassword() 函數

// Opens an unencrypted database

SQLiteConnection cnn = newSQLiteConnection("Data Source=c:\\test.db3");

cnn.Open();

// Encrypts the database. The connection remains valid and usable afterwards.

cnn.ChangePassword("mypassword");

解密一個已加密的資料庫調用l ChangePassword() 將參數設為 NULL or "" :

// Opens an encrypted database

SQLiteConnection cnn = newSQLiteConnection("Data Source=c:\\test.db3;Password=mypassword");

cnn.Open();

// Removes the encryption on an encrypted database.

cnn.ChangePassword("");

要打開一個已加密的資料庫或者新建一個加密資料庫,在打開或者新建前調用SetPassword()函數

// Opens an encrypted database by calling SetPassword()

SQLiteConnection cnn = newSQLiteConnection("Data Source=c:\\test.db3");

cnn.SetPassword(newbyte[] { 0xFF, 0xEE, 0xDD, 0x10, 0x20, 0x30 });
cnn.Open();

// The connection is now usable

Sqlite資料庫的加密

1、創建空的sqlite資料庫。

//資料庫名的後綴你可以直接指定,甚至沒有後綴都可以
//方法一:創建一個空sqlite資料庫,用IO的方式
FileStream fs = File.Create(「c:\\test.db「);
//方法二:用SQLiteConnection
SQLiteConnection.CreateFile(「c:\\test.db「);

創建的資料庫是個0位元組的文件。

2、創建加密的空sqlite資料庫

//創建一個密碼為password的空的sqlite資料庫
SQLiteConnection.CreateFile(「c:\\test2.db「);
SQLiteConnection cnn = new SQLiteConnection(「Data Source=c:\\test2.db「);
SQLiteConnection cnn = new SQLiteConnection(「Data Source=D:\\test2.db「);
cnn.Open();
cnn.ChangePassword(「password「);

H. 資料庫文件被加密

用Access所建的資料庫,在庫文件的地址00000042處開始的13個位元組是Access庫的密碼位。如果一個未加密的庫,這13個位元組原始數據依次為:86 FB 37 5D 44 9C FA C6 28 E6 13。事實上,當你設置了密碼後,Access就將你的密碼(請注意你所輸入的密碼是本文字元)的ACSII碼與以上的13個位元組數據進行異或操作,因此,從庫文件的地址00000042開始的13個位元組就變成了密鑰了。例如,如果你設置的密碼為abc,經過異或操作後,則從00000042處開始的13個位元組的數據變成了E7 99 8F 37 5D 44 9C FA C6 28 E6 13。一個數據經過一次異或操作後,再一次經過同樣的異或操作就可還原了。因此,對已經設置了密碼的Access庫,只要將13個密鑰數據與原始的13個數據進行一次異或操作就可得到密碼了。
另外,ACCESS雖然可以輸入14位密碼,但只有前13位有效。

閱讀全文

與資料庫存加密數據還是未加密相關的資料

熱點內容
雲伺服器app安卓下載 瀏覽:966
如何查看linux伺服器的核心數 瀏覽:137
交易平台小程序源碼下載 瀏覽:148
程序員記筆記用什麼app免費的 瀏覽:646
java與單片機 瀏覽:897
伺服器內網如何通過公網映射 瀏覽:478
程序員穿越到宋代 瀏覽:624
怎麼使用雲伺服器掛游戲 瀏覽:618
真實的幸福pdf 瀏覽:344
d盤php調用c盤的mysql 瀏覽:266
怎麼樣搭建源碼網站 瀏覽:429
新概念四冊pdf 瀏覽:363
怎麼下載悅虎檢測app 瀏覽:530
cad表達式命令 瀏覽:200
程序員去一個小公司值不值得 瀏覽:848
程序員做個程序多少錢 瀏覽:497
win10原始解壓軟體 瀏覽:321
阿里程序員的老家 瀏覽:260
量子加密銀行 瀏覽:195
命令方塊獲得指令手機 瀏覽:501