• 沒有找到結果。

非對稱式金鑰演算法

第二章 背景知識介紹

第一節 密碼學的分類

1.2 非對稱式金鑰演算法

為解決交換金鑰的問題,便有公開金鑰密碼系統之產生。公開金鑰密碼系統 改善了對稱式金鑰密碼系統的缺點,其加密金鑰與解密金鑰不是同一把,每一金 鑰對包含兩把相互對應的金鑰,一把是可以公開之金鑰,另一把是不可公開之私 鑰。

1976 年Diffie和Hellman首先提出了非對稱式金鑰的觀念,1978 年,三位麻 省理工學院教授 Rivest、Shamir和Adleman三人共同提出RSA非對稱式金鑰演算 法,利用不同的兩把金鑰來解決對稱式金鑰會遇到的問題。非對稱式金鑰之觀念 如下:

․ 每人擁有經運算產生之兩把金鑰稱金鑰對,一為公鑰(Public Key),一為私 鑰(Private Key)。公鑰將公佈給所有人知道。

․ 私鑰將由持有人自己持有,不能公開。公鑰加密的資料只有該金鑰對之私

鑰能解密,私鑰加密的資料只有該金鑰對之公鑰能解密。

․ 以送方私鑰加密資料,收方利用送方之公鑰解密,可達到確認該加密資料 一定為送方所送且可散發給任何人。此種方法使用在電子簽章。

․ 送方以收方之公鑰加密資料,收方以自己的私鑰解密,可達到該加密資料 一定只有收方才可解讀,而任何人均可送給收方。此種方法使用在文件加 密。

․ 因公鑰為公開,故理論上可利用公鑰反運算得到私鑰。但此反運算將耗時 過久而變得不切實際,因此得以保證私鑰之無法取得。但因此也使得正常 之加解密運算時間也較長。

․ 一般以RSA 運算來加解密。

圖 2-3.非對稱的加密方法

公鑰的加密系統是目前唯一能讓位於兩地的雙方安全分享資訊的方式,使用者不 必擔心傳送的密碼會被竊聽者用來攔截雙方的對談內容。因此,公鑰加密系統已 成為電子商務和虛擬私有網路〈VPN〉的運作基礎非對稱式金鑰演算法以 RSA 公開金鑰演算法為代表,以下為 RSA 演算法之步驟:

1.收報者取兩個相異的大質數 p、q 和另一個與(p-1)(q-1)互質的數 E,且 E<w 令 w=(p-1)(q-1) , E<w, n=pq

2.(公開)告訴發報者 E 與 n。

3.發報者將他的信號分成許多段,每段含 k-1 位數(十進位)(若 k=3(即 p、q 均為不小於二位的數),則信號 331414320001 應分段成 33,14,14,32,00,

01 ,一個一個的發出,設發報者的信號之一為 x(k-1 位數,即上面之 33,

或 14,或 32,…),則他將它作成 c = x E (mod n ) 發出。

4 收報者收到 c 之後,即可把原有的 x 求出來,因 E 與 w 互質,我們可找到二整 數 d、e;d>0 使得 ad+we=1,令 y c d (mod n) ,則此 y 即發報者之 x。

圖 2-4.RSA 演算法流程

這種密碼之關鍵在於 p、q 為兩大質數時,分解 m 成為 p、q 為一件極費時工作,

若分解不開 m,則找不到 w 與 d,因此就無法從 c 解得 x,在不久以前,要分解

一個數的因子仍停留在近乎硬試的階段,即要從 2,3,5,7,…,一直試到根 號 n 附近才停止。若 n 是 50 位數而 p、q 均近 25 位數,則分解 m 要除約 1025次,

若以電子計算機以每秒 106次的高速運算,這仍是一個 1011年的工作,目前由於 大家對這方面的重視,分解一個 50 位數的時間已可縮短至 1010次運算。

1.3 對稱式與非對稱式金鑰演算之比較

密碼系統分為對稱式(Symmetric)密碼系統及非對稱式(Asymmetric)密碼系 統,其特性、優缺點如下:

整數N,因數分解為P與Q之相乘,是很困難的,故可以達 到機密性。

․ 簡化金鑰分配及管理問題。

․ 使用數位簽章可達到不可否認性。

(3) 缺點: ․ 加解密運算複雜且速度較慢。

對稱式與非對稱式密碼系統各有其特性及優缺點,故目前一般均採用各自的優點 混合使用,例如資料加密即利用對稱式金鑰速度較快的優點將明文加密,再配合 非對稱式金鑰的加密機制來傳送對稱式金鑰。

第二節 公開金鑰基礎建設(Public Key Infrastructure)

2.1 公開金鑰基礎建設(PKI)與電子憑證

公開金鑰基礎建設(Public Key Infrastructure,PKI)是以公開金鑰密碼學技 術為基礎而衍生的架構,公開金鑰密碼技術為非對稱式演算法,以 RSA 演算法為 開金鑰密碼系統(Certificate-base Public Key Cryptosystem) ,也就是藉由公正的 第三者(CA)發給合法的數位憑證(Digital Certificate),在公開金鑰基礎建設模型 中,有以下四個主要元件:

1. 憑證使用者(Certificate User):使用者自己產生一組金鑰對之後,分別交給註 冊中心與憑證中心以取得一份憑證,或者在需要與另外一位使用者溝通時,

向憑證儲藏中心要求查詢這一位使用者的憑證。

2. 註冊中心(Registration Authority,RA):使用者將金鑰對交給註冊中心驗證之 後,註冊中心會產生一份經過認可但尚未簽署的憑證,交由憑證中心來完成 簽署。

3. 憑證中心(Certification Authority,CA):憑證中心在憑證上簽章,完成簽署手 續,並且存入憑證儲藏中心,讓憑證可以經由查詢而得到,如果憑證出現問 題,或者依使用者要求,憑證中心可以依照一定的程序來廢止憑證。

4. 憑證儲藏中心(Certification Repository):這裡儲存憑證中心簽署過的憑證,和 一份憑證廢止清單(Certificate Revocation List,CRL),上面列出了所有遭到 憑證廢止中心公告廢止的憑證,讓使用者可以隨時查詢得到最新的結果。

圖 2-5.PKI 的架構

在公開金鑰基礎建設中扮演最重要的角色就是憑證,憑證中最基本的資料包含公 開金鑰、使用者(Subject)的身分、憑證序號、憑證有效期限、簽發憑證的憑證中 心、及憑證中心所簽署的簽章,目前憑證最通用的標準是X.509 v3(ITU-T X.509 version 3),此標準提供最好的通用性及延展性。

2.2 X.509 憑證服務

X.509是國際電信組織(ITU-T)所制定的X.500目錄服務(directory serv -ice) 系列文件的其中之一,X.509 公開金鑰憑證規格歷經三次沿革,目前的版本為版 本三,三個版本間的差異性如下。

․X.509 版本一:1988 年提出,為X.500目錄服務中的一部份,定義出標準的憑 證格式。

․X.509 版本二:1993 年提出,在憑證中增加了兩個欄位,可以用來支援作目 錄存取控制。

․X.509 版本三:1996 年6 月提出。此版本在版本二中加入了預備的額外擴充 (extension)欄位,特殊的擴充欄位型態可能會被標準化或是被任何公司組織 所定義和註冊。ITU-T 定義了X.509 版本三的擴充欄位型態如:主體識別 (subject identification)、金鑰屬性(Key attribute)、策略映射(policy mapping)與憑證路徑限制(certificate path constraints)等。

在TBS (To Be Sign)憑證中發行者與主體唯一識別碼只有在X.509 版本二後才支 援,故若有此兩欄位,則憑證中版本欄位必是版本二或三,而擴充欄位則是在版 本三後才支援。

圖 2-6 X.509 三版本公開金鑰電子憑證比較 上圖說明了X.509v3憑證的組成欄位,以下說明各欄位的意義:

․Version: X.509憑證版本,其中第三版較前兩個版本多了一個擴充欄位(Exten

-sions)。

․Certificate serial number: 憑證中心所發出的憑證序號,此序號在該憑 證中心是唯一的。

․Signature Algorithm: 用來簽署這份憑證的簽章演算法代號。

․Issuer name: 憑證中心的身分,以X.500來表示。

․Period of validity: 包含兩個日期,利用"Not before"和"Not after"

兩個欄位來區隔憑證的有效期限。

․Subject name: 擁有這份憑證的使用者的身分。

․Subject's public key info: 憑證擁有者的公開金鑰資訊,包含公開金 鑰,演算法代號等。

․Issuer unique name: 憑證中心的唯一識別身分。

․Subject unique name: 憑證擁有者唯一識別身分。

․Extension: 其他擴充欄位。

․Signature: 整份憑證的簽章是由憑證中心來簽署的。

CA 發行憑證時採用公開金鑰演算法,利用CA 的私密金鑰依照憑證中指定的簽

圖 2-7 x.509 的金字塔制度

在 X.509 中,每一個合格的憑證上,都會有一個簽名。最下層的憑證 上,會有一個認證中心 (CA) 的簽名,表示這個認證中心 (CA) 檢查過,確認 所有者資料無誤。中間的認證中心 (CA) 上,也會有管轄它的最高層認證中心 (Root CA) 的簽名,表示最高層認證中心授權給它,可以簽發別人的憑證。只有 最高層認證中心上,因為它已經是最大,沒有再上層可以給它簽名了,所以只好 自己簽自己,憑證上的簽名是自己簽的。程式自己會認得幾家可靠的認證中心 (CA)碰到不認得伺服器的憑證 (Certificate)時 ,只要那個憑證上,有自己認得 的認證中心 (CA) 簽名保證過,那個憑證就沒有問題。

第三節 雜湊函數(Hash)

MD5 此訊息摘要(Message Digest)演算法是由提出RSA演算法中的MIT教 授Ron Rivest 所發展出來,其輸入任何長度的訊息產生輸出一128 位元的"finger

-print"或"message digest",輸入訊息會被分成好幾個512 位元的區塊來處理。雖 然較長的訊息摘要長度可以減少雜湊值碰撞的機率,但相對的運算時間會較長。

其演算法描述如下:

假設有一b 位元的訊息輸入要找出其訊息摘要,b 位元是一任意非負值的整 數也可以為0 值,並不需要是為8 位元的倍數且可為任意大值,此位元值可視為:

m_0 m_1…..m_{b-1},下面五個步驟說明如何計算出信息的訊息摘要。

(1)加上填充(Padding)位元

使用一組4 個Word 的緩衝器(A、B、C、D)來計算訊息摘要,A、B、C、

D 每一個皆是一32 位元的暫存器,使用下列16 位元的數值來初始化這些暫存 器一樣是低序位元組優先。

word A: 01 23 45 67 word B: 89 ab cd ef word C: fe dc ba 98

word D: 76 54 32 10 -rd 的暫存器ABCD;而這四個回合會分別更動這些暫存器的內容,利用sin 函數 來建構64 個元素表T[1…..64]。用T[i]來表示表中的第i 個元素,其值等於2 32 (abs(sin(i))的整數部份,這裡的i 表示為弧度(radians)。

(5) 輸出

訊息摘要產生的輸出是A、B、C、D,開頭用A 的低序位元組,末端用D 的高序位元組,成為128 位元的訊息摘要。

3.2 SHA-1演算法

安全雜湊演算法(Secure Hash Algorithm),是由美國國家安全局(NSA)所制 定,並由美國國家標準局(NIST)於1993年公布,SHA-1則是SHA在1994年的修定 版,修正一些SHA未經公佈的缺陷,SHA-1之設計理念與MD系列相似,但可以 處理較長(160位元)的雜湊值,亦可以處理小於2 位元的文件,處理速度比MD564 稍慢一些,但其雜湊值的長度較長,在地毯式搜尋及逆向攻擊(Inversion Attack) 下具有較高的安全度。SHA-1運作方式描述如下:

(1)添加附加內容

對於遇執行雜湊運算的訊息,先添加一字串,除第一個位元為1外,其他皆 為0,而此字串的長度加上原上原來訊息位元的長度除以512於48。在將原本的長 度,以64位元表示法,附加在最後,如此可以確保所有要輸入的訊息長度為512 個位元的整數倍。

(2) 開始計算雜湊值

SHA-1的運算程序與MD5相似,可以由下圖看出其做法,都是上一次輸出為 下一次壓縮函數的輸入。

圖2-8 雜湊函數運算示意圖

將訊息M以512位元為單位,分成若干個訊息區塊,依序如下圖所述的方式輸入 壓縮函數,執行雜湊運算,可得最後雜湊值

將訊息M以512位元為單位,分成若干個訊息區塊,依序如下圖所述的方式輸入 壓縮函數,執行雜湊運算,可得最後雜湊值

相關文件