本文將先說明資料傳輸機制,因為不想被第三者得知,所以必須搭配密碼加以保護,因此將講解對稱式與非對稱式密碼。最後,再簡單介紹開放原始碼界的訊息加密、驗證程式GPG,然後依據前面所講的理論來進行加密解密的實際操作。
身處於網路時代,有許多的機敏資訊均會透過公開的Internet網路傳輸,在這種情況下,一個能夠確保資料秘密傳輸且能完整與正確傳達到對方的機制,可說是相當重要。一般來說,會以資訊安全的三大原則(CIA),亦即機密性(Confidential)、完整性(Integrity)、可用性(Available),來討論資料秘密傳輸的機制。
認識資訊安全三大原則
接下來,分別說明資訊安全的三大原則(CIA)。
機密性(Confidential)
當資料在傳輸到對方的過程中,均不能被其他第三者所擷取並解讀。舉例來說,如果一個網站並未建立SSL傳輸(亦即使用者利用HTTP方式連線,而非使用HTTPS方式),此類的連線方式就表示使用者與網站的來往傳輸內容均是使用明碼的形式在Internet上進行傳輸,此時只要有惡意的第三者在資料傳輸所經過的節點上執行側錄(Sniffer)軟體,進行擷取封包並解讀的動作,即可取得使用者與網站的通訊內容,因此此類的傳輸機制缺乏機密性的保護。
完整性(Integrity)
當資料在傳輸到對方的過程中,均不能被其他不相關的第三者更動相關資料的內容。舉例來說,若使用未加密的HTTP連線與網站連線,惡意的第三者即可輕易地取得傳輸的內容,加以改寫內容,再重先送到伺服器。此時網站伺服器所取得的資訊便是被更改後的內容,而並非原先的內容。
可用性(Available)
網路資訊服務的基礎是來自於服務主機(例如網站伺服器)所提供的服務,可用性即是評估服務主機能夠提供服務的能量,例如是否可提供全年無休7×24的服務。
為了完成上述「機密性」和「完整性」的要求,可使用密碼系統來解決相關問題。因此本文將介紹一套頗富盛名的密碼軟體PGP(Pretty Good Privacy),但由於GPG為商業軟體,因此將以開源碼社群中GPG(GNU Private Guard,官方網址為https://www.gnupg.org/)來達到PGP的功能,並利用此套軟體來說明如何利用密碼系統的特性,以確保資料傳輸過程的安全。
淺論密碼系統
密碼的運用,可說是人類最古老的運用之一,如果有些機密資訊不想被第三者得知。通常接收方與傳送方會互相約定一個密碼,只有知道密碼的資訊,才能正確地接收且解讀所傳送的資訊。而依照應用的型態,密碼系統可分為對稱式(Symmetric)密碼與非對稱式(Asymmetric)密碼兩種,接著加以說明:
對稱式密碼系統
當傳送的雙方在傳輸資料之前,先行互相約定一個鑰匙(稱之為金鑰)的資訊,並互相持有此把金鑰。在傳送方傳送資料之前,即會先以此把金鑰來加密資料,再將加密後的資訊傳輸到接收方。同樣地,當接收方接收到加密後的資訊,就會使用同一把金鑰來解密,取得原來的文件內容。傳輸過程如圖1所示。
|
▲圖1 對稱式密碼運用流程。 |
對稱式密碼機制的優勢在於運算快速,常用的演算法有DES(Data Encryption Standard)、IDEA(International Data Encryption Algorithm)、RC5(Ron’s Code)、AES(Advanced Encryption Standard)等等,但最大的問題在於如何在安全的情況下將金鑰交付到雙方的手上。並且,隨著應用的成長,所需管理的金鑰數目也會大量成長,而難以管理,也因此而有非對稱式密碼(Asymmetric)系統的產生。
非對稱式密碼系統
相對於對稱式密碼,非對稱式密碼系統是利用公開金鑰(Public Key)和私有金鑰(Private Key)兩把金鑰來加解密文件(兩者須相互對應),說明如下所述: