美章網(wǎng) 精品范文 數(shù)據(jù)加密技術(shù)論文范文

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

前言:我們精心挑選了數(shù)篇優(yōu)質(zhì)數(shù)據(jù)加密技術(shù)論文文章,供您閱讀參考。期待這些文章能為您帶來(lái)啟發(fā),助您在寫(xiě)作的道路上更上一層樓。

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

第1篇

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

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

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

對(duì)這種“置換表”方式的一個(gè)改進(jìn)就是使用2個(gè)或者更多的“置換表”,這些表都是基于數(shù)據(jù)流中字節(jié)的位置的,或者基于數(shù)據(jù)流本身。這時(shí),破譯變的更加困難,因?yàn)楹诳捅仨氄_的做幾次變換。通過(guò)使用更多的“置換表”,并且按偽隨機(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,但所有的字母都沒(méi)有變化,沒(méi)有增加也沒(méi)有減少,但是字母之間的順序已經(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ì)我們的解密程序來(lái)講是非常容易的。

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

循環(huán)冗余校驗(yàn)是一種典型的校驗(yàn)數(shù)據(jù)的方法。對(duì)于每一個(gè)數(shù)據(jù)塊,它使用位循環(huán)移位和xor操作來(lái)產(chǎn)生一個(gè)16位或32位的校驗(yàn)和,這使得丟失一位或兩個(gè)位的錯(cuò)誤一定會(huì)導(dǎo)致校驗(yàn)和出錯(cuò)。這種方式很久以來(lái)就應(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è)密碼或密鑰,并用它來(lái)加密明文,不同的密碼或密鑰產(chǎn)生不同的密文。這又分為兩種方式:對(duì)稱密鑰算法和非對(duì)稱密鑰算法。所謂對(duì)稱密鑰算法就是加密解密都使用相同的密鑰,非對(duì)稱密鑰算法就是加密解密使用不同的密鑰。非常著名的pgp公鑰加密以及rsa加密方法都是非對(duì)稱加密算法。加密密鑰,即公鑰,與解密密鑰,即私鑰,是非常的不同的。從數(shù)學(xué)理論上講,幾乎沒(méi)有真正不可逆的算法存在。例如,對(duì)于一個(gè)輸入‘a(chǎn)’執(zhí)行一個(gè)操作得到結(jié)果‘b’,那么我們可以基于‘b’,做一個(gè)相對(duì)應(yīng)的操作,導(dǎo)出輸入‘a(chǎn)’。在一些情況下,對(duì)于每一種操作,我們可以得到一個(gè)確定的值,或者該操作沒(méi)有定義(比如,除數(shù)為0)。對(duì)于一個(gè)沒(méi)有定義的操作來(lái)講,基于加密算法,可以成功地防止把一個(gè)公鑰變換成為私鑰。因此,要想破譯非對(duì)稱加密算法,找到那個(gè)唯一的密鑰,唯一的方法只能是反復(fù)的試驗(yàn),而這需要大量的處理時(shí)間。

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

我們舉一個(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í),解密程序找到加密過(guò)的密鑰,并利用rsa私鑰解密出來(lái),然后再確定出數(shù)據(jù)的開(kāi)始位置,利用密鑰‘12345’來(lái)解密數(shù)據(jù)。這樣就使得一個(gè)可靠的經(jīng)過(guò)高效加密的數(shù)據(jù)安全地傳輸和解密。

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

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

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

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

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

把256個(gè)隨機(jī)數(shù)放在一個(gè)距陣中,然后對(duì)他們進(jìn)行排序,使用這樣一種方式(我們要記住最初的位置)使用最初的位置來(lái)產(chǎn)生一個(gè)表,隨意排序的表,表中的數(shù)字在0到255之間。如果不是很明白如何來(lái)做,就可以不管它。但是,下面也提供了一些原碼(在下面)是我們明白是如何來(lái)做的。現(xiàn)在,產(chǎn)生了一個(gè)具體的256字節(jié)的表。讓這個(gè)隨機(jī)數(shù)產(chǎn)生器接著來(lái)產(chǎn)生這個(gè)表中的其余的數(shù),以至于每個(gè)表是不同的。下一步,使用"shotguntechnique"技術(shù)來(lái)產(chǎn)生解碼表。基本上說(shuō),如果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算法來(lái)產(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)和。順便提及的是曾作過(guò)這樣一個(gè)測(cè)試:使用16個(gè)字節(jié)來(lái)產(chǎn)生表的索引,以128位的密鑰作為這16個(gè)字節(jié)的初始的"種子"。然后,在產(chǎn)生出這些隨機(jī)數(shù)的表之后,就可以用來(lái)加密數(shù)據(jù),速度達(dá)到每秒鐘100k個(gè)字節(jié)。一定要保證在加密與解密時(shí)都使用加密的值作為表的索引,而且這兩次一定要匹配。

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

如果確實(shí)不理解如何來(lái)產(chǎn)生一個(gè)隨機(jī)數(shù)序列,就考慮fibbonacci數(shù)列,使用2個(gè)雙字(64位)的數(shù)作為產(chǎn)生隨機(jī)數(shù)的種子,再加上第三個(gè)雙字來(lái)做xor操作。這個(gè)算法產(chǎn)生了一系列的隨機(jī)數(shù)。算法如下:

unsignedlongdw1,dw2,dw3,dwmask;

inti1;

unsignedlongarandom[256];

dw1={seed#1};

dw2={seed#2};

dwmask={seed#3};

//thisgivesyou332-bit"seeds",or96bitstotal

for(i1=0;i1<256;i1++)

{

dw3=(dw1+dw2)^dwmask;

arandom[i1]=dw3;

dw1=dw2;

dw2=dw3;

}

如果想產(chǎn)生一系列的隨機(jī)數(shù)字,比如說(shuō),在0和列表中所有的隨機(jī)數(shù)之間的一些數(shù),就可以使用下面的方法:

int__cdeclmysortproc(void*p1,void*p2)

{

unsignedlong**pp1=(unsignedlong**)p1;

unsignedlong**pp2=(unsignedlong**)p2;

if(**pp1<**pp2)

return(-1);

elseif(**pp1>*pp2)

return(1);

return(0);

}

...

inti1;

unsignedlong*aprandom[256];

unsignedlongarandom[256];//samearrayasbefore,inthiscase

intaresult[256];//resultsgohere

for(i1=0;i1<256;i1++)

{

aprandom[i1]=arandom+i1;

}

//nowsortit

qsort(aprandom,256,sizeof(*aprandom),mysortproc);

//finalstep-offsetsforpointersareplacedintooutputarray

for(i1=0;i1<256;i1++)

{

aresult[i1]=(int)(aprandom[i1]-arandom);

}

...

變量''''aresult''''中的值應(yīng)該是一個(gè)排過(guò)序的唯一的一系列的整數(shù)的數(shù)組,整數(shù)的值的范圍均在0到255之間。這樣一個(gè)數(shù)組是非常有用的,例如:對(duì)一個(gè)字節(jié)對(duì)字節(jié)的轉(zhuǎn)換表,就可以很容易并且非常可靠的來(lái)產(chǎn)生一個(gè)短的密鑰(經(jīng)常作為一些隨機(jī)數(shù)的種子)。這樣一個(gè)表還有其他的用處,比如說(shuō):來(lái)產(chǎn)生一個(gè)隨機(jī)的字符,計(jì)算機(jī)游戲中一個(gè)物體的隨機(jī)的位置等等。上面的例子就其本身而言并沒(méi)有構(gòu)成一個(gè)加密算法,只是加密算法一個(gè)組成部分。

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

四.結(jié)論:

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

參考文獻(xiàn):

1.pgp!/

cyberknights(newlink)/cyberkt/

(oldlink:/~merlin/knights/)

2.cryptochamberjyu.fi/~paasivir/crypt/

3.sshcryptographa-z(includesinfoonsslandhttps)ssh.fi/tech/crypto/

4.funet''''cryptologyftp(yetanotherfinlandresource)ftp://ftp.funet.fi/pub/crypt/

agreatenigmaarticle,howthecodewasbrokenbypolishscientists

/nbrass/1enigma.htm

5.ftpsiteinukftp://sable.ox.ac.uk/pub/crypto/

6.australianftpsiteftp://ftp.psy.uq.oz.au/pub/

7.replayassociatesftparchiveftp://utopia.hacktic.nl/pub/replay/pub/crypto/

8.rsadatasecurity(whynotincludethemtoo!)/

第2篇

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

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

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

對(duì)這種“置換表”方式的一個(gè)改進(jìn)就是使用2個(gè)或者更多的“置換表”,這些表都是基于數(shù)據(jù)流中字節(jié)的位置的,或者基于數(shù)據(jù)流本身。這時(shí),破譯變的更加困難,因?yàn)楹诳捅仨氄_的做幾次變換。通過(guò)使用更多的“置換表”,并且按偽隨機(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,但所有的字母都沒(méi)有變化,沒(méi)有增加也沒(méi)有減少,但是字母之間的順序已經(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ì)我們的解密程序來(lái)講是非常容易的。

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

循環(huán)冗余校驗(yàn)是一種典型的校驗(yàn)數(shù)據(jù)的方法。對(duì)于每一個(gè)數(shù)據(jù)塊,它使用位循環(huán)移位和xor操作來(lái)產(chǎn)生一個(gè)16位或32位的校驗(yàn)和,這使得丟失一位或兩個(gè)位的錯(cuò)誤一定會(huì)導(dǎo)致校驗(yàn)和出錯(cuò)。這種方式很久以來(lái)就應(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è)密碼或密鑰,并用它來(lái)加密明文,不同的密碼或密鑰產(chǎn)生不同的密文。這又分為兩種方式:對(duì)稱密鑰算法和非對(duì)稱密鑰算法。所謂對(duì)稱密鑰算法就是加密解密都使用相同的密鑰,非對(duì)稱密鑰算法就是加密解密使用不同的密鑰。非常著名的pgp公鑰加密以及rsa加密方法都是非對(duì)稱加密算法。加密密鑰,即公鑰,與解密密鑰,即私鑰,是非常的不同的。從數(shù)學(xué)理論上講,幾乎沒(méi)有真正不可逆的算法存在。例如,對(duì)于一個(gè)輸入‘a(chǎn)’執(zhí)行一個(gè)操作得到結(jié)果‘b’,那么我們可以基于‘b’,做一個(gè)相對(duì)應(yīng)的操作,導(dǎo)出輸入‘a(chǎn)’。在一些情況下,對(duì)于每一種操作,我們可以得到一個(gè)確定的值,或者該操作沒(méi)有定義(比如,除數(shù)為0)。對(duì)于一個(gè)沒(méi)有定義的操作來(lái)講,基于加密算法,可以成功地防止把一個(gè)公鑰變換成為私鑰。因此,要想破譯非對(duì)稱加密算法,找到那個(gè)唯一的密鑰,唯一的方法只能是反復(fù)的試驗(yàn),而這需要大量的處理時(shí)間。

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

我們舉一個(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í),解密程序找到加密過(guò)的密鑰,并利用rsa私鑰解密出來(lái),然后再確定出數(shù)據(jù)的開(kāi)始位置,利用密鑰‘12345’來(lái)解密數(shù)據(jù)。這樣就使得一個(gè)可靠的經(jīng)過(guò)高效加密的數(shù)據(jù)安全地傳輸和解密。

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

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

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

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

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

把256個(gè)隨機(jī)數(shù)放在一個(gè)距陣中,然后對(duì)他們進(jìn)行排序,使用這樣一種方式(我們要記住最初的位置)使用最初的位置來(lái)產(chǎn)生一個(gè)表,隨意排序的表,表中的數(shù)字在0到255之間。如果不是很明白如何來(lái)做,就可以不管它。但是,下面也提供了一些原碼(在下面)是我們明白是如何來(lái)做的。現(xiàn)在,產(chǎn)生了一個(gè)具體的256字節(jié)的表。讓這個(gè)隨機(jī)數(shù)產(chǎn)生器接著來(lái)產(chǎn)生這個(gè)表中的其余的數(shù),以至于每個(gè)表是不同的。下一步,使用"shotguntechnique"技術(shù)來(lái)產(chǎn)生解碼表。基本上說(shuō),如果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算法來(lái)產(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)和。順便提及的是曾作過(guò)這樣一個(gè)測(cè)試:使用16個(gè)字節(jié)來(lái)產(chǎn)生表的索引,以128位的密鑰作為這16個(gè)字節(jié)的初始的"種子"。然后,在產(chǎn)生出這些隨機(jī)數(shù)的表之后,就可以用來(lái)加密數(shù)據(jù),速度達(dá)到每秒鐘100k個(gè)字節(jié)。一定要保證在加密與解密時(shí)都使用加密的值作為表的索引,而且這兩次一定要匹配。

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

如果確實(shí)不理解如何來(lái)產(chǎn)生一個(gè)隨機(jī)數(shù)序列,就考慮fibbonacci數(shù)列,使用2個(gè)雙字(64位)的數(shù)作為產(chǎn)生隨機(jī)數(shù)的種子,再加上第三個(gè)雙字來(lái)做xor操作。這個(gè)算法產(chǎn)生了一系列的隨機(jī)數(shù)。算法如下:

unsignedlongdw1,dw2,dw3,dwmask;

inti1;

unsignedlongarandom[256];

dw1={seed#1};

dw2={seed#2};

dwmask={seed#3};

//thisgivesyou332-bit"seeds",or96bitstotal

for(i1=0;i1<256;i1++)

{

dw3=(dw1+dw2)^dwmask;

arandom[i1]=dw3;

dw1=dw2;

dw2=dw3;

}

如果想產(chǎn)生一系列的隨機(jī)數(shù)字,比如說(shuō),在0和列表中所有的隨機(jī)數(shù)之間的一些數(shù),就可以使用下面的方法:

int__cdeclmysortproc(void*p1,void*p2)

{

unsignedlong**pp1=(unsignedlong**)p1;

unsignedlong**pp2=(unsignedlong**)p2;

if(**pp1<**pp2)

return(-1);

elseif(**pp1>*pp2)

return(1);

return(0);

}

...

inti1;

unsignedlong*aprandom[256];

unsignedlongarandom[256];//samearrayasbefore,inthiscase

intaresult[256];//resultsgohere

for(i1=0;i1<256;i1++)

{

aprandom[i1]=arandom+i1;

}

//nowsortit

qsort(aprandom,256,sizeof(*aprandom),mysortproc);

//finalstep-offsetsforpointersareplacedintooutputarray

for(i1=0;i1<256;i1++)

{

aresult[i1]=(int)(aprandom[i1]-arandom);

}

...

變量''''aresult''''中的值應(yīng)該是一個(gè)排過(guò)序的唯一的一系列的整數(shù)的數(shù)組,整數(shù)的值的范圍均在0到255之間。這樣一個(gè)數(shù)組是非常有用的,例如:對(duì)一個(gè)字節(jié)對(duì)字節(jié)的轉(zhuǎn)換表,就可以很容易并且非常可靠的來(lái)產(chǎn)生一個(gè)短的密鑰(經(jīng)常作為一些隨機(jī)數(shù)的種子)。這樣一個(gè)表還有其他的用處,比如說(shuō):來(lái)產(chǎn)生一個(gè)隨機(jī)的字符,計(jì)算機(jī)游戲中一個(gè)物體的隨機(jī)的位置等等。上面的例子就其本身而言并沒(méi)有構(gòu)成一個(gè)加密算法,只是加密算法一個(gè)組成部分。

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

四.結(jié)論:

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

參考文獻(xiàn):

1.pgp!/

cyberknights(newlink)/cyberkt/

(oldlink:/~merlin/knights/)

2.cryptochamberjyu.fi/~paasivir/crypt/

3.sshcryptographa-z(includesinfoonsslandhttps)ssh.fi/tech/crypto/

4.funet''''cryptologyftp(yetanotherfinlandresource)ftp://ftp.funet.fi/pub/crypt/

agreatenigmaarticle,howthecodewasbrokenbypolishscientists

/nbrass/1enigma.htm

5.ftpsiteinukftp://sable.ox.ac.uk/pub/crypto/

6.australianftpsiteftp://ftp.psy.uq.oz.au/pub/

7.replayassociatesftparchiveftp://utopia.hacktic.nl/pub/replay/pub/crypto/

8.rsadatasecurity(whynotincludethemtoo!)/

第3篇

【關(guān)鍵詞】數(shù)據(jù)庫(kù)加密、加密算法、加密技術(shù)特性、加密字典、加解密引擎。

隨著電子商務(wù)逐漸越來(lái)越多的應(yīng)用,數(shù)據(jù)的安全問(wèn)題越來(lái)越受到重視。一是企業(yè)本身需要對(duì)自己的關(guān)鍵數(shù)據(jù)進(jìn)行有效的保護(hù);二是企業(yè)從應(yīng)用服務(wù)提供商(ApplicationServiceProvider,ASP)處獲得應(yīng)用支持和服務(wù),在這種情況下,企業(yè)的業(yè)務(wù)數(shù)據(jù)存放在ASP處,其安全性無(wú)法得到有效的保障。因?yàn)閭鹘y(tǒng)的數(shù)據(jù)庫(kù)保護(hù)方式是通過(guò)設(shè)定口令字和訪問(wèn)權(quán)限等方法實(shí)現(xiàn)的,數(shù)據(jù)庫(kù)管理員可以不加限制地訪問(wèn)和更改數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)。解決這一問(wèn)題的關(guān)鍵是要對(duì)數(shù)據(jù)本身加密,即使數(shù)據(jù)不幸泄露或丟失,也難以被人破譯,關(guān)于這一點(diǎn)現(xiàn)基本數(shù)據(jù)庫(kù)產(chǎn)品都支持對(duì)數(shù)據(jù)庫(kù)中的所有數(shù)據(jù)加密存儲(chǔ)。

-對(duì)數(shù)據(jù)進(jìn)行加密,主要有三種方式:系統(tǒng)中加密、客戶端(DBMS外層)加密、服務(wù)器端(DBMS內(nèi)核層)加密。客戶端加密的好處是不會(huì)加重?cái)?shù)據(jù)庫(kù)服務(wù)器的負(fù)載,并且可實(shí)現(xiàn)網(wǎng)上的傳輸加密,這種加密方式通常利用數(shù)據(jù)庫(kù)外層工具實(shí)現(xiàn)。而服務(wù)器端的加密需要對(duì)數(shù)據(jù)庫(kù)管理系統(tǒng)本身進(jìn)行操作,屬核心層加密,如果沒(méi)有數(shù)據(jù)庫(kù)開(kāi)發(fā)商的配合,其實(shí)現(xiàn)難度相對(duì)較大。此外,對(duì)那些希望通過(guò)ASP獲得服務(wù)的企業(yè)來(lái)說(shuō),只有在客戶端實(shí)現(xiàn)加解密,才能保證其數(shù)據(jù)的安全可靠。

1.常用數(shù)據(jù)庫(kù)加密技術(shù)

信息安全主要指三個(gè)方面。一是數(shù)據(jù)安全,二是系統(tǒng)安全,三是電子商務(wù)的安全。核心是數(shù)據(jù)庫(kù)的安全,將數(shù)據(jù)庫(kù)的數(shù)據(jù)加密就抓住了信息安全的核心問(wèn)題。

對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)加密是為增強(qiáng)普通關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的安全性,提供一個(gè)安全適用的數(shù)據(jù)庫(kù)加密平臺(tái),對(duì)數(shù)據(jù)庫(kù)存儲(chǔ)的內(nèi)容實(shí)施有效保護(hù)。它通過(guò)數(shù)據(jù)庫(kù)存儲(chǔ)加密等安全方法實(shí)現(xiàn)了數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)保密和完整性要求,使得數(shù)據(jù)庫(kù)以密文方式存儲(chǔ)并在密態(tài)方式下工作,確保了數(shù)據(jù)安全。

1.1數(shù)據(jù)庫(kù)加密技術(shù)的功能和特性

經(jīng)過(guò)近幾年的研究,我國(guó)數(shù)據(jù)庫(kù)加密技術(shù)已經(jīng)比較成熟。

一般而言,一個(gè)行之有效的數(shù)據(jù)庫(kù)加密技術(shù)主要有以下6個(gè)方面的功能和特性。

(1)身份認(rèn)證:

用戶除提供用戶名、口令外,還必須按照系統(tǒng)安全要求提供其它相關(guān)安全憑證。如使用終端密鑰。

(2)通信加密與完整性保護(hù):

有關(guān)數(shù)據(jù)庫(kù)的訪問(wèn)在網(wǎng)絡(luò)傳輸中都被加密,通信一次一密的意義在于防重放、防篡改。

(3)數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)加密與完整性保護(hù):

數(shù)據(jù)庫(kù)系統(tǒng)采用數(shù)據(jù)項(xiàng)級(jí)存儲(chǔ)加密,即數(shù)據(jù)庫(kù)中不同的記錄、每條記錄的不同字段都采用不同的密鑰加密,輔以校驗(yàn)措施來(lái)保證數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)的保密性和完整性,防止數(shù)據(jù)的非授權(quán)訪問(wèn)和修改。

(4)數(shù)據(jù)庫(kù)加密設(shè)置:

系統(tǒng)中可以選擇需要加密的數(shù)據(jù)庫(kù)列,以便于用戶選擇那些敏感信息進(jìn)行加密而不是全部數(shù)據(jù)都加密。只對(duì)用戶的敏感數(shù)據(jù)加密可以提高數(shù)據(jù)庫(kù)訪問(wèn)速度。這樣有利于用戶在效率與安全性之間進(jìn)行自主選擇。

(5)多級(jí)密鑰管理模式:

主密鑰和主密鑰變量保存在安全區(qū)域,二級(jí)密鑰受主密鑰變量加密保護(hù),數(shù)據(jù)加密的密鑰存儲(chǔ)或傳輸時(shí)利用二級(jí)密鑰加密保護(hù),使用時(shí)受主密鑰保護(hù)。

(6)安全備份:

系統(tǒng)提供數(shù)據(jù)庫(kù)明文備份功能和密鑰備份功能。

1.2對(duì)數(shù)據(jù)庫(kù)加密系統(tǒng)基本要求

(1)字段加密;

(2)密鑰動(dòng)態(tài)管理;

(3)合理處理數(shù)據(jù);

(4)不影響合法用戶的操作;

(5)防止非法拷貝;

1.3數(shù)據(jù)加密的算法

加密算法是一些公式和法則,它規(guī)定了明文和密文之間的變換方法。密鑰是控制加密算法和解密算法的關(guān)鍵信息,它的產(chǎn)生、傳輸、存儲(chǔ)等工作是十分重要的。

數(shù)據(jù)加密的基本過(guò)程包括對(duì)明文(即可讀信息)進(jìn)行翻譯,譯成密文或密碼的代碼形式。該過(guò)程的逆過(guò)程為解密,即將該編碼信息轉(zhuǎn)化為其原來(lái)的形式的過(guò)程。

DES算法,DES(DataEncryptionStandard)是由IBM公司在1970年以后發(fā)展起來(lái)的,于1976年11月被美國(guó)政府采用,DES隨后被美國(guó)國(guó)家標(biāo)準(zhǔn)局和美國(guó)國(guó)家標(biāo)準(zhǔn)協(xié)會(huì)(AmericanNationalStandardInstitute,ANSI)承認(rèn),DES算法把64位的明文輸入塊變?yōu)?4位的密文輸出塊,它所使用的密鑰也是64位,DES算法中只用到64位密鑰中的其中56位。

三重DES,DES的密碼學(xué)缺點(diǎn)是密鑰長(zhǎng)度相對(duì)比較短,因此,人們又想出了一個(gè)解決其長(zhǎng)度的方法,即采用三重DES,三重DES是DES的一種變形。這種方法使用兩個(gè)獨(dú)立的56位密鑰對(duì)交換的信息(如EDI數(shù)據(jù))進(jìn)行3次加密,從而使其有效密鑰長(zhǎng)度達(dá)到112位或168位,對(duì)安全性有特殊要求時(shí)則要采用它。

RSA算法它是第一個(gè)既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法。它易于理解和操作,也很流行。算法的名字就是發(fā)明者的名字:RonRivest,AdiShamir和LeonardAdleman,但RSA的安全性一直未能得到理論上的證明,RSA的安全性依賴于大數(shù)的因子分解,但并沒(méi)有從理論上證明破譯RSA的難度與大數(shù)分解難度等價(jià)。即RSA的重大缺陷是無(wú)法從理論上把握它的保密性能如何,而且密碼學(xué)界多數(shù)人士?jī)A向于因子分解不是NPC問(wèn)題,RSA算法是第一個(gè)能同時(shí)用于加密和數(shù)字簽名的算法,也易于理解和操作。RSA是被研究得最廣泛的公鑰算法,從提出到現(xiàn)在已近二十年,經(jīng)歷了各種攻擊的考驗(yàn),逐漸為人們接受,普遍認(rèn)為是目前最優(yōu)秀的公鑰方案之一。

AES是美國(guó)高級(jí)加密標(biāo)準(zhǔn)算法,將在未來(lái)幾十年里代替DES在各個(gè)領(lǐng)域中得到廣泛應(yīng)用,盡管人們對(duì)AES還有不同的看法,但總體來(lái)說(shuō),AES作為新一代的數(shù)據(jù)加密標(biāo)準(zhǔn)匯聚了強(qiáng)安全性、高性能、高效率、易用和靈活等優(yōu)點(diǎn)。AES設(shè)計(jì)有三個(gè)密鑰長(zhǎng)度:128,192,256位,相對(duì)而言,AES的128密鑰比DES的56密鑰強(qiáng)1021倍。AES算法主要包括三個(gè)方面:輪變化、圈數(shù)和密鑰擴(kuò)展。在理論上,此加密方法需要國(guó)家軍事量級(jí)的破解設(shè)備運(yùn)算10年以上時(shí)間才可能破譯。

1.4數(shù)據(jù)庫(kù)數(shù)據(jù)加密的實(shí)現(xiàn)

使用數(shù)據(jù)庫(kù)安全保密中間件對(duì)數(shù)據(jù)庫(kù)進(jìn)行加密是最簡(jiǎn)便直接的方法。主要是通過(guò)系統(tǒng)中加密、DBMS內(nèi)核層(服務(wù)器端)加密和DBMS外層(客戶端)加密。

在系統(tǒng)中加密,在系統(tǒng)中無(wú)法辨認(rèn)數(shù)據(jù)庫(kù)文件中的數(shù)據(jù)關(guān)系,將數(shù)據(jù)先在內(nèi)存中進(jìn)行加密,然后文件系統(tǒng)把每次加密后的內(nèi)存數(shù)據(jù)寫(xiě)入到數(shù)據(jù)庫(kù)文件中去,讀入時(shí)再逆方面進(jìn)行解密就,這種加密方法相對(duì)簡(jiǎn)單,只要妥善管理密鑰就可以了。缺點(diǎn)對(duì)數(shù)據(jù)庫(kù)的讀寫(xiě)都比較麻煩,每次都要進(jìn)行加解密的工作,對(duì)程序的編寫(xiě)和讀寫(xiě)數(shù)據(jù)庫(kù)的速度都會(huì)有影響。

在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)之間的無(wú)縫耦合。其缺點(diǎn)是加密運(yùn)算在服務(wù)器端進(jìn)行,加重了服務(wù)器的負(fù)載,而且DBMS和加密器之間的接口需要DBMS開(kāi)發(fā)商的支持。

在DBMS外層實(shí)現(xiàn)加密的好處是不會(huì)加重?cái)?shù)據(jù)庫(kù)服務(wù)器的負(fù)載,并且可實(shí)現(xiàn)網(wǎng)上的傳輸,加密比較實(shí)際的做法是將數(shù)據(jù)庫(kù)加密系統(tǒng)做成DBMS的一個(gè)外層工具,根據(jù)加密要求自動(dòng)完成對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的加解密處理。

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

數(shù)據(jù)庫(kù)加密系統(tǒng)分成兩個(gè)功能獨(dú)立的主要部件:一個(gè)是加密字典管理程序,另一個(gè)是數(shù)據(jù)庫(kù)加解密引擎。數(shù)據(jù)庫(kù)加密系統(tǒng)將用戶對(duì)數(shù)據(jù)庫(kù)信息具體的加密要求以及基礎(chǔ)信息保存在加密字典中,通過(guò)調(diào)用數(shù)據(jù)加解密引擎實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)表的加密、解密及數(shù)據(jù)轉(zhuǎn)換等功能。數(shù)據(jù)庫(kù)信息的加解密處理是在后成的,對(duì)數(shù)據(jù)庫(kù)服務(wù)器是透明的。

按以上方式實(shí)現(xiàn)的數(shù)據(jù)庫(kù)加密系統(tǒng)具有很多優(yōu)點(diǎn):首先,系統(tǒng)對(duì)數(shù)據(jù)庫(kù)的最終用戶是完全透明的,管理員可以根據(jù)需要進(jìn)行明文和密文的轉(zhuǎn)換工作;其次,加密系統(tǒng)完全獨(dú)立于數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),無(wú)須改動(dòng)數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)就能實(shí)現(xiàn)數(shù)據(jù)加密功能;第三,加解密處理在客戶端進(jìn)行,不會(huì)影響數(shù)據(jù)庫(kù)服務(wù)器的效率。

數(shù)據(jù)庫(kù)加解密引擎是數(shù)據(jù)庫(kù)加密系統(tǒng)的核心部件,它位于應(yīng)用程序與數(shù)據(jù)庫(kù)服務(wù)器之間,負(fù)責(zé)在后成數(shù)據(jù)庫(kù)信息的加解密處理,對(duì)應(yīng)用開(kāi)發(fā)人員和操作人員來(lái)說(shuō)是透明的。數(shù)據(jù)加解密引擎沒(méi)有操作界面,在需要時(shí)由操作系統(tǒng)自動(dòng)加載并駐留在內(nèi)存中,通過(guò)內(nèi)部接口與加密字典管理程序和用戶應(yīng)用程序通訊。數(shù)據(jù)庫(kù)加解密引擎由三大模塊組成:加解密處理模塊、用戶接口模塊和數(shù)據(jù)庫(kù)接口模塊。

2.結(jié)束語(yǔ)

上面的論述還遠(yuǎn)遠(yuǎn)沒(méi)達(dá)到數(shù)據(jù)庫(kù)安全需要,比如現(xiàn)在的數(shù)據(jù)庫(kù)基本都給與網(wǎng)絡(luò)架構(gòu),網(wǎng)際的安全傳輸?shù)龋彩且攸c(diǎn)考慮的方面,等等。一個(gè)好的安全系統(tǒng)必須綜合考慮核運(yùn)用這些技術(shù),以保證數(shù)據(jù)的安全,通過(guò)一上論述希望對(duì)大家有所幫助,同時(shí)也和大家一起討論一起學(xué)習(xí),共同進(jìn)步。

參考文獻(xiàn):

[1]現(xiàn)代數(shù)據(jù)庫(kù)管理(美)JeffreyA.Hoffer,MaryB.Prescott,F(xiàn)redR.McFadden著

主站蜘蛛池模板: av区无码字幕中文色| 男女啪啪高清无遮挡免费| 美女胸又大又黄又www的网站 | 一级毛片无遮挡免费全部| 精品国产av一二三四区| 好男人www社区| 国产情侣激情在线视频免费看| 五级黄18以上免费看| 香蕉久久av一区二区三区| 日本一道高清不卡免费| 四虎亚洲国产成人久久精品| 一区二区三区视频免费| 激情图片视频小说| 国产精品毛片a∨一区二区三区| 亚洲va精品中文字幕| 麻豆精品国产免费观看| 无码中文人妻在线一区二区三区| 和朋友共享娇妻高hh| japanese酒醉侵犯| 欧美日韩在线观看免费| 久久精品国产99国产精2020丨| 蜜桃视频无码区在线观看| 快穿之青梅竹马女配| 亚洲精品mv在线观看| 五月婷婷婷婷婷| 日本二区免费一片黄2019| 亚洲色大成网站www永久男同| 探花视频在线看视频| 日韩欧美亚洲国产精品字幕久久久| 国产一区二区三区不卡av| yellow视频免费在线观看| 欧美综合在线视频| 国产成人福利免费视频| 中文字幕无码不卡免费视频| 男女一边摸一边脱视频网站| 国产成人精品怡红院| 中文字幕在线久热精品| 欧美日本韩国一区二区| 国产国语对白露脸| 一级毛片一级毛片一级毛片| 李老汉别揉我奶了嗯啊h|