• 沒有找到結果。

設計與實作以憑證為認證基礎的無線網路路由器

N/A
N/A
Protected

Academic year: 2021

Share "設計與實作以憑證為認證基礎的無線網路路由器"

Copied!
79
0
0

加載中.... (立即查看全文)

全文

(1)國立交通大學 電機資訊學院 資訊學程 碩 士 論 文. 設計與實作以憑證為認證基礎的無線網路 路由器. Design and Implement a Wireless Router with Embedded RADIUS Server and Certificate Authority. 研 究 生:鄭宗益 指導教授:曾文貴. 教授. 中 華 民 國 九 十 三 年 十 二 月.

(2) 設計與實作以憑證為認證基礎的無線網路路由器. Design and Implement a Wireless Router with Embedded RADIUS Server and Certificate Authority. 研 究 生:鄭宗益. Student:Tzung-I Cheng. 指導教授:曾文貴. Advisor:Dr. Wen-Guey Tzeng. 國 立 交 通 大 學 電機資訊學院 資訊學程 碩 士 論 文. A Thesis Submitted to Degree Program of Electrical Engineering and Computer Science College of Electrical Engineering and Computer Science National Chiao Tung University in Partial Fulfillment of the Requirements for the Degree of Master of Science in Computer Science December 2004 Hsinchu, Taiwan, Republic of China. 中華民國九十三年十二月.

(3) 設計與實作以憑證為認證基礎的無線網路路由器. 學生:鄭宗益. 指導教授:曾文貴 博士. 國立交通大學電機資訊學院 資訊學程﹙研究所﹚碩士班. 摘. 要. 因為無線網路的日益盛行,當使用者在享受無線網路的方便性背後,同樣 地也面臨到網路安全的問題,也就是可能會被竊聽的潛在危險。有心人士只要 在無線網路覆蓋的區域內,利用掃瞄封包後加以儲存複製的方式,就有方法可 以組合分析而得到傳輸的內容。 雖然 IEEE 802.1x 已經規定了憑證認證的機制,可是它必須與 RADIUS 伺 服器和 CA 協同工作。這樣的架構是可以在中、大型企業內的有線與無線網路 上實現,卻不是一般家庭使用者,甚至小型企業所願意負擔與管理的,因為使 用者必須要另外架設 RADIUS 伺服器與 CA,以及整套的運作機制後才有辦法與 意願來加以架構與使用的。 在考量原無線路由器的可擴充性與可行性之後,筆者試著將 RADIUS 伺服 器與 CA 整合進無線路由器當中,再加上容易操作管理的 WEB GUI 介面,不只 成功的達到網路安全的需求,也讓使用者更方便的操作與管理。. 關鍵詞:無線網路、802.1x、RADIUS、CA、憑證。. i.

(4) Design and Implement a Wireless Router with Embedded RADIUS server and Certificate Authority. Student: Tzeng-I Cheng. Advisor: Prof. Wen-Guey Tzeng. Degree Program of Electrical Engineering Computer Science National Chiao Tung University. Abstract When accessing a wireless network, a user will face many security problems. Someone can sniffer data packets within the wireless coverage. If data packets were not encrypted, a hacker can easily combine those packets and read the content. Although there's an authenticate mechanism base on certificate, it should work with a RADIUS server and a certificate authority. Such kind of architecture can only be used within a large or medium scale enterprise. SOHO user or small company may not has such equipments to use. To protect the wireless network security more easily, i think it's necessary to build RADIUS server and certificate authority into a wireless router. After done this program, a useful system came out. It can be easily configured and operated with IEEE 802.1x security policy. People won't need to waste their money and time to buy and install another RADIUS server and certificate authority. Only one wireless router can do such things. Keywords: Wireless network, 802.1x, RADIUS, CA, Certificate.. ii.

(5) 誌. 謝. 首先我要感謝我的指導教授曾文貴教授,在我的求學期間與研究過 程中給予我的諸多教導與指引。另外還要感謝各位口試委員對本篇論文 所提出的批評與建議,使學生我獲益良多。還有感謝我的父母,我的太 太,我的家人給予我精神上的支持,讓我得以順利地完成此篇論文。最 後謝謝我的夥伴吳俊達,藉由他的幫忙,讓我順利地解決了許多實作過 程中遇到的問題。謝謝大家!. iii.

(6) 目 中文提要 英文提要 誌謝 目錄 表目錄 圖目錄 一、 1.1 1.1.1 1.1.2 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.3 二、 2.1 2.2 2.2.1 2.2.2 2.2.3 2.3 2.3.1 2.3.2 2.4 三、 3.1 3.2 3.2.1 3.2.2 3.2.3 3.3 3.3.1 3.3.2 3.3.3 3.4 3.4.1 3.4.2. 錄. ……………………………………………………………………… ……………………………………………………………………… ……………………………………………………………………… ……………………………………………………………………… ……………………………………………………………………… ……………………………………………………………………… 緒論………………………………………………………………… 研究動機…………………………………………………………… 簡介原有系統……………………………………………………… 擴充性與未來支援………………………………………………… 研究方向…………………………………………………………… 安全性……………………………………………………………… 相容性……………………………………………………………… 多樣性……………………………………………………………… 易操作管理………………………………………………………… 研究成果…………………………………………………………… 相關研究…………………………………………………………… 802.11 無線網路標準(WLAN)………………………………… 802.11 無線網路安全機制………………………………………… 使用者認證………………………………………………………… 資料保密-使用 WEP……………………………………………… 資料完整性………………………………………………………… WEP 加解密過程 ………………………………………………… WEP 加密流程 …………………………………………………… WEP 解密流程 …………………………………………………… 802.11 的相關弱點分析…………………………………………… 背景知識…………………………………………………………… 802.1x……………………………………………………………… EAP ………………………………………………………………… EAP Over LAN (EAPOL)………………………………………… EAP-TLS 與認證過程……………………………………………… EAP-MD5(Message Digest 5) ………………………………… WPA(Wi-Fi Protected Access) ………………………………… 預先共用金鑰(WPA-PSK, PreShare Key) …………………… 暫時金鑰完整性協定(WPA-TKIP) …………………………… 進階加密標準(WPA-AES) ……………………………………… 電子憑證(Certificate) …………………………………………… X.509 Certification ……………………………………………… 電子憑證格式 PKCS……………………………………………… iv. i ii iii iv vi vii 1 1 2 4 4 4 6 6 6 7 9 9 11 12 14 15 15 16 17 17 19 19 19 20 21 22 23 24 24 24 25 25 25.

(7) 四、 4.1 4.2 4.3 4.3.1 4.3.2 4.4 4.5 4.5.1 4.5.2 4.5.3 4.6 4.6.1 4.6.2 4.6.3 4.6.4 4.6.5 五、 5.1 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5 5.1.6 5.1.7 5.1.8 5.2 5.3 5.4 5.5 六、 6.1 6.2 參考文獻 自傳. 系統設計與實作…………………………………………………… 軟體系統架構……………………………………………………… GUI 架構…………………………………………………………… RADIUS Client …………………………………………………… RADIUS Client 的原始設定……………………………………… RADIUS Client 的修改設定……………………………………… RADIUS Server…………………………………………………… 憑證授權單位(Certificate Authority) …………………………… 產生給 CA 自己的憑證…………………………………………… 產生給 RADIUS Server 的憑證…………………………………… 產生給 Wireless Client 的憑證…………………………………… 各種操作模式的組合……………………………………………… 內部 RADIUS Client+內部 RADIUS Server+內部 CA ………… 內部 RADIUS Client+內部 RADIUS Server+外部 CA ………… 內部 RADIUS Client+外部 RADIUS Server+外部 CA ………… 外部 RADIUS Client+內部 RADIUS Server+內部 CA ………… 外部 RADIUS Client+內部 RADIUS Server+外部 CA ………… 實際操作…………………………………………………………… GUI ………………………………………………………………… CA 的管理 ………………………………………………………… 輸出憑證的管理…………………………………………………… RADIUS Client 的管理 …………………………………………… RADIUS Server 的管理-使用 TLS 認證及內建 CA …………… RADIUS Server 的管理-使用 MD5 認證及內建 CA …………… RADIUS Server 的管理-使用 TLS 認證但不使用內建 CA …… RADIUS Server 的管理-使用 MD5 認證但不使用內建 CA …… Wireless 連線的管理……………………………………………… Windows 的憑證管理……………………………………………… Wireless Client Utility …………………………………………… 無線網路封包之擷取……………………………………………… 效能分析…………………………………………………………… 總結………………………………………………………………… 回顧………………………………………………………………… 未來的工作………………………………………………………… ……………………………………………………………………… ………………………………………………………………………. v. 27 27 28 31 32 32 33 34 35 37 39 39 39 41 43 44 45 47 47 47 49 50 52 52 54 55 56 56 57 61 62 65 65 65 67 68.

(8) 表目錄 表 1、802.11 的頻帶規格 .............................................3 表 2、EAPOL 封包的格式 ............................................20 表 3、WLAN 之效能表...............................................63. vi.

(9) 圖目錄 頁次. 圖片 圖 1、基礎模式的連線可能方式 .......................................10 圖 2、點對點模式的連線可能方式 .....................................11 圖 3、802.11 的認證方式 ............................................12 圖 4、分享金鑰的加密認證 ...........................................14 圖 5、WEP 加密流程 ................................................16 圖 6、EAP-TLS 憑證認證過程 ........................................22 圖 7、軟體系統架構 .................................................28 圖 8、GUI Configuration Structure ....................................29 圖 9、CGI/Page Data Flow...........................................31 圖 10、Hostapd 的設定檔(部份).......................................32 圖 11、RADIUS Server 移植計劃 .....................................34 圖 12、使用者輸入的 RootCA 憑證範例 ................................37 圖 13、建議的操作方式 ..............................................39 圖 14、結合外部 CA 的操作方式 ......................................42 圖 15、結合外部 CA 與外部 RADIUS Server 的操作方式 .................43 圖 16、兩台相同設備的搭配方式一 ....................................44 圖 17、兩台相同設備的搭配方式二 ....................................45 圖 18、CA 管理憑證的 Web GUI 畫面 .................................47 圖 19、輸出給使用者使用的憑證並儲存到電腦中 ........................48 圖 20、輸出給 Radius Server 使用的憑證並儲存到電腦中 ................49. 圖 21、輸出 RootCA 的憑證並儲存到電腦中 ........................49 圖 22、RADIUS Client 的管理畫面 .................................51 圖 23、RADIUS Server 的管理畫面-使用 TLS 認證及 CA ............52 圖 24、RADIUS Server 的管理畫面-使用 MD5 認證及 CA ...........53 圖 25、RADIUS Server 的管理畫面-使用 TLS 認證但不使用 CA .....54. vii.

(10) 圖 26、RADIUS Server 的管理畫面-使用 MD5 認證但不使用 CA .....55 圖 27、基本 Wireless 的設定 .......................................56 圖 28、檢查 Windows 系統內的無線使用者憑證 .....................57 圖 29、檢查 Windows 系統內的 RootCA 的憑證 .....................57 圖 30、使用者端設定畫面之一 .....................................58 圖 31、使用者端設定畫面之二 .....................................59 圖 32、使用者端設定畫面之三 .....................................60 圖 33、使用者端設定畫面之四 .....................................60 圖 34、使用 AiroPeek 擷取的無線網路封包 .........................62. viii.

(11) 一、 緒論 網路設備的發展趨勢,重心已經逐漸地從有線網路產品,轉移到應 用無線網路的產品。這是因為在這快速變遷的時代,無線網路代表的是 沒有束縛。隨插即用,隨處可用代表著訊息更能快速的掌握,越能快速 掌握訊息,代表著可以更有效率,更能掌握致勝的先機。在無線網路的 產品方面,最有代表性的有無線網路卡、無線存取點(AP,Access Point)、無線路由器(Wireless Router)等等。筆者有幸參與了無線路 由器的發展計畫,有機會能將所學應用在發展過程當中。. 1.1 研究動機 無線路由器原本就整合了無線存取點以及寬頻路由器的功能。在原 有的系統中,無線網路安全的功能已很齊全。不過,在其中的 802.1x[4] 憑證認證的部份,因為原來的設計只是想在無線存取點的基礎上增加安 全的認證,所以它的身分只是傳遞認證者(Authenticator),將憑證驗證 的功能留給後端的認證伺服器(Authentication Server)處理。而這個後 端的認證伺服器,必須要在連線狀態,而且擁有使用者的認證相關資 料。關於這個 802.1x 的部分,會在底下第 3.1 節詳述。 這個認證伺服器,確實對一般的使用者造成不小的困擾。因為若沒 有了認證伺服器,於是在各種開放空間的使用情境下,皆無法享有無線 網路安全(802.1x)的保障。怎樣讓使用者在不需要架設認證伺服器的情 況下,也能享受無線網路安全(802.1x)的保障呢?我提出了將原有的系 統增加內建 RADIUS(Remote Authentication Dial-In User Service) Server[2]的功能,而這個內建 RADIUS Server 的功能應該要可以減少 使用者在架設認證伺服器所遇到的問題。 這樣一個簡單的構想開始了這個計畫。在這個構想之下,接著的問 1.

(12) 題就是:是否可以把憑證認證(CA,Certificate Authority)的功能也一起 提供?因為,如果能夠把 CA 的功能整合進來的話,使用者就可以不需自 己管理各種憑證了。於是,整合 CA 的功能成了我的第二個目標。 假設有了 CA 之後,第三個問題是,使用者要如何減輕管理憑證的負 擔?我的答案是必須要有結合 WEB 管理介面的管理工具,讓管理憑證的 工作變得更輕鬆。這是我的第三個目標。 雖然有些使用者可能想說利用 VeriSign 這樣的憑證認證單位,或者 是利用 Microsoft 的 Certificate Server 來幫忙簽發憑證。無論各種憑證的 解決方案,我相信許多的使用者,都有可能會遇到使用上的瓶頸。所以 我的出發點很簡單,只要把憑證輸出入的 GUI(Graphic User Interface) 介面設計妥當,容易操作,就能夠減少使用者的麻煩。當然位在上層 GUI 與下層 Process 之間做為溝通橋樑的 CGI(Common Gateway Interface)也必須一併做好。這是我的第四個目標。 所以簡單來說,我的目標有四個: 甲、. 內建 RADIUS Server. 乙、. 內建 CA. 丙、. 設計與新增容易管理憑證的 WEB GUI 介面. 丁、. 量身打造 CGI. 1.1.1 簡介原有系統 以下將簡介原有的無線路由器功能: z 無線存取點的部分,就是提供無線端與有線端的介面轉換,以及 封包(Packet)的 Forwarding,但不包括繞路(Routing)的功能。 使用者透過無線網路卡與無線存取點連線,提供連線的需求。 z 路由器的部分,就是在無線存取點的後端加上繞路(Routing)與 連線上網的功能。所謂 Routing 的功能就是將封包由無線存取點 所在的 LAN 端轉送至路由器的 WAN 端,另外由於 LAN 端使用的. 2.

(13) Private LAN 的 IP Address 與在 WAN 端的 Public IP Address 並 不在相同的網路上面,所以它也有 NAT/PAT 的功能。原有的系 統提供了三種連接網際網路的方式: 1. 固定 IP 連接,通常用在 ISP(Internet Service Provider) 給予固定 IP 的時候。 2. DHCP(Dynamic Host Configuration Protocol)連接,用 在 ISP 給予非固定 IP 的時候,通常每次獲得的 IP 都有可 能不同。 3. PPPoE (Point-to-Point Protocol over Ethernet),大部 分的 ISP 都使用這種方式,尤其是採用 ADSL Modem (Asynchronous Digital Subscription Line Modem)撥接 的時候。 關於無線網路的使用頻率與規格,目前 IEEE (Institute of Electrical and Electronics Engineers)訂了有 3 種規格(802.11b、802.11a、 802.11g): 用簡表來表示: 表一、802.11 的頻帶規格 項目. 頻帶. 速率. 最遠距離. 相容性. 規格. 802.11b 802.11a. 2.4 GHz 11 Mbps 100~150ft 5 GHz 54 Mbps 25~75ft. 802.11g. 2.4 GHz 54 Mbps 100~150ft. 與 11g 相容 與 11g、11b 不相容 與 11b 相容. 原有系統因為只使用一支天線,所以在同一時間只能支援一種無線 規格,例如只能選擇使用 802.11a 或 802.11g/b。802.11b 和 802.11g 因 為頻帶相同,所以它們能相容。. 3.

(14) 1.1.2 擴充性與未來支援 當初在規劃原有系統的時候就已經考慮到未來的需求,所以採用了 Embedded Linux。最主要的著眼點就是未來的擴充與支援,還有就是網 路上的 Open Source 相當的多,而且相容性都相當的不錯,目前在系統 上執行的一些軟體,都只需要少部份的修改就可以整合進去。. 1.2 研究方向 跟據我的目標,我將研究方向區分為四個。分別是安全性、相容 性、多樣性與易操作管理,以下將分別描述。. 1.2.1 安全性 在無線網路的網路安全上,一般是介在無線存取點與無線使用者端 的部份,使用者必須要考慮的是使用現有的設備是否可以保護無線網路 的安全,而系統開發者必須要考慮的是舊有規格的缺陷是否可以彌補, 新的安全規格是否可以開發完成,並且通過認證單位的認證。在原有系 統當中,使用者有各種不同的保護措施,以下列出各個不同等級的保護 措施: • 預設值︰使用預設的 SSID(Service Set Identifier)是不會有任 何的安全措施。任何使用者,只要是 802.11a 或 802.11g 模式相 同都可以連上。 • 取消廣播 SSID︰就是說在無線存取點定時廣播送出的 Beacon 訊 息當中是不會帶有 SSID 的。不過只要偷聽者有心,還是會聽到 無線使用者端送出的封包中帶著的 SSID。在前兩個等級所傳送的 封包都還是明文的狀態。. 4.

(15) • 啟動 WEP(Wired Equivalent Privacy)金鑰加密︰傳輸的封包會 被使用 RC4(1987 由 Ron Rivest 發展,RSA 公司)來加密。RC4 是一種資料串流加密的方法。 • 啟 動 MAC 位 址 的 認 證 功 能 ︰ 使 用 者 可 以 在 無 線 存 取 點 或 在 RADIUS Server 中保存一份使用者 MAC 位址的列表,這份列表 可以是正向表列,允許存取網路。也可以是負向表列,不允許存 取網路。在ㄧ般的應用中通常會以正向表列居多。 • 啟動 EAP-TLS (Extensible Authentication Protocol- Transport Level Security,RFC2716)[1]認證︰這個認證動作,需要 CA 事先簽發的憑證,也需要 RADIUS Server 的共同參與,在認證過 程中認證使用者的憑證。通過認證之後,系統還可以啟動動態更 改加密金鑰的機制,間隔越短,安全性越高。 • 啟動 WPA(Wi-Fi Protected Access)︰WPA 是新一代的安全加 密標準,在新的 IEEE 802.11i 標準中收錄。 無線網路從使用 WEP key 來保護,然後再進步到使用 IEEE 的 802.1x 的架構。現今在頻寬也提高到 54Mbps 的情況下,更有硬體協助 加/解密的動作,網路的安全將更可以確保。本論文所探討的部份就是屬 於 802.1x 的 EAP-TLS 的應用環境的一個改良。它分成三個角色,將在第 3.2 節詳細解釋。在現有系統中的無線模組控制部份是由 Instant 802 這家 公司所開發,這個部分(Hostapd)也是本系統的核心部分之一,僅次於 Embedded Linux Kernel。 我對本系統所做的是屬於架構上的“改變",以及部份功能的新 增,它還是擁有一樣的安全性,只是系統的可信賴度被我提高了,它不 會因為與 RADIUS Server 和 CA 的連線斷線而無法運作,因為它們都在 同一系統上。而且使用者在維護與操作上的複雜度可以減少許多,這是 可以看得到的效果。. 5.

(16) 1.2.2 相容性 當我選擇有關 RADIUS Server 與 CA 的開放原始碼的時候,就有特 別注意到相容性的問題。最後選擇了 FreeRADIUS 與 Openssl。這兩份 開放原始碼在網路上已公開許久,應該不存在相容性的問題。事實證 明,讓這兩份軟體在系統上執行並不是太大的問題,倒是這兩份軟體必 須能夠透過 GUI 來設定與管理則必須要另做一番的規畫與串聯。. 1.2.3 多樣性 雖然我將 RADIUS Server 和 CA 同時加在系統上,但是它們可以不需 要同時執行。在第 4.6 節,我將會詳述 5 種不同組合的操作模式。為何要 如此設計呢?基本上,必須考慮各種不同使用者的各種不同操作方式。 也許使用者已經有一台 RADIUS Server 在自己的網路上運作,例如 Microsoft Windows 2000 Server 中 提 供 的 Internet Authentication Service,他就可以不需要我們內建的 RADIUS Server。也許使用者想自 己另外架設一台機器執行 Linux 作業系統,一樣也是執行 Openssl 來做為 他的 CA,那也是可以的。只要他能記得將憑證輸出並送給適當的對象, 無線網路的安全也是一樣可以確保的。只不過執行 Openssl 若是沒有配 合適當的 WEB GUI 來做為輔助的話,全部的命令將會是從命令列輸入, 那將會是非常辛苦的一件事。. 1.2.4 易操作管理 使用者可能在操作外部的 RADIUS Server 或者外部的 CA 的時候,可 能不小心選錯了一個選項,或者在命令列操作錯誤了之後,將會造成無 法連線等等非預期的結果。而且接下來除錯的時間成本可能會更高,畢 竟使用者並非程式開發者,甚至會不知道出錯的環節在那裡。針對這樣 的問題,在我的網頁與 CGI 的設計當中,只有在需要使用者輸入的部 分,才開放讓使用者輸入,伴隨著必要的錯誤警告與處理,讓使用者出 錯的機率減少,這也是我當初設計的目標之一。 6.

(17) 1.3 研究成果 在第一節中提到,我的研究目標有四個: 1. 內建 RADIUS Server 2. 內建 CA 3. 設計新增容易管理憑證與使用的 WEB 介面 4. 量身打造的 CGI 這 四 個 目 標 到 最 後 終 於 順 利 的 達 成 。 首 先 , 在 內 建 的 RADIUS Server 部份,我選擇了使用 FreeRADIUS 的開放程式碼,在 porting 的過 程中,由於原有的系統是 Embedded Linux,所以我可以先將 Linux 安裝 在 PC 上先行驗證,因為 FreeRADIUS 必須要使用到 Openssl 的 library, 所以計畫中的內建 CA 就用 Openssl 來架構。於是憑證的功能有了之後, 接著必須讓系統原有的 RADIUS Client 能夠與新的 Embedded RADIUS Server 溝通。這個部分,我必須要將 RADIUS Client 指向 RADIUS Server 的設定檔做部分修改,然後再讓 RADIUS Client 重新使用新的設 定,就可以讓我的 FreeRADIUS Server 與原有的 RADIUS Client 溝通 了。在完成溝通之後,接著的挑戰就是如何管理憑證與使用者的介面 了。在 802.1x 的 EAP-TLS 的 Protocol 當中,使用者必須把他的憑證上 傳給 RADIUS Server 做憑證的認證,這代表者 RADIUS Server 與 CA 都 可以不必保留使用者的憑證。於是管理 RADIUS Server 與 CA 的畫面可 以更簡單,可以參考第五章的實際操作說明。一個完整 CA 的功能其實還 有其他的部分,例如有效與無效憑證的管理,憑證效期的延長,這些功 能因為不是必要條件,不影響憑證的驗證,而且系統仍存在著 Flash 與 DRAM 的限制,於是乎暫列在未完成工作中。由於內建 CA 與 RADIUS Server 的功能,CGI 必須能夠提供憑證的匯入與匯出。這個部分比較複 雜,必須重新設計新的 CGI。因為不容易整合到原來處理設定的 CGI, 所以我另外撰寫了一個新的 CGI 程式,並且另外設計了網頁來特別處理. 7.

(18) 憑證的匯入與匯出。最後,在經過一番的整合性的操作之後,使用者終 於可以透過 EAP-TLS 與新的系統連線,憑證的認證功能已可以由內建的 RADIUS Server 來提供。至此,證明了無線網路路由器整合內建了 RADIUS Server 和 CA 是可行的。. 8.

(19) 二、 相關研究 2.1. 802.11 無線網路標準(WLAN). IEEE 這個組織到了 1997 年才規範了 802.11[8]無線網路的標準, 1999 年通過了 802.11b 與 802.11a 的相關標準,在 2003 年最後通過了 802.11g 的標準。802.11 無線網路的主要優點,主要在於不用佈線,只 要使用符合 802.11 規格的無線接取點以及無線網路卡,使用者可以在無 線網路的覆蓋範圍內自由的使用。 802.11 標準中允許兩種通訊方式。第一種是使用一個無線存取點 (AP,Access Point),讓無線的用戶端連上之後做為資料傳輸的中心, 這種模式稱為基礎模式(Infrastructure Mode);第二種是以點對點方式 進行連接,這種模式稱為點對點模式(Ad hoc Mode)。 在基礎模式中,無線存取點做為一個轉送封包的角色,封包可以到 另一個無線接取點或者經過路由器再上網際網路,這就像是把兩個不同 的網路實體層,無線網路層與乙太網路層橋接(Bridge)起來一般。 另外,無線接取點之間,甚至無線接取器與無線路由器之間還可以使用 WDS(Wireless Distribution System)連接起來。基礎模式的連接方式以 下圖來表示:. 9.

(20) 圖 1、基礎模式的連線可能方式. 在點對點模式中,沒有了基礎模式中的無線接取點的角色,各個無 線用戶端在一個可以互相無線電波可以覆蓋的範圍內直接通訊。通常這 樣的應用是在一個短時間且短距離內的通訊,例如是在一間會議室中的 互相通訊與傳輸檔案等等。通常通訊的發起者必須要設定一個 IBSS ID (Independent Basic Service Set ID)與頻道(頻率),如果還有必要的 安全需求的話,互相通訊者就必須再加上使用共用的 WEP Key,來加密 與解密無線傳輸中的資料。點對點模式的連接方式以下圖來表示:. 10.

(21) 圖 2、點對點模式的連線可能方式. 目前在符合 802.11 的通訊設備中,已經有相當多的設備種類,例如 桌上型電腦、筆記型電腦、個人數位助理(PDA)、無線接取點與無線路 由器等等。市面上的無線網路卡也更加地整合不同的介面,例如 PCI 介 面、CardBus 介面、USB 介面、COMPACT FALSH 介面與 mini-PCI 介 面等等。. 2.2. 802.11 無線網路安全機制. 根據 IEEE 所定的標準,802.11 無線網路必須要有三項基本網路服務功 能: • 使用者認證(Authentication) 使用者的身份認證在 802.11 網路中又分成三種:開放系統認證 ( Open System Authentication ) , 封 閉 系 統 認 證 ( Closed System Authentication ) 以 及 分 享 密 鑰 認 證 ( Shared-key Authentication)。其中分享密鑰認證有時也會因為運作機制的 因 素 , 也 被 稱 為 挑 戰 與 回 應 認 證 ( Challenge-Response Authentication)。 11.

(22) • 資料保密(Confidentiality) 使用者的資料在無線網路傳輸過程中必須要能夠有基本的安 全防護,也就是加密,以防止資料的被竊聽。在加解密過程中主 要使用 WEP(Wired Equivalent Privacy)與 RC4 的運算方法; 我將於 2.3 節中詳細解釋關於 WEP 的運作方式。不過因為 WEP 運作的缺點被越來越被太多人知道與破解,所以又有一新的標 準誕生,那就是 WPA(Wi-Fi Protected Access)。我將於 3.3 節中詳細解釋關於 WPA 的運作方式。 • 資料完整性(Integrity) 無線網路傳輸的資料完整性是用 CRC Check Sum 的方式來確 保的。在啟動 WEP 機制之後,又可以對傳送資料多一層保護。. 2.2.1. 使用者認證. 使用者認證分為無加密認證與有加密認證兩種。 802.11 的使用者認證先以下面簡圖表示:. 圖 3、802.11 的認證方式 • 無加密認證 12.

(23) 無加密認證是以 SSID(Service Set ID)做為認證基礎。SSID 是無線存取點提供服務的“服務名稱"。一個或多個無線存取點, 可以因為用相同的 SSID 而擴大服務的領域。無線使用者只要將 自己的網路卡設定使用相同的 SSID,就可以存取無線網路服務, 假設在沒有其他的防護措施下。 在這樣的情況下,又可分成兩種認證方式: 第一種是開放系統認證(Open System Authentication),使 用者可以用空白的 SSID 來與無線存取點溝通。而無線存取點可以 對其回應,在回應的封包中會帶有無線存取點的 SSID。這種方式 可以讓使用者透過掃瞄的方式,找到所有可提供開放系統認證的無 線存取點。可以說完全沒有防護,但也不是說完全沒有優點,使用 者本來就有可能事先不知道 SSID 的名稱,藉著這樣的尋找,是可 以幫使用者回想起來。 第二種是封閉系統認證(Closed System Authentication),在 這種認證的情況下,無線存取點是不會對空白的 SSID 回應,使用 者必須知道正確的 SSID 才可存取。也就是說在尋找無線存取點的 時候,是不會看到該無線存取點的 SSID。似乎很安全,可是只要 有攻擊者利用可收聽無線封包的程式,例如 AiroPeek。在無線領 域範圍內擷取封包後,並且分析其他使用者的連線行為,難保不會 讓攻擊者推測出正確的 SSID。就好像【天方夜譚】的故事中,阿 里巴巴聽到四十大盜所說的密語一樣,因為聽到四十大盜們每次進 山洞所說的話都是“芝麻,開門",離開的時候說“芝麻,關門" 一樣,當認證的機制太簡單的時候,網路安全即形同虛設了。 • 有加密認證 有加密認證是以分享金鑰做為認證基礎,運作方式是採用挑戰 與回應的方式(Challenge and Response)。使用的是 WEP key 做為分享的金鑰,在認證過程中使用 RC4 運算方法做加解密。 13.

(24) 先以簡圖表示之。. 圖 4、分享金鑰的加密認證 在步驟一中,首先無線使用者(STA)對無線存取點提出認證 的請求。 在步驟二中,無線存取點隨機產生了一個 128Bits 的挑戰字串 (Challenge Text)。 在步驟三中,無線存取點將 128 Bits 的挑戰字串傳給無線使用 者。 在步驟四中,無線使用者在收到挑戰字串後,用 WEP Key 及 RC4 來加密。 在步驟五中,無線使用者將加密後的密文回傳給無線存取點。 在步驟六中,無線存取點將收到的密文,用 WEP Key 及 RC4 來解密,然後與原來傳送的明文比較,如果相同,代表通 過驗證,如果不同,代表沒有通過驗證。 在步驟七中,無線存取點送回驗證結果,代表願意接受連線或 拒絕連線。. 2.2.2. 資料保密-使用 WEP. 由於無線網路的無線電特性,使得它比起有線網路更容易遭受竊聽。 14.

(25) 因此 IEEE 設計了 WEP(Wired Equivalent Privacy),由字義上來看, 是希望它能跟有線網路一樣有同等的機密性。關於 WEP 的詳細加解密過 程將於 2.3 節中描述。基本上,無線使用者端與無線存取點共用同一把 WEP Key 做為加解密的依據,而且理論上,它不應該會被破解。. 2.2.3 資料完整性 在 IEEE 802 的所有規格中,為確保資料的完整性,通常都是使用 CRC Check Sum 的方式來做為完整性的確認,這種方式可以有效防止傳 輸過程中的不明因素干擾,最多錯了再重傳即可。傳送與接收的雙方都 使用相同的 One Way Hash Function 將傳輸封包中的 Payload 部分進行 運算,將得到的 CRC 值進行比對,若數值相同則資料是完整的。 在 802.11 中,傳送的一方可以在傳送資料前,先使用 CRC Check Sum 做資料完整性的確保,然後再使用 WEP Key 做資料的加密。而接收 的一方可以在接收資料後,先使用 WEP Key 做資料的解密,再使用 CRC Check Sum 做資料完整性的比對。. 2.3. WEP 加解密過程. 根據 IEEE 所定的標準,WEP 的設計必需符合以下幾個條件: 1. 必須能夠抵擋暴力攻擊或字典攻擊法。 2. 必須要有自我同步(Self-Synchronizing)的特性。即使傳輸情況. 惡劣,依然要有保護資料的能力。 3. 可以軟體或是硬體來實現。 4. 必須要全世界能通用的,通過美國的加解密運算的出口管制。 5. 使用者可以選擇使用或不使用 WEP。. 接著我們來談 WEP 的加解密的流程。先看下圖的說明:. 15.

(26) 圖 5、WEP 加密流程 資料來源:NIST[12] 基本上,WEP 的加密與解密使用的都是同一把密鑰,它必須事先決 定與存在通訊的雙方系統上,我們稱為對稱式加解密系統(Symmetric Cryptography System)。原始密鑰的長度可以是 40 位元或 104 位元。 可是實際使用時,還必須要加上一個 24 位元長度的 Initial Vector(IV), 由無線網路的使用者提供。使用這個 IV 的目的是為了不要讓同一把固定 的 WEP Key 太容易遭受破解,所以加上這個 IV 藉以打亂 WEP Key 的組 合。所以實際的密鑰長度會變成 64 位元或 128 位元。. 2.3.1. WEP 加密流程. 總共有五個步驟來描述加密流程: 步驟一,發送端將封包內的 Payload 進行 CRC 的運算,得到 CRC 的查核碼,然後附在封包中。 步驟二,發送端使用產生 IV 的演算法,算出一個 IV。 步驟三,發送端將 IV 及密鑰進行 RC4 運算後,取得加長的加密金 鑰。 步驟四,利用加長的加密金鑰,與步驟一產生的封包進行 XOR 運 16.

(27) 算,得到密文資料。再附上 24bits 長的 IV 到密文資料中。 步驟五,送出密文資料給接收端。. 2.3.2 WEP 解密流程 解密的步驟就反過來: 步驟一,接收端先拿出附在封包中的 IV。 步驟二,接收端將 IV 與共用金鑰進行 RC4 的運算,得到加長的加密 金鑰。 步驟三,接收端將收到的封包(密文資料),使用步驟二所獲得的加 長的加密金鑰進行 XOR 運算後,便可還原明文資料。 步驟四,從明文資料中拿出 CRC 查核碼,做完整性的檢查。. 2.4. 802.11 的相關弱點分析. 802.11 無線網路的安全問題大概可以分為三類: • 無線通訊本身 因為無線網路靠的是無線電波傳遞資料,只要是無線電波可以涵 蓋的範圍內都有可能被攻擊者竊聽。如果使用者沒有對傳輸的資 料進行加密,則竊聽者很容易就可以組合所得到的資訊。 • WEP 設計有錯誤 由於 WEP 的某些設計實作上的錯誤,使得在使用 WEP 的效果 上無法百分之百保證資料的機密性。例如 IV 向量太短或者固定。 40bits 的 WEP Key 不敷使用,在很短的時間內只要攻擊者累積到 一定量的封包,它是可以猜出 WEP Key 的。還有 RC4 的演算法 也有弱點,WEP 的設計不應將密鑰的部份內容公開,如 IV。 • 設備管理困難度高 有些網路管理者在管理無線存取點時,一定會遇到金鑰管理的問 17.

(28) 題。如果使用者很多的話,4 把金鑰要如何管理呢?結果有些管理 者不是只固定使用某些金鑰,再不然就是根本不使用 WEP。使用 者的認證也是問題,只有靠 SSID 來辨識是不夠的。所以也才會有 將來的 RADIUS Server 與 802.1x 的產生。. 18.

(29) 三、 背景知識 在上一章中,我們簡述了 802.11 天生無線的缺陷但還是有無線的優 點,只有 WEP key 當初設計的缺陷一直無法彌補,所以才會有 802.1x 與 WPA 的發展。. 3.1. 802.1x. 802.1x 是 IEEE 為了 802 網路家族所定的安全標準,它規範了以單 個連線為單位的存取控制。不過我們現在把焦點集中在無線網路上,當 802.1x 與 EAP(Extensible Authentication Protocol)[7]合作的時候, 它如何來保障無線網路上的存取安全。. 3.2. EAP. EAP 是根基於 PPP(Point To Point Protocol)的一個擴充,因為無 線網路的存取也可以被看成是點對點的存取,無線存取點對無線使用 者,就好像是用 ADSL Modem 撥接上 Internet 一樣,ISP(Internet Service Provider)也必須對撥接上線的使用者做身份認證一樣。當 PPP 連線開始到認證成功,資料可以傳輸之前,必須要能先建立連線,然後 在上面執行認證的協定,以便讓預備連線的雙方有時間來認證對方。等 到認證成功之後,真正的連線才算建立完成。如果認證失敗的話,不只 整個連線無法建立,甚至連原先用來認證的暫時連線還是會被斷線。這 樣的機制看起來是非常適合無線網路的架構的。如果說,先讓無線使用 者和無線存取點先建立暫時的連線,然後在連線上先執行認證的協定, 先不討論如何認證的細節,等到認證成功再建立真正的連線,否則就把 原來用來認證的連線斷線。這裡有三個角色在這樣的 EAP 連線中: 1.認證者(Authenticator),就是無線存取點,AP 2.認證伺服器(Authentication Server),RADIUS Server 19.

(30) 3.被認證者(Supplicant),無線使用者(Wireless Client). 在 EAP 所支援的多種認證方法中,本系統選擇性的挑選 EAP-TLS (Transport Level Security)與 EAP-MD5(EAP-Message Digest 5)做 為首要支援的對象。原因無他,在無線接取端的 Hostapd 有支援這兩項 功能。. 3.2.1 EAP Over LAN(EAPOL) EAPOL 定義了 EAP 的封包在無線使用者端與無線存取點之間的無 線 LAN 環境下封裝的規格。 EAPOL 封包的格式以簡表表示如下: 表 2、EAPOL 封包的格式 2 Bytes. 1 Byte. 1 Byte. 2 Bytes. N Bytes. PAE Ethernet 協 定 版 封 包 種 資料封包長 資料封包 種類. 本. 類. 度. PAE Ethernet 種類:PAE(Port Access Entity) Ethernet Type,它佔 了兩個 Byte 長,固定值是 88-8E(十六進位)。 協定版本:Protocol Version,它只佔了 1 個 Byte,這個值表示了傳 送者所支援的 EAPOL 的版本號碼,目前它的值只有 01(十六進位)。 封包種類:Packet Type,它只佔了 1 個 Byte,這個值表示了傳送的 這個封包的種類。封包種類共有以下五種: 1)EAP-Packet,其值為 00(十六進位),單純的 EAP 封包。 2)EAPOL-Start,其值為 01(十六進位),表示這個封包是啟始 EAP 協定的啟始封包。 3)EAPOL-Logoff,其值為 02(十六進位),表示這個封包是提 出 Logoff 需求的封包。 4)EAPOL-Key,其值為 03(十六進位),表示這個封包是 20.

(31) EAPOL-Key 的封包。 5)EAPOL-Encapsulated-ASF-Alert,其值為 04(十六進位), 表示這個封包,在資料封包的部份,包含了一個被 ASF (Alerting Standards Forum)所定義的 Alert 必須要送出。 資料封包長度:Packet Body Length,資料封包內容的長度,以 Byte 為單位。若其值為 0,表示沒有資料封包。 資 料 封 包 : Packet Body , 資 料 封 包 內 容 。 只 有 EAP-Packet 、 EAPOL-Key 和 EAPOL-Encapsulated-ASF-Alert 這三種型式的封包會有 資料封包這個部份。而且一次只能有單筆的資訊會存在,不允許複數筆 的資料存在。例如一次只能允許一把 Key 的傳遞。另外,EAP 封包的最 大長度取決於 MAC 層(Media Access Control)所能支援的長度。. 3.2.2 EAP-TLS 與認證過程 EAP-TLS [1],透過憑證的使用與 CA 的參與,提供了一個讓 Server 與 Client 來互相做認證的一個機制。只有當雙方的憑證同時都為合法的 時候,連線才會被建立。 以下是實際的 EAP-TLS 的認證過程: 1. RADIUS Server 會送出 EAP 封包給無線使用者端,要求使用者 端送出 ID。 2. 無線使用者端會回 ID。 3. Server 送出空的 EAP-TLS request 開始封包。 4. 無線使用者端送回 Client –Hello 的封包。 5. Server 送出包含 TLS 訊息的封包。例如 (a)Server Hello (b)Client 端的憑證要求 (c)Server finished 6. 無線使用者端送回包含 TLS 訊息的封包。例如 (a)Client’s Certificate. 21.

(32) (b)Pre-master cecret in key exchange message. (c)Client Certificate verification information (d)Change ciphter (e)TLS finished 7.Server 送回其他 TLS 訊息的封包。例如 (a)Change Cipher (b)TLS finished 8.Client 送回空的回傳封包 9.Server 送回 EAP Success 封包結束 EAP 交握過程. 圖 6、EAP-TLS 憑證認證過程 資料來源:參考 RFC2716. 3.2.3 EAP-MD5(Message Digest 5) EAP-MD5 有一個最大的缺點,那就是它只讓 Authenticator 對 22.

(33) Supplicant 做認證,但是反過來,Supplicant 卻沒有對 Authenticator 認 證。這對 WLAN 的安全來講,其實是一個漏洞。 EAP-MD5 雖然採用的是密碼檢驗的方式,可是它並不是在網路上傳 輸密碼,它採用的是“證明"持有正確密碼的方式。 步驟如下: Authenticator 送出一個 Challenge 給 Supplicant,這個. 1.. Challenge 包含了一個字串與流水號。 而 Supplicant 要證明它持有密碼的方法就是對 Challenge 與. 2.. 密碼做 HASH,然後將 128bits 的 HASH 結果送回給 Authenticator。 Authenticator 在收到 Response 之後,也做相同的運算,當. 3.. 然在做運算之前,Authenticator 必須已知正確的 Supplicant 的密碼。 Authenticator 在算出相同得 HASH 結果之後,告知. 4.. Supplicant 通過了使用者的認證。 除了剛剛所講的缺點以外,它還有其他的缺點,例如:它必須要有 地方來保存每一個需要認證的 Supplicant 的密碼,還有它並沒有產生 WEP session key 以及讓 session key 可以動態更換(Rekey)的功能。 只是就一般的使用者操作而言,它可算是在不使用憑證下的一個替 代方案。. 3.3. WPA(Wi-Fi Protected Access). IEEE 制定了 802.11i[5]的規格,WPA[5]算是其中的一個子集 合。802.1x 的推出主要是符合中大型企業的架構,所以一般大眾只好退 而求其次的使用 WEP,可是一般當啟用 WEP 之後,傳輸量馬上降低, 在 WEP 聲名已相當不好的情況下,反而有些使用者乾脆選擇不使用 WEP。所以 Wi-Fi 小組才想說早點推出 WPA 規格,讓一些硬體及軟體廠. 23.

(34) 商能及早開發出符合 WPA 認證的產品。 WPA 以 802.1x 和 EAP 作為其認證機制的基礎。在大型企業的網路 中,認證程序必須要有使用者資料庫以及身份檢查的部分,通常是由 RADIUS 伺服器來完成。但由於 WPA 是打算讓所有的 WLAN 使用者都能 使用,於是它也提供了一個比較簡單、不需要新增 RADIUS 伺服器就能 使用的模式。這個模式-稱為預先共用金鑰(WPA-PSK,Pre-Share Key)模式,我將在以下的第一項解釋。 Wi-Fi 這個認證單位同時規定,2003 年 8 月開始送測的產品必須擁 有 WPA 的功能,可是不在相容性測試項目中。但是,2004 年 4 月開始 的 WPA 認證,就必須要通過完整的 WPA 相容性測試項目。. 3.3.1 預先共用金鑰(WPA-PSK,PreShare Key) 預先共用金鑰,它是一組 8 到 63 個字元長度的字串。使用者只要在 使用 WPA-PSK 的無線 LAN 環境下,將這支預先共用金鑰輸入到各個 WLAN 的節點,無線的用戶端就可以擁有 WLAN 的存取權限。. 3.3.2 暫時金鑰完整性協定(WPA-TKIP) 暫時金鑰完整性協定,TKIP(Temporal Key Integrity Protocol),它 可以算是下一代的 WEP,它使用新的加密演算法,如果使用的無線裝置 有支援硬體加密的話,它也可以使用硬體加密來做運算。 TKIP 也提供下列項目: 1.決定加密金鑰後,驗證安全性設定。 2.同步處理每個框架的單一傳播加密金鑰變更。 3.決定每個預先共用金鑰驗證的唯一開始單一傳播加密金鑰。. 3.3.3 進階加密標準(WPA-AES) 進階加密標準,AES(Advanced Encryption Standard),它是 WPA 24.

(35) 所使用的另外一個加密方式。 各個不同的無線使用者端是可以各自使用不同的加密方法,比如說 AP 與 User A 使用 TKIP,與 User B 使用 AES,這是可以的。但是在原 來的 802.11 規格與 802.1x 的規格中並沒有允許這樣的用法。. 3.4 電子憑證(Certificate) 這一節我們來談在 802.1x 中佔了很大比重的電子憑證的部分。透過 電子憑證,可以讓 RADIUS 伺服器與無線的使用者互相驗證身份,然後 進而互相傳送必要的資料來進行加密的通訊。. 3.4.1 X.509 Certification X.509 Certification 最初被 CCITT 制定於 1988 年,那時稱為 v1。 1933 年修訂了 v2,增加了兩個項目。後來由於 v1,v2 兩版的缺陷, 1996 年由 ISO/IEC/ITU 和 ANSI X9 改進為 v3 版,然後就一直用到現 在。X.509(Public-Key Infrastructure)不只是對電子憑證制定規格,它 也對整個公開金鑰的安全架構,運作方式都有規範,舉凡憑證認證方 式,憑證格式內容,CA 的階層架構,以及數位簽章所採用的演算法都有 標準。. 3.4.2 電子憑證格式 PKCS PKCS(Public-Key Cryptography Standards),是 RSA 這家公司為 了推廣公開金鑰的使用,於 1991 年訂立了第一版。目前 PKCS 中定義了 12 種不同種類的格式,原來的 PKCS #2 以及 PKCS #4,已經被整合到 PKCS #1(RSA Cryptography Standard)的格式中了。回想當使用 EAP-TLS 認證的時候,使用者必須擁有兩個憑證,一個是 RootCA 的憑 證,另一個是 CA 簽給使用者的憑證,兩個憑證的格式都是使用 PKCS #12(Personal Information Exchange Syntax Standard)。只是 RootCA 的 憑證並沒有包含私密金鑰的部份,只包含了 RootCA 的公開金鑰以及必要 25.

(36) 的資訊,例如金鑰長度(512Bits 或 1024Bits),Common Name(RootCA 的名字),憑證的起始日期及有效日期。CA 簽給使用者的憑證則包含了 公開金鑰以及使用密碼加密的私密金鑰,一樣也有憑證的起始日期及有 效日期。. 26.

(37) 四、 系統設計與實作 原來的系統只支援 RADIUS Client 端的功能,它必須將無線 Client 端 的 認 證 需 求 轉 送 至 外 部 的 RADIUS Server , 使 用 者 必 須 另 外 架 設 RADIUS Server , 實 在 不 便 。 雖 然 使 用 者 可 能 想 以 Internet 上 的 RADIUS Server 來節省成本,可是別忘了當 Internet 連線斷了之後無線 使用者就無法通過憑證認證了。然而筆者的設計對於這個問題是可以避 免的,因為 RADIUS Server 與 RADIUS Client 都執行在同一設備上,可 以看成是一封閉系統。對於新增的 CA 與 RADIUS Server 的功能,馬上 就面臨到 DRAM 與 FLASH 空間可能不夠的問題。原來的 FLASH 存放 的有 Boot Loader(開機程式)、使用者的設定資料、以及整個系統壓縮過 的程式碼,幾乎已完全佔滿了 4M Bytes 的空間。DRAM 大小雖然有 32M Bytes,可是在原有的系統上也已非常接近滿載。 系統的 Kernel 選用的是 Embedded Linux,不只因為 Linux 是 Free 的,而且是可以與 PC 上的 Linux 相容的。這樣做有幾點好處,那就是 可以事先排除硬體問題的干擾,再來就是各別模組可以分別開發,最後 再整合在一起,可以節省不少時間。還有全部的程式幾乎都可以找到開 放原始碼,不只問題少,就算發現問題也可以很快解決。然後我試著將 RADIUS Server 與 CA 先在原來的 PC 平台上模擬實作,實作成功後再 轉到硬體平台上。在記憶體空間已明顯不足的情況下,最後,只有將 FLASH 與 DRAM 各增加一倍的空間,也就是 8M Bytes 的 FLASH 與 64M Bytes 的 DRAM。. 4.1 軟體系統架構 因為使用了 IDT 的 79RC32438 這顆整合通訊處理器,當然也必須使 用 IDT 所提供的 Embedded Linux Kernel,它的版本為 2.4.18,其他附屬 27.

(38) 的程式集有 BusyBox version 0.60.5,Cross-compile 是 MIPS 系列 CPU 所使用的 mipstools。在 PC 上可以找到 RedHat 7.3 也使用相同的 Linux Kernel 版本,於是可以先在 PC 上模擬,模擬成功後再轉移到硬體平台 上。在使用平台的轉換過程中,最大的不同是 Compiler 的差異,除了某 些與系統比較有直接相關的模組需要特別改動以外,其他部份,大抵上 是沒有什麼問題的。 以簡圖來表示:. 圖 7、軟體系統架構 基本上,與硬體有關的會是在 Kernel 與 Modules 這一層。然而大 部份的修改是與硬體無關的,並且會發生在 Application 這一層。圖上並 未列出所有的 Applications,只列出與本文有關的部分。注意圖上右上角 Applications 中的 RADIUS Server 與 CA 是我們接下來要探討的部份。. 4.2 GUI 的架構 其實設計一台無線路由器,還有一個相當重要的部份,那就是如何 28.

(39) 提供方便好用的 GUI 來讓使用者設定。早期的路由器都是透過命令列的 方式來設定的,通常是系統管理者,他必須規劃網路環境,也必須對艱 深的命令列語法相當熟悉才能架輕就熟。 那一般家庭使用者呢? 誰會非常熟悉命令列語法? 我選擇的是使用 WEB GUI 加上 CGI 的方式來設定路由器。 使用者透過 WEB Browser 的方式,經由 HTTP[9],瀏覽內建的 網頁,不只可以更系統化的了解目前無線路由器的設定值,同時也可以 很方便的修改它。WEB Browser 在各種平台都有,只要能夠與無線路由 器連線,都可以被用來設定它。 讓我以簡圖來表示 GUI 的 Data Flow:. 圖 8、GUI Configuration Structure 系統透過 HTTPD 這個 Daemon 來接受使用者傳送過來的 HTTP 需 求,也透過 HTTPD 來回傳網頁。舉個例子來說: 例如使用者想看 RADIUS Server 設定的網頁。它的流程是: 1. WEB Browser 送出 Get RADIUS page 的 HTTP 29.

(40) Command。 2. HTTPD 收到了之後,將 HTTP Command 轉送給 CGI 程式 並執行。 3. CGI 程式判斷要讀取 RADIUS Server 的相關設定。 4. CGI 程式透過 socket call 的方式向 Main Configure Process 要求目前的設定值。執行過程中的設定值都由 Main Configure Process 保持。 5. CGI 得到 Main Configure Process 的回傳值後,繼續讀取 RADIUS Server 的網頁,並且與回傳值結合,成為反應目前 設定值的 WEB Page。 6. CGI 將新的 WEB Page 回傳給 HTTPD。 7. HTTPD 再將 WEB Page 透過有線/無線網路,回傳給 WEB Browser。 8. WEB Browser 再將 WEB Page 顯示給使用者看。. 又例如使用者想修改 RADIUS Server 網頁上的設定值。它的流程會 是: 1. 使用者在網頁上的可設定欄位變更設定值,然後點選“設 定"按鈕。 2. WEB Browser 送出“Post setup.cgi"的 HTTP Command 給系統上的 HTTPD。 3. HTTPD 收到了之後,執行 CGI 程式,並且將 HTTP Command 轉送給 CGI 程式。 4. CGI 程式判斷要修改 RADIUS Server 的相關設定。 5. CGI 程式透過 socket call 的方式向 Main Configure Process 要求變更設定值。 6. Main Configure Process 判斷必須對 Hostapd 與. 30.

(41) FreeRADIUS 變更設定。 7. 變更設定後重新執行 Hostapd 與 FreeRADIUS。 8. Main Configure Process 將變更後的值寫回到 FLASH。 9. 正常執行的話,把正確值回傳給 CGI。 10.. CGI 得到 Main Configure Process 的回傳值後,繼續讀. 取 RADIUS Server 的網頁,並且與回傳值結合,成為反應目 前設定值的 WEB Page。 11.. CGI 將新的 WEB Page 回傳給 HTTPD。. 12.. HTTPD 再將 WEB Page 透過 Ethernet 封包,回傳給. WEB Browser。 13. WEB Browser 再將 WEB Page 顯示給使用者看。. 以上是兩種主要的讀取與設定系統值的簡要操作過程。這兩種主要過 程在讀取網頁的部分幾乎是雷同的。於是,我就將它們兩者合併設計, 如下圖:. 圖 9、CGI/Page Data Flow 雖然每一個網頁的功能各不相同,但是它們的設定/顯示的流程卻是相 同的。所以最重要的資料流貫通之後,其他的網頁就可以比照辦理。. 4.3 RADIUS Client RADIUS 是 Remote Authentication Dial-In User Service 的縮寫,由字 面上來看,它就是要對 Remote User 做認證,再加上使用在 Wireless 31.

(42) Network 上,無線網路安全更有保障。. 4.3.1 RADIUS Client 的原始設定 原來的系統本來就有支援 RADIUS 的認證,只是原來的系統只做為 RADIUS 認證的其中一個點,我們稱為 RADIUS Client,另外兩個認證角 色是前端的 Wireless Client 與後端的 RADIUS Server。在圖八的軟體系 統架構中的 Hostapd 就是做這個 RADIUS Client 的角色。 Hostapd 的設定檔在屬於 RADIUS Authenticate Forward 部份的設定有︰ #1: ieee8021x=1 #2: own_ip_addr=192.168.1.2 #3: auth_server_addr=127.0.0.1. #4: auth_server_port=1812 #5: auth_server_shared_secret=secret #6: auth_server_addr=1.2.3.4 #7: auth_server_port=1812 #8: auth_server_shared_secret=abcdef #9: auth_server_addr=2.2.3.4 #10: auth_server_port=1812 #11: auth_server_shared_secret=ghijkl #12: radius_failover_limit=3 #13: radius_retry_primary_interval=3600 圖 10、Hostapd 的設定檔(部份) 因為這個 Hostapd 的設定檔是以 text 方式存在,所以它也相當容易 修改與擴充。比如第 3 行到第 5 行的參數設定,它的意思就是在讓 Hostapd 知道 RADIUS Server 所在的 IP Address 與溝通的 Port 以及使 用的 Share Secret。如果要讓 RADIUS Server 執行在相同的機器上,那 這裡的參數必須要修改。. 4.3.2 RADIUS Client 的修改設定 實作上,我使用 Loop back interface 的 IP Address(127.0.0.1), 搭配修改過的網頁讓 Embedded RADIUS Server 實現。然後又因為實作 32.

(43) 上讓 RADIUS Server 與 RADIUS Client (Hostapd) 在同一系統上,所以 Server Port 與 Share Secret 是可以被預先設定成固定值的。如圖 10 的 第 4 行到第 5 行所示。. 4.4 RADIUS Server RADIUS Server 負責驗證無線使用者的憑證,以及驗證完後,WEP Session Key 的產生與傳送。目前規劃使用到的功能只有 EAP-MD5 以及 EAP-TLS 這兩樣功能。 目前找到 FreeRADIUS 支援 802.1x,而且也支援的最完整,許多大 型的開發計畫也都拿 FreeRADIUS 來做測試。於是我決定使用它做為新 系統內的 RADIUS Server。 決定使用 FreeRADIUS 之後,接下來的問題是如何整合到系統之 中。我的計劃是這樣: 1. 因為使用的是 Linux 平台,所以先在 PC 環境上安裝與除 錯,並且驗證實作的可能性。這個時候就要記錄使用的檔案 結構以及被連結到的程式庫,做為移植的參考。 2. 如果成功的話,就按照在 PC 上模擬的結果,修改 Makefile 然後編譯出可以在系統上執行的 RADIUS Server。 3. 如果這個部份也成功的話,最後再修改系統上的開機順序 檔,將 RADIUS Server 的啟動時間點安插在啟動過程中最適 當的位置。 4. 交錯驗證 PC 版本以及 Embedded 版本的執行情況,做為除 錯的參考。 計劃示意圖如下:. 33.

(44) 圖 11、RADIUS Server 移植計劃 實作過程還算順利,也因為可以先在 PC 上模擬及除錯,應該節省了 不少開發時間。 在編譯 FreeRADIUS 的過程當中,發現到它需要兩個 Extend Library 的支援,那就是 Openssl 當中的 libcrypto.a 與 libssl.a 這兩個檔案。等於 宣告要移植 FreeRADIUS 的同時也必須移植 Openssl 的程式庫。不過幸 好 CA 的部份也決定使用 Openssl,剛好也可以節省部份的程式空間。. 4.5 憑證授權單位(Certificate Authority) 憑證授權 Certificate Authority(簡稱為 CA)。一個 CA,基本上應該 要有: a、產生憑證 b、驗證憑證 c、憑證管理的基本功能。最後我認 為 Openssl 應該可以符合需求,至少在 a、b 兩項。至於第三項的憑證管 理功能,可以再區分出有效憑證的管理、失效憑證的管理、延長憑證的 34.

(45) 有效期限等等。我認為這些功能在使用者的使用需求上比較沒有那麼必 要,通常使用者只要有能簽出憑證的功能。所以在一開始使用了比較長 的有效期限。至於如何做好憑證的管理,是必須要花比較長的時間來規 劃,例如在一台獨立的無線路由器上,FLASH 的空間已然不足的情況 下,是不可能無限制的保留已簽發過的憑證,更何況已超過有效期限的 失效憑證表列。反倒是延長憑證的有效期限是一個比較可行的輔助功 能。還有一項就是如何在憑證的有效期限快到達之前,如何讓使用者與 系統管理者都可接收到相關的訊息,然後來做延長憑證的有效期限,或 者換發新的憑證,都是一些可行的方案。至少在預設的憑證有效期限到 來之前,可以好好來規劃一些新的功能。我先把這部分的設計列為未來 的待做事項。 基 本 上 , CA 的 種 類 有 兩 種 。 一 種 是 Signed CA , 另 一 種 是 Self-signed CA。這兩種 CA 的差異在於自己所使用的憑證是否需要其 他 CA 的認證。所以,Signed CA 所使用的憑證是被別的 CA 所認證; 而認證 signed CA 的 CA 我們稱為上層 CA。通常這個上層 CA 都會找比 較有名的 CA,例如 VeriSign(www.verisign.com)。 另外,Self-signed CA 的憑證就是由自己替自己簽發的憑證,也就是 由自己所認證。於是 Self-signed CA 沒有上一層的 CA,則自己就是 Root CA。現在在系統中的 CA,就是所謂的 Root CA。它必須自己替自 己簽發憑證。 接著,我們來看在實作系統上的各種不同憑證的產生方式:. 4.5.1 產生給 CA 自己的憑證 因為這是一個 Root CA 憑證的產生方式,而且它完全在無線路由器 的系統上執行,執行的時機有兩種:一種是第一次起動 Embedded CA 時,這個第一次起動不是每次開關機後的第一次起動,而是當系統設定 值完全沒有存在任何憑證的時候。而且只要這一次開機後,產生的憑證 35.

(46) 就會存在系統設定值當中,在以後的開機過程中,經過讀取系統設定 值,發覺已經有 RootCA 的憑證存在的情況下,就不再重新產生給自己的 憑證。另一種是回復系統預設值之後,接下來的第一次開機時。如何回 復系統預設值有兩種操作方式,第一種是從 WEB GUI 上的回復預設值頁 面操作,第二種是操作硬體的 RESET 按鈕。雖然兩次重新起動時的預設 值皆相同,但是因為其中有一組 Random 值,在不同的兩次啟動時是不 會相同的,因此兩次所產生的憑證也會不相同。所以從原來 RootCA 簽發 出 去 的 使 用 者 憑 證 與 RADIUS Server 的 憑 證 將 會 無 法 用 新 產 生 的 RootCA 的憑證來驗證成功。必須要將舊的使用者憑證換成由新的 Root CA 簽發出來的使用者憑證才可以通過驗證。這個問題,目前我把它歸類 為設計規格的限制中。 產生 Root CA 憑證時的次序是: 1. 先利用 Openssl 產生金鑰對,密碼是預設值,Common Name 是 用 ”RootCA” 與 MAC Address 所 組 合 而 成 , 例 如:”RootCA_00:00:00:11:22:33”。 2. 然後利用產生的 RootCA 的私密金鑰來簽出自己的憑證。 3. 將金鑰對與 RootCA 的憑證檔案儲存為系統設定值,當下次 開機時再自動讀取進來。 因為一般使用者是藉由 Windows 來管理 Root CA 所使用的憑證,而 Windows 所顯示的就是 Common Name,藉由不同的 MAC Address 產生不同的 Common Name,以避免互相干擾。 下圖列出已經輸入在使用者電腦上的 RootCA 的憑證範例:. 36.

(47) 圖 12、使用者輸入的 RootCA 憑證範例. 4.5.2 產生給 RADIUS Server 的憑證 當 Root CA 簽發完自己的憑證之後,它就可以簽發憑證給在相同機 器上的 RADIUS Server,也可以簽發憑證給不同機器上的 RADIUS Server。給自己機器上的 RADIUS Server,只要將檔案存在的路徑傳給 RADIUS Server 即可。但是簽發憑證給不同機器上的 RADIUS Server, 必須要由使用者透過手動將 RootCA 的憑證與 RADIUS Server 的憑證, 透過檔案以及 WEB GUI 的方式輸入。 以下是 Root CA 對兩種不同 RADIUS Server 的憑證的產生方式: 第一種是簽發憑證給自己機器上的 RADIUS Server,它是在 Root CA 產 生 完 自 己 的 憑 證 之 後 自 動 產 生 的 , 系 統 使 用 預 設 37.

(48) 的”username”以及預設的”password”來產生,產生完的憑證再自動 儲存在內部 RADIUS Server 可以存取的路徑上,然後修改 RADIUS Server 的 Configure file,對其發出重新啟動的訊號,等到 RADIUS Server 重新啟動完成之後,RADIUS Server 就會自動讀取 RootCA 以及自己的憑證,在有需要使用到 802.1x 傳輸憑證與驗證憑證的時 候。 第二種是不同機器上的 RADIUS Server,通常是由系統管理者 從 WEB GUI 輸 入 外 部 RADIUS server 的 ”Username” 及”Password”來產生,然後將產生出來的憑證透過 WEB GUI 的輸出 功能存成檔案,再拿給外部 RADIUS server 做輸入的動作。這個透 過 WEB GUI 的輸出動作,可以再區分為幾種可能: 2a.在單獨一對一的連線下進行 2b.在路由器的 LAN 端進行 2c.透過 WLAN 進行 2d.透過 WAN 來進行傳輸 於是就存在不同的安全考量。 第一種方式是建議的運作方式,它幾乎沒有任何安全上的問題。還 有第二種方式當中的 2a 與 2b 的連線,也是非常安全的,因為我們在 LAN 端使用的是 Switch 的 Chip。至於透過 2c 和 2d 的方式,我們並不建 議使用。因為透過 WLAN 或透過 WAN 來傳輸 RootCA 所簽發的憑證,有 外洩出去的可能,而這外洩的憑證有可能會被假冒的 RADIUS Server 或 使用者拿去使用,造成安全上的問題。 不過,只要系統管理者能做好產出憑證的管理工作,事實上,並不 會存在安全的問題。. 38.

(49) 4.5.3 產生給 Wireless Client 的憑證 目前新的系統只有一種方式來產生給 Wireless Client 端的憑證。它 也是透過系統管理者從 WEB GUI 輸入 Wireless Client 端的”Username” 及”Password”來產生,然後將產生出來的憑證存成檔案,再拿給外部 Wireless Client 端的機器做 Import 的動作。在傳輸憑證的安全考量上, 與前一節所探討的是相同的問題。. 4.6 各種操作模式的組合 由於原來的系統本身就已經有支援 802.1x 的 RADIUS Client 端的認 證,只是沒有加入 Embedded RADIUS Server。現在我把 Embedded RADIUS Server 及 CA 加進來之後,操作情況變的有點複雜。以下將 分別來探討各種組合:. 4.6.1 內部 RADIUS Client+內部 RADIUS Server+內部 CA 這是建議的操作方式,也是本論文要達到的目的。如圖:. 圖 13、建議的操作方式. 在圖中間的無線網路路由器正在執行著 RADIUS Client、RADIUS 39.

(50) Server,至於 Embedded CA,通常是 Offline 執行的。它的設定組態是將 內部 CA 與內部 RADIUS Server 都設定在有使用的狀態。因為 CA 是 Root CA,它已經對自己簽發憑證,同時它也對內部 RADIUS Server 簽 發憑證。至於無線的使用者端的憑證必須透過 CA 的簽發憑證機制將使用 者端的憑證輸入至使用者端的機器內,還有另外一個 Root CA 的憑證也 必須輸入至使用者端的機器內。 當使用者想讓他的網路使用 802.1x 的時候,如果他只能無線連接 時,可能的做法是: 1.. 先行以 WEP Key 方式連線,操作 WEB GUI,透過”操作 CA” 的畫面,輸入使用者姓名與密碼,產生無線使用者端的憑 證,並且連同 RootCA 的憑證,分別兩次的操作,將憑證先 行安裝到作業系統內。. 2.. 透過 WEB GUI,選擇改變無線網路路由器的 WLAN 連線的安 全模式為 802.1x 的 EAP-TLS 認證,並且可自由選擇是否由 RADIUS Server 自動提供 WEP session Key。. 3.. 啟動改變 WLAN 連線為 802.1x,接著無線網路會斷線,因為 已改變認證方式。. 4.. 使用者透過改變自己的 WLAN Client 軟體的連線 Profile,將 連線認證方式也改成 802.1x 的 EAP-TLS 認證,並且指定使 用的使用者憑證與 RootCA 的憑證,別忘了輸入使用者名稱 與密碼。. 5.. 重新啟動連線,過了幾秒鐘之後,當無線使用者端與 RADIUS Server 互相驗證完憑證之後,接著 RADIUS Server 會傳送將來使用的 WEP session Key 給無線使用者,然後無 線使用者就用新的 WEP session Key 來正常上網了,如果網 際網路的連線也一樣正常連線的話。. 當使用者想讓他的網路使用 802.1x 的時候,而且他也能使用有線連. 40.

(51) 接時,設定情況會比較簡單,可能的做法如下: 1. 先透過有線連接上的 PC 或 Notebook,連上無線路由器,操作 WEB GUI,透過”操作 CA”的畫面,輸入使用者姓名與密碼,產 生無線使用者端的憑證,並且連同 RootCA 的憑證,分別輸出到 兩個檔案。 2. 繼 續 操 作 WEB GUI , 選 擇 改 變 WLAN 連 線 的 安 全 模 式 為 802.1x,並且可自由選擇是否由 RADIUS Server 自動提供 WEP session Key。 3. 啟動改變 WLAN 連線為 802.1x。注意,這時有線的 LAN 連線並 不會斷線。 4. 將步驟一所產生的兩個憑證輸入到無線使用者端的機器。用各種 方式傳給使用者端的機器,包括 e-mail、ftp、或者是磁片檔,我 們可以不用擔心安全的問題,因為使用者的 Private Key 是被密 碼保護著。 5. 使用者透過改變自己的 WLAN Client 軟體的連線 Profile,將使用 者端的連線認證方式改成 802.1x 的 EAP-TLS 認證,並且指定使 用的使用者憑證與 RootCA 的憑證,別忘了輸入使用者名稱與密 碼。 6. 啟動無線使用者端的連線,過了幾秒鐘之後,當無線使用者端與 RADIUS Server 互相驗證完憑證之後,接著 RADIUS Server 會 傳送將來使用的 WEP session Key 給無線使用者,然後無線使用 者就用新的 WEP session Key 來正常上網了,如果網際網路的連 線也一樣正常連線的話。. 4.6.2 內部 RADIUS Client+內部 RADIUS Server+外部 CA 這個架構使用到一台外部的 CA,這個外部 CA 的可能性與連接性有 41.

參考文獻

相關文件

另一種採用 RADIUS 認證的方法,請參閱 2013 年這篇:FG110C SSL VPN 配合 Windows AD 帳號 認證設定說明 .pdf ,因 LDAP

由於較大型網路的 規劃必須考慮到資料傳 輸效率的問題,所以在 規劃時必須將網路切割 成多個子網路,稱為網 際網路。橋接器是最早

 附錄 2:在 Windows XP 中將 Tera Term 設定為預設 Telnet 用戶端..  附錄

 不過以上所提的內容幾乎都會被現在的智慧型手機取 代,因此我們覺得這些功能能夠運用在一個沒有網路

例如 : http ( 網頁伺服器所用的協定 ) 定義了 client 如何向 server request 網頁及 server 如何 將網頁及其中的各種內容回傳給 client 。. 提供服務給 application layer

(A)憑證被廣播到所有廣域網路的路由器中(B)未採用 Frame Relay 將無法建立 WAN

[r]

每個 zone 交由一部 name server負責的作 法會有一個問題,萬一這個 name server 當 掉,可能造成 Internet上其它機器無法取得屬 於這個 zone 的資料(就是 domain name