• 沒有找到結果。

加解密函數與雜湊函數

第二章 背景知識

2.4 加解密函數與雜湊函數

加解密的方法可以分為兩大類的運算系統:第一類為對稱式加密(Symmetric Encryption) ,第二類為非對稱式加密(Asymmetric Encryption)。然而,更有一 種將不固定長度訊息轉換成一串固定長度的亂數訊息的運算,稱為雜湊函數(Hash Function),以下將為這些函數一一介紹。

2.4.1 加解密函數介紹

首先對加解密運算系統中的對稱式加密做介紹,對稱式加密(Symmetric En-cryption)又稱秘密金鑰加密(Private-key Encryption),是指利用一把金鑰,同 時在加密與解密的過程中使用,這把金鑰必須妥善保管;而依其運算的過程不同,

又可以再分為兩類:一是串流式加密(Stream Ciphers),另一種是區塊式加密 (Block Ciphers)[9]。進行串流式加密時,每次只加密資料中的一個位元或是位 元組,直到所有資料加密完成才宣告結束。而利用區塊式加密時,會先將需要加 法(Brute Force)來破解此加密法也是十分容易。可是,它還有一個十分嚴重的缺 點,就是使用者跟伺服器都沒有辦法利用它,來判定的雙方身分是否正確,因此 它還是不能有效的提供我們高度安全的使用環境。於是,在實際應用上我們常會 將它搭配非對稱式加密法(Asymmetric Encryption)一起使用,藉由兩種方法的優 點來確保資料的安全性[9]。

目前比較具代表性的對稱式加密法乃是最被廣為使用的美國國家標準與技術

研究院(NIST)於2002年正式推出的下一代密碼演算法AES(Advance encryption standard)及之前著名的DES(Data Encryption Standard)密碼演算法都屬於此一 類型的加密方法。

非對稱式加密法(Asymmetric Encryption)又稱為公開金鑰加密(Public-key Encryption)[10]則是利用一組的金鑰對(Key pair)來進行加解密運算,每一組金 鑰對都包含兩把相互對應的金鑰,一把是可以公開的金鑰(簡稱公鑰),一把是必 須保持秘密的金鑰(簡稱私鑰),而且很難藉公鑰利用運算推導出私鑰。

非對稱式加密法在使用上來說,通常是將公開金鑰開放給其他的人使用,祕 密金鑰則由使用者自己使用。公開金鑰可以解開利用私密金鑰加密的文件,亦即 其他人可以解密使用者利用私密金鑰加密的文件,而其他人如果想要傳送加密的 文件給原使用者,則只要利用公開金鑰加密該文件,再送予使用者,使用者便可 利用私密金鑰進行解密動作。而現在使用的最廣泛、最常見非對稱性加密法便是 RSA演算法。

非對稱式加密法的最大優點在於金鑰安全性的提高,可以將公鑰公開給予所 有人知曉,無須擔心如對稱式加密法的金鑰傳送安全問題,只需注意私鑰的安全 性即可。不過非對稱式加密法的運算法較為複雜,因此有著運算速度慢的缺憾。

但這種方法也有另一個好處,由於金鑰對(Key pair)的特性,只要是利用公鑰所 解密的文件,即可十分肯定該文件的發布人是同一組金鑰對之私鑰持有人無誤,

因此在現實中,也常利用此一類的演算法(如RSA)來提供數位簽章的服務。

表 1 對稱與非對稱加密法比較

對稱式加密法 非對稱式加密法

加解密金鑰 相同 不同

金鑰可否公開 不可 公鑰公開,私鑰不公開

金鑰保管 與K人交換訊息,則需

保管與傳遞K把金鑰

不論與任何人交換訊 息,只需保管私密金鑰

加解密速度 快 慢

2.4.2 雜湊函數介紹

雜湊函式(Hash Function)是一種毋需金鑰的加密技術,其概念類似人的指 紋,利用雜湊函式來產生該資訊獨一無二的「數位指紋」(Digital fingerprint),

也就是所謂的雜湊值(Hash Value)。典型的雜湊函式都擁有無限定義域(任意長 度的輸入字串)和有限的值域(固定長度的輸出結果)以及下列幾項特性,如果輸入 一資料運算而得到雜湊值後,將原資料的任何一小部分內容改變,再求一次雜湊 值,將會得到一個完全不同的雜湊值,此為雜湊函式的擴張性 (Diffusion);因 此如果經雜湊運算得到兩個不同的雜湊值,我們便可以肯定這兩個雜湊值的原始 輸入一定不相同。而另一特性—抗碰撞性 (Collision Resistance),則是雜湊函 數還必須具備能夠讓每份不同資訊所產生的雜湊值都是唯一且相異,如果想要找 出兩份資訊輸出得到相同的雜湊值,在計算上是不可行的。所有雜湊函式除了具 有上述特性外,還具有不可逆的單向(One-Way)特性,故雜湊函式也稱為單向雜湊 函式(One-Way Hash Function),此處單向的意思是指,當輸入資料經過雜湊函式 運算得到雜湊值,是沒有辦法進行逆運算,還原成原本的資訊;因此,沒有辦法 利用運算得到的雜湊值來反推產生原始的輸入訊息。在使用上常見的雜湊函數有 MD5 及 SHA (Secure Hash Algorithm )。

傳 送 方 文 件 值作為數位簽章(Digital signature)的機制(如圖11),以此機制視同本人親筆簽

名的功用。其做法如下,在數位簽章的過程中,簽署者必須先利用單向雜湊函數 將電子文件轉換成固定長度的雜湊值,稱之為“摘要"(Digest)或是 “指紋"

(Fingerprint)。隨後再利用非對稱加密法的私鑰對該摘要進行加密動作,以產生 85.6mm(長) x 53.98mm(寬),厚度為0.8mm的長形卡片,因應不同的需求與功能要 求而其卡片構造略有差異,如電話卡與金融卡則是常見的智慧卡應用[11]。這項 設計是由德國Jurgen Dethloff和Helmut Grotrupp兩位學者在西元1968年所提 出,此兩位學者提出將所謂的積體電路結合在卡片中的想法,並獲得了專利權。

當時最早的應用乃是法國電信公司(Postal and Telecommunications Services) 的電話卡產品,在此之後晶片卡的應用便日益常見的出現在大眾的生活週遭,如 晶片金融卡、健保卡、手機SIM卡等亦是。

晶片卡如果依照內部結構來區分的話,可以分為記憶卡(Memory Card)及智慧 卡(Smart Card),記憶卡的成本比起智慧卡要低廉,它的記憶體容量約為256Bytes

~64KB大小,因其未內含CPU,故只具有儲存資料的功能而不能作邏輯或運算等處

晶片卡若是依照讀取的方式來區分,主要可以分為接觸式卡(Contact Card)、

非接觸式卡(Contactless Card)以及接觸式與非接觸式的混合卡(Combi-Card)三 種。接觸式智慧卡是指卡片上的晶片必須接觸讀卡機的讀寫頭才能進行資料的存

相關文件