安全性和演算法
現今網路的發達,使得網路的應用不僅僅是使用在電子商務或電子化辦公室而已,而是已融入到所有人的生活當中,除了帶來方便以外,伴隨而來的是網際網路安全性的問題。
網際網路傳輸數據會產生的四個主要問題:
・「竊聽」(Eavesdrop):在傳輸數據的過程中內容被偷取。
・「電子欺騙」(Spoofing):偽裝他人傳送或接收數據內容。
・「篡改」(Falsification):在傳輸數據的過程中內容被改動。
・「抵賴」(Repudiation):傳輸數據後不承認有傳送過。
對應上述問題的解決方法:
・「加密」(Encryption)
・「訊息鑑別碼」(Message Authentication Code)
・「數位簽章」(Digital Signature)
加密的基礎
・明文(Plain text):加密前的資料,發送方想要接收方獲得的資訊。
・密文(Cipher text):加密後的資料,是明文經過加密算法所產生的。
補充:現在網路的加密技術越來越重要,而電腦數據都是用0和1的2進位來管理。
對電腦而言,數據就是有意義的數字排列,加密就是對數據做運算,使其無法解讀。
而加密的計算是利用「金鑰」來運算數值,「金鑰」也是數字所組成。
反之。解密也是利用「金鑰」來將密文還原為原始數據。
雜湊函數
把輸入的數據轉換成固定長度且不規則的值的函數。類似果汁機的概念。
而輸出不規則的值,稱為「雜湊碼」(Hash Code),常用16進位來表示。
雜湊碼的五大特徵:
・輸出的數據長度不變
・輸入相同的值必定會產生相同的輸出值
・輸入數據相似,但有一點差異,輸出的值就會不同
・輸入完全不同的數據時,仍有可能得到相同的雜湊值
・雜湊碼無法倒推出原始數據
補充:輸入兩個相似的數據,即便只差一個數,所產生的兩個輸出內容就會完全不同。
輸入時,使用相同的數據及相同的雜湊演算法,得到的輸出會是一樣。
輸入時,使用不同的數據及相同的雜湊演算法,得到相同的輸出機率極低。
使用不同的數據中,得到相同的雜湊值,稱為「雜湊碰撞」(Hash Collision)。無論數據內容大小,透過雜湊演算法運算後,輸出的內容都會是固定的長度。
使用不同的雜湊演算法輸出的長度也不同。
雜湊是單向的,所以無法將雜湊演算法的輸出推算回原本的輸入。
雜湊函式的代表性演算法:・MD5(Message-Digest Algorithm5、訊息摘要演算法5)
・SHA-1(Secure Hash Algorithm1、安全雜湊演算法1)
・SHA-2(Secure Hash Algorithm2、安全雜湊演算法2)
MD5、SHA-1有安全疑慮,現在普遍使用『SHA-2』。
共用金鑰密碼系統
加密和解密時使用相同金鑰的加密方法。又稱「對稱式加密」(Symmetric Encryption)。
共用金鑰密碼系統:
・凱薩密碼(Caesar Cipher)
・AES(Advanced Encryption Standard、進階加密標準)
・DES(Data Encryption Standard、資料加密標準)
・一次性密碼本(One-Time Pad)
補充:共用金鑰有被偷窺的風險,所以有「金鑰傳送困難」的問題,而共用金鑰密碼系統需要能安全傳送金鑰的方法,解決的辦法包括了「金鑰交換協定」和「公開金鑰密碼系統」。
公開金鑰密碼系統
加密和解密時分別使用不同的金鑰,又稱「非對稱式加密」(Asymmetric Encryption)。加密使用的金鑰稱為「公開金鑰」(Public-Key),解密的金鑰是「私密金鑰」(Secret-Key)。
公開金鑰密碼系統:
・「RSA 加密演算法」
・「橢圓曲線密碼學」(Elliptic-Curve Cryptography)
補充:因使用公開金鑰有產生可信度問題的疑慮,所以要解決這個問題,就需要利用「數位憑證」這個方法。而公開金鑰另一個問題是,加密和解密都很費時,因此不適用於連續傳輸零碎數據,所以在傳輸連續數據時使用「混成密碼系統」。公開金鑰密碼計算過程必要條件:
⓵能用某個數加密數據
⓶能用其他的數計算還原原始數據
⓷能防止從一個金鑰推算出另一個金鑰的運算
混成密碼系統
結合「共用金鑰密碼系統」及「公開金鑰密碼系統」兩種方法,並彌補其缺點(安全性問題、處理速度問題)的密碼系統。
補充:用於確保網際網路資訊傳輸安全的安全協定「SSL」。SSL是安全通訊端層(Secure Sockets Layer)的縮寫。現在正式名稱為「TLS」傳輸層安全協議(Transport Layer Security)。常以「SSL/TLS」並列標示。
迪菲-赫爾曼金鑰交換
雙方之間安全交換金鑰的方法。「混合」運算雙方共享的秘密數和公開數後,就能安全交換雙方的共用金鑰。以下使用兩種類型的圖來演示
下圖步驟解析:・Alice準備好共用金鑰Y,並傳送給Bob。
・Alice和Bob分別準備秘密金鑰R、G。
・雙方分別合出公開金鑰RY與GY並互相傳送所合成的公開金鑰給予對方。
・雙方再使用對方傳來的公開金鑰合成新的秘密金鑰RGY。
下圖步驟解析:・A準備好質數p和生成元g,並傳送給B。
・A和B分別準備秘密數a、b。(必須比p-2小)
・雙方分別計算「(g的秘密數次方) mod p」。
・雙方互相傳送計算結果給對方。
・雙方用對方傳來的數,乘以自己的秘密數次方,計算mod p,A和B會獲得相同的計算結果K。(mod運算是用來求出除法後的餘數,「g mod p」表示用g除以p後的餘數。等同概念上的「合成」)
(即使偷窺通訊過程也無法使用得到的數算出A和B共享的數K及秘密數a和b。)
補充:合成金鑰方法有三特徵:
・即使有共用金鑰以及用其合成的金鑰也無法分解成金鑰,代表無法分解
・不管用幾個金鑰所合成的金鑰,都能做為合成新金鑰的元素,代表可以多次合成
・金鑰合成的結果與合成順序無關,只取決於使用哪個金鑰迪菲-赫爾曼金鑰交換是雙方只交換即使公開也沒關係的資訊,就能在兩人之間產生新的金鑰的方法,所以這方法也稱為「迪菲-赫爾曼金鑰演算法」。
訊息鑑別碼
實現「身份鑑別」和「檢查訊息完整性」兩種功能的機制。用來檢查在訊息傳遞過程中,其內容是否被更改過。
補充:MAC可以想像成由金鑰和密文排列組合成字串的「雜湊碼」。
MAC製作方式有:
・HMAC(Hash-based Message Authentication Code、雜湊訊息鑑別碼)
・OMAC(One-key Message Authentication Code、單金鑰訊息鑑別碼)
・CMAC(Cipher-based Message Authentication Code、加密訊息鑑別碼)
現在多半使用『HMAC』使用密碼無法檢查出是否遭竄改,所以需要訊息鑑別碼。然而使用訊息鑑別碼,需要雙方都能對訊息加密,並且能計算MAC,缺點就是雙方都擁有MAC,無法確定是何人做成的MAC。
數位簽章
在訊息鑑別碼裡,加入具有「不可抵賴性」的機制。利用傳送者才能製作「數位簽章」的數據,確定訊息的製作者。以數學演算法或其他方式運算對其加密而形成的電子簽章。
補充:數位簽章就是將「公開金鑰密碼系統」反過來使用。簽名者將訊息用私鑰加密(這是一種反用,因為通常公鑰密碼中私鑰用於解密),然後公布公鑰;驗證者使用公鑰將加密訊息解密並比對消息。數位簽章雖然具備「身份鑑別」、「檢查訊息完整性」、「不可抵賴性」的功能,但仍有一個問題。無法得知製作者是否是他人偽裝,因為收到的公開金鑰裡並不會有製作者的資訊。
數位憑證
建立擁有者的身份識別,並提供擁有者的公開金鑰。 數位憑證是由可信任的機構「憑證管理中心」所發出,並且只限用一段時間。 超過有效期限時,數位憑證就必須替換。
數位憑證主要功能:
・企業或個人在全球網路的身份確認
・網際網路的傳輸安全性及完整性
・網路資料傳輸的不可否認性
補充:根憑證機構(root CA),真實性由本身來證明。而根憑證機構用來證明自己的憑證,稱為「根憑證」(root certificate)。根憑證機構多為大企業或政府機關等已經獲得社會信賴的組織。與網站進行通訊時,也會用到數據憑證,這種憑證稱為「伺服器憑證」(server certificate),同樣是由憑證機構發行。個人憑證是與電子郵件地址綁在一起,伺服器憑證則是與網域連在一起。而透過憑證可以確認管理這個網域的組織,以及管理存放網站內容的伺服器的組織,兩者是同一個。這樣的社會機制,可以讓數位憑證透過憑證機構,來確保公開金鑰的製作者身份。而這一連串機制稱為「公開金鑰基礎架構」(Public Key Infrastructure,PKI,或稱公開金鑰基礎建設)。而此架構目的在於創造、管理、分配、使用、儲存以及復原數位憑證。