99热精品69堂国产-97超级碰在线精品视频-日韩欧美中文字幕在线视频-欧美日韩大尺码免费专区-最新国产三级在线不卡视频-在线观看成人免费视频-亚洲欧美国产精品完整版-色综久久天天综合绕视看-中文字幕免费在线看线人-久久国产精品99精品国产

歡迎來到優(yōu)發(fā)表網(wǎng)

購(gòu)物車(0)

期刊大全 雜志訂閱 SCI期刊 期刊投稿 出版社 公文范文 精品范文

數(shù)據(jù)加密技術(shù)范文

時(shí)間:2022-10-17 08:35:22

序論:在您撰寫數(shù)據(jù)加密技術(shù)時(shí),參考他人的優(yōu)秀作品可以開闊視野,小編為您整理的7篇范文,希望這些建議能夠激發(fā)您的創(chuàng)作熱情,引導(dǎo)您走向新的創(chuàng)作高度。

數(shù)據(jù)加密技術(shù)

第1篇

一:數(shù)據(jù)加密方法

在傳統(tǒng)上,我們有幾種方法來加密數(shù)據(jù)流。所有這些方法都可以用軟件很容易的實(shí)現(xiàn),但是當(dāng)我們只知道密文的時(shí)候,是不容易破譯這些加密算法的(當(dāng)同時(shí)有原文和密文時(shí),破譯加密算法雖然也不是很容易,但已經(jīng)是可能的了)。最好的加密算法對(duì)系統(tǒng)性能幾乎沒有影響,并且還可以帶來其他內(nèi)在的優(yōu)點(diǎn)。例如,大家都知道的pkzip,它既壓縮數(shù)據(jù)又加密數(shù)據(jù)。又如,dbms的一些軟件包總是包含一些加密方法以使復(fù)制文件這一功能對(duì)一些敏感數(shù)據(jù)是無效的,或者需要用戶的密碼。所有這些加密算法都要有高效的加密和解密能力。

幸運(yùn)的是,在所有的加密算法中最簡(jiǎn)單的一種就是“置換表”算法,這種算法也能很好達(dá)到加密的需要。每一個(gè)數(shù)據(jù)段(總是一個(gè)字節(jié))對(duì)應(yīng)著“置換表”中的一個(gè)偏移量,偏移量所對(duì)應(yīng)的值就輸出成為加密后的文件。加密程序和解密程序都需要一個(gè)這樣的“置換表”。事實(shí)上,80x86 cpu系列就有一個(gè)指令‘xlat’在硬件級(jí)來完成這樣的工作。這種加密算法比較簡(jiǎn)單,加密解密速度都很快,但是一旦這個(gè)“置換表”被對(duì)方獲得,那這個(gè)加密方案就完全被識(shí)破了。更進(jìn)一步講,這種加密算法對(duì)于黑客破譯來講是相當(dāng)直接的,只要找到一個(gè)“置換表”就可以了。這種方法在計(jì)算機(jī)出現(xiàn)之前就已經(jīng)被廣泛的使用。

對(duì)這種“置換表”方式的一個(gè)改進(jìn)就是使用2個(gè)或者更多的“置換表”,這些表都是基于數(shù)據(jù)流中字節(jié)的位置的,或者基于數(shù)據(jù)流本身。這時(shí),破譯變的更加困難,因?yàn)楹诳捅仨氄_的做幾次變換。通過使用更多的“置換表”,并且按偽隨機(jī)的方式使用每個(gè)表,這種改進(jìn)的加密方法已經(jīng)變的很難破譯。比如,我們可以對(duì)所有的偶數(shù)位置的數(shù)據(jù)使用a表,對(duì)所有的奇數(shù)位置使用b表,即使黑客獲得了明文和密文,他想破譯這個(gè)加密方案也是非常困難的,除非黑客確切的知道用了兩張表。

與使用“置換表”相類似,“變換數(shù)據(jù)位置”也在計(jì)算機(jī)加密中使用。但是,這需要更多的執(zhí)行時(shí)間。從輸入中讀入明文放到一個(gè)buffer中,再在buffer中對(duì)他們重排序,然后按這個(gè)順序再輸出。解密程序按相反的順序還原數(shù)據(jù)。這種方法總是和一些別的加密算法混合使用,這就使得破譯變的特別的困難,幾乎有些不可能了。例如,有這樣一個(gè)詞,變換起字母的順序,slient 可以變?yōu)閘isten,但所有的字母都沒有變化,沒有增加也沒有減少,但是字母之間的順序已經(jīng)變化了。

但是,還有一種更好的加密算法,只有計(jì)算機(jī)可以做,就是字/字節(jié)循環(huán)移位和xor操作。如果我們把一個(gè)字或字節(jié)在一個(gè)數(shù)據(jù)流內(nèi)做循環(huán)移位,使用多個(gè)或變化的方向(左移或右移),就可以迅速的產(chǎn)生一個(gè)加密的數(shù)據(jù)流。這種方法是很好的,破譯它就更加困難!而且,更進(jìn)一步的是,如果再使用xor操作,按位做異或操作,就就使破譯密碼更加困難了。如果再使用偽隨機(jī)的方法,這涉及到要產(chǎn)生一系列的數(shù)字,我們可以使用fibbonaci數(shù)列。對(duì)數(shù)列所產(chǎn)生的數(shù)做模運(yùn)算(例如模3),得到一個(gè)結(jié)果,然后循環(huán)移位這個(gè)結(jié)果的次數(shù),將使破譯次密碼變的幾乎不可能!但是,使用fibbonaci數(shù)列這種偽隨機(jī)的方式所產(chǎn)生的密碼對(duì)我們的解密程序來講是非常容易的。

在一些情況下,我們想能夠知道數(shù)據(jù)是否已經(jīng)被篡改了或被破壞了,這時(shí)就需要產(chǎn)生一些校驗(yàn)碼,并且把這些校驗(yàn)碼插入到數(shù)據(jù)流中。這樣做對(duì)數(shù)據(jù)的防偽與程序本身都是有好處的。但是感染計(jì)算機(jī)程序的病毒才不會(huì)在意這些數(shù)據(jù)或程序是否加過密,是否有數(shù)字簽名。所以,加密程序在每次load到內(nèi)存要開始執(zhí)行時(shí),都要檢查一下本身是否被病毒感染,對(duì)與需要加、解密的文件都要做這種檢查!很自然,這樣一種方法體制應(yīng)該保密的,因?yàn)椴《境绦虻木帉懻邔?huì)利用這些來破壞別人的程序或數(shù)據(jù)。因此,在一些反病毒或殺病毒軟件中一定要使用加密技術(shù)。

循環(huán)冗余校驗(yàn)是一種典型的校驗(yàn)數(shù)據(jù)的方法。對(duì)于每一個(gè)數(shù)據(jù)塊,它使用位循環(huán)移位和xor操作來產(chǎn)生一個(gè)16位或32位的校驗(yàn)和 ,這使得丟失一位或兩個(gè)位的錯(cuò)誤一定會(huì)導(dǎo)致校驗(yàn)和出錯(cuò)。這種方式很久以來就應(yīng)用于文件的傳輸,例如 xmodem-crc。 這是方法已經(jīng)成為標(biāo)準(zhǔn),而且有詳細(xì)的文檔。但是,基于標(biāo)準(zhǔn)crc算法的一種修改算法對(duì)于發(fā)現(xiàn)加密數(shù)據(jù)塊中的錯(cuò)誤和文件是否被病毒感染是很有效的。轉(zhuǎn)貼于

二.基于公鑰的加密算法

一個(gè)好的加密算法的重要特點(diǎn)之一是具有這種能力:可以指定一個(gè)密碼或密鑰,并用它來加密明文,不同的密碼或密鑰產(chǎn)生不同的密文。這又分為兩種方式:對(duì)稱密鑰算法和非對(duì)稱密鑰算法。所謂對(duì)稱密鑰算法就是加密解密都使用相同的密鑰,非對(duì)稱密鑰算法就是加密解密使用不同的密鑰。非常著名的pgp公鑰加密以及rsa加密方法都是非對(duì)稱加密算法。加密密鑰,即公鑰,與解密密鑰,即私鑰,是非常的不同的。從數(shù)學(xué)理論上講,幾乎沒有真正不可逆的算法存在。例如,對(duì)于一個(gè)輸入‘a(chǎn)’執(zhí)行一個(gè)操作得到結(jié)果‘b’,那么我們可以基于‘b’,做一個(gè)相對(duì)應(yīng)的操作,導(dǎo)出輸入‘a(chǎn)’。在一些情況下,對(duì)于每一種操作,我們可以得到一個(gè)確定的值,或者該操作沒有定義(比如,除數(shù)為0)。對(duì)于一個(gè)沒有定義的操作來講,基于加密算法,可以成功地防止把一個(gè)公鑰變換成為私鑰。因此,要想破譯非對(duì)稱加密算法,找到那個(gè)唯一的密鑰,唯一的方法只能是反復(fù)的試驗(yàn),而這需要大量的處理時(shí)間。

rsa加密算法使用了兩個(gè)非常大的素?cái)?shù)來產(chǎn)生公鑰和私鑰。即使從一個(gè)公鑰中通過因數(shù)分解可以得到私鑰,但這個(gè)運(yùn)算所包含的計(jì)算量是非常巨大的,以至于在現(xiàn)實(shí)上是不可行的。加密算法本身也是很慢的,這使得使用rsa算法加密大量的數(shù)據(jù)變的有些不可行。這就使得一些現(xiàn)實(shí)中加密算法都基于rsa加密算法。pgp算法(以及大多數(shù)基于rsa算法的加密方法)使用公鑰來加密一個(gè)對(duì)稱加密算法的密鑰,然后再利用一個(gè)快速的對(duì)稱加密算法來加密數(shù)據(jù)。這個(gè)對(duì)稱算法的密鑰是隨機(jī)產(chǎn)生的,是保密的,因此,得到這個(gè)密鑰的唯一方法就是使用私鑰來解密。

我們舉一個(gè)例子:假定現(xiàn)在要加密一些數(shù)據(jù)使用密鑰‘12345’。利用rsa公鑰,使用rsa算法加密這個(gè)密鑰‘12345’,并把它放在要加密的數(shù)據(jù)的前面(可能后面跟著一個(gè)分割符或文件長(zhǎng)度,以區(qū)分?jǐn)?shù)據(jù)和密鑰),然后,使用對(duì)稱加密算法加密正文,使用的密鑰就是‘12345’。當(dāng)對(duì)方收到時(shí),解密程序找到加密過的密鑰,并利用rsa私鑰解密出來,然后再確定出數(shù)據(jù)的開始位置,利用密鑰‘12345’來解密數(shù)據(jù)。這樣就使得一個(gè)可靠的經(jīng)過高效加密的數(shù)據(jù)安全地傳輸和解密。

一些簡(jiǎn)單的基于rsa算法的加密算法可在下面的站點(diǎn)找到:

ftp://ftp.funet.fi/pub/crypt/cryptography/asymmetric/rsa

三.一個(gè)嶄新的多步加密算法

現(xiàn)在又出現(xiàn)了一種新的加密算法,據(jù)說是幾乎不可能被破譯的。這個(gè)算法在1998年6月1日才正式公布的。下面詳細(xì)的介紹這個(gè)算法:

使用一系列的數(shù)字(比如說128位密鑰),來產(chǎn)生一個(gè)可重復(fù)的但高度隨機(jī)化的偽隨機(jī)的數(shù)字的序列。一次使用256個(gè)表項(xiàng),使用隨機(jī)數(shù)序列來產(chǎn)生密碼轉(zhuǎn)表,如下所示:

把256個(gè)隨機(jī)數(shù)放在一個(gè)距陣中,然后對(duì)他們進(jìn)行排序,使用這樣一種方式(我們要記住最初的位置)使用最初的位置來產(chǎn)生一個(gè)表,隨意排序的表,表中的數(shù)字在0到255之間。如果不是很明白如何來做,就可以不管它。但是,下面也提供了一些原碼(在下面)是我們明白是如何來做的?,F(xiàn)在,產(chǎn)生了一個(gè)具體的256字節(jié)的表。讓這個(gè)隨機(jī)數(shù)產(chǎn)生器接著來產(chǎn)生這個(gè)表中的其余的數(shù),以至于每個(gè)表是不同的。下一步,使用"shotgun technique"技術(shù)來產(chǎn)生解碼表?;旧险f,如果 a映射到b,那么b一定可以映射到a,所以b[a[n]] = n.(n是一個(gè)在0到255之間的數(shù))。在一個(gè)循環(huán)中賦值,使用一個(gè)256字節(jié)的解碼表它對(duì)應(yīng)于我們剛才在上一步產(chǎn)生的256字節(jié)的加密表。

使用這個(gè)方法,已經(jīng)可以產(chǎn)生這樣的一個(gè)表,表的順序是隨機(jī),所以產(chǎn)生這256個(gè)字節(jié)的隨機(jī)數(shù)使用的是二次偽隨機(jī),使用了兩個(gè)額外的16位的密碼.現(xiàn)在,已經(jīng)有了兩張轉(zhuǎn)換表,基本的加密解密是如下這樣工作的。前一個(gè)字節(jié)密文是這個(gè)256字節(jié)的表的索引?;蛘?,為了提高加密效果,可以使用多余8位的值,甚至使用校驗(yàn)和或者crc算法來產(chǎn)生索引字節(jié)。假定這個(gè)表是256*256的數(shù)組,將會(huì)是下面的樣子:

crypto1 = a[crypto0][value]

變量'crypto1'是加密后的數(shù)據(jù),'crypto0'是前一個(gè)加密數(shù)據(jù)(或著是前面幾個(gè)加密數(shù)據(jù)的一個(gè)函數(shù)值)。很自然的,第一個(gè)數(shù)據(jù)需要一個(gè)“種子”,這個(gè)“種子” 是我們必須記住的。如果使用256*256的表,這樣做將會(huì)增加密文的長(zhǎng)度?;蛘撸梢允褂媚惝a(chǎn)生出隨機(jī)數(shù)序列所用的密碼,也可能是它的crc校驗(yàn)和。順便提及的是曾作過這樣一個(gè)測(cè)試: 使用16個(gè)字節(jié)來產(chǎn)生表的索引,以128位的密鑰作為這16個(gè)字節(jié)的初始的"種子"。然后,在產(chǎn)生出這些隨機(jī)數(shù)的表之后,就可以用來加密數(shù)據(jù),速度達(dá)到每秒鐘100k個(gè)字節(jié)。一定要保證在加密與解密時(shí)都使用加密的值作為表的索引,而且這兩次一定要匹配。

加密時(shí)所產(chǎn)生的偽隨機(jī)序列是很隨意的,可以設(shè)計(jì)成想要的任何序列。沒有關(guān)于這個(gè)隨機(jī)序列的詳細(xì)的信息,解密密文是不現(xiàn)實(shí)的。例如:一些ascii碼的序列,如“eeeeeeee"可能被轉(zhuǎn)化成一些隨機(jī)的沒有任何意義的亂碼,每一個(gè)字節(jié)都依賴于其前一個(gè)字節(jié)的密文,而不是實(shí)際的值。對(duì)于任一個(gè)單個(gè)的字符的這種變換來說,隱藏了加密數(shù)據(jù)的有效的真正的長(zhǎng)度。

如果確實(shí)不理解如何來產(chǎn)生一個(gè)隨機(jī)數(shù)序列,就考慮fibbonacci數(shù)列,使用2個(gè)雙字(64位)的數(shù)作為產(chǎn)生隨機(jī)數(shù)的種子,再加上第三個(gè)雙字來做xor操作。 這個(gè)算法產(chǎn)生了一系列的隨機(jī)數(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)生一系列的隨機(jī)數(shù)字,比如說,在0和列表中所有的隨機(jī)數(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'中的值應(yīng)該是一個(gè)排過序的唯一的一系列的整數(shù)的數(shù)組,整數(shù)的值的范圍均在0到255之間。這樣一個(gè)數(shù)組是非常有用的,例如:對(duì)一個(gè)字節(jié)對(duì)字節(jié)的轉(zhuǎn)換表,就可以很容易并且非常可靠的來產(chǎn)生一個(gè)短的密鑰(經(jīng)常作為一些隨機(jī)數(shù)的種子)。這樣一個(gè)表還有其他的用處,比如說:來產(chǎn)生一個(gè)隨機(jī)的字符,計(jì)算機(jī)游戲中一個(gè)物體的隨機(jī)的位置等等。上面的例子就其本身而言并沒有構(gòu)成一個(gè)加密算法,只是加密算法一個(gè)組成部分。

作為一個(gè)測(cè)試,開發(fā)了一個(gè)應(yīng)用程序來測(cè)試上面所描述的加密算法。程序本身都經(jīng)過了幾次的優(yōu)化和修改,來提高隨機(jī)數(shù)的真正的隨機(jī)性和防止會(huì)產(chǎn)生一些短的可重復(fù)的用于加密的隨機(jī)數(shù)。用這個(gè)程序來加密一個(gè)文件,破解這個(gè)文件可能會(huì)需要非常巨大的時(shí)間以至于在現(xiàn)實(shí)上是不可能的。

四.結(jié)論:

由于在現(xiàn)實(shí)生活中,我們要確保一些敏感的數(shù)據(jù)只能被有相應(yīng)權(quán)限的人看到,要確保信息在傳輸?shù)倪^程中不會(huì)被篡改,截取,這就需要很多的安全系統(tǒng)大量的應(yīng)用于政府、大公司以及個(gè)人系統(tǒng)。數(shù)據(jù)加密是肯定可以被破解的,但我們所想要的是一個(gè)特定時(shí)期的安全,也就是說,密文的破解應(yīng)該是足夠的困難,在現(xiàn)實(shí)上是不可能的,尤其是短時(shí)間內(nèi)。

參考文獻(xiàn)

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/

第2篇

 

一:數(shù)據(jù)加密方法

   在傳統(tǒng)上,我們有幾種方法來加密數(shù)據(jù)流。所有這些方法都可以用軟件很容易的實(shí)現(xiàn),但是當(dāng)我們只知道密文的時(shí)候,是不容易破譯這些加密算法的(當(dāng)同時(shí)有原文和密文時(shí),破譯加密算法雖然也不是很容易,但已經(jīng)是可能的了)。最好的加密算法對(duì)系統(tǒng)性能幾乎沒有影響,并且還可以帶來其他內(nèi)在的優(yōu)點(diǎn)。例如,大家都知道的pkzip,它既壓縮數(shù)據(jù)又加密數(shù)據(jù)。又如,dbms的一些軟件包總是包含一些加密方法以使復(fù)制文件這一功能對(duì)一些敏感數(shù)據(jù)是無效的,或者需要用戶的密碼。所有這些加密算法都要有高效的加密和解密能力。

  

   幸運(yùn)的是,在所有的加密算法中最簡(jiǎn)單的一種就是“置換表”算法,這種算法也能很好達(dá)到加密的需要。每一個(gè)數(shù)據(jù)段(總是一個(gè)字節(jié))對(duì)應(yīng)著“置換表”中的一個(gè)偏移量,偏移量所對(duì)應(yīng)的值就輸出成為加密后的文件。加密程序和解密程序都需要一個(gè)這樣的“置換表”。事實(shí)上,80x86 cpu系列就有一個(gè)指令‘xlat’在硬件級(jí)來完成這樣的工作。這種加密算法比較簡(jiǎn)單,加密解密速度都很快,但是一旦這個(gè)“置換表”被對(duì)方獲得,那這個(gè)加密方案就完全被識(shí)破了。更進(jìn)一步講,這種加密算法對(duì)于黑客破譯來講是相當(dāng)直接的,只要找到一個(gè)“置換表”就可以了。這種方法在計(jì)算機(jī)出現(xiàn)之前就已經(jīng)被廣泛的使用。

 

    對(duì)這種“置換表”方式的一個(gè)改進(jìn)就是使用2個(gè)或者更多的“置換表”,這些表都是基于數(shù)據(jù)流中字節(jié)的位置的,或者基于數(shù)據(jù)流本身。這時(shí),破譯變的更加困難,因?yàn)楹诳捅仨氄_的做幾次變換。通過使用更多的“置換表”,并且按偽隨機(jī)的方式使用每個(gè)表,這種改進(jìn)的加密方法已經(jīng)變的很難破譯。比如,我們可以對(duì)所有的偶數(shù)位置的數(shù)據(jù)使用a表,對(duì)所有的奇數(shù)位置使用b表,即使黑客獲得了明文和密文,他想破譯這個(gè)加密方案也是非常困難的,除非黑客確切的知道用了兩張表。

 

   與使用“置換表”相類似,“變換數(shù)據(jù)位置”也在計(jì)算機(jī)加密中使用。但是,這需要更多的執(zhí)行時(shí)間。從輸入中讀入明文放到一個(gè)buffer中,再在buffer中對(duì)他們重排序,然后按這個(gè)順序再輸出。解密程序按相反的順序還原數(shù)據(jù)。這種方法總是和一些別的加密算法混合使用,這就使得破譯變的特別的困難,幾乎有些不可能了。例如,有這樣一個(gè)詞,變換起字母的順序,slient 可以變?yōu)閘isten,但所有的字母都沒有變化,沒有增加也沒有減少,但是字母之間的順序已經(jīng)變化了。

 

    但是,還有一種更好的加密算法,只有計(jì)算機(jī)可以做,就是字/字節(jié)循環(huán)移位和xor操作。如果我們把一個(gè)字或字節(jié)在一個(gè)數(shù)據(jù)流內(nèi)做循環(huán)移位,使用多個(gè)或變化的方向(左移或右移),就可以迅速的產(chǎn)生一個(gè)加密的數(shù)據(jù)流。這種方法是很好的,破譯它就更加困難!而且,更進(jìn)一步的是,如果再使用xor操作,按位做異或操作,就就使破譯密碼更加困難了。如果再使用偽隨機(jī)的方法,這涉及到要產(chǎn)生一系列的數(shù)字,我們可以使用fibbonaci數(shù)列。對(duì)數(shù)列所產(chǎn)生的數(shù)做模運(yùn)算(例如模3),得到一個(gè)結(jié)果,然后循環(huán)移位這個(gè)結(jié)果的次數(shù),將使破譯次密碼變的幾乎不可能!但是,使用fibbonaci數(shù)列這種偽隨機(jī)的方式所產(chǎn)生的密碼對(duì)我們的解密程序來講是非常容易的。

 

    在一些情況下,我們想能夠知道數(shù)據(jù)是否已經(jīng)被篡改了或被破壞了,這時(shí)就需要產(chǎn)生一些校驗(yàn)碼,并且把這些校驗(yàn)碼插入到數(shù)據(jù)流中。這樣做對(duì)數(shù)據(jù)的防偽與程序本身都是有好處的。但是感染計(jì)算機(jī)程序的病毒才不會(huì)在意這些數(shù)據(jù)或程序是否加過密,是否有數(shù)字簽名。所以,加密程序在每次load到內(nèi)存要開始執(zhí)行時(shí),都要檢查一下本身是否被病毒感染,對(duì)與需要加、解密的文件都要做這種檢查!很自然,這樣一種方法體制應(yīng)該保密的,因?yàn)椴《境绦虻木帉懻邔?huì)利用這些來破壞別人的程序或數(shù)據(jù)。因此,在一些反病毒或殺病毒軟件中一定要使用加密技術(shù)。

循環(huán)冗余校驗(yàn)是一種典型的校驗(yàn)數(shù)據(jù)的方法。對(duì)于每一個(gè)數(shù)據(jù)塊,它使用位循環(huán)移位和xor操作來產(chǎn)生一個(gè)16位或32位的校驗(yàn)和 ,這使得丟失一位或兩個(gè)位的錯(cuò)誤一定會(huì)導(dǎo)致校驗(yàn)和出錯(cuò)。這種方式很久以來就應(yīng)用于文件的傳輸,例如 xmodem-crc。 這是方法已經(jīng)成為標(biāo)準(zhǔn),而且有詳細(xì)的文檔。但是,基于標(biāo)準(zhǔn)crc算法的一種修改算法對(duì)于發(fā)現(xiàn)加密數(shù)據(jù)塊中的錯(cuò)誤和文件是否被病毒感染是很有效的。

 

 二.基于公鑰的加密算法

 

    一個(gè)好的加密算法的重要特點(diǎn)之一是具有這種能力:可以指定一個(gè)密碼或密鑰,并用它來加密明文,不同的密碼或密鑰產(chǎn)生不同的密文。這又分為兩種方式:對(duì)稱密鑰算法和非對(duì)稱密鑰算法。所謂對(duì)稱密鑰算法就是加密解密都使用相同的密鑰,非對(duì)稱密鑰算法就是加密解密使用不同的密鑰。非常著名的pgp公鑰加密以及rsa加密方法都是非對(duì)稱加密算法。加密密鑰,即公鑰,與解密密鑰,即私鑰,是非常的不同的。從數(shù)學(xué)理論上講,幾乎沒有真正不可逆的算法存在。例如,對(duì)于一個(gè)輸入‘a(chǎn)’執(zhí)行一個(gè)操作得到結(jié)果‘b’,那么我們可以基于‘b’,做一個(gè)相對(duì)應(yīng)的操作,導(dǎo)出輸入‘a(chǎn)’。在一些情況下,對(duì)于每一種操作,我們可以得到一個(gè)確定的值,或者該操作沒有定義(比如,除數(shù)為0)。對(duì)于一個(gè)沒有定義的操作來講,基于加密算法,可以成功地防止把一個(gè)公鑰變換成為私鑰。因此,要想破譯非對(duì)稱加密算法,找到那個(gè)唯一的密鑰,唯一的方法只能是反復(fù)的試驗(yàn),而這需要大量的處理時(shí)間。

    

    rsa加密算法使用了兩個(gè)非常大的素?cái)?shù)來產(chǎn)生公鑰和私鑰。即使從一個(gè)公鑰中通過因數(shù)分解可以得到私鑰,但這個(gè)運(yùn)算所包含的計(jì)算量是非常巨大的,以至于在現(xiàn)實(shí)上是不可行的。加密算法本身也是很慢的,這使得使用rsa算法加密大量的數(shù)據(jù)變的有些不可行。這就使得一些現(xiàn)實(shí)中加密算法都基于rsa加密算法。pgp算法(以及大多數(shù)基于rsa算法的加密方法)使用公鑰來加密一個(gè)對(duì)稱加密算法的密鑰,然后再利用一個(gè)快速的對(duì)稱加密算法來加密數(shù)據(jù)。這個(gè)對(duì)稱算法的密鑰是隨機(jī)產(chǎn)生的,是保密的,因此,得到這個(gè)密鑰的唯一方法就是使用私鑰來解密。

   

    我們舉一個(gè)例子:假定現(xiàn)在要加密一些數(shù)據(jù)使用密鑰‘12345’。利用rsa公鑰,使用rsa算法加密這個(gè)密鑰‘12345’,并把它放在要加密的數(shù)據(jù)的前面(可能后面跟著一個(gè)分割符或文件長(zhǎng)度,以區(qū)分?jǐn)?shù)據(jù)和密鑰),然后,使用對(duì)稱加密算法加密正文,使用的密鑰就是‘12345’。當(dāng)對(duì)方收到時(shí),解密程序找到加密過的密鑰,并利用rsa私鑰解密出來,然后再確定出數(shù)據(jù)的開始位置,利用密鑰‘12345’來解密數(shù)據(jù)。這樣就使得一個(gè)可靠的經(jīng)過高效加密的數(shù)據(jù)安全地傳輸和解密。

 

   一些簡(jiǎn)單的基于rsa算法的加密算法可在下面的站點(diǎn)找到:

    ftp://ftp.funet.fi/pub/crypt/cryptography/asymmetric/rsa

 

  三.一個(gè)嶄新的多步加密算法

 

    現(xiàn)在又出現(xiàn)了一種新的加密算法,據(jù)說是幾乎不可能被破譯的。這個(gè)算法在1998年6月1日才正式公布的。下面詳細(xì)的介紹這個(gè)算法:

使用一系列的數(shù)字(比如說128位密鑰),來產(chǎn)生一個(gè)可重復(fù)的但高度隨機(jī)化的偽隨機(jī)的數(shù)字的序列。一次使用256個(gè)表項(xiàng),使用隨機(jī)數(shù)序列來產(chǎn)生密碼轉(zhuǎn)表,如下所示:

把256個(gè)隨機(jī)數(shù)放在一個(gè)距陣中,然后對(duì)他們進(jìn)行排序,使用這樣一種方式(我們要記住最初的位置)使用最初的位置來產(chǎn)生一個(gè)表,隨意排序的表,表中的數(shù)字在0到255之間。如果不是很明白如何來做,就可以不管它。但是,下面也提供了一些原碼(在下面)是我們明白是如何來做的。現(xiàn)在,產(chǎn)生了一個(gè)具體的256字節(jié)的表。讓這個(gè)隨機(jī)數(shù)產(chǎn)生器接著來產(chǎn)生這個(gè)表中的其余的數(shù),以至于每個(gè)表是不同的。下一步,使用"shotgun technique"技術(shù)來產(chǎn)生解碼表。基本上說,如果 a映射到b,那么b一定可以映射到a,所以b[a[n]] = n.(n是一個(gè)在0到255之間的數(shù))。在一個(gè)循環(huán)中賦值,使用一個(gè)256字節(jié)的解碼表它對(duì)應(yīng)于我們剛才在上一步產(chǎn)生的256字節(jié)的加密表。

 

    使用這個(gè)方法,已經(jīng)可以產(chǎn)生這樣的一個(gè)表,表的順序是隨機(jī),所以產(chǎn)生這256個(gè)字節(jié)的隨機(jī)數(shù)使用的是二次偽隨機(jī),使用了兩個(gè)額外的16位的密碼.現(xiàn)在,已經(jīng)有了兩張轉(zhuǎn)換表,基本的加密解密是如下這樣工作的。前一個(gè)字節(jié)密文是這個(gè)256字節(jié)的表的索引?;蛘?,為了提高加密效果,可以使用多余8位的值,甚至使用校驗(yàn)和或者crc算法來產(chǎn)生索引字節(jié)。假定這個(gè)表是256*256的數(shù)組,將會(huì)是下面的樣子:

   

    crypto1 = a[crypto0][value]

 

    變量'crypto1'是加密后的數(shù)據(jù),'crypto0'是前一個(gè)加密數(shù)據(jù)(或著是前面幾個(gè)加密數(shù)據(jù)的一個(gè)函數(shù)值)。很自然的,第一個(gè)數(shù)據(jù)需要一個(gè)“種子”,這個(gè)“種子” 是我們必須記住的。如果使用256*256的表,這樣做將會(huì)增加密文的長(zhǎng)度?;蛘?,可以使用你產(chǎn)生出隨機(jī)數(shù)序列所用的密碼,也可能是它的crc校驗(yàn)和。順便提及的是曾作過這樣一個(gè)測(cè)試: 使用16個(gè)字節(jié)來產(chǎn)生表的索引,以128位的密鑰作為這16個(gè)字節(jié)的初始的"種子"。然后,在產(chǎn)生出這些隨機(jī)數(shù)的表之后,就可以用來加密數(shù)據(jù),速度達(dá)到每秒鐘100k個(gè)字節(jié)。一定要保證在加密與解密時(shí)都使用加密的值作為表的索引,而且這兩次一定要匹配。

 

    加密時(shí)所產(chǎn)生的偽隨機(jī)序列是很隨意的,可以設(shè)計(jì)成想要的任何序列。沒有關(guān)于這個(gè)隨機(jī)序列的詳細(xì)的信息,解密密文是不現(xiàn)實(shí)的。例如:一些ascii碼的序列,如“eeeeeeee"可能被轉(zhuǎn)化成一些隨機(jī)的沒有任何意義的亂碼,每一個(gè)字節(jié)都依賴于其前一個(gè)字節(jié)的密文,而不是實(shí)際的值。對(duì)于任一個(gè)單個(gè)的字符的這種變換來說,隱藏了加密數(shù)據(jù)的有效的真正的長(zhǎng)度。

 

    如果確實(shí)不理解如何來產(chǎn)生一個(gè)隨機(jī)數(shù)序列,就考慮fibbonacci數(shù)列,使用2個(gè)雙字(64位)的數(shù)作為產(chǎn)生隨機(jī)數(shù)的種子,再加上第三個(gè)雙字來做xor操作。 這個(gè)算法產(chǎn)生了一系列的隨機(jī)數(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)生一系列的隨機(jī)數(shù)字,比如說,在0和列表中所有的隨機(jī)數(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'中的值應(yīng)該是一個(gè)排過序的唯一的一系列的整數(shù)的數(shù)組,整數(shù)的值的范圍均在0到255之間。這樣一個(gè)數(shù)組是非常有用的,例如:對(duì)一個(gè)字節(jié)對(duì)字節(jié)的轉(zhuǎn)換表,就可以很容易并且非常可靠的來產(chǎn)生一個(gè)短的密鑰(經(jīng)常作為一些隨機(jī)數(shù)的種子)。這樣一個(gè)表還有其他的用處,比如說:來產(chǎn)生一個(gè)隨機(jī)的字符,計(jì)算機(jī)游戲中一個(gè)物體的隨機(jī)的位置等等。上面的例子就其本身而言并沒有構(gòu)成一個(gè)加密算法,只是加密算法一個(gè)組成部分。

 

    作為一個(gè)測(cè)試,開發(fā)了一個(gè)應(yīng)用程序來測(cè)試上面所描述的加密算法。程序本身都經(jīng)過了幾次的優(yōu)化和修改,來提高隨機(jī)數(shù)的真正的隨機(jī)性和防止會(huì)產(chǎn)生一些短的可重復(fù)的用于加密的隨機(jī)數(shù)。用這個(gè)程序來加密一個(gè)文件,破解這個(gè)文件可能會(huì)需要非常巨大的時(shí)間以至于在現(xiàn)實(shí)上是不可能的。

 

  四.結(jié)論:

    由于在現(xiàn)實(shí)生活中,我們要確保一些敏感的數(shù)據(jù)只能被有相應(yīng)權(quán)限的人看到,要確保信息在傳輸?shù)倪^程中不會(huì)被篡改,截取,這就需要很多的安全系統(tǒng)大量的應(yīng)用于政府、大公司以及個(gè)人系統(tǒng)。數(shù)據(jù)加密是肯定可以被破解的,但我們所想要的是一個(gè)特定時(shí)期的安全,也就是說,密文的破解應(yīng)該是足夠的困難,在現(xiàn)實(shí)上是不可能的,尤其是短時(shí)間內(nèi)。

 

 

 

參考文獻(xiàn):

 

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/

 

第3篇

[關(guān)鍵字] 信息 數(shù)據(jù)加密 對(duì)稱密鑰加密技術(shù) 非對(duì)稱密鑰加密技術(shù)

隨著全球經(jīng)濟(jì)一體化的到來,信息技術(shù)的快速發(fā)展和信息交換的大量增加給整個(gè)社會(huì)帶來了新的驅(qū)動(dòng)力和創(chuàng)新意識(shí)。信息技術(shù)的高速度發(fā)展,信息傳輸?shù)陌踩找嬉鹑藗兊年P(guān)注。世界各個(gè)國(guó)家分別從法律上、管理上加強(qiáng)了對(duì)數(shù)據(jù)的安全保護(hù),而從技術(shù)上采取措施才是有效手段,技術(shù)上的措施分別可以從軟件和硬件兩方面入手。隨著對(duì)信息數(shù)據(jù)安全的要求的提高,數(shù)據(jù)加密技術(shù)和物理防范技術(shù)也在不斷的發(fā)展。數(shù)據(jù)加密是防止數(shù)據(jù)在數(shù)據(jù)存儲(chǔ)和和傳輸中失密的有效手段。信息數(shù)據(jù)加密技術(shù)是利用數(shù)學(xué)或物理手段,對(duì)電子信息在傳輸過程中和存儲(chǔ)體內(nèi)進(jìn)行保護(hù),以防止泄漏的技術(shù)。信息數(shù)據(jù)加密與解密從宏觀上講是非常簡(jiǎn)單的,很容易掌握,可以很方便的對(duì)機(jī)密數(shù)據(jù)進(jìn)行加密和解密。從而實(shí)現(xiàn)對(duì)數(shù)據(jù)的安全保障。

1.信息數(shù)據(jù)加密技術(shù)的基本概念

信息數(shù)據(jù)加密就是通過信息的變換或編碼,把原本一個(gè)較大范圍的人(或者機(jī)器)都能夠讀懂、理解和識(shí)別的信息(這些信息可以是語(yǔ)音、文字、圖像和符號(hào)等等)通過一定的方法(算法),使之成為難以讀懂的亂碼型的信息,從而達(dá)到保障信息安全,使其不被非法盜用或被非相關(guān)人員越權(quán)閱讀的目的。在加密過程中原始信息被稱為“明文”,明文經(jīng)轉(zhuǎn)換加密后得到的形式就是“密文”。那么由“明文”變成“密文”的過程稱為“加密”,而把密文轉(zhuǎn)變?yōu)槊魑牡倪^程稱為“解密”。

2. 信息數(shù)據(jù)加密技術(shù)分類

信息數(shù)據(jù)加密技術(shù)一般來說可以分為兩種,對(duì)稱密鑰加密技術(shù)及非對(duì)稱密鑰加密技術(shù)。

2.1 對(duì)稱密鑰加密技術(shù)

對(duì)稱密鑰加密技術(shù),又稱專用密鑰加密技術(shù)或單密鑰加密技術(shù)。其加密和解密時(shí)使用同一個(gè)密鑰,即同一個(gè)算法。對(duì)稱密鑰是一種比較傳統(tǒng)的加密方式,是最簡(jiǎn)單方式。在進(jìn)行對(duì)稱密鑰加密時(shí),通信雙方需要交換彼此密鑰,當(dāng)需要給對(duì)方發(fā)送信息數(shù)據(jù)時(shí),用自己的加密密鑰進(jìn)行加密,而在需要接收方信息數(shù)據(jù)的時(shí)候,收到后用對(duì)方所給的密鑰進(jìn)行解密。在對(duì)稱密鑰中,密鑰的管理極為重要,一旦密鑰丟失,密文將公開于世。這種加密方式在與多方通信時(shí)變得很復(fù)雜,因?yàn)樾枰4婧芏嗝荑€,而且密鑰本身的安全就是一個(gè)必須面對(duì)的大問題。

對(duì)稱密鑰加密算法主要包括:DES、3DES、IDEA、FEAL、BLOWFISH等。

DES 算法的數(shù)據(jù)分組長(zhǎng)度為64 位,初始置換函數(shù)接受長(zhǎng)度為64位的明文輸入,密文分組長(zhǎng)度也是64 位,末置換函數(shù)輸出64位的密文;使用的密鑰為64 位,有效密鑰長(zhǎng)度為56 位,有8 位用于奇偶校驗(yàn)。DES的解密算法與加密算法完全相同,但密鑰的順序正好相反。所以DES是一種對(duì)二元數(shù)據(jù)進(jìn)行加密的算法。DES加密過程是:對(duì)給定的64 位比特的明文通過初始置換函數(shù)進(jìn)行重新排列,產(chǎn)生一個(gè)輸出;按照規(guī)則迭代,置換后的輸出數(shù)據(jù)的位數(shù)要比迭代前輸入的位數(shù)少;進(jìn)行逆置換,得到密文。

DES 算法還是比別的加密算法具有更高的安全性,因?yàn)镈ES算法具有相當(dāng)高的復(fù)雜性,特別是在一些保密性級(jí)別要求高的情況下使用三重DES 或3DES 系統(tǒng)較可靠。DES算法由于其便于掌握,經(jīng)濟(jì)有效,使其應(yīng)用范圍更為廣泛。目前除了用窮舉搜索法可以對(duì)DES 算法進(jìn)行有效地攻擊之外, 還沒有發(fā)現(xiàn)其它有效的攻擊辦法。

IDEA算法1990年由瑞士聯(lián)邦技術(shù)協(xié)會(huì)的Xuejia Lai和James Massey開發(fā)的。經(jīng)歷了大量的詳細(xì)審查,對(duì)密碼分析具有很強(qiáng)的抵抗能力,在多種商業(yè)產(chǎn)品中被使用。IDEA以64位大小的數(shù)據(jù)塊加密的明文塊進(jìn)行分組,密匙長(zhǎng)度為128位,它基于“相異代數(shù)群上的混合運(yùn)算”設(shè)計(jì)思想算法用硬件和軟件實(shí)現(xiàn)都很容易且比DES在實(shí)現(xiàn)上快的多。

IDEA算法輸入的64位數(shù)據(jù)分組一般被分成4個(gè)16位子分組:A1,A2,A3和A4。這4個(gè)子分組成為算法輸入的第一輪數(shù)據(jù),總共有8輪。在每一輪中,這4個(gè)子分組相互相異或,相加,相乘,且與6個(gè)16位子密鑰相異或,相加,相乘。在輪與輪間,第二和第三個(gè)子分組交換。最后在輸出變換中4個(gè)子分組與4個(gè)子密鑰進(jìn)行運(yùn)算。

FEAL算法不適用于較小的系統(tǒng),它的提出是著眼于當(dāng)時(shí)的DES只用硬件去實(shí)現(xiàn),F(xiàn)EAL算法是一套類似美國(guó)DES的分組加密算法。但FEAL在每一輪的安全強(qiáng)度都比DES高,是比較適合通過軟件來實(shí)現(xiàn)的。FEAL沒有使用置換函數(shù)來混淆加密或解密過程中的數(shù)據(jù)。FEAL使用了異或(XOR)、旋轉(zhuǎn)(Rotation)、加法與模(Modulus)運(yùn)算,F(xiàn)EAL中子密鑰的生成使用了8輪迭代循環(huán),每輪循環(huán)產(chǎn)生2個(gè)16bit的子密鑰,共產(chǎn)生16個(gè)子密鑰運(yùn)用于加密算法中。

2.2 非對(duì)稱密鑰加密技術(shù)

非對(duì)稱密鑰加密技術(shù)又稱公開密鑰加密,即非對(duì)稱加密算法需要兩個(gè)密鑰,公開密鑰和私有密鑰。有一把公用的加密密鑰,有多把解密密鑰,加密和解密時(shí)使用不同的密鑰,即不同的算法,雖然兩者之間存在一定的關(guān)系,但不可能輕易地從一個(gè)推導(dǎo)出另一個(gè)。使用私有密鑰對(duì)數(shù)據(jù)信息進(jìn)行加密,必須使用對(duì)應(yīng)的公開密鑰才能解密,而 公開密鑰對(duì)數(shù)據(jù)信息進(jìn)行加密,只有對(duì)應(yīng)的私有密鑰才能解密。在非對(duì)稱密鑰加密技術(shù)中公開密鑰和私有密鑰都是一組長(zhǎng)度很大、數(shù)字上具有相關(guān)性的素?cái)?shù)。其中的一個(gè)密鑰不可能翻譯出信息數(shù)據(jù),只有使用另一個(gè)密鑰才能解密,每個(gè)用戶只能得到唯一的一對(duì)密鑰,一個(gè)是公開密鑰,一個(gè)是私有密鑰,公開密鑰保存在公共區(qū)域,可在用戶中傳遞,而私有密鑰則必須放在安全的地方。

非對(duì)稱密鑰加密技術(shù)的典型算法是RSA算法。RSA算法是世界上第一個(gè)既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的非對(duì)稱性加密算法,RSA算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美國(guó)麻省理工學(xué)院)開發(fā)的。RSA是目前最有影響力的公鑰加密算法,它能夠抵抗到目前為止已知的所有密碼攻擊,已被ISO推薦為公鑰數(shù)據(jù)加密標(biāo)準(zhǔn)。

RSA算法的安全性依賴于大數(shù)分解,但現(xiàn)在還沒有證明破解RSA就一定需要作大數(shù)分解。所以是否等同于大數(shù)分解一直沒有理論證明的支持。由于RSA算法進(jìn)行的都是大數(shù)計(jì)算,所以無論是在軟件還是硬件方面實(shí)現(xiàn)相對(duì)于DES算法RSA算法最快的情況也會(huì)慢上好幾倍。速度一直是RSA算法的缺陷。

3.總結(jié)

隨著計(jì)算機(jī)網(wǎng)絡(luò)的飛速發(fā)展,在實(shí)現(xiàn)資源共享、信息海量的同時(shí),信息安全達(dá)到了前所未有的需要程度,信息加密技術(shù)也凸顯了其必不可少的地位,同時(shí)也加密技術(shù)帶來了前所未有的發(fā)展需求,加密技術(shù)發(fā)展空間無限。

參考文獻(xiàn):

[1] IDEA算法 中國(guó)信息安全組織 2004-07-17.

[2] baike.省略/view/1364549.htm.

[3]淺析信息加密技術(shù) 張嶺松 《科技信息》 2010年33期.

第4篇

 

常永亮  (飛行試驗(yàn)研究院測(cè)試所  陜西西安 710089)

 

第5篇

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

一、數(shù)據(jù)庫(kù)加密應(yīng)滿足的要求

由于數(shù)據(jù)庫(kù)具有數(shù)據(jù)復(fù)雜、數(shù)據(jù)的查詢操作非常頻繁且數(shù)據(jù)存儲(chǔ)時(shí)限相對(duì)較長(zhǎng)等特點(diǎn),所以應(yīng)用于數(shù)據(jù)庫(kù)的加、解密算法及相應(yīng)的密鑰管理機(jī)制應(yīng)滿足以下要求:

(1)數(shù)據(jù)庫(kù)加密系統(tǒng)應(yīng)滿足的首要條件是保證數(shù)據(jù)的安全性。在此方面要求加密算法保證數(shù)據(jù)的保密性和完整性,防止未授權(quán)的數(shù)據(jù)訪問和修改。

(2)數(shù)據(jù)庫(kù)中存在大量的查詢操作,因此加解密效率要求較高,不能引起數(shù)據(jù)庫(kù)系統(tǒng)的性能大幅度下降。

(3)數(shù)據(jù)庫(kù)組織結(jié)構(gòu)對(duì)于數(shù)據(jù)庫(kù)管理系統(tǒng)而言不能有太大的變動(dòng),應(yīng)盡可能做到明文和密文長(zhǎng)度相等或至少相當(dāng)。

(4)由于時(shí)限較長(zhǎng)和密鑰的復(fù)雜,密鑰管理機(jī)制應(yīng)更加安全、靈活和堅(jiān)固。

二、數(shù)據(jù)庫(kù)加密的常用辦法

數(shù)據(jù)加密技術(shù)按照實(shí)現(xiàn)的方法可劃分為靜態(tài)加密和動(dòng)態(tài)加密,從實(shí)現(xiàn)的層次上則可分為文件級(jí)加密和存儲(chǔ)設(shè)備級(jí)加密。

(1)靜態(tài)加密與動(dòng)態(tài)加密

靜態(tài)加密是指在加密期間,待加密的數(shù)據(jù)處于未使用狀態(tài),這些數(shù)據(jù)一旦加密,在使用前,需首先通過靜態(tài)解密得到明文,然后才能使用。目前市場(chǎng)上許多加密軟件產(chǎn)品就屬于這種加密方式。

與靜態(tài)加密不同,動(dòng)態(tài)加密是指數(shù)據(jù)在使用過程中自動(dòng)對(duì)數(shù)據(jù)進(jìn)行加密或解密操作,無需用戶的干預(yù),合法用戶在使用加密的文件前,也不需要進(jìn)行解密操作即可使用,表面看來,訪問加密的文件和訪問未加密的文件基本相同,對(duì)合法用戶來說,這些加密文件是“透明的”,即好像沒有加密一樣,但對(duì)于沒有訪問權(quán)限的用戶,即使通過其它非常規(guī)手段得到了這些文件,由于文件是加密的,因此也無法使用。由于動(dòng)態(tài)加密技術(shù)不僅不改變用戶的使用習(xí)慣,而且無需用戶太多的干預(yù)操作即可實(shí)現(xiàn)文檔的安全,因而近年來得到了廣泛的應(yīng)用。

由于動(dòng)態(tài)加密要實(shí)時(shí)加密數(shù)據(jù),必須動(dòng)態(tài)跟蹤需要加密的數(shù)據(jù)流,而且其實(shí)現(xiàn)的層次一般位于系統(tǒng)內(nèi)核中,因此,從實(shí)現(xiàn)的技術(shù)角度看,實(shí)現(xiàn)動(dòng)態(tài)加密要比靜態(tài)加密難的多,需要解決的技術(shù)難點(diǎn)也遠(yuǎn)遠(yuǎn)超過靜態(tài)加密。

(2)文件級(jí)動(dòng)態(tài)加解密技術(shù)

在文件系統(tǒng)層,不僅能夠獲得文件的各種信息,而且能夠獲得訪問這些文件的進(jìn)程信息和用戶信息等,因此,可以研制出功能非常強(qiáng)大的文檔安全產(chǎn)品。就動(dòng)態(tài)加解密產(chǎn)品而言,有些文件系統(tǒng)自身就支持文件的動(dòng)態(tài)加解密,如Windows系統(tǒng)中的NTFS文件系統(tǒng),其本身就提供了EFS支持,但作為一種通用的系統(tǒng),雖然提供了細(xì)粒度的控制能力(如可以控制到每個(gè)文件),但在實(shí)際應(yīng)用中,其加密對(duì)象一般以分區(qū)或目錄為單位,難以做到滿足各種用戶個(gè)性化的要求,如自動(dòng)加密某些類型文件等。雖然有某些不足,但支持動(dòng)態(tài)加密的文件系統(tǒng)在某種程度上可以提供和磁盤級(jí)加密技術(shù)相匹敵的安全性。由于文件系統(tǒng)提供的動(dòng)態(tài)加密技術(shù)難以滿足用戶的個(gè)性化需求,因此,為第三方提供動(dòng)態(tài)加解密安全產(chǎn)品提供了足夠的空間。

要研發(fā)在文件級(jí)的動(dòng)態(tài)加解密安全產(chǎn)品,雖然與具體的操作系統(tǒng)有關(guān),但仍有多種方法可供選擇,一般可通過Hook或過濾驅(qū)動(dòng)等方式嵌入到文件系統(tǒng)中,使其成為文件系統(tǒng)的一部分,從某種意義上來說,第三方的動(dòng)態(tài)加解密產(chǎn)品可以看作是文件系統(tǒng)的一個(gè)功能擴(kuò)展,這種擴(kuò)展往往以模塊化的形式出現(xiàn),能夠根據(jù)需要進(jìn)行掛接或卸載,從而能夠滿足用戶的各種需求,這是作為文件系統(tǒng)內(nèi)嵌的動(dòng)態(tài)加密系統(tǒng)難以做到的。

三、數(shù)據(jù)庫(kù)加密對(duì)數(shù)據(jù)庫(kù)的影響

數(shù)據(jù)加密是通過對(duì)明文進(jìn)行復(fù)雜的加密操作,進(jìn)而無法發(fā)現(xiàn)明文和密文之間、密文和密鑰之間的內(nèi)在關(guān)系,也就是說經(jīng)過加密的數(shù)據(jù)經(jīng)得起來自操作系統(tǒng)和數(shù)據(jù)庫(kù)管理系統(tǒng)的攻擊。但在數(shù)據(jù)庫(kù)中以密文形式存在的敏感數(shù)據(jù)無法使用數(shù)據(jù)庫(kù)管理系統(tǒng)的一些功能。數(shù)據(jù)庫(kù)管理系統(tǒng)的功能比較完備,然而數(shù)據(jù)庫(kù)數(shù)據(jù)加密以后,數(shù)據(jù)庫(kù)管理系統(tǒng)一些功能將無法直接使用。

1、加密字段不能實(shí)現(xiàn)索引功能。

為了達(dá)到迅速查詢的目的,數(shù)據(jù)庫(kù)文件需要建立一些索引。索引建立和應(yīng)用必須是明文狀態(tài),否則將失去索引的作用。有的DBMS中可以建立索引,這類索引也需要在明文狀態(tài)下建立、維護(hù)和使用。

2、表間的連接碼字段不能加密。

數(shù)據(jù)模型規(guī)范化以后,數(shù)據(jù)庫(kù)表之間存在著密切的聯(lián)系,這種相關(guān)性往往是通過局部編碼聯(lián)系的,這些編碼若加密就無法進(jìn)行表與表之間的連接運(yùn)算。

3、無法實(shí)現(xiàn)對(duì)數(shù)據(jù)制約因素的定義。

數(shù)據(jù)庫(kù)管理系統(tǒng)定義了數(shù)據(jù)之間的制約規(guī)則。數(shù)據(jù)一旦加密,DBMS將無法實(shí)現(xiàn)這一功能,而且,值域的定義也無法進(jìn)行。

4、密文數(shù)據(jù)無法實(shí)現(xiàn)SQL的排序、分組和分類功能。

SELECT語(yǔ)句中的Group、Orderby、Having子句分別完成分組、排序、分類等操作。這些子句的操作對(duì)象如果是加密數(shù)據(jù),那么解密后的明文數(shù)據(jù)將失去原語(yǔ)句的分組、排序、分類作用,顯然這不是用戶所需要的。

5、SQL語(yǔ)言中的內(nèi)部函數(shù)將對(duì)加密數(shù)據(jù)失去作用。

6、BDMS對(duì)各種類型數(shù)據(jù)均提供了一些內(nèi)部函數(shù),這些函數(shù)不能直接作用于加密數(shù)據(jù)。

7、BDMS的一些應(yīng)用開發(fā)工具的使用受到限制。

DBMS的一些應(yīng)用開發(fā)工具不能直接對(duì)加密數(shù)據(jù)進(jìn)行操作,因而它們的使用會(huì)受到限制。

數(shù)據(jù)庫(kù)加密影響了一些數(shù)據(jù)庫(kù)管理系統(tǒng)的功能,如閱讀語(yǔ)句中的函數(shù)、排序、分組等,但可以通過組件技術(shù)來實(shí)現(xiàn)這些功能,如可采用SQL解釋器。所以說數(shù)據(jù)庫(kù)加密以后,DBMS的一些功能將無法直接使用,但可以在DBMS外層的SMS(安全管理系統(tǒng))中增加組件來實(shí)現(xiàn)這些功能。

四、結(jié)束語(yǔ)

數(shù)據(jù)庫(kù)是數(shù)據(jù)管理的最新技術(shù),是計(jì)算機(jī)科學(xué)的重要分支。建立一個(gè)滿足各級(jí)部門信息處理要求的、行之有效的信息系統(tǒng),也成為一個(gè)企業(yè)或組織生存和發(fā)展的重要條件。因此,作為信息系統(tǒng)核心和基礎(chǔ)的數(shù)據(jù)庫(kù)技術(shù)得到越來越廣泛的應(yīng)用,數(shù)據(jù)庫(kù)技術(shù)因現(xiàn)實(shí)的需求迅速發(fā)展。通過研究,人們認(rèn)識(shí)到數(shù)據(jù)庫(kù)安全與保密這一領(lǐng)域研究的重要性和迫切性。在數(shù)據(jù)庫(kù)安全和加密技術(shù)的研究方面,只是做了一些嘗試性的工作,許多細(xì)節(jié)有待于進(jìn)一步深入。

參考文獻(xiàn)

[1] 張敏等.?dāng)?shù)據(jù)庫(kù)安全[M].北京:科學(xué)出版社,2005

[2] 劉啟軍.?dāng)?shù)據(jù)庫(kù)與信息系統(tǒng)安全[M].北京:電子工業(yè)出版社,2001

第6篇

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

中圖分類號(hào):TP309.7 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2016)05-0000-00

1 數(shù)據(jù)庫(kù)加密技術(shù)的要求

鑒于數(shù)據(jù)庫(kù)所存儲(chǔ)的數(shù)據(jù)具有一定的復(fù)雜性、執(zhí)行查詢操作的頻繁性、數(shù)據(jù)存儲(chǔ)的長(zhǎng)期性等特征,對(duì)于數(shù)據(jù)庫(kù)的加解密算法及對(duì)應(yīng)的密鑰管理機(jī)制要具備以下幾點(diǎn):

(1)數(shù)據(jù)庫(kù)加密系統(tǒng)要充分保證數(shù)據(jù)的安全性,這點(diǎn)體現(xiàn)在加密算法對(duì)于數(shù)據(jù)的保密性及完整性的要求,它有效的防止了對(duì)未授權(quán)數(shù)據(jù)的訪問和修改。(2)應(yīng)用數(shù)據(jù)庫(kù)時(shí)頻繁的查詢操作,需要具備高強(qiáng)度的解密效率,避免造成數(shù)據(jù)庫(kù)系統(tǒng)性能的大幅度下降。(3)明文與密文的長(zhǎng)度要盡可能的做到相等或相當(dāng),相對(duì)于數(shù)據(jù)庫(kù)管理系統(tǒng)而言數(shù)據(jù)庫(kù)結(jié)構(gòu)的變動(dòng)差異不可過大。(4)數(shù)據(jù)存儲(chǔ)時(shí)間久且密鑰又較為復(fù)雜,這需要更為堅(jiān)固、靈活且安全的密鑰管理機(jī)制。

2 數(shù)據(jù)庫(kù)加密的方法

(1)靜態(tài)加密技術(shù)。靜態(tài)加密是指實(shí)施加密時(shí)待加密文件已存在但未使用,通過密碼、密鑰證書或數(shù)字簽名的方式進(jìn)行加密,實(shí)施加密后使用時(shí)必須先通過解密取得明文方可使用的加密方法。此種方式一般應(yīng)用于應(yīng)用系統(tǒng)或軟件加密當(dāng)中。(2)動(dòng)態(tài)加密技術(shù)。動(dòng)態(tài)加密是指動(dòng)態(tài)的跟蹤數(shù)據(jù)流,對(duì)相關(guān)的數(shù)據(jù)自動(dòng)進(jìn)行時(shí)時(shí)加解密操作,無需人工參與亦不會(huì)對(duì)用戶有任何影響,有權(quán)限的用戶在使用已加密文件時(shí),無需先取得明文解密即可直接使用。所以對(duì)于有權(quán)限的用戶來講,動(dòng)態(tài)加密操作是透明的,訪問未加密或加密文件基本感覺不到區(qū)別。反之,對(duì)于沒有訪問權(quán)限的用戶來講,即便通過非法手段取得了加密文件,也無法識(shí)別,只是得到亂碼而已,更談不到獲取有效信息了。近年來,動(dòng)態(tài)加密技術(shù)因其便捷的使用方法得到廣泛的應(yīng)用。(3)文件級(jí)動(dòng)態(tài)加解密技術(shù)。在文件系統(tǒng)層當(dāng)中,既能獲取到文件自身的詳細(xì)信息,又能獲取到用戶信息及訪問此種文件的進(jìn)程等各類相關(guān)信息,因文件系統(tǒng)層其特有的屬性可以開發(fā)出功能極其強(qiáng)大的文檔安全產(chǎn)品。在動(dòng)態(tài)加解密的產(chǎn)品中,其部分文件系統(tǒng)自身就支持文件的動(dòng)態(tài)加解密,而在實(shí)際操作當(dāng)中,加密文件一般以分區(qū)或目錄為單位,對(duì)于用戶的個(gè)性化需求是難以滿足的,即使存在諸多不足之處,文件級(jí)動(dòng)態(tài)加解密技術(shù)的安全性依然可以與磁盤級(jí)加密技術(shù)相匹敵。但鑒于文件級(jí)動(dòng)態(tài)加解密技術(shù)對(duì)于用戶個(gè)性化需求的不足,也為第三方提供了動(dòng)態(tài)加解密安全產(chǎn)品提供了足夠的發(fā)展空間。

在不同的操作系統(tǒng)中要研發(fā)的文件級(jí)動(dòng)態(tài)加解密安全產(chǎn)品也各不相同,有多種方法可供選擇,可利用過濾驅(qū)動(dòng)或Hook等方法將其轉(zhuǎn)化為文件系統(tǒng)的一個(gè)組成部分,即將嵌入到文件系統(tǒng)中。從某個(gè)角度上講,可以將第三方動(dòng)態(tài)加解密產(chǎn)品近似于文件系統(tǒng)的一種功能擴(kuò)展,這種功能擴(kuò)展是通過模塊化的形式根據(jù)客戶需求進(jìn)行掛接或載操作來完成的,而這是作為文件系統(tǒng)內(nèi)嵌的動(dòng)態(tài)加密系統(tǒng)難以實(shí)現(xiàn)的。

3 數(shù)據(jù)庫(kù)加密技術(shù)對(duì)數(shù)據(jù)庫(kù)造成的影響

所謂數(shù)據(jù)加密即是對(duì)明文進(jìn)行一系列較為復(fù)雜的加密操作,使明文和密文、密文和密鑰間的內(nèi)在聯(lián)系不被發(fā)現(xiàn),從而使加密過的數(shù)據(jù)經(jīng)得住數(shù)據(jù)庫(kù)管理系統(tǒng)和操作系統(tǒng)的攻擊。數(shù)據(jù)庫(kù)管理系統(tǒng)的功能一般情況下是較為完備的,但針對(duì)數(shù)據(jù)庫(kù)中以密文形式存在的敏感性數(shù)據(jù)是無法應(yīng)用其部分功能的,且當(dāng)數(shù)據(jù)庫(kù)的數(shù)據(jù)加密后,數(shù)據(jù)庫(kù)管理系統(tǒng)部分功能將無法直接應(yīng)用。

(1)加密字段不能實(shí)現(xiàn)索引功能。在數(shù)據(jù)庫(kù)當(dāng)中為了查詢和檢索的快速及便捷,常常要建立一些索引。而索引要發(fā)揮其作用必須使其建立和應(yīng)用在明文的狀態(tài)下,且某些數(shù)據(jù)庫(kù)管理系統(tǒng)中所建立的索引也必須在明文的狀態(tài)下建立、維護(hù)和使用,否則索引將失去作用。(2)加密功能不能用于表間的連接碼字段。數(shù)據(jù)模型構(gòu)建后,數(shù)據(jù)庫(kù)表之間的相關(guān)性是通過局部編碼進(jìn)行關(guān)聯(lián)的,如若對(duì)這些局部編碼進(jìn)行加密操作,則將無法進(jìn)行數(shù)據(jù)表之間的連接運(yùn)算。(3)加密后無法進(jìn)行數(shù)據(jù)約束的定義。數(shù)據(jù)庫(kù)管理系統(tǒng)通常會(huì)定義數(shù)據(jù)約束,如若此類數(shù)據(jù)一旦進(jìn)行了加密操作,數(shù)據(jù)庫(kù)管理系統(tǒng)將無法實(shí)現(xiàn)數(shù)據(jù)約束功能,且值域也無法進(jìn)行定義。(4)密文數(shù)據(jù)不能應(yīng)用于數(shù)據(jù)庫(kù)的排序、分組和分類功能。SQL的Select語(yǔ)句中分組、排序、分類等操作分別通過Group、Orderby、Having子句來實(shí)現(xiàn),如若將此類子句的操作對(duì)象設(shè)為加密數(shù)據(jù),將無滿足用戶的需求,因?yàn)榧词姑魑臄?shù)據(jù)進(jìn)行了解密操作也失去了原有語(yǔ)句的分組、排序、分類等作用。(5)加密數(shù)據(jù)無法被SQL語(yǔ)言中的內(nèi)部函數(shù)所應(yīng)用。(6)加密數(shù)據(jù)無法直接應(yīng)用于數(shù)據(jù)庫(kù)管理系統(tǒng)為各類數(shù)據(jù)所提供的某些內(nèi)部函數(shù)上。(7)加密數(shù)據(jù)將使數(shù)據(jù)庫(kù)管理系統(tǒng)的某些應(yīng)用開發(fā)工具使用受限。數(shù)據(jù)庫(kù)管理系統(tǒng)的某些應(yīng)用開發(fā)工具不能對(duì)加密數(shù)據(jù)進(jìn)行直接操作,因此在對(duì)其應(yīng)用時(shí)會(huì)受限。由此可見,對(duì)數(shù)據(jù)庫(kù)進(jìn)行加密操作會(huì)影響到部分?jǐn)?shù)據(jù)庫(kù)管理系統(tǒng)的功能,好比閱讀語(yǔ)句中的函數(shù)、排序、分組等,如想應(yīng)用此類功能亦可通過組件技術(shù)來實(shí)現(xiàn),如利用SQL的解釋器。所以當(dāng)數(shù)據(jù)庫(kù)加密后致使數(shù)據(jù)庫(kù)管理系統(tǒng)部分功能無法直接使用時(shí),可以通過在數(shù)據(jù)庫(kù)管理系統(tǒng)的安全管理系統(tǒng)中增加組件來實(shí)現(xiàn)這部分功能的應(yīng)用。

4 結(jié)語(yǔ)

隨著時(shí)代的發(fā)展,數(shù)據(jù)庫(kù)管理系統(tǒng)以其自身優(yōu)勢(shì)在社會(huì)各界得到廣泛應(yīng)用,其使用率較高對(duì)數(shù)據(jù)的安全性要求就越高。目前,人們?cè)跀?shù)據(jù)庫(kù)安全及加密技術(shù)的研究方面只做了部分的嘗試性工作,還有諸多重要性細(xì)節(jié)問題有待于進(jìn)一步深入解決。

參考文獻(xiàn)

第7篇

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

中圖分類號(hào):TP311.13 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):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ā)展及信息處理的不斷增多,巨量級(jí)數(shù)據(jù)撲面而來。數(shù)據(jù)庫(kù)系統(tǒng)擔(dān)負(fù)著集中存儲(chǔ)和處理大量信息的任務(wù),從而使數(shù)據(jù)安全問題變得也非常顯著。傳統(tǒng)地,物理安全和操作系統(tǒng)安全機(jī)制為數(shù)據(jù)庫(kù)提供了一定的安全措施和技術(shù),但并不能全部滿足數(shù)據(jù)庫(kù)安全的需求,特別是無法保證一些重要部門如政府、金融、國(guó)防和一些敏感數(shù)據(jù)如信用卡、身份證、個(gè)人的醫(yī)療信息的安全,因此對(duì)數(shù)據(jù)庫(kù)加密是提高數(shù)據(jù)庫(kù)安全的最重要的手段之一,也成了數(shù)據(jù)庫(kù)安全研究的一個(gè)焦點(diǎn)。

2 數(shù)據(jù)庫(kù)安全概述

數(shù)據(jù)庫(kù)在信息系統(tǒng)中的核心地位使得數(shù)據(jù)庫(kù)面臨著嚴(yán)重的安全威脅,根據(jù)數(shù)據(jù)庫(kù)受到的威脅和可能的攻擊,數(shù)據(jù)庫(kù)的安全性要求著重在幾方面:

(1)物理上的數(shù)據(jù)完整性。預(yù)防數(shù)據(jù)庫(kù)數(shù)據(jù)物理方面的問題,如掉電,以及災(zāi)害破壞后的恢復(fù)、重構(gòu)數(shù)據(jù)庫(kù)。

(2)邏輯上的數(shù)據(jù)完整性。保持?jǐn)?shù)據(jù)的結(jié)構(gòu)。

(3)元素的完整性。包含在每個(gè)元素中的數(shù)據(jù)是準(zhǔn)確的。

(4)可審計(jì)性。能追蹤到誰(shuí)訪問或修改過數(shù)據(jù)庫(kù)中的元素。

(5)訪問控制。確保用戶只能訪問授權(quán)數(shù)據(jù),限制用戶訪問模式。

(6)用戶認(rèn)證。用戶除提供用戶名、口令外,還可按照系統(tǒng)安全要求提供其它相關(guān)安全憑證。系統(tǒng)可以選擇使用終端密鑰、用戶USB Key等來增強(qiáng)身份認(rèn)證的安全性。

(7)可獲用性。用戶能夠?qū)?shù)據(jù)庫(kù)進(jìn)行授權(quán)的訪問。

3 數(shù)據(jù)庫(kù)加密要實(shí)現(xiàn)的目標(biāo)

與一般的數(shù)據(jù)加密和文件加密相比,由于數(shù)據(jù)庫(kù)中數(shù)據(jù)有很強(qiáng)的相關(guān)性,并且數(shù)據(jù)量大,因此對(duì)它加密要比普通數(shù)據(jù)加密和文件加密有更大的難度,密鑰管理更加困難。數(shù)據(jù)加密是防止數(shù)據(jù)庫(kù)中數(shù)據(jù)在存儲(chǔ)和傳輸中失密的有效手段。數(shù)據(jù)加密的過程實(shí)際上就是根據(jù)一定的算法將原始數(shù)據(jù)變換為不可直接識(shí)別的格式,從而使得不知道解密算法的人無法獲知數(shù)據(jù)的內(nèi)容,而僅允許經(jīng)過授權(quán)的人員訪問和讀取數(shù)據(jù),從而確保數(shù)據(jù)的保密性,是一種有助于保護(hù)數(shù)據(jù)的機(jī)制。

因此,數(shù)據(jù)庫(kù)加密要求做到:

(1)數(shù)據(jù)庫(kù)中信息保存時(shí)間比較長(zhǎng),采用合適的加密方式,從根本上達(dá)到不可破譯;

(2)加密后,加密數(shù)據(jù)占用的存儲(chǔ)空間不宜明顯增大;

(3)加密/解密速度要快,尤其是解密速度,要使用戶感覺不到加密/解密過程中產(chǎn)生的時(shí)延,以及系統(tǒng)性能的變化;

(4)授權(quán)機(jī)制要盡可能靈活。在多用戶環(huán)境中使用數(shù)據(jù)庫(kù)系統(tǒng),每個(gè)用戶只用到其中一小部分?jǐn)?shù)據(jù)。所以,系統(tǒng)應(yīng)有比較強(qiáng)的訪問控制機(jī)制,再加上靈活的授權(quán)機(jī)制配合起來對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)進(jìn)行保護(hù)。這樣既增加了系統(tǒng)的安全性,又方便了用戶的使用;

(5)提供一套安全的、靈活的密鑰管理機(jī)制;

(6)不影響數(shù)據(jù)庫(kù)系統(tǒng)的原有功能,保持對(duì)數(shù)據(jù)庫(kù)操作(如查詢,檢索,修改,更新)的靈活性和簡(jiǎn)便性;

(7)加密后仍能滿足用戶對(duì)數(shù)據(jù)庫(kù)不同的粒度進(jìn)行訪問。

4 數(shù)據(jù)庫(kù)加密技術(shù)中的關(guān)鍵問題

數(shù)據(jù)庫(kù)加密需要考慮幾個(gè)重要問題:是在數(shù)據(jù)庫(kù)引擎內(nèi)或產(chǎn)生數(shù)據(jù)的應(yīng)用程序中或是在硬件設(shè)備上進(jìn)行加密/解密?加密數(shù)據(jù)粒度基于數(shù)據(jù)庫(kù)、表還是字段?加密效果與其對(duì)性能的影響如何?

針對(duì)上述幾個(gè)問題,結(jié)合數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)時(shí)間長(zhǎng)、共享性高等特點(diǎn),在數(shù)據(jù)庫(kù)加密技術(shù)中,重點(diǎn)是要選擇合適的加密執(zhí)行層次、加密粒度和加密算法,并且要與實(shí)際的安全需求緊密結(jié)合起來。

4.1 加密執(zhí)行層次

對(duì)數(shù)據(jù)庫(kù)的數(shù)據(jù)進(jìn)行加密主要是通過操作系統(tǒng)層加密、DBMS內(nèi)核層(服務(wù)器端)加密和DBMS外層(客戶端)加密三個(gè)不同層次實(shí)現(xiàn)的;DBMS內(nèi)核層、外層加密分別如圖1、圖2所示:

(1)在OS層

在操作系統(tǒng)(OS)層執(zhí)行加密/解密,數(shù)據(jù)庫(kù)元素以及各元素之間的關(guān)系無法辨認(rèn),所以無法產(chǎn)生合理的密鑰。一般在OS層,針對(duì)數(shù)據(jù)庫(kù)文件要么不加密,要么對(duì)整個(gè)數(shù)據(jù)庫(kù)文件進(jìn)行加密,加密/解密不能合理執(zhí)行。尤其對(duì)于大型數(shù)據(jù)庫(kù)來說,在操作系統(tǒng)層次實(shí)現(xiàn)數(shù)據(jù)庫(kù)的加密/解密,目前還難做到有效保證數(shù)據(jù)庫(kù)的安全,因此一般不采用在OS層進(jìn)行數(shù)據(jù)庫(kù)加密。

(2)在DBMS內(nèi)核層執(zhí)行加密/解密

在內(nèi)核層執(zhí)行加密解密有如下特點(diǎn):

加密/解密執(zhí)行時(shí)間:在數(shù)據(jù)存入數(shù)據(jù)庫(kù)或從數(shù)據(jù)庫(kù)中取出時(shí),即在物理數(shù)據(jù)存取之前;

加密/解密執(zhí)行主體:在DBMS內(nèi)核層,由用戶定制的或者DBMS提供的存儲(chǔ)過程函數(shù)執(zhí)行;

加密/解密過程:在存儲(chǔ)數(shù)據(jù)時(shí),通過觸發(fā)器調(diào)用加密存儲(chǔ)過程對(duì)數(shù)據(jù)加密,然后將密文數(shù)據(jù)存入數(shù)據(jù)庫(kù)在讀取數(shù)據(jù)時(shí),觸發(fā)器調(diào)用相應(yīng)存儲(chǔ)過程解密數(shù)據(jù),然后讀出結(jié)果;

加密/解密算法:由DBMS系統(tǒng)提供。多數(shù)不提供添加自己算法的接口,因此算法選擇比較受限制。

在DBMS內(nèi)核層實(shí)現(xiàn)加密需要對(duì)數(shù)據(jù)庫(kù)管理系統(tǒng)本身進(jìn)行操作,這種加密是指數(shù)據(jù)在物理存取之前完成加密/解密工作。優(yōu)點(diǎn)是加密功能強(qiáng),并且加密功能幾乎不會(huì)影響DBMS的功能,可以實(shí)現(xiàn)加密功能與數(shù)據(jù)庫(kù)管理系統(tǒng)之間的無縫耦合。由于與DBMS系統(tǒng)結(jié)合緊密,可以提供對(duì)各種粒度加密的靈活性,靈活的加密配合DBMS的訪問控制、授權(quán)控制,不失是一種有效的數(shù)據(jù)庫(kù)數(shù)據(jù)保護(hù)方案。另外,這種層次的加密對(duì)于應(yīng)用程序來說是透明的。其缺點(diǎn)是加密運(yùn)算在服務(wù)器端進(jìn)行,加重了服務(wù)器的負(fù)載,而且DBMS和加密器之間的接口需要DBMS開發(fā)商的支持。

(3)在DBMS外層執(zhí)行加密/解密

在DBMS外層執(zhí)行加密/解密包含兩種實(shí)現(xiàn)方式:第一種方式如圖2(a)所示,是在應(yīng)用程序中實(shí)現(xiàn),加密時(shí)調(diào)用應(yīng)用程序中的加密模塊來完成數(shù)據(jù)的加密工作,然后把密文數(shù)據(jù)傳送到DBMS存儲(chǔ);解密時(shí)把密文數(shù)據(jù)取出到應(yīng)用程序中,然后由應(yīng)用程序中的解密模塊將數(shù)據(jù)解密并給出結(jié)果。第二種方式如圖2(b)所示,是直接利用操作系統(tǒng)提供的功能實(shí)現(xiàn)加密,這種加密方式是在文件級(jí)別上的加密,直接加密數(shù)據(jù)庫(kù)文件。

在DBMS外層實(shí)現(xiàn)加密的好處是不會(huì)加重?cái)?shù)據(jù)庫(kù)服務(wù)器的負(fù)載, 采用這種加密方式進(jìn)行加密,加解密運(yùn)算可在客戶端進(jìn)行,它的優(yōu)點(diǎn)是不會(huì)加重?cái)?shù)據(jù)庫(kù)服務(wù)器的負(fù)載并且可以實(shí)現(xiàn)網(wǎng)上傳輸?shù)募用?,缺點(diǎn)是加密功能會(huì)受到一些限制,與數(shù)據(jù)庫(kù)管理系統(tǒng)之間的耦合性稍差。

(4)不同層次實(shí)現(xiàn)數(shù)據(jù)庫(kù)加密效果比較

在DBMS內(nèi)核層和DBMS外層加密的特點(diǎn)如表1所示:

由表可知:在DBMS內(nèi)核層執(zhí)行加密/解密,不會(huì)增加額外的處理負(fù)擔(dān),對(duì)本身性能影響??;實(shí)現(xiàn)了密鑰與密文的分離,安全程度相對(duì)較高;算法由應(yīng)用程序提供,選擇性大。

DBMS外層加密主要存在著可用性與安全性的矛盾;加密粒度受DBMS接口支持的限制,靈活性不夠強(qiáng);安全升級(jí)時(shí),應(yīng)用程序改動(dòng)比較大;對(duì)于密文數(shù)據(jù),DBMS本身的一些功能會(huì)受到影響。

4.2 加密粒度選擇

數(shù)據(jù)庫(kù)的加密粒度指的是數(shù)據(jù)加密的最小單位,主要有表、字段、數(shù)據(jù)元素等。數(shù)據(jù)庫(kù)中執(zhí)行加密,加密粒度越小,則可以選擇加密數(shù)據(jù)的靈活性就越大,但是產(chǎn)生的密鑰數(shù)量也大,帶來管理方面問題。數(shù)據(jù)庫(kù)中加密粒度的選擇要根據(jù)需要,充分衡量安全性和靈活性等需求。選擇的過程中,由于數(shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)包括非敏感數(shù)據(jù),因此,可以只選擇敏感數(shù)據(jù)部分進(jìn)行加密,從而加密粒度越小,加密執(zhí)行消耗資源就少,投入費(fèi)用就少。

4.3 算法選擇

數(shù)據(jù)庫(kù)加密技術(shù)的安全很大程度上取決于加密算法的強(qiáng)度,加密算法直接影響到數(shù)據(jù)庫(kù)加密的安全和性能。因此,加密算法的選擇在數(shù)據(jù)庫(kù)加密方案中也顯得舉足輕重。傳統(tǒng)的數(shù)據(jù)加密技術(shù)包括以下三種:

(1)對(duì)稱加密

也稱為共享密鑰加密。對(duì)稱加密算法是應(yīng)用較早的加密算法,在對(duì)稱加密算法中,數(shù)據(jù)發(fā)信方將明文(原始數(shù)據(jù))和加密密鑰一起經(jīng)過特殊加密算法處理后,使其變成復(fù)雜的加密密文發(fā)送出去。收信方若想解讀原文,則需要使用加密用過的密鑰及相同算法的逆算法對(duì)密文進(jìn)行解密,才能使其恢復(fù)成可讀明文。由于對(duì)稱加密算法算法公開、計(jì)算量小、加密速度快、加密效率高,因此它是最常用的加密技術(shù)。主要的對(duì)稱加密算法有DES、IDEA和AES。

(2)非對(duì)稱加密

又稱為公鑰加密。非對(duì)稱加密算法使用兩把完全不同但又是完全匹配的一對(duì)鑰匙――公鑰和私鑰。非對(duì)稱加密算法的基本原理是,如果發(fā)信方想發(fā)送只有收信方才能解讀的加密信息,發(fā)信方必須首先知道收信方的公鑰,然后利用收信方的公鑰來加密原文;收信方收到加密密文后,使用自己的私鑰才能解密密文。顯然,采用非對(duì)稱加密算法,收發(fā)信雙方在通信之前,收信方必須將自己早已隨機(jī)生成的公鑰送給發(fā)信方,而自己保留私鑰。由于非對(duì)稱算法擁有兩個(gè)密鑰,因而特別適用于分布式系統(tǒng)中的數(shù)據(jù)加密。常用的公鑰加密算法是RSA,它不但可以用來加密數(shù)據(jù),還可用來進(jìn)行身份認(rèn)證和數(shù)據(jù)完整性驗(yàn)證。

(3)混合加密

由于對(duì)稱加密算法更簡(jiǎn)單,數(shù)據(jù)的加密和解密都使用同一個(gè)密鑰,所以比起非對(duì)稱加密,它的速度要快得多,適合大量數(shù)據(jù)的加密和解密;主要缺點(diǎn)也是由于使用相同的密鑰加密和解密數(shù)據(jù)引起的,所有的數(shù)據(jù)發(fā)送方和接收方都必須知道或可以訪問加密密鑰,必須將此加密密鑰發(fā)送給所有要求訪問加密數(shù)據(jù)的一方,所以在密鑰的生成、分發(fā)、備份、重新生成和生命周期等方面常存在安全問題。而公鑰加密屬于非對(duì)稱加密,不存在密鑰的分發(fā)問題,因此在多用戶和網(wǎng)絡(luò)系統(tǒng)中密鑰管理非常簡(jiǎn)單,但由于它主要基于一些難解的數(shù)學(xué)問題,所以安全強(qiáng)度沒有對(duì)稱加密高,速度也比較慢。

為了充分發(fā)揮對(duì)稱加密與非對(duì)稱加密的優(yōu)勢(shì),混合加密方案被提出。在混合加密方案中,加密者首先利用一個(gè)隨機(jī)生成的密鑰和對(duì)稱加密算法加密數(shù)據(jù),然后通過使用接收者的公鑰把隨機(jī)密鑰進(jìn)行加密,并與密文一起傳送給接受者。接收者通過自己的私鑰首先解密隨機(jī)密鑰,再利用其解密密文。此方案既利用了對(duì)稱加密安全強(qiáng)度高、速度快的特點(diǎn),也利用了非對(duì)稱加密密鑰管理簡(jiǎn)單的特性?!耙淮我幻堋钡募用苁亲畎踩囊环N加密技術(shù),加密者在每次加密時(shí)都使用與明文長(zhǎng)度一樣的隨機(jī)密鑰,并且每個(gè)密鑰都不重復(fù)使用。但在數(shù)據(jù)庫(kù)加密中,由于密鑰的產(chǎn)生和保存都存在很大的困難,因此在實(shí)際應(yīng)用中并不常用。

5 數(shù)據(jù)庫(kù)加密后對(duì)系統(tǒng)的影響

加密技術(shù)在保證數(shù)據(jù)庫(kù)安全性的同時(shí),也給數(shù)據(jù)庫(kù)系統(tǒng)帶來如下一些影響:

(1)性能下降:數(shù)據(jù)加密后,由于其失去了本身所固有的一些特性,如有序性,相似性和可比性,這樣導(dǎo)致對(duì)加密數(shù)據(jù)的查詢,往往需要對(duì)所有加密數(shù)據(jù)先進(jìn)行解密,然后才能進(jìn)行查詢。而解密操作的代價(jià)往往很大,這樣使得系統(tǒng)的性能急劇下降。

(2)索引字段的加密問題:索引的建立和應(yīng)用必須在明文狀態(tài)下進(jìn)行,這樣才能夠保證索引文件中鍵的有序性,以便提高查詢性能。否則,索引將失去作用。

(3)加密字符串的模糊匹配:對(duì)加密數(shù)據(jù)上的大量模糊查詢,例如,當(dāng)SQL條件語(yǔ)句包“Like”時(shí),很難進(jìn)行處理。

(4)加密數(shù)據(jù)庫(kù)的完整性:當(dāng)數(shù)據(jù)庫(kù)加密后,實(shí)體完整性不會(huì)被破壞,而引用完整性難以維護(hù)。

(5)加密數(shù)據(jù)的存儲(chǔ)空間增加問題:對(duì)數(shù)據(jù)庫(kù)加密,通常采用分組加密算法,這有可能導(dǎo)致數(shù)據(jù)加密后的存儲(chǔ)空間增加。

(6)密鑰管理問題:在現(xiàn)代密碼學(xué)中算法的安全性都是基于密鑰的安全性,而不是基于算法的細(xì)節(jié)的安全性。對(duì)數(shù)據(jù)庫(kù)采取加密技術(shù)來保證其安全性,但是在現(xiàn)實(shí)生活中,如何保證密鑰本身的安全性又是一件非常困難的事情心。在數(shù)據(jù)庫(kù)管理系統(tǒng)中,由于數(shù)據(jù)的共享性和存儲(chǔ)數(shù)據(jù)的持久性等原因,要求更加靈活和安全的密鑰管理機(jī)制。

參考文獻(xiàn):

[1] 萬紅艷.一種數(shù)據(jù)庫(kù)加密系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].黃石理工學(xué)院學(xué)報(bào),2007,23(3):27-29.

[2] 趙曉峰.幾種數(shù)據(jù)庫(kù)加密方法的研究與比較[J].計(jì)算機(jī)技術(shù)與發(fā)展,2007,17(2):219-222.

[3] 王正飛,施伯樂.數(shù)據(jù)庫(kù)加密技術(shù)及其應(yīng)用研究[D].上海:復(fù)旦大學(xué),2005.

[4] 莊海燕,徐江峰.數(shù)據(jù)庫(kù)加密技術(shù)及其在Oracle中的應(yīng)用[D].鄭州:鄭州大學(xué),2006.

[5] 黃玉蕾.數(shù)據(jù)庫(kù)加密算法的分析與比較[J].科技情報(bào)開發(fā)與經(jīng)濟(jì),2008,18(2):159-161.