信息安全與密碼技術

 

信息安全與密碼技術

 

 

一、安全需求與國家政策

密碼技術是保護信息安全的主要手段之一。密碼技術自古有之,到目前爲止,已經從外交和軍事領域走向公開,它並且是結合數學、計算機科學、電子與通信等諸多學科於一身的交叉學科,它不僅具有保證信息機密性的信息加密功能, 而且具有數字簽名、身份驗證、祕密分存、系統安全等功能。所以,使用密碼技術不僅可以保證信息的機密性,而且可以保證信息的完整性和確證性,防止信息被篡改、僞造和假冒。

選擇一個強壯的加密算法是至關重要的。此外,安全系統的結構和算法的實現以及通信協議也會影響到系統的安全性。

爲了防止密碼分析,可採取以下機制:

  1. 強壯的加密算法。一個好的加密算法往往只有用窮舉法才能得到密鑰,所以只要密鑰足夠長就會很安全。建議至少爲64位。
  2. 動態會話密鑰。每次會話的密鑰不同,即使一次會話通信被破解,不會因本次密鑰被破解而殃及其它通信。
  3. 保護關鍵密鑰(Key Encryption Key,KEK),定期變換加密會話密鑰的密鑰。因爲這些密鑰是用來加密會話密鑰的,泄漏會引起災難性後果。

基於密碼技術的訪問控制是防止數據傳輸泄密的主要防護手段。訪問控制的類型可分爲兩類:初始保護和持續保護。初始保護只在入口處檢查存取控制權限,一旦被獲准,則此後的一切操作不在安全機制控制之下。防火牆提供初始保護。連續保護指在網絡中的入口及數據傳輸過程中都受到存取權限的檢查,這是爲了防止監聽、重發和篡改鏈路上的數據來竊取對主機的存取控制。

密碼學包括密碼編碼學和密碼分析學,密碼體制的設計是密碼編碼學的主要內容,密碼體制的破譯是密碼分析學的主要內容,密碼編碼技術和密碼分析技術是相互依存,互相支持,密不可分的兩個方面。

從密碼體制方面而言,密碼體制有對稱密鑰密碼技術和非對稱密鑰密碼技術,對稱密鑰密碼技術要求加密解密雙方擁有相同的密鑰.而非對稱密鑰密碼技術是加密解密雙方擁有不相同的密鑰,在不知道陷門信息的情況下,加密密鑰和解密密鑰在計算上是不能相互算出的。通過後面的介紹,我們可以看出它們各自的優缺點。

密碼學不僅僅是編碼與破譯的學問,而且包括安全管理、安全協議設計、祕密分存、散列函數等內容。到目前爲止,密碼學中出現了大量的新技術和新概念,例如零知識證明技術、盲簽名、比特承諾、遺忘傳遞、數字化現金、量子密碼技術、混沌密碼等。

國家明確規定嚴格禁止直接使用國外的密碼算法和安全產品,這主要有兩個原因:一是國外禁止出口密碼算法和產品,所謂出口的安全的密碼算法國外都有破譯手段,二是恐怕國外的算法和產品中存在“後門”,關鍵時刻危害我國安全。其中1996年國家有關部門頒佈的27號文件嚴格制定的20字方針爲:“統一領導、集中管理、定點研製、專控經營、滿足使用”。當前我國的信息安全系統由國家密碼管理委員會統一管理。

清華大學具有開發研製信息安全產品和密碼算法的資格和能力,當前開發研製了多種密碼算法和安全系統,許多系統已經獲得了國家密碼委員會的批准和應用部門的使用。

二、對稱密鑰密碼技術

對稱(傳統)密碼體制是從傳統的簡單換位,代替密碼發展而來的,自1977年美國頒佈DES密碼算法作爲美國數據加密標準以來,對稱密鑰密碼體制得到了迅猛地發展,在世界各國得到了關注和使用。對稱密鑰密碼體制從加密模式上可分爲序列密碼和分組密碼兩大類。

1、序列密碼

序列密碼一直是作爲軍事和外交場合使用的主要密碼技術之一,它的主要原理是,通過有限狀態機產生性能優良的僞隨機序列,使用該序列加密信息流,(逐比特加密)得到密文序列,所以,序列密碼算法的安全強度完全決定於它所產生的僞隨機序列的好壞。衡量一個僞隨機序列好壞的標準有多種,比較通用的有著名的Golamb的三個條件,Rueppel的線性複雜度隨機走動條件,線性逼近以及產生該序列的布爾函數滿足的相關免疫條件等。

產生好的序列密碼的主要途徑之一是利用移位寄存器產生僞隨機序列, 典型方法有:

  • 反饋移位寄存器:採用n階非線性反饋函數產生大週期的非線性序列,例如M序列,具有較好的密碼學性質,只是反饋函數的選擇有難度,如何產生全部的M序列至今仍是世界難題。
  • 利用線性移位寄存器序列加非線性前饋函數,產生前饋序列,如何控 制序列相位及非線性前饋函數也是相當困難的問題,Bent序列就是其中 一類好的序列,我國學者對反饋序列和前饋序列的研究都取得了相當多的成果。
  • 鍾控序列,利用一個寄存器序列作爲時鐘控制另一寄存器序列(或自己控制自己)來產生鍾控序列,這種序列具有大的線性複雜度。
  • 組合網絡及其他序列,通過組合運用以上方法,產生更復雜的網絡,來實現複雜的序列,這種序列的密碼性質理論上比較難控制。
  • 利用混沌理論,細胞自動機等方法產生的僞隨機序列。
  • 對序列密碼攻擊的主要手段有代數方法和概率統計方法,兩者結合可以達到較好的效果。目前要求寄存器的階數大於100階,才能保證必要的安全。
  • 序列密碼的優點是錯誤擴展小,速度快,利於同步,安全程度高。

2、分組密碼

分組密碼的工作方式是將明文分成固定長度的組(塊),如64比特一組 ,用同一密鑰和算法對每一塊加密,輸出也是固定長度的密文。例如DES密碼算法的輸入爲64比特明文,密鑰長度56比特,密文長度64比特。

設計分組密碼算法的核心技術是:在相信複雜函數可以通過簡單函數迭 代若干圈得到的原則下,利用簡單圈函數及對合等運算,充分利用非線 性運算。以DES算法爲例,它採用美國國家安全局精心設計的8個S-Box 和P-置換,經過16圈迭代,最終產生64比特密文,每圈迭代使用的48比特子密鑰是由原始的56比特產生的。

DES算法加密時把明文以64bit爲單位分成塊,而後用密鑰把每一塊明文轉化成同樣64bit的密文塊。DES可提供72,000,000,000,000,000個密鑰,用每微秒可進行一次DES加密的機器來破譯密碼需兩千年。採用DES的一個著名的網絡安全系統是Kerberos,由MIT開發,是網絡通信中身份認證的工業上的事實標準。

DES(或其他分組密碼)算法的使用方式有4種,電子密本(ECB), 密碼分組鏈接(CBC),輸出反饋(OFB)和密文反饋(CFB)。

DES的密鑰存在弱密鑰,半弱密鑰和互補密鑰,選擇密鑰時要注意這些問題。DES受到的最大攻擊是它的密鑰長度僅有56比特,強力攻擊的代價低於1000萬美元,1990年S.Biham 和 A.Shamir提出了差分攻擊的方法,採用選擇明文247攻擊,最終找到可能的密鑰,M.Matsui 提出的線性分析方法,利用243個已知明文,成功地破譯了16圈DES算法,到目前爲止,這是最有效的破譯方法。

基於以上弱點,人們將DES算法作了多種變形,三重DES方式,獨立子密鑰方法,可變的S-Box及其使用次序以及推廣的GDES等。這些改變有些是增強了密碼算法的安全性,有些作用不大,有些還削弱了DES的安全性。

自從DES算法頒佈以來,世界各地相繼出現了多種密碼算法,之所以出現這些算法,有政治原因和技術原因,各國在商用方面都需要自己設計的密碼算法,不能依靠外國的算法,又因爲DES算法的弱點和軟件實現中面臨的位操作及大量的置換,設計壽命僅有5年,所以必須設計出更高強度的密碼算法,以代替DES,這些算法有:

LUCIFER算法,Madryga算法,NewDES算法,FEAL-N算法,REDOC算法, LOKI算法,KHUFU算法, KHAFRE算法,RC2及RC4算法,IDEA算法, MMB算法,CA-1.1算法,SKIPJACK算法,Karn 算法以及MDC算法等。其中多數算法爲專利算法。

以上這些算法有些已經遭到了破譯,有些安全強度不如DES,有些強度高於DES,有些強度不明,還有待於進一步分析。其中安全強度高於DES算法的如RC2及RC4算法,IDEA算法, SKIPJACK算法等。

清華大學研製開發了TUC系列密碼算法,已申請國家專利。

總之,因爲對稱密鑰密碼系統具有加解密速度快,安全強度高等優點,在軍事,外交以及商業應用中使用越來越普遍。

三、非對稱密鑰密碼技術

  1.  
    1. RSA公開密鑰密碼算法

      公開密鑰:n=pq,(p,q分別爲兩個互異的大素數,p,q 必須保密)

      e與(p-1)(q-1) 互素

      祕密密鑰:d=e-1 (mod (p-1)(q-1) )

      加密:c= me (mod n ), 其中m爲明文,c爲密文

      解密: m= cd (mod n )

      一般要求p,q爲安全素數,n的長度大於512bit ,這主要是因爲RSA算法的安全性依賴於因子分解大數問題。

      目前無論是軟件實現RSA還是硬件實現,速度無法同對稱密鑰密碼算法相比,因子分解問題也得到了長足發展,1995年人類成功地分解了128位十進制數RSA密碼算法,破譯512Bit 長的RSA指日可待。

    2. Diffie-Hellman密鑰交換協議

      設p爲512比特以上大素數,g<p,p,g公開,A與B通過對稱密鑰密碼體制進行保密通信,以下是A,B通過公開密鑰算法協商通信密鑰的協議。

      (1) A隨機選擇x<p,發送 gx (mod p ) 給B;

      (2) B隨機選擇y<p,發送 gy (mod p ) 給A;

      (3) A通過自己的x祕密計算 ( gy )x(mod p ) = gxy (mod p ) ;

      (4) B通過自己的y祕密計算 ( gx )y(mod p ) = gxy (mod p ) ;

      A與B擁有相同的數據 gxy (mod p )作爲共同的祕密密鑰進行保密通信。這裏的算法安全性主要依賴於有限域上的離散對數問題。

    3. DSA美國數字簽名算法

      公開密鑰:p :512至1024比特的素數(用戶組公用)

      q :爲(p-1)的160比特長的素因子(用戶組公用)

      g=h(p-1)/qmod q, 其中h<p-1,且g>1, (用戶組公用)

      y=gx mod p

      祕密密鑰:x<q

      簽名過程:k<q, 隨機選擇

      r=( gk mod p) mod q, s=( k-1 (H(m)+xr))mod q

      (r,s)作爲對消息m的簽名,H(x)爲安全的Hash(散列)函數

      驗證過程:w= s-1 mod q

      u1=(H(m)w) mod q

      u2=(rw) mod q

      v= ((gu1 yu2 mod p) mod q

      若v=r,則對m的簽名有效。

      其中H(x)可選擇美國推薦的標準算法SHA或MD5等安全散列算法。我們清華大學曾設計了一個安全的散列函數HAS。

      DSA算法的安全性也依賴於有限域上的離散對數問題,安全強度和速度均低於RSA算法,其優點是不涉及專利問題。

    4. 其他公鑰體制

1976年Diffie和Hellman以及Merkle分別提出了公開密鑰密碼體制的思想 ,這不同於傳統的對稱密鑰密碼體制,它要求密鑰成對出現,一個爲加密密鑰(e),另一個爲解密密鑰(d),且不可能從其中一個推導出另一個。自1976年以來,已經提出了多種公開密鑰密碼算法,其中許多是不安全的, 一些認爲是安全的算法又有許多是不實用的,它們要麼是密鑰太大,要麼密文擴展十分嚴重。多數密碼算法的安全基礎是基於一些數學難題, 這些難題專家們認爲在短期內不可能得到解決。因爲一些問題(如因子分解問題)至今已有數千年的歷史了。

公鑰加密算法也稱非對稱密鑰算法,用兩對密鑰:一個公共密鑰和一個專用密鑰。用戶要保障專用密鑰的安全;公共密鑰則可以發佈出去。公共密鑰與專用密鑰是有緊密關係的,用公共密鑰加密的信息只能用專用密鑰解密,反之亦然。由於公鑰算法不需要聯機密鑰服務器,密鑰分配協議簡單,所以極大簡化了密鑰管理。除加密功能外,公鑰系統還可以提供數字簽名。公共密鑰加密算法主要有:RSA(Receive、Shamir、Adelman)、Fertezza、EIGama等。

DSS(Digital Signature Standard)、Diffie-Hellman公鑰加密方法支持彼此互不相識的兩個實體間的安全通信,如信用卡交易,但缺乏對資源訪問的授權能力(存取控制)。公鑰加密算法中使用最廣的是RSA。RSA使用兩個密鑰,一個公共密鑰,一個專用密鑰。如用其中一個加密,則可用另一個解密,密鑰長度從40到2048bit可變,加密時也把明文分成塊,塊的大小可變,但不能超過密鑰的長度,RSA算法把每一塊明文轉化爲與密鑰長度相同的密文塊。密鑰越長,加密效果越好,但加密解密的開銷也大,所以要在安全與性能之間折衷考慮,一般64位是較合適的。RSA的一個比較知名的應用是SSL,在美國和加拿大SSL用128位RSA算法,由於出口限制,在其它地區(包括中國)通用的則是40位版本。

公用密鑰的優點就在於,也許你並不認識某一實體,但只要你的服務器認爲該實體的CA是可靠的,就可以進行安全通信,而這正是Web商務這樣的業務所要求的。例如信用卡購物。服務方對自己的資源可根據客戶CA的發行機構的可靠程度來授權。目前國內外尚沒有可以被廣泛信賴的CA。美國Natescape公司的產品支持公用密鑰,但把Natescape公司作爲CA。由外國公司充當CA在我國是一件不可想象的事情。

公共密鑰方案較保密密鑰方案處理速度慢,因此,通常把公共密鑰與專用密鑰技術結合起來實現最佳性能。即用公共密鑰技術在通信雙方之間傳送專用密鑰,而用專用密鑰來對實際傳輸的數據加密解密。另外,公鑰加密也用來對專用密鑰進行加密。

在這些安全實用的算法中,有些適用於密鑰分配,有些可作爲加密算法,還有些僅用於數字簽名。多數算法需要大數運算,所以實現速度很慢 ,不能用於快的數據加密。以下我們介紹一些典型的公開密鑰密碼算法 ,供大家參考。

人們一直努力在其他困難問題上建立公開密鑰密碼體制,不至於一旦一些數學難題被解決以後,沒有可用的密碼算法,所以出現了大量的公開密鑰密碼算法,包括:揹包體制,POHLIG-Hellman算法,Rabin算法,

ElGamal算法,SCHNORR算法,ESIGN算法,McEliece算法,OKAMOTO算法,還可以在有限域上的橢圓曲線上建立RSA,ElGamal算法等。

我們認爲RSA算法是目前最好的密碼算法,它不僅可以作爲加密算法使用,而且可以用作數字簽名和密鑰分配與管理,而DSA只適合作簽名,且安全強度和速度都不如RSA,橢圓曲線上的公開密鑰密碼系統安全強度依賴於曲線的選擇和體制,我們相信它會有更高的安全強度。

目前200比特長的橢圓曲線密碼體制已經有相當高的安全強度。

在幾乎所有的實用公開密鑰密碼系統中,都涉及到大數運算和素數選擇 ,模冪運算採用反覆平方取模算法,素數測試一般採用Rabin-Miller算 法,還有其他素性測試算法用來選擇大素數,如Solovag-Strassen 測試法,Lehmann 測試法等。

 

發佈了68 篇原創文章 · 獲贊 5 · 訪問量 4705
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章