下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
數(shù)據(jù)加密技術(shù)論文范文10篇
一:數(shù)據(jù)加密方法
在傳統(tǒng)上,我們有幾種方法來加密數(shù)據(jù)流。全部這些方法都可以用軟件很簡單的實現(xiàn),但是當(dāng)我們只知道密文的時候,是不簡單破譯這些加密算法的(當(dāng)同時有原文和密文時,破譯加密算法雖然也不是很簡單,但已經(jīng)是可能的了)。最好的加密算法對系統(tǒng)性能幾乎沒有影響,并且還可以帶來其他內(nèi)在的優(yōu)點。例如,大家都知道的pkzip,它既壓縮數(shù)據(jù)又加密數(shù)據(jù)。又如,dbms的一些軟件包總是包含一些加密方法以使復(fù)制文件這一功能對一些敏感數(shù)據(jù)是無效的,或者需要用戶的密碼。全部這些加密算法都要有高效的加密和解密力量。
幸運的是,在全部的加密算法中最簡潔的一種就是“置換表”算法,這種算法也能很好達到加密的需要。每一個數(shù)據(jù)段(總是一個字節(jié))對應(yīng)著“置換表”中的一個偏移量,偏移量所對應(yīng)的值就輸出成為加密后的文件。加密程序和解密程序都需要一個這樣的“置換表”。事實上,80x86cpu系列就有一個指令‘xlat’在硬件級來完成這樣的工作。這種加密算法比較簡潔,加密解密速度都很快,但是一旦這個“置換表”被對方獲得,那這個加密方案就完全被識破了。更進一步講,這種加密算法對于黑客破譯來講是相當(dāng)直接的,只要找到一個“置換表”就可以了。這種方法在計算機消失之前就已經(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í)行時,都要檢查一下本身是否被病毒感染,對與需要加、解密的文件都要做這種檢查!很自然,這樣一種方法體制應(yīng)當(dāng)保密的,由于病毒程序的編寫者將會利用這些來破壞別人的程序或數(shù)據(jù)。因此,在一些反病毒或殺病毒軟件中肯定要使用加密技術(shù)。
循環(huán)冗余校驗是一種典型的校驗數(shù)據(jù)的方法。對于每一個數(shù)據(jù)塊,它使用位循環(huán)移位和xor操作來產(chǎn)生一個16位或32位的校驗和,這使得丟失一位或兩個位的錯誤肯定會導(dǎo)致校驗和出錯。這種方式很久以來就應(yīng)用于文件的傳輸,例如xmodem-crc。這是方法已經(jīng)成為標準,而且有具體的文檔。但是,基于標準crc算法的一種修改算法對于發(fā)覺加密數(shù)據(jù)塊中的錯誤和文件是否被病毒感染是很有效的。
二.基于公鑰的加密算法
一個好的加密算法的重要特點之一是具有這種力量:可以指定一個密碼或密鑰,并用它來加密明文,不同的密碼或密鑰產(chǎn)生不同的密文。這又分為兩種方式:對稱密鑰算法和非對稱密鑰算法。所謂對稱密鑰算法就是加密解密都使用相同的密鑰,非對稱密鑰算法就是加密解密使用不同的密鑰。特別聞名的pgp公鑰加密以及rsa加密方法都是非對稱加密算法。加密密鑰,即公鑰,與解密密鑰,即私鑰,是特別的不同的。從數(shù)學(xué)理論上講,幾乎沒有真正不行逆的算法存在。例如,對于一個輸入‘a(chǎn)’執(zhí)行一個操作得到結(jié)果‘b’,那么我們可以基于‘b’,做一個相對應(yīng)的操作,導(dǎo)出輸入‘a(chǎn)’。在一些狀況下,對于每一種操作,我們可以得到一個確定的值,或者該操作沒有定義(比如,除數(shù)為0)。對于一個沒有定義的操作來講,基于加密算法,可以勝利地防止把一個公鑰變換成為私鑰。因此,要想破譯非對稱加密算法,找到那個唯一的密鑰,唯一的方法只能是反復(fù)的試驗,而這需要大量的處理時間。
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’。當(dāng)對方收到時,解密程序找到加密過的密鑰,并利用rsa私鑰解密出來,然后再確定出數(shù)據(jù)的開頭位置,利用密鑰‘12345’來解密數(shù)據(jù)。這樣就使得一個牢靠的經(jīng)過高效加密的數(shù)據(jù)平安地傳輸和解密。
一些簡潔的基于rsa算法的加密算法可在下面的站點找到:
ftp://ftp.funet.fi/pub/crypt/cryptography/asymmetric/rsa
三.一個嶄新的多步加密算法
現(xiàn)在又消失了一種新的加密算法,據(jù)說是幾乎不行能被破譯的。這個算法在1998年6月1日才正式公布的。下面具體的介紹這個算法:
使用一系列的數(shù)字(比如說128位密鑰),來產(chǎn)生一個可重復(fù)的但高度隨機化的偽隨機的數(shù)字的序列。一次使用256個表項,使用隨機數(shù)序列來產(chǎn)生密碼轉(zhuǎn)表,如下所示:
把256個隨機數(shù)放在一個距陣中,然后對他們進行排序,使用這樣一種方式(我們要記住最初的位置)使用最初的位置來產(chǎn)生一個表,隨便排序的表,表中的數(shù)字在0到255之間。假如不是很明白如何來做,就可以不管它。但是,下面也供應(yīng)了一些原碼(在下面)是我們明白是如何來做的?,F(xiàn)在,產(chǎn)生了一個詳細的256字節(jié)的表。讓這個隨機數(shù)產(chǎn)生器接著來產(chǎn)生這個表中的其余的數(shù),以至于每個表是不同的。下一步,使用"shotguntechnique"技術(shù)來產(chǎn)生解碼表?;旧险f,假如a映射到b,那么b肯定可以映射到a,所以b]=n.(n是一個在0到255之間的數(shù))。在一個循環(huán)中賦值,使用一個256字節(jié)的解碼表它對應(yīng)于我們剛才在上一步產(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
變量''''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é)??隙ㄒWC在加密與解密時都使用加密的值作為表的索引,而且這兩次肯定要匹配。
加密時所產(chǎn)生的偽隨機序列是很隨便的,可以設(shè)計成想要的任何序列。沒有關(guān)于這個隨機序列的具體的信息,解密密文是不現(xiàn)實的。例如:一些ascii碼的序列,如“eeeeeeee"可能被轉(zhuǎn)化成一些隨機的沒有任何意義的亂碼,每一個字節(jié)都依靠于其前一個字節(jié)的密文,而不是實際的值。對于任一個單個的字符的這種變換來說,隱蔽了加密數(shù)據(jù)的有效的真正的長度。
假如的確不理解如何來產(chǎn)生一個隨機數(shù)序列,就考慮fibbonacci數(shù)列,使用2個雙字(64位)的數(shù)作為產(chǎn)生隨機數(shù)的種子,再加上第三個雙字來做xor操作。這個算法產(chǎn)生了一系列的隨機數(shù)。算法如下:
unsignedlongdw1,dw2,dw3,dwmask;
inti1;
unsignedlongarandom;
dw1={seed#1};
dw2={seed#2};
dwmask={seed#3};
//thisgivesyou332-bit"seeds",or96bitstotal
for(i1=0;i1256;i1++)
{
dw3=(dw1+dw2)^dwmask;
arandom=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;
unsignedlongarandom;//samearrayasbefore,inthiscase
intaresult;//resultsgohere
for(i1=0;i1256;i1++)
{
aprandom=arandom+i1;
}
//nowsortit
qsort(aprandom,256,sizeof(*aprandom),mysortproc);
//finalstep-offsetsforpointersareplacedintooutputarray
for(i1=0;i1256;i1++)
{
aresult=(int)(aprandom-arandom);
}
...
變量''''aresult''''中的值應(yīng)當(dāng)是一個排過序的唯一的一系列的整數(shù)的數(shù)組,整數(shù)的值的范圍均在0到255之間。這樣一個數(shù)組是特別有用的,例如:對一個字節(jié)對字節(jié)的轉(zhuǎn)換表,就可以很簡單并且特別牢靠的來產(chǎn)生一個短的密鑰(常常作為一些隨機數(shù)的種子)。這樣一個表還有其他的用處,比如說:來產(chǎn)生一個隨機的字符,計算機嬉戲中一個物體的隨機的位置等等。上面的例子就其本身而言并沒有構(gòu)成一個加密算法,只是加密算法一個組成部分。
作為一個測試,開發(fā)了一個應(yīng)用程序來測試上面所描述的加
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字廣告效果評估-第1篇-洞察與解讀
- 免疫耐受建立過程-洞察與解讀
- 健美賽事與城市活力-洞察與解讀
- 家具公司銷售合同規(guī)范制度(規(guī)則)
- 某紡織公司面料配送服務(wù)方案
- 無人機飛機部件更換技術(shù)-洞察與解讀
- 農(nóng)業(yè)病害預(yù)警-洞察與解讀
- 女媧造人-課件
- 瀝青雨季施工方案
- 疫情必須熟記的“十大癥狀”
- 貴州省遵義市2024屆高三第三次質(zhì)量監(jiān)測數(shù)學(xué)試卷(含答案)
- 兒童靜療并發(fā)癥及其預(yù)防
- 江蘇省勞動合同模式
- 速凍食品安全風(fēng)險管控清單
- DL∕T 5342-2018 110kV~750kV架空輸電線路鐵塔組立施工工藝導(dǎo)則
- (正式版)JBT 7248-2024 閥門用低溫鋼鑄件技術(shù)規(guī)范
- JJG 705-2014液相色譜儀行業(yè)標準
- 五金件外觀檢驗標準
- 電梯安裝調(diào)試工地EHS管理要求和交底
- 建筑模板工程培訓(xùn)講義
- GB/T 35508-2017場站內(nèi)區(qū)域性陰極保護
評論
0/150
提交評論