• 沒有找到結果。

背景知識

本章節主要介紹及說明本論文主題相關的理論與技術,其內容包括網頁式單一登入 (Web-Based Single Sign-On)所解決的問題及優點;HTTP Cookie 與 Session 運作模式有 何不同,並如何應用在身分認證上;對稱式加密演算法(Symmetric Cryptographic Algorithm)、非對稱式加密演算法(Asymmetric Cryptographic Algorithm)與單向雜湊 函數(One-Way Hash Function)的介紹;安全通訊層(Secure Socket Layer)的架構與 提供的安全服務;角色為基礎的存取控制(Role-Based Access Control)與其他存取控制策 略的比較,最後談及 Transcoding Reverse Proxy 的運作模式與運用在單一登入上的特性。

2.1 網頁式單一登入(Web-Based Single Sign-On)

隨著網際網路的發達,更多網路應用程式(Web Application)被開發,並組成了龐大 的服務網路脈絡,讓使用者享受網路科技帶來之便利,也創造了龐大的商機。但由於服務 網站過於分散,且各自擁有獨立的資料庫與認證機制,讓使用者必須重複登入各網站,才 能取得權限使用該服務,其多重登入示意圖,如圖2.1。

分散的網路服務具有下列幾項缺點:[1]

1、使用者操作不便。

2、系統帳號、密碼管理不易,且造成資安問題的發生。

3、系統效能不佳。

4、系統管理成本增加。

5、異質系統資源整合不易。

為了解決這些問題,單一登入(Single Sign On,SSO)機制就隨著因應而生。

圖 2.1 多重登入示意圖

「單一登入」(Single Sign-On,SSO)[1][5][19]即只要一組識別碼和密碼就可以讓 使用者登入不同的系統,使用者就不需要為了不同的系統記住多組識別碼和密碼。網頁式 單一登入系統(Web-Based Single Sign-On,WSSO)[3][24],是指使用者透過瀏覽器,在 經過一次的身分驗證後,便可以存取不同網站的系統資源,而不需要再重複輸入帳號、密 碼。由於以網頁為基礎(Web-Based)的介面,具有跨平台、介面簡單、無國界的特性,在加 上單一登入的優點:

1、使用者用一組帳號、密碼即可存取不同網站之服務,而不需要記憶多組帳號、密碼,

也不用反覆執行登入的動作,以節省使用者時間。

2、集中管理使用者帳號及密碼,以遏止資訊安全問題發生。

3、透過一次性認證,即可取得各網路應用程式資源,大大提升系統效能。

4、經由集中式的認證機制與權限控管,減少維護的時間,以降低管理成本。

5、串聯不同網域的網路應用程式,以整合異質系統之資源。

因此,很快的使網頁式單一登入系統(Web-Based Single Sign-On)被廣泛的應用。網頁 式單一登入示意圖如圖2.2。

圖 2.2 網頁式單一登入示意圖

2.2 HTTP Cookie與Session

隨著網際網路及全球資訊網的快速發展,越來越多人透過瀏覽器來尋找他們所需的服 務與資源,而瀏覽器主要是透過 HTTP 協定(Hypertext Transfer Protocol)來連結網頁 伺服器取得網頁;HTTP 是以請求與回應模型為基礎[3][26],即當用戶端透過瀏覽器發出 一個服務請求(Request),伺服器就會回應(Respose)該請求,當每次的請求與回應完 成後,使用者的瀏覽器和伺服器間的連線就會中斷,因此我們也稱 HTTP 是一種無狀態

(Stateless)的協定,而 Cookie 正是一種可以解決 HTTP 無狀態(Stateless)協定的 方法,且因為 Cookie 的傳遞都是透過 HTTP Header 來實行,所以也有人稱它為HTTP Cookie[4][27]。由於伺服器(Server端)可以透過 Cookie,將一小段資訊儲存在用戶端 的電腦裡(Client端),以便下次連線時可以存取,所以常被應用在認證、追蹤與記錄使 用者的資訊,因此很多網站都會使用 Cookie 來維持使用者的連線狀態。例如:線上購物 網站、線上銀行、個人化的服務網站(iGoogle)…等。

Cookie 一般而言可以分為持續性(Persistent)與暫時性(Transient),兩者的差 別在於持續性 Cookie (Persistent Cookie)會存在使用者的電腦,直到使用期限

(Expiration Date)到了或使用者自行刪除才會消失;而暫時性 Cookie (Transient Cookie)是暫存於伺服器中,一旦使用者關閉瀏覽器,暫時性 Cookie 就會消失,因此,

暫時性 Cookie 也常被稱為「Session Cookie」。

Cookie的規格有六個部分,這六個部分分別為:name、value、expire、domain、path、

secure,其結構分別描述如下:

Domain 為設定那個網域可存取 Cookie,只有在與此設定相同的網域或子網域內才能 存取該 Cookie 。如果不指定此參數, Domain 就指定為設定該 Cookie 的網頁所在 的網域。

‹Path

Path 為指定可以存取該 Cookie 的有效路徑,URL 經過 Domain 的比對符合之後,再 與 Path 的設定比對,符合路徑的才能存取該 Cookie 。一般最常用的的 Path 設定 值為"/"。如果不指定此參數,Path 就指定為設定該 Cookie 的網頁所在的路徑。

‹Secure

Secure 是指定是否使用安全認證,若 Secure 被設定,則Cookie只會在使用HTTPS

(HTTP over SSL)的連線間傳輸。若以 PHP 語法來設定 Cookie 時,Secure 值為1,代 表須使用 HTTPS 連線;若為0,則代表不使用 HTTPS 。

Session 的功能和 Cookie 一樣,都是用來記錄使用者的習慣與資訊,而其不同點在 於,Cookie 的資訊是存在用戶端(Client),Session 是存在伺服器端(Server)。一般 來說,Session 在一段時間沒有再開啟另一個網頁,或是執行登出功能,工作階段就會結 束,為了能夠長期記錄這些資訊,Session 都會搭配 Cookie 來使用,因此 Session 也算 是一種 Cookie 的改良;不過有時用戶端會了安全考量,關閉瀏覽器 Cookie 的功能,使得 瀏覽器必須使用網址改寫(URL Rewriting)的方式來傳送 Session ID,也讓有心人士有機 會從網址列中取得某些資訊,進行進程追蹤,造成資訊安全問題。例如:

https://testsso.myftp.org/admin.php?sid=1A2A0BFA32B0025C8BA00A5E697A9D12

由於 Session 的資訊是儲存在伺服器端(Server),因此也常應用在使用者身分認證

上。透過 Session 認證流程如圖2-3。

圖 2.3 Session 認證流程圖

1、用戶端在登入網頁中輸入帳號、密碼。

2、伺服器核對帳號、密碼與資料庫的資料是否一致。若不一致則重導回登入畫面。

3、伺服器產生一組隨機的 Session ID並經過 MD5加密後,存入 Cookie中回傳給用戶端。

4、用戶端透過瀏覽器使用 Cookie、POST 或 GET 的方式將加密過的Session ID傳給伺服 器並請求服務。

5、伺服器依照 Session ID 取出參數值,並確認用戶端是否已完成認證及 Session ID存 活時間是否過期。

6、回應請求的結果。

2.3 加解密技術

本節針對本系統會使用到的加解密技術分成三個部份作一簡單介紹。第一部分為對稱 式加密演算法;第二部分為非對稱式加密演算法;第三部分則為單向雜湊函數。

對稱式密碼演算法(Symmetric Cryptographic Algorithm)

對稱式密碼演算法,亦稱為私密金鑰加密演算法[15]。此方法在進行加、解密時,都

使用同一把金鑰。所以不知道金鑰的第三者,將無法得知加密後的資料內容,因此才被稱 為對稱式加密演算法。由於加、解密時都用同一把金鑰,所以處理速度快是其優點,但是 如何把金鑰安全的送到接收者的手上進行解密以及傳遞資料人數多時金鑰的管理,是此演 算法最大的問題所在。目前較為知名的對稱式加密演算法有DES、IDEA、Rijndael(AES)等。

圖 2.4 對稱式密碼演算法 資料來源:陳軒正(2004)[15]

非對稱式密碼演算法(Asymmetric Cryptographic Algorithm)

非對稱式密碼演算法,亦稱為公開金鑰密碼演算法[15],此方法在進行加、解密時,是 透過兩把不同的金鑰,而此兩把金鑰是唯一的配對關係,一把稱為公開金鑰(Public Key),

可以公開分享給人知道;另一把稱為私密金鑰(Private Key),由產生公開金鑰的使用者 擁有。經過公開金鑰加密的資料,只能用私密金鑰來解密。由於加、解密是使用不同的金 鑰,因此在處理的速度上比對稱式密碼演算法來得慢。目前較有名的非對稱密碼演算法有 RSA、ELGamal及Diffie-Hellman金鑰交換等。

圖 2.5 非對稱式密碼演算法 資料來源:陳軒正(2004)[15]

單向雜湊函數 (One-Way Hash Function)

所謂單向雜湊函數就是將任一長度的訊息 m,經過此函數的運算輸出 H(m),此輸出訊 息稱為雜湊值(Hash Value)、訊息摘要(Message Digest)或數位指紋(Digital Fingerprint),如圖2.6。

單向雜湊函數具有兩個特性:

1、單向性(One-Way)或不可逆:

想要在合理的時間範圍以及有限得資源限制下,由H(m)推算出m是不可行的。

2、抗碰撞性(Collision Resistance):

將任意兩訊息m,n經過單向雜湊函數運算後,不會產生相同的雜湊值。

所以此加密法常被應用在確保資料傳送的完整性、數位簽章及驗證訊息等。目前常見的單 向雜湊函數有MD5及SHA-1。

圖 2.6 單向雜湊函數

2.4 安全通訊層(Secure Socket Layer)

Secure Socket Layer(簡稱SSL)是Netscape所提出的一種網路通訊安全協

定[5] [28],其目的在確保通訊雙方資料傳輸之安全,以避免資料在傳輸過程中被攔截、

竊取或偽造,因此SSL廣泛被應用在網頁傳輸安全協定(HTTP + SSL = HTTPS)上。

SSL 是介於傳輸層(Transport Layer)與應用層(Application Layer)間的安全機 制,主要分為四個子協定:SSL 紀錄協定(SSL Record Protocol)、SSL 握手協定(SSL Handshake Protocol)、SSL 改變特定加密協定(SSL Change Cipher Spec Protocol)、

SSL 警報協定(SSL Alert Protocol),如圖 2.7。

圖 2.7 SSL 協定架構圖

透過 SSL 紀錄協定(SSL Record Protocol)及 SSL握手協定(SSL Handshake Protocol) 可達到下列三個目的:

1、身分驗證(Authentication):讓用戶端和伺服器可以互相驗證對方的身分。

2、訊息機密性(Confidentiality):提供通訊兩端一個經過加密具有機密性的連線。

3、訊息完整性(Integrity):透過雜湊函數加密,以確保訊息未被竄改。

2.5 角色為基礎的存取控制(Role-Based Access Control)

存取控制(Access Control)[16]是一種管理模式,詳細規定了使用者可以從事哪些 動作,並限制使用者做出危害系統安全的動作。存取控制在資訊管理中是一項非常重要的 課題,最基本的是「存取控制列表」,列出使用者對於那些物件有什麼權限。一般常見的存 取控制策略(Access Control Policy)[31]有:自由選擇存取控制、強制存取控制、以角色 為基礎的存取控制。

自由選擇存取控制(Discretionary Access Control,DAC)

在 DAC 中的環境中,資源的擁有者,可自行決定把權限轉移給他人,接受到權限的使 用者,不需要原資源擁有者的同意,就可以任意的將權限,再授與給其他的使用者。

強制存取控制(Mandatory Access Control,MAC)

強制存取控制是一種集中式的安全性控制,屬於管理者基礎的存取控制,所有資源都 交由特定的權限中心來管理,這個權限中心記錄著每位使用者所能使用的資源及每項資源 可以提供給哪些使用者來存取。

角色為基礎的存取控制(Role-Based Access Control,RBAC)

Role-Based Access Control(RBAC)[2][23]是在1992年被提出,與前面兩種存取控制

Role-Based Access Control(RBAC)[2][23]是在1992年被提出,與前面兩種存取控制

相關文件