時間:2023-04-26 16:03:13
序論:在您撰寫數據加密技術論文時,參考他人的優秀作品可以開闊視野,小編為您整理的7篇范文,希望這些建議能夠激發您的創作熱情,引導您走向新的創作高度。
一:數據加密方法
在傳統上,我們有幾種方法來加密數據流。所有這些方法都可以用軟件很容易的實現,但是當我們只知道密文的時候,是不容易破譯這些加密算法的(當同時有原文和密文時,破譯加密算法雖然也不是很容易,但已經是可能的了)。最好的加密算法對系統性能幾乎沒有影響,并且還可以帶來其他內在的優點。例如,大家都知道的pkzip,它既壓縮數據又加密數據。又如,dbms的一些軟件包總是包含一些加密方法以使復制文件這一功能對一些敏感數據是無效的,或者需要用戶的密碼。所有這些加密算法都要有高效的加密和解密能力。
幸運的是,在所有的加密算法中最簡單的一種就是“置換表”算法,這種算法也能很好達到加密的需要。每一個數據段(總是一個字節)對應著“置換表”中的一個偏移量,偏移量所對應的值就輸出成為加密后的文件。加密程序和解密程序都需要一個這樣的“置換表”。事實上,80x86cpu系列就有一個指令‘xlat’在硬件級來完成這樣的工作。這種加密算法比較簡單,加密解密速度都很快,但是一旦這個“置換表”被對方獲得,那這個加密方案就完全被識破了。更進一步講,這種加密算法對于黑客破譯來講是相當直接的,只要找到一個“置換表”就可以了。這種方法在計算機出現之前就已經被廣泛的使用。
對這種“置換表”方式的一個改進就是使用2個或者更多的“置換表”,這些表都是基于數據流中字節的位置的,或者基于數據流本身。這時,破譯變的更加困難,因為黑客必須正確的做幾次變換。通過使用更多的“置換表”,并且按偽隨機的方式使用每個表,這種改進的加密方法已經變的很難破譯。比如,我們可以對所有的偶數位置的數據使用a表,對所有的奇數位置使用b表,即使黑客獲得了明文和密文,他想破譯這個加密方案也是非常困難的,除非黑客確切的知道用了兩張表。
與使用“置換表”相類似,“變換數據位置”也在計算機加密中使用。但是,這需要更多的執行時間。從輸入中讀入明文放到一個buffer中,再在buffer中對他們重排序,然后按這個順序再輸出。解密程序按相反的順序還原數據。這種方法總是和一些別的加密算法混合使用,這就使得破譯變的特別的困難,幾乎有些不可能了。例如,有這樣一個詞,變換起字母的順序,slient可以變為listen,但所有的字母都沒有變化,沒有增加也沒有減少,但是字母之間的順序已經變化了。
但是,還有一種更好的加密算法,只有計算機可以做,就是字/字節循環移位和xor操作。如果我們把一個字或字節在一個數據流內做循環移位,使用多個或變化的方向(左移或右移),就可以迅速的產生一個加密的數據流。這種方法是很好的,破譯它就更加困難!而且,更進一步的是,如果再使用xor操作,按位做異或操作,就就使破譯密碼更加困難了。如果再使用偽隨機的方法,這涉及到要產生一系列的數字,我們可以使用fibbonaci數列。對數列所產生的數做模運算(例如模3),得到一個結果,然后循環移位這個結果的次數,將使破譯次密碼變的幾乎不可能!但是,使用fibbonaci數列這種偽隨機的方式所產生的密碼對我們的解密程序來講是非常容易的。
在一些情況下,我們想能夠知道數據是否已經被篡改了或被破壞了,這時就需要產生一些校驗碼,并且把這些校驗碼插入到數據流中。這樣做對數據的防偽與程序本身都是有好處的。但是感染計算機程序的病毒才不會在意這些數據或程序是否加過密,是否有數字簽名。所以,加密程序在每次load到內存要開始執行時,都要檢查一下本身是否被病毒感染,對與需要加、解密的文件都要做這種檢查!很自然,這樣一種方法體制應該保密的,因為病毒程序的編寫者將會利用這些來破壞別人的程序或數據。因此,在一些反病毒或殺病毒軟件中一定要使用加密技術。
循環冗余校驗是一種典型的校驗數據的方法。對于每一個數據塊,它使用位循環移位和xor操作來產生一個16位或32位的校驗和,這使得丟失一位或兩個位的錯誤一定會導致校驗和出錯。這種方式很久以來就應用于文件的傳輸,例如xmodem-crc。這是方法已經成為標準,而且有詳細的文檔。但是,基于標準crc算法的一種修改算法對于發現加密數據塊中的錯誤和文件是否被病毒感染是很有效的。
二.基于公鑰的加密算法
一個好的加密算法的重要特點之一是具有這種能力:可以指定一個密碼或密鑰,并用它來加密明文,不同的密碼或密鑰產生不同的密文。這又分為兩種方式:對稱密鑰算法和非對稱密鑰算法。所謂對稱密鑰算法就是加密解密都使用相同的密鑰,非對稱密鑰算法就是加密解密使用不同的密鑰。非常著名的pgp公鑰加密以及rsa加密方法都是非對稱加密算法。加密密鑰,即公鑰,與解密密鑰,即私鑰,是非常的不同的。從數學理論上講,幾乎沒有真正不可逆的算法存在。例如,對于一個輸入‘a’執行一個操作得到結果‘b’,那么我們可以基于‘b’,做一個相對應的操作,導出輸入‘a’。在一些情況下,對于每一種操作,我們可以得到一個確定的值,或者該操作沒有定義(比如,除數為0)。對于一個沒有定義的操作來講,基于加密算法,可以成功地防止把一個公鑰變換成為私鑰。因此,要想破譯非對稱加密算法,找到那個唯一的密鑰,唯一的方法只能是反復的試驗,而這需要大量的處理時間。
rsa加密算法使用了兩個非常大的素數來產生公鑰和私鑰。即使從一個公鑰中通過因數分解可以得到私鑰,但這個運算所包含的計算量是非常巨大的,以至于在現實上是不可行的。加密算法本身也是很慢的,這使得使用rsa算法加密大量的數據變的有些不可行。這就使得一些現實中加密算法都基于rsa加密算法。pgp算法(以及大多數基于rsa算法的加密方法)使用公鑰來加密一個對稱加密算法的密鑰,然后再利用一個快速的對稱加密算法來加密數據。這個對稱算法的密鑰是隨機產生的,是保密的,因此,得到這個密鑰的唯一方法就是使用私鑰來解密。
我們舉一個例子:假定現在要加密一些數據使用密鑰‘12345’。利用rsa公鑰,使用rsa算法加密這個密鑰‘12345’,并把它放在要加密的數據的前面(可能后面跟著一個分割符或文件長度,以區分數據和密鑰),然后,使用對稱加密算法加密正文,使用的密鑰就是‘12345’。當對方收到時,解密程序找到加密過的密鑰,并利用rsa私鑰解密出來,然后再確定出數據的開始位置,利用密鑰‘12345’來解密數據。這樣就使得一個可靠的經過高效加密的數據安全地傳輸和解密。
一些簡單的基于rsa算法的加密算法可在下面的站點找到:
ftp://ftp.funet.fi/pub/crypt/cryptography/asymmetric/rsa
三.一個嶄新的多步加密算法
現在又出現了一種新的加密算法,據說是幾乎不可能被破譯的。這個算法在1998年6月1日才正式公布的。下面詳細的介紹這個算法:
使用一系列的數字(比如說128位密鑰),來產生一個可重復的但高度隨機化的偽隨機的數字的序列。一次使用256個表項,使用隨機數序列來產生密碼轉表,如下所示:
把256個隨機數放在一個距陣中,然后對他們進行排序,使用這樣一種方式(我們要記住最初的位置)使用最初的位置來產生一個表,隨意排序的表,表中的數字在0到255之間。如果不是很明白如何來做,就可以不管它。但是,下面也提供了一些原碼(在下面)是我們明白是如何來做的?,F在,產生了一個具體的256字節的表。讓這個隨機數產生器接著來產生這個表中的其余的數,以至于每個表是不同的。下一步,使用"shotguntechnique"技術來產生解碼表?;旧险f,如果a映射到b,那么b一定可以映射到a,所以b[a[n]]=n.(n是一個在0到255之間的數)。在一個循環中賦值,使用一個256字節的解碼表它對應于我們剛才在上一步產生的256字節的加密表。
使用這個方法,已經可以產生這樣的一個表,表的順序是隨機,所以產生這256個字節的隨機數使用的是二次偽隨機,使用了兩個額外的16位的密碼.現在,已經有了兩張轉換表,基本的加密解密是如下這樣工作的。前一個字節密文是這個256字節的表的索引?;蛘?,為了提高加密效果,可以使用多余8位的值,甚至使用校驗和或者crc算法來產生索引字節。假定這個表是256*256的數組,將會是下面的樣子:
crypto1=a[crypto0][value]
變量''''crypto1''''是加密后的數據,''''crypto0''''是前一個加密數據(或著是前面幾個加密數據的一個函數值)。很自然的,第一個數據需要一個“種子”,這個“種子”是我們必須記住的。如果使用256*256的表,這樣做將會增加密文的長度?;蛘?,可以使用你產生出隨機數序列所用的密碼,也可能是它的crc校驗和。順便提及的是曾作過這樣一個測試:使用16個字節來產生表的索引,以128位的密鑰作為這16個字節的初始的"種子"。然后,在產生出這些隨機數的表之后,就可以用來加密數據,速度達到每秒鐘100k個字節。一定要保證在加密與解密時都使用加密的值作為表的索引,而且這兩次一定要匹配。
加密時所產生的偽隨機序列是很隨意的,可以設計成想要的任何序列。沒有關于這個隨機序列的詳細的信息,解密密文是不現實的。例如:一些ascii碼的序列,如“eeeeeeee"可能被轉化成一些隨機的沒有任何意義的亂碼,每一個字節都依賴于其前一個字節的密文,而不是實際的值。對于任一個單個的字符的這種變換來說,隱藏了加密數據的有效的真正的長度。
如果確實不理解如何來產生一個隨機數序列,就考慮fibbonacci數列,使用2個雙字(64位)的數作為產生隨機數的種子,再加上第三個雙字來做xor操作。這個算法產生了一系列的隨機數。算法如下:
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;
}
如果想產生一系列的隨機數字,比如說,在0和列表中所有的隨機數之間的一些數,就可以使用下面的方法:
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''''中的值應該是一個排過序的唯一的一系列的整數的數組,整數的值的范圍均在0到255之間。這樣一個數組是非常有用的,例如:對一個字節對字節的轉換表,就可以很容易并且非常可靠的來產生一個短的密鑰(經常作為一些隨機數的種子)。這樣一個表還有其他的用處,比如說:來產生一個隨機的字符,計算機游戲中一個物體的隨機的位置等等。上面的例子就其本身而言并沒有構成一個加密算法,只是加密算法一個組成部分。
作為一個測試,開發了一個應用程序來測試上面所描述的加密算法。程序本身都經過了幾次的優化和修改,來提高隨機數的真正的隨機性和防止會產生一些短的可重復的用于加密的隨機數。用這個程序來加密一個文件,破解這個文件可能會需要非常巨大的時間以至于在現實上是不可能的。
四.結論:
由于在現實生活中,我們要確保一些敏感的數據只能被有相應權限的人看到,要確保信息在傳輸的過程中不會被篡改,截取,這就需要很多的安全系統大量的應用于政府、大公司以及個人系統。數據加密是肯定可以被破解的,但我們所想要的是一個特定時期的安全,也就是說,密文的破解應該是足夠的困難,在現實上是不可能的,尤其是短時間內。
參考文獻:
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!)/
一:數據加密方法
在傳統上,我們有幾種方法來加密數據流。所有這些方法都可以用軟件很容易的實現,但是當我們只知道密文的時候,是不容易破譯這些加密算法的(當同時有原文和密文時,破譯加密算法雖然也不是很容易,但已經是可能的了)。最好的加密算法對系統性能幾乎沒有影響,并且還可以帶來其他內在的優點。例如,大家都知道的pkzip,它既壓縮數據又加密數據。又如,dbms的一些軟件包總是包含一些加密方法以使復制文件這一功能對一些敏感數據是無效的,或者需要用戶的密碼。所有這些加密算法都要有高效的加密和解密能力。
幸運的是,在所有的加密算法中最簡單的一種就是“置換表”算法,這種算法也能很好達到加密的需要。每一個數據段(總是一個字節)對應著“置換表”中的一個偏移量,偏移量所對應的值就輸出成為加密后的文件。加密程序和解密程序都需要一個這樣的“置換表”。事實上,80x86cpu系列就有一個指令‘xlat’在硬件級來完成這樣的工作。這種加密算法比較簡單,加密解密速度都很快,但是一旦這個“置換表”被對方獲得,那這個加密方案就完全被識破了。更進一步講,這種加密算法對于黑客破譯來講是相當直接的,只要找到一個“置換表”就可以了。這種方法在計算機出現之前就已經被廣泛的使用。
對這種“置換表”方式的一個改進就是使用2個或者更多的“置換表”,這些表都是基于數據流中字節的位置的,或者基于數據流本身。這時,破譯變的更加困難,因為黑客必須正確的做幾次變換。通過使用更多的“置換表”,并且按偽隨機的方式使用每個表,這種改進的加密方法已經變的很難破譯。比如,我們可以對所有的偶數位置的數據使用a表,對所有的奇數位置使用b表,即使黑客獲得了明文和密文,他想破譯這個加密方案也是非常困難的,除非黑客確切的知道用了兩張表。
與使用“置換表”相類似,“變換數據位置”也在計算機加密中使用。但是,這需要更多的執行時間。從輸入中讀入明文放到一個buffer中,再在buffer中對他們重排序,然后按這個順序再輸出。解密程序按相反的順序還原數據。這種方法總是和一些別的加密算法混合使用,這就使得破譯變的特別的困難,幾乎有些不可能了。例如,有這樣一個詞,變換起字母的順序,slient可以變為listen,但所有的字母都沒有變化,沒有增加也沒有減少,但是字母之間的順序已經變化了。
但是,還有一種更好的加密算法,只有計算機可以做,就是字/字節循環移位和xor操作。如果我們把一個字或字節在一個數據流內做循環移位,使用多個或變化的方向(左移或右移),就可以迅速的產生一個加密的數據流。這種方法是很好的,破譯它就更加困難!而且,更進一步的是,如果再使用xor操作,按位做異或操作,就就使破譯密碼更加困難了。如果再使用偽隨機的方法,這涉及到要產生一系列的數字,我們可以使用fibbonaci數列。對數列所產生的數做模運算(例如模3),得到一個結果,然后循環移位這個結果的次數,將使破譯次密碼變的幾乎不可能!但是,使用fibbonaci數列這種偽隨機的方式所產生的密碼對我們的解密程序來講是非常容易的。
在一些情況下,我們想能夠知道數據是否已經被篡改了或被破壞了,這時就需要產生一些校驗碼,并且把這些校驗碼插入到數據流中。這樣做對數據的防偽與程序本身都是有好處的。但是感染計算機程序的病毒才不會在意這些數據或程序是否加過密,是否有數字簽名。所以,加密程序在每次load到內存要開始執行時,都要檢查一下本身是否被病毒感染,對與需要加、解密的文件都要做這種檢查!很自然,這樣一種方法體制應該保密的,因為病毒程序的編寫者將會利用這些來破壞別人的程序或數據。因此,在一些反病毒或殺病毒軟件中一定要使用加密技術。
循環冗余校驗是一種典型的校驗數據的方法。對于每一個數據塊,它使用位循環移位和xor操作來產生一個16位或32位的校驗和,這使得丟失一位或兩個位的錯誤一定會導致校驗和出錯。這種方式很久以來就應用于文件的傳輸,例如xmodem-crc。這是方法已經成為標準,而且有詳細的文檔。但是,基于標準crc算法的一種修改算法對于發現加密數據塊中的錯誤和文件是否被病毒感染是很有效的。
二.基于公鑰的加密算法
一個好的加密算法的重要特點之一是具有這種能力:可以指定一個密碼或密鑰,并用它來加密明文,不同的密碼或密鑰產生不同的密文。這又分為兩種方式:對稱密鑰算法和非對稱密鑰算法。所謂對稱密鑰算法就是加密解密都使用相同的密鑰,非對稱密鑰算法就是加密解密使用不同的密鑰。非常著名的pgp公鑰加密以及rsa加密方法都是非對稱加密算法。加密密鑰,即公鑰,與解密密鑰,即私鑰,是非常的不同的。從數學理論上講,幾乎沒有真正不可逆的算法存在。例如,對于一個輸入‘a’執行一個操作得到結果‘b’,那么我們可以基于‘b’,做一個相對應的操作,導出輸入‘a’。在一些情況下,對于每一種操作,我們可以得到一個確定的值,或者該操作沒有定義(比如,除數為0)。對于一個沒有定義的操作來講,基于加密算法,可以成功地防止把一個公鑰變換成為私鑰。因此,要想破譯非對稱加密算法,找到那個唯一的密鑰,唯一的方法只能是反復的試驗,而這需要大量的處理時間。
rsa加密算法使用了兩個非常大的素數來產生公鑰和私鑰。即使從一個公鑰中通過因數分解可以得到私鑰,但這個運算所包含的計算量是非常巨大的,以至于在現實上是不可行的。加密算法本身也是很慢的,這使得使用rsa算法加密大量的數據變的有些不可行。這就使得一些現實中加密算法都基于rsa加密算法。pgp算法(以及大多數基于rsa算法的加密方法)使用公鑰來加密一個對稱加密算法的密鑰,然后再利用一個快速的對稱加密算法來加密數據。這個對稱算法的密鑰是隨機產生的,是保密的,因此,得到這個密鑰的唯一方法就是使用私鑰來解密。
我們舉一個例子:假定現在要加密一些數據使用密鑰‘12345’。利用rsa公鑰,使用rsa算法加密這個密鑰‘12345’,并把它放在要加密的數據的前面(可能后面跟著一個分割符或文件長度,以區分數據和密鑰),然后,使用對稱加密算法加密正文,使用的密鑰就是‘12345’。當對方收到時,解密程序找到加密過的密鑰,并利用rsa私鑰解密出來,然后再確定出數據的開始位置,利用密鑰‘12345’來解密數據。這樣就使得一個可靠的經過高效加密的數據安全地傳輸和解密。
一些簡單的基于rsa算法的加密算法可在下面的站點找到:
ftp://ftp.funet.fi/pub/crypt/cryptography/asymmetric/rsa
三.一個嶄新的多步加密算法
現在又出現了一種新的加密算法,據說是幾乎不可能被破譯的。這個算法在1998年6月1日才正式公布的。下面詳細的介紹這個算法:
使用一系列的數字(比如說128位密鑰),來產生一個可重復的但高度隨機化的偽隨機的數字的序列。一次使用256個表項,使用隨機數序列來產生密碼轉表,如下所示:
把256個隨機數放在一個距陣中,然后對他們進行排序,使用這樣一種方式(我們要記住最初的位置)使用最初的位置來產生一個表,隨意排序的表,表中的數字在0到255之間。如果不是很明白如何來做,就可以不管它。但是,下面也提供了一些原碼(在下面)是我們明白是如何來做的?,F在,產生了一個具體的256字節的表。讓這個隨機數產生器接著來產生這個表中的其余的數,以至于每個表是不同的。下一步,使用"shotguntechnique"技術來產生解碼表?;旧险f,如果a映射到b,那么b一定可以映射到a,所以b[a[n]]=n.(n是一個在0到255之間的數)。在一個循環中賦值,使用一個256字節的解碼表它對應于我們剛才在上一步產生的256字節的加密表。
使用這個方法,已經可以產生這樣的一個表,表的順序是隨機,所以產生這256個字節的隨機數使用的是二次偽隨機,使用了兩個額外的16位的密碼.現在,已經有了兩張轉換表,基本的加密解密是如下這樣工作的。前一個字節密文是這個256字節的表的索引?;蛘?,為了提高加密效果,可以使用多余8位的值,甚至使用校驗和或者crc算法來產生索引字節。假定這個表是256*256的數組,將會是下面的樣子:
crypto1=a[crypto0][value]
變量''''crypto1''''是加密后的數據,''''crypto0''''是前一個加密數據(或著是前面幾個加密數據的一個函數值)。很自然的,第一個數據需要一個“種子”,這個“種子”是我們必須記住的。如果使用256*256的表,這樣做將會增加密文的長度?;蛘撸梢允褂媚惝a生出隨機數序列所用的密碼,也可能是它的crc校驗和。順便提及的是曾作過這樣一個測試:使用16個字節來產生表的索引,以128位的密鑰作為這16個字節的初始的"種子"。然后,在產生出這些隨機數的表之后,就可以用來加密數據,速度達到每秒鐘100k個字節。一定要保證在加密與解密時都使用加密的值作為表的索引,而且這兩次一定要匹配。
加密時所產生的偽隨機序列是很隨意的,可以設計成想要的任何序列。沒有關于這個隨機序列的詳細的信息,解密密文是不現實的。例如:一些ascii碼的序列,如“eeeeeeee"可能被轉化成一些隨機的沒有任何意義的亂碼,每一個字節都依賴于其前一個字節的密文,而不是實際的值。對于任一個單個的字符的這種變換來說,隱藏了加密數據的有效的真正的長度。
如果確實不理解如何來產生一個隨機數序列,就考慮fibbonacci數列,使用2個雙字(64位)的數作為產生隨機數的種子,再加上第三個雙字來做xor操作。這個算法產生了一系列的隨機數。算法如下:
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;
}
如果想產生一系列的隨機數字,比如說,在0和列表中所有的隨機數之間的一些數,就可以使用下面的方法:
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''''中的值應該是一個排過序的唯一的一系列的整數的數組,整數的值的范圍均在0到255之間。這樣一個數組是非常有用的,例如:對一個字節對字節的轉換表,就可以很容易并且非常可靠的來產生一個短的密鑰(經常作為一些隨機數的種子)。這樣一個表還有其他的用處,比如說:來產生一個隨機的字符,計算機游戲中一個物體的隨機的位置等等。上面的例子就其本身而言并沒有構成一個加密算法,只是加密算法一個組成部分。
作為一個測試,開發了一個應用程序來測試上面所描述的加密算法。程序本身都經過了幾次的優化和修改,來提高隨機數的真正的隨機性和防止會產生一些短的可重復的用于加密的隨機數。用這個程序來加密一個文件,破解這個文件可能會需要非常巨大的時間以至于在現實上是不可能的。
四.結論:
由于在現實生活中,我們要確保一些敏感的數據只能被有相應權限的人看到,要確保信息在傳輸的過程中不會被篡改,截取,這就需要很多的安全系統大量的應用于政府、大公司以及個人系統。數據加密是肯定可以被破解的,但我們所想要的是一個特定時期的安全,也就是說,密文的破解應該是足夠的困難,在現實上是不可能的,尤其是短時間內。
參考文獻:
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!)/
一:數據加密方法
在傳統上,我們有幾種方法來加密數據流。所有這些方法都可以用軟件很容易的實現,但是當我們只知道密文的時候,是不容易破譯這些加密算法的(當同時有原文和密文時,破譯加密算法雖然也不是很容易,但已經是可能的了)。最好的加密算法對系統性能幾乎沒有影響,并且還可以帶來其他內在的優點。例如,大家都知道的pkzip,它既壓縮數據又加密數據。又如,dbms的一些軟件包總是包含一些加密方法以使復制文件這一功能對一些敏感數據是無效的,或者需要用戶的密碼。所有這些加密算法都要有高效的加密和解密能力。
幸運的是,在所有的加密算法中最簡單的一種就是“置換表”算法,這種算法也能很好達到加密的需要。每一個數據段(總是一個字節)對應著“置換表”中的一個偏移量,偏移量所對應的值就輸出成為加密后的文件。加密程序和解密程序都需要一個這樣的“置換表”。事實上,80x86cpu系列就有一個指令‘xlat’在硬件級來完成這樣的工作。這種加密算法比較簡單,加密解密速度都很快,但是一旦這個“置換表”被對方獲得,那這個加密方案就完全被識破了。更進一步講,這種加密算法對于黑客破譯來講是相當直接的,只要找到一個“置換表”就可以了。這種方法在計算機出現之前就已經被廣泛的使用。
對這種“置換表”方式的一個改進就是使用2個或者更多的“置換表”,這些表都是基于數據流中字節的位置的,或者基于數據流本身。這時,破譯變的更加困難,因為黑客必須正確的做幾次變換。通過使用更多的“置換表”,并且按偽隨機的方式使用每個表,這種改進的加密方法已經變的很難破譯。比如,我們可以對所有的偶數位置的數據使用a表,對所有的奇數位置使用b表,即使黑客獲得了明文和密文,他想破譯這個加密方案也是非常困難的,除非黑客確切的知道用了兩張表。
與使用“置換表”相類似,“變換數據位置”也在計算機加密中使用。但是,這需要更多的執行時間。從輸入中讀入明文放到一個buffer中,再在buffer中對他們重排序,然后按這個順序再輸出。解密程序按相反的順序還原數據。這種方法總是和一些別的加密算法混合使用,這就使得破譯變的特別的困難,幾乎有些不可能了。例如,有這樣一個詞,變換起字母的順序,slient可以變為listen,但所有的字母都沒有變化,沒有增加也沒有減少,但是字母之間的順序已經變化了。
但是,還有一種更好的加密算法,只有計算機可以做,就是字/字節循環移位和xor操作。如果我們把一個字或字節在一個數據流內做循環移位,使用多個或變化的方向(左移或右移),就可以迅速的產生一個加密的數據流。這種方法是很好的,破譯它就更加困難!而且,更進一步的是,如果再使用xor操作,按位做異或操作,就就使破譯密碼更加困難了。如果再使用偽隨機的方法,這涉及到要產生一系列的數字,我們可以使用fibbonaci數列。對數列所產生的數做模運算(例如模3),得到一個結果,然后循環移位這個結果的次數,將使破譯次密碼變的幾乎不可能!但是,使用fibbonaci數列這種偽隨機的方式所產生的密碼對我們的解密程序來講是非常容易的。
在一些情況下,我們想能夠知道數據是否已經被篡改了或被破壞了,這時就需要產生一些校驗碼,并且把這些校驗碼插入到數據流中。這樣做對數據的防偽與程序本身都是有好處的。但是感染計算機程序的病毒才不會在意這些數據或程序是否加過密,是否有數字簽名。所以,加密程序在每次load到內存要開始執行時,都要檢查一下本身是否被病毒感染,對與需要加、解密的文件都要做這種檢查!很自然,這樣一種方法體制應該保密的,因為病毒程序的編寫者將會利用這些來破壞別人的程序或數據。因此,在一些反病毒或殺病毒軟件中一定要使用加密技術。
循環冗余校驗是一種典型的校驗數據的方法。對于每一個數據塊,它使用位循環移位和xor操作來產生一個16位或32位的校驗和,這使得丟失一位或兩個位的錯誤一定會導致校驗和出錯。這種方式很久以來就應用于文件的傳輸,例如xmodem-crc。這是方法已經成為標準,而且有詳細的文檔。但是,基于標準crc算法的一種修改算法對于發現加密數據塊中的錯誤和文件是否被病毒感染是很有效的。二.基于公鑰的加密算法
一個好的加密算法的重要特點之一是具有這種能力:可以指定一個密碼或密鑰,并用它來加密明文,不同的密碼或密鑰產生不同的密文。這又分為兩種方式:對稱密鑰算法和非對稱密鑰算法。所謂對稱密鑰算法就是加密解密都使用相同的密鑰,非對稱密鑰算法就是加密解密使用不同的密鑰。非常著名的pgp公鑰加密以及rsa加密方法都是非對稱加密算法。加密密鑰,即公鑰,與解密密鑰,即私鑰,是非常的不同的。從數學理論上講,幾乎沒有真正不可逆的算法存在。例如,對于一個輸入‘a’執行一個操作得到結果‘b’,那么我們可以基于‘b’,做一個相對應的操作,導出輸入‘a’。在一些情況下,對于每一種操作,我們可以得到一個確定的值,或者該操作沒有定義(比如,除數為0)。對于一個沒有定義的操作來講,基于加密算法,可以成功地防止把一個公鑰變換成為私鑰。因此,要想破譯非對稱加密算法,找到那個唯一的密鑰,唯一的方法只能是反復的試驗,而這需要大量的處理時間。
rsa加密算法使用了兩個非常大的素數來產生公鑰和私鑰。即使從一個公鑰中通過因數分解可以得到私鑰,但這個運算所包含的計算量是非常巨大的,以至于在現實上是不可行的。加密算法本身也是很慢的,這使得使用rsa算法加密大量的數據變的有些不可行。這就使得一些現實中加密算法都基于rsa加密算法。pgp算法(以及大多數基于rsa算法的加密方法)使用公鑰來加密一個對稱加密算法的密鑰,然后再利用一個快速的對稱加密算法來加密數據。這個對稱算法的密鑰是隨機產生的,是保密的,因此,得到這個密鑰的唯一方法就是使用私鑰來解密。
我們舉一個例子:假定現在要加密一些數據使用密鑰‘12345’。利用rsa公鑰,使用rsa算法加密這個密鑰‘12345’,并把它放在要加密的數據的前面(可能后面跟著一個分割符或文件長度,以區分數據和密鑰),然后,使用對稱加密算法加密正文,使用的密鑰就是‘12345’。當對方收到時,解密程序找到加密過的密鑰,并利用rsa私鑰解密出來,然后再確定出數據的開始位置,利用密鑰‘12345’來解密數據。這樣就使得一個可靠的經過高效加密的數據安全地傳輸和解密。
一些簡單的基于rsa算法的加密算法可在下面的站點找到:
ftp://ftp.funet.fi/pub/crypt/cryptography/asymmetric/rsa
三.一個嶄新的多步加密算法
現在又出現了一種新的加密算法,據說是幾乎不可能被破譯的。這個算法在1998年6月1日才正式公布的。下面詳細的介紹這個算法:
使用一系列的數字(比如說128位密鑰),來產生一個可重復的但高度隨機化的偽隨機的數字的序列。一次使用256個表項,使用隨機數序列來產生密碼轉表,如下所示:
把256個隨機數放在一個距陣中,然后對他們進行排序,使用這樣一種方式(我們要記住最初的位置)使用最初的位置來產生一個表,隨意排序的表,表中的數字在0到255之間。如果不是很明白如何來做,就可以不管它。但是,下面也提供了一些原碼(在下面)是我們明白是如何來做的?,F在,產生了一個具體的256字節的表。讓這個隨機數產生器接著來產生這個表中的其余的數,以至于每個表是不同的。下一步,使用"shotguntechnique"技術來產生解碼表。基本上說,如果a映射到b,那么b一定可以映射到a,所以b[a[n]]=n.(n是一個在0到255之間的數)。在一個循環中賦值,使用一個256字節的解碼表它對應于我們剛才在上一步產生的256字節的加密表。
使用這個方法,已經可以產生這樣的一個表,表的順序是隨機,所以產生這256個字節的隨機數使用的是二次偽隨機,使用了兩個額外的16位的密碼.現在,已經有了兩張轉換表,基本的加密解密是如下這樣工作的。前一個字節密文是這個256字節的表的索引?;蛘?,為了提高加密效果,可以使用多余8位的值,甚至使用校驗和或者crc算法來產生索引字節。假定這個表是256*256的數組,將會是下面的樣子:crypto1=a[crypto0][value]
變量''''crypto1''''是加密后的數據,''''crypto0''''是前一個加密數據(或著是前面幾個加密數據的一個函數值)。很自然的,第一個數據需要一個“種子”,這個“種子”是我們必須記住的。如果使用256*256的表,這樣做將會增加密文的長度。或者,可以使用你產生出隨機數序列所用的密碼,也可能是它的crc校驗和。順便提及的是曾作過這樣一個測試:使用16個字節來產生表的索引,以128位的密鑰作為這16個字節的初始的"種子"。然后,在產生出這些隨機數的表之后,就可以用來加密數據,速度達到每秒鐘100k個字節。一定要保證在加密與解密時都使用加密的值作為表的索引,而且這兩次一定要匹配。
加密時所產生的偽隨機序列是很隨意的,可以設計成想要的任何序列。沒有關于這個隨機序列的詳細的信息,解密密文是不現實的。例如:一些ascii碼的序列,如“eeeeeeee"可能被轉化成一些隨機的沒有任何意義的亂碼,每一個字節都依賴于其前一個字節的密文,而不是實際的值。對于任一個單個的字符的這種變換來說,隱藏了加密數據的有效的真正的長度。
如果確實不理解如何來產生一個隨機數序列,就考慮fibbonacci數列,使用2個雙字(64位)的數作為產生隨機數的種子,再加上第三個雙字來做xor操作。這個算法產生了一系列的隨機數。算法如下:
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;
}
如果想產生一系列的隨機數字,比如說,在0和列表中所有的隨機數之間的一些數,就可以使用下面的方法:
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''''中的值應該是一個排過序的唯一的一系列的整數的數組,整數的值的范圍均在0到255之間。這樣一個數組是非常有用的,例如:對一個字節對字節的轉換表,就可以很容易并且非??煽康膩懋a生一個短的密鑰(經常作為一些隨機數的種子)。這樣一個表還有其他的用處,比如說:來產生一個隨機的字符,計算機游戲中一個物體的隨機的位置等等。上面的例子就其本身而言并沒有構成一個加密算法,只是加密算法一個組成部分。
作為一個測試,開發了一個應用程序來測試上面所描述的加密算法。程序本身都經過了幾次的優化和修改,來提高隨機數的真正的隨機性和防止會產生一些短的可重復的用于加密的隨機數。用這個程序來加密一個文件,破解這個文件可能會需要非常巨大的時間以至于在現實上是不可能的。
四.結論:
由于在現實生活中,我們要確保一些敏感的數據只能被有相應權限的人看到,要確保信息在傳輸的過程中不會被篡改,截取,這就需要很多的安全系統大量的應用于政府、大公司以及個人系統。數據加密是肯定可以被破解的,但我們所想要的是一個特定時期的安全,也就是說,密文的破解應該是足夠的困難,在現實上是不可能的,尤其是短時間內。
參考文獻:
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!)/
【關鍵詞】數據庫加密、加密算法、加密技術特性、加密字典、加解密引擎。
隨著電子商務逐漸越來越多的應用,數據的安全問題越來越受到重視。一是企業本身需要對自己的關鍵數據進行有效的保護;二是企業從應用服務提供商(ApplicationServiceProvider,ASP)處獲得應用支持和服務,在這種情況下,企業的業務數據存放在ASP處,其安全性無法得到有效的保障。因為傳統的數據庫保護方式是通過設定口令字和訪問權限等方法實現的,數據庫管理員可以不加限制地訪問和更改數據庫中的所有數據。解決這一問題的關鍵是要對數據本身加密,即使數據不幸泄露或丟失,也難以被人破譯,關于這一點現基本數據庫產品都支持對數據庫中的所有數據加密存儲。
-對數據進行加密,主要有三種方式:系統中加密、客戶端(DBMS外層)加密、服務器端(DBMS內核層)加密。客戶端加密的好處是不會加重數據庫服務器的負載,并且可實現網上的傳輸加密,這種加密方式通常利用數據庫外層工具實現。而服務器端的加密需要對數據庫管理系統本身進行操作,屬核心層加密,如果沒有數據庫開發商的配合,其實現難度相對較大。此外,對那些希望通過ASP獲得服務的企業來說,只有在客戶端實現加解密,才能保證其數據的安全可靠。
1.常用數據庫加密技術
信息安全主要指三個方面。一是數據安全,二是系統安全,三是電子商務的安全。核心是數據庫的安全,將數據庫的數據加密就抓住了信息安全的核心問題。
對數據庫中數據加密是為增強普通關系數據庫管理系統的安全性,提供一個安全適用的數據庫加密平臺,對數據庫存儲的內容實施有效保護。它通過數據庫存儲加密等安全方法實現了數據庫數據存儲保密和完整性要求,使得數據庫以密文方式存儲并在密態方式下工作,確保了數據安全。
1.1數據庫加密技術的功能和特性
經過近幾年的研究,我國數據庫加密技術已經比較成熟。
一般而言,一個行之有效的數據庫加密技術主要有以下6個方面的功能和特性。
(1)身份認證:
用戶除提供用戶名、口令外,還必須按照系統安全要求提供其它相關安全憑證。如使用終端密鑰。
(2)通信加密與完整性保護:
有關數據庫的訪問在網絡傳輸中都被加密,通信一次一密的意義在于防重放、防篡改。
(3)數據庫數據存儲加密與完整性保護:
數據庫系統采用數據項級存儲加密,即數據庫中不同的記錄、每條記錄的不同字段都采用不同的密鑰加密,輔以校驗措施來保證數據庫數據存儲的保密性和完整性,防止數據的非授權訪問和修改。
(4)數據庫加密設置:
系統中可以選擇需要加密的數據庫列,以便于用戶選擇那些敏感信息進行加密而不是全部數據都加密。只對用戶的敏感數據加密可以提高數據庫訪問速度。這樣有利于用戶在效率與安全性之間進行自主選擇。
(5)多級密鑰管理模式:
主密鑰和主密鑰變量保存在安全區域,二級密鑰受主密鑰變量加密保護,數據加密的密鑰存儲或傳輸時利用二級密鑰加密保護,使用時受主密鑰保護。
(6)安全備份:
系統提供數據庫明文備份功能和密鑰備份功能。
1.2對數據庫加密系統基本要求
(1)字段加密;
(2)密鑰動態管理;
(3)合理處理數據;
(4)不影響合法用戶的操作;
(5)防止非法拷貝;
1.3數據加密的算法
加密算法是一些公式和法則,它規定了明文和密文之間的變換方法。密鑰是控制加密算法和解密算法的關鍵信息,它的產生、傳輸、存儲等工作是十分重要的。
數據加密的基本過程包括對明文(即可讀信息)進行翻譯,譯成密文或密碼的代碼形式。該過程的逆過程為解密,即將該編碼信息轉化為其原來的形式的過程。
DES算法,DES(DataEncryptionStandard)是由IBM公司在1970年以后發展起來的,于1976年11月被美國政府采用,DES隨后被美國國家標準局和美國國家標準協會(AmericanNationalStandardInstitute,ANSI)承認,DES算法把64位的明文輸入塊變為64位的密文輸出塊,它所使用的密鑰也是64位,DES算法中只用到64位密鑰中的其中56位。
三重DES,DES的密碼學缺點是密鑰長度相對比較短,因此,人們又想出了一個解決其長度的方法,即采用三重DES,三重DES是DES的一種變形。這種方法使用兩個獨立的56位密鑰對交換的信息(如EDI數據)進行3次加密,從而使其有效密鑰長度達到112位或168位,對安全性有特殊要求時則要采用它。
RSA算法它是第一個既能用于數據加密也能用于數字簽名的算法。它易于理解和操作,也很流行。算法的名字就是發明者的名字:RonRivest,AdiShamir和LeonardAdleman,但RSA的安全性一直未能得到理論上的證明,RSA的安全性依賴于大數的因子分解,但并沒有從理論上證明破譯RSA的難度與大數分解難度等價。即RSA的重大缺陷是無法從理論上把握它的保密性能如何,而且密碼學界多數人士傾向于因子分解不是NPC問題,RSA算法是第一個能同時用于加密和數字簽名的算法,也易于理解和操作。RSA是被研究得最廣泛的公鑰算法,從提出到現在已近二十年,經歷了各種攻擊的考驗,逐漸為人們接受,普遍認為是目前最優秀的公鑰方案之一。
AES是美國高級加密標準算法,將在未來幾十年里代替DES在各個領域中得到廣泛應用,盡管人們對AES還有不同的看法,但總體來說,AES作為新一代的數據加密標準匯聚了強安全性、高性能、高效率、易用和靈活等優點。AES設計有三個密鑰長度:128,192,256位,相對而言,AES的128密鑰比DES的56密鑰強1021倍。AES算法主要包括三個方面:輪變化、圈數和密鑰擴展。在理論上,此加密方法需要國家軍事量級的破解設備運算10年以上時間才可能破譯。
1.4數據庫數據加密的實現
使用數據庫安全保密中間件對數據庫進行加密是最簡便直接的方法。主要是通過系統中加密、DBMS內核層(服務器端)加密和DBMS外層(客戶端)加密。
在系統中加密,在系統中無法辨認數據庫文件中的數據關系,將數據先在內存中進行加密,然后文件系統把每次加密后的內存數據寫入到數據庫文件中去,讀入時再逆方面進行解密就,這種加密方法相對簡單,只要妥善管理密鑰就可以了。缺點對數據庫的讀寫都比較麻煩,每次都要進行加解密的工作,對程序的編寫和讀寫數據庫的速度都會有影響。
在DBMS內核層實現加密需要對數據庫管理系統本身進行操作。這種加密是指數據在物理存取之前完成加解密工作。這種加密方式的優點是加密功能強,并且加密功能幾乎不會影響DBMS的功能,可以實現加密功能與數據庫管理系統之間的無縫耦合。其缺點是加密運算在服務器端進行,加重了服務器的負載,而且DBMS和加密器之間的接口需要DBMS開發商的支持。
在DBMS外層實現加密的好處是不會加重數據庫服務器的負載,并且可實現網上的傳輸,加密比較實際的做法是將數據庫加密系統做成DBMS的一個外層工具,根據加密要求自動完成對數據庫數據的加解密處理。
采用這種加密方式進行加密,加解密運算可在客戶端進行,它的優點是不會加重數據庫服務器的負載并且可以實現網上傳輸的加密,缺點是加密功能會受到一些限制,與數據庫管理系統之間的耦合性稍差。
數據庫加密系統分成兩個功能獨立的主要部件:一個是加密字典管理程序,另一個是數據庫加解密引擎。數據庫加密系統將用戶對數據庫信息具體的加密要求以及基礎信息保存在加密字典中,通過調用數據加解密引擎實現對數據庫表的加密、解密及數據轉換等功能。數據庫信息的加解密處理是在后成的,對數據庫服務器是透明的。
按以上方式實現的數據庫加密系統具有很多優點:首先,系統對數據庫的最終用戶是完全透明的,管理員可以根據需要進行明文和密文的轉換工作;其次,加密系統完全獨立于數據庫應用系統,無須改動數據庫應用系統就能實現數據加密功能;第三,加解密處理在客戶端進行,不會影響數據庫服務器的效率。
數據庫加解密引擎是數據庫加密系統的核心部件,它位于應用程序與數據庫服務器之間,負責在后成數據庫信息的加解密處理,對應用開發人員和操作人員來說是透明的。數據加解密引擎沒有操作界面,在需要時由操作系統自動加載并駐留在內存中,通過內部接口與加密字典管理程序和用戶應用程序通訊。數據庫加解密引擎由三大模塊組成:加解密處理模塊、用戶接口模塊和數據庫接口模塊。
2.結束語
上面的論述還遠遠沒達到數據庫安全需要,比如現在的數據庫基本都給與網絡架構,網際的安全傳輸等,也是要重點考慮的方面,等等。一個好的安全系統必須綜合考慮核運用這些技術,以保證數據的安全,通過一上論述希望對大家有所幫助,同時也和大家一起討論一起學習,共同進步。
參考文獻:
[1]現代數據庫管理(美)JeffreyA.Hoffer,MaryB.Prescott,FredR.McFadden著
1.1計算機系統存在漏洞
當前,大部分計算機的系統為Windows系統,只有少數計算機的系統為Linux系統。Windows系統受眾面廣,受網絡攻擊的可能性更大,再加上系統本身存在很多漏洞,嚴重影響了計算機數據信息的安全性。如果黑客攻擊系統所存在的漏洞,就會導致病毒通過漏洞感染計算機。計算機操作系統建設所用的代碼會涉及到匯編、反匯編等底層代碼,并且所有代碼的編寫需要整個團隊來完成,這樣往往在代碼編寫過程中就會出現漏洞,需要用專門的補丁來修復。系統漏洞的存在給計算機的安全使用帶來了極大的威脅,導致銀行賬號、密碼,游戲賬號、密碼等泄露,從而對計算機使用者造成一定的損失。
1.2計算機病毒
計算機病毒具有感染性強、蔓延范圍廣、傳播速度快等特點,是威脅計算機數據安全的重要因素。在病毒進入到計算機程序后,如果將帶有病毒的數據文件應用于計算機網絡傳輸或共享,那么其他計算機在瀏覽或打開此數據文件時也會被感染,出現連鎖式病毒傳播。另外,如果計算機病毒過多,會對計算機操作系統造成十分嚴重的影響,出現死機或者數據丟失等事故。
1.3非正常入侵
計算機網絡具有開放性特點,在互聯網背景下,很多不法分子利用系統本身存在的漏洞非法入侵用戶計算機。非法入侵者一般采取竊聽、監視等手段,獲取計算機網絡用戶的口令、IP包和用戶信息等,然后利用各種信息進入計算機局域網內,并采用冒充系統客戶或者用合法用戶的IP地址代替自己的IP地址等方式,篡改或竊取計算機網絡內的數據信息。
2數據加密技術的應用
2.1密鑰保護
密鑰保護是數據加密中一種常用的加密技術。改變密鑰的表達方式,可提高密文書寫的多變性,體現多層次的加密方式。密鑰保護可分為公鑰保護和私鑰保護兩種方式。通常這兩種方式相互配合,對提高計算機數據信息的安全性具有重要意義。私鑰保護具有一定的局限性,在使用時必須借助公鑰保護來完成整個保護動作。密鑰保護的原理是:當計算機進行數據傳輸時,選用公鑰對需要傳輸的信息進行加密,在用戶接收數據后,需要通過私鑰來完成解密動作,以此來確保傳輸數據的安全性,避免攻擊者非法竊取傳輸過程中的數據。當前,秘鑰保護方式一般用于管理系統和金融系統中,可以完成對私人信息、用戶登錄和訪問過程等方面的保護。
2.2USBkey保護
USBkey是數據加密技術的典型代表,一般用于銀行交易系統中,保證網絡交易環境的安全性。USBkey服務于客戶端到銀行系統,對每項數據信息的傳輸都需要加密處理,避免數據在傳輸過程中受到惡意攻擊。就現狀來看,銀行系統通過計算機網絡來完成工作的概率逐漸上升。USBkey可以保護銀行系統能夠在相對安全的環境中完成交易。在用戶利用計算機網絡進行銀行交易時,USBkey中的加密技術會自動匹配用戶信息,即便用戶行為被跟蹤,攻擊者也無法破譯USBkey中的加密技術,通過加強用戶登錄身份的驗證,保證用戶財務安全。
2.3數字簽名保護
數字簽名保護是比較常用的一種數據加密技術,具有很好的保護效果。數字簽名保護的原理是利用加密、解密過程,識別用戶身份,從而保證數據信息的安全性。數字簽名保護也分為公鑰保護和私鑰保護兩種,如果只使用其中的一種保護方式,會在本質上降低安全保護的效果。因此,通常情況下,常在私鑰簽名處外加一層公鑰保護,提高數字簽名保護的效果。
3結束語
計算機網絡安全主要包括資源共享、組網硬件、網絡服務以及網絡軟件等方面的內容,因此計算機網絡安全涉及到計算機網絡的所有內容。以計算機網絡特征為依據,對計算機網絡軟件、數據資源、硬件以及操作系統進行有效的保護,能夠有效防止計算機相關數據遭到泄露、破壞及更改,保證計算機網絡運行的安全性及可靠性。在實際運用過程中,計算機網絡安全還存在諸多隱患,而人為因素則是計算機網絡安全的最大隱患。一般情況下,計算機網絡安全隱患主要包括:首先,網絡漏洞。其在計算機操作系統中較為常見,由于操作系統會有許多用戶同時進行系統運行及信息傳輸,因而在信息傳輸過程中出現安全隱患的幾率就進一步增加。其次,病毒。計算機的病毒主要分為文件病毒以及網絡病毒、引導型的病毒等。文件病毒主要是感染相關計算機中存有的各個文件。網絡病毒通常是利用計算機來感染、傳播計算機網絡的可執行性文件。引導型的病毒主要是感染計算機系統的啟動扇區及引導扇區。再次,非法入侵。非法入侵是威脅計算機網絡安全的主要人為因素。由于社會競爭越來越激烈,許多人會通過計算機來非法獲取他人信息來達到自己的目的,因而非法入侵也就成為計算機網絡安全的重要危險因素。此外,黑客破壞、網絡及系統不穩定也是威脅計算機網絡安全的重要因素,因而采取有效方法來保障計算機網絡安全,以提高信息數據的安全性就勢在必行。
2計算機網絡安全中數據加密技術的有效應用
當前,數據加密技術是一項確保計算機網絡安全的應用最廣泛的技術,且隨著社會及科技的發展而不斷發展。數據加密技術的廣泛應用為計算機網絡安全提供良好的環境,同時較好的保護了人們運用互聯網的安全。密鑰及其算法是數據加密技術的兩個主要元素。密鑰是一種對計算機數據進行有效編碼、解碼的算法。在計算機網絡安全的保密過程中,可通過科學、適當的管理機制以及密鑰技術來提高信息數據傳輸的可靠性及安全性。算法就是把普通信息和密鑰進行有機結合,從而產生其他人難以理解的一種密文步驟。要提高數據加密技術的實用性及安全性,就要對這兩個因素給予高度重視。
2.1鏈路數據加密技術在計算機網絡安全中的應用
一般情況下,多區段計算機計算機采用的就是鏈路數據加密技術,其能夠對信息、數據的相關傳輸路線進行有效劃分,并以傳輸路徑以及傳輸區域的不同對數據信息進行針對性的加密。數據在各個路段傳輸的過程中會受到不同方式的加密,所以數據接收者在接收數據時,接收到的信息數據都是密文形式的,在這種情況下,即便數據傳輸過程被病毒所獲取,數據具有的模糊性也能對數據信息起到的一定程度的保護作用。此外,鏈路數據加密技術還能夠對傳送中的信息數據實行相應的數據信息填充,使得數據在不同區段傳輸的時候會存在較大的差異,從而擾亂竊取者數據判斷的能力,最終達到保證數據安全的目的。
2.2端端數據加密技術在計算機網絡安全中的應用
相比鏈路數據加密技術,端端數據加密技術實現的過程相對來說較為容易。端端數據加密技術主要是借助密文形式完成信息數據的傳輸,所以數據信息傳輸途中不需要進行信息數據的加密、解密,這就較好的保障了信息安全,并且該種技術無需大量的維護投入及運行投入,由于端端數據加密技術的數據包傳輸的路線是獨立的,因而即使某個數據包出現錯誤,也不會干擾到其它數據包,這一定程度上保證了數據傳輸的有效性及完整性。此外,在應用端端數據加密技術傳輸數據的過程中,會撤銷原有信息數據接收者位置的解密權,除了信息數據的原有接收者,其他接收者都不能解密這些數據信息,這極大的減少了第三方接收數據信息的幾率,大大提高了數據的安全性。
2.3數字簽名信息認證技術在計算機網絡安全中的有效應用
隨著計算機相關技術的快速發展,數字簽名信息認證技術在提高計算機網絡安全中的重要作用日漸突出。數字簽名信息認證技術是保障網絡安全的主要技術之一,主要是通過對用戶的身份信息給予有效的確認與鑒別,從而較好的保證用戶信息的安全。目前,數字簽名信息認證的方式主要有數字認證以及口令認證兩種。數字認證是在加密信息的基礎上完成數據信息密鑰計算方法的有效核實,進一步增強了數據信息的有效性、安全性。相較于數字認證而言,口令認證的認證操作更為快捷、簡便,使用費用也相對較低,因而使用范圍更廣。
2.4節點數據加密技術在計算機網絡安全中的有效應用
節點數據加密技術和鏈路數據加密技術具有許多相似之處,都是采取加密數據傳送線路的方法來進行信息安全的保護。不同之處則是節點數據加密技術在傳輸數據信息前就對信息進行加密,在信息傳輸過程中,數據信息不以明文形式呈現,且加密后的各項數據信息在進入傳送區段之后很難被其他人識別出來,以此來達到保護信息安全的目的。但是實際上,節點數據加密技術也存在一定弊端,由于其要求信息發送者和接收方都必須應用明文形式來進行信息加密,因而在此過程中,相關信息一旦遭到外界干擾,就會降低信息安全。
2.5密碼密鑰數據技術在計算機網絡安全中的有效應用
保護數據信息的安全是應用數據加密技術的最終目的,數據加密是保護數據信息安全的主動性防治措施。密鑰一般有私用密鑰及公用密鑰兩種類型。私用密鑰即信息傳送雙方已經事先達成了密鑰共識,并應用相同密鑰實現信息加密、解密,以此來提高信息的安全性。而公用密鑰的安全性則比較高,其在發送文件發送前就已經對文件進行加密,能有效避免信息的泄露,同時公用密鑰還能夠與私用密鑰互補,對私用密鑰存在的缺陷進行彌補。
3數據加密技術應用在計算機網絡安全中的有效對策
網絡通信有一定的風險性,對數據加密技術的需求比較大,結合網絡通信的實踐應用,通過例舉網絡通信中的風險表現,分析其對數據加密技術的需求。網絡通信的安全風險有:①網絡通信的過程中,面臨著攻擊者的監聽、竊取破壞,很容易丟失傳輸中的數據信息;②攻擊者隨意更改網絡通信中的信息,冒充管理者截取傳輸信息,導致網絡通信的數據丟失;③網絡通信中的數據信息被惡意復制,引起了系統癱瘓、信息不準確的問題。由此可見:網絡通信中,必須強化數據加密技術的應用,采取數據加密技術,保護網絡通信的整個過程,預防攻擊行為,提高網絡通信的安全水平,避免出現惡意攻擊的現象,保障網絡通信的安全性和積極性,表明數據加密技術的重要性,進而完善網絡通信的環境。
2數據加密技術在網絡通信中的應用
數據加密技術提升了網絡通信的安全性,規范了網絡通信的運營環境,規避了潛在的風險因素。網絡通信中的數據加密,主要分為方法和技術兩部分,對其做如下分析:
2.1網絡通信中的數據加密方法
2.1.1對稱加密
對稱加密方法在網絡通信中比較常用,利用相同的密鑰,完成通信數據加密到解密的過程,降低了數據加密的難度。對稱加密中,比較有代表性的方法是DES加密,屬于標準對稱加密的方法。例如:DES在網絡通信中的應用,使用了固定的加密框架,DES通過密鑰,迭代子密鑰,將56bit密鑰分解成16組48bit,迭代的過程中進行加密,而解密的過程與加密流程相似,使用的密鑰也完全相同,加密與解密密鑰的使用正好相反,根據網絡通信的數據類型,完成對稱加密。
2.1.2非對稱加密
非對稱加密方法的難度稍高,加密與解密的過程,采用了不同的密鑰,以公鑰、私鑰的方式,對網絡通信實行非對稱加密。公鑰和私鑰配對后,才能打開非對稱加密的網絡通信數據,其私鑰由網絡通信的管理者保管,不能公開使用。非對稱加密方法在網絡通信中的應用,解密時僅需要管理者主動輸入密鑰的數據即可,操作方法非常簡單,而且具有較高的安全水平,提高了加密解密的時間效率。
2.2網絡通信中的數據加密技術
2.2.1鏈路加密
網絡通信中的鏈路加密,實際是一種在線加密技術,按照網絡通信的鏈路分配,提供可行的加密方法。網絡通信的數據信息在傳輸前,已經進入了加密的狀態,鏈路節點先進行解密,在下一鏈路環境中,重新進入加密狀態,整個網絡通信鏈路傳輸的過程中,都是按照先解密在加密的方式進行,鏈路上的數據信息,均處于密文保護狀態,隱藏了數據信息的各項屬性,避免數據信息被攻擊竊取。
2.2.2節點加密
節點加密技術確保了網絡通信節點位置數據信息的安全性,通過節點處的數據信息,都不會是明文形式,均表現為密文,促使節點加密成為具有安全保護功能的模塊,安全的連接了網絡通信中的信息。加點加密技術在網絡通信中的應用,依賴于密碼裝置,用于完成節點信息的加密、解密,但是此類應用也存在一個明顯的缺陷,即:報頭、路由信息為明文方式,由此增加了節點加密的難度,很容易為攻擊者提供竊取條件,是節點加密技術應用中需要重點考慮的問題。
2.2.3端到端加密
網絡通信的端到端加密,是指出發點到接收點,整個過程不能出現明文狀態的數據信息。端到端加密的過程中,不會出現解密行為,數據信息進入到接收點后,接收人借助密鑰加密信息,提高網絡通信的安全性,即使網絡通信的節點發生安全破壞,也不會造成數據信息的攻擊丟失,起到優質的加密作用。端到端加密時,應該做好出發點、接收點位置的網絡通信加密,以便確保整個網絡通信過程的安全性。
3結束語