BIT2密碼理論與應用_第1頁
BIT2密碼理論與應用_第2頁
BIT2密碼理論與應用_第3頁
BIT2密碼理論與應用_第4頁
BIT2密碼理論與應用_第5頁
已閱讀5頁,還剩126頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

密碼理論與應用孫建偉計算機網絡攻防對抗實驗室北京理工大學提綱密碼技術概述對稱機密體制與算法公鑰密碼體制與算法數字摘要算法數字簽名與完整性保護數字證書與PKI體系密碼學概述我們需要哪些安全機制?認證完整性機密性密碼學是安全通信的基礎對稱加密非對稱加密哈希函數(Hash)密碼學的發展歷史(1)自人類社會出現戰爭便產生了密碼

Phaistos圓盤,一種直徑約為160mm的Cretan-Mnoan粘土圓盤,始于公元前17世紀。表面有明顯字間空格的字母,至今還沒有破解。JuliusCaesar發明了凱撒密碼密碼學的發展歷史(2)1834年,倫敦大學的實驗物理學教授惠斯頓發明了電機,這是通信向機械化、電氣化躍進的開始,也為密碼通信采用在線加密技術提供了前提條件。1920年,美國電報電話公司的弗納姆發明了弗納姆密碼。其原理是利用電傳打字機的五單位碼與密鑰字母進行模2相加。密碼學的發展歷史(3)兩次世界大戰大大促進了密碼學的發展。二戰中美國陸軍和海軍使用的條形密碼設備M-138-T4。根據1914年ParkerHitt的提議而設計。25個可選取的紙條按照預先編排的順序編號和使用,主要用于低級的軍事通信。Kryha密碼機大約在1926年由AlexandervoKryha發明。這是一個多表加密設備,密鑰長度為442,周期固定。一個由數量不等的齒的輪子引導密文輪不規則運動。密碼學的發展歷史(4)兩次世界大戰大大促進了密碼學的發展。轉輪密碼機ENIGMA,由ArthurScherbius于1919年發明,面板前有燈泡和插接板;4輪ENIGMA在1942年裝備德國海軍,英國從1942年2月到12月都沒能解讀德國潛艇的信號。英國的TYPEX打字密碼機,是德國3輪ENIGMA的改進型密碼機。它在英國通信中使用廣泛,且在破譯密鑰后幫助破解德國信號。密碼學的發展歷史(5)1949年香農發表了一篇題為《保密系統的通信理論》的著名論文,該文首先將信息論引入了密碼,從而把已有數千年歷史的密碼學推向了科學的軌道,奠定了密碼學的理論基礎。1976年,美國密碼學家W.Diffie和M.Hellman在一篇題為《密碼學的新方向》一文中提出了一個嶄新的思想,不僅加密算法本身可以公開,甚至加密用的密鑰也可以公開。1977年美國國家標準局頒布了數據加密標準DES2001年11月26日,正式頒布AES為美國國家標準。

密碼學基本概念明文:需要秘密傳送的消息。密文:明文經過密碼變換后的消息。加密:由明文到密文的變換。解密:從密文恢復出明文的過程。破譯:非法接收者試圖從密文分析出明文的過程。加密算法:對明文進行加密時采用的一組規則。解密算法:對密文進行解密時采用的一組規則。密鑰:加密和解密時使用的一組秘密信息。一個密碼系統,通常簡稱為密碼體制,由5部分組成:明文空間M全體明文的集合密文空間C全體密文的集合密鑰空間K全體密鑰的集合加密算法E一組由M到C的加密變換解密算法D一組由C到M的解密變換密碼體制基本組成信息加密傳輸的過程加密:C=E(M,Ke)MCEKeCMKdD解密:M=D(C,Kd)M------明文C------密文Ke-----加密密鑰Kd-----解密密鑰E-------加密算法D------解密算法密碼系統的分類根據密鑰的使用方式分類對稱密碼體制(秘密鑰密碼體制)用于加密數據的密鑰和用于解密數據的密鑰相同,或者二者之間存在著某種明確的數學關系。加密:EK(M)=C解密:DK(C)=M非對稱密碼體制(公鑰密碼體制)用于加密的密鑰與用于解密的密鑰是不同的,而且從加密的密鑰無法推導出解密的密鑰。用公鑰KP對明文加密可表示為:EKP(M)=C用相應的私鑰KS對密文解密可表示為:DKS(C)=M密碼系統的分類根據明文和密文的處理方式分類分組密碼體制(BlockCipher)

設M為明文,分組密碼將M劃分為一系列明文塊Mi,通常每塊包含若干字符,并且對每一塊Mi都用同一個密鑰Ke進行加密。M=(M1,M2,…,Mn),C=(C1,C2,

…,Cn,),其中Ci=E(Mi,Ke),i=1,2…,n。序列密碼體制(StreamCipher)將明文和密鑰都劃分為位(bit)或字符的序列,并且對明文序列中的每一位或字符都用密鑰序列中對應的分量來加密。M=(M1,M2,…,Mn),Ke=(ke1,ke2,…,ken),C=(C1,C2,…,Cn),其中Ci=E(mi,kei),i=1,2,…,n。經典密碼學經典密碼(古典密碼)對于今天來說,是極不安全的,是極易破解的,但其基本方法仍然是近、現代密碼學的基礎。經典密碼運用的兩種基本技術:代換法:將明文字母替換成其他字母、數字或符號置換法:明文的字母保持相同,但順序被打亂代換技術代換法,是將明文字母替換成其他字母、數字或符號的方法。Caesar密碼(已知的最早的代換密碼)例如:明晨五點發動反攻明文:MINGCHENWUDIANFADONGFANGONG密文:PLQJFKHQZXGLDQIDGRQJIDQJRQJCaesar密碼如果讓每個字母等價于一個數值:a=0,b=1,…,z=25則加密公式為:

C=E(p)=(p+3)mod26更一般地:

C=E(p)=(p+k)mod26解密:p=D(C)=(C-k)mod26用窮舉分析可輕松破解Caesar密碼通常,加密和解密算法是已知的。需測試的密鑰只有25個。明文所用的語言是已知的,其意義易于識別。因此,為了提高窮舉分析的難度,密鑰空間必須很大。例如3-DES算法的密鑰長度為168位,密鑰空間為2168。單表代換密碼使用一個密文字母表,并且用密文字母表中的一個字母來代替一個明文字母表中的一個字母。例如,明文a用c來代換,b用剩下的25個字母中隨機的一個來代換,c用剩下的24個字母中隨機的一個來代換,……,以此類推。這樣,密鑰空間為26!,約4*1026種可能的密鑰。最簡單的多表代換密碼---Vigenère

維吉尼亞密碼選擇一個詞組作為密鑰,密鑰中每個字母用來確定一個代換表,每個密鑰字母用來加密一個明文字母。例如密鑰字母為a,明文字母為c,則密文字母為0+2(mod26)=2,也就是c。直到所有的密鑰字母用完,后再從頭開始,使用第一個密鑰字母加密。也就是說,密鑰循環使用。一個例子明文為attackbeginsatfive,密鑰為cipher,

attackbeginsatfive明文+cipherciphercipher密鑰

----------------------------------------------

=cbihgbdmvprjcbupzv密文去除空格后為cbihgbdmvprjcbupzv維吉尼亞密碼的密鑰維吉尼亞密碼的密鑰即字符串密鑰空間: 字符串長度為M密鑰空間:26M置換技術在置換密碼中,明文的字母保持相同,但順序被打亂了。在簡單的縱行換位密碼中,明文以固定的寬度水平地寫在一張圖表紙上,密文按垂直方向讀出,解密就是將密文按相同的寬度垂直地寫在圖表紙上,然后水平地讀出明文。Plaintext:COMPUTERGRAPHICSMAYBESLOWBUTATLEASTITSEXPENSIVECOMPUTERGRAPHICSMAYBESLOWBUTATLEASTITSEXPENSIVECiphertext:CAELPOPSEEMHLANPIOSSUCWTITSBIVEMUTERATSGYAERBTX

這種簡單的技巧對于密碼分析者來說是微不足道的。可在置換前,把列的次序打亂,列的次序就是算法的密鑰。置換技術的密鑰設列的數量為N密鑰空間:N!代換技術與置換技術通常結合使用。一般地,可先利用代換技術加密,再用置換技術將密文再次加密。這是現代密碼學的對稱加密方法的基礎轉輪機---經典密碼的機械階段20世紀20年代,隨著機械和機電技術的成熟,以及電報和無線電需求的出現,引起了密碼設備方面的一場革命——發明了轉輪密碼機(簡稱轉輪機,Rotor),轉輪機的出現是密碼學發展的重要標志之一。美國人EdwardHebern認識到:通過硬件卷繞實現從轉輪機的一邊到另一邊的單字母代替,然后將多個這樣的轉輪機連接起來,就可以實現幾乎任何復雜度的多個字母代替。轉輪機由一個鍵盤和一系列轉輪組成,每個轉輪是26個字母的任意組合。轉輪被齒輪連接起來,當一個轉輪轉動時,可以將一個字母轉換成另一個字母。照此傳遞下去,當最后一個轉輪處理完畢時,就可以得到加密后的字母。為了使轉輪密碼更安全,人們還把幾種轉輪和移動齒輪結合起來,所有轉輪以不同的速度轉動,并且通過調整轉輪上字母的位置和速度為破譯設置更大的障礙。轉輪機的工作原理每一個旋轉輪代表一個單表代換系統,旋轉一個引腳,再轉變為另一個單表代換系統。為使機器更安全,可把幾種轉輪和移動的齒輪結合起來。因為所有轉輪以不同的速度移動,n個轉輪的機器的周期是26n,即個單表代換系統。最后一個轉輪轉完一圈之后,它前面的轉輪就旋轉一個引腳,有點像時鐘的齒輪。轉輪機的經典---ENIGMA1918年,德國發明家ArthurScherbius用二十世紀的電氣技術來取代已經過時的鉛筆加紙的加密方法。他研究的結果就是永遠被尊為經典的ENIGMA。ENIGMA首先是作為商用加密機器得到應用的。它的專利在1918年在美國得到確認。售價大約相當于現在的30000美元。二、對稱密碼體制與算法對稱密碼學概述分組密碼數據加密標準(DES)流密碼對稱密碼學概述

加密:EK(M)=C

解密:DK(C)=M

等效于DK(EK(M))=M數學變換函數密鑰K明文密文數學變換函數密鑰K明文密文對稱密碼學概述網絡信息M對稱密碼算法密鑰K密文C用戶A對稱密碼算法密文C用戶B信息M密鑰K對稱密碼學分類

塊密碼(分組密碼)

一次若干位一組地對明文進行操作和運算

流密碼(序列密碼)

每次一位地對明文進行操作和運算

工作方式

將明文分成固定長度的組(塊),如64bit一組,用同一密鑰和算法對每一快加密,輸出也是固定長度的密文。

主要算法

DES、3DES、IDEA、RC2、AES等。分組密碼數據加密標準(DES)概述數據加密標準(DataEncryptionStandard),已經有20多年的歷史;DES是一種對稱密碼算法,1976年11月23日DES被采納為美國國家標準;DES是第一個得到廣泛應用的密碼算法;DES是一種分組加密算法,輸入的明文為64位,密鑰為56位,生成的密文為64位;DES已經過時,基本上認為不再安全。數據加密標準(DES)算法

該算法分三個階段實現

1.給定明文X,通過一個固定的初始置換IP來排列X中的位,得到X0。

X0=IP(X)=L0R0

其中L0由X0前32位組成,R0由X0的后32位組成。

2.計算函數F的16次迭代,根據下述規則來計算LiRi(1<=i<=16)

Li=Ri-1,Ri=Li-1

F(Ri-1,Ki)

其中Ki是長為48位的子密鑰。子密鑰K1,K2,…,K16是作為密鑰K(56位)的函數而計算出的。

3.對比特串R16L16使用逆置換IP-1得到密文Y。

Y=IP-1(R16L16)左半邊的處理過程可以分三個部分:(1)64位明文經過初始置換被重新排列,然后分左右兩半,每半各32位;(2)左右兩半經過16輪置換和代換迭代,即16次實施相同的變換。然后再左右兩半互換;(3)互換后的左右兩半合并,再經過逆初始置換輸出64位密文。右半部則由56位密鑰,產生16個48位子密鑰,分別供左半邊的16輪迭代加密使用數據加密標準(DES)算法圖示數據加密標準(DES)數據加密標準(DES)

F函數說明

F(Ri-1,Ki)函數F以長度為32的比特串A=R(32bits)作第一個輸入,以長度為48的比特串變元J=K(48bits)作為第二個輸入。產生的輸出為長度為32的位串。

(1)對第一個變元A,由給定的擴展函數E,將其擴展成48位串E(A);

(2)計算E(A)+J,并把結果寫成連續的8個6位串,B=b1b2b3b4b5b6b7b8;

(3)使用8個S盒,每個Sj是一個固定的416矩陣,它的元素取0~15的整數。給定長度為6個比特串,如Bj=b1b2b3b4b5b6,計算Sj(Bj)如下:b1b6兩個比特確定了Sj的行數,r(0<=r<=3);而b2b3b4b5四個比特確定了Sj的列數c(0<=c<=15)。最后Sj(Bj)的值為S-盒矩陣Sj中r行c列的元素(r,c),得Cj=Sj(Bj); (4)最后,進行固定置換P。

加密函數F的計算過程

S盒

在加密函數計算過程中使用了8個S盒S盒是DES保密性的關鍵所在S盒是一種非線性變換,也是DES中唯一的非線性運算S盒有6位輸入,4位輸出48位數據經過8個S盒后輸出32位數據每個S盒都由4行(表示為0,1,2,3)和16列(0,1,…,15)組成每行都是全部的16個長為4比特串的一個全排列每個比特串用它對應的二進制整數表示,如1001用9表示。對每個S盒,將6位輸入的第一位和最后一位組成一個二進制數,用于選擇S盒中的一行。用中間的4位選擇S盒16列中的某一列,行列交叉處的十進制數轉換為二進制數可得到4位輸出。例如對于S1盒而言,如果輸入為011001,則行是01(十進制1,即S盒的第2行),列1100(12,即S盒的第13列),該處的值是9,轉換為二進制數為1001,即為該S盒的輸出DES密鑰產生過程

(1)給定64位的密鑰K,放棄奇偶校驗位(8,16,…,64)并根據固定置換PC1來排列K中剩下的位。我們寫 PC1(K)=C0D0

其中C0由PC1(K)的前28位組成;D0由后28位組成;

(2)對1<=i<=16,計算

Ci=LSi(Ci-1)

Di=LSi(Di-1)

LSi表示循環左移2或1個位置,取決于i的的值。i=1,2,9和16時移1個位置,否則移2位置;

(3)Ki=PC2(CiDi),PC2為固定置換。DES密鑰產生圖示數據加密標準(DES)

DES加密的一個例子

*取16進制明文X:0123456789ABCDEF

*取密鑰K為:133457799BBCDFF1

*去掉奇偶校驗位以二進制形式表示的密鑰是00010010011010010101101111001001101101111011011111111000

*應用初始置換IP,我們得到:

L0=11001100000000001100110011111111

L1=R0=11110000101010101111000010101010

*然后進行16輪加密。

*最后對L16,R16使用IP-1得到密文: 85E813540F0AB405DES解密

DES解密過程與加密過程本質上一致加密和解密使用同一個算法,使用相同的步驟和相同的密鑰主要不同點是將密文作為算法的輸入,但是逆序使用子密鑰ki,即第1輪使用子密鑰k16,第2輪使用子密鑰k15,最后一輪使用子密鑰k1

數據加密標準(DES)

DES密鑰長度太小

DES迭代次數可能太少1997年6月,許多臺計算機并行工作,140天內破解了DES;1998年,DES在48天內被破解;1999年,幾個小時內就能破解。三重DES使用三(或兩)個不同的密鑰對數據塊進行三次(或兩次)加密,加密一次要比進行普通加密的三次要快三重DES的強度大約和112-bit的密鑰強度相當三重DES有四種模型DES-EEE3使用三個不同密鑰順序進行三次加密變換DES-EDE3使用三個不同密鑰依次進行加密-解密-加密變換DES-EEE2其中密鑰K1=K3順序進行三次加密變換DES-EDE2其中密鑰K1=K3依次進行加密-解密-加密變換到目前為止還沒有人給出攻擊三重DES的有效方法DES-EDE2其中密鑰K1=K3依次進行加密-解密-加密變換目前還沒有針對兩個密鑰的三重DES實際的攻擊方法但是感覺它不大可靠,如果采用三把密鑰的三重DES則比較放心三把密鑰的三重DES的密鑰長度是168位,采用加密—解密—加密(E-D-E)方案其加密過程為C=EK3[DK2[EK1[M]]],解密過程為M=DK1[EK2[DK3[C]]]這種加密方式已經被一些網絡應用采用,如PGP和S/MIME采用了這種方案IDEAInternationalDataEncryptionAlgorithm;XuejiaLai和JamesMassey提出;IDEA是對稱、分組密碼算法,輸入的明文為64位,密鑰為128位,生成的密文為64位;IDEA是一種相對較新的算法,有堅強的理論基礎,已被證明可對抗差分分析和線性分析;PGP中已實現了IDEA;高級加密標準(AES)1997年4月15日美國國家標準和技術研究所NIST發起了征集AES算法的活動并成立了專門的AES工作組目的是為了確定一個非保密的公開披露的全球免費使用的分組密碼算法用于保護下一世紀政府的敏感信息并希望成為秘密和公開部門的數據加密標準1997年9月12日在聯邦登記處公布了征集AES候選算法的通告AES的基本要求是比三重DES快或至少和三重DES一樣安全分組長度128比特,密鑰長度為128/192/256比特1998年8月20日NIST召開了第一次候選大會并公布了15個候選算法高級加密標準(AES)-續1999年3月22日舉行了第二次AES候選會議從中選出5個算法MARSRC6SerpentTwofishRijndael

2000年10月,美國國家技術標準委員會(NIST)選定“Rijndael”全為AESRijndael是迭代分組密碼,其分組長度和密鑰長度都是可變的;為了滿足AES的要求,分組長度為128bit,密碼長度為128/192/256bit,相應的輪數r為10/12/14。流密碼明文m=m1,m2,…….mk偽隨機序列k=k1,k2,…….kk密文ci=miki,i=1,2,…….k解密過程與加密過程一致序列密碼的安全性完全依賴于偽隨機數的強度移位寄存器是產生序列密碼的有效方法RC4、SEAL(SoftwareOptimizedEncryptionAlgorithm,軟件優化加密算法)三、公鑰密碼體制公鑰密碼學概述公鑰密碼算法公鑰密碼技術應用公鑰密碼學概述WhitefieldDiffie,MartinHellman,《NewDirectionsinCryptography》,1976公鑰密碼學的出現使大規模的安全通信得以實現–解決了密鑰分發問題;公鑰密碼學還可用于另外一些應用:數字簽名、防抵賴等;公鑰密碼體制的基本原理–陷門單向函數(trapdoorone-wayfunction)公鑰密碼學概述

加密:EK1(M)=C

解密:DK2(C)=M

等效于DK2(EK1(M))=M數學變換函數密鑰K1明文密文數學變換函數密鑰K2明文密文公鑰密碼學概述網絡信息M非對碼密鑰算法B公鑰密文C用戶B用戶A非對稱密碼算法密文C信息MB私鑰非對稱加密應用模式數據機密性發送方認證對稱密碼學中的密鑰管理單鑰密碼技術要求通信雙方事先交換密鑰。在實際應用中,一方需要與成千上萬的通信方進行交易,若采用單鑰密碼技術,每個用戶需要管理成千上萬個不同對象通信的密鑰。雙方如何交換密鑰。通過傳統手段,還是通過因特網,都會遇到密鑰傳送的安全性問題。在現實環境中,密鑰通常會經常更換,更為極端的是,每次傳送都使用不同的密鑰,單鑰密碼技術的密鑰管理和發布都是遠遠無法滿足使用要求的。公鑰密碼學中的密鑰管理公鑰密鑰技術解決了密鑰的發布和管理問題,任何一方可以公開其公開密鑰,而保留私有密鑰。發送方可以用人人皆知的接收方公開密鑰對發送的信息進行加密,安全的傳送給接收方,然后由接收方用自己的私有密鑰進行解密。

RSA算法概述Rivest,Shamir和Adleman1977年研制并且1978年首次發表。密碼分析者尚不能證明其安全性,但也不能否定其安全性。RSA是一種分組密碼,其理論基礎是一種特殊的可逆模指數運算,其安全性基于分解大整數的困難性。既可以用于加密,也可用于數字簽名。硬件實現時,比DES慢約1000倍。軟件實現時比DES慢約100倍。永遠不會比對稱鑰算法快。已被許多標準化組織(如ISO、ITU、IETF和SWIFT等)接納,目前多數公司使用的是RSA公司的PKCS系列。算法描述

1.密鑰的產生

隨機選擇兩個大素數p,q

計算n=p×q計算秘密的歐拉函數(n)=(p-1)(q-1)選擇e使得1<e<(n),且gcd(e,

(n))=1解下列方程求出d

ed≡1mod(n),且0≤d≤n

公開公鑰:PU={e,N}保存私鑰:PR={d,p,q}672.加密過程加密時明文以分組為單位進行加密,每個分組m的二進制值均小于n,對明文分組m作加密運算:c=memodn,且0≤m<n3.解密過程密文解密m=cd

modn

RSA算法描述結果:

e和n作為公開密鑰,d,n作為私人密鑰。

p、q、φ(n)和d是秘密的陷門(并不是相互獨立的),不可以泄露。使用: 首先將消息分成大小合適的數據分組,然后對分組分別進行加密。每個分組的大小應該比n小。 設ci為明文分組mi加密后的密文,則加密公式為ci=mie(modn)

解密時,對每一個密文分組進行如下運算:mi=cid(modn)RSA樣例p=17,q=11,n=pq=187(n)=(p-1)(q-1)=160gcd(160,e)==1:e=7de=161=1mod160:d=23RSA算法安全性

RSA的安全性是基于加密函數ek(x)=xe(modn)是一個單向函數,所以對的人來說求逆計算不可行。而解密的陷門是分解n=pq,知(n)=(p-1)(q-1)。從而用歐氏算法解出解密私鑰d。密碼分析者攻擊RSA體制的關鍵點在于如何分解n。若分解成功使n=pq,則可以算出φ(n)=(p-1)(q-1),然后由公開的e,解出秘密的d。RSA算法關鍵技術密鑰選擇位數:1024以上,素性應該證明p-1,q-1有大的素因子p+1,q+1也要有大的素因子e的選取,最常用的e值為3,65537(2^16+1)算法實現軟件與硬件結合,并行算法等RSA算法使用1.加解密A的公開密鑰為(e,n),B對消息m加密c=memodn給A,只有A能解密m=cdmodn特點:和A從來不認識,都可進行保密通訊,只要知道A的公鑰.速度慢,不實用.要求對公開密鑰進行保護,防止修改和替換。

通信保密:此時將公鑰作為加密密鑰,私鑰作為解密密鑰,通信雙方不需要交換密鑰就可以實現保密通信。RSA算法使用2.數字簽名與身份認證A的公開密鑰為(e,n),私鑰為(d,n),A對消息m的數字簽名為:s=H(m)dmodn,H(x)為公開的散列(hash)函數.任何人都可驗證A對m的簽名的有效性H(m)=semodn功能:防止非法篡改、偽造,A的抵賴與否認,對A的假冒等。要求對公開密鑰進行保護,防止修改。

數字簽名:將私鑰作為加密密鑰,公鑰作為解密密鑰,可實現由一個用戶對數據加密而使多個用戶解讀。

其他公鑰算法Rabin密碼算法

合數模下求解平方根的困難性ElGamal密碼算法 基于離散對數問題橢圓曲線密碼算法 代數幾何中基于橢圓曲線的點集四、摘要算法摘要算法的需求摘要算法的設計要求

MD5算法介紹哈希函數(Hash)Hash相同的輸入產生相同的輸出(散列值/指紋)單向,不可逆變長的輸入,定長的輸出散列算法MD5(128bit)、SHA-1(160bit)用途數據完整性發送方認證Hash雜湊函數雜湊(Hash)函數是將任意長的數字串M映射成一個較短的定長輸出數字串H的函數,通常是單向雜湊函數;強單向雜湊與弱單向雜湊,對不同報文,很難有同樣的報文摘要。這與不同的人有不同的指紋很類似;雜湊函數除了可用于數字簽名方案之外,還可用于其它方面,諸如消息的完整性檢測(一般雜湊函數)、消息的起源認證檢測(密碼雜湊函數)等。h=H(M)假定兩次輸入同樣的數據,那么散列函數應該能夠生成相同的散列值。輸入數據中的一位發生了變化,會導致生成的散列值完全不一樣。散列函數有個非常重要的特性為單向性,也就是從M計算h容易,而從h計算M不可能。

散列函數H必須滿足以下幾個性質H對于任何大小的數據分組,都能產生定長的輸出。對于任何給定的M,H(M)要相對易于計算。單向性:對于任何給定的hash值h,計算出M在計算上不可行。弱無碰撞性:對任何給定的M1,尋找M2,使H(M1)=H(M2)在計算上不可行。強無碰撞性:尋找任何的(M1,M2),使H(M1)=H(M2)在計算上不可行。MD系列雜湊函數RonRivest設計的系列雜湊函數系列:MD4[RFC1320]MD5是MD4的改進型[RFC1321]MD2[RFC1319],已被Rogier等于1995年攻破較早被標準化組織IETF接納,并已獲得廣泛應用Hash值長度為128bits

這個選擇的意義:簽名算法復雜度這種,如RSA算法SHA和SHA-1美國NIST和NSA為配合DSS,設計了安全雜湊標準(SHS),其算法為SHA[FIPSPUB180],修改的版本被稱為SHA-1[FIPSPUB180-1]SHA/SHA-1采用了與MD4相似的設計準則,其結構也類似于MD4,但其輸出為160bits目前還沒有針對SHA有效的攻擊2023/2/484Ch5-消息認證與數字簽名MD5MD5(Message-Digest

Algorithm

5)是由Ronald

L.

Rivest(RSA算法中的“R”)這90年代初開發出來的,經MD2、MD3和MD4發展而來。它比MD4復雜,但設計思想類似,同樣生成一個128位的信息散列值。其中,MD2是為8位機器做過設計優化的,而MD4和MD5卻是面向32位的計算機。2004年8月,在美國召開的國際密碼學會議(Crypto’2004)上,王小云教授給出破解MD5、HAVAL-128、MD4和RIPEMD算法的報告。給出了一個非常高效的尋找碰撞的方法,可以在數個小時內找到MD5的碰撞。2023/2/485Ch5-消息認證與數字簽名MD5算法步驟1)填充消息:任意長度的消息首先需要進行填充處理,使得填充后的消息總長度與448模512同余(即填充后的消息長度448mod512)。填充的方法是在消息后面添加一位“1”,后續都是“0”。2)添加原始消息長度:在填充后的消息后面再添加一個64位的二進制整數表示填充前原始消息的長度。這時經過處理后的消息長度正好是512位的倍數。3)初始值(IV)的初始化:MD5中有四個32位緩沖區,用(A,B,C,D)表示,用來存儲散列計算的中間結果和最終結果,緩沖區中的值被稱為鏈接變量。首先將其分別初始化為為:A=0x01234567,B=0x89abcdef,C=0xfedcba98,D=0x76543210。2023/2/486Ch5-消息認證與數字簽名MD5算法步驟-續4)以512位的分組為單位對消息進行循環散列計算:經過處理的消息,以512位為單位,分成N個分組,用Y0,Y1,…,YN-1。MD5對每個分組進行散列處理。每一輪的處理會對(A,B,C,D)進行更新。5)輸出散列值:所有的N個分組消息都處理完后,最后一輪得到的四個緩沖區的值即為整個消息的散列值。2023/2/487Ch5-消息認證與數字簽名MD5算法步驟-續MD5的主循環,包括四輪,每個循環都以當前的正在處理的512比特分組Yq和128比特緩沖值ABCD為輸入,然后更新緩沖內容。四輪的操作類似,每輪16次:用到一個有64個元素的表T[1..64],T[i]=232×abs(sin(i)),i的單位為弧度。16次壓縮函數中的一步迭代基本邏輯函數定義輪基本函數gg(b,c,d)fFF(b,c,d)(b^c)V(bˉ^d)fGG(b,c,d)(b^d)V(c^dˉ)fHH(b,c,d)b?c?dfII(b,c,d)c?(bV

dˉ)X[k]當前分組的第k個32位的字。第1輪x[0]x[1]x[2]x[3]x[4]x[5]x[6]x[7]x[8]x[9]x[10]x[11]x[12]x[13]x[14]x[15]第2輪x[1]x[6]x[11]x[0]x[5]x[10]x[15]x[4]x[9]x[14]x[3]x[8]x[13]x[2]x[7]x[12]第3輪x[5]x[8]x[11]x[14]x[1]x[4]x[7]x[10]x[13]x[0]x[3]x[6]x[9]x[12]x[15]x[2]第4輪x[0]x[7]x[14]x[5]x[12]x[3]x[10]x[1]x[8]x[15]x[6]x[13]x[4]x[11]x[2]x[9]MD-5的安全性MD-5的輸出為128-bit,若采用純強力攻擊尋找一個消息具有給定Hash值的計算困難性為2128,用每秒可試驗1000000000個消息的計算機需時1.07×1022年。采用生日攻擊法,找出具有相同雜湊值的兩個消息需執行264次運算。5、數字簽名與完整性保護數字簽名概念數字簽名與驗證數字信封技術時間戳技術數字簽名概述日常生活和經濟往來中,簽名蓋章和識別簽名是一個重要環節;計算機網絡通信時代,用密碼學來實現數字簽名;數字簽名特點:收方能夠確認或證實發方的簽字;任何人都不能仿造;如果發方否認他所簽名的消息,可以通過仲裁解決爭議。數字簽名與手寫簽名和消息認證與手寫簽名的區別;手寫簽名是模擬的,且因人而異;數字簽名是01數字串,因消息而異。與消息認證的區別:消息認證使收方能驗證消息內容是否被篡改;數字簽名還可以認證消息發送者的身份。數字簽名算法RSA算法

應用最廣泛DSA(DigitalSignatureAlgorithm)算法

基于有限域上的離散對數問題GOST算法

俄羅斯采用的數字簽名標準算法數字簽名與驗證過程第一步:將消息按散列算法計算得到一個固定位數的消息摘要值。在數學上保證:只要改動消息的任何一位,重新計算出的消息摘要就會與原先值不符。這樣就保證了消息的不可更改。數字簽名與驗證過程第二步:對消息摘要值用發送者的私有密鑰加密,所產生的密文即稱數字簽名。然后該數字簽名同原消息一起發送給接收者。第三步:接收方收到消息和數字簽名后,用同樣的散列算法對消息計算摘要值,然后與用發送者的公開密鑰對數字簽名進行解密,將解密后的結果與計算的摘要值相比較。如相等則說明報文確實來自發送者。數字簽名與驗證過程圖示消息摘要數字簽名消息數字簽名消息摘要數字簽名摘要發送方接收方數字簽名與數據完整性驗證數據的完整性(integrity)數據的完整性是用來認證消息、檢驗數據是否被篡改的技術,是另一類型的數字簽名實現技術:雙鑰加密算法和消息摘要算法應用:消息不需加密但要鑒別,如銀行發出的支票Alice與Bob通話,Bob希望驗證消息的完整性:

—Alice就要使用SHA來計算消息(密文)的消息摘要,并使用自己的私有密鑰對這個消息摘要進行加密(即該消息的簽名)

—Alice將消息發給Bob

—Bob接到消息后,首先用Alice的公開密鑰解密,然后計算消息的消息摘要,再比較兩者是否相同

—若相同,Bob就能確信接受到的消息是完整的電子信封技術為解決每次傳送更換密鑰的問題,結合對稱加密技術和非對稱密鑰加密技術的優點,產生了電子信封技術,用來傳輸數據。

電子信封技術實現加密對稱密鑰用戶A明文密文用戶B的公鑰電子信封用戶B密文解密明文用戶B的私鑰對稱密鑰數字時間戳(DigitalTime-Stamp)交易文件中,文件簽署日期和簽名一樣是防止被偽造和篡改的關鍵性內容數字時間戳服務(DTS)是網上安全服務項目,由專門的機構提供時間戳是一個經過加密后形成的憑證文檔,包括:需加時間戳的文件的摘要、DTS收到文件的日期和時間、DTS的數字簽名時間戳產生過程:用戶將需加時間戳的文件用HASH編碼加密形成摘要,并將其發送到DTS;DTS在加入了收到日期和時間信息后再對該文件加密和數字簽名,然后返回用戶數字證書的結構

相關標準

PKI的組成與功能

我國PKI的發展六、數字證書與PKI體系數字證書(Digitalcertificates)數字證書:是一個擔保個人、計算機系統或組織的身份和密鑰所有權的電子文檔,它的格式必須符合CCITTX.509國際標準的規定數字證書可以解決公開密鑰的認證問題基于公開密鑰體制(PKI)的數字證書是電子商務安全體系的核心,其用途是利用公共密鑰加密系統來保護與驗證公眾的密鑰,由可信任的、公正的權威機構CA頒發應用程序能識別的證書類型如下:客戶證書(個人證書)、站點證書(服務器證書)、安全郵件證書、CA證書數字證書(續)證書的內容(證書格式遵循X.509國際標準)

—證書的數據:版本信息、證書序列號、CA使用的簽名算法、發行證書CA的名稱、證書的有效期、被證明的公鑰信息

—發行證書的CA簽名:CA簽名和簽名算法證書的有效性

—證書沒有過期

—密鑰沒有修改

—用戶仍然有權使用這個密鑰

—CA負責回收證書,發行無效證書清單證書使用證書幫助證實個人身份,你的證書和你的密鑰就是你是誰的證據公鑰證書的結構

證書主體身份信息主體的公鑰CA名稱CA簽名簽字X.500與X.509X.500和X.509是安全認證系統的核心:為了提供公用網絡用戶目錄信息服務,ITU于1988年制定了X.500系列標準。X.500定義了一種區別命名規則,以命名樹來確保用戶名稱的唯一性X.509是由國際電信聯盟(ITU-T)制定的數字證書標準。X.509為X.500用戶名稱提供了通信實體鑒別機制,并規定了實體鑒別過程中廣泛適用的證書語法和數據接口,X.509稱之為證書。

X.509證書由用戶公共密鑰與用戶標識符組成,此外還包括版本號、證書序列號、CA標識符、簽名算法標識、簽發者名稱、證書有效期等。目前,X.509標準已在編排公共密鑰格式方面被廣泛接受,已用于許多網絡安全應用程序,其中包括IP安全(Ipsec)、安全套接層(SSL)、安全電子交易(SET)、安全多媒體INTERNET郵件擴展(S/MIME)等。

公鑰基礎結構

(Public

Key

Infrastructure,

PKI)

PKI是一種遵循標準的密鑰管理平臺,它能夠為所有網絡應用透明地提供采用加密和數字簽名等密碼服務所必需的密鑰和證書管理。

PKI體系結構采用證書管理公鑰,即結合X.509標準中的鑒別框架(Authentication

Framework)來實現密鑰管理,通過CA把用戶的公鑰及其它標識信息捆綁在一起,在INTERNET上驗證用戶的身份,保證網上數據的保密性和完整性。

公鑰基礎結構

(Public

Key

Infrastructure,

PKI)

一個PKI必須支持下面的密鑰和證書管理服務:

◆認證機關(CA)

◆證書庫

◆證書的撤消

◆密鑰的備份與恢復

◆對數字簽名的抗抵賴性的支持

◆密鑰對和證書的自動更新

◆密鑰歷史信息的管理

◆對交叉認證的支持

◆客戶端證書處理系統如何獲得發送方公鑰A發送驗證消息給B;B用私鑰加密該消息并附上證書送給A;A收到后用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論