第三章 相關研究
3.2 Cookie認證之研究
Cookie是被發明應用在維持Server和Browser之間的狀態,也就是說使用者登入一個系
統,經過認證過程後,如果認證成功,伺服器會將認證字串(Message Authentication code,MAC)以Cookie的形式儲存在使用者的電腦中,待使用者再度登入同一個系統時,伺服 器會從cookie中取出先前發給使用者的認證字串並進行驗證,而無須使用者再次進行登入 的動作。不過若使用Cookie來驗證使用者身分,有一些安全上的議題是值得考慮的。1、Clear Text Cookie:
未加密的cookie是很容易在傳送過程中,被攔截進而取得私密資料;即便是加密過的 cookie被攔截後,也能利用重送攻擊(replay attack)來欺騙伺服器,因此cookie中儲 存的內容與傳遞過程,已經出現了很大的漏洞。因此在設定cookie內容時,應該要避免 儲存一些私密資訊;並且在資料傳遞過程中,最好使用SSL加密傳輸,以補強cookie被 竊取的風險。
2、Cookie Storage Security
一般來說,使用者瀏覽器會將cookie存放在用戶端電腦中,此時惡意攻擊者便可透過外 掛程式或其他方法來竊取cookie,因此使用in-memory cookie或session cookie來儲存 資料比將cookie存放在用戶端電腦中安全許多。
3、Cookie Destination Control
當使用者透過瀏覽器要求伺服器派發cookie時,此cookie只能被與原伺服器同網域或子 網域之伺服器所存取,但是透過用戶端的網域名稱伺服器(Domain Name Server),卻可 以修改原本不隸屬於派發cookie伺服器的網域,造成不合法的伺服器取得該cookie,我
們也將此稱之為cookie-harvesting threat。
4、Client IP Address Restriction
在cookie中加入用戶端的 IP Address,可以避免伺服器遭受重送攻擊。不過在某些情 況下,此機制可能會遇到一些困難,例如:在Network Address Translation(NAT)的環 境中或使用者透過代理伺服器(Proxy Server)連接伺服器時,用戶端的 IP Address 可 能會因此而改變,造成利用 IP Address 來驗證cookie的合法性失效。
基於以上的問題,Joon S.Park and Ravi Sandhu[9]在2000年提出三種型態的Secure Cookie,用以驗證使用者是否為cookie持有人,以防cookie被有心人竊取、重送,這三種 型態的Secure Cookie分別為 Address-based authentication、Password-based
authentication 與 Digital-signature-based authentication,如圖3.4。
圖 3.5 三種型態的 Secure Cookie
資料來源:Joon S.Park and Ravi Sandhu(2000)[9]
Address-based authentication(IP_Cookie):
當用戶端透過瀏覽器向伺服器要求存取時,伺服器會立即取得用戶端的IP Address並 將之存入cookie(IP_Cookie)中。當用戶端再度向此伺服器要求存取時,伺服器會先核 對用戶端的IP Address是否與IP_Cookie中的IP值一致;如果相同,伺服器就會相信此 用戶端是IP_Cookie的真正擁有者。
Password-based authentication:
伺服器將用戶端提供的密碼經過 hash 函數的加密後,存放在cookie(Pswd_Cookie) 中。當用戶端向伺服器要求存取時,必須先輸入一串密碼,再經過 hash 函數的加密,
若此加密過的密碼與存放在Pswd_Cookie的密碼值相同,伺服器就會相信此用戶端是 Pswd_Cookie的真正擁有者。
Digital-signature-based authentication:
如果伺服器知道用戶端的public key,像DSA或RSA的技術,伺服器就可以確認使用者 是否為cookie真正的擁有者。
在2005年Alex X. Liu等人[10]針對 Joon S.Park and Ravi Sandhu 利用cookie所提出 的三種認證方法,提出一個Secure Cookie Protocol,以解決此三種認證機制較無效率與 不容易部署的問題,並滿足一個Secure Cookie Protocol該提供的四項服務:可認證性 (Authentication)、機密性(Confidentiality)、完整性(Integrity)、防止重送攻擊 (Anti-replay)。
認證性(Authentication):
Joon S.Park and Ravi Sandhu 所提出的三種Secure Cookie認證機制,在某些情況下,
會遇到一些困難。
IP_Cookie:
由於IP_Cookie是透過IP位址(IP Address)來確認使用者身分,因此會有 會三個問題發生。1、 惡意攻擊者利用IP偽造(IP Spoofing)的技術通過認證機制。
2、 用戶端透過DHCP(Dynamic Host Configuration Protocol)取得IP位址,導致IP 位址可能會變動。
3、 在NAT(Network Address Translator)或代理伺服器(Proxy Server)的環境下,其 他的用戶端可能也會取得相同的IP位址。
圖 3.6 A Secure Cookie Protocol 資料來源:Alex X. Liu等人(2005)[10]
機密性(Confidentiality):
在需要高等級得機密的環境中,Joon S.Park and Ravi Sandhu 利用伺服器隨機產生 的Session Key來加密cookie中的資料,再利用伺服器的公開金鑰(Public Key)來加密 Session Key,並存入cookie(Key_cookie)中。由於此種方法使用到公開金鑰的演算 法,因此會使得cookie protocol變的複雜且沒有效率。因此,Alex X. Liu等人利用 HMAC(user name | expiration time,sk)來當作加密金鑰 k,以確保資料的機密性,
而此方法有三個優點:
1、 密鑰唯一性:由於每位使用者的名稱與cookie過期時間皆不相同,因此產生的加
3、 及server key
態產生,因此加密金鑰 k 不用儲存在伺服器端或是cookie中。
密金鑰也會不同。
2、 密鑰不可偽造:因為server key是無法被得知的,因此加密金鑰k也就無法被偽造。
密鑰不用儲存:由於加密金鑰k是利用user name、expireation time 動
完整性(Intergrity):
Alex X. Liu等人利用金鑰雜湊訊息認證碼(keyed-hash message authentication code ,簡稱HMAC)來驗證資料是否有被竄改,只要cookie中的值有被修改過,其產生的HMAC
便會與原先在cookie中的HMAC不同。
防止重送攻擊(Anti-replay):
Alex X. Liu等人將 SSL 的session key加入到訊息認證碼(HMAC)中,再經由加密金鑰 k加密,如HMAC(user name | expiration time | data | session key,k),則此時HMAC
人所提的Secure Cookie Protocol加以簡化改良,詳細的設計將在 四章中加以說明。
就具有session 的特性,因此即使此cookie被竊取來進行重送攻擊,也無法成功。
即使各學者所提的安全Cookie,能有效的達到資料的可認證性、機密性、完整性與防 止重送攻擊,不過隨著科技日新月異,即使再安全的設計,總有被破解的一天,所以我們 儘可能不要把重要或敏感的資料存放在cookie中,以避免私密資料外洩的問題發生。最後,
我們針對Alex X. Liu等 第