第04章 用對稱密碼實(shí)現(xiàn)保密性_第1頁
第04章 用對稱密碼實(shí)現(xiàn)保密性_第2頁
第04章 用對稱密碼實(shí)現(xiàn)保密性_第3頁
第04章 用對稱密碼實(shí)現(xiàn)保密性_第4頁
第04章 用對稱密碼實(shí)現(xiàn)保密性_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第四章用對稱密碼實(shí)現(xiàn)保密性加密功能及其位置通信量的機(jī)密性密鑰分配隨機(jī)數(shù)產(chǎn)生

內(nèi)部網(wǎng)接線盒通信鏈路衛(wèi)星、微波等無線鏈路長途電信運(yùn)營商的本地旁接鏈路分組交換網(wǎng)絡(luò)的某個節(jié)點(diǎn)通信鏈路中的各種設(shè)備竊密攻擊的可能位置1.加密功能及其位置1.加密功能及其位置主動攻擊——需要對于鏈路的一部分取得物理上的控 制,并能夠捕獲傳輸內(nèi)容和插入某些內(nèi)容被動攻擊——只需要能夠觀察到傳輸?shù)膬?nèi)容就可以竊密攻擊的模式線路介質(zhì)與竊密攻擊的關(guān)系電話雙絞線、同軸電纜等使用侵入式竊聽器進(jìn)行主動攻擊或被動攻擊使用電磁輻射感應(yīng)設(shè)備進(jìn)行被動式攻擊光纜較難進(jìn)行攻擊無線鏈路通過電磁輻射感應(yīng)可容易地實(shí)現(xiàn)被動攻擊難以實(shí)現(xiàn)主動攻擊1.加密功能及其位置加密的基本模式鏈路加密端到端加密1.加密功能及其位置鏈路加密特征每個易受攻擊的通信鏈路的兩端都裝備一個加密設(shè)備,因此所有通過這些通信鍵路的通信量都是安全的。但同時需要許多加密解密設(shè)備。報文在每進(jìn)入一臺分組交換機(jī)時都必須被解密一次,因而報文在每臺交換機(jī)處容易受到攻擊。在一個公眾分組交換網(wǎng)絡(luò)中,用戶對結(jié)點(diǎn)的安全無法控制。共享一條鏈路的每對結(jié)點(diǎn)應(yīng)該共享惟一的密鑰,而每段鏈路應(yīng)該使用不同的密鑰,因此必須提供許多密鑰。然而,每個密鑰必須只分配給兩個結(jié)點(diǎn)。1.加密功能及其位置端到端加密特征加密過程是在兩個端系統(tǒng)上完成的。源主機(jī)或終端對數(shù)據(jù)進(jìn)行加密,加密形式的數(shù)據(jù)被原封不動地傳過網(wǎng)絡(luò)到達(dá)目的主機(jī)或終端。目的端與源端共享一個密鑰,因此能夠解密數(shù)據(jù)。端到端加密后用戶數(shù)據(jù)就是安全的。然而通信量模式并不安全,因?yàn)榉纸M首部是未經(jīng)加密而傳輸?shù)?。端到端加密的確提供了一定程度的認(rèn)證功能。如果兩個端系統(tǒng)共享一個加密密鑰,那么接受者可以肯定它收到的所有報文都來自聲稱的發(fā)送者,因?yàn)橹挥心莻€發(fā)送者才共享了相應(yīng)的密鑰。在鏈路加密方案中這樣的認(rèn)證功能不存在。1.加密功能及其位置鏈路加密和端到端加密的關(guān)鍵特征鏈路加密

端到端加密在端系統(tǒng)和中間系統(tǒng)中的安全性

在發(fā)送主機(jī)上報文是暴露的

在發(fā)送主機(jī)上報文是加密的

在中間結(jié)點(diǎn)上報文是暴露的

在中間結(jié)點(diǎn)上報文是加密的

用戶的作用

與發(fā)送主機(jī)交互

與發(fā)送進(jìn)程交互加密過程對用戶是透明的

用戶應(yīng)用加密主機(jī)維護(hù)加密設(shè)施

用戶必須決定算法所有用戶用一個加密設(shè)施

用戶選擇加密體制可以由硬件實(shí)現(xiàn)

軟件實(shí)現(xiàn)所有報文被加密或都不被加密

對每個報文由用戶選擇是否加密實(shí)現(xiàn)上的考慮

每對主機(jī)和中間結(jié)點(diǎn)之間和每對中間結(jié)點(diǎn)和中間結(jié)點(diǎn)之間都需要一個密鑰

每對用戶需要一個密鑰

提供主機(jī)認(rèn)證

提供用戶認(rèn)證

1.加密功能及其位置端到端加密功能的邏輯位置在鏈路加密中,加密功能是在通信層次結(jié)構(gòu)的一個低層完成的。若用OSI表示,鏈路加密處于物理層或鏈路層。在端到端加密中,加密功能的邏輯位置有好幾種可能。在最低可能的層次上,加密功能可以在網(wǎng)絡(luò)層完成。在網(wǎng)絡(luò)層加密中,獨(dú)立可辨識的被保護(hù)對象的數(shù)目就是網(wǎng)絡(luò)中端系統(tǒng)的數(shù)目。這時每個端系統(tǒng)都可以與另外一個端系統(tǒng)進(jìn)行加密的信息交換,只要它們之間共享一個秘密密鑰。與一個特定的目的端系統(tǒng)進(jìn)行通信的時候,每個端系統(tǒng)上的用戶進(jìn)程和應(yīng)用將使用同一個密鑰采用同一個加密方案。采用這種安排,我們可能希望使用某種前端處理器(通常是一個端系統(tǒng)中的通信器)來負(fù)擔(dān)加密功能。前端處理器FEP的加密功能1.加密功能及其位置端到端加密功能的邏輯位置在一個完全綜合的互聯(lián)網(wǎng)絡(luò)內(nèi)部,在諸如網(wǎng)絡(luò)層X.25或者TCP這樣的端到端協(xié)議上實(shí)施加密服務(wù),提供了對通信量的端到端保密。然而這種方案無法對越過互聯(lián)網(wǎng)絡(luò)邊界的通信量,比如電子郵件、電子數(shù)據(jù)交換EDI和文件傳輸提供所需要的服務(wù)。1.加密功能及其位置端到端加密功能的邏輯位置因此對于具有存儲轉(zhuǎn)發(fā)功能的電子郵件這樣的應(yīng)用來說,獲得端到端加密的位置只有應(yīng)用層。應(yīng)用層加密的一個缺點(diǎn)是要考慮的實(shí)體數(shù)目增加了很多。一個支持?jǐn)?shù)百個主機(jī)的網(wǎng)絡(luò)可能支持?jǐn)?shù)以千計的用戶和進(jìn)程,因而就必須產(chǎn)生和分配多得多的秘密密鑰。1.加密功能及其位置加密位置與通信分層的關(guān)系越往通信層次上邊走,得到加密的信息就越少,但是被加密的信息也就越安全。2.通信量的機(jī)密性可以從通信量分析攻擊中得到的信息類型通信雙方的身份。通信雙方通信的頻度。暗示出有重要信息正在交換的報文模式、報文長度和報文數(shù)量。特定的通信雙方之間的交談所關(guān)聯(lián)的事件。用于建立一個隱蔽信道(Covertchannel),這個信道被用于以一種違反安全規(guī)定的方式傳送信息。示例關(guān)于結(jié)點(diǎn)之間的報文長度和數(shù)量的知識可能使得敵對方可以確定通信雙方的身份。某地區(qū)通信量的增加預(yù)示著某種事件的產(chǎn)生。用比某指定長度短的信息表示0,長的表示1。2.通信量的機(jī)密性鏈路加密方式分組首部加密,減少通信量分析的機(jī)會。通信量填充,避免估算出網(wǎng)絡(luò)上的通信量并觀察到進(jìn)入和離開每個端系統(tǒng)的通信量大小。2.通信量的機(jī)密性端到端加密方式對通信量的機(jī)密性的保護(hù)措施極為有限。較為有效的方法是把所有數(shù)據(jù)單元都填充到一個統(tǒng)一的長度,空白報文隨機(jī)地插入到信息流中。一個密鑰可以由A選定,然后物理地傳遞給B。一個第三方可以選定密鑰,然后物理地傳遞給A和B。如果A和B在不久以前使用過一個密鑰,一方可以使用舊密鑰加密新密鑰并傳輸給另一方。如果A和B每人都有一個到第三方C的加密連接,C就可以用加密連接把密鑰傳遞給A和B。兩個用戶之間的密鑰分配模式3.密鑰分配密鑰分配模式1和2的可行性物理地傳遞密鑰在實(shí)際應(yīng)用中不太現(xiàn)實(shí),特別是對于大系統(tǒng)更是如此。3.密鑰分配密鑰分配模式1和2的可行性示例:對于具有N個節(jié)點(diǎn)的端到端加密通信,所需的密鑰數(shù)目為:[N(N-1)]/2≈N2/2如果N=1000,則密鑰數(shù)目約為50萬。如果這個網(wǎng)絡(luò)要支持1萬種應(yīng)用,則密鑰數(shù)目約為5000萬。3.密鑰分配密鑰分配模式3的可行性密鑰的初始分配如何實(shí)現(xiàn)。如果一個攻擊者曾經(jīng)成功地獲得了一個密鑰,那么所有后續(xù)的密鑰就都會暴露。密鑰分配模式4的可行性對于端到端加密來說,模式4的某些變體獲得了廣泛應(yīng)用。在這個方案中,一個密鑰分配中心負(fù)責(zé)按照需要分配密鑰給各對用戶(主機(jī)、進(jìn)程、應(yīng)用)。每個用戶必須與密鑰分配中心共享一個惟一的密鑰,以便進(jìn)行密鑰分配。3.密鑰分配密鑰分配模式4的基本應(yīng)用方案采用可信任的密鑰分配中心。使用以等級結(jié)構(gòu)排列的密鑰,至少要用到兩個層次的密鑰(主密鑰和會話密鑰)。每一個端系統(tǒng)或用戶都與密鑰分配中心共享一個惟一的主密鑰。端系統(tǒng)之間的通信使用一個臨時性的密鑰(會話密鑰)進(jìn)行加密,用完就丟棄這個密鑰。會話密鑰是通過用于端用戶通信的同一個網(wǎng)絡(luò)設(shè)施從密鑰分配中心取得的,因此,會話密鑰是以加密的形式傳輸?shù)?,使用的密鑰則是由密鑰分配中心和端系統(tǒng)或用戶所共享的主密鑰。對于N個實(shí)體,所需的主密鑰為N個。3.密鑰分配密鑰分配模式4的基本應(yīng)用方案3.密鑰分配一個可行的密鑰分配方案3.密鑰分配一個可行的密鑰分配方案實(shí)施步驟1.A向KDC發(fā)出請求,要求得到一個用來保護(hù)它與B之間邏輯連接的會話密鑰。這個報文包括A和B的標(biāo)識以及一個對于這次交互而言的惟一的標(biāo)識符N1,我們把這個標(biāo)識符稱為一個“現(xiàn)時”(nonce)。2.KDC用一個經(jīng)過Ka加密的報文作為響應(yīng)。因而A是惟一可以成功收到這個報文的實(shí)體,而且A知道這個報文來自KDC。這個報文包含給A的兩項(xiàng)內(nèi)容:用于會話的一次性會話密鑰KS。原來的請求報文,包括現(xiàn)時,以便使得A能夠?qū)⑦@個響應(yīng)與相應(yīng)的請求進(jìn)行匹配。(不匹配呢?)另外,這個報文還包括給B的兩項(xiàng)內(nèi)容:用于會話的一次性會話密鑰KS

。A的標(biāo)識符(例如它的網(wǎng)絡(luò)地址)IDA。后兩項(xiàng)內(nèi)容是用Kb(KDC與B共享的主密鑰)進(jìn)行加密的,它們被發(fā)送到B來建立連接并證明A的身份。3.密鑰分配一個可行的密鑰分配方案實(shí)施步驟3.A把會話密鑰存放起來以便用于后續(xù)的會話,并將

KDC發(fā)送給B的信息即EKb[Ks||IDA]轉(zhuǎn)發(fā)給B。因?yàn)檫@個信息是用Kb加密的,它對竊聽有了防護(hù)。B現(xiàn)在知道了會話密鑰(Ks)。知道了通信的另一方是A(從IDA得知),并且知道了信息是從KDC發(fā)出的(因?yàn)樗怯肊Kb加密的)。以下兩個步驟是為認(rèn)證而添加的:4.B使用為加密新生成的會話密鑰發(fā)送一個現(xiàn)時N2給A。5.

A也使用Ks響應(yīng)一個f(N2),其中f是一個對N2進(jìn)行某種變換的函數(shù)(例如加1)。密鑰分配過程只涉及步驟上到3,而步驟4和5以及3完成的是認(rèn)證功能。3.密鑰分配層次式密鑰控制把密鑰分配功能限制到一個KDC是不必要的。對于一個大的網(wǎng)絡(luò)來說,這樣的安排也是不現(xiàn)實(shí)的。系統(tǒng)可以建立一系列的KDC,各個KDC之間存在層次關(guān)系。例如可以有本地KDC,其中的每一個只負(fù)責(zé)整個網(wǎng)絡(luò)的一個小區(qū)域,諸如一個局域網(wǎng)或者一棟建筑。對于同一個區(qū)域中兩個實(shí)體之間的通信來說,本地KDC負(fù)責(zé)密鑰分配。如果不同區(qū)域中的兩個實(shí)體需要一個共享的密鑰,那么對應(yīng)的本地KDC就通過全局進(jìn)行通信。在這種情況下三個所涉及到的KDC都可以選擇密鑰。層次式的概念可以推廣到三層甚至更多的層次,這依賴于用戶群的大小和互聯(lián)網(wǎng)絡(luò)的地理分布。層次方案使得主密鑰分配所涉及的工作量減至最小,因?yàn)榇蟛糠值闹髅荑€都是由一個本地的KDC和它的本地實(shí)體共享的。另外這樣的方案還將一個出錯或受到破壞的KDC的危害限制在它的本地區(qū)域。3.密鑰分配會話密鑰的生命期會話密鑰更換得越頻繁,它們就越安全,因?yàn)閿硨Ψ綄τ谌魏我粋€給定的會話密鑰擁有的可利用密文就越少。另一方面,會話密鑰的分配過程造成信息交互的延時,并且對網(wǎng)絡(luò)容量造成負(fù)擔(dān)。一個安全管理者必須對這些矛盾的因素進(jìn)行權(quán)衡,以確定一個特定的會話密鑰的使用壽命。對于面向連接的協(xié)議來說,一個明顯的選擇是在一個連接打開的持續(xù)時間內(nèi)使用同一個會話密鑰,而對每個新的會話則使用新的會話密鑰。如果一個邏輯連接持續(xù)時間很長,那么定期更換會話密鑰是明智的,更新的時間可以是每次PDU(協(xié)議數(shù)據(jù)單元)的序號環(huán)回的時間。對于一個無連接的協(xié)議,比如一個面向交易的協(xié)議,不存在一個明確的連接發(fā)起和終止時刻,因而要多長時間更換一次會話密鑰并不是顯而易見的。最安全的方式是對每個交互使用一個新的會話密鑰。然而,這將減少無連接協(xié)議的主要優(yōu)點(diǎn),即對每個交互來說最小的開銷和延時。一個更好的策略是,在每個固定的時間段或者對于一定數(shù)量的交互數(shù)量使用一個給定的會話密鑰。3.密鑰分配一種透明的密鑰控制方案3.密鑰分配一種透明的密鑰控制方案步驟:當(dāng)一個主機(jī)希望與另一個主機(jī)建立一個連接時,它就傳輸一個連接請求分組(步驟1)。前端處理器存下這個分組,并向KDC申請建立這個連接的許可(步驟2)。FEP與KDC之間的通信使用僅由FEP和KDC共享的一個主密鑰加密。如果KDC同意連接請求,它就產(chǎn)生會話密鑰,并且傳遞給兩個相應(yīng)的前端處理器,對每個前端處理器都使用惟一的臨時密鑰(步驟3)。請求方的前端處理器現(xiàn)在就可以把連接請求分組發(fā)送出來,在兩個端系統(tǒng)之間就建立了一個連接(步驟4)。兩個端系統(tǒng)之間的所有用戶數(shù)據(jù)交換都由它們分別的前端處理器使用一次性會話密鑰進(jìn)行加密。優(yōu)點(diǎn):它對端系統(tǒng)的影響最小。從主機(jī)的角度看,F(xiàn)EP就好像是一個分組交換結(jié)點(diǎn),對網(wǎng)絡(luò)的主機(jī)接口不用改變。從網(wǎng)絡(luò)的角度看,F(xiàn)EP就好像是一個主機(jī),對主機(jī)的分組交換接口不用改變。3.密鑰分配分散式密鑰控制使用一個密鑰分配中心對我們就提出了如下要求:KDC是可信任的并且應(yīng)該保護(hù)它免于被破壞。如果密鑰分配完全分散化,則這個要求就可以免掉。雖然對于較大的網(wǎng)絡(luò)來說只用常規(guī)加密實(shí)現(xiàn)完全的分散化是不實(shí)用的,但在一個局部范圍實(shí)現(xiàn)分散化還是有用的。一種分散化的方式是要求每個端系統(tǒng)能夠與所有潛在的伙伴以安全的方式為了會話密鑰分配的目的進(jìn)行通信。因而對于一個有n個端系統(tǒng)的配置就可能需要多達(dá)[n(n-1)]/2個主密鑰。3.密鑰分配分散式密鑰控制A給B發(fā)出一個要求會話密鑰的請求,并包括一個現(xiàn)時Nl。B使用一個采用共享的主密鑰加密的報文進(jìn)行響應(yīng)。響應(yīng)報文包括由B選擇的會話密鑰、B的一個標(biāo)識符、f(Nl)的值和另一個現(xiàn)時N2。使用一個新的會話密鑰,A將f(N2)返回給B。因而雖然每個結(jié)點(diǎn)必須保存最多(n-1)個主密鑰,但是需要多少會話密鑰就可以產(chǎn)生多少。因?yàn)槭褂弥髅荑€傳輸?shù)膱笪暮芏?,所以密碼分析很困難。和以前一樣,為了保護(hù)會話密鑰,它們只被使用一段有限的時間。3.密鑰分配密鑰的使用方法密鑰層次結(jié)構(gòu)的概念和自動密鑰分配技術(shù)的使用極大地減少了必須由人工方式管理和分配的密鑰的數(shù)量。對于自動分配的密鑰的使用方式施加某些限制也可能是必要的,例如,除了區(qū)分主密鑰和會話密鑰,我們也可能希望根據(jù)用途定義不同類型的密鑰,比如:數(shù)據(jù)加密密鑰,用來在網(wǎng)絡(luò)上進(jìn)行一般的通信。PIN加密密鑰,用于電子資金轉(zhuǎn)賬和銷售點(diǎn)應(yīng)用的個人身份號碼PIN。文件加密密鑰,用來加密存放在公眾可存取地點(diǎn)的文件。為了說明按照用途區(qū)分密鑰的價值,考慮一個主密鑰被當(dāng)作數(shù)據(jù)加密密鑰置入一個設(shè)備的危險。正常情況下,主密鑰被以物理方式保護(hù)在密鑰分配中心和端系統(tǒng)的密碼加密硬件中。用這個主密鑰加密后的會話密鑰與用這樣的會話密鑰加密的數(shù)據(jù)一樣,對于各種應(yīng)用程序都是可以得到的。然而,如果一個主密鑰被當(dāng)成一個會話密鑰,那么一個未經(jīng)授權(quán)的應(yīng)用程序就可能獲取用這個主密鑰加密的那些會話密鑰的明文形式。3.密鑰分配控制密鑰的使用方式方案1對于DES密鑰,給每個密鑰關(guān)聯(lián)一個標(biāo)記,這些標(biāo)記存放在DES密鑰的每個64bit密鑰中的額外8比特中,即用通常留做奇偶校驗(yàn)的8個非密鑰比特形成了密鑰標(biāo)記:一個比特指示這個密鑰是會話密鑰還是主密鑰。一個比特指示這個密鑰是否可用于加密。一個比特指示這個密鑰是否可用于解密。其余比特留待將來使用。優(yōu)點(diǎn):因?yàn)檫@個標(biāo)記被嵌入密鑰之中,在這個密鑰被分配時它隨著被加密,因此受到了保護(hù)。缺點(diǎn):(1)標(biāo)記長度限于8比特,限制了它的靈活性和功能;(2)因?yàn)檫@個標(biāo)記并不是以明文形式傳輸?shù)?,它只能用在解密的地方,這就使得可以用來控制密鑰使用的方法很有限。3.密鑰分配控制密鑰的使用方式方案2每個會話密鑰都有一個由許多字段組成的相關(guān)的控制向量,各個字段規(guī)定這個密鑰的用途和限制。控制向量的長度可以變化。在KDC處產(chǎn)生密鑰的時候控制向量就與密鑰以加密的方式耦合在一起??刂葡蛄颗c密鑰的耦合以及去耦的過程如下:3.密鑰分配控制密鑰的使用方式方案21.控制向量被通過一個散列函數(shù)產(chǎn)生一個長度等于加密密鑰長度的輸出。2.散列值然后被與主密鑰進(jìn)行異或以產(chǎn)生一個輸出,這個輸出被用作加密會話密鑰的密鑰輸入。散列值=H=h(CV)密鑰輸入=Km⊕H密文=EKm⊕H[Ks]3.會話密鑰通過相反的操作恢復(fù)成明文。Ks=DKm⊕H[EKm⊕H[Ks]]當(dāng)一個會話密鑰被從KDC傳遞給一個用戶時,和它一起傳遞的還有一個明文形式的控制向量。會話密鑰只能通過使用用戶和KDC共享的主密鑰和控制向量來恢復(fù),因而會話密鑰和它的控制向量之間的聯(lián)系得到了保持。使用控制向量與使用一個8bit的標(biāo)記相比有兩個好處。首先,對控制向量的長度沒有限制,這就可以使我們對密鑰的使用施加任意復(fù)雜的控制。第二,在所有操作階段控制向量都是以明文方式存在的,因而對密鑰使用的控制可以在多個位置進(jìn)行。4.隨機(jī)數(shù)產(chǎn)生隨機(jī)數(shù)的用途示例:在相互認(rèn)證方案,要用到現(xiàn)時進(jìn)行握手以便防止重放攻擊。使用隨機(jī)數(shù)充當(dāng)現(xiàn)時會挫敗敵對方確定或猜測現(xiàn)時的努力。會話密鑰的產(chǎn)生,這可能是由密鑰分配中心進(jìn)行的,也可能是由參與者一方進(jìn)行的。RSA公開密鑰加密算法中的密鑰產(chǎn)生。隨機(jī)數(shù)的評定隨機(jī)程度均勻分布:這一系列數(shù)值的分布應(yīng)該是均勻的;也就是說,每個數(shù)出現(xiàn)的頻率應(yīng)該近似相等。(好評定)獨(dú)立性:系列中的任意一個數(shù)都無法從其他數(shù)推測得到。(難評定)不可預(yù)測程度保證敵對方從序列前邊的元素?zé)o法預(yù)測出將來的元素。4.隨機(jī)數(shù)產(chǎn)生隨機(jī)數(shù)的來源真正的隨機(jī)數(shù)的來源難以得到。物理的噪聲發(fā)生器,比如離子輻射事件的脈沖檢測器、氣體放電管和帶泄露的電容,是一個可能的來源。然而這些設(shè)備在網(wǎng)絡(luò)安全應(yīng)用中用處很小。這種數(shù)值的隨機(jī)性和精確性都有問題,更不用說對于一個互聯(lián)網(wǎng)絡(luò)中的每個系統(tǒng)都附加這么一個設(shè)備本身也很不方便。找到已經(jīng)發(fā)表的高質(zhì)量的隨機(jī)數(shù),然而這些隨機(jī)數(shù)對于一個有相當(dāng)規(guī)模的網(wǎng)絡(luò)安全應(yīng)用的可能需要來說數(shù)量有限。另外,雖然這些書中的數(shù)確實(shí)有著統(tǒng)計上的隨機(jī)性,它們卻是可以預(yù)測的,因?yàn)閿硨Ψ街懒四阌玫氖悄谋緯部梢缘玫揭槐?。密碼編碼應(yīng)用通常使用算法技術(shù)來產(chǎn)生隨機(jī)數(shù)。這些算法是確定性的,因此產(chǎn)生的數(shù)值序列并不是統(tǒng)計隨機(jī)的。然而,如果算法很好,所得的序列就可以通得過許多隨機(jī)性的合理測試。這些數(shù)經(jīng)常被稱為偽隨機(jī)數(shù)。4.隨機(jī)數(shù)產(chǎn)生目前評價一個隨機(jī)數(shù)產(chǎn)生器的三種準(zhǔn)則T1:這個函數(shù)應(yīng)該是一個完整周期的產(chǎn)生函數(shù)。也就是說,這個函數(shù)應(yīng)該在重復(fù)之前產(chǎn)生出0到m之間的所有數(shù)。T2:產(chǎn)生的序列應(yīng)該看起來是隨機(jī)的。這個序列本身不是隨機(jī)的,因?yàn)樗且源_定性的方法產(chǎn)生的,但是有許多統(tǒng)計測驗(yàn)可以用來評價一個序列具有的隨機(jī)程度。T3:這個函數(shù)應(yīng)該用32bit運(yùn)算器高效實(shí)現(xiàn)。4.隨機(jī)數(shù)產(chǎn)生線性同余方法偽隨機(jī)數(shù)產(chǎn)生器隨機(jī)數(shù)序列[Xn]通過下列迭代方程得到:Xn+1=(aXn+c)modm其中:

m:模數(shù),m>0

a:乘數(shù),0≤a<m

c:增量,0≤c<mX0:初始值或種子,0≤X0<m如果m、a、c和X0都是整數(shù),那么這個技術(shù)就將產(chǎn)生一系列的整數(shù),其中每個都在0≤Xn<m的范圍內(nèi)。數(shù)值m、a、c的選擇對于做出一個好的隨機(jī)數(shù)產(chǎn)生器十分關(guān)鍵。例如考慮a=c=1,這樣產(chǎn)生的序列明顯不能令人滿意。再考慮a=7,c=0,m=32和X0=1,這將產(chǎn)生出序列{7,17,23,1,7,等等},它也明顯不能令人滿意。在所有可能的32個值中,這個序列才用了4個,因而這個序列被稱為具有周期4。如果將a的值改為5,那么序列變?yōu)閧1,5,25,29,17,21,9,13,1,等等},在這里周期增加為8。我們希望m很大,以便可能產(chǎn)生出一個很長序列的不同的隨機(jī)數(shù)。一個常用的準(zhǔn)則是將m選為幾乎等于一個給定計算機(jī)所能表示的最大非負(fù)整數(shù)。因而,通常選擇的m值是一個接近或等于231的數(shù)。4.隨機(jī)數(shù)產(chǎn)生線性同余方法偽隨機(jī)數(shù)產(chǎn)生器只要對a,c和m選取適當(dāng)?shù)闹?,算法就可以通過評價一個隨機(jī)數(shù)產(chǎn)生器的三種準(zhǔn)則的測驗(yàn)。對于T1這個準(zhǔn)則,可以證明如果m是素數(shù)而c=0,那么對于一定的a值,這個產(chǎn)生函數(shù)的周期就是m-1,只有數(shù)值0不在其中。對于32bit算術(shù)來說,m的一個方便的素數(shù)取值是231-1。因而產(chǎn)生函數(shù)就可以寫為:Xn+1=(aXn)mod(231-1)在乘數(shù)a的超過20億的可選數(shù)值中,只有不多的幾個可以通過所有三個測驗(yàn)。其中的一個是a=75=16807,這個數(shù)值最初被設(shè)計用于IBM360系列計算機(jī)。這個產(chǎn)生器得到了廣泛使用,并且它受到的測驗(yàn)比其他任何偽隨機(jī)數(shù)產(chǎn)生器都徹底,它經(jīng)常被推薦用于統(tǒng)計以及模擬工作。4.隨機(jī)數(shù)產(chǎn)生線性同余方法偽隨機(jī)數(shù)產(chǎn)生器線性同余算法的優(yōu)點(diǎn)是,如果對于乘數(shù)和模數(shù)進(jìn)行適當(dāng)?shù)倪x擇,得到的數(shù)值序列從統(tǒng)計上看與從集合1,2,…,m-1中隨機(jī)抽?。ǖ恢匦路呕兀┑臄?shù)值序列是無法分辨的。但是除了對于初值X0的選取之外,這個算法本身并沒有什么隨機(jī)之處。一旦選定了這個數(shù)值,序列中的其他數(shù)值就是確定性地出現(xiàn)的,這對于密碼分析有著重要的意義。如果敵對方知道我們用的是線性同余算法,并且參數(shù)是已知的(例如a=75、c=0、m=231-1),那么一旦發(fā)現(xiàn)了一個數(shù)值,所有接著的數(shù)值就都知道了。即使如果敵對方只知道我們使用了線性同余算法,那么只要知道序列的一個小部分就足以確定算法的參數(shù)。假定敵對方能夠確定數(shù)值X0、X1、X2和X3,那么:X1=(aX0+c)modmX2=(aX1+c)modmX3=(aX2+c)modm這些方程可以解出a、c和m。因而雖然能夠使用一個好的偽隨機(jī)數(shù)產(chǎn)生器已經(jīng)很不錯,但仍然需要使得實(shí)際的序列不可重新產(chǎn)生,以便敵對方即使知道序列的一部分也不足以確定序列將來的元素。這個目標(biāo)可以用許多方法達(dá)到,例如,有人建議使用一個內(nèi)部系統(tǒng)時鐘修改隨機(jī)數(shù)流。使用這個時鐘的一種方法是使用目前的時鐘(模m)作為新的種子重新啟動序列,另一種方法是簡單地將目前的時鐘值和每個隨機(jī)數(shù)相加(模m)。4.隨機(jī)數(shù)產(chǎn)生密碼編碼方式產(chǎn)生的隨機(jī)數(shù)方法1——循環(huán)加密一個具有周期N的計數(shù)器為加密邏輯提供輸入。例如,如果要產(chǎn)生56bit的DES密鑰,就可以用一個周期為256的計數(shù)器。每產(chǎn)生一個密鑰,計數(shù)器就加1。因而,由這個方案產(chǎn)生的偽隨機(jī)數(shù)經(jīng)過一個周期就重復(fù)了:每個輸出X0、X1,…,XN-1都基于一個不同的計數(shù)器值,因此X0≠X1≠…≠XN-1。因?yàn)橹髅荑€是受到保護(hù)的,從一個或多個以前的密鑰推導(dǎo)出以后的密鑰從計算角度看是不可行的。為了進(jìn)一步加強(qiáng)這個算法,可以把一個具有完整周期的偽隨機(jī)數(shù)產(chǎn)生器的輸出作為這個算法的輸入,而不是只用一個計數(shù)器。4.隨機(jī)數(shù)產(chǎn)生密碼編碼方式產(chǎn)生的隨機(jī)數(shù)方法2——DES輸出反饋方式DES的輸出反饋方式OFB不僅可以用來進(jìn)行流加密,還可以用來產(chǎn)生密鑰。注意它的每個操作階段的輸出都是一個64bit的數(shù)值,其中j個最左邊的比特被反饋回來進(jìn)行加密。連續(xù)的64bit輸出就組成了一個具有良好統(tǒng)計特性的偽隨機(jī)數(shù)序列。另外,與上一個小節(jié)提出的方式類似,使用一個受到保護(hù)的主密鑰也保護(hù)了產(chǎn)生出來的會話密鑰。4.隨機(jī)數(shù)產(chǎn)生密碼編碼方式產(chǎn)生的隨機(jī)數(shù)方法3——AN

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論