噜噜噜噜私人影院,少妇人妻综合久久中文字幕888,AV天堂永久资源网,5566影音先锋

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

購物車(0)

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

加密技術(shù)論文范文

時間:2023-03-10 14:57:45

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

加密技術(shù)論文

第1篇

關(guān)鍵詞:混沌的基本原理加密算法性能評估

一、混沌的基本原理

混沌是一種復雜的非線性、非平衡的動力學過程,其特點為:(1)混沌系統(tǒng)的行為是許多有序行為的集合,而每個有序分量在正常條件下,都不起主導作用;(2)混沌看起來似為隨機,但都是確定的;(3)混沌系統(tǒng)對初始條件極為敏感,對于兩個相同的混沌系統(tǒng),若使其處于稍異的初態(tài)就會迅速變成完全不同的狀態(tài)。

1963年,美國氣象學家洛倫茲(Lorenz)提出混沌理論,認為氣候從本質(zhì)上是不可預測的,最微小的條件改變將會導致巨大的天氣變化,這就是著名的“蝴蝶效應”。此后混沌在各個領(lǐng)域都得到了不同程度的運用。20世紀80年代開始,短短的二十幾年里,混沌動力學得到了廣泛的應用和發(fā)展。

二、混沌在加密算法中的應用

混沌系統(tǒng)由于對初值的敏感性,很小的初值誤差就能被系統(tǒng)放大,因此,系統(tǒng)的長期性是不可預測的;又因為混沌序列具有很好的統(tǒng)計特性,所以它可以產(chǎn)生隨機數(shù)列,這些特性很適合于序列加密技術(shù)。信息論的奠基人美國數(shù)學家Shannon指出:若能以某種方式產(chǎn)生一隨機序列,這一序列由密鑰所確定,任何輸入值一個微小變化對輸出都具有相當大影響,則利用這樣的序列就可以進行加密?;煦缦到y(tǒng)恰恰符合這種要求。

混沌系統(tǒng)的特性使得它在數(shù)值分布上不符合概率統(tǒng)計學原理,得不到一個穩(wěn)定的概率分布特征;另外,混沌數(shù)集是實數(shù)范圍,還可以推廣到復數(shù)范圍。因此,從理論上講,利用混沌原理對數(shù)據(jù)進行加密,可以防范頻率分析攻擊、窮舉攻擊等攻擊方法,使得密碼難于分析、破譯。

從1992年至今,混沌保密通信經(jīng)歷了四代?;煦缪谏w和混沌鍵控屬于第一代混沌保密通信技術(shù),安全性能非常低,實用性大大折扣?;煦缯{(diào)制屬于第二代混沌保密通信技術(shù),盡管第二代系統(tǒng)的安全性能比第一代高,但是仍然達不到滿意的程度。混沌加密技術(shù)屬于第三代混沌保密通信,該類方法將混沌和密碼學的優(yōu)點結(jié)合起來,具有非常高的安全性能。基于脈沖同步的混沌通信則屬于第四代混沌保密通信。

三、混沌加密算法的性能評估

參考美國國家標準與技術(shù)協(xié)會(NIST)的評判規(guī)則LNIST的評判規(guī)則大體分為三個部分:安全性、代價和算法實現(xiàn)特性。介紹了一種基于Lorenz系統(tǒng)的混沌加密算法,以此標準分析了其性能,并將其與當前通用加密算法進行比較。

1.安全性分析

首先,混沌系統(tǒng)對初始值和參數(shù)非常敏感,可以提供很大的密鑰集合,完全滿足加密的需要。通過對混沌系統(tǒng)生成的二進制序列進行檢驗,0和1的分布均勻,游程符合隨機數(shù)要求,可以認為是隨機序列。其次,混沌加密屬于流密碼,對分組加密的攻擊方法是無效的。同時,對選擇明文ˆ密文攻擊方法,由于混沌的單向性和混沌信號的迭代處理,異或操作后密鑰流的推斷幾乎不可能。

第2篇

一:數(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é))對應著“置換表”中的一個偏移量,偏移量所對應的值就輸出成為加密后的文件。加密程序和解密程序都需要一個這樣的“置換表”。事實上,80x86cpu系列就有一個指令‘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ù),以至于每個表是不同的。下一步,使用"shotguntechnique"技術(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的表,這樣做將會增加密文的長度?;蛘撸梢允褂媚惝a(chǎn)生出隨機數(shù)序列所用的密碼,也可能是它的crc校驗和。順便提及的是曾作過這樣一個測試:使用16個字節(jié)來產(chǎn)生表的索引,以128位的密鑰作為這16個字節(jié)的初始的"種子"。然后,在產(chǎn)生出這些隨機數(shù)的表之后,就可以用來加密數(shù)據(jù),速度達到每秒鐘100k個字節(jié)。一定要保證在加密與解密時都使用加密的值作為表的索引,而且這兩次一定要匹配。

加密時所產(chǎn)生的偽隨機序列是很隨意的,可以設計成想要的任何序列。沒有關(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ù)。算法如下:

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)生一系列的隨機數(shù)字,比如說,在0和列表中所有的隨機數(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''''中的值應該是一個排過序的唯一的一系列的整數(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!/

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篇

計算機網(wǎng)絡安全的威脅的形式多種多樣,主要包括:①來源威脅?,F(xiàn)在的計算機操作系統(tǒng)、網(wǎng)絡系統(tǒng)幾乎都是從國外引進的,具有一定的安全威脅。②環(huán)境威脅。我國關(guān)于網(wǎng)絡治安的法律還不完善,網(wǎng)絡技術(shù)本身也有很多不完善的地方。③病毒威脅。計算機病毒具有很強的破壞性,對計算機網(wǎng)絡安全來說是一個很大的威脅。④網(wǎng)絡人員威脅。網(wǎng)絡管理員是離網(wǎng)絡機密最近的人,他們的素質(zhì)和人品對計算機網(wǎng)絡安全有很大的影響。⑤設備故障威脅。設備故障通信就會中斷,這對網(wǎng)絡系統(tǒng)的安全也會產(chǎn)生很大的影響⑥傳輸渠道威脅。網(wǎng)絡信息在傳輸過程中有被竊取、篡改、偽造的危險。計算機網(wǎng)絡安全中主要存在三種隱患:①電子郵件隱患。電子郵件在我們的生活中應用非常廣泛,但是,其中隱藏著非常大的隱患。網(wǎng)絡黑客們很可能會通過發(fā)垃圾郵件的方式,使用戶的郵箱爆滿,影響用戶郵箱的正常使用。②口令入侵隱患??诹钊肭蛛[患是指網(wǎng)絡黑客們通過非法途徑入侵用戶的口令,對用戶的電腦實行攻擊。③網(wǎng)址欺騙隱患。網(wǎng)絡欺騙隱患是指網(wǎng)絡黑客們通過篡改網(wǎng)頁和網(wǎng)址的信息,使用戶訪問網(wǎng)站的時候出現(xiàn)網(wǎng)絡安全漏洞,然后,網(wǎng)絡黑客們就會利用這些網(wǎng)絡安全漏洞對用戶的電腦實行攻擊。

2計算機網(wǎng)絡安全技術(shù)的分析

2.1加密技術(shù)

加密技術(shù)是計算機網(wǎng)絡安全技術(shù)的重要組成部分,一般分為對稱加密技術(shù)、非對稱加密技術(shù)和RSA算法三種。對稱加密技術(shù)中信息的加密和解密使用的鑰匙是相同的,一般稱為“SessionKey”。只要在交換階段不泄露自己的私有密匙,就可以保證計算機系統(tǒng)的機密性。但是,這種加密技術(shù)也存在著不足之處,交換雙方共有使用一把私有密匙,所有的信息都是通過這把私有密匙傳遞的,不是很安全。在飛對稱加密技術(shù)中,密匙分為公開密匙和私有密匙兩個,公開密匙用來加密,私有密匙用來解密。公開密匙可以公布,私有密匙只有交換雙方知道,安全性更有保證。RSA算法是Rivest、Shamir和Adleman提出出的第一個完整的公鑰密碼體制,至今為止,還沒人找到一個有效的算法來分解兩大素數(shù)之積,安全性有保障。

2.2防病毒技術(shù)

計算機病毒是網(wǎng)絡系統(tǒng)中最大的攻擊者,具有很強的傳染性和破壞力。而且,一旦計算機病毒發(fā)動攻擊,就會造成很大的影響。防病毒技術(shù)主要包括三種:預防技術(shù)、檢測技術(shù)和消除技術(shù)。預防技術(shù)主要是指在利用一定的安全技術(shù)手段防御病毒破壞計算機系統(tǒng),包括對未知病毒和已知病毒的預防,主要包括讀寫控制技術(shù)、系統(tǒng)監(jiān)控技術(shù)、加密可執(zhí)行程序等等。檢測技術(shù)主要是指利用計算機安全技術(shù)檢測計算機技術(shù)的一種技術(shù),主要包括檢測計算機病毒特征的檢測技術(shù)和檢測文件自身的技術(shù)兩種計算機檢測技術(shù)。消除技術(shù)主要是指通過分析計算機病毒,開發(fā)出消除計算機病毒并恢復原文件的一種技術(shù)。

2.3PKI技術(shù)

PKI技術(shù)是PublieKeyInfrastueture,即公鑰基礎設施的意思。PKI技術(shù)主要是指使用數(shù)字證書和公開密匙兩種方式對網(wǎng)絡系統(tǒng)安全進行雙重保護,而且還會對數(shù)字證書持有者進行驗證的一種技術(shù)。。PKI技術(shù)會提供認證、加密、完整、安全通信、特權(quán)管理、密鑰管理等服務。PKI技術(shù)是計算機網(wǎng)絡安全技術(shù)的核心,在電子商務中也得到廣泛的應用。

2.4防火墻技術(shù)

防火墻主要是指設置在不懂網(wǎng)絡安全區(qū)域之間的唯一出入口,防火墻本身具有很強的抗攻擊能力,為計算機系統(tǒng)提供信息安全服務,抗御網(wǎng)絡黑客們的入侵。防火墻的形式各種各樣,但是,防火墻主要可以分為兩大類:“包過濾型”和“應用型”?!鞍^濾型”是對數(shù)據(jù)包的包頭源地址、目的地址、端口號和協(xié)議類型等進行過濾,通過的就轉(zhuǎn)發(fā)到與之相對應的目的地,未通過的就丟棄“。應用型”是先對網(wǎng)絡信息流進行阻斷,然后利用專用的程序?qū)W(wǎng)絡信息流進行監(jiān)視和控制。

2.5安全隔離技術(shù)

安全隔離技術(shù)主要是指將計算機網(wǎng)絡中的有害攻擊阻隔在可信的網(wǎng)絡區(qū)域之外,在確信計算機網(wǎng)絡可信區(qū)域內(nèi)部的信息不泄露的情況下,進行計算機網(wǎng)絡之間的信息交換的技術(shù)。安全隔離技術(shù)發(fā)展到現(xiàn)在,一共經(jīng)歷五個階段:完全的隔離、硬件卡隔離、數(shù)據(jù)轉(zhuǎn)播隔離、空氣開關(guān)隔離、安全通道隔離。其中安全通道隔離是現(xiàn)代安全隔離技術(shù)發(fā)展的主要方向。

3結(jié)束語

第4篇

首先是對稱加密技術(shù)。對稱加密技術(shù)是用相同的鑰匙對信息進行加密和解鎖,換言之就是一把鑰匙開一把鎖。這種加密方法使加密過程得到了簡化,交換信息的雙方不需要互相交換和研究專用的加密方法。在交換階段一定要確保私有鑰匙沒有被泄漏,才可以保證報文的機密性和完整性。但是這種技術(shù)還是存在一些不足,如假設交換的一方對應的是多個交換對象,那么他就一定要維護多把鑰匙。其次是非對稱加密技術(shù)。密鑰在非對稱加密中被分解成私有密鑰和公開密鑰。這種技術(shù)當前被廣泛的應用在了身份確認和數(shù)據(jù)簽名等領(lǐng)域。

2網(wǎng)絡安全技術(shù)發(fā)展呈現(xiàn)出的現(xiàn)狀

2.1我國不具備自主研發(fā)的軟件核心技術(shù)

數(shù)據(jù)庫、操作系統(tǒng)以及CPU是網(wǎng)絡安全核心其中最為主要的三個部分。現(xiàn)階段,雖然大多數(shù)企業(yè)都已經(jīng)在建設和維護網(wǎng)絡安全方面消耗了大量的資金,但是,由于大部分的網(wǎng)絡設備及軟件都不是我國自主研發(fā)的,而是從國外進口的,這就導致我國的網(wǎng)絡安全技術(shù)難以跟上時展的腳步,在處于這種競爭劣勢下,就極易成為別國竊聽和打擊的對象。除此之外,國外一些殺毒系統(tǒng)和操作系統(tǒng)的開發(fā)商幾乎已經(jīng)在將中國的軟件市場壟斷。基于上述這些情況,我國一定要進一步加快研發(fā)軟件核心技術(shù)的速度,根據(jù)我國發(fā)展的實際情況,將能夠確保我國網(wǎng)絡安全運營的軟件技術(shù)有效地開發(fā)出來。

2.2安全技術(shù)不具備較高的防護能力

我國的各個企事業(yè)單位在現(xiàn)階段都幾乎已經(jīng)建立起了專屬網(wǎng)站,并且,電子商務也正處在快速發(fā)展的狀態(tài)之中。但是,所應用的系統(tǒng)大部分都處在沒有設防的狀態(tài)中,所以很有可能會埋下各種各樣的安全隱患。并且在進行網(wǎng)絡假設的過程中,大多數(shù)企業(yè)沒有及時采取各種技術(shù)防范措施來確保網(wǎng)絡的安全。

2.3高素質(zhì)的技術(shù)人才比較欠缺

由于互聯(lián)網(wǎng)通信成本相對較低,因此,服務器和配置器的種類變得越來越多,功能也變得更加完善,性能也變得更好。但是,不管是人才數(shù)量方面或者是專業(yè)水平方面,其專業(yè)技術(shù)人員都難以對當今的網(wǎng)絡安全需要形成更好的適應性。此外,網(wǎng)絡管理人員不具備較強的安全管理導向能力,如,當計算機系統(tǒng)出現(xiàn)崩潰的情況時,網(wǎng)絡管理人員難以及時有效地提出有效的解決對策。

3網(wǎng)絡安全技術(shù)的發(fā)展趨勢

3.1深度分析計算機網(wǎng)絡安全內(nèi)容

各種類型不同的網(wǎng)絡安全威脅因素隨著互聯(lián)網(wǎng)絡技術(shù)的不斷發(fā)展而出現(xiàn)。相應地網(wǎng)絡安全技術(shù)也一定要不斷獲得提升和發(fā)展。加強識別網(wǎng)絡安全技術(shù)的方法主要包括以下幾點:第一,要以安全防護的相關(guān)內(nèi)容為出發(fā)點,加強分析網(wǎng)絡安全技術(shù)深度防護的力度,主要是對網(wǎng)絡安全行為的內(nèi)容和網(wǎng)絡安全防護的匹配這兩個方面進行分析?;谔卣鲙旌灻纳疃葓笪牡奶卣髌ヅ涫钱斍氨容^常用的一種安全防護分析方法,即根據(jù)報文的深度內(nèi)容展開有針對性的分析,利用這種途徑來獲取網(wǎng)絡安全攻擊的特征,并利用特征庫對匹配的網(wǎng)絡攻擊內(nèi)容進行搜索,同時還要及時采取相應的防御措施。還有,基于安全防護的職能分析以及基于網(wǎng)絡行為的模型學習也同樣是一種較好的網(wǎng)絡安全技術(shù)手段,即通過模擬具有特征性的網(wǎng)絡行為以及分析網(wǎng)絡行為的特征獲取網(wǎng)絡攻擊行為的提前預警,這樣就可以為保護計算機網(wǎng)絡系統(tǒng)有力的條件。

3.2把網(wǎng)絡安全產(chǎn)業(yè)鏈轉(zhuǎn)變成生態(tài)環(huán)境

產(chǎn)業(yè)價值鏈在近幾年時間里隨著不斷發(fā)展的計算機技術(shù)及行業(yè)也相應的發(fā)生了巨大的變化,它的價值鏈變得越來越復雜。此外,生態(tài)環(huán)境的變化速度已經(jīng)在很大程度上超過了預期環(huán)境的變化速度,按照這種趨勢發(fā)展下去,在未來網(wǎng)絡技術(shù)發(fā)展的過程中,各個參與方一定要加強自身對市場要求的適應能力。

3.3網(wǎng)絡安全技術(shù)將會朝著自動化和智能化的方向發(fā)展

我國現(xiàn)階段的網(wǎng)絡安全技術(shù)要得到優(yōu)化需要經(jīng)歷一個長期的過程,它貫穿于網(wǎng)絡發(fā)展的始終。此外,智能化的網(wǎng)絡優(yōu)化手段已經(jīng)開始逐步取代人工化的網(wǎng)絡優(yōu)化手段。同時,還可以將網(wǎng)絡優(yōu)化知識庫建立起來,進而針對一些存在于網(wǎng)絡運行中的質(zhì)量問題,將更多切實可行的解決措施提供給網(wǎng)絡管理者。所以,國內(nèi)網(wǎng)絡安全技術(shù)在未來幾年時間里會在IMS的基礎上將固定的NGN技術(shù)研制出來。這項技術(shù)的成功研制能夠給企事業(yè)的發(fā)展提供更豐富的業(yè)務支持。

3.4朝著網(wǎng)絡大容量的方向發(fā)展

國內(nèi)互聯(lián)網(wǎng)的業(yè)務量在近幾年時間里呈現(xiàn)出迅猛增長的態(tài)勢,尤其是針對那些IP為主的數(shù)據(jù)業(yè)務而言,對交換機以及路由器的處理能力均提出了較高的要求。因為想要對語音、圖像等業(yè)務需求形成更好的滿足,因此,要求IP網(wǎng)絡一定要具備較強的包轉(zhuǎn)發(fā)和處理能力,那么,未來的網(wǎng)絡在不出意外的情況下一定會朝著大容量的方向發(fā)展。國內(nèi)網(wǎng)絡在今后發(fā)展的過程中,一定要廣泛應用硬件交換、分組轉(zhuǎn)發(fā)引擎,促使網(wǎng)絡系統(tǒng)的整體性能得到切實提升。

4結(jié)語

第5篇

一:數(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é))對應著“置換表”中的一個偏移量,偏移量所對應的值就輸出成為加密后的文件。加密程序和解密程序都需要一個這樣的“置換表”。事實上,80x86cpu系列就有一個指令‘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ù),以至于每個表是不同的。下一步,使用"shotguntechnique"技術(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)生的偽隨機序列是很隨意的,可以設計成想要的任何序列。沒有關(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ù)。算法如下:

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)生一系列的隨機數(shù)字,比如說,在0和列表中所有的隨機數(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''''中的值應該是一個排過序的唯一的一系列的整數(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.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!)/

第6篇

一:數(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é))對應著“置換表”中的一個偏移量,偏移量所對應的值就輸出成為加密后的文件。加密程序和解密程序都需要一個這樣的“置換表”。事實上,80x86cpu系列就有一個指令‘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ù),以至于每個表是不同的。下一步,使用"shotguntechnique"技術(shù)來產(chǎn)生解碼表。基本上說,如果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)生的偽隨機序列是很隨意的,可以設計成想要的任何序列。沒有關(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ù)。算法如下:

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)生一系列的隨機數(shù)字,比如說,在0和列表中所有的隨機數(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''''中的值應該是一個排過序的唯一的一系列的整數(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.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!)/

第7篇

但我們必需清楚地認識到,這一切一切的安全問題我們不可一下全部找到解決方案,況且有的是根本無法找到徹底的解決方案,如病毒程序,因為任何反病毒程序都只能在新病毒發(fā)現(xiàn)之后才能開發(fā)出來,目前還沒有哪能一家反病毒軟件開發(fā)商敢承諾他們的軟件能查殺所有已知的和未知的病毒,所以我們不能有等網(wǎng)絡安全了再上網(wǎng)的念頭,因為或許網(wǎng)絡不能有這么一日,就象“矛”與“盾”,網(wǎng)絡與病毒、黑客永遠是一對共存體。

現(xiàn)代的電腦加密技術(shù)就是適應了網(wǎng)絡安全的需要而應運產(chǎn)生的,它為我們進行一般的電子商務活動提供了安全保障,如在網(wǎng)絡中進行文件傳輸、電子郵件往來和進行合同文本的簽署等。其實加密技術(shù)也不是什么新生事物,只不過應用在當今電子商務、電腦網(wǎng)絡中還是近幾年的歷史。下面我們就詳細介紹一下加密技術(shù)的方方面面,希望能為那些對加密技術(shù)還一知半解的朋友提供一個詳細了解的機會!

一、加密的由來

加密作為保障數(shù)據(jù)安全的一種方式,它不是現(xiàn)在才有的,它產(chǎn)生的歷史相當久遠,它是起源于要追溯于公元前2000年(幾個世紀了),雖然它不是現(xiàn)在我們所講的加密技術(shù)(甚至不叫加密),但作為一種加密的概念,確實早在幾個世紀前就誕生了。當時埃及人是最先使用特別的象形文字作為信息編碼的,隨著時間推移,巴比倫、美索不達米亞和希臘文明都開始使用一些方法來保護他們的書面信息。

近期加密技術(shù)主要應用于軍事領(lǐng)域,如美國獨立戰(zhàn)爭、美國內(nèi)戰(zhàn)和兩次世界大戰(zhàn)。最廣為人知的編碼機器是GermanEnigma機,在第二次世界大戰(zhàn)中德國人利用它創(chuàng)建了加密信息。此后,由于AlanTuring和Ultra計劃以及其他人的努力,終于對德國人的密碼進行了破解。當初,計算機的研究就是為了破解德國人的密碼,人們并沒有想到計算機給今天帶來的信息革命。隨著計算機的發(fā)展,運算能力的增強,過去的密碼都變得十分簡單了,于是人們又不斷地研究出了新的數(shù)據(jù)加密方式,如利用ROSA算法產(chǎn)生的私鑰和公鑰就是在這個基礎上產(chǎn)生的。

二、加密的概念

數(shù)據(jù)加密的基本過程就是對原來為明文的文件或數(shù)據(jù)按某種算法進行處理,使其成為不可讀的一段代碼,通常稱為“密文”,使其只能在輸入相應的密鑰之后才能顯示出本來內(nèi)容,通過這樣的途徑來達到保護數(shù)據(jù)不被非法人竊取、閱讀的目的。該過程的逆過程為解密,即將該編碼信息轉(zhuǎn)化為其原來數(shù)據(jù)的過程。

三、加密的理由

當今網(wǎng)絡社會選擇加密已是我們別無選擇,其一是我們知道在互聯(lián)網(wǎng)上進行文件傳輸、電子郵件商務往來存在許多不安全因素,特別是對于一些大公司和一些機密文件在網(wǎng)絡上傳輸。而且這種不安全性是互聯(lián)網(wǎng)存在基礎——TCP/IP協(xié)議所固有的,包括一些基于TCP/IP的服務;另一方面,互聯(lián)網(wǎng)給眾多的商家?guī)砹藷o限的商機,互聯(lián)網(wǎng)把全世界連在了一起,走向互聯(lián)網(wǎng)就意味著走向了世界,這對于無數(shù)商家無疑是夢寐以求的好事,特別是對于中小企業(yè)。為了解決這一對矛盾、為了能在安全的基礎上大開這通向世界之門,我們只好選擇了數(shù)據(jù)加密和基于加密技術(shù)的數(shù)字簽名。

加密在網(wǎng)絡上的作用就是防止有用或私有化信息在網(wǎng)絡上被攔截和竊取。一個簡單的例子就是密碼的傳輸,計算機密碼極為重要,許多安全防護體系是基于密碼的,密碼的泄露在某種意義上來講意味著其安全體系的全面崩潰。

通過網(wǎng)絡進行登錄時,所鍵入的密碼以明文的形式被傳輸?shù)椒掌?,而網(wǎng)絡上的竊聽是一件極為容易的事情,所以很有可能黑客會竊取得用戶的密碼,如果用戶是Root用戶或Administrator用戶,那后果將是極為嚴重的。

還有如果你公司在進行著某個招標項目的投標工作,工作人員通過電子郵件的方式把他們單位的標書發(fā)給招標單位,如果此時有另一位競爭對手從網(wǎng)絡上竊取到你公司的標書,從中知道你公司投標的標的,那后果將是怎樣,相信不用多說聰明的你也明白。

這樣的例子實在是太多了,解決上述難題的方案就是加密,加密后的口令即使被黑客獲得也是不可讀的,加密后的標書沒有收件人的私鑰也就無法解開,標書成為一大堆無任何實際意義的亂碼??傊疅o論是單位還是個人在某種意義上來說加密也成為當今網(wǎng)絡社會進行文件或郵件安全傳輸?shù)臅r代象征!

數(shù)字簽名就是基于加密技術(shù)的,它的作用就是用來確定用戶是否是真實的。應用最多的還是電子郵件,如當用戶收到一封電子郵件時,郵件上面標有發(fā)信人的姓名和信箱地址,很多人可能會簡單地認為發(fā)信人就是信上說明的那個人,但實際上偽造一封電子郵件對于一個通常人來說是極為容易的事。在這種情況下,就要用到加密技術(shù)基礎上的數(shù)字簽名,用它來確認發(fā)信人身份的真實性。

類似數(shù)字簽名技術(shù)的還有一種身份認證技術(shù),有些站點提供入站FTP和WWW服務,當然用戶通常接觸的這類服務是匿名服務,用戶的權(quán)力要受到限制,但也有的這類服務不是匿名的,如某公司為了信息交流提供用戶的合作伙伴非匿名的FTP服務,或開發(fā)小組把他們的Web網(wǎng)頁上載到用戶的WWW服務器上,現(xiàn)在的問題就是,用戶如何確定正在訪問用戶的服務器的人就是用戶認為的那個人,身份認證技術(shù)就是一個好的解決方案。

在這里需要強調(diào)一點的就是,文件加密其實不只用于電子郵件或網(wǎng)絡上的文件傳輸,其實也可應用靜態(tài)的文件保護,如PIP軟件就可以對磁盤、硬盤中的文件或文件夾進行加密,以防他人竊取其中的信息。

四、兩種加密方法

加密技術(shù)通常分為兩大類:“對稱式”和“非對稱式”。

對稱式加密就是加密和解密使用同一個密鑰,通常稱之為“SessionKey”這種加密技術(shù)目前被廣泛采用,如美國政府所采用的DES加密標準就是一種典型的“對稱式”加密法,它的SessionKey長度為56Bits。

非對稱式加密就是加密和解密所使用的不是同一個密鑰,通常有兩個密鑰,稱為“公鑰”和“私鑰”,它們兩個必需配對使用,否則不能打開加密文件。這里的“公鑰”是指可以對外公布的,“私鑰”則不能,只能由持有人一個人知道。它的優(yōu)越性就在這里,因為對稱式的加密方法如果是在網(wǎng)絡上傳輸加密文件就很難把密鑰告訴對方,不管用什么方法都有可能被別竊聽到。而非對稱式的加密方法有兩個密鑰,且其中的“公鑰”是可以公開的,也就不怕別人知道,收件人解密時只要用自己的私鑰即可以,這樣就很好地避免了密鑰的傳輸安全性問題。

五、加密技術(shù)中的摘要函數(shù)(MAD、MAD和MAD)

摘要是一種防止改動的方法,其中用到的函數(shù)叫摘要函數(shù)。這些函數(shù)的輸入可以是任意大小的消息,而輸出是一個固定長度的摘要。摘要有這樣一個性質(zhì),如果改變了輸入消息中的任何東西,甚至只有一位,輸出的摘要將會發(fā)生不可預測的改變,也就是說輸入消息的每一位對輸出摘要都有影響??傊?,摘要算法從給定的文本塊中產(chǎn)生一個數(shù)字簽名(fingerprint或messagedigest),數(shù)字簽名可以用于防止有人從一個簽名上獲取文本信息或改變文本信息內(nèi)容和進行身份認證。摘要算法的數(shù)字簽名原理在很多加密算法中都被使用,如SO/KEY和PIP(prettygoodprivacy)。

現(xiàn)在流行的摘要函數(shù)有MAD和MAD,但要記住客戶機和服務器必須使用相同的算法,無論是MAD還是MAD,MAD客戶機不能和MAD服務器交互。

MAD摘要算法的設計是出于利用32位RISC結(jié)構(gòu)來最大其吞吐量,而不需要大量的替換表(substitutiontable)來考慮的。

MAD算法是以消息給予的長度作為輸入,產(chǎn)生一個128位的"指紋"或"消息化"。要產(chǎn)生兩個具有相同消息化的文字塊或者產(chǎn)生任何具有預先給定"指紋"的消息,都被認為在計算上是不可能的。

MAD摘要算法是個數(shù)據(jù)認證標準。MAD的設計思想是要找出速度更快,比MAD更安全的一種算法,MAD的設計者通過使MAD在計算上慢下來,以及對這些計算做了一些基礎性的改動來解決安全性這一問題,是MAD算法的一個擴展。六、密鑰的管理

密鑰既然要求保密,這就涉及到密鑰的管理問題,管理不好,密鑰同樣可能被無意識地泄露,并不是有了密鑰就高枕無憂,任何保密也只是相對的,是有時效的。要管理好密鑰我們還要注意以下幾個方面:

1、密鑰的使用要注意時效和次數(shù)

如果用戶可以一次又一次地使用同樣密鑰與別人交換信息,那么密鑰也同其它任何密碼一樣存在著一定的安全性,雖然說用戶的私鑰是不對外公開的,但是也很難保證私鑰長期的保密性,很難保證長期以來不被泄露。如果某人偶然地知道了用戶的密鑰,那么用戶曾經(jīng)和另一個人交換的每一條消息都不再是保密的了。另外使用一個特定密鑰加密的信息越多,提供給竊聽者的材料也就越多,從某種意義上來講也就越不安全了。

因此,一般強調(diào)僅將一個對話密鑰用于一條信息中或一次對話中,或者建立一種按時更換密鑰的機制以減小密鑰暴露的可能性。

2、多密鑰的管理

假設在某機構(gòu)中有100個人,如果他們?nèi)我鈨扇酥g可以進行秘密對話,那么總共需要多少密鑰呢?每個人需要知道多少密鑰呢?也許很容易得出答案,如果任何兩個人之間要不同的密鑰,則總共需要4950個密鑰,而且每個人應記住99個密鑰。如果機構(gòu)的人數(shù)是1000、10000人或更多,這種辦法就顯然過于愚蠢了,管理密鑰將是一件可怕的事情。

Kerberos提供了一種解決這個較好方案,它是由MIT發(fā)明的,使保密密鑰的管理和分發(fā)變得十分容易,但這種方法本身還存在一定的缺點。為能在因特網(wǎng)上提供一個實用的解決方案,Kerberos建立了一個安全的、可信任的密鑰分發(fā)中心(KeyDistributionCenter,KDC),每個用戶只要知道一個和KDC進行會話的密鑰就可以了,而不需要知道成百上千個不同的密鑰。

假設用戶甲想要和用戶乙進行秘密通信,則用戶甲先和KDC通信,用只有用戶甲和KDC知道的密鑰進行加密,用戶甲告訴KDC他想和用戶乙進行通信,KDC會為用戶甲和用戶乙之間的會話隨機選擇一個對話密鑰,并生成一個標簽,這個標簽由KDC和用戶乙之間的密鑰進行加密,并在用戶甲啟動和用戶乙對話時,用戶甲會把這個標簽交給用戶乙。這個標簽的作用是讓用戶甲確信和他交談的是用戶乙,而不是冒充者。因為這個標簽是由只有用戶乙和KDC知道的密鑰進行加密的,所以即使冒充者得到用戶甲發(fā)出的標簽也不可能進行解密,只有用戶乙收到后才能夠進行解密,從而確定了與用戶甲對話的人就是用戶乙。

當KDC生成標簽和隨機會話密碼,就會把它們用只有用戶甲和KDC知道的密鑰進行加密,然后把標簽和會話鑰傳給用戶甲,加密的結(jié)果可以確保只有用戶甲能得到這個信息,只有用戶甲能利用這個會話密鑰和用戶乙進行通話。同理,KDC會把會話密碼用只有KDC和用戶乙知道的密鑰加密,并把會話密鑰給用戶乙。

用戶甲會啟動一個和用戶乙的會話,并用得到的會話密鑰加密自己和用戶乙的會話,還要把KDC傳給它的標簽傳給用戶乙以確定用戶乙的身份,然后用戶甲和用戶乙之間就可以用會話密鑰進行安全的會話了,而且為了保證安全,這個會話密鑰是一次性的,這樣黑客就更難進行破解了。同時由于密鑰是一次性由系統(tǒng)自動產(chǎn)生的,則用戶不必記那么多密鑰了,方便了人們的通信。

七、數(shù)據(jù)加密的標準

最早、最著名的保密密鑰或?qū)ΨQ密鑰加密算法DES(DataEncryptionStandard)是由IBM公司在70年展起來的,并經(jīng)政府的加密標準篩選后,于1976年11月被美國政府采用,DES隨后被美國國家標準局和美國國家標準協(xié)會(AmericanNationalStandardInstitute,ANSI)承認。DES使用56位密鑰對64位的數(shù)據(jù)塊進行加密,并對64位的數(shù)據(jù)塊進行16輪編碼。與每輪編碼時,一個48位的"每輪"密鑰值由56位的完整密鑰得出來。DES用軟件進行解碼需用很長時間,而用硬件解碼速度非???。幸運的是,當時大多數(shù)黑客并沒有足夠的設備制造出這種硬件設備。在1977年,人們估計要耗資兩千萬美元才能建成一個專門計算機用于DES的解密,而且需要12個小時的破解才能得到結(jié)果。當時DES被認為是一種十分強大的加密方法。

隨著計算機硬件的速度越來越快,制造一臺這樣特殊的機器的花費已經(jīng)降到了十萬美元左右,而用它來保護十億美元的銀行,那顯然是不夠保險了。另一方面,如果只用它來保護一臺普通服務器,那么DES確實是一種好的辦法,因為黑客絕不會僅僅為入侵一個服務器而花那么多的錢破解DES密文。

另一種非常著名的加密算法就是RSA了,RSA(Rivest-Shamir-Adleman)算法是基于大數(shù)不可能被質(zhì)因數(shù)分解假設的公鑰體系。簡單地說就是找兩個很大的質(zhì)數(shù)。一個對外公開的為“公鑰”(Prblickey),另一個不告訴任何人,稱為"私鑰”(Privatekey)。這兩個密鑰是互補的,也就是說用公鑰加密的密文可以用私鑰解密,反過來也一樣。

假設用戶甲要寄信給用戶乙,他們互相知道對方的公鑰。甲就用乙的公鑰加密郵件寄出,乙收到后就可以用自己的私鑰解密出甲的原文。由于別人不知道乙的私鑰,所以即使是甲本人也無法解密那封信,這就解決了信件保密的問題。另一方面,由于每個人都知道乙的公鑰,他們都可以給乙發(fā)信,那么乙怎么確信是不是甲的來信呢?那就要用到基于加密技術(shù)的數(shù)字簽名了。

甲用自己的私鑰將簽名內(nèi)容加密,附加在郵件后,再用乙的公鑰將整個郵件加密(注意這里的次序,如果先加密再簽名的話,別人可以將簽名去掉后簽上自己的簽名,從而篡改了簽名)。這樣這份密文被乙收到以后,乙用自己的私鑰將郵件解密,得到甲的原文和數(shù)字簽名,然后用甲的公鑰解密簽名,這樣一來就可以確保兩方面的安全了。

八、加密技術(shù)的應用

加密技術(shù)的應用是多方面的,但最為廣泛的還是在電子商務和VPN上的應用,下面就分別簡敘。

1、在電子商務方面的應用

電子商務(E-business)要求顧客可以在網(wǎng)上進行各種商務活動,不必擔心自己的信用卡會被人盜用。在過去,用戶為了防止信用卡的號碼被竊取到,一般是通過電話訂貨,然后使用用戶的信用卡進行付款?,F(xiàn)在人們開始用RSA(一種公開/私有密鑰)的加密技術(shù),提高信用卡交易的安全性,從而使電子商務走向?qū)嵱贸蔀榭赡堋?/p>

許多人都知道NETSCAPE公司是Internet商業(yè)中領(lǐng)先技術(shù)的提供者,該公司提供了一種基于RSA和保密密鑰的應用于因特網(wǎng)的技術(shù),被稱為安全插座層(SecureSocketsLayer,SSL)。

也許很多人知道Socket,它是一個編程界面,并不提供任何安全措施,而SSL不但提供編程界面,而且向上提供一種安全的服務,SSL3.0現(xiàn)在已經(jīng)應用到了服務器和瀏覽器上,SSL2.0則只能應用于服務器端。

SSL3.0用一種電子證書(electriccertificate)來實行身份進行驗證后,雙方就可以用保密密鑰進行安全的會話了。它同時使用“對稱”和“非對稱”加密方法,在客戶與電子商務的服務器進行溝通的過程中,客戶會產(chǎn)生一個SessionKey,然后客戶用服務器端的公鑰將SessionKey進行加密,再傳給服務器端,在雙方都知道SessionKey后,傳輸?shù)臄?shù)據(jù)都是以SessionKey進行加密與解密的,但服務器端發(fā)給用戶的公鑰必需先向有關(guān)發(fā)證機關(guān)申請,以得到公證。

基于SSL3.0提供的安全保障,用戶就可以自由訂購商品并且給出信用卡號了,也可以在網(wǎng)上和合作伙伴交流商業(yè)信息并且讓供應商把訂單和收貨單從網(wǎng)上發(fā)過來,這樣可以節(jié)省大量的紙張,為公司節(jié)省大量的電話、傳真費用。在過去,電子信息交換(ElectricDataInterchange,EDI)、信息交易(informationtransaction)和金融交易(financialtransaction)都是在專用網(wǎng)絡上完成的,使用專用網(wǎng)的費用大大高于互聯(lián)網(wǎng)。正是這樣巨大的誘惑,才使人們開始發(fā)展因特網(wǎng)上的電子商務,但不要忘記數(shù)據(jù)加密。

2、加密技術(shù)在VPN中的應用