加密與數字簽名

小雨vicky發表於2013-11-21
一、加密
 
  資料加密技術從技術上的實現分為在軟體和硬體兩方面。按作用不同,資料加密技術主要分為資料傳輸、資料儲存、資料完整性的鑑別以及金鑰管理技術這四種。
 
  在網路應用中一般採取兩種加密形式:對稱金鑰和公開金鑰,採用何種加密演算法則要結合具體應用環境和系統,而不能簡單地根據其加密強度來作出判斷。因為除了加密演算法本身之外,金鑰合理分配、加密效率與現有系統的結合性,以及投入產出分析都應在實際環境中具體考慮。
 
   對於對稱金鑰加密。其常見加密標準為DES等,當使用DES時,使用者和接受方採用64位金鑰對報文加密和解密,當對安全性有特殊要求時,則要採取 IDEA和三重DES等。作為傳統企業網路廣泛應用的加密技術,祕密金鑰效率高,它採用KDC來集中管理和分發金鑰並以此為基礎驗證身份,但是並不適合 Internet環境。
 
  在Internet中使用更多的是公鑰系統。即公開金鑰加密,它的加密金鑰和解密金鑰是不同的。一般對於每 個使用者生成一對金鑰後,將其中一個作為公鑰公開,另外一個則作為私鑰由屬主儲存。常用的公鑰加密演算法是RSA演算法,加密強度很高。具體作法是將數字簽名和 資料加密結合起來。傳送方在傳送資料時必須加上資料簽名,做法是用自己的私鑰加密一段與傳送資料相關的資料作為數字簽名,然後與傳送資料一起用接收方金鑰 加密。當這些密文被接收方收到後,接收方用自己的私鑰將密文解密得到傳送的資料和傳送方的數字簽名,然後,用釋出方公佈的公鑰對數字簽名進行解密,如果成 功,則確定是由傳送方發出的。數字簽名每次還與被傳送的資料和時間等因素有關。由於加密強度高,而且並不要求通訊雙方事先要建立某種信任關係或共享某種祕 密,因此十分適合Internet網上使用。
 
  下面介紹幾種最常見的加密體制的技術實現:
 
  1.常規金鑰密碼體制
 
  所謂常規金鑰密碼體制,即加密金鑰與解密金鑰是相同的。
 
  在早期的常規金鑰密碼體制中,典型的有代替密碼,其原理可以用一個例子來說明:
 
  將字母a,b,c,d,…,w,x,y,z的自然順序保持不變,但使之與D,E,F,G,…,Z,A,B,C分別對應(即相差3個字元)。若明文為student則對應的密文為VWXGHQW(此時金鑰為3)。
 
  由於英文字母中各字母出現的頻度早已有人進行過統計,所以根據字母頻度表可以很容易對這種代替密碼進行破譯。
 
  2.資料加密標準DES
 
  DES演算法原是IBM公司為保護產品的機密於1971年至1972年研製成功的,後被美國國家標準局和國家安全域性選為資料加密標準,並於1977年頒佈使用。ISO也已將DES作為資料加密標準。
 
  DES對64位二進位制資料加密,產生64位密文資料。使用的金鑰為64位,實際金鑰長度為56位(有8位用於奇偶校驗)。解密時的過程和加密時相似,但金鑰的順序正好相反。
  
  DES的保密性僅取決於對金鑰的保密,而演算法是公開的。DES內部的複雜結構是至今沒有找到捷徑破譯方法的根本原因。現在DES可由軟體和硬體實現。美國AT&T首先用LSI晶片實現了DES的全部工作模式,該產品稱為資料加密處理機DEP。
 
  3.公開金鑰密碼體制
 
  公開金鑰(public key)密碼體制出現於1976年。它最主要的特點就是加密和解密使用不同的金鑰,每個使用者儲存著一對金鑰 ? 公開金鑰PK和祕密金鑰SK,因此,這種體制又稱為雙鑰或非對稱金鑰密碼體制。
 
  在這種體制中,PK是公開資訊,用作加密金鑰,而SK需要由使用者自己保密,用作解密金鑰。加密演算法E和解密演算法D也都是公開的。雖然SK與PK是成對出現,但卻不能根據PK計算出SK。公開金鑰演算法的特點如下:
 
  1、用加密金鑰PK對明文X加密後,再用解密金鑰SK解密,即可恢復出明文,或寫為:DSK(EPK(X))=X  
  2、加密金鑰不能用來解密,即DPK(EPK(X))≠X 
 
  3、在計算機上可以容易地產生成對的PK和SK。 
 
  4、從已知的PK實際上不可能推匯出SK。 
 
  5、加密和解密的運算可以對調,即:EPK(DSK(X))=X 
 
  在公開金鑰密碼體制中,最有名的一種是RSA體制。它已被ISO/TC97的資料加密技術分委員會SC20推薦為公開金鑰資料加密標準。
 
二、數字簽名
 
  數字簽名技術是實現交易安全的核心技術之一,它的實現基礎就是加密技術。在這裡,我們介紹數字簽名的基本原理。
 
  以往的書信或檔案是根據親筆簽名或印章來證明其真實性的。但在計算機網路中傳送的報文又如何蓋章呢?這就是數字簽名所要解決的問題。數字簽名必須保證以下幾點:
 
  接收者能夠核實傳送者對報文的簽名;傳送者事後不能抵賴對報文的簽名;接收者不能偽造對報文的簽名。
  
  現在已有多種實現各種數字簽名的方法,但採用公開金鑰演算法要比常規演算法更容易實現。下面就來介紹這種數字簽名。
 
   傳送者A用其祕密解密金鑰SKA對報文X進行運算,將結果DSKA(X)傳送給接收者B。B用已知的A的公開加密金鑰得出 EPKA(DSKA(X))=X。因為除A外沒有別人能具有A的解密金鑰SKA,所以除A外沒有別人能產生密文DSKA(X)。這樣,報文X就被簽名了。
 
   假若A要抵賴曾傳送報文給B。B可將X及DSKA(X)出示給第三者。第三者很容易用PKA去證實A確實傳送訊息X給B。反之,如果是B將X偽造成 X',則B不能在第三者面前出示DSKA(X')。這樣就證明B偽造了報文。可以看出,實現數字簽名也同時實現了對報文來源的鑑別。
  
   但是上述過程只是對報文進行了簽名。對傳送的報文X本身卻未保密。因為截到密文DSKA(X)並知道傳送者身份的任何人,通過查問手冊即可獲得傳送者的 公開金鑰PKA,因而能夠理解報文內容。則可同時實現祕密通訊和數字簽名。SKA和SKB分別為A和B的祕密金鑰,而PKA和PKB分別為A和B的公開密 鑰。
 
三、金鑰的管理
 
  對稱金鑰加密方法致命的一個弱點就是它的金鑰管理十分困難,因此它很難在電子商務的實踐中得 到廣泛的應用。在這一點上,公開金鑰加密方法佔有絕對的優勢。不過,無論實施哪種方案,金鑰的管理都是要考慮的問題。當網路擴得更大、使用者增加更多時尤其 如此。一家專門從事安全性諮詢的公司Cypress Consulting的總裁CyArdoin說:“在所有加密方案中,都必須有人來管理金鑰。”
 
  目前,公認的有效方法是通過金鑰分配中心KDC來管理和分配公開金鑰。每個使用者只儲存自己的祕密金鑰和KDC的公開金鑰PKAS。使用者可以通過KDC獲得任何其他使用者的公開金鑰。
 
   首先,A向KDC申請公開金鑰,將資訊(A,B)發給KDC。KDC返回給A的資訊為(CA,CB),其 中,CA=DSKAS(A,PKA,T1),CB=DSKAS(B,PKB,T2)。CA和CB稱為證書(Certificate),分別含有A和B的公 開金鑰。KDC使用其解密金鑰SKAS對CA和CB進行了簽名,以防止偽造。時間戳T1和T2的作用是防止重放攻擊。
 
  最後,A將證書CA和CB傳送給B。B獲得了A的公開金鑰PKA,同時也可檢驗他自己的公開金鑰PKB。

相關文章