安全

用密碼機制解決電子商務安全問題

2011-06-05
電子商務首要解決的問題包括:消費者在網路上傳輸的訂單須加密,不能被其他使用者輕易地解密而被使得訂單內容外洩;消費者在網路上下單後,該筆訂單即不能被無故的更動;消費者不能否認曾下訂單的事實。而上述問題,可以利用密碼機制的方式解決。
很多人常說「要注重資訊安全」或「我們的系統非常的安全」,但是安全是一種很抽象的名詞,「很安全」或「非常安全」均無法很客觀地表達出資訊安全的全貌,所以在討論資訊安全時,需要一些客觀的角度來分析。

在資訊安全領域裡,通常會以機密性(Confidential)、完整(Integrity)、可用性(Available)三個角度來評估資訊系統是否安全。

● 機密性:是指資料不論是放在系統上或在傳輸的過程中,均不能被無權限的使用者看到。適當的資料僅可被適當的人讀取,例如學生最關心的成績,同學之間應不能互相看到彼此的成績,只有授課老師才可以。如果學生可用某種方式取得其他學生的成績,就表示系統有機密性的安全問題。

● 完整性:意指資料不論是放在系統上或在傳輸的過程中,均不能被無權限的使用者竄改。例如電子商務的下單,當消費者送出訂單後,此訂單的內容,除了消費者本人外,誰都不能竄改此訂單的內容。如果其他人可以用某種方式,在不經消費者本人同意下竄改訂單內容,即表示系統有完整性的安全問題。

● 可用性:網路資訊服務的基礎是來自於服務主機(如網站伺服器),可用性即是評估服務主機能夠正常服務的程度。簡而言之,一般人期待服務主機能夠7×24全年無休的服務,但受限於主機的硬體或人力因素而無法達成。可用性分析即是評估主機能夠達到正常服務的最大時限。

但隨著電子商務的興起,除了上述傳統的C.I.A資安三元素外,又產生不可否認性和可鑑別來源性等其他的評估角度:

● 不可否認性:由於網路具有「匿名」的特性,任何人均可否認自己所發出的訊息,例如就算已證明訊息是由那一台電腦發出的,當事人依然可以否認,所持的理由是該台電腦曾有多人使用過,並無法證明是訊息是由當事人所發出。不可否認性評估,亦即評估系統機制是否能做到當使用者發出訊息時,該名使用者並不能否認訊息是由他發出的。

● 可鑑別來源性:如上所述,網路具有「匿名」的特性,並無法從訊息本身推論出來源。可鑑別來源性即是評估系統機制是否能做到,可從訊息本身推論出來源。

以「線上交易行為」為例,如下圖所示此為常見的電子購物流程,其交易流程如下:

1. 消費者上網挑選欲購買的產品。
2. 從網路上下訂單。
3. 廠商收到訂單後,以電話或電子郵件跟消費者確認無誤。
4. 將物品打包,並採貨到付款的方式,送至消費者的手上。

▲電子購物流程。

如果以上述資安角度來評估,此種電子商務流程可能會產生下列的問題:在機密性方面,如果消費者利用HTTP協定下訂單,傳輸的過程並未加密,所有的交易資訊均是以明碼的型式在網路上傳輸,任何有心人都可能攔截到此交易訊息,而造成訂單資訊的外洩漏洞。

若就完整性而言,如果沒有驗證訂單是否有被竄改過的機制,在傳輸的過程中即可能被網路其他惡意的使用者竄改資料,或是在廠商端被惡意更改。至於在不可否認性上,假若沒有驗證訂單是否真的為該消費者所發出的機制,消費者可輕易地否認該筆訂單。

簡而言之,電子商務首要解決的問題包括:消費者在網路上傳輸的訂單須加密,不能被其他使用者輕易地解密而被使得訂單內容外洩;消費者在網路上下單後,該筆訂單即不能被無故的更動;消費者不能否認曾下訂單的事實。

而上述問題,可以利用密碼機制的方式解決。以下說明相關的密碼系統。密碼系統可分為對稱式密碼(Symmetric)和非對稱式密碼(Asymmetric):

所謂的對稱式密碼,即傳輸的雙方在事前互相約定一個暗語(一般稱之為金鑰),而後利用這個金鑰來加解密文件,如下圖示。

▲使用對稱式密碼加密解密。

利用對稱式密碼可解決電子商務所面臨的困境,在機密性方面,其傳輸的過程均會以金鑰加解密,所以即使傳輸的資料被不相關的第三者擷取,由於對方並不會有用來加解密的金鑰,因此所得到的資料也僅是加密過後的資料,而無法解密來得知真正的資訊內容。

而在完整性上,資料在傳輸的過程中如果遭到惡意地更動,即無法以原先的金鑰成功的解密。因此,一旦資料能以原先的金鑰成功地解密,即表示資料在傳輸的過程中並未遭到更動。

另外一種驗證方式為以MD5的單向Hash的方式驗證(在後文中會再詳細解說)。至於不可否認性,因金鑰僅有傳送雙方所持有,一旦使用金鑰加密資訊並傳送後,即表示該份文件確為金鑰持有者所傳送。

對稱式密碼(Symmetric)最大優點在於運算速度快,但也有如下述的缺點。第一,加解密金鑰如何安全地傳送給對方,由於通訊雙方均使用同一把金鑰,在通訊之前,如何將該把金鑰安全的傳遞給對方即是一個問題。第二,當通訊雙方人數多時,加解密金鑰也須同步地增多,如何來維護龐大的金鑰數目將會是個問題,如下圖示。

▲當通訊雙方人數多時,加解密金鑰也須同步地增多,所以必須維護龐大的金鑰數目。

對稱式密碼常使用的密碼演算法包括DES(Data Encryption Standard)、IDEA(International Data Encryption Algorithm)、RC5(Ron’s Code)和AES(Advanced Encryption Standard)。可以利用Linux系統上的OpenSSL來實作DES的加解密,如下圖示。

(1) 新增一個檔案(/tmp/hello),內容為「hello world」。
(2) 利用OpenSSL加密(金鑰為1234),並將加密後的密文輸出到「/tmp/encryhello」。
(3) 顯示加密後的內容(此時該檔內容應為亂碼)。
(4) 利用OpenSSL解密(金鑰為1234),並將解密後的明文輸出到「/tmp/decryhello」。
(5) 顯示解密後的內容,確認已完整解密。

接著說明非對稱式密碼。為了解決對稱式密碼無法安全傳送金鑰及金鑰數目過多的困境,而有非對稱式密碼的機制產生。在非對稱式密碼系統中,每個人均會有兩把金鑰,稱為公共金鑰(Public Key)與私鑰(Private Key)。

公共金鑰是公開在網路上供大家自由下載,而私鑰則為個人保管,就如同個人的印章一樣,這兩把金鑰相輔相成,利用公共金鑰建立的密文,可利用相對應的私鑰解碼,反之,由私鑰所加密,也可利用相對應的公共金鑰解密。如下圖示:

▲利用公共金鑰與私鑰來加密和解密。

使用非對稱式密碼機制可以改進對稱式密碼無法安全傳送秘密金鑰及金鑰數量過多的問題,更可解決電子商務所面臨的困難。從機密性方面來看,在傳輸的過程均會以公共金鑰加密,所以即使傳輸的資料被不相關的第三者擷取,由於對方並不會有加解密的私鑰,因此所得到的資料也僅是加密過後的資料,而無法得知真正的資訊內容。

從完整性來看,資料在傳輸的過程中,如果遭到惡意的更動,即無法以原先的私鑰成功解密。因此,一旦資料能以原先的私鑰成功解密,即表示資料在傳輸的過程中並未遭到更動。

在不可否認性上,因為私鑰僅有傳送該方所持有,一旦使用私鑰加密資訊並傳送後,即表示該份文件確為私鑰持有者所傳送。此種特性又稱為數位簽章,使用者一旦利用私鑰在資料上加密,即如同現實生活中在文件上用印一樣。

非對稱式密碼雖然可解決對稱式密碼所面臨的困境,但是它的運算非常緩慢,因此在實務上會採用對稱式密碼與非對稱式密碼混合應用的方式。

▲對稱式密碼與非對稱式密碼混合應用。

以上圖為例,假如Alice要送資料給Bob,首先Alice會先以對稱式金鑰加密預傳送的資料(如圖中的密文),而後使用Bob的公鑰加密該把對稱式金鑰。接著,將資料密文及加密後的對稱式金鑰密文傳送給Bob。

當Bob收到資料後,會先以個人的私鑰解開加密後的對稱式金鑰密文,並取得對稱式金鑰,而後再以此對稱式金鑰解開資料密文,取得Alice所傳送的資料。

非對稱式密碼常使用的密碼演算法為RSA,如下例即為使用OpenSSL來利用RSA來加解密。

首先,產生private.pem私鑰(1,024位元長度):

接著,由私鑰產生public.pem公鑰:

隨後產生測試用檔案,檔名為file.txt:

使用openssl rsautl及公鑰(public.pem)file.txt加密,並產生file.ssl的加密檔案,此檔案為二進位檔案:

緊接著,利用私鑰針對file.ssl檔案解密,並將解密後的內容放進decrypted.txt的檔案:

最後,查看解密後的檔案,應為hello RSA:


追蹤我們Featrue us

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!