Chapter 16 網路管理與安全
本章提要 16-4 資料加密與解密 16-5 數位簽章 16-6 公開金鑰基礎建設(PKI)
16-4 資料加密與解密 16-4-1 資料安全機制的目標 16-4-2 不可還原的編碼函數 16-4-3 對稱金鑰加解密函數 16-4-4 非對稱金鑰加解密函數 16-4-5 雜湊函數
16-4-1 資料安全機制的目標 隨著網路的普及, 資料透過網路傳遞已是生活的一部份了。然而電子化的資料容易被複製、偽造、修改或破壞, 為了避免別人非法存取我們的資料, 資料安全機制應運而生。資料安全機制的目標有: 1. 完整無誤(Integrity):確認從網路收到的資料是正確的, 途中沒有被篡改或變造。
資料安全機制的目標 2. 身分驗證(Authentication):確認資料發送者的身分, 使發送者無法假冒他人身分發送資料。 3. 不可否認(Nonrepudiation):使發送者無法否認這份資料是他所發出的。 4. 資訊保密(Confidentiality):確保資料在網路上傳遞時不會被他人竊知內容。
16-4-2 不可還原的編碼函數 若不想在傳輸途中洩密, 則最好將資訊經過編碼處理, 產生另一段編碼過的資訊。舉例來說, 我們可以用 A 取代 Z, B 取代 W... 等規則, 將原來的內容轉換成新的編碼資料。 傳送到目的地後, 再依照相反的步驟還原回來:
不可還原的編碼函數
不可還原的編碼函數 只是這種原始的編碼程序實在過於簡陋, 編碼前後資料的關聯性高, 就算事先不知道編碼規則, 依據關聯性也可以逐步推算出編碼規則。知道了編碼規則, 就可以輕易得知原始資料。 這種可以輕易推算出編碼規則而還原資料的編碼函數, 安全性不夠, 也因此被淘汰掉。
不可還原的編碼函數 新一代的編碼函數所產生的編碼資料的關聯性非常低, 很難藉此推算出原始資料。這類編碼函式會打散資料之間的關聯性, 原始資料上只要有一個位元不同, 所產生的編碼資料就會有天壤之別。 即使知道了編碼函數的運算規則以及編碼資料, 還是未必能倒推出『原始資料』:
不可還原的編碼函數
不可還原的編碼函數 由於這類編碼函數具備了強大的『不可還原』威力, 其所衍生出的『非對稱金鑰加解密函數』、『對稱金鑰加解密函數』與『雜湊(Hash)函數』也就成了現今資料安全機制運作上的重要碁石。
不可還原的編碼函數
16-4-3 對稱金鑰加解密函數 採用『對稱金鑰加解密函數』的資料加解密系統, 稱為對稱式加解密系統, 又稱為密鑰(Secret Key)加解密系統。對稱式加解密系統的定義如下: 利用相同的密鑰與加解密函數, 以執行加密與解密的動作。
對稱金鑰加解密函數
對稱金鑰加解密函數 在對稱式加解密系統中, 若沒有密鑰, 即使知曉加密函數與解密函數的內容, 依舊無法依據『密文資料』推算出『明文資料』。這個缺乏密鑰便不可還原的特性, 也就成了對稱式加解密系統的安全屏障。 對稱式加解密系統最主要的功能當然是資料加密, 除此之外也可應用在驗證身份上。 利用對稱式加解密函數來進行身份驗證時, 其基本原理如下:
對稱金鑰加解密函數 A、B 兩位使用者各自擁有一把相同的 K 密鑰, 且 A、B 互信對方不會將 K 密鑰分送給他人。 A 利用 K 密鑰將一段明文文字加密為加密文字, 然後將加密文字送給尚未驗證身份的 X 使用者。若 X 可用 K 密鑰將加密文字解密為明文文字, 則 A 即可相信 X 就是 B。
對稱金鑰加解密函數 我們也可從 B 使用者的角度來看上述動作:B 使用者收到來自不明身份 Y 使用者的一段加密文字, 若 B 可用 K 密鑰將加密文字解密為明文文字, 則 B 可相信 Y 就是 A。 因此, 透過上述加密 / 解密的程序, 使用者 A、B 即可相互確認對方的身份。
密鑰分享 利用對稱式加密法來進行驗證時, 參予驗證的雙方必須事先取得密鑰, 也就是分享密鑰。 密鑰分享必須透過安全的管道。那麼, 如何在驗證前建立安全的管道呢?最簡單的方式就是直接貼在對方耳朵上, 悄悄地把密碼告訴他。 當然, 還有許多比較聰明的作法, 例如我們接下來所要介紹的非對稱加解密系統。
16-4-4 非對稱金鑰加解密函數 採用『非對稱金鑰加解密函數』的資料保密系統稱為非對稱加解密系統, 又稱為公鑰(Public Key)加解密系統。非對稱加解密系統的定義如下: 利用一對不同的公鑰(Public Key)與私鑰(Private Key)搭配加解密函數, 以執行加密與解密的動作。 以公鑰加密而成的密文, 只有用私鑰才能解譯出明文;以私鑰加密而成的密文, 只有用公鑰才能解譯出明文。這就是非對稱加解密系統的奇特之處。
非對稱金鑰加解密函數
非對稱金鑰加解密函數 在非對稱加解密系統中, 加密與解密時各自使用不同的金鑰。使用者先自行產生一對金鑰:一隻公鑰, 一隻私鑰。將公鑰公佈給眾人知道, 並將自己的私鑰藏好。儘管公鑰公開給眾人知情, 但有了公鑰並沒有辦法推算出私鑰來。 若使用者想傳送文件, 只需將自己的文章透過私鑰加密, 再傳送出去, 對方收到這份密文後, 發現可以用其所公佈的公鑰解譯出明文, 便可確認這份明文是該使用者發出的。
非對稱金鑰加解密函數 同樣的, 若有人想發送秘密文件給該使用者, 只需以該使用者的公鑰將文件加密成密文, 再傳送出去, 如此一來這份密文就只有持有相對應私鑰的這位使用者才有辦法解譯出來。 若兩人之間想進行秘密資料傳輸, 只需將資料先以已方的私鑰加密, 然後以對方的公鑰再加密一次, 經過兩道加密程序後才傳送出去。
非對稱金鑰加解密函數 如此一來, 不但可以確保資料在傳送途中不會被竊知, 也可以確認資料發送者的真實身分。簡言之, 用私鑰加密是為了確認身分;用公鑰加密則是為了保密, 這是一般常見的應用。 只是, 由於非對稱加解密函數的複雜程度通常都高於對稱式加解密函數, 若完全採用非對稱加解密系統, 對電腦運算是一大負擔。所以在實際的應用上大都搭配對稱式加解密函數與雜湊函數一併使用。
16-4-5 雜湊函數 雜湊函數的用途極為廣泛, 在此僅說明雜湊函數的特性及其資料安全方面的應用。 雜湊函數主要用來產生雜湊值(Hash Value), 其關係如下圖所示:
雜湊函數 利用雜湊函數來產生雜湊值時, 具有下列特性: 輸入雜湊函數的資料沒有長度的限制。 雜湊值的長度固定。 雜湊函數的運算不會太複雜, 亦即電腦在執行時不會耗費太多 CPU 資源。 雜湊函數具有單向特性, 因此實務上無法利用雜湊值來求出輸入的原始資料。 即使輸入的資料僅有一個位元不同, 產生的雜湊值卻會有很大的差異。
雜湊函數 雜湊函數可以應用在許多方面, 後文只討論利用雜湊函數建立對稱式加解密系統的密鑰。非對稱式加解密系統所要保護的則是私鑰, 且其私鑰與公鑰皆由電腦程式自行產生, 所以用不到雜湊函數。 密鑰其實是一組字串, 它在加密 / 解密的過程中, 扮演重要的角色。
雜湊函數 任何人只要取得密鑰即可執行加密 / 解密的動作。因此, 使用者必須對密鑰妥善保護。 保護密錀最理想的方法當然是使用者把密鑰背起來。但由於密鑰長度攸關加密法的安全性, 它的長度通常都很長, 例如 64 位元或 128 位元。對任何使用者而言, 都不可能記憶這麼長的資料。因此, 在實際應用上, 使用者通常只要記憶一個很短的密碼, 然後透過雜湊函數, 即可產生 64 位元或 128 位元的雜湊值, 再以它作為密鑰。
16-5 數位簽章 在實際的網路應用場合上, 若 A 君想以自己的名義發表一份電子文件, 那他就可以在文件末尾附上『數位簽章』(Digital Signature), 證明這份文件確實是自己發出的, 並可確保文件內容不會被篡改。 要解釋數位簽章為何有這樣的功能之前, 我們得先瞭解數位簽章是如何產生的。
16-5-1 數位簽章的產生流程
數位簽章的產生流程 首先將電子文件經過雜湊函數處理, 產生一份文件摘要(也就是 16-5-5 所謂的雜湊值)。從先前對於雜湊函數的介紹, 我們可以知道無論這份電子文件有多大, 所產生的摘要都是同樣的長度, 而且無法從這份摘要反向推得文件內容。
數位簽章的產生流程 再以傳送者的私鑰對摘要加密, 所產生的結果便是數位簽章。這裡要強調的是:不是對整份電子文件加密, 而是對摘要加密!換言之, 即使文件長度從 1 KB 增加到 10 MB, 因為所產生的摘要都是同樣長度, 所以這加密步驟所花費的時間並不會增加。
數位簽章的產生流程 事實上, 第 2 步驟的動作就是一般人所謂的『簽署』(Sign), 而所產生的結果在法律上稱為『簽體』。但是日常生活中很少人使用簽體這個名詞, 還是習慣稱為數位簽章。 產生數位簽章後, 將它附在電子文件資料一併傳送出去。對方收到這份附上數位簽章的電子文件後, 便會透過下列步驟查驗文件的正確性和寄件人的身分:
數位簽章的產生流程
數位簽章的產生流程 接收端收到附有數位簽章的電子文件後, 便用 A 君的公鑰將數位簽章解密, 得到一份文件摘要, 假設稱為 D1;並使用雜湊函數(與第 1 步驟所用的雜湊函數相同)同樣對文件資料產生一份文件摘要, 假設稱為 D2。 若 D1 與 D2 不同, 問題可能出在 D1-發送者根本不是 A 君, 所以用 A 君的公鑰解密而得的 D1 不是正確的摘要;或者問題在於 D2-文件資料遭竄改, 以致於 D2 並非正確的摘要。
16-5-2 數位簽章與電子簽章的差異 台灣於 2002 年 4 月 1 日實施電子簽章法, 為電子文件和電子簽章建立了法源依據, 賦予它們法律效力。 可是許多人常常將數位簽章與電子簽章混淆, 以為兩者是同樣的東西。其實當初制定電子簽章法時, 就已經對兩者做了以下的釐清:
數位簽章與電子簽章的差異 數位簽章(Digital Signature)係指對於電子文件以數學或其他方式, 轉換為特定長度的數位資料(也就是前文所述的『文件摘要』), 再以簽署人私鑰對該資料加密而形成數位簽章, 並得以簽署人公鑰加以驗證者。 電子簽章(Electronic Signature)則包括了數位簽章, 及使用指紋、聲紋、視網膜、DNA、靜脈紋路等等生物辨識技術所製作的資料。
數位簽章與電子簽章的差異 所以電子簽章的涵蓋面比數位簽章更廣、在應用上更有彈性, 這也正是立法院將『數位簽章法』改名為『電子簽章法』的原因。 既然電子簽章的定義這麼廣, 是不是任何一種辨識技術所製作的資料, 都能成為電子簽章呢?
數位簽章與電子簽章的差異 其實依據電子簽章法的規定, 必須具備以下 3 要件才能視為電子簽章: 1. 電子簽章必須依附在電子文件上。 2. 必須能利用電子簽章辨識簽署人的身分。 3. 必須能利用電子簽章辨識電子文件的真偽。 舉例而言, 小明將自己的簽名以掃描器輸入成為圖檔, 將此簽名圖檔附在電子文件上傳送給小華, 那麼該簽名圖檔能否視為電子簽章呢?此文件是否具有法律效力呢?
數位簽章與電子簽章的差異 由於小華無法從簽名圖檔判斷該文件確實是小明傳來的(因為曾收過簽名圖檔的人, 都可以利用該圖檔冒充小明);更無法判斷文件內容是否被竄改(因為修改文件內容不影響簽名圖檔)。 所以簽名圖檔雖然符合第 1 要件, 但是卻不符合第 2、3 要件, 不能視為電子簽章。而該電子文件既然未經有效的簽章確認, 便不具法律效力。
16-6 公開金鑰基礎建設(PKI) 簡言之, 公開金鑰基礎建設(PKI, Public Key Infrastructure)泛指將公鑰加解密相關技術實用化時, 所需的一切規範與建設。或許讀者會疑惑:為何要特別規範呢?因為當人們想把這些技術廣泛應用到日常生活時, 發現面臨了以下問題:
公開金鑰基礎建設(PKI) 既然可以將公鑰公布給大眾知道, 那麼應該將公鑰存放在哪部電腦?又該透過什麼管道公布呢?難道得自己架設一部 24 小時不關機的網站, 並在在各大媒體刊登廣告, 通知大家來下載嗎? 如何防止某乙以自己的公鑰冒充某甲的公鑰?如果多個網站都有某甲的公鑰, 如何辨識哪一把才是正牌的公鑰?
公開金鑰基礎建設(PKI) 以上問題的關鍵在於, 需要一個具有公信力的機構(姑且稱為『發鑰機構』), 在確認某甲的身分之後, 才製作出某甲專屬的公鑰與私鑰, 公鑰由發鑰機構統一保管與公布;私鑰則發給某甲自行保管。大家一律使用這個發鑰機構所公布的公鑰, 不使用其他來源的公鑰。如此便能相信這把公鑰所代表的身分確實是某甲。
16-6-1 公鑰憑證 在實作上, 發鑰機構在發布公鑰時, 為了防止偽造, 會將公鑰與申請人姓名、發放日期、序號、有效期限、發鑰機構名稱和發鑰機構的數位簽章等等資訊整合在一起, 成為一份公鑰憑證(Public Key Certificate), 又稱為數位憑證(Digital Certificate), 通常簡稱為憑證(Certificate)。
公鑰憑證 我們從憑證可以得知裡面的公鑰是代表誰?由哪個機構所核發?採用哪種加密技術?有效期限到何時等等, 因此憑證可說是公鑰的身分證明文件。目前憑證的格式大都遵循 ITU 所制定的 X.509 標準。
16-6-2 政府 PKI 的架構與發展 目前要申請政府核發的數位憑證, 必須依照申請者的身分, 向不同的憑證管理中心辦理。例如:一般人應該向內政部所屬的『自然人憑證管理中心』申請;公司行號則向經濟部所屬的『工商憑證管理中心』申請等等。完整的政府 PKI 架構如下圖:
政府 PKI 的架構與發展
政府 PKI 的架構與發展 在政府核發的憑證中, 和一般民眾比較有關係的莫過於自然人憑證。因此我們便以它為主角, 介紹該憑證的功用及申請流程。 其實自然人憑證就是一張 IC 卡, 大小與一般的信用卡相近。雖然有人說它是『網路身分證』, 但是在卡的外觀並無相片, 所以在日常生活中, 這張憑證其實不能如同身分證或駕駛執照一樣, 用來證明自己的身分。
政府 PKI 的架構與發展
政府 PKI 的架構與發展 依據內政部和行政院研考會的規劃, 自然人憑證的應用範圍會逐步擴大, 預計可提供 1500 項便民服務。 目前已經開放配合的服務包括『個人綜所稅結算申報』、『電子公路監理』等等, 詳情請瀏覽 http://moica.nat.gov.tw 網站, 點選『應用服務』連結:
政府 PKI 的架構與發展
政府 PKI 的架構與發展 只要是年滿 18 歲、有設籍的國民, 都可以向戶政事務所申請自然人憑證, 現行的申請流程是: 1. 網站申辦註冊 2. 網站申辦預約 3. 帶身分證親自赴戶政機關辦理
1. 網站申辦註冊 先連結到 http://idcard.moica.hinet.net/ShopStyle/Nature/default.asp 網頁, 點選申辦註冊, 然後輸入個人資料並設定密碼。 註冊成功後, 請接著點選申辦預約, 進入第二步驟。
2. 網站申辦預約 以身分證字號和前一步驟設定的密碼登入系統, 然後預約在何時前往哪個戶政機關辦理。 由於全台灣的戶政系統已經連線, 所以可以跨縣市申請, 未必要選擇戶籍所在地的戶政事務所申請。即使戶籍在花蓮, 仍然可以選擇到台北市的大安區戶政事務所申請。
3. 帶身分證親自赴戶政機關辦理 這個步驟是最重要的步驟, 務必攜帶身分證、親自到所選定的戶政事務所辦理, 不得由他人代辦或以其它證件替代身分證!