密鑰密碼體系

在公鑰體制中,加密密鑰不同於解密密鑰。 公鑰加密算法也稱非對稱密鑰算法,用兩對密鑰:一個公共密鑰和一個專用密鑰。 RSA使用兩個密鑰,一個公共密鑰,一個專用密鑰。

背景簡介

直到現代以前,密碼學幾乎專指加密算法:將普通信息(明文)轉換成難以理解的資料(密文)的過程;解密算法則是其相反的過程:由密文轉換回明文;密碼機(cipher或cypher)包含了這兩種算法,一般加密即同時指稱加密與解密的技術。 密碼機的具體運作由兩部分決定:一個是算法,另一個是鑰匙。鑰匙是一個用於密碼機算法的秘密參數,通常只有通訊者擁有。歷史上,鑰匙通常未經認證或完整性測試而被直接使用在密碼機上,密鑰來源於密碼技術領域。
在漢語口語中,電腦系統或網路使用的個人帳戶口令 (password)也常被以密碼代稱,雖然口令亦屬密碼學研究的範圍,但學術上口令與密碼學中所稱的鑰匙並不相同,即使兩者間常有密切的關連。

密鑰的定義

密鑰 正確讀音【mi yue】統一四聲
密鑰是一種參數,它是在明文轉換為密文或將密文轉換為明文的算法中輸入的數據.

密鑰的發展

對於普通的對稱密碼學,加密運算與解密運算使用同樣的密鑰。通常,使用的加密算法比較簡便高效,密鑰簡短,破譯極其困難,由於系統的保密性主要取決於密鑰的安全性,所以,在公開的計算機網路上安全地傳送和保管密鑰是一個嚴峻的問題。正是由於對稱密碼學中雙方都使用相同的密鑰,因此無法實現數據簽名和不可否認性等功能。此即為對稱密鑰體系,又稱通用密鑰體系。
20世紀70年代以來,一些學者提出了公開密鑰體制,即運用單向函式的數學原理,以實現加、解密密鑰的分離。加密密鑰是公開的,解密密鑰是保密的。這種新的密碼體制,引起了密碼學界的廣泛注意和探討,不像普通的對稱密碼學中採用相同的密鑰加密、解密數據,此即為非對稱密鑰體系,又稱公用密鑰體系。

密鑰密碼體系的分類

密鑰分為兩種:對稱密鑰與非對稱密鑰,所以密鑰密碼體系就分為兩個領域,通用密鑰體系和公用密鑰體系。

對稱密鑰加密

對稱密鑰加密,又稱私鑰加密,即信息的傳送方和接收方用一個密鑰去加密和解密數據。它的最大優勢是加/解密速度快, 適合於對大數據量進行加密,但密鑰管理困難。

非對稱密鑰加密系統

非對稱密鑰加密,又稱公鑰密鑰加密。它需要使用一對密鑰 來分別完成加密和解密操作,一個公開發布,即公開密鑰,另一 個由用戶自己秘密保存,即私用密鑰。信息傳送者用公開密鑰去 加密,而信息接收者則用私用密鑰去解密。公鑰機制靈活,但加密和解密速度卻比對稱密鑰加密慢得多。

通用密鑰體系

通用密鑰密碼體系的加密密鑰Ke和解密密鑰Kd是通用的,即傳送方和接收方使用同樣密鑰的密碼體制,也稱之為“傳統密碼體制”。
例如,人類歷史上最古老的“愷撒密碼”算法,是在古羅馬時代使用的密碼方式。由於無論是何種語言文字,都可以通過編碼與二進制數字串對應,所以經過加密的文字仍然可變成二進制數字串,不影響數據通信的實現。
現以英語為例來說明使用愷撒密碼方式的通用密鑰密碼體系原理。
例如:愷撒密碼的原理是,對於明文的各個字母,根據它在26個英文字母表中的位置,按某個固定間隔n變換字母,即得到對應的密文。這個固定間隔的數字n就是加密密鑰,同時也是解密密鑰。例cryptograsphy是明文,使用密鑰n=4,加密過程如圖所示:
明文: C R Y P T O G R A P H Y
| | |
| |................. | 密鑰:n=4
| | |
密文: F U B S W R J U D S K B
明文的第一個字母C在字母表中的位置設為1,以4為間隔,往後第4個字母是F,把C置換為F;同樣,明文中的第二個字母R的位置設為1,往後第4個字母是U,把R置換為U;依此類推,直到把明文中的字母置換完畢,即得到密文。密文是意思不明的文字,即使第三者得到也毫無意義。通信的對方得到密文之後,用同樣的密文n=4,對密文的每個字母,按往前間隔4得到的字母進行置換的原則,即可解密得到明文。
愷撒密碼方式的密鑰只有26種,只要知道了算法,最多將密鑰變換26次做試驗,即可破解密碼。因此,愷撒密碼的安全性依賴於算法的保密性。
通用密碼體制中,目前得到廣泛套用的典型算法是des算法。DES是由“轉置”方式和“換字”方式合成的通用密鑰算法,先將明文(或密文)按64位分組,再逐組將64位的明文(或密文),用56位(另有8位奇偶校驗位,共64位)的密鑰,經過各種複雜的計算和變換,生成64位的密文(或明文),該算法屬於分組密碼算法。
DES算法可以由一塊積體電路實現加密和解密功能。該算法是對二進制數位化信息加密及解密的算法,是通常數據通信中,用計算機對通信數據加密保護時使用的算法。DES算法在1977年作為數位化信息的加密標準,由美國商業部國家標準局制定,稱為“數據加密標準”,並以“聯邦信息處理標準公告”的名稱,於1977年1月15日正式公布。使用該標準,可以簡單地生成DES密碼。

公用密鑰體系

1976年提出公共密鑰密碼體制,其原理是加密密鑰和解密密鑰分離。加密技術採用一對匹配的密鑰進行加密、解密,具有兩個密鑰,一個是公鑰一個是私鑰,它們具有這種性質:每把密鑰執行一種對數據的單向處理,每把的功能恰恰與另一把相反,一把用於加密時,則另一把就用於解密。用公鑰加密的檔案只能用私鑰解密,而私鑰加密的檔案只能用公鑰解密。 公共密鑰是由其主人加以公開的,而私人密鑰必須保密存放。為傳送一份保密報文,傳送者必須使用接收者的公共密鑰對數據進行加密,一旦加密,只有接收方用其私人密鑰才能加以解密。 相反地,用戶也能用自己私人密鑰對數據加以處理。換句話說,密鑰對的工作是可以任選方向的。這提供了"數字簽名"的基礎,如果要一個用戶用自己的私人密鑰對數據進行了處理,別人可以用他提供的公共密鑰對數據加以處理。由於僅僅擁有者本人知道私人密鑰,這種被處理過的報文就形成了一種電子簽名----一種別人無法產生的檔案。 數字證書中包含了公共密鑰信息,從而確認了擁有密鑰對的用戶的身份。
這樣,一個具體用戶就可以將自己設計的加密密鑰和算法公諸於眾,而只保密解密密鑰。任何人利用這個加密密鑰和算法向該用戶傳送的加密信息,該用戶均可以將之還原。公共密鑰密碼的優點是不需要經安全渠道傳遞密鑰,大大簡化了密鑰管理。它的算法有時也稱為公開密鑰算法或簡稱為公鑰算法。
公鑰本身並沒有什麼標記,僅從公鑰本身不能判別公鑰的主人是誰。
在很小的範圍內,比如A和B這樣的兩人小集體,他們之間相互信任,交換公鑰,在網際網路上通訊,沒有什麼問題。這個集體再稍大一點,也許彼此信任也不成問題,但從法律角度講這種信任也是有問題的。如再大一點,信任問題就成了一個大問題。

證書

網際網路的用戶群決不是幾個人互相信任的小集體,在這個用戶群中,從法律角度講用戶彼此之間都不能輕易信任。所以公鑰加密體系採取了另一個辦法,將公鑰和公鑰的主人名字聯繫在一起,再請一個大家都信得過有信譽的公正、權威機構確認,並加上這個權威機構的簽名。這就形成了證書。
由於證書上有權威機構的簽字,所以大家都認為證書上的內容是可信任的;又由於證書上有主人的名字等身份信息,別人就很容易地知道公鑰的主人是誰。
1978年提出公共密鑰密碼的具體實施方案,即RSA方案。
1991年提出的DSA算法也是一種公共密鑰算法,在數字簽名方面有較大的套用優勢
公開密鑰密碼體制是現代密碼學的最重要的發明和進展。
在公鑰體制中,加密密鑰不同於解密密鑰。人們將加密密鑰公之於眾,誰都可以使用;而解密密鑰只有解密人自己知道。迄今為止的所有公鑰密碼體系中,RSA系統是最著名、使用最廣泛的一種。

CA(Certificate Authority)

電子簽證機關(即CA)。CA也擁有一個證書(內含公鑰),當然,它也有自己的私鑰,所以它有簽字的能力。網上的公眾用戶通過驗證CA的簽字從而信任CA,任何人都應該可以得到CA的證書(含公鑰),用以驗證它所簽發的證書。
如果用戶想得到一份屬於自己的證書,他應先向CA提出申請。在CA判明申請者的身份後,便為他分配一個公鑰,並且CA將該公鑰與申請者的身份信息綁在一起,並為之簽字後,便形成證書發給那個用戶(申請者)。
如果一個用戶想鑑別另一個證書的真偽,他就用CA的公鑰對那個證書上的簽字進行驗證(如前所述,CA簽字實際上是經過CA私鑰加密的信息,簽字驗證的過程還伴隨使用CA公鑰解密的過程),一旦驗證通過,該證書就被認為是有效的。
CA除了簽發證書之外,它的另一個重要作用是證書和密鑰的管理。
由此可見,證書就是用戶在網上的電子個人身份證,同日常生活中使用的個人身份證作用一樣。CA相當於網上公安局,專門發放、驗證身份證。

公開密鑰算法RSA

公開密鑰算法是在1976年由當時在美國史丹福大學的迪菲(Diffie)和赫爾曼(Hellman)兩人首先發明的(論文"New Direction in cryptography")。但目前最流行的RSA是1977年由MIT教授Ronald L.Rivest,Adi Shamir和Leonard M.Adleman共同開發的,分別取自三名數學家的名字的第一個字母來構成的。
1976年提出的公開密鑰密碼體制思想不同於傳統的對稱密鑰密碼體制,它要求密鑰成對出現,一個為加密密鑰(e),另一個為解密密鑰(d),且不可能從其中一個推導出另一個。自1976年以來,已經提出了多種公開密鑰密碼算法,其中許多是不安全的, 一些認為是安全的算法又有許多是不實用的,它們要么是密鑰太大,要么密文擴展十分嚴重。多數密碼算法的安全基礎是基於一些數學難題, 這些難題專家們認為在短期內不可能得到解決。因為一些問題(如因子分解問題)至今已有數千年的歷史了。
公鑰加密算法也稱非對稱密鑰算法,用兩對密鑰:一個公共密鑰和一個專用密鑰。用戶要保障專用密鑰的安全;公共密鑰則可以發布出去。公共密鑰與專用密鑰是有緊密關係的,用公共密鑰加密的信息只能用專用密鑰解密,反之亦然。由於公鑰算法不需要在線上密鑰伺服器,密鑰分配協定簡單,所以極大簡化了密鑰管理。除加密功能外,公鑰系統還可以提供數字簽名。
公鑰加密算法中使用最廣的是RSA。RSA使用兩個密鑰,一個公共密鑰,一個專用密鑰。如用其中一個加密,則可用另一個解密,密鑰長度從40到2048bit可變,加密時也把明文分成塊,塊的大小可變,但不能超過密鑰的長度,RSA算法把每一塊明文轉化為與密鑰長度相同的密文塊。密鑰越長,加密效果越好,但加密解密的開銷也大,所以要在安全與性能之間折衷考慮,一般64位是較合適的。RSA的一個比較知名的套用是SSL,在美國和加拿大SSL用128位RSA算法,由於出口限制,在其它地區(包括中國)通用的則是40位版本。
RSA算法研製的最初理念與目標是努力使網際網路安全可靠,旨在解決DES算法秘密密鑰的利用公開信道傳輸分發的難題。而實際結果不但很好地解決了這個難題;還可利用RSA來完成對電文的數字簽名以抗對電文的否認與抵賴;同時還可以利用數字簽名較容易地發現攻擊者對電文的非法篡改,以保護數據信息的完性。 公用密鑰的優點就在於,也許你並不認識某一實體,但只要你的伺服器認為該實體的CA是可靠的,就可以進行安全通信,而這正是Web商務這樣的業務所要求的。例如信用卡購物。服務方對自己的資源可根據客戶CA的發行機構的可靠程度來授權。目前國內外尚沒有可以被廣泛信賴的CA。美國Natescape公司的產品支持公用密鑰,但把Natescape公司作為CA。由外國公司充當CA在我國是一件不可想像的事情。
公共密鑰方案較保密密鑰方案處理速度慢,因此,通常把公共密鑰與專用密鑰技術結合起來實現最佳性能。即用公共密鑰技術在通信雙方之間傳送專用密鑰,而用專用密鑰來對實際傳輸的數據加密解密。另外,公鑰加密也用來對專用密鑰進行加密。
在這些安全實用的算法中,有些適用於密鑰分配,有些可作為加密算法,還有些僅用於數字簽名。多數算法需要大數運算,所以實現速度很慢,不能用於快的數據加密。以下將介紹典型的公開密鑰密碼算法-RSA。
RSA算法很好的完成對電文的數字簽名以抗對數據的否認與抵賴;利用數字簽名較容易地發現攻擊者對電文的非法篡改,以保護數據信息的完整性。目前為止,很多種加密技術採用了RSA算法,比如PGP(PrettyGoodPrivacy)加密系統,它是一個工具軟體,向認證中心註冊後就可以用它對檔案進行加解密或數字簽名,PGP所採用的就是RSA算法。由此可以看出RSA有很好的套用。

密鑰的產生

1. 選擇兩個大素數,p 和q 。
2. 計算: n = p * q (p,q分別為兩個互異的大素數,p,q 必須保密,一般要求p,q為安全素數,n的長度大於512bit ,這主要是因為RSA算法的安全性依賴於因子分解大數問題)。有歐拉函式 (n)=(p-1)(q-1)。
3. 然後隨機選擇加密密鑰e,要求 e 和 ( p - 1 ) * ( q - 1 ) 互質。
4. 最後,利用Euclid 算法計算解密密鑰d, 滿足de≡1(mod φ(n))。其中n和d也要互質。數e和n是公鑰,d是私鑰。兩個素數p和q不再需要,應該丟棄,不要讓任何人知道。
加密與解密
1. 加密信息 m(二進制表示)時,首先把m分成等長數據塊 m1 ,m2,..., mi ,塊長s,其中 2^s <= n, s 儘可能的大。
2. 對應的密文是:ci ≡mi^e ( mod n ) ( a )
3. 解密時作如下計算:mi ≡ci^d ( mod n ) ( b ) RSA 可用於數字簽名,方案是用 ( a ) 式簽名, ( b )式驗證。

相關詞條

熱門詞條

聯絡我們