乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      密碼學

       baijeg 2011-01-19

      一. 密碼學簡介

      據(jù)記載,公元前400年,古希臘人發(fā)明了置換密碼。1881年世界上的第一個電話保密專利出現(xiàn)。在第二次世界大戰(zhàn)期間,德國軍方啟用“恩尼格瑪”密 碼機,密碼學在戰(zhàn)爭中起著非常重要的作用。

      隨著信息化和數(shù)字化社會的發(fā)展,人們對信息安全和保密的重要性認識不斷提高,于是在1997年,美國國家標準局公布實施了“美國數(shù)據(jù)加密標準 (DES)”,民間力量開始全面介入密碼學的研究和應用中,采用的加密算法有DES、RSA、SHA等。隨著對加密強度需求的不斷提高,近期又出現(xiàn)了 AES、ECC等。我國也相應提出了自己國家的ECC、SCB2、SCH等加密算法。

       

      使用密碼學可以達到以下目的:

      1.       保密性:防止用戶的標識或數(shù)據(jù)被讀取。

      2.       數(shù)據(jù)完整性:防止數(shù)據(jù)被更改。

      3.       身份驗證:確保數(shù)據(jù)發(fā)自特定的一方。

       

      二. 加密算法介紹

      根據(jù)密鑰類型不同將現(xiàn)代密碼技術分為兩類:對稱加密算法(秘密鑰匙加密)和非對稱加密算法(公開密鑰加密)。

      兩者的區(qū)別在于:

      對稱鑰匙加密系統(tǒng)是加密和解密均采用同一把秘密鑰匙,而且通信雙方都必須獲得這把鑰匙,并保持鑰匙的私密性。

      非對稱密鑰加密系統(tǒng)采用的加密鑰匙(公鑰)和解密鑰匙(私鑰)是不同的。

       

      2.1 對稱加密算法

      對稱加密算法用來對敏感數(shù)據(jù)等信息進行加密,現(xiàn)在,通常使用分組密碼(block cipher)或序列密碼(stream cipher)實現(xiàn)對稱密碼,由于序列密碼算法不常用,所以本文將只討論分組密碼,常用的分組密碼算法包括:

      1.       DES(Data Encryption Standard):數(shù)據(jù)加密標準,速度較快,適用于加密大量數(shù)據(jù)的場合。

      2.       3DES(Triple DES):是基于DES,對一塊數(shù)據(jù)用三個不同的密鑰進行三次加密,強度更高。

      3.       AES(Advanced Encryption Standard):高級加密標準,是下一代的加密算法標準,速度快,安全級別高。

       

      分組密鑰常見術語

       

      置換(Permutation)與替代(Substitution

      置換與替代是對稱密鑰中常用的兩種手段。置換是對數(shù)據(jù)重新進行排列,而替代是將一個數(shù)據(jù)單元替換為另一個。通常替代要借助非線性查找表來進行,即 DES和AES中所稱的S-Box。

       

      輪(Round

             對稱密鑰中經(jīng)常對輸入進行多輪迭代,這些迭代通常操作相同,只是具體上有些許差異,對稱密鑰的這種特性使得對稱密鑰適于用流水結構實現(xiàn),因而數(shù)據(jù)吞吐量 大,容易實現(xiàn)高速加解密。

      2.1.1  DES

      DES算法全稱為Data Encryption Standard,即數(shù)據(jù)加密算法,它是IBM公司于1975年研究成功并公開發(fā)表的。DES算法有三個輸入:Key、Data、Mode。其中 Key為8個字節(jié)共64位,是DES算法的工作密鑰;Data也為8個字節(jié)64位,是要被加密或被解密的數(shù)據(jù);Mode為DES的工作方式,有兩種:加密 或解密。

       

      算法原理

      DES算法把64位的明文輸入塊變?yōu)?4位的密文輸出塊,它所使用的密鑰也是64位,其算法主要分為兩步:

      1 初始置換

      其功能是把輸入的64位數(shù)據(jù)塊按位重新組合,并把輸出分為L0、R0兩部分,每部分各長3 2位,其置換規(guī)則為將輸入的第58位換到第一位,第50位換到第2位……依此類推,最后一位是原來的第7位。L0、R0則是換位輸出后的兩部分,L0是輸 出的左32位,R0是右32位,例:設置換前的輸入值為D1D2D3……D64,則經(jīng)過初始置換后的結果為:L0=D58D50……D8;R0= D57D49……D7。

      2 逆置換

      經(jīng)過16次迭代運算后,得到L16、R16,將此作為輸入,進行逆置換,逆置換正好是初始置換的逆運算,由此即得到密文輸出。

       

      2.1.2      3DES

      3DES(即Triple DES)是DES向AES過渡的加密算法(1999年,NIST將3-DES指定為過渡的加密標準),是DES的一個更安全的變形。它以DES為基本模 塊,通過組合分組方法設計出分組加密算法。3DES一共有兩種,一種是使用兩個56位長度的密鑰key1和key2,這樣密碼強度提高到了112位;另一 種是使用三個56位長度的密鑰key1、key2和key3,這樣密碼強度提高到了168位。

      使用兩個密鑰的3DES:

      加密過程:用key1加密,用key2解密再用key1加密

      解密過程:用key1解密,用key2加密再用key1解密

      使用三個密鑰的3DES:

      加密過程:用key1加密,用key2解密再用key3加密

      解密過程:用key3解密,用key2加密再用key1解密

      2.1.3   AES

      2000年10月,NIST(美國國家標準和技術協(xié)會)宣布通過從15種侯選算法中選出的一項新的密匙加密標準。Rijndael被選中成為將來的 AES。 Rijndael是在 1999 年下半年,由研究員 Joan Daemen 和 Vincent Rijmen 創(chuàng)建的。AES 正日益成為加密各種形式的電子數(shù)據(jù)的實際標準。

      美國標準與技術研究院 (NIST) 于 2002 年 5 月 26 日制定了新的高級加密標準 (AES) 規(guī)范。

       

      算法原理

      AES 算法基于置換和替代運算。AES 使用幾種不同的方法來執(zhí)行置換和替代運算。

      AES 是一個迭代的、對稱密鑰分組的密碼,它可以使用128、192 和 256 位長度的密鑰,并且用 128 位(16字節(jié))分組密鑰(輪密鑰)加密和解密數(shù)據(jù)。數(shù)據(jù)長度為128位。通過分組密碼返回的加密數(shù)據(jù)長度與輸入數(shù)據(jù)長度相同。迭代加密使用一個循環(huán)結構, 在該循環(huán)中重復置換(permutation)和替代(substitution)輸入數(shù)據(jù)。

      密鑰擴展(Key Expansion)

      AES對原始密鑰進行密鑰擴展操作,將其擴展并應用到每輪迭代加密中。

      State矩陣

      AES將輸入和每輪迭代的中間結果表達為4×4矩陣,矩陣中每個元素為8位。AES算法的主循環(huán)對State矩陣執(zhí)行四種不同的操作,分別為 SubBytes(字節(jié)替換)、ShiftRows(行位移變換)、MixColumns(列混合變換)、AddRoundKey(輪密鑰相加)。

      SubBytes:將State矩陣中的字節(jié)用S-box中相應字節(jié)替換

      ShiftRows:為置換操作,它將State矩陣每行中的字節(jié)向左移位。

      MixColumns:為替代操作,它用State矩陣每列字節(jié)的值進行GF(28)域中的加法和乘法操作,并替代對應字 節(jié)。

      AddRoundKey:用KeyExpansion中生成的KeySchedule前四行對State矩陣執(zhí)行字節(jié)異或(XOR)操作,并用輪密 鑰表中相應值對State矩陣進行操作,得到新的State矩陣

       

      AES與3DES的比較

      算法名稱

      算法類型

      密鑰長度

      數(shù)據(jù)長度

      AES

      對稱block密碼

      128、192、256位

      128位

      3DES

      對稱feistel密碼

      112位或168位

      64位

       

      2.1.4      分組密碼工作方式

      分組密碼每次加密一個數(shù)據(jù)分組,這個分組的位數(shù)可以是隨意的,一般選擇64(DES、3DES)或者128位(AES)。

       

      2.1.4.1    ECB(Electronic Code Book:電碼本)

      ECB是最簡單的模式,同樣的明文分組總是加密成相同的密文分組。這對于發(fā)送單一的塊數(shù)據(jù)來說是非常好的,如密鑰。但對執(zhí)行一個加密的信息流來說不 是很好,因為如果相同的明文多次發(fā)送以后,同樣的密文也會被多次發(fā)送。

      ECB最大的弱點是對每一個塊用相同的方式進行加密。如果我們的密鑰或者數(shù)據(jù)不斷發(fā)生變化,ECB是完全安全的。但是如果類似的塊經(jīng)過同樣的密鑰加 密發(fā)出以后,攻擊者可能獲得一些我們并不想讓別人知道的信息。

      優(yōu)點:

      1.簡單;

      2.有利于并行計算;

      3.誤差不會被傳送;

      缺點:

      1.不能隱藏明文的模式;

      2.可能對明文進行主動攻擊;

       

      2.1.4.2    CBC(Cipher Block Chaining:密碼分組鏈接)  

      CBC模式改變了加密方式,同樣的明文分組不一定加密或解密同樣的密文塊,因此解決了ECB存在的主要問題。CBC使用前一分組的信息加密當前分 組。因此 和ECB模式大不相同。這個方法依然存在問題,那就是相同的信息仍然加密成相同的密文,因為所有的分組是同時變成密文分組的。為了解決這個問題,我們引入 一個Initialization Vector(IV,初始化向量),也就是前不久有人問到的IV問題。IV僅僅是一個初始化加密程序的隨機數(shù)。它無需秘密保存,但隊每一個信息來說它都是 不同 的,通過這個方式,即使有兩條相同的信息,只要他們有不同的IV,那么他們加密后的密文也是不同的。從這個意義上來說,初始化向量無疑就和口令加密過程中 使用的鹽值是一樣的。

      CBC很適合文本傳輸,但它每一次都需要傳送一個完整的數(shù)據(jù)塊,一般選8個字節(jié)。

      優(yōu)點:

      1.不容易主動攻擊,安全性好于ECB,適合傳輸長度長的報文,是SSL、IPSec的標準。

      缺點:

      1.不利于并行計算;

      2.誤差傳遞;

      3.需要初始化向量IV

       

      CFB(Cipher FeedBack:密碼反饋)  

      CFB的工作方式與CBC類似,但它可以執(zhí)行更小的數(shù)據(jù)塊,典型的有8位,這非常適合加密像聊天對話這樣的信息,因為每次可以發(fā)送單一的字節(jié)數(shù)據(jù) 塊。

      和CBC一樣,CFB也需要一個IV,且相同及鑰發(fā)送的每條信息的IV都必須是唯一的。

       優(yōu)點:

      1.隱藏了明文模式;

      2.分組密碼轉(zhuǎn)化為流模式;

      3.可以及時加密傳送小于分組的數(shù)據(jù);

      缺點:

      1.不利于并行計算;

      2.誤差傳送:一個明文單元損壞影響多個單元;

      3.唯一的IV;

       

      OFB(Output FeedBack:輸出反饋)

      OFB除了在傳輸中能給數(shù)據(jù)提供更好的保護,防止數(shù)據(jù)丟失外,其他和CFB類似。密文中一位出錯,也只造成明文中的一位出錯,其他的方式會造成整個 塊丟失。

      和CBC以及CFB一樣,OFB也需要一個IV。

       優(yōu)點:

      1.隱藏了明文模式;

      2.分組密碼轉(zhuǎn)化為流模式;

      3.可以及時加密傳送小于分組的數(shù)據(jù);

      缺點:

      1.不利于并行計算;

      2.對明文的主動攻擊是可能的;

      3.誤差傳送:一個明文單元損壞影響多個單元;

       

      2.1.4.3    分組密碼的填充方式

      分組密碼算法在ECB和CBC工作方式下需要明文輸入為分組大小的整數(shù)倍。如果要加密的明文不為分組大小的整數(shù)倍,就需要在加密之前使用填充位串對 明文進行填充。當解密時,接收方需要知道如何沒有二義性地移除填充位串。

       

      方法1:將需要填充字節(jié)的個數(shù)作為填充值填充到分組中

      這個方法適用于任何明文,ASCII或者二進制。對于DES,分組大小為64位,所以填充值應該在1到8之間,對于AES,分組大小為128位,所 以填充值在1到16之間。這也可以提供對解密是否正確進行的一個額外校驗(如果該值不對,則解密不對,但是如果該值對,也不保證解密一定是對的)。

       

      方法2:用0x80后接數(shù)個0x00作為填充位串填充到分組中

      這個方法適用于任何明文,ASCII或者二進制。智能卡更傾向于使用這種填充方法。這也是NIST 800-38a中推薦的方法。

       

      方法3:用0x00填充,最后一個字節(jié)用填充字節(jié)的個數(shù)作為填充值填充

      這個是方法1的變形。在解密后,讀最后一個字節(jié)的值,如果在正確區(qū)間內(nèi)就扔掉最后一個字節(jié)所描述的那么多個字節(jié)。該方法適用于任何明文,ASCII 或者二進制。

       

      方法4:用全0填充

      該方法局限性很大,在處理ASCII文本時沒有問題,但是在處理可能包含0x00值的二進制明文時會不適用。

       

      方法5:用空格字符0x20填充

      該方法也只適用于簡單ASCII文本。

       

      如果使用的是CFB或者OFB工作方式,那么密文可以與明文具有相同大小,不需要填充。序列加密算法如RC4或者PC1也不需要填充。

      2.2公鑰密碼算法

      公鑰密碼中的加密與解密過程如下圖所示:

       

       

      公鑰密碼中的簽名與驗證過程如下圖:

      1.確實是用戶B在文件上簽了名(身份認證)

      2.別人無法偽造用戶B的簽名(不可抵賴)

      3.所簽的信息在傳輸過程中沒有被篡改或替換(數(shù)據(jù)完整)

       

       

       

      公鑰密碼中的密鑰交換過程:

      1.數(shù)字信封:用公鑰密碼加密對稱密鑰

      2.密鑰協(xié)商:根據(jù)雙方交互的信息各自計算出相同的對稱密鑰(ga, gb, gab)

       

       

       

      2.2.1 RSA算法

      2.2.1.1 簡介

      當前最著名、應用最廣泛的公鑰系統(tǒng)RSA是在1978年,由美國麻省理工學院(MIT)的Rivest、Shamir和Adleman在題為《獲得 數(shù)字簽名和公開鑰密碼系統(tǒng)的方法》的論文中提出的。它是一個基于數(shù)論的非對稱(公開鑰)密碼體制,是一種分組密碼體制。其名稱來自于三個發(fā)明者的姓名首字 母。 它的安全性是基于大整數(shù)素因子分解的困難性,而大整數(shù)因子分解問題是數(shù)學上的著名難題,至今沒有有效的方法予以解決,因此可以確保RSA算法的安全性。 RSA系統(tǒng)是公鑰系統(tǒng)的最具有典型意義的方法,大多數(shù)使用公鑰密碼進行加密和數(shù)字簽名的產(chǎn)品和標準使用的都是RSA算法。

      RSA算法是第一個既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法,因此它為公用網(wǎng)絡上信息的加密和鑒別提供了一種基本的方法。它通常是先生成一對RSA 密鑰,其中之一是保密密鑰,由用戶保存;另一個為公開密鑰,可對外公開,甚至可在網(wǎng)絡服務器中注冊,人們用公鑰加密文件發(fā)送給個人,個人就可以用私鑰解密 接受。為提高保密強度,RSA密鑰至少為500位長,一般推薦使用1024位。

      該算法基于下面的兩個事實,這些事實保證了RSA算法的安全有效性: 
      1) 已有確定一個數(shù)是不是質(zhì)數(shù)的快速算法; 
      2) 尚未找到確定一個合數(shù)的質(zhì)因子的快速算法。

      2.2.1.2工作原理 
      1)  任意選取兩個不同的大質(zhì)數(shù)p和q,計算乘積r=p*q; 
      2)  任 意選取一個大整數(shù)e,e與(p-1)*(q-1)互質(zhì),整數(shù)e用做加密密鑰。注意:e的選取是很 

      容易的,例如,所有大于p和q的質(zhì)數(shù)都可用。 
      3)  確定解密密鑰d: d * e = 1 modulo(p - 1)*(q - 1) 根據(jù)e、p和q可以容易地計算出

      d。 
      4)  公開整數(shù)r和e,但是不公開d; 
      5)  將明文P (假設P是一個小于r的整數(shù))加密為密文C,計算方法為: 
      C = Pe modulo r 
      6)  將密文C解密為明文P,計算方法為: 
      P = Cd modulo r 
      然而只根據(jù)r和e(不是p和q)要計算出d是不可能的。因此,任何人都可對明文進行    

      加密,但只有授權用戶(知道d)才可對密文解密。

       

      2.2.1.3優(yōu)點

       

      RSA算法是第一個能同時用于加密和數(shù)字簽名的算法,也易于理解和操作。RSA是被研究得最廣泛的公鑰算法,從提出到現(xiàn)在已近二十年,經(jīng)歷了各種攻 擊的考驗,逐漸為人們接受,普遍認為是目前最優(yōu)秀的公鑰方案之一。該算法的加密密鑰和加密算法分開,使得密鑰分配更為方便。它特別符合計算機網(wǎng)絡環(huán)境。對 于 網(wǎng)上的大量用戶,可以將加密密鑰用電話簿的方式印出。如果某用戶想與另一用戶進行保密通信,只需從公鑰簿上查出對方的加密密鑰,用它對所傳送的信息加密發(fā) 出即可。對方收到信息后,用僅為自己所知的解密密鑰將信息脫密,了解報文的內(nèi)容。由此可看出,RSA算法解決了大量網(wǎng)絡用戶密鑰管理的難題,這是公鑰密碼 系統(tǒng)相對于對稱密碼系統(tǒng)最突出的優(yōu)點。 

      2.2.1.4缺點 
      1) 產(chǎn)生密鑰很麻煩,受到素數(shù)產(chǎn)生技術的限制,因而難以做到一次一密。 
      2) 安全性, RSA的安全性依賴于大數(shù)的因子分解,但并沒有從理論上證明破譯RSA的難度

      與大數(shù)分解難度等價,而且密碼學界多數(shù)人士傾向于因子分解不是NPC問題。目前,人們已能分解140多個十進制位的大素數(shù),這就要求使用更長的密 鑰,速度更慢;另外,目前人們正在積極尋找攻擊RSA的方法,如選擇密文攻擊,一般攻擊者是將某一信息作一下偽裝(Blind),讓擁有私鑰的實體簽署。 然后,經(jīng)過計算就可得到它所想要的信息。實際上,攻擊利用的都是同一個弱點,即存在這樣一個事實:乘冪保留了輸入的乘法結構:

      ( XM )d = Xd *Md mod n 
      前面已經(jīng)提到,這個固有的問題來自于公鑰密碼系統(tǒng)的最有用的特征--每個人都能使用公鑰。 但從算法上無法解決這一問題,主要措施有兩條:一條是采用好的公鑰協(xié)議,保證工作過程中實體不對其他實體任意產(chǎn)生的信息解密,不對自己一無所知的信息簽 名;另一條是決不對陌生人送來的隨機文檔簽名,簽名時首先使用One-Way Hash Function對文檔作HASH處理,或同時使用不同的簽名算法。除了利用公共模數(shù),人們還嘗試一些利用解密指數(shù)或φ(n)等等攻擊.

      3) 速度太慢,由于RSA 的分組長度太大,為保證安全性,n 至少也要 600 bitx以上,使運算代價很高,尤其是速度較慢,較對稱密碼算法慢幾個數(shù)量級;且隨著大數(shù)分解技術的發(fā)展,這個長度還在增加,不利于數(shù)據(jù)格式的標準化。目 前,SET(Secure Electronic Transaction)協(xié)議中要求CA采用2048比特長的密鑰,其他實體使用1024比特的密鑰。為了速度問題,目前人們廣泛使用單,公鑰密碼結合使 用的方法,優(yōu)缺點互補:單鑰密碼加密速度快,人們用它來加密較長的文件,然后用RSA來給文件密鑰加密,極好的解決了單鑰密碼的密鑰分發(fā)問題。

      2.2.2 ECC算法

      2.2.2.1 簡介

      1985年Neal Koblitz和Victor Miller分別獨立提出基于ECDLP(橢圓曲線離散對數(shù)問題)的ECC密碼系統(tǒng),自此ECC在密碼學界數(shù)學界引起了廣泛的越來越熱烈的研究興趣。經(jīng)過 諸多知名密碼學家和數(shù)學家近二十年的研究表明,ECC所基于的ECDLP較IFP和DLP(離散對數(shù)問題)更難解,目前人們能找到最有效的求解ECDLP 的算法(Pollard rho)也是指數(shù)級時間復雜度的。而近幾年數(shù)學家和密碼學家們已經(jīng)證明的一些結論暗示著ECDLP甚至可能不存在亞指數(shù)時間復雜度的求解算法,這暗示著 ECC可能是唯一無法用亞指數(shù)算法破解的公鑰密碼。

      在已知的公鑰密碼體制中,橢圓曲線密碼體制具有每bit 最高強度的安全性,最快的處理速度和最低的開銷,至今解決橢圓曲線離散對數(shù)最好的算法是完全指數(shù)時間算法。 而IFP 和DLP 都有亞指數(shù)時間算法,這意味著隨著長度的增加,求解ECDLP 的難度比求解IFP 和DLP 的難度增加得快得多。 因此ECC僅需要更小的密鑰長度就可以提供跟RSA 和DSA 相當?shù)陌踩浴?研究證明 ,基于橢圓曲線上的密碼體制使用160bit 的密鑰提供的安全性相當于RSA 和DSA 使用1024bit 密鑰提供的安全性,210bit 與2048bit 相當。 而且在私鑰運算(簽名和解密) 方面橢圓曲線上的密碼體制要比RSA 和DSA 快很多,但它的簽名驗證和加密速度太慢。 另外,ECC 系統(tǒng)的密鑰生成速度比RSA 快百倍以上。 同時,橢圓曲線資源豐富,同一個有限域上存在著大量不同的橢圓曲線,這為安全性增加了額外的保證。

      另外,ECC從實現(xiàn)的角度來看也有更高的效率。因為其具有密鑰短這一天然的優(yōu)勢,就比RSA有著更多的應用領域。由于橢圓曲線密碼的密鑰較短(如 160位ECC的私鑰長度僅為1024位RSA的1/6。4,160位公鑰長度僅為1024位RSA的1/3。2),這可以為智能卡這類資源極度受限的嵌 入式系統(tǒng)節(jié)省較多的存儲空間,使得其它程序可利用更多的存儲器來完成復雜的任務。而對于像芯片這樣的實現(xiàn)方式,密鑰短也能使整個生產(chǎn)的成本下降。在使用的 過程中也會由于密鑰短而得到更高的速度。

       

      2.2.2.2原理——橢圓曲線上的難題 

      橢圓曲線上離散對數(shù)問題ECDLP定義如下:給定素數(shù)p和橢圓曲線E,對Q=kP,在已知P,Q 的情況下求出小于p的正整數(shù)k??梢宰C明由k和P計算Q比較容易,而由Q和P計算k則比較困難。

      將橢圓曲線中的加法運算與離散對數(shù)中的模乘運算相對應,將橢圓曲線中的乘法運算與離散對數(shù)中的模冪運算相對應,我們就可以建立基于橢圓曲線的對應的 密碼體制。 

      例如,對應Diffie-Hellman公鑰系統(tǒng),我們可以通過如下方式在橢圓曲線上予以實現(xiàn):在E上選取生成元P,要求由P產(chǎn)生的群元素足夠多, 通信雙方A和B分別選取a和b,a和b 予以保密,但將aP和bP公開,A和B間通信用的密鑰為abP,這是第三者無法得知的。

      對應ELGamal密碼系統(tǒng)可以采用如下的方式在橢圓曲線上予以實現(xiàn):

      將明文m嵌入到E上Pm點,選一點B∈E,每一用戶都選一整數(shù)a,0<a<N,N為階數(shù)已知,a保密,aB公開。欲向A送m,可送去下面一對數(shù)偶: [kB,Pm+k(aAB)],k是隨機產(chǎn)生的整數(shù)。A可以從kB求得k(aAB)。通過:Pm+k(aAB)- k(aAB)=Pm恢復Pm。同樣對應DSA,考慮如下等式:

      K=kG  [其中 K,G為Ep(a,b)上的點,k為小于n(n是點G的階)的整數(shù)]

      不難發(fā)現(xiàn),給定k和G,根據(jù)加法法則,計算K很容易;但給定K和G,求k就相對困難了。

      這就是橢圓曲線加密算法采用的難題。我們把點G稱為基點(base point),k(k<n,n為基點G的階)稱為私有密鑰(privte key),K稱為公開密鑰(public key)。

       

      2.2.2.3 RSA與ECC的比較

      ECC和RSA相比,在許多方面都有對絕對的優(yōu)勢,主要體現(xiàn)在以下方面:

      1)抗攻擊性強。相同的密鑰長度,其抗攻擊性要強很多倍。

      2)計算量小,處理速度快。ECC總的速度比RSA、DSA要快得多。

      3)存儲空間占用小。ECC的密鑰尺寸和系統(tǒng)參數(shù)與RSA、DSA相比要小得多,意味著它所占的存貯空間要小得多。這對于加密算法在IC卡上的應用 具有特別重要的意義。

      4)帶寬要求低。當對長消息進行加解密時,三類密碼系統(tǒng)有相同的帶寬要求,但應用于短消息時ECC帶寬要求卻低得多。帶寬要求低使ECC在無線網(wǎng)絡 領域具有廣泛的應用前景。

      ECC的這些特點使它必將取代RSA,成為通用的公鑰加密算法。比如SET協(xié)議的制定者已

      把它作為下一代SET協(xié)議中缺省的公鑰密碼算法。

       

      下面兩張表示是RSA和ECC的安全性和速度的比較。

       

      攻破時間(MIPS年)

      RSA/DSA(密鑰長度)

      ECC密鑰長度

      RSA/ECC密鑰長度比

      104

      512

      106

      5:1

      108

      768

      132

      6:1

      1011

      1024

      160

      7:1

      1020

      2048

      210

      10:1

      1078

      21000

      600

      35:1

      RSA和ECC安全模長得比較

       

      功能

      Security Builder 1.2

      BSAFE 3.0

      163位ECC(ms)

      1,023位RSA(ms)

      密鑰對生成

      3.8

      4,708.3

      簽名

      2.1(ECNRA)

      228.4

      3.0(ECDSA)

      認證

      9.9(ECNRA)

      12.7

      10.7(ECDSA)

      Diffie—Hellman密鑰交換

      7.3

      1,654.0

      RSA和ECC速度比較

       

       

      2.3 散列算法(Hash)

      2.3.1簡介

      散列是信息的提煉,通常其長度要比信息小得多,且為一個固定長度。加密性強的散列一定是不可逆的,這就意味著通過散列結果,無法推出任何部分的原始 信息。任何輸入信息的變化,哪怕僅一位,都將導致散列結果的明顯變化,這稱之為雪崩效應。散列還應該是防沖突的,即找不出具有相同散列結果的兩條信息。具 有這些特性的散列結果就可以用于驗證信息是否被修改。

       

      2.3.1.1 Hash算法的功能和安全特性

      1.輸入報文的長度沒有限制;

      2.相同的輸入產(chǎn)生相同的輸出;

      3.對輸入任何報文,能生成固定長度的消息摘要(數(shù)字指紋);

      4.從報文能方便地算出摘要。

      5.隨機性:消息摘要看起來隨機,難以確定輸入/輸出的關系;

      6.唯一性:幾乎不可能找到兩個消息產(chǎn)生相同的消息摘要;

      7.單向性:即如果給出輸出,則很難確定出輸入消息。

       

      2.3.1.2 hash算法用途

      1)計算消息摘要

      2)用于數(shù)字簽名或公開信息的完整性驗證。計算MAC(Message Authentication Code)

      將保密信息和雙方共享的密鑰一起計算摘要,用于保密信息的完整性驗證。

      2.3.2 SHA-1

      在1993年,安全散列算法(SHA)由美國國家標準和技術協(xié)會(NIST)提出,并作為聯(lián)邦信息處理標準(FIPS PUB 180)公布;1995年又發(fā)布了一個修訂版FIPS PUB 180-1,通常稱之為SHA-1。SHA-1是基于MD4算法的,并且它的設計在很大程度上是模仿MD4的?,F(xiàn)在已成為公認的最安全的散列算法之一,并 被廣泛使用。

      NIST 發(fā)布了三個額外的 SHA 變體,每個都有更長的訊息摘要。以它們的摘要長度 (以位元計算) 加在原名后面來命名:"SHA-256", "SHA-384" 和 "SHA-512"。它們發(fā)布于 2001年的 FIPS PUB 180-2 草稿中,隨即通過審查和評論。包含 SHA-1 的 FIPS PUB 180-2,于 2002年以官方標準發(fā)布。這些新的散列函數(shù)并沒有接受像 SHA-1 一樣的公眾密碼社群做詳細的檢驗,所以它們的密碼安全性還不被大家廣泛的信任。2004年2月,發(fā)布了一次 FIPS PUB 180-2 的變更通知,加入了一個額外的變種 "SHA-224",定義了符合雙金鑰 3DES 所需的金鑰長度。

      三、加密算法的選擇

      前面的章節(jié)已經(jīng)介紹了對稱解密算法和非對稱加密算法,有很多人疑惑:那我們在實際使用的過程中究竟該使用哪一種比較好呢?

       

      我們應該根據(jù)自己的使用特點來確定,由于非對稱加密算法的運行速度比對稱加密算法的速度慢很多,當我們需要加密大量的數(shù)據(jù)時,建議采用對稱加密算 法,提高加解密速度。

       

      對稱加密算法不能實現(xiàn)簽名,因此簽名只能非對稱算法。

       

      由于對稱加密算法的密鑰管理是一個復雜的過程,密鑰的管理直接決定著他的安全性,因此當數(shù)據(jù)量很小時,我們可以考慮采用非對稱加密算法。

       

      在實際的操作過程中,我們通常采用的方式是:采用非對稱加密算法管理對稱算法的密鑰,然后用對稱加密算法加密數(shù)據(jù),這樣我們就集成了兩類加密算法的 優(yōu)點,既實現(xiàn)了加密速度快的優(yōu)點,又實現(xiàn)了安全方便管理密鑰的優(yōu)點。

       

      如果在選定了加密算法后,那采用多少位的密鑰呢?一般來說,密鑰越長,運行的速度就越慢,應該根據(jù)的我們實際需要的安全級別來選擇,一般來 說,RSA建議采用1024位的數(shù)字,ECC建議采用160位,AES采用128為即可。

      四、密碼學在現(xiàn)代的應用

      隨著密碼學商業(yè)應用的普及,公鑰密碼學受到前所未有的重視。除傳統(tǒng)的密碼應用系統(tǒng)外,PKI系統(tǒng)以公鑰密碼技術為主,提供加密、簽名、認證、密鑰管 理、分配等功能。

       

      保密通信:保密通信是密碼學產(chǎn)生的動因。使用公私鑰密碼體制進行保密通信時,信息接收者只有知道對應的密鑰才可以解密該信息。

       

      數(shù)字簽名:數(shù)字簽名技術可以代替?zhèn)鹘y(tǒng)的手寫簽名,而且從安全的角度考慮,數(shù)字簽名具有很好的防偽造功能。在政府機關、軍事領域、商業(yè)領域有廣泛的應 用環(huán)境。

       

      秘密共享:秘密共享技術是指將一個秘密信息利用密碼技術分拆成n個稱為共享因子的信息,分發(fā)給n個成員,只有k(k≤n)個合法成員的共享因子才可 以恢復該秘密信息,其中任何一個或m(m≤k)個成員合作都不知道該秘密信息。利用秘密共享技術可以控制任何需要多個人共同控制的秘密信息、命令等。

       

      認證功能:在公開的信道上進行敏感信息的傳輸,采用簽名技術實現(xiàn)對消息的真實性、完整性進行驗證,通過驗證公鑰證書實現(xiàn)對通信主體的身份驗證。

       

      密鑰管理:密鑰是保密系統(tǒng)中更為脆弱而重要的環(huán)節(jié),公鑰密碼體制是解決密鑰管理工作的有力工具;利用公鑰密碼體制進行密鑰協(xié)商和產(chǎn)生,保密通信雙方 不需要事先共享秘密信息;利用公鑰密碼體制進行密鑰分發(fā)、保護、密鑰托管、密鑰恢復等。

       

      基于公鑰密碼體制可以實現(xiàn)以上通用功能以外,還可以設計實現(xiàn)以下的系統(tǒng):安全電子商務系統(tǒng)、電子現(xiàn)金系統(tǒng)、電子選舉系統(tǒng)、電子招投標系統(tǒng)、電子彩票 系統(tǒng)等。

       

      公鑰密碼體制的產(chǎn)生是密碼學由傳統(tǒng)的政府、軍事等應用領域走向商用、民用的基礎,同時互聯(lián)網(wǎng)、電子商務的發(fā)展為密碼學的發(fā)展開辟了更為廣闊的前景。

      五、加密算法的未來

      隨著計算方法的改進,計算機運行速度的加快,網(wǎng)絡的發(fā)展,越來越多的算法被破解。

       

      在2004年國際密碼學會議(Crypto’2004)上,來自中國山東大學的王小云教授做的破譯MD5、HAVAL-128、MD4和 RIPEMD算法的報告,令在場的國際頂尖密碼學專家都為之震驚,意味著這些算法將從應用中淘汰。隨后,SHA-1也被宣告被破解。

       

      歷史上有三次對DES有影響的攻擊實驗。1997年,利用當時各國 7萬臺計算機,歷時96天破解了DES的密鑰。1998年,電子邊境基金會(EFF)用25萬美元制造的專用計算機,用56小時破解了DES的密鑰。 1999年,EFF用22小時15分完成了破解工作。因此。曾經(jīng)有過卓越貢獻的DES也不能滿足我們?nèi)找嬖鲩L的需求了。

       

      最近,一組研究人員成功的把一個512位的整數(shù)分解因子,宣告了RSA的破解。

       

      我們說數(shù)據(jù)的安全是相對的,可以說在一定時期一定條件下是安全的,隨著硬件和網(wǎng)絡的發(fā)展,或者是另一個王小云的出現(xiàn),目前的常用加密算法都有可能在 短時間內(nèi)被破解,那時我們不得不使用更長的密鑰或更加先進的算法,才能保證數(shù)據(jù)的安全,因此加密算法依然需要不斷發(fā)展和完善,提供更高的加密安全強度和運 算速度。

       

      縱觀這兩種算法一個從DES到3DES再到AES,一個從RSA到ECC。其發(fā)展角度無不是從密鑰的簡單性,成本的低廉性,管理的簡易 性,算法的復雜性,保密的安全性以及計算的快速性這幾個方面去考慮。因此,未來算法的發(fā)展也必定是從這幾個角度出發(fā)的,而且在實際操作中往往把這兩種算法 結合起來,也需將來一種集兩種算法優(yōu)點于一身的新型算法將會出現(xiàn),到那個時候,電子商務的實現(xiàn)必將更加的快捷和安全

        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多