時間:2022-10-17 08:35:22
序論:在您撰寫數(shù)據(jù)加密技術(shù)時,參考他人的優(yōu)秀作品可以開闊視野,小編為您整理的7篇范文,希望這些建議能夠激發(fā)您的創(chuàng)作熱情,引導您走向新的創(chuàng)作高度。
一:數(shù)據(jù)加密方法
在傳統(tǒng)上,我們有幾種方法來加密數(shù)據(jù)流。所有這些方法都可以用軟件很容易的實現(xiàn),但是當我們只知道密文的時候,是不容易破譯這些加密算法的(當同時有原文和密文時,破譯加密算法雖然也不是很容易,但已經(jīng)是可能的了)。最好的加密算法對系統(tǒng)性能幾乎沒有影響,并且還可以帶來其他內(nèi)在的優(yōu)點。例如,大家都知道的pkzip,它既壓縮數(shù)據(jù)又加密數(shù)據(jù)。又如,dbms的一些軟件包總是包含一些加密方法以使復制文件這一功能對一些敏感數(shù)據(jù)是無效的,或者需要用戶的密碼。所有這些加密算法都要有高效的加密和解密能力。
幸運的是,在所有的加密算法中最簡單的一種就是“置換表”算法,這種算法也能很好達到加密的需要。每一個數(shù)據(jù)段(總是一個字節(jié))對應著“置換表”中的一個偏移量,偏移量所對應的值就輸出成為加密后的文件。加密程序和解密程序都需要一個這樣的“置換表”。事實上,80x86 cpu系列就有一個指令‘xlat’在硬件級來完成這樣的工作。這種加密算法比較簡單,加密解密速度都很快,但是一旦這個“置換表”被對方獲得,那這個加密方案就完全被識破了。更進一步講,這種加密算法對于黑客破譯來講是相當直接的,只要找到一個“置換表”就可以了。這種方法在計算機出現(xiàn)之前就已經(jīng)被廣泛的使用。
對這種“置換表”方式的一個改進就是使用2個或者更多的“置換表”,這些表都是基于數(shù)據(jù)流中字節(jié)的位置的,或者基于數(shù)據(jù)流本身。這時,破譯變的更加困難,因為黑客必須正確的做幾次變換。通過使用更多的“置換表”,并且按偽隨機的方式使用每個表,這種改進的加密方法已經(jīng)變的很難破譯。比如,我們可以對所有的偶數(shù)位置的數(shù)據(jù)使用a表,對所有的奇數(shù)位置使用b表,即使黑客獲得了明文和密文,他想破譯這個加密方案也是非常困難的,除非黑客確切的知道用了兩張表。
與使用“置換表”相類似,“變換數(shù)據(jù)位置”也在計算機加密中使用。但是,這需要更多的執(zhí)行時間。從輸入中讀入明文放到一個buffer中,再在buffer中對他們重排序,然后按這個順序再輸出。解密程序按相反的順序還原數(shù)據(jù)。這種方法總是和一些別的加密算法混合使用,這就使得破譯變的特別的困難,幾乎有些不可能了。例如,有這樣一個詞,變換起字母的順序,slient 可以變?yōu)閘isten,但所有的字母都沒有變化,沒有增加也沒有減少,但是字母之間的順序已經(jīng)變化了。
但是,還有一種更好的加密算法,只有計算機可以做,就是字/字節(jié)循環(huán)移位和xor操作。如果我們把一個字或字節(jié)在一個數(shù)據(jù)流內(nèi)做循環(huán)移位,使用多個或變化的方向(左移或右移),就可以迅速的產(chǎn)生一個加密的數(shù)據(jù)流。這種方法是很好的,破譯它就更加困難!而且,更進一步的是,如果再使用xor操作,按位做異或操作,就就使破譯密碼更加困難了。如果再使用偽隨機的方法,這涉及到要產(chǎn)生一系列的數(shù)字,我們可以使用fibbonaci數(shù)列。對數(shù)列所產(chǎn)生的數(shù)做模運算(例如模3),得到一個結(jié)果,然后循環(huán)移位這個結(jié)果的次數(shù),將使破譯次密碼變的幾乎不可能!但是,使用fibbonaci數(shù)列這種偽隨機的方式所產(chǎn)生的密碼對我們的解密程序來講是非常容易的。
在一些情況下,我們想能夠知道數(shù)據(jù)是否已經(jīng)被篡改了或被破壞了,這時就需要產(chǎn)生一些校驗碼,并且把這些校驗碼插入到數(shù)據(jù)流中。這樣做對數(shù)據(jù)的防偽與程序本身都是有好處的。但是感染計算機程序的病毒才不會在意這些數(shù)據(jù)或程序是否加過密,是否有數(shù)字簽名。所以,加密程序在每次load到內(nèi)存要開始執(zhí)行時,都要檢查一下本身是否被病毒感染,對與需要加、解密的文件都要做這種檢查!很自然,這樣一種方法體制應該保密的,因為病毒程序的編寫者將會利用這些來破壞別人的程序或數(shù)據(jù)。因此,在一些反病毒或殺病毒軟件中一定要使用加密技術(shù)。
循環(huán)冗余校驗是一種典型的校驗數(shù)據(jù)的方法。對于每一個數(shù)據(jù)塊,它使用位循環(huán)移位和xor操作來產(chǎn)生一個16位或32位的校驗和 ,這使得丟失一位或兩個位的錯誤一定會導致校驗和出錯。這種方式很久以來就應用于文件的傳輸,例如 xmodem-crc。 這是方法已經(jīng)成為標準,而且有詳細的文檔。但是,基于標準crc算法的一種修改算法對于發(fā)現(xiàn)加密數(shù)據(jù)塊中的錯誤和文件是否被病毒感染是很有效的。轉(zhuǎn)貼于
二.基于公鑰的加密算法
一個好的加密算法的重要特點之一是具有這種能力:可以指定一個密碼或密鑰,并用它來加密明文,不同的密碼或密鑰產(chǎn)生不同的密文。這又分為兩種方式:對稱密鑰算法和非對稱密鑰算法。所謂對稱密鑰算法就是加密解密都使用相同的密鑰,非對稱密鑰算法就是加密解密使用不同的密鑰。非常著名的pgp公鑰加密以及rsa加密方法都是非對稱加密算法。加密密鑰,即公鑰,與解密密鑰,即私鑰,是非常的不同的。從數(shù)學理論上講,幾乎沒有真正不可逆的算法存在。例如,對于一個輸入‘a(chǎn)’執(zhí)行一個操作得到結(jié)果‘b’,那么我們可以基于‘b’,做一個相對應的操作,導出輸入‘a(chǎn)’。在一些情況下,對于每一種操作,我們可以得到一個確定的值,或者該操作沒有定義(比如,除數(shù)為0)。對于一個沒有定義的操作來講,基于加密算法,可以成功地防止把一個公鑰變換成為私鑰。因此,要想破譯非對稱加密算法,找到那個唯一的密鑰,唯一的方法只能是反復的試驗,而這需要大量的處理時間。
rsa加密算法使用了兩個非常大的素數(shù)來產(chǎn)生公鑰和私鑰。即使從一個公鑰中通過因數(shù)分解可以得到私鑰,但這個運算所包含的計算量是非常巨大的,以至于在現(xiàn)實上是不可行的。加密算法本身也是很慢的,這使得使用rsa算法加密大量的數(shù)據(jù)變的有些不可行。這就使得一些現(xiàn)實中加密算法都基于rsa加密算法。pgp算法(以及大多數(shù)基于rsa算法的加密方法)使用公鑰來加密一個對稱加密算法的密鑰,然后再利用一個快速的對稱加密算法來加密數(shù)據(jù)。這個對稱算法的密鑰是隨機產(chǎn)生的,是保密的,因此,得到這個密鑰的唯一方法就是使用私鑰來解密。
我們舉一個例子:假定現(xiàn)在要加密一些數(shù)據(jù)使用密鑰‘12345’。利用rsa公鑰,使用rsa算法加密這個密鑰‘12345’,并把它放在要加密的數(shù)據(jù)的前面(可能后面跟著一個分割符或文件長度,以區(qū)分數(shù)據(jù)和密鑰),然后,使用對稱加密算法加密正文,使用的密鑰就是‘12345’。當對方收到時,解密程序找到加密過的密鑰,并利用rsa私鑰解密出來,然后再確定出數(shù)據(jù)的開始位置,利用密鑰‘12345’來解密數(shù)據(jù)。這樣就使得一個可靠的經(jīng)過高效加密的數(shù)據(jù)安全地傳輸和解密。
一些簡單的基于rsa算法的加密算法可在下面的站點找到:
ftp://ftp.funet.fi/pub/crypt/cryptography/asymmetric/rsa
三.一個嶄新的多步加密算法
現(xiàn)在又出現(xiàn)了一種新的加密算法,據(jù)說是幾乎不可能被破譯的。這個算法在1998年6月1日才正式公布的。下面詳細的介紹這個算法:
使用一系列的數(shù)字(比如說128位密鑰),來產(chǎn)生一個可重復的但高度隨機化的偽隨機的數(shù)字的序列。一次使用256個表項,使用隨機數(shù)序列來產(chǎn)生密碼轉(zhuǎn)表,如下所示:
把256個隨機數(shù)放在一個距陣中,然后對他們進行排序,使用這樣一種方式(我們要記住最初的位置)使用最初的位置來產(chǎn)生一個表,隨意排序的表,表中的數(shù)字在0到255之間。如果不是很明白如何來做,就可以不管它。但是,下面也提供了一些原碼(在下面)是我們明白是如何來做的。現(xiàn)在,產(chǎn)生了一個具體的256字節(jié)的表。讓這個隨機數(shù)產(chǎn)生器接著來產(chǎn)生這個表中的其余的數(shù),以至于每個表是不同的。下一步,使用"shotgun technique"技術(shù)來產(chǎn)生解碼表?;旧险f,如果 a映射到b,那么b一定可以映射到a,所以b[a[n]] = n.(n是一個在0到255之間的數(shù))。在一個循環(huán)中賦值,使用一個256字節(jié)的解碼表它對應于我們剛才在上一步產(chǎn)生的256字節(jié)的加密表。
使用這個方法,已經(jīng)可以產(chǎn)生這樣的一個表,表的順序是隨機,所以產(chǎn)生這256個字節(jié)的隨機數(shù)使用的是二次偽隨機,使用了兩個額外的16位的密碼.現(xiàn)在,已經(jīng)有了兩張轉(zhuǎn)換表,基本的加密解密是如下這樣工作的。前一個字節(jié)密文是這個256字節(jié)的表的索引?;蛘?,為了提高加密效果,可以使用多余8位的值,甚至使用校驗和或者crc算法來產(chǎn)生索引字節(jié)。假定這個表是256*256的數(shù)組,將會是下面的樣子:
crypto1 = a[crypto0][value]
變量'crypto1'是加密后的數(shù)據(jù),'crypto0'是前一個加密數(shù)據(jù)(或著是前面幾個加密數(shù)據(jù)的一個函數(shù)值)。很自然的,第一個數(shù)據(jù)需要一個“種子”,這個“種子” 是我們必須記住的。如果使用256*256的表,這樣做將會增加密文的長度?;蛘?,可以使用你產(chǎn)生出隨機數(shù)序列所用的密碼,也可能是它的crc校驗和。順便提及的是曾作過這樣一個測試: 使用16個字節(jié)來產(chǎn)生表的索引,以128位的密鑰作為這16個字節(jié)的初始的"種子"。然后,在產(chǎn)生出這些隨機數(shù)的表之后,就可以用來加密數(shù)據(jù),速度達到每秒鐘100k個字節(jié)。一定要保證在加密與解密時都使用加密的值作為表的索引,而且這兩次一定要匹配。
加密時所產(chǎn)生的偽隨機序列是很隨意的,可以設(shè)計成想要的任何序列。沒有關(guān)于這個隨機序列的詳細的信息,解密密文是不現(xiàn)實的。例如:一些ascii碼的序列,如“eeeeeeee"可能被轉(zhuǎn)化成一些隨機的沒有任何意義的亂碼,每一個字節(jié)都依賴于其前一個字節(jié)的密文,而不是實際的值。對于任一個單個的字符的這種變換來說,隱藏了加密數(shù)據(jù)的有效的真正的長度。
如果確實不理解如何來產(chǎn)生一個隨機數(shù)序列,就考慮fibbonacci數(shù)列,使用2個雙字(64位)的數(shù)作為產(chǎn)生隨機數(shù)的種子,再加上第三個雙字來做xor操作。 這個算法產(chǎn)生了一系列的隨機數(shù)。算法如下:
unsigned long dw1, dw2, dw3, dwmask;
int i1;
unsigned long arandom[256];
dw1 = {seed #1};
dw2 = {seed #2};
dwmask = {seed #3};
// this gives you 3 32-bit "seeds", or 96 bits total
for(i1=0; i1 < 256; i1++)
{
dw3 = (dw1 + dw2) ^ dwmask;
arandom[i1] = dw3;
dw1 = dw2;
dw2 = dw3;
}
如果想產(chǎn)生一系列的隨機數(shù)字,比如說,在0和列表中所有的隨機數(shù)之間的一些數(shù),就可以使用下面的方法:
int __cdecl mysortproc(void *p1, void *p2)
{
unsigned long **pp1 = (unsigned long **)p1;
unsigned long **pp2 = (unsigned long **)p2;
if(**pp1 < **pp2)
return(-1);
else if(**pp1 > *pp2)
return(1);
return(0);
}
...
int i1;
unsigned long *aprandom[256];
unsigned long arandom[256];
// same array as before, in this case
int aresult[256];
// results go here
for(i1=0; i1 < 256; i1++)
{
aprandom[i1] = arandom + i1;
}
// now sort it
qsort(aprandom, 256, sizeof(*aprandom), mysortproc);
// final step - offsets for pointers are placed into output array
for(i1=0; i1 < 256; i1++)
{
aresult[i1] = (int)(aprandom[i1] - arandom);
}
...
變量'aresult'中的值應該是一個排過序的唯一的一系列的整數(shù)的數(shù)組,整數(shù)的值的范圍均在0到255之間。這樣一個數(shù)組是非常有用的,例如:對一個字節(jié)對字節(jié)的轉(zhuǎn)換表,就可以很容易并且非??煽康膩懋a(chǎn)生一個短的密鑰(經(jīng)常作為一些隨機數(shù)的種子)。這樣一個表還有其他的用處,比如說:來產(chǎn)生一個隨機的字符,計算機游戲中一個物體的隨機的位置等等。上面的例子就其本身而言并沒有構(gòu)成一個加密算法,只是加密算法一個組成部分。
作為一個測試,開發(fā)了一個應用程序來測試上面所描述的加密算法。程序本身都經(jīng)過了幾次的優(yōu)化和修改,來提高隨機數(shù)的真正的隨機性和防止會產(chǎn)生一些短的可重復的用于加密的隨機數(shù)。用這個程序來加密一個文件,破解這個文件可能會需要非常巨大的時間以至于在現(xiàn)實上是不可能的。
四.結(jié)論:
由于在現(xiàn)實生活中,我們要確保一些敏感的數(shù)據(jù)只能被有相應權(quán)限的人看到,要確保信息在傳輸?shù)倪^程中不會被篡改,截取,這就需要很多的安全系統(tǒng)大量的應用于政府、大公司以及個人系統(tǒng)。數(shù)據(jù)加密是肯定可以被破解的,但我們所想要的是一個特定時期的安全,也就是說,密文的破解應該是足夠的困難,在現(xiàn)實上是不可能的,尤其是短時間內(nèi)。
參考文獻
1 ./pgpi.com/
cyber knights(new link) members.tripod.com/cyberkt/
(old link: netnet.net/~merlin/knights/)
2 . crypto chamber jyu.fi/~paasivir/crypt/
3 . ssh cryptograph a-z (includes info on ssl and https) ssh.fi/tech/crypto/
4 . funet' cryptology ftp (yet another finland resource) ftp://ftp.funet.fi/pub/crypt/
a great enigma article, how the code was broken by polish scientists
members.aol.com/nbrass/1enigma.htm
5 . ftp site in uk ftp://sable.ox.ac.uk/pub/crypto/
6 . australian ftp site ftp://ftp.psy.uq.oz.au/pub/
7 . replay associates ftp archive ftp://utopia.hacktic.nl/pub/replay/pub/crypto/
8 . rsa data security (why not include them too!) rsa.com/
一:數(shù)據(jù)加密方法
在傳統(tǒng)上,我們有幾種方法來加密數(shù)據(jù)流。所有這些方法都可以用軟件很容易的實現(xiàn),但是當我們只知道密文的時候,是不容易破譯這些加密算法的(當同時有原文和密文時,破譯加密算法雖然也不是很容易,但已經(jīng)是可能的了)。最好的加密算法對系統(tǒng)性能幾乎沒有影響,并且還可以帶來其他內(nèi)在的優(yōu)點。例如,大家都知道的pkzip,它既壓縮數(shù)據(jù)又加密數(shù)據(jù)。又如,dbms的一些軟件包總是包含一些加密方法以使復制文件這一功能對一些敏感數(shù)據(jù)是無效的,或者需要用戶的密碼。所有這些加密算法都要有高效的加密和解密能力。
幸運的是,在所有的加密算法中最簡單的一種就是“置換表”算法,這種算法也能很好達到加密的需要。每一個數(shù)據(jù)段(總是一個字節(jié))對應著“置換表”中的一個偏移量,偏移量所對應的值就輸出成為加密后的文件。加密程序和解密程序都需要一個這樣的“置換表”。事實上,80x86 cpu系列就有一個指令‘xlat’在硬件級來完成這樣的工作。這種加密算法比較簡單,加密解密速度都很快,但是一旦這個“置換表”被對方獲得,那這個加密方案就完全被識破了。更進一步講,這種加密算法對于黑客破譯來講是相當直接的,只要找到一個“置換表”就可以了。這種方法在計算機出現(xiàn)之前就已經(jīng)被廣泛的使用。
對這種“置換表”方式的一個改進就是使用2個或者更多的“置換表”,這些表都是基于數(shù)據(jù)流中字節(jié)的位置的,或者基于數(shù)據(jù)流本身。這時,破譯變的更加困難,因為黑客必須正確的做幾次變換。通過使用更多的“置換表”,并且按偽隨機的方式使用每個表,這種改進的加密方法已經(jīng)變的很難破譯。比如,我們可以對所有的偶數(shù)位置的數(shù)據(jù)使用a表,對所有的奇數(shù)位置使用b表,即使黑客獲得了明文和密文,他想破譯這個加密方案也是非常困難的,除非黑客確切的知道用了兩張表。
與使用“置換表”相類似,“變換數(shù)據(jù)位置”也在計算機加密中使用。但是,這需要更多的執(zhí)行時間。從輸入中讀入明文放到一個buffer中,再在buffer中對他們重排序,然后按這個順序再輸出。解密程序按相反的順序還原數(shù)據(jù)。這種方法總是和一些別的加密算法混合使用,這就使得破譯變的特別的困難,幾乎有些不可能了。例如,有這樣一個詞,變換起字母的順序,slient 可以變?yōu)閘isten,但所有的字母都沒有變化,沒有增加也沒有減少,但是字母之間的順序已經(jīng)變化了。
但是,還有一種更好的加密算法,只有計算機可以做,就是字/字節(jié)循環(huán)移位和xor操作。如果我們把一個字或字節(jié)在一個數(shù)據(jù)流內(nèi)做循環(huán)移位,使用多個或變化的方向(左移或右移),就可以迅速的產(chǎn)生一個加密的數(shù)據(jù)流。這種方法是很好的,破譯它就更加困難!而且,更進一步的是,如果再使用xor操作,按位做異或操作,就就使破譯密碼更加困難了。如果再使用偽隨機的方法,這涉及到要產(chǎn)生一系列的數(shù)字,我們可以使用fibbonaci數(shù)列。對數(shù)列所產(chǎn)生的數(shù)做模運算(例如模3),得到一個結(jié)果,然后循環(huán)移位這個結(jié)果的次數(shù),將使破譯次密碼變的幾乎不可能!但是,使用fibbonaci數(shù)列這種偽隨機的方式所產(chǎn)生的密碼對我們的解密程序來講是非常容易的。
在一些情況下,我們想能夠知道數(shù)據(jù)是否已經(jīng)被篡改了或被破壞了,這時就需要產(chǎn)生一些校驗碼,并且把這些校驗碼插入到數(shù)據(jù)流中。這樣做對數(shù)據(jù)的防偽與程序本身都是有好處的。但是感染計算機程序的病毒才不會在意這些數(shù)據(jù)或程序是否加過密,是否有數(shù)字簽名。所以,加密程序在每次load到內(nèi)存要開始執(zhí)行時,都要檢查一下本身是否被病毒感染,對與需要加、解密的文件都要做這種檢查!很自然,這樣一種方法體制應該保密的,因為病毒程序的編寫者將會利用這些來破壞別人的程序或數(shù)據(jù)。因此,在一些反病毒或殺病毒軟件中一定要使用加密技術(shù)。
循環(huán)冗余校驗是一種典型的校驗數(shù)據(jù)的方法。對于每一個數(shù)據(jù)塊,它使用位循環(huán)移位和xor操作來產(chǎn)生一個16位或32位的校驗和 ,這使得丟失一位或兩個位的錯誤一定會導致校驗和出錯。這種方式很久以來就應用于文件的傳輸,例如 xmodem-crc。 這是方法已經(jīng)成為標準,而且有詳細的文檔。但是,基于標準crc算法的一種修改算法對于發(fā)現(xiàn)加密數(shù)據(jù)塊中的錯誤和文件是否被病毒感染是很有效的。
二.基于公鑰的加密算法
一個好的加密算法的重要特點之一是具有這種能力:可以指定一個密碼或密鑰,并用它來加密明文,不同的密碼或密鑰產(chǎn)生不同的密文。這又分為兩種方式:對稱密鑰算法和非對稱密鑰算法。所謂對稱密鑰算法就是加密解密都使用相同的密鑰,非對稱密鑰算法就是加密解密使用不同的密鑰。非常著名的pgp公鑰加密以及rsa加密方法都是非對稱加密算法。加密密鑰,即公鑰,與解密密鑰,即私鑰,是非常的不同的。從數(shù)學理論上講,幾乎沒有真正不可逆的算法存在。例如,對于一個輸入‘a(chǎn)’執(zhí)行一個操作得到結(jié)果‘b’,那么我們可以基于‘b’,做一個相對應的操作,導出輸入‘a(chǎn)’。在一些情況下,對于每一種操作,我們可以得到一個確定的值,或者該操作沒有定義(比如,除數(shù)為0)。對于一個沒有定義的操作來講,基于加密算法,可以成功地防止把一個公鑰變換成為私鑰。因此,要想破譯非對稱加密算法,找到那個唯一的密鑰,唯一的方法只能是反復的試驗,而這需要大量的處理時間。
rsa加密算法使用了兩個非常大的素數(shù)來產(chǎn)生公鑰和私鑰。即使從一個公鑰中通過因數(shù)分解可以得到私鑰,但這個運算所包含的計算量是非常巨大的,以至于在現(xiàn)實上是不可行的。加密算法本身也是很慢的,這使得使用rsa算法加密大量的數(shù)據(jù)變的有些不可行。這就使得一些現(xiàn)實中加密算法都基于rsa加密算法。pgp算法(以及大多數(shù)基于rsa算法的加密方法)使用公鑰來加密一個對稱加密算法的密鑰,然后再利用一個快速的對稱加密算法來加密數(shù)據(jù)。這個對稱算法的密鑰是隨機產(chǎn)生的,是保密的,因此,得到這個密鑰的唯一方法就是使用私鑰來解密。
我們舉一個例子:假定現(xiàn)在要加密一些數(shù)據(jù)使用密鑰‘12345’。利用rsa公鑰,使用rsa算法加密這個密鑰‘12345’,并把它放在要加密的數(shù)據(jù)的前面(可能后面跟著一個分割符或文件長度,以區(qū)分數(shù)據(jù)和密鑰),然后,使用對稱加密算法加密正文,使用的密鑰就是‘12345’。當對方收到時,解密程序找到加密過的密鑰,并利用rsa私鑰解密出來,然后再確定出數(shù)據(jù)的開始位置,利用密鑰‘12345’來解密數(shù)據(jù)。這樣就使得一個可靠的經(jīng)過高效加密的數(shù)據(jù)安全地傳輸和解密。
一些簡單的基于rsa算法的加密算法可在下面的站點找到:
ftp://ftp.funet.fi/pub/crypt/cryptography/asymmetric/rsa
三.一個嶄新的多步加密算法
現(xiàn)在又出現(xiàn)了一種新的加密算法,據(jù)說是幾乎不可能被破譯的。這個算法在1998年6月1日才正式公布的。下面詳細的介紹這個算法:
使用一系列的數(shù)字(比如說128位密鑰),來產(chǎn)生一個可重復的但高度隨機化的偽隨機的數(shù)字的序列。一次使用256個表項,使用隨機數(shù)序列來產(chǎn)生密碼轉(zhuǎn)表,如下所示:
把256個隨機數(shù)放在一個距陣中,然后對他們進行排序,使用這樣一種方式(我們要記住最初的位置)使用最初的位置來產(chǎn)生一個表,隨意排序的表,表中的數(shù)字在0到255之間。如果不是很明白如何來做,就可以不管它。但是,下面也提供了一些原碼(在下面)是我們明白是如何來做的?,F(xiàn)在,產(chǎn)生了一個具體的256字節(jié)的表。讓這個隨機數(shù)產(chǎn)生器接著來產(chǎn)生這個表中的其余的數(shù),以至于每個表是不同的。下一步,使用"shotgun technique"技術(shù)來產(chǎn)生解碼表?;旧险f,如果 a映射到b,那么b一定可以映射到a,所以b[a[n]] = n.(n是一個在0到255之間的數(shù))。在一個循環(huán)中賦值,使用一個256字節(jié)的解碼表它對應于我們剛才在上一步產(chǎn)生的256字節(jié)的加密表。
使用這個方法,已經(jīng)可以產(chǎn)生這樣的一個表,表的順序是隨機,所以產(chǎn)生這256個字節(jié)的隨機數(shù)使用的是二次偽隨機,使用了兩個額外的16位的密碼.現(xiàn)在,已經(jīng)有了兩張轉(zhuǎn)換表,基本的加密解密是如下這樣工作的。前一個字節(jié)密文是這個256字節(jié)的表的索引?;蛘?,為了提高加密效果,可以使用多余8位的值,甚至使用校驗和或者crc算法來產(chǎn)生索引字節(jié)。假定這個表是256*256的數(shù)組,將會是下面的樣子:
crypto1 = a[crypto0][value]
變量'crypto1'是加密后的數(shù)據(jù),'crypto0'是前一個加密數(shù)據(jù)(或著是前面幾個加密數(shù)據(jù)的一個函數(shù)值)。很自然的,第一個數(shù)據(jù)需要一個“種子”,這個“種子” 是我們必須記住的。如果使用256*256的表,這樣做將會增加密文的長度?;蛘?,可以使用你產(chǎn)生出隨機數(shù)序列所用的密碼,也可能是它的crc校驗和。順便提及的是曾作過這樣一個測試: 使用16個字節(jié)來產(chǎn)生表的索引,以128位的密鑰作為這16個字節(jié)的初始的"種子"。然后,在產(chǎn)生出這些隨機數(shù)的表之后,就可以用來加密數(shù)據(jù),速度達到每秒鐘100k個字節(jié)。一定要保證在加密與解密時都使用加密的值作為表的索引,而且這兩次一定要匹配。
加密時所產(chǎn)生的偽隨機序列是很隨意的,可以設(shè)計成想要的任何序列。沒有關(guān)于這個隨機序列的詳細的信息,解密密文是不現(xiàn)實的。例如:一些ascii碼的序列,如“eeeeeeee"可能被轉(zhuǎn)化成一些隨機的沒有任何意義的亂碼,每一個字節(jié)都依賴于其前一個字節(jié)的密文,而不是實際的值。對于任一個單個的字符的這種變換來說,隱藏了加密數(shù)據(jù)的有效的真正的長度。
如果確實不理解如何來產(chǎn)生一個隨機數(shù)序列,就考慮fibbonacci數(shù)列,使用2個雙字(64位)的數(shù)作為產(chǎn)生隨機數(shù)的種子,再加上第三個雙字來做xor操作。 這個算法產(chǎn)生了一系列的隨機數(shù)。算法如下:
unsigned long dw1, dw2, dw3, dwmask;
int i1;
unsigned long arandom[256];
dw1 = {seed #1};
dw2 = {seed #2};
dwmask = {seed #3};
// this gives you 3 32-bit "seeds", or 96 bits total
for(i1=0; i1 < 256; i1++)
{
dw3 = (dw1 + dw2) ^ dwmask;
arandom[i1] = dw3;
dw1 = dw2;
dw2 = dw3;
}
如果想產(chǎn)生一系列的隨機數(shù)字,比如說,在0和列表中所有的隨機數(shù)之間的一些數(shù),就可以使用下面的方法:
int __cdecl mysortproc(void *p1, void *p2)
{
unsigned long **pp1 = (unsigned long **)p1;
unsigned long **pp2 = (unsigned long **)p2;
if(**pp1 < **pp2)
return(-1);
else if(**pp1 > *pp2)
return(1);
return(0);
}
...
int i1;
unsigned long *aprandom[256];
unsigned long arandom[256]; // same array as before, in this case
int aresult[256]; // results go here
for(i1=0; i1 < 256; i1++)
{
aprandom[i1] = arandom + i1;
}
// now sort it
qsort(aprandom, 256, sizeof(*aprandom), mysortproc);
// final step - offsets for pointers are placed into output array
for(i1=0; i1 < 256; i1++)
{
aresult[i1] = (int)(aprandom[i1] - arandom);
}
...
變量'aresult'中的值應該是一個排過序的唯一的一系列的整數(shù)的數(shù)組,整數(shù)的值的范圍均在0到255之間。這樣一個數(shù)組是非常有用的,例如:對一個字節(jié)對字節(jié)的轉(zhuǎn)換表,就可以很容易并且非常可靠的來產(chǎn)生一個短的密鑰(經(jīng)常作為一些隨機數(shù)的種子)。這樣一個表還有其他的用處,比如說:來產(chǎn)生一個隨機的字符,計算機游戲中一個物體的隨機的位置等等。上面的例子就其本身而言并沒有構(gòu)成一個加密算法,只是加密算法一個組成部分。
作為一個測試,開發(fā)了一個應用程序來測試上面所描述的加密算法。程序本身都經(jīng)過了幾次的優(yōu)化和修改,來提高隨機數(shù)的真正的隨機性和防止會產(chǎn)生一些短的可重復的用于加密的隨機數(shù)。用這個程序來加密一個文件,破解這個文件可能會需要非常巨大的時間以至于在現(xiàn)實上是不可能的。
四.結(jié)論:
由于在現(xiàn)實生活中,我們要確保一些敏感的數(shù)據(jù)只能被有相應權(quán)限的人看到,要確保信息在傳輸?shù)倪^程中不會被篡改,截取,這就需要很多的安全系統(tǒng)大量的應用于政府、大公司以及個人系統(tǒng)。數(shù)據(jù)加密是肯定可以被破解的,但我們所想要的是一個特定時期的安全,也就是說,密文的破解應該是足夠的困難,在現(xiàn)實上是不可能的,尤其是短時間內(nèi)。
參考文獻:
1 . pgp! pgpi.com/
cyber knights(new link) members.tripod.com/cyberkt/
(old link: netnet.com/~merlin/knights/ )
2 . crypto chamber jyu.fi/~paasivir/crypt/
3 . ssh cryptograph a-z (includes info on ssl and https) ssh.fi/tech/crypto/
[關(guān)鍵字] 信息 數(shù)據(jù)加密 對稱密鑰加密技術(shù) 非對稱密鑰加密技術(shù)
隨著全球經(jīng)濟一體化的到來,信息技術(shù)的快速發(fā)展和信息交換的大量增加給整個社會帶來了新的驅(qū)動力和創(chuàng)新意識。信息技術(shù)的高速度發(fā)展,信息傳輸?shù)陌踩找嬉鹑藗兊年P(guān)注。世界各個國家分別從法律上、管理上加強了對數(shù)據(jù)的安全保護,而從技術(shù)上采取措施才是有效手段,技術(shù)上的措施分別可以從軟件和硬件兩方面入手。隨著對信息數(shù)據(jù)安全的要求的提高,數(shù)據(jù)加密技術(shù)和物理防范技術(shù)也在不斷的發(fā)展。數(shù)據(jù)加密是防止數(shù)據(jù)在數(shù)據(jù)存儲和和傳輸中失密的有效手段。信息數(shù)據(jù)加密技術(shù)是利用數(shù)學或物理手段,對電子信息在傳輸過程中和存儲體內(nèi)進行保護,以防止泄漏的技術(shù)。信息數(shù)據(jù)加密與解密從宏觀上講是非常簡單的,很容易掌握,可以很方便的對機密數(shù)據(jù)進行加密和解密。從而實現(xiàn)對數(shù)據(jù)的安全保障。
1.信息數(shù)據(jù)加密技術(shù)的基本概念
信息數(shù)據(jù)加密就是通過信息的變換或編碼,把原本一個較大范圍的人(或者機器)都能夠讀懂、理解和識別的信息(這些信息可以是語音、文字、圖像和符號等等)通過一定的方法(算法),使之成為難以讀懂的亂碼型的信息,從而達到保障信息安全,使其不被非法盜用或被非相關(guān)人員越權(quán)閱讀的目的。在加密過程中原始信息被稱為“明文”,明文經(jīng)轉(zhuǎn)換加密后得到的形式就是“密文”。那么由“明文”變成“密文”的過程稱為“加密”,而把密文轉(zhuǎn)變?yōu)槊魑牡倪^程稱為“解密”。
2. 信息數(shù)據(jù)加密技術(shù)分類
信息數(shù)據(jù)加密技術(shù)一般來說可以分為兩種,對稱密鑰加密技術(shù)及非對稱密鑰加密技術(shù)。
2.1 對稱密鑰加密技術(shù)
對稱密鑰加密技術(shù),又稱專用密鑰加密技術(shù)或單密鑰加密技術(shù)。其加密和解密時使用同一個密鑰,即同一個算法。對稱密鑰是一種比較傳統(tǒng)的加密方式,是最簡單方式。在進行對稱密鑰加密時,通信雙方需要交換彼此密鑰,當需要給對方發(fā)送信息數(shù)據(jù)時,用自己的加密密鑰進行加密,而在需要接收方信息數(shù)據(jù)的時候,收到后用對方所給的密鑰進行解密。在對稱密鑰中,密鑰的管理極為重要,一旦密鑰丟失,密文將公開于世。這種加密方式在與多方通信時變得很復雜,因為需要保存很多密鑰,而且密鑰本身的安全就是一個必須面對的大問題。
對稱密鑰加密算法主要包括:DES、3DES、IDEA、FEAL、BLOWFISH等。
DES 算法的數(shù)據(jù)分組長度為64 位,初始置換函數(shù)接受長度為64位的明文輸入,密文分組長度也是64 位,末置換函數(shù)輸出64位的密文;使用的密鑰為64 位,有效密鑰長度為56 位,有8 位用于奇偶校驗。DES的解密算法與加密算法完全相同,但密鑰的順序正好相反。所以DES是一種對二元數(shù)據(jù)進行加密的算法。DES加密過程是:對給定的64 位比特的明文通過初始置換函數(shù)進行重新排列,產(chǎn)生一個輸出;按照規(guī)則迭代,置換后的輸出數(shù)據(jù)的位數(shù)要比迭代前輸入的位數(shù)少;進行逆置換,得到密文。
DES 算法還是比別的加密算法具有更高的安全性,因為DES算法具有相當高的復雜性,特別是在一些保密性級別要求高的情況下使用三重DES 或3DES 系統(tǒng)較可靠。DES算法由于其便于掌握,經(jīng)濟有效,使其應用范圍更為廣泛。目前除了用窮舉搜索法可以對DES 算法進行有效地攻擊之外, 還沒有發(fā)現(xiàn)其它有效的攻擊辦法。
IDEA算法1990年由瑞士聯(lián)邦技術(shù)協(xié)會的Xuejia Lai和James Massey開發(fā)的。經(jīng)歷了大量的詳細審查,對密碼分析具有很強的抵抗能力,在多種商業(yè)產(chǎn)品中被使用。IDEA以64位大小的數(shù)據(jù)塊加密的明文塊進行分組,密匙長度為128位,它基于“相異代數(shù)群上的混合運算”設(shè)計思想算法用硬件和軟件實現(xiàn)都很容易且比DES在實現(xiàn)上快的多。
IDEA算法輸入的64位數(shù)據(jù)分組一般被分成4個16位子分組:A1,A2,A3和A4。這4個子分組成為算法輸入的第一輪數(shù)據(jù),總共有8輪。在每一輪中,這4個子分組相互相異或,相加,相乘,且與6個16位子密鑰相異或,相加,相乘。在輪與輪間,第二和第三個子分組交換。最后在輸出變換中4個子分組與4個子密鑰進行運算。
FEAL算法不適用于較小的系統(tǒng),它的提出是著眼于當時的DES只用硬件去實現(xiàn),F(xiàn)EAL算法是一套類似美國DES的分組加密算法。但FEAL在每一輪的安全強度都比DES高,是比較適合通過軟件來實現(xiàn)的。FEAL沒有使用置換函數(shù)來混淆加密或解密過程中的數(shù)據(jù)。FEAL使用了異或(XOR)、旋轉(zhuǎn)(Rotation)、加法與模(Modulus)運算,F(xiàn)EAL中子密鑰的生成使用了8輪迭代循環(huán),每輪循環(huán)產(chǎn)生2個16bit的子密鑰,共產(chǎn)生16個子密鑰運用于加密算法中。
2.2 非對稱密鑰加密技術(shù)
非對稱密鑰加密技術(shù)又稱公開密鑰加密,即非對稱加密算法需要兩個密鑰,公開密鑰和私有密鑰。有一把公用的加密密鑰,有多把解密密鑰,加密和解密時使用不同的密鑰,即不同的算法,雖然兩者之間存在一定的關(guān)系,但不可能輕易地從一個推導出另一個。使用私有密鑰對數(shù)據(jù)信息進行加密,必須使用對應的公開密鑰才能解密,而 公開密鑰對數(shù)據(jù)信息進行加密,只有對應的私有密鑰才能解密。在非對稱密鑰加密技術(shù)中公開密鑰和私有密鑰都是一組長度很大、數(shù)字上具有相關(guān)性的素數(shù)。其中的一個密鑰不可能翻譯出信息數(shù)據(jù),只有使用另一個密鑰才能解密,每個用戶只能得到唯一的一對密鑰,一個是公開密鑰,一個是私有密鑰,公開密鑰保存在公共區(qū)域,可在用戶中傳遞,而私有密鑰則必須放在安全的地方。
非對稱密鑰加密技術(shù)的典型算法是RSA算法。RSA算法是世界上第一個既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的非對稱性加密算法,RSA算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美國麻省理工學院)開發(fā)的。RSA是目前最有影響力的公鑰加密算法,它能夠抵抗到目前為止已知的所有密碼攻擊,已被ISO推薦為公鑰數(shù)據(jù)加密標準。
RSA算法的安全性依賴于大數(shù)分解,但現(xiàn)在還沒有證明破解RSA就一定需要作大數(shù)分解。所以是否等同于大數(shù)分解一直沒有理論證明的支持。由于RSA算法進行的都是大數(shù)計算,所以無論是在軟件還是硬件方面實現(xiàn)相對于DES算法RSA算法最快的情況也會慢上好幾倍。速度一直是RSA算法的缺陷。
3.總結(jié)
隨著計算機網(wǎng)絡(luò)的飛速發(fā)展,在實現(xiàn)資源共享、信息海量的同時,信息安全達到了前所未有的需要程度,信息加密技術(shù)也凸顯了其必不可少的地位,同時也加密技術(shù)帶來了前所未有的發(fā)展需求,加密技術(shù)發(fā)展空間無限。
參考文獻:
[1] IDEA算法 中國信息安全組織 2004-07-17.
[2] baike.省略/view/1364549.htm.
[3]淺析信息加密技術(shù) 張嶺松 《科技信息》 2010年33期.
常永亮 (飛行試驗研究院測試所 陜西西安 710089)
論文關(guān)鍵詞:數(shù)據(jù)庫,加密,安全
一、數(shù)據(jù)庫加密應滿足的要求
由于數(shù)據(jù)庫具有數(shù)據(jù)復雜、數(shù)據(jù)的查詢操作非常頻繁且數(shù)據(jù)存儲時限相對較長等特點,所以應用于數(shù)據(jù)庫的加、解密算法及相應的密鑰管理機制應滿足以下要求:
(1)數(shù)據(jù)庫加密系統(tǒng)應滿足的首要條件是保證數(shù)據(jù)的安全性。在此方面要求加密算法保證數(shù)據(jù)的保密性和完整性,防止未授權(quán)的數(shù)據(jù)訪問和修改。
(2)數(shù)據(jù)庫中存在大量的查詢操作,因此加解密效率要求較高,不能引起數(shù)據(jù)庫系統(tǒng)的性能大幅度下降。
(3)數(shù)據(jù)庫組織結(jié)構(gòu)對于數(shù)據(jù)庫管理系統(tǒng)而言不能有太大的變動,應盡可能做到明文和密文長度相等或至少相當。
(4)由于時限較長和密鑰的復雜,密鑰管理機制應更加安全、靈活和堅固。
二、數(shù)據(jù)庫加密的常用辦法
數(shù)據(jù)加密技術(shù)按照實現(xiàn)的方法可劃分為靜態(tài)加密和動態(tài)加密,從實現(xiàn)的層次上則可分為文件級加密和存儲設(shè)備級加密。
(1)靜態(tài)加密與動態(tài)加密
靜態(tài)加密是指在加密期間,待加密的數(shù)據(jù)處于未使用狀態(tài),這些數(shù)據(jù)一旦加密,在使用前,需首先通過靜態(tài)解密得到明文,然后才能使用。目前市場上許多加密軟件產(chǎn)品就屬于這種加密方式。
與靜態(tài)加密不同,動態(tài)加密是指數(shù)據(jù)在使用過程中自動對數(shù)據(jù)進行加密或解密操作,無需用戶的干預,合法用戶在使用加密的文件前,也不需要進行解密操作即可使用,表面看來,訪問加密的文件和訪問未加密的文件基本相同,對合法用戶來說,這些加密文件是“透明的”,即好像沒有加密一樣,但對于沒有訪問權(quán)限的用戶,即使通過其它非常規(guī)手段得到了這些文件,由于文件是加密的,因此也無法使用。由于動態(tài)加密技術(shù)不僅不改變用戶的使用習慣,而且無需用戶太多的干預操作即可實現(xiàn)文檔的安全,因而近年來得到了廣泛的應用。
由于動態(tài)加密要實時加密數(shù)據(jù),必須動態(tài)跟蹤需要加密的數(shù)據(jù)流,而且其實現(xiàn)的層次一般位于系統(tǒng)內(nèi)核中,因此,從實現(xiàn)的技術(shù)角度看,實現(xiàn)動態(tài)加密要比靜態(tài)加密難的多,需要解決的技術(shù)難點也遠遠超過靜態(tài)加密。
(2)文件級動態(tài)加解密技術(shù)
在文件系統(tǒng)層,不僅能夠獲得文件的各種信息,而且能夠獲得訪問這些文件的進程信息和用戶信息等,因此,可以研制出功能非常強大的文檔安全產(chǎn)品。就動態(tài)加解密產(chǎn)品而言,有些文件系統(tǒng)自身就支持文件的動態(tài)加解密,如Windows系統(tǒng)中的NTFS文件系統(tǒng),其本身就提供了EFS支持,但作為一種通用的系統(tǒng),雖然提供了細粒度的控制能力(如可以控制到每個文件),但在實際應用中,其加密對象一般以分區(qū)或目錄為單位,難以做到滿足各種用戶個性化的要求,如自動加密某些類型文件等。雖然有某些不足,但支持動態(tài)加密的文件系統(tǒng)在某種程度上可以提供和磁盤級加密技術(shù)相匹敵的安全性。由于文件系統(tǒng)提供的動態(tài)加密技術(shù)難以滿足用戶的個性化需求,因此,為第三方提供動態(tài)加解密安全產(chǎn)品提供了足夠的空間。
要研發(fā)在文件級的動態(tài)加解密安全產(chǎn)品,雖然與具體的操作系統(tǒng)有關(guān),但仍有多種方法可供選擇,一般可通過Hook或過濾驅(qū)動等方式嵌入到文件系統(tǒng)中,使其成為文件系統(tǒng)的一部分,從某種意義上來說,第三方的動態(tài)加解密產(chǎn)品可以看作是文件系統(tǒng)的一個功能擴展,這種擴展往往以模塊化的形式出現(xiàn),能夠根據(jù)需要進行掛接或卸載,從而能夠滿足用戶的各種需求,這是作為文件系統(tǒng)內(nèi)嵌的動態(tài)加密系統(tǒng)難以做到的。
三、數(shù)據(jù)庫加密對數(shù)據(jù)庫的影響
數(shù)據(jù)加密是通過對明文進行復雜的加密操作,進而無法發(fā)現(xiàn)明文和密文之間、密文和密鑰之間的內(nèi)在關(guān)系,也就是說經(jīng)過加密的數(shù)據(jù)經(jīng)得起來自操作系統(tǒng)和數(shù)據(jù)庫管理系統(tǒng)的攻擊。但在數(shù)據(jù)庫中以密文形式存在的敏感數(shù)據(jù)無法使用數(shù)據(jù)庫管理系統(tǒng)的一些功能。數(shù)據(jù)庫管理系統(tǒng)的功能比較完備,然而數(shù)據(jù)庫數(shù)據(jù)加密以后,數(shù)據(jù)庫管理系統(tǒng)一些功能將無法直接使用。
1、加密字段不能實現(xiàn)索引功能。
為了達到迅速查詢的目的,數(shù)據(jù)庫文件需要建立一些索引。索引建立和應用必須是明文狀態(tài),否則將失去索引的作用。有的DBMS中可以建立索引,這類索引也需要在明文狀態(tài)下建立、維護和使用。
2、表間的連接碼字段不能加密。
數(shù)據(jù)模型規(guī)范化以后,數(shù)據(jù)庫表之間存在著密切的聯(lián)系,這種相關(guān)性往往是通過局部編碼聯(lián)系的,這些編碼若加密就無法進行表與表之間的連接運算。
3、無法實現(xiàn)對數(shù)據(jù)制約因素的定義。
數(shù)據(jù)庫管理系統(tǒng)定義了數(shù)據(jù)之間的制約規(guī)則。數(shù)據(jù)一旦加密,DBMS將無法實現(xiàn)這一功能,而且,值域的定義也無法進行。
4、密文數(shù)據(jù)無法實現(xiàn)SQL的排序、分組和分類功能。
SELECT語句中的Group、Orderby、Having子句分別完成分組、排序、分類等操作。這些子句的操作對象如果是加密數(shù)據(jù),那么解密后的明文數(shù)據(jù)將失去原語句的分組、排序、分類作用,顯然這不是用戶所需要的。
5、SQL語言中的內(nèi)部函數(shù)將對加密數(shù)據(jù)失去作用。
6、BDMS對各種類型數(shù)據(jù)均提供了一些內(nèi)部函數(shù),這些函數(shù)不能直接作用于加密數(shù)據(jù)。
7、BDMS的一些應用開發(fā)工具的使用受到限制。
DBMS的一些應用開發(fā)工具不能直接對加密數(shù)據(jù)進行操作,因而它們的使用會受到限制。
數(shù)據(jù)庫加密影響了一些數(shù)據(jù)庫管理系統(tǒng)的功能,如閱讀語句中的函數(shù)、排序、分組等,但可以通過組件技術(shù)來實現(xiàn)這些功能,如可采用SQL解釋器。所以說數(shù)據(jù)庫加密以后,DBMS的一些功能將無法直接使用,但可以在DBMS外層的SMS(安全管理系統(tǒng))中增加組件來實現(xiàn)這些功能。
四、結(jié)束語
數(shù)據(jù)庫是數(shù)據(jù)管理的最新技術(shù),是計算機科學的重要分支。建立一個滿足各級部門信息處理要求的、行之有效的信息系統(tǒng),也成為一個企業(yè)或組織生存和發(fā)展的重要條件。因此,作為信息系統(tǒng)核心和基礎(chǔ)的數(shù)據(jù)庫技術(shù)得到越來越廣泛的應用,數(shù)據(jù)庫技術(shù)因現(xiàn)實的需求迅速發(fā)展。通過研究,人們認識到數(shù)據(jù)庫安全與保密這一領(lǐng)域研究的重要性和迫切性。在數(shù)據(jù)庫安全和加密技術(shù)的研究方面,只是做了一些嘗試性的工作,許多細節(jié)有待于進一步深入。
參考文獻
[1] 張敏等.數(shù)據(jù)庫安全[M].北京:科學出版社,2005
[2] 劉啟軍.數(shù)據(jù)庫與信息系統(tǒng)安全[M].北京:電子工業(yè)出版社,2001
關(guān)鍵詞:數(shù)據(jù)庫 加密 安全
中圖分類號:TP309.7 文獻標識碼:A 文章編號:1007-9416(2016)05-0000-00
1 數(shù)據(jù)庫加密技術(shù)的要求
鑒于數(shù)據(jù)庫所存儲的數(shù)據(jù)具有一定的復雜性、執(zhí)行查詢操作的頻繁性、數(shù)據(jù)存儲的長期性等特征,對于數(shù)據(jù)庫的加解密算法及對應的密鑰管理機制要具備以下幾點:
(1)數(shù)據(jù)庫加密系統(tǒng)要充分保證數(shù)據(jù)的安全性,這點體現(xiàn)在加密算法對于數(shù)據(jù)的保密性及完整性的要求,它有效的防止了對未授權(quán)數(shù)據(jù)的訪問和修改。(2)應用數(shù)據(jù)庫時頻繁的查詢操作,需要具備高強度的解密效率,避免造成數(shù)據(jù)庫系統(tǒng)性能的大幅度下降。(3)明文與密文的長度要盡可能的做到相等或相當,相對于數(shù)據(jù)庫管理系統(tǒng)而言數(shù)據(jù)庫結(jié)構(gòu)的變動差異不可過大。(4)數(shù)據(jù)存儲時間久且密鑰又較為復雜,這需要更為堅固、靈活且安全的密鑰管理機制。
2 數(shù)據(jù)庫加密的方法
(1)靜態(tài)加密技術(shù)。靜態(tài)加密是指實施加密時待加密文件已存在但未使用,通過密碼、密鑰證書或數(shù)字簽名的方式進行加密,實施加密后使用時必須先通過解密取得明文方可使用的加密方法。此種方式一般應用于應用系統(tǒng)或軟件加密當中。(2)動態(tài)加密技術(shù)。動態(tài)加密是指動態(tài)的跟蹤數(shù)據(jù)流,對相關(guān)的數(shù)據(jù)自動進行時時加解密操作,無需人工參與亦不會對用戶有任何影響,有權(quán)限的用戶在使用已加密文件時,無需先取得明文解密即可直接使用。所以對于有權(quán)限的用戶來講,動態(tài)加密操作是透明的,訪問未加密或加密文件基本感覺不到區(qū)別。反之,對于沒有訪問權(quán)限的用戶來講,即便通過非法手段取得了加密文件,也無法識別,只是得到亂碼而已,更談不到獲取有效信息了。近年來,動態(tài)加密技術(shù)因其便捷的使用方法得到廣泛的應用。(3)文件級動態(tài)加解密技術(shù)。在文件系統(tǒng)層當中,既能獲取到文件自身的詳細信息,又能獲取到用戶信息及訪問此種文件的進程等各類相關(guān)信息,因文件系統(tǒng)層其特有的屬性可以開發(fā)出功能極其強大的文檔安全產(chǎn)品。在動態(tài)加解密的產(chǎn)品中,其部分文件系統(tǒng)自身就支持文件的動態(tài)加解密,而在實際操作當中,加密文件一般以分區(qū)或目錄為單位,對于用戶的個性化需求是難以滿足的,即使存在諸多不足之處,文件級動態(tài)加解密技術(shù)的安全性依然可以與磁盤級加密技術(shù)相匹敵。但鑒于文件級動態(tài)加解密技術(shù)對于用戶個性化需求的不足,也為第三方提供了動態(tài)加解密安全產(chǎn)品提供了足夠的發(fā)展空間。
在不同的操作系統(tǒng)中要研發(fā)的文件級動態(tài)加解密安全產(chǎn)品也各不相同,有多種方法可供選擇,可利用過濾驅(qū)動或Hook等方法將其轉(zhuǎn)化為文件系統(tǒng)的一個組成部分,即將嵌入到文件系統(tǒng)中。從某個角度上講,可以將第三方動態(tài)加解密產(chǎn)品近似于文件系統(tǒng)的一種功能擴展,這種功能擴展是通過模塊化的形式根據(jù)客戶需求進行掛接或載操作來完成的,而這是作為文件系統(tǒng)內(nèi)嵌的動態(tài)加密系統(tǒng)難以實現(xiàn)的。
3 數(shù)據(jù)庫加密技術(shù)對數(shù)據(jù)庫造成的影響
所謂數(shù)據(jù)加密即是對明文進行一系列較為復雜的加密操作,使明文和密文、密文和密鑰間的內(nèi)在聯(lián)系不被發(fā)現(xiàn),從而使加密過的數(shù)據(jù)經(jīng)得住數(shù)據(jù)庫管理系統(tǒng)和操作系統(tǒng)的攻擊。數(shù)據(jù)庫管理系統(tǒng)的功能一般情況下是較為完備的,但針對數(shù)據(jù)庫中以密文形式存在的敏感性數(shù)據(jù)是無法應用其部分功能的,且當數(shù)據(jù)庫的數(shù)據(jù)加密后,數(shù)據(jù)庫管理系統(tǒng)部分功能將無法直接應用。
(1)加密字段不能實現(xiàn)索引功能。在數(shù)據(jù)庫當中為了查詢和檢索的快速及便捷,常常要建立一些索引。而索引要發(fā)揮其作用必須使其建立和應用在明文的狀態(tài)下,且某些數(shù)據(jù)庫管理系統(tǒng)中所建立的索引也必須在明文的狀態(tài)下建立、維護和使用,否則索引將失去作用。(2)加密功能不能用于表間的連接碼字段。數(shù)據(jù)模型構(gòu)建后,數(shù)據(jù)庫表之間的相關(guān)性是通過局部編碼進行關(guān)聯(lián)的,如若對這些局部編碼進行加密操作,則將無法進行數(shù)據(jù)表之間的連接運算。(3)加密后無法進行數(shù)據(jù)約束的定義。數(shù)據(jù)庫管理系統(tǒng)通常會定義數(shù)據(jù)約束,如若此類數(shù)據(jù)一旦進行了加密操作,數(shù)據(jù)庫管理系統(tǒng)將無法實現(xiàn)數(shù)據(jù)約束功能,且值域也無法進行定義。(4)密文數(shù)據(jù)不能應用于數(shù)據(jù)庫的排序、分組和分類功能。SQL的Select語句中分組、排序、分類等操作分別通過Group、Orderby、Having子句來實現(xiàn),如若將此類子句的操作對象設(shè)為加密數(shù)據(jù),將無滿足用戶的需求,因為即使明文數(shù)據(jù)進行了解密操作也失去了原有語句的分組、排序、分類等作用。(5)加密數(shù)據(jù)無法被SQL語言中的內(nèi)部函數(shù)所應用。(6)加密數(shù)據(jù)無法直接應用于數(shù)據(jù)庫管理系統(tǒng)為各類數(shù)據(jù)所提供的某些內(nèi)部函數(shù)上。(7)加密數(shù)據(jù)將使數(shù)據(jù)庫管理系統(tǒng)的某些應用開發(fā)工具使用受限。數(shù)據(jù)庫管理系統(tǒng)的某些應用開發(fā)工具不能對加密數(shù)據(jù)進行直接操作,因此在對其應用時會受限。由此可見,對數(shù)據(jù)庫進行加密操作會影響到部分數(shù)據(jù)庫管理系統(tǒng)的功能,好比閱讀語句中的函數(shù)、排序、分組等,如想應用此類功能亦可通過組件技術(shù)來實現(xiàn),如利用SQL的解釋器。所以當數(shù)據(jù)庫加密后致使數(shù)據(jù)庫管理系統(tǒng)部分功能無法直接使用時,可以通過在數(shù)據(jù)庫管理系統(tǒng)的安全管理系統(tǒng)中增加組件來實現(xiàn)這部分功能的應用。
4 結(jié)語
隨著時代的發(fā)展,數(shù)據(jù)庫管理系統(tǒng)以其自身優(yōu)勢在社會各界得到廣泛應用,其使用率較高對數(shù)據(jù)的安全性要求就越高。目前,人們在數(shù)據(jù)庫安全及加密技術(shù)的研究方面只做了部分的嘗試性工作,還有諸多重要性細節(jié)問題有待于進一步深入解決。
參考文獻
關(guān)鍵詞:數(shù)據(jù)庫安全;數(shù)據(jù)庫加密;加密粒度;加密算法
中圖分類號:TP311.13 文獻標識碼:A 文章編號:1009-3044(2008)18-20ppp-0c
Discuss About Database Encryption Technology
QIN Xiao-xia, LI Wen-hua, LUO Jian-fen
(College of Computer Science, Yangtze University, Jingzhou 434023, China)
Abstract: Begins with requirement of the database security , it proposes an aim of the database encryption ,and then analyzes several key technologies in the database encryption technology, and compares them. Finally the influence of encryption system will be summarized.
Key words: Database security; Database encryption; Encryption granularity; Encryption algorithm
1 引言
隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展及信息處理的不斷增多,巨量級數(shù)據(jù)撲面而來。數(shù)據(jù)庫系統(tǒng)擔負著集中存儲和處理大量信息的任務(wù),從而使數(shù)據(jù)安全問題變得也非常顯著。傳統(tǒng)地,物理安全和操作系統(tǒng)安全機制為數(shù)據(jù)庫提供了一定的安全措施和技術(shù),但并不能全部滿足數(shù)據(jù)庫安全的需求,特別是無法保證一些重要部門如政府、金融、國防和一些敏感數(shù)據(jù)如信用卡、身份證、個人的醫(yī)療信息的安全,因此對數(shù)據(jù)庫加密是提高數(shù)據(jù)庫安全的最重要的手段之一,也成了數(shù)據(jù)庫安全研究的一個焦點。
2 數(shù)據(jù)庫安全概述
數(shù)據(jù)庫在信息系統(tǒng)中的核心地位使得數(shù)據(jù)庫面臨著嚴重的安全威脅,根據(jù)數(shù)據(jù)庫受到的威脅和可能的攻擊,數(shù)據(jù)庫的安全性要求著重在幾方面:
(1)物理上的數(shù)據(jù)完整性。預防數(shù)據(jù)庫數(shù)據(jù)物理方面的問題,如掉電,以及災害破壞后的恢復、重構(gòu)數(shù)據(jù)庫。
(2)邏輯上的數(shù)據(jù)完整性。保持數(shù)據(jù)的結(jié)構(gòu)。
(3)元素的完整性。包含在每個元素中的數(shù)據(jù)是準確的。
(4)可審計性。能追蹤到誰訪問或修改過數(shù)據(jù)庫中的元素。
(5)訪問控制。確保用戶只能訪問授權(quán)數(shù)據(jù),限制用戶訪問模式。
(6)用戶認證。用戶除提供用戶名、口令外,還可按照系統(tǒng)安全要求提供其它相關(guān)安全憑證。系統(tǒng)可以選擇使用終端密鑰、用戶USB Key等來增強身份認證的安全性。
(7)可獲用性。用戶能夠?qū)?shù)據(jù)庫進行授權(quán)的訪問。
3 數(shù)據(jù)庫加密要實現(xiàn)的目標
與一般的數(shù)據(jù)加密和文件加密相比,由于數(shù)據(jù)庫中數(shù)據(jù)有很強的相關(guān)性,并且數(shù)據(jù)量大,因此對它加密要比普通數(shù)據(jù)加密和文件加密有更大的難度,密鑰管理更加困難。數(shù)據(jù)加密是防止數(shù)據(jù)庫中數(shù)據(jù)在存儲和傳輸中失密的有效手段。數(shù)據(jù)加密的過程實際上就是根據(jù)一定的算法將原始數(shù)據(jù)變換為不可直接識別的格式,從而使得不知道解密算法的人無法獲知數(shù)據(jù)的內(nèi)容,而僅允許經(jīng)過授權(quán)的人員訪問和讀取數(shù)據(jù),從而確保數(shù)據(jù)的保密性,是一種有助于保護數(shù)據(jù)的機制。
因此,數(shù)據(jù)庫加密要求做到:
(1)數(shù)據(jù)庫中信息保存時間比較長,采用合適的加密方式,從根本上達到不可破譯;
(2)加密后,加密數(shù)據(jù)占用的存儲空間不宜明顯增大;
(3)加密/解密速度要快,尤其是解密速度,要使用戶感覺不到加密/解密過程中產(chǎn)生的時延,以及系統(tǒng)性能的變化;
(4)授權(quán)機制要盡可能靈活。在多用戶環(huán)境中使用數(shù)據(jù)庫系統(tǒng),每個用戶只用到其中一小部分數(shù)據(jù)。所以,系統(tǒng)應有比較強的訪問控制機制,再加上靈活的授權(quán)機制配合起來對數(shù)據(jù)庫數(shù)據(jù)進行保護。這樣既增加了系統(tǒng)的安全性,又方便了用戶的使用;
(5)提供一套安全的、靈活的密鑰管理機制;
(6)不影響數(shù)據(jù)庫系統(tǒng)的原有功能,保持對數(shù)據(jù)庫操作(如查詢,檢索,修改,更新)的靈活性和簡便性;
(7)加密后仍能滿足用戶對數(shù)據(jù)庫不同的粒度進行訪問。
4 數(shù)據(jù)庫加密技術(shù)中的關(guān)鍵問題
數(shù)據(jù)庫加密需要考慮幾個重要問題:是在數(shù)據(jù)庫引擎內(nèi)或產(chǎn)生數(shù)據(jù)的應用程序中或是在硬件設(shè)備上進行加密/解密?加密數(shù)據(jù)粒度基于數(shù)據(jù)庫、表還是字段?加密效果與其對性能的影響如何?
針對上述幾個問題,結(jié)合數(shù)據(jù)庫數(shù)據(jù)存儲時間長、共享性高等特點,在數(shù)據(jù)庫加密技術(shù)中,重點是要選擇合適的加密執(zhí)行層次、加密粒度和加密算法,并且要與實際的安全需求緊密結(jié)合起來。
4.1 加密執(zhí)行層次
對數(shù)據(jù)庫的數(shù)據(jù)進行加密主要是通過操作系統(tǒng)層加密、DBMS內(nèi)核層(服務(wù)器端)加密和DBMS外層(客戶端)加密三個不同層次實現(xiàn)的;DBMS內(nèi)核層、外層加密分別如圖1、圖2所示:
(1)在OS層
在操作系統(tǒng)(OS)層執(zhí)行加密/解密,數(shù)據(jù)庫元素以及各元素之間的關(guān)系無法辨認,所以無法產(chǎn)生合理的密鑰。一般在OS層,針對數(shù)據(jù)庫文件要么不加密,要么對整個數(shù)據(jù)庫文件進行加密,加密/解密不能合理執(zhí)行。尤其對于大型數(shù)據(jù)庫來說,在操作系統(tǒng)層次實現(xiàn)數(shù)據(jù)庫的加密/解密,目前還難做到有效保證數(shù)據(jù)庫的安全,因此一般不采用在OS層進行數(shù)據(jù)庫加密。
(2)在DBMS內(nèi)核層執(zhí)行加密/解密
在內(nèi)核層執(zhí)行加密解密有如下特點:
加密/解密執(zhí)行時間:在數(shù)據(jù)存入數(shù)據(jù)庫或從數(shù)據(jù)庫中取出時,即在物理數(shù)據(jù)存取之前;
加密/解密執(zhí)行主體:在DBMS內(nèi)核層,由用戶定制的或者DBMS提供的存儲過程函數(shù)執(zhí)行;
加密/解密過程:在存儲數(shù)據(jù)時,通過觸發(fā)器調(diào)用加密存儲過程對數(shù)據(jù)加密,然后將密文數(shù)據(jù)存入數(shù)據(jù)庫在讀取數(shù)據(jù)時,觸發(fā)器調(diào)用相應存儲過程解密數(shù)據(jù),然后讀出結(jié)果;
加密/解密算法:由DBMS系統(tǒng)提供。多數(shù)不提供添加自己算法的接口,因此算法選擇比較受限制。
在DBMS內(nèi)核層實現(xiàn)加密需要對數(shù)據(jù)庫管理系統(tǒng)本身進行操作,這種加密是指數(shù)據(jù)在物理存取之前完成加密/解密工作。優(yōu)點是加密功能強,并且加密功能幾乎不會影響DBMS的功能,可以實現(xiàn)加密功能與數(shù)據(jù)庫管理系統(tǒng)之間的無縫耦合。由于與DBMS系統(tǒng)結(jié)合緊密,可以提供對各種粒度加密的靈活性,靈活的加密配合DBMS的訪問控制、授權(quán)控制,不失是一種有效的數(shù)據(jù)庫數(shù)據(jù)保護方案。另外,這種層次的加密對于應用程序來說是透明的。其缺點是加密運算在服務(wù)器端進行,加重了服務(wù)器的負載,而且DBMS和加密器之間的接口需要DBMS開發(fā)商的支持。
(3)在DBMS外層執(zhí)行加密/解密
在DBMS外層執(zhí)行加密/解密包含兩種實現(xiàn)方式:第一種方式如圖2(a)所示,是在應用程序中實現(xiàn),加密時調(diào)用應用程序中的加密模塊來完成數(shù)據(jù)的加密工作,然后把密文數(shù)據(jù)傳送到DBMS存儲;解密時把密文數(shù)據(jù)取出到應用程序中,然后由應用程序中的解密模塊將數(shù)據(jù)解密并給出結(jié)果。第二種方式如圖2(b)所示,是直接利用操作系統(tǒng)提供的功能實現(xiàn)加密,這種加密方式是在文件級別上的加密,直接加密數(shù)據(jù)庫文件。
在DBMS外層實現(xiàn)加密的好處是不會加重數(shù)據(jù)庫服務(wù)器的負載, 采用這種加密方式進行加密,加解密運算可在客戶端進行,它的優(yōu)點是不會加重數(shù)據(jù)庫服務(wù)器的負載并且可以實現(xiàn)網(wǎng)上傳輸?shù)募用?,缺點是加密功能會受到一些限制,與數(shù)據(jù)庫管理系統(tǒng)之間的耦合性稍差。
(4)不同層次實現(xiàn)數(shù)據(jù)庫加密效果比較
在DBMS內(nèi)核層和DBMS外層加密的特點如表1所示:
由表可知:在DBMS內(nèi)核層執(zhí)行加密/解密,不會增加額外的處理負擔,對本身性能影響小;實現(xiàn)了密鑰與密文的分離,安全程度相對較高;算法由應用程序提供,選擇性大。
DBMS外層加密主要存在著可用性與安全性的矛盾;加密粒度受DBMS接口支持的限制,靈活性不夠強;安全升級時,應用程序改動比較大;對于密文數(shù)據(jù),DBMS本身的一些功能會受到影響。
4.2 加密粒度選擇
數(shù)據(jù)庫的加密粒度指的是數(shù)據(jù)加密的最小單位,主要有表、字段、數(shù)據(jù)元素等。數(shù)據(jù)庫中執(zhí)行加密,加密粒度越小,則可以選擇加密數(shù)據(jù)的靈活性就越大,但是產(chǎn)生的密鑰數(shù)量也大,帶來管理方面問題。數(shù)據(jù)庫中加密粒度的選擇要根據(jù)需要,充分衡量安全性和靈活性等需求。選擇的過程中,由于數(shù)據(jù)庫中存儲的數(shù)據(jù)包括非敏感數(shù)據(jù),因此,可以只選擇敏感數(shù)據(jù)部分進行加密,從而加密粒度越小,加密執(zhí)行消耗資源就少,投入費用就少。
4.3 算法選擇
數(shù)據(jù)庫加密技術(shù)的安全很大程度上取決于加密算法的強度,加密算法直接影響到數(shù)據(jù)庫加密的安全和性能。因此,加密算法的選擇在數(shù)據(jù)庫加密方案中也顯得舉足輕重。傳統(tǒng)的數(shù)據(jù)加密技術(shù)包括以下三種:
(1)對稱加密
也稱為共享密鑰加密。對稱加密算法是應用較早的加密算法,在對稱加密算法中,數(shù)據(jù)發(fā)信方將明文(原始數(shù)據(jù))和加密密鑰一起經(jīng)過特殊加密算法處理后,使其變成復雜的加密密文發(fā)送出去。收信方若想解讀原文,則需要使用加密用過的密鑰及相同算法的逆算法對密文進行解密,才能使其恢復成可讀明文。由于對稱加密算法算法公開、計算量小、加密速度快、加密效率高,因此它是最常用的加密技術(shù)。主要的對稱加密算法有DES、IDEA和AES。
(2)非對稱加密
又稱為公鑰加密。非對稱加密算法使用兩把完全不同但又是完全匹配的一對鑰匙――公鑰和私鑰。非對稱加密算法的基本原理是,如果發(fā)信方想發(fā)送只有收信方才能解讀的加密信息,發(fā)信方必須首先知道收信方的公鑰,然后利用收信方的公鑰來加密原文;收信方收到加密密文后,使用自己的私鑰才能解密密文。顯然,采用非對稱加密算法,收發(fā)信雙方在通信之前,收信方必須將自己早已隨機生成的公鑰送給發(fā)信方,而自己保留私鑰。由于非對稱算法擁有兩個密鑰,因而特別適用于分布式系統(tǒng)中的數(shù)據(jù)加密。常用的公鑰加密算法是RSA,它不但可以用來加密數(shù)據(jù),還可用來進行身份認證和數(shù)據(jù)完整性驗證。
(3)混合加密
由于對稱加密算法更簡單,數(shù)據(jù)的加密和解密都使用同一個密鑰,所以比起非對稱加密,它的速度要快得多,適合大量數(shù)據(jù)的加密和解密;主要缺點也是由于使用相同的密鑰加密和解密數(shù)據(jù)引起的,所有的數(shù)據(jù)發(fā)送方和接收方都必須知道或可以訪問加密密鑰,必須將此加密密鑰發(fā)送給所有要求訪問加密數(shù)據(jù)的一方,所以在密鑰的生成、分發(fā)、備份、重新生成和生命周期等方面常存在安全問題。而公鑰加密屬于非對稱加密,不存在密鑰的分發(fā)問題,因此在多用戶和網(wǎng)絡(luò)系統(tǒng)中密鑰管理非常簡單,但由于它主要基于一些難解的數(shù)學問題,所以安全強度沒有對稱加密高,速度也比較慢。
為了充分發(fā)揮對稱加密與非對稱加密的優(yōu)勢,混合加密方案被提出。在混合加密方案中,加密者首先利用一個隨機生成的密鑰和對稱加密算法加密數(shù)據(jù),然后通過使用接收者的公鑰把隨機密鑰進行加密,并與密文一起傳送給接受者。接收者通過自己的私鑰首先解密隨機密鑰,再利用其解密密文。此方案既利用了對稱加密安全強度高、速度快的特點,也利用了非對稱加密密鑰管理簡單的特性。“一次一密”的加密是最安全的一種加密技術(shù),加密者在每次加密時都使用與明文長度一樣的隨機密鑰,并且每個密鑰都不重復使用。但在數(shù)據(jù)庫加密中,由于密鑰的產(chǎn)生和保存都存在很大的困難,因此在實際應用中并不常用。
5 數(shù)據(jù)庫加密后對系統(tǒng)的影響
加密技術(shù)在保證數(shù)據(jù)庫安全性的同時,也給數(shù)據(jù)庫系統(tǒng)帶來如下一些影響:
(1)性能下降:數(shù)據(jù)加密后,由于其失去了本身所固有的一些特性,如有序性,相似性和可比性,這樣導致對加密數(shù)據(jù)的查詢,往往需要對所有加密數(shù)據(jù)先進行解密,然后才能進行查詢。而解密操作的代價往往很大,這樣使得系統(tǒng)的性能急劇下降。
(2)索引字段的加密問題:索引的建立和應用必須在明文狀態(tài)下進行,這樣才能夠保證索引文件中鍵的有序性,以便提高查詢性能。否則,索引將失去作用。
(3)加密字符串的模糊匹配:對加密數(shù)據(jù)上的大量模糊查詢,例如,當SQL條件語句包“Like”時,很難進行處理。
(4)加密數(shù)據(jù)庫的完整性:當數(shù)據(jù)庫加密后,實體完整性不會被破壞,而引用完整性難以維護。
(5)加密數(shù)據(jù)的存儲空間增加問題:對數(shù)據(jù)庫加密,通常采用分組加密算法,這有可能導致數(shù)據(jù)加密后的存儲空間增加。
(6)密鑰管理問題:在現(xiàn)代密碼學中算法的安全性都是基于密鑰的安全性,而不是基于算法的細節(jié)的安全性。對數(shù)據(jù)庫采取加密技術(shù)來保證其安全性,但是在現(xiàn)實生活中,如何保證密鑰本身的安全性又是一件非常困難的事情心。在數(shù)據(jù)庫管理系統(tǒng)中,由于數(shù)據(jù)的共享性和存儲數(shù)據(jù)的持久性等原因,要求更加靈活和安全的密鑰管理機制。
參考文獻:
[1] 萬紅艷.一種數(shù)據(jù)庫加密系統(tǒng)的設(shè)計與實現(xiàn)[J].黃石理工學院學報,2007,23(3):27-29.
[2] 趙曉峰.幾種數(shù)據(jù)庫加密方法的研究與比較[J].計算機技術(shù)與發(fā)展,2007,17(2):219-222.
[3] 王正飛,施伯樂.數(shù)據(jù)庫加密技術(shù)及其應用研究[D].上海:復旦大學,2005.
[4] 莊海燕,徐江峰.數(shù)據(jù)庫加密技術(shù)及其在Oracle中的應用[D].鄭州:鄭州大學,2006.
[5] 黃玉蕾.數(shù)據(jù)庫加密算法的分析與比較[J].科技情報開發(fā)與經(jīng)濟,2008,18(2):159-161.