行政院國家科學委員會專題研究計畫 成果報告
適用於行動應用之鑑別與隱私保護機制(第 3 年) 研究成果報告(完整版)
計 畫 類 別 : 個別型
計 畫 編 號 : NSC 98-2221-E-011-073-MY3
執 行 期 間 : 100 年 08 月 01 日至 101 年 07 月 31 日 執 行 單 位 : 國立臺灣科技大學資訊管理系
計 畫 主 持 人 : 吳宗成
計畫參與人員: 碩士班研究生-兼任助理人員:王瑜君 碩士班研究生-兼任助理人員:陳映瑄 博士班研究生-兼任助理人員:嚴貽忠 博士班研究生-兼任助理人員:李報棋
公 開 資 訊 : 本計畫涉及專利或其他智慧財產權,1 年後可公開查詢
中 華 民 國 101 年 09 月 10 日
中 文 摘 要 : 本計畫「適用於行動應用系統之鑑別與隱私保護機制」為三 年期計畫,本年度為第三年,延續前兩年的成果,設計一鑑 別與隱私保護機制,並將之應用於輕量化密封式競標系統,
使其適用於行動裝置,同時為了加強保護隱私,因而實作一 基於代理伺服器之輕量化網頁安全防禦雛型系統。本計畫採 用自我驗證鑑別加密的技術達成隱私保護機制,設計具匿名 保護的密封式競標。在所提出的競標機制中,招標商能自行 驗證其競標者是否為合法註冊的競標者,並且讓競標者能指 定其招標商競標,以確保其競標資訊不被洩漏,而招標商也 能自行驗證其競標訊息之有效性與競標者的合法性,並得知 其競標金額。再者,在競標與開標階段,競標管理者與招標 商皆無法得知其競標者身分,直到確認最高競標價格的標單 時,招標商首先驗證其標單的合法性,進而驗證其身分的正 確性。此外,為了維護隱私的完整保護,本計畫亦實作一輕 量化網頁安全防禦系統,將使用者瀏覽的網頁先經過數種偵 測核心分析,若檢測到可疑的存取,將直接阻擋,防止使用 者遭到攻擊。除防禦外並兼顧跨平台、輕量化及高效能等優 點。
中文關鍵詞: 密封式競標、鑑別加密、網頁安全、防禦系統
英 文 摘 要 : Pervasive Authentication and Privacy Protection Mechanisms for Mobile Applications is a three-year project. This year is the third year of this project.
Following the efforts during past two years, based on self-certified authenticated encryption we design a pervasive authentication and privacy protection mechanism and apply it to a light-weight anonymous sealed-bid auction scheme suitable for mobile
devices. In order to enhance privacy protection, we implement a light-weight web security defense system based on proxy server. In our scheme, the auctioneer can self-certify whether the bidder is legal or not and let the bidder designate the auctioneer to bid in order to ensure the bidding information will not be exposed. Besides, the auctioneer also can self-verify the bidder’s validity and legality, and then can obtain the bidding price. Most importantly, in the bidding and opening phase, everyone including the bidders, auctioneers and auction manager doesn’t know the identity of bidders until the highest price is ensured and then the auctioneer shall verify the
validity of bidding information and also verify the correctness of identity. In addition, we implement a web security defense system based on proxy server.
All HTTP requests and responses are analyzed by a number of detection modules. In case a malicious action is detected, our system will block the action to protect the user. Additionally, our system
provides the advantages of being cross-platform, lightweight and high performance.
英文關鍵詞: Sealed-bid auction, authenticated encryption, Web Security, Defense System
行政院國家科學委員會補助專題研究計畫 ■成果報告
□期中進度報告
適用於行動應用之鑑別與隱私保護機制
計畫類別:■個別型計畫 □整合型計畫
計畫編號:NSC 98-2221-E-011-073-MY3 執行期間:2009 年 08 月 01 日至 2012 年 07 月 31 日 執行機構及系所:國立臺灣科技大學資訊管理系
計畫主持人:吳宗成教授 共同主持人:無
計畫參與人員:碩士班研究生王瑜君、碩士班研究生陳映瑄、博士班研究 生李報棋、博士班研究生嚴貽忠
成果報告類型(依經費核定清單規定繳交):□精簡報告 ■完整報告
本計畫除繳交成果報告外,另須繳交以下出國心得報告:
□赴國外出差或研習心得報告
□赴大陸地區出差或研習心得報告
□出席國際學術會議心得報告
□國際合作研究計畫國外研究報告
處理方式:除列管計畫及下列情形者外,得立即公開查詢
□涉及專利或其他智慧財產權,□一年□二年後可公開查詢
中 華 民 國 101 年 7 月 31 日
內容
中文摘要 ... 3
英文摘要 ... 3
關鍵詞 (keywords) ... 3
前言 ... 4
研究目的 ... 5
文獻探討 ... 6
研究方法 ... 9
結果與討論 ... 19
計畫成果自評 ... 27
參考文獻 ... 28
中文摘要
本計畫「適用於行動應用系統之鑑別與隱私保護機制」為三年期計畫,本年度為第三年,延續前兩年 的成果,設計一鑑別與隱私保護機制,並將之應用於輕量化密封式競標系統,使其適用於行動裝置,
同時為了加強保護隱私,因而實作一基於代理伺服器之輕量化網頁安全防禦雛型系統。本計畫採用自 我驗證鑑別加密的技術達成隱私保護機制,設計具匿名保護的密封式競標。在所提出的競標機制中,
招標商能自行驗證其競標者是否為合法註冊的競標者,並且讓競標者能指定其招標商競標,以確保其 競標資訊不被洩漏,而招標商也能自行驗證其競標訊息之有效性與競標者的合法性,並得知其競標金 額。再者,在競標與開標階段,競標管理者與招標商皆無法得知其競標者身分,直到確認最高競標價 格的標單時,招標商首先驗證其標單的合法性,進而驗證其身分的正確性。此外,為了維護隱私的完 整保護,本計畫亦實作一輕量化網頁安全防禦系統,將使用者瀏覽的網頁先經過數種偵測核心分析,
若檢測到可疑的存取,將直接阻擋,防止使用者遭到攻擊。除防禦外並兼顧跨平台、輕量化及高效能 等優點。
英文摘要
Pervasive Authentication and Privacy Protection Mechanisms for Mobile Applications is a three-year project.
This year is the third year of this project. Following the efforts during past two years, based on self-certified authenticated encryption we design a pervasive authentication and privacy protection mechanism and apply it to a light-weight anonymous sealed-bid auction scheme suitable for mobile devices. In order to enhance privacy protection, we implement a light-weight web security defense system based on proxy server. In our scheme, the auctioneer can self-certify whether the bidder is legal or not and let the bidder designate the auctioneer to bid in order to ensure the bidding information will not be exposed. Besides, the auctioneer also can self-verify the bidder’s validity and legality, and then can obtain the bidding price. Most importantly, in the bidding and opening phase, everyone including the bidders, auctioneers and auction manager doesn’t know the identity of bidders until the highest price is ensured and then the auctioneer shall verify the validity of bidding information and also verify the correctness of identity. In addition, we implement a web security defense system based on proxy server. All HTTP requests and responses are analyzed by a number of detection modules. In case a malicious action is detected, our system will block the action to protect the user.
Additionally, our system provides the advantages of being cross-platform, lightweight and high performance.
關鍵詞 (keywords)
密封式競標、鑑別加密、網頁安全、防禦系統
Sealed-bid auction, authenticated encryption, Web Security, Defense System
前言
隨著行動數位資訊科技與無線網路高度的發展與應用,使用者所使用的終端設備已不再僅限於傳 統的個人電腦,利用「行動裝置」(mobile device)或無線網路(wireless network)進行資料交換、分享、
傳播,逐漸建構一個無所不在(ubiquitous)社會生活型態。,如何在計算能力、記憶體空間、電池電量 有限制的行動裝置中,提供使用者保護個人隱私與資訊安全需求的安全可靠應用環境,是當前重要的 研究議題。近年來,網際網路的蓬勃發展使得網路交易急劇地成長,透過網際網路上的電子交易,消 費者和拍賣者可以迅速地完成許多商業行為,這不僅能節省雙方時間,也能免去一些不必要的手續來 降低成本。有鑑於此,本計畫設計一鑑別與隱私保護機制,採用自我驗證鑑別加密的技術,將之應用 於輕量化密封式競標系統,使其適用於行動裝置,並針對密封式競標目前使用之密碼機制,探討其安 全議題與效率問題,並提出改善的方法。
在傳統的競標方式中,競標者必須要親自到競標會場進行競標,因為時間與空間的因素,導致有 許多人無法參與競標,因而限制了市場規模。因此,電子競標慢慢的興起,可有效地解決傳統競標因 時因地所造成之不便;但因所有競標資訊經由公開網路傳送,因此也存在許多資訊安全疑慮,如竄改、
偽造、複製等。電子競標通常可分成以下兩種,一種是開放式競標,另一種是密封式競標。在開放方 式競標中,又可分成兩種,一種為英式拍賣機制,由每位競標者不停的喊價,當沒有人出價時,便以 出價最高的競標者獲得物品,像是著名的奇摩拍賣便是此種方式。另一種為荷式拍賣機制,由拍賣者 先宣告一個價格,然後逐步降價,一直到有人接受所宣告的價格為止。接受宣告價格的競標者就是贏 家,必須支付宣告的價格。此種競標競方式可進行多次,又稱為多次競標行的競標方式。而在密封式 競標中,也可分成兩種,一種為第一高價,也就是競標者透過送出一密封標單,待競標時間終止,招 標商便進行開標作業,以競標價值較佳者為得標者,在許多大型工程發包與政府採購皆採取此種方式;
另一種則為第二高價,基本上與第一高價拍賣相同,只有在最後以第二高的出價作為購買物品的價格。
此兩種競標方式,競標者皆只能進行單次競標,因此又稱單次競標方式。此兩種電子競標皆有其實務 可行性,本計畫將只針對密封式競標進行探討。
而近年來,有許多學者分別提出不同的保護機制來保護。最早在 1996 由 Franklin 與 Reiter [FR96]
率先提出基於秘密分享(secret sharing)的密封式競標機制,使用分散式招標商的方式去找出其競標價格,
使在整個競標活動上,能夠避免招標商欺騙之行為,但由於一旦得標者確定之後,會將標單洩漏給所 有招標商知道,因此無法達到標單隱私保護的功能。而在 1998 年 Kudo[Kud98]則提出使用時間伺服器 的密封式競標機制,將密封式競標加入時間的概念並利用公開金鑰密碼系統與時間金鑰憑證(time-key certificate)的概念來滿足時間相關的需求,然而由於招標商只會公佈其得標價格讓其他競標者去驗證,
因此得標者並未持有得標證據。1999 年 Cachin[Cac99]提出基於同位加密(homomorphic encryption)與模 糊第三方之密封式競標機制,2002 年 Suzuki 等人[SKM02]提出使用雜湊鏈(hash chain)的密封式競標機 制且 Omote 與 Miyaji[OM02]也提出使用雙管理者與電子佈告欄系統的電子競標機制與簡易的撤銷機 制,然而若當管理者遭受共謀攻擊時,則在宣佈得標者階段時,招標商將無法有效識別其管理者身分,
因此 2003 年 Chang 與 Chang[CC03] 提出任意且匿名競標之電子競標機制,並宣稱能夠有效確保競標 者的匿名性與完整性,但後人指出[CC03]易遭受中間人攻擊。2005 年 Juang 等人[JLLL05]基於[CC03]
所提出的方法來提出不需要相互信任的公正第三方的協助之下,使用門檻式加密機制來達到競標者之 間的公平性。2006 年 Chang 與 Chang [CC06]改進 Chang 與 Chang 的機制[CC03]並提出改良且強調具 匿名性的競標機制。之後也有許多不同的變化,包括在 2007 年 Zheng 等人[ZMM07]提出不需有招標商 之第一高價密封式競標機制,在 2008 年 Islam 與 Rahman[IR08]提出一種新的拍賣機制隱私標準,能夠
避免當其競標參與者進行共謀時其競標資訊被竊取。而在 2011 年 Li 等人[LJT11]指出 Chang 與 Chang 皆 無法有效強調其匿名性,競標隱私保護與競標價格的保護,因此提出使用雙管理者與零知識證明(zero knowledge proof)來達到其匿名性。
然而,在實際競標的情形,當開標時應該也需保持競標者的匿名性,以確保開標之公平,但上述 所提及機制[LJT11] [CC03] [CC06]之匿名性,皆無法有效達到當開標時競標者仍具有匿名性。因為對競 標管理者而言,將會知道所有競標者的身分,如此一來便無法達到真正的公平性與匿名性,此外,上 述部份機制也仍具有以下幾個缺點,包括:(1)未能鑑別雙方身分並驗證其競標訊息之有效性;(2)競標 時,未驗證競標訊息的有效性;(3)開標結束並公佈其競標結果時,招標商也並沒有驗證得標者身分的 有效性與合法性;(4)計算與溝通成本過高;除此之外,考量在實際的密封式競標上,有可能會遇到相 同標價之狀況,因此將需要有一個公平且有效率的解決方式。
此外,本計畫為了加強適用於行動應用系統之鑑別與隱私保護機制,因而實作一基於代理伺服器 之輕量化網頁安全防禦雛型系統。由於網頁安全一直以來都是近年資訊安全的熱門議題,惡意網頁的 成長速度確實在逐年成長中。根據 “Trend Micro TrendLabs Threat Trends 2010”年度報告中指出,2010 年超過 80% 的惡意程式透過網頁散播,而台灣一直以來都是受害者數量前五名。在最新的 “Trend Micro Quarterly Roundup” 2011 第三季報告指出,一個十分熱門的電子商務平台 “osCommerce” 套件 在 2011 年 7 月被大規模攻擊,有大約 90,000 個頁面受害,並遭到植入惡意 iframe,導向至惡意網 站。最新 2011 年 10 月份 “Symantec Intelligence Report”報告指出,每天有 3,325 個惡意網站被 Symantec 阻擋。10 月份更有高達 43.9% 的新惡意網站被阻擋。根據上述數據我們可以了解惡意網站成長的速度 十分快速,而使用者單憑簡單的入侵偵測系統、防火牆、防毒軟體及瀏覽器安全保護等,並沒有辦法 有效且快速的進行阻擋惡意網站。若可以直接將使用者瀏覽中的網站直接進行即時過濾偵測並進行防 禦,可比傳統防禦方式來得更直接有效。
研究目的
本計劃所提出之鑑別與隱私保護機制,係以密封式競標為例,為了改進上述提及之現有密封式競 標的缺點並使其適用於行動裝置,因此採用雙線性配對函數作為運算基礎之自我驗證鑑別加密機制。
在鑑別加密機制當中,能將其訊息加密與數位簽章予以結合,並且可以限定特定的接收者去驗證且還 原其訊息,而自我驗證鑑別加密機制則可讓簽章者在驗證其簽章的同時,也能同時鑑別其公鑰的合法 性並獲得訊息,藉此可有效節省通訊與計算成本。因此,基於自我驗證鑑別加密之優點,本計畫將利 用自我驗證加密機制應用於密封式競標上,讓競標者能指定招標商進行競標,以確保其競標資訊未洩 漏出去,而招標商也能自行驗證其競標訊息的有效性與競標者的合法性,以便能更有效率的完成雙向 鑑別。
然而為了讓競標者在使用密封式競標時能夠獲得更多的保障,在本計畫中將考量下列安全需求與 操作需求,以確保每位競標者與招標商的權益:
安全需求(security requirement)
– 出價私密性(secret bidding prices):必須確保每個競標者的競標價格在開標之前是機密的,所有 人皆無法得知;
– 匿名性(anonymity):競標過程中,競標者的身分皆必須要隱藏無法被得知,且未得標者的身分 甚至要永久保密;
– 不可否認性(non-repudiation):開標結束後,得標者無法否認曾參與競標,並必須有履行購買的
義務;
– 不可偽造性(unforgeability):得標者與得標價格必須正確,招標商無法偽造假的得標者與得標價 來謀取利益;
– 不可竄改性(non-malleability):在競標與開標過程中,標單內容皆無法被竄改,此外競標者也不 能在競標價格送交給招標商後進行更改、撤回;
– 可驗證性(verifiability):開標後所有人皆可驗證標單來源的正確性及標單內容的完整性;
– 抵抗重送攻擊(against replay attack):惡意攻擊者無法藉由重複傳遞相同的競標資訊來假冒競標 者進行競標;
– 抵抗中間人攻擊(against man-in-the-middle attack):惡意攻擊者無法假冒成競標者傳送竊取或經 竄改的資料傳送給招標商;
– 雙向鑑別(mutual authentication):競標者、招標商與競標管理者任意的雙方皆能正確的鑑別對方 身分。
操作需求(operational requirement)
– 可追蹤性(traceability):競標者對競標後產生的標單都握有證據,當開標時,得標者可憑此證據 證明自己得標,而招標商也能輕易追蹤找出其得標者;
– 時效性(time restriction):標單必須要在競標截止時間之前送達,過期標單則都視為無效標單;
– 單次註冊(one-time registration):任何競標者,只要註冊過一次,之後就不用重新註冊,便可直 接參與競標;
– 單次競標(one-time bidding):任何競標者,在同一次的競標活動中只能進行一次的競標,不能反 悔或者重複進行競標動作。
除了滿足上述的需求外,本計畫將提出新的匿名保護機制,在競標與開標階段,競標管理者與招 標商皆無法得知其競標者的身分,直到選出最高價標單之後,所有人皆可驗證其標單的合法性,而招 標商則會要求得知其確實身分,並驗證其身分是否正確。因此本計畫提出的方法具有以下特點:(1)競 標者達到匿名性;(2)所有訊息皆可自我驗證其正確性與有效性;(3)所有參與競標活動之競標者皆可公 開驗證得標者標單之合法性與有效性;(4)招標商有效確認得標者身分;(5)當競標者發生競標糾紛時能 有效處理。
此外,本計畫為了加強適用於行動應用系統之鑑別與隱私保護機制,因而實作一基於代理伺服器 之輕量化網頁安全防禦雛型系統。以密封式競標系統為例,目前網際網路存在數十萬個惡意網站,在 惡意網站大量繁殖的時代,若沒有一個有效的防禦機制,只要有新型態的攻擊出現,使用者將無法防 禦,於競標的過程中而危及隱私。而在知識傳遞發達以及攻擊技術門檻降低的情況下,惡意攻擊的數 量只會日益增加而不會減少。若沒有可以即時阻擋及防禦的解決方案,受害者將落為駭客眼中的肥羊。
惡意網站攻擊的途徑很多種類,目前大多數新型態的攻擊都是使用 JavaScript,包括攻擊瀏覽器、Adobe Reader、惡意程式下載等。為了能夠直接取得、檢查使用者所連線的網站,本計畫實作一代理伺服器,
將使用者連線的網站經過各種靜態、動態模組過濾,並將可疑的連線阻擋,以確保使用者接收到的頁 面是正常無虞的,提昇競標交易的安全性。
文獻探討
本章節將分別介紹本計畫所採用的相關技術與參考文獻,包含雙線性配對函數、鑑別式金鑰交換 機制、基於身分之鑑別式金鑰交換機制、鑑別式加密機制、使用自我驗證公開金鑰系統之鑑別式加密
機制、利用雙線性配對的自我驗證簽章機制、代理伺服器以及堆積擴展填充攻擊。
由於傳統的公開金鑰基礎建設架構必須花費大量的計算時間與儲存空間來核對以及保管憑證,因 此 Shmair[Sha84]於 1984 年提出基於身分之密碼系統,雖然能簡化金鑰管理的過程與時間,但此密碼 系統一直以來卻都沒有一個有效率的加解密方法,因此在發展上受到很大的限制。直到 2001 年,Boneh 與 Franklin[BF01]共同提出第一套完整、安全且有效率的基於身分之密碼系統,並以雙線性配對函數作 為運算基礎,才使得基於身分識別之密碼系統有了快速的發展。
雙線性配對係指兩個循環群之間相對應的線性映射關係(bilinear map),相關參數與符號定義為 G1 為加法循環群,其秩(order)為大質數 q 且生成元(generator)為 P。而 G2 為乘法循環群,其秩亦為大質數 q,表示式為 e :G1×G1→G2,對∀ P, Q∈ G1 且∀ a, b∈ Z,將滿足以下特性:
1. 雙線性(bilinearity) e(aP, bQ)=e(P, Q)ab
e(P1+P2, Q)=e(P1, Q)e(P2, Q) e(P, Q1+Q2)=e(P, Q1)e(P, Q2)
2. 非退化性(non-degeneracy):若 P 為 G1 的生成元,則 e(P, P)亦 為 G2 的生成元,即 e(P, P)≠1 3. 可計算性(computability):∀ P, Q∈ G1,可在多項式時間內計算 e(P, Q)
鑑別加密機制(authenticated encryption)最早於 1994 年由 Horest 等人[HMP94]所提出,其所提出的 機制中主要是將訊息加密與數位簽章技術予以結合,並只有特定的接收者才能夠解開訊息並驗證訊息 的正確性。在此種機制底下,則能夠有效達到一些隱私上的要求與有效鑑別訊息的完整性,並同時也 能有效減少其通訊成本,至此之後,陸續分別有許多學者提出不同的方法,包括在 1995 年 Lee 與 Chang[LC95]提出不使用單向雜湊函數的鑑別加密機制,藉由使用一個或多個模指數運算來減少單向雜 湊函數的使用,以避免遭受到已知明文攻擊,在 1996 年 Hwang 等人[HCY96]更提出具有訊息連結性的 鑑別加密機制,透過訊息的連結性,在傳遞大量訊息時可有效減少成本。在 1998 年 Hsu 與 Wu [HW98]
提出基於離散對數之門檻式共享驗證鑑別加密機制,在此機制中結合了具訊息恢復特性簽章的優點與 門檻式共享驗證機制,讓任何簽署者在只知道群體公開金鑰的情況下使用自己的私鑰去產生簽章。由 於在此機制中需要較少的頻寬且能有效達到資料傳輸的私密性,因此能比傳統的訊息驗證更有效率。
在 1999 年,Araki 等人[AUI99]更提出可轉換的驗證者簽章,讓簽章接收者可將簽章轉換成一般簽章,
讓任何驗證者皆可驗證其簽章的有效性。但由於在此機制中,當轉換簽章時仍需要原簽署者的合作,
因此若原簽署者不願意與接收者合作時,則此簽章便無法轉換,因此在 2002 年 Wu 與 Hsu[WH02]提出 改進,讓簽章接收者可以在沒有原簽署的合作情況之下,能夠輕易產生一般簽章並將此簽章公開,因 此任何的驗證者皆可驗證原簽署者是否有欺騙的動作。而在 2003 年 Tseng 等人[TJC03]更提出利用自我 驗證的概念來讓驗證者在接收簽章的同時,除了能恢復訊息外,同時也能驗證其公鑰的合法性。在 2004 年 Tseng 與 Hwang[TH04]則提出利用橢圓曲線的方式來減少其運算量。除此之外,Lv 等人[LRC04]則 結合了環簽章的特性,提出環鑑別加密機制,讓在群裡面可能的簽署者包括自己在簽署訊息時,只需 要利用本身的私密金鑰與別人的公開金鑰便可進行簽署動作,而不需要經過別人的同意,如此一來便 可有效達到隱私保護的效果。然而在 2005 年 Cao 等人[CLX05]指出 Lv 等人[LRC04]所提出的機制並未 確實達到相關的安全需求,因此便結合基於身分基礎的加密機制,提出基於身分基礎的環鑑別加密機 制。
在 1976 年,Diffie 與 Hellman[DH76]最早提出公開金鑰密碼系統(public key cryptography,簡稱 PKC) 的概念,開啟現代密碼學的研究與應用,並依據此概念提出第一套金鑰交換(key exchange)的方法,讓 雙方成員能夠透過一般公開且不安全的網際網路環境底下,共享一把共同的交易金鑰(session key)。而 此方法的安全性主要是架構在解離散對數難題(discrete logarithm problem)之上,讓攻擊者在得知雙方互
傳的訊息中,很難可以去求得其對應的交易金鑰。但此方法卻有缺點,包括沒有鑑別使用者身分的能 力,因此無法有效抵擋中間人的攻擊,對任何一個攻擊者而言,皆可以假冒合法的成員,與其他成員 進行通訊,但其他成員卻會誤信自己正與合法的成員進行秘密通訊而不自知。在 Diffie 與 Hellman[DH76]
提出金鑰交換研究議題後,便也帶動許多學者投入此研究議題中,而在設計金鑰交換機制上,通常包 括以下三種設計方式,包括傳統公開金鑰密碼系統、基於身分為驗證基礎的身分密碼系統與無驗證公 開金鑰密碼系統。
在 2000 年,Joux[Jou00]以傳統公開金鑰密碼系統為基礎,首次應用雙線性配對函數(bilinear pairing) 運算,提出一套僅需一次訊息交換即能完成三方使用者建立共享交談金鑰的金鑰協議協定。此協定不 僅是第一個漂亮地將雙線性配對運用於密碼技術上,也是第一個僅需一次通訊量即能完成共享交談金 鑰建立的三方式金鑰協議協定。但 Joux 所提出之方法同樣也不具有身分鑑別的能力,因此無法有效抵 禦中間人攻擊。在 2003 年,針對 Joux 金鑰協議協定的缺點,Al-Riyami 與 Paterson[AP03]提出具有身 分鑑別能力的三方式金鑰協議協定,以解決 Joux 所面臨的中間人攻擊問題,但在計算時間與儲存上比 較沒效率。
為了解決金鑰交換協定不具有鑑別的能力,鑑別式金鑰交換協定進而被提出,在鑑別式金鑰交換 協定中,必須確保另一方能夠擁有正確的金鑰,並且確保無他人能夠知道特定私密金鑰的值,以取得 交易金鑰。在 2002 年 Smart[Sma02]第一個使用雙線性配對函數提出兩方式基於身分基礎的鑑別式金鑰 協議協定,後續分別有許多學者提出不同的協定,在 2012 年,Holbl 等人[HWB12]提出基於 Hess[Hes03]
所提出的簽章機制去改良,提出新的雙方式基於身分基礎的鑑別式金鑰協議協定。在本計畫所提出的 方法中,將利用此金鑰協議機制作為競標者與招標商向競標管理者註冊的方式,因此接著介紹 Holbl 等人[HWB12]所提出的方法。此協定角色包括金鑰中心(key center,簡稱 KC)、使用者 A 與使用者 B,
其中 KC 將建立系統參數與公開參數,而使用者 A 與使用者 B 向 KC 註冊並利用所簽署的訊息進行金 鑰交換。
Girault[Gir91]在 1991 年提出具自我驗證公開金鑰系統,其設計概念為公鑰是由使用者與金鑰中心 (KC)所共同建立,且 KC 的認證是內嵌於公鑰中,其餘使用者可以容易的驗證該使用者公鑰的正確性,
而由於私鑰是由使用者所自行建立,因此保證 KC 無法得知。此種方法所產生之公鑰具一般公鑰憑證 的使用效力,當使用者得到 KC 所產生之公鑰則可利用自己的私鑰驗證該公鑰的正確性,若公鑰驗證 正確,則可以使用自己的私鑰與通訊方的公鑰進行金鑰協議。
與基於身分的密碼系統相比,自我驗證公開金鑰系統則可避免金鑰託管(key escrow)的問題,在 2007 年 Shao 使用橢圓曲線上雙線性配對的特性提出具自我驗證簽章機制(self-certified signature,簡稱 SCS),在本計畫所提出的方法中,將利用此自我驗證簽章機制發展適用於密封式競標之鑑別加密機制,
因此接著介紹 Shao[Sha07]所提出的方法。此協定角色包括 KC、簽章者 A 與驗證者 B,其中 KC 將建 立系統參數與公開參數,各個使用者將會自行產生部份私密金鑰與部份公開金鑰,並傳送 ID 與部份公 開金鑰讓 KC 可計算出用於自我驗證之私密金鑰。
代理伺服器 (Proxy Server) 的作用是用來當客戶端與伺服器之間的代理人。當客戶端發出請求時,
將先向代理伺服器查詢,代理伺服器根據本身的設定,將客戶端的請求向伺服器發送。伺服器的回應 代理伺服器收到後,將回傳給客戶端。使用者在上網時透過代理伺服器,代理伺服器查詢本身的快取 是否有此網頁,如有的話則直接回傳網頁給使用者,不用再次向站台抓取。但若無快取,則代理伺服 器代為向網站抓取網頁,存入快取,並將網頁內容直接回傳給使用者。
因代理伺服器在使用者與網站之間,可以取得所有來自客戶端的請求,以及所有來自網站的回應。
在這其中若需要做任何的處理,例如針對客戶請求的頁面做快取加速,或者伺服器回傳的頁面進行安 全檢測等,都十分方便。
代理伺服器在早期主要的用途作為快取使用。網路的主要頻寬都被網頁佔用,因此將代理伺服器 架設在內部網路,當客戶端存取網頁時,代理伺服器會先尋找本身是否有快取,若有則將直接回應,
沒有的話才對伺服器送出請求。因此代理伺服器大幅的節省了網路的頻寬。快取也是現今代理伺服器 的主要功能。除了快取的功能之外,代理伺服器通常也被做為隱藏 IP 位址使用。攻擊者常在網路上尋 找匿名開放式代理伺服器 (Anonymous Open Proxy Server),並透過該代理伺服器攻擊其他主機。
代理伺服器除了快取、匿名、隔離等功能外,漸漸也有些人拿來作為其他進階用途。例如規避一 些網站的阻擋、審查,利用代理伺服器記錄連線資訊等等。在網站安全上,也有不少研究使用代理伺 服器作為安全阻擋。“Detection Method Based on Reverse Proxy against Web Flooding Attacks” [LLL08]
提到,使用反向代理伺服器來分析並阻擋來自攻擊者對網站的惡意大量連線。在網路連線攻擊網站時,
會先經過反向代理伺服器,並在代理伺服器中先行偵測是否為惡意攻擊。”SWAP: Mitigating XSS Attacks using a Reverse Proxy” [WPLK09] 於 2009 年提出使用反向代理伺服器的方式,阻擋來自攻擊 者的 Cross-Site Scripting 攻擊。因代理伺服器可以取得使用者請求的網頁內容,因此網頁內容給予使 用者之前會先經過 JavaScript 測試引擎,確定無 Cross-Site Scripting 風險之後再傳送給使用者。
這類研究主要使用反向代理伺服器防禦網頁伺服器,不管是攻擊伺服器或者是網頁應用程式,利 用反向代理伺服器的特色及優點進行防禦。但是目前網路上針對客戶端的攻擊佔大多數,因此本研究 將採用正向代理伺服器防禦客戶端。客戶端上網前先透過正向代理伺服器過濾,先經過代理伺服器中 的靜態、動態模組偵測過濾過後,再回傳給客戶端。因此可以確實防禦客戶端的攻擊,避免客戶端遭 到惡意 JavaScript 的攻擊,或者是遭到惡意導向到惡意網站。
JavaScript 是目前網頁上使用最多的新興技術之一。其強大的功能及易於變化的特性,也常被攻擊 者拿來作為惡意攻擊。JavaScript 的攻擊常配合「跨站腳本攻擊 (Cross-Site Scripting)」一起進行,可 以誘使使用者在正常的網站上遭到惡意的攻擊。 JavaScript 基本的攻擊方式為導向攻擊 (Redirect Attack),在網頁上插入惡意的 JavaScript,讓使用者導向至惡意網站。除了此類型的攻擊之外,攻擊者 現今多半利用「堆積擴展填充攻擊 (Heap Spraying)」,後以 Heap Spraying 簡稱。
Heap Spraying 最早在 2001 年出現 [MSB01],Microsoft Windows Internet Information Services 的 Buffer Overflow 漏洞,利用 Heap Spraying 的手法配合進行攻擊。但此技術大量開始應用,是自 2004 年 SkyLined 所提出利用 Heap Spraying 的技術針對 Internet Explorer 瀏覽器攻擊 [IEI04]。此後此技 術大量的被 JavaScript 使用針對瀏覽器進行攻擊。
Heap Spraying 攻擊是配置大量的堆積空間 (Heap),並在堆積空間內填入適當的攻擊 Shellcode 進 行攻擊。但是由於不能掌握應用程式堆積空間使用的狀況,因此 Heap Spraying 攻擊將在堆積中填入 連續的 NOP 指令,稱為 NOP Slide (或 NOP Sled)。NOP 指令代表 CPU 不做任何動作。因此當應用 程式跳躍到任何一個 NOP Slide 的位置,將不做任何指令,直到 NOP Slide 結束的位置。而 NOP Slide 之後通常連接攻擊 Shellcode,所以只要可以跳到 NOP Slide 的位置,即可攻擊成功。JavaScript Heap Spraying 攻擊為目前多數的瀏覽器攻擊手法,而為了規避防毒軟體等掃描,JavaScript 通常會使用混 淆器 (JavaScript Obfuscator) 進行混淆 [Daf11],將代碼中的字串打亂,導致無法成功的偵測攻擊字串。
研究方法
在此章節,我們將分別介紹所提出適用於密封式競標之方法與輕量化網頁安全防禦雛型系統之實 作。
使用自我驗證鑑別加密設計具匿名保護的密封式競標
本研究所提出的系統角色,包括金鑰中心(key center,簡稱 KC)、競標管理者(auction manager,簡 稱 AM)、競標者(bidder,簡稱 BD)與招標商(auctioneer,簡稱 AU),以下將細部介紹其功能與定義。
系統角色:系統角色包括金鑰中心(KC)、競標管理者(AM)、競標者(BD)與招標商(AU)。以下說明 各角色在系統中的功能。
金鑰中心(KC) :金鑰中心主要功能為簽發競標者、招標商與競標管理者金鑰對,申請者可利用申 請的金鑰對,證明自己身分合法性,每個申請者僅有唯一一組公私鑰對。簽發過程中金鑰中 心會先核對申請者身分,接著金鑰中心利用自己的私鑰簽署申請者傳來的訊息,計算出申請 者的公開金鑰與公開金鑰驗證值,再將此兩份訊息傳給使用者,使用者即可透過獲得的公開 金鑰驗證值產生出個人私鑰,並利用此私鑰自行驗證公開金鑰的正確性。金鑰中心僅參與金 鑰對的簽發,並不參與其他階段。
競標管理者(AM):主持拍賣活動的公正第三方,當競標階段結束時,招標商向競標管理者提出開 標要求,競標管理者便負責進行開標動作,找出最高價之標單,並驗證最高價標單之正確性 與有效性,以維持競標活動之公平性,若發現競標管理者有舞弊現象將予以懲處。
競標者(BD):為欲參與競標者,在一個競標活動可能有許多競標者,當競標者欲進行競標活動時,
則必須先跟金鑰中心申請金鑰對並跟競標管理者進行競標註冊,才可進行競標活動,在進行 競標活動時,競標者利用鑑別加密機制,將競標資訊含在裡面,只有正確的招標商才能得到 競標者之競標資訊,以確保資訊並未外洩。而當競標者最後得標時,則必須將其身分識別符 提供給招標商,讓招標商能確實知道其身分並公佈,若在開標時,競標者對競標管理者所公 佈最高價之標單有疑問時,則可要求進行標單比對,以確保競標者的權益。
招標商(AU):提供商品或服務,讓競標者進行競標,當招標商收到競標者競標之標單資訊時,則 只能確認其標單資訊的正確性與有效性,且不能得知其標單價格,當確認完畢之後則會將所 有競標者之標單放置電子佈告欄,並予以加密,只有當開標時間,競標管理者才有權限去進 行開標動作,解開標單之競標價格,並選出最高價之標單,當確認最高價格之標單後,招標 商便會向得標者要求得知其真實身分並公佈。
整個系統架構包含以下七個階段:(1)金鑰中心系統建置階段:金鑰中心建立系統參數並公開資訊;
(2)金鑰對申請階段:競標管理者、競標者與招標商分別利用其身分識別符向金鑰中心申請其金鑰對;
(3)競標註冊階段:招標商與競標者分別向競標管理者申請註冊,以取得其競標金鑰,參與競標活動;
(4)競標階段:當招標商提供商品或服務進行競標,競標者使用其個人私鑰與競標金鑰進行競標;(5)開 標階段:當競標時間終止,招標商要求競標管理者解開所有標單資訊並找出最高競標價格的標單;(6) 得標者身分確認階段:當開標終止,招標商根據其所公佈之競標收據資訊,找出其得標者,並要求確 認得標者真實身分且公開;(7)競標糾紛處理階段:當面臨一些競標糾紛,包括競標價格一樣時,或競 標者發現所公佈之得標價格比自己的競標價格還低時的處理方式。
本系統所使用之符號與系統角色符號定義如下:
q 大質數(長度>160 位元)
P 在橢圓曲線上的基點(Base Point) G1 加法循環群
G2 乘法循環群
BBSAM 競標管理者所維護之電子佈告欄系統,用以公告標單資訊 (PKC, sKC) 金鑰中心之公私鑰對,其中 PKC=sKCP
(Qx, Sx) 個體 x 之公私鑰對,其中 Qx=H1(PKC, IDx, Yx)、Sx=sKCQx,Yx為 x 所產生之自我驗證 公鑰的允諾值
IDx 個體 x 的身分識別符 bidi 競標者所產生之標單 Pricei 競標者 i 所競標之價格
Kx 個體 x 的競標金鑰
tki 競標者 i 之競標收據,其中 tki =H2(e(αi, βi)) Tx 個體 x 當下所產生之時間戳記
EKx(msg) 對稱式加密函數,利用個體 x 所擁有的競標金鑰 Kx對訊息 msg 進行對稱式加密 DKx(msg) 對稱式解密函數,利用個體 x 所擁有的競標金鑰 Kx對訊息 msg 進行對稱式解密
H1 單向雜湊函數,H1: G1*×{0,1}* ×G1*→G1* H2 單向雜湊函數,H2 : G2→{0,1}q-1
H3 單向雜湊函數,H3 : {0,1}*→{0,1}
q-1
e 雙線性配對函數, e :G1×G1→G2
+ 點加法運算
⊕ 互斥運算
∥ 連結運算 金鑰中心系統建置階段
KC 建立其秘密金鑰並計算對應公開金鑰後,發佈公開參數{P, G1, G2, e, H1, H2, H3, E, D, PKC}。KC 自行建立秘密金鑰,並計算其對應的公開金鑰。
步驟 1 KC 自行建立私鑰 sKC,並計算其對應的公開金鑰 PKC。詳細步驟如下:
步驟 1.1 產生私鑰 sKC,其中 sKC ∈ 𝑍𝑞∗
步驟 1.2 計算公鑰 PKC =sKCP (3.3.1) 步驟 2 發佈公開參數{P, G1, G2, e, H1, H2, H3, E, D, PKC}
金鑰對申請階段
本階段中 AM、BDi與 AUj分別利用各自 ID 向 KC 申請其金鑰對。
【競標者之金鑰對申請階段】
步驟 1 BDi 選擇一亂數作為機密值,並以此機密值產生橢圓曲線上的點。完成後將自己的 ID 與此點一起傳送給 KC 申請金鑰對。詳細步驟如下:
步驟 1.1 使用亂數產生器產生一隨機亂數 xBDi∈Zq*作為機密值,並計算 YBDi= xBDiP
(3.4.1) 步驟 1.2 將{YBDi ,IDBDi}傳送給 KC。
步驟 2 KC 將利用 BDi所傳送之資訊進行金鑰對計算,產生 BDi的公開金鑰自我驗證資訊與 公開金鑰。詳細步驟如下:
步驟 2.1 計算公鑰
QBDi=H1(PKC, IDBDi, YBDi) ∈G1* 步驟 2.2 計算私鑰
SBDi=sKCQBDi (3.4.2)
步驟 2.3 選擇一亂數 r1 ∈Zq*,並計算以下點
U1=r1P (3.4.3)
V1=SBDi+r1YBDi (3.4.4) 步驟 2.4 公開 QBDi,YBDi
步驟 2.5 將{U1,V1}傳送給 BDi
步驟 3 BDi 由 KC 傳送的公開金鑰對驗證值計算出私鑰,並以此私鑰驗證公開金鑰的正確 性。若公開金鑰正確,則金鑰對申請成功。詳細步驟如下:
步驟 3.1 BDi藉由 KC 傳來的公開金鑰驗證值{U1,V1}產生私鑰
SBDi=V1- xBDiU1 (3.4.5) 步驟 3.2 由私鑰計算公鑰並驗證是否與 KC 產生的公鑰相等於,若相等則公鑰驗
證正確,金鑰對申請完成
e(SBDi , P)=e(QBDi , PKC) (3.4.6)
【招標商之金鑰對申請階段】
步驟 1 AUj選擇一亂數作為機密值,並以此機密值產生橢圓曲線上的點。完成後將自己的 ID 與此點一起傳送給 KC 申請金鑰對。詳細步驟如下:
步驟 1.1 使用亂數產生器產生一隨機亂數 xAUj ∈Zq*作為機密值,並計算 YAUj=x AUj P
步驟 1.2 將{Y AUj ,ID AUj}傳送給 KC。
步驟 2 KC 將利用 AUj所傳送之資訊進行金鑰對計算,產生 AUj的公開金鑰自我驗證資訊與 公開金鑰。詳細步驟如下:
步驟 2.1 計算公鑰
QAUj =H1(PKC, IDAUj, YAUj) ∈G1* 步驟 2.2 計算私鑰
SAUj =sKCQAUj (3.4.7)
步驟 2.3 選擇一亂數 r2 ∈Zq*,並計算以下點
U2=r2P (3.4.8)
V2=SAUj +r2YAUj (3.4.9) 步驟 2.4 公開 QAUj,YAUj
步驟 2.5 將{U2, V2}傳送給 AUj
步驟 3 AUj 由 KC 傳送的公開金鑰對驗證值計算出私鑰,並以此私鑰驗證公開金鑰的正確 性。若公開金鑰正確,則金鑰對申請成功。詳細步驟如下:
步驟 3.1 AUj藉由 KC 傳來的公開金鑰驗證值{U2, V2}產生私鑰
SAUj=V2- xAUjU2 (3.4.10) 步驟 3.2 由私鑰計算公鑰並驗證是否與 KC 產生的公鑰相等,若相等則公鑰驗證
正確,金鑰對申請完成
e(SAUj, P)=e(QAUj, PKC) (3.4.11)
【競標管理者之金鑰對申請階段】
步驟 1 AM 選擇一亂數作為機密值,並以此機密值產生橢圓曲線上的點。完成後將自己的 ID 與
此點一起傳送給 KC 申請金鑰對。詳細步驟如下:
步驟 1.1 使用亂數產生器產生一隨機亂數 xAM ∈Zq*作為機密值,並計算 YAM=xAM P
步驟 1.2 將{YAM ,IDAM}傳送給 KC。
步驟 2 KC 將利用 AM 所傳送之資訊進行金鑰對計算,產生 AM 的公開金鑰自我驗證資訊與公開 金鑰。詳細步驟如下:
步驟 2.1 計算公鑰
QAM=H1(PKC, IDAM, YAM) ∈G1* 步驟 2.2 計算私鑰
SAM=sKCQAM (3.4.12)
步驟 2.3 選擇一亂數 r3 ∈Zq*,並計算以下點
U3=r3P (3.4.13)
V3=SAM+r3YAM (3.4.14)
步驟 2.4 公開 QAM,YAM
步驟 2.5 將{U3, V3}傳送給 AM
步驟 3 AM 由 KC 傳送的公開金鑰對驗證值計算出私鑰,並以此私鑰驗證公開金鑰的正確性。若 公開金鑰正確,則金鑰對申請成功。詳細步驟如下:
步驟 3.1 AM 藉由 KC 傳來的公開金鑰驗證值{U3,V3}產生私鑰 SAM=V3- xAM U3 (3.4.15)
步驟 3.2 由私鑰計算公鑰並驗證是否與 KC 產生的公鑰相等,若相等則公鑰驗證正 確,金鑰對申請完成
e(SAM, P)=e(QAM, PKC) (3.4.16) 競標註冊階段
AUj 與 BDi 分別向 AM 申請註冊,以取得其競標金鑰,參與競標活動。
步驟 1 BDi產生註冊資訊{tBDi , FBDi},並傳送給 AM。詳細步驟如下:
步驟 1.1 使用其 BDi本身之私密參數 xBDi計算以下:
RBDi=e(SBDi , P)xBDi tBDi=H2(RBDi)
FBDi=tBDi SBDi+ xBDi SBDi 步驟 1.2 將{tBDi, FBDi}傳送給 AM
步驟 2 AM 收到註冊資訊{tBDi, FBDi},驗證資訊的正確性,並計算回覆資訊{tAM , FAM, NAM},說明 如下:
步驟 2.1 利用所接收之資訊,計算以下:
R´BDi =e(FBDi, P)e(QBDi, -PKC) tBDi
步驟 2.2 確認註冊資訊之完整性與 BDi身分的合法性;反之,AM 拒絶 BDi的註冊,並 停止執行以下步驟
tBDi =?H2(R´BDi)
步驟 2.3 使用亂數產生器產生一隨機亂數 aAM ∈Zq*作為機密值,計算 NAM=aAMP 步驟 2.4 使用其 AM 本身之私密參數 xAM計算以下資訊並建立競標金鑰:
RAM=e(SAM, P)xAM tAM=H2(RAM)
FAM=tAM SAM+ xAM SAM (3.5.1) KBDi= aAM YBDi= aAM xBDiP
步驟 2.5 將{tAM, FAM, NAM}傳送給 BDi
步驟 3 BDi收到{tAM , FAM, NAM}後,驗證 AM 所傳送之資訊的正確性,並計算自己的競標金鑰 步驟 3.1 利用所接收之資訊,計算以下:
R´AM =e(FAM, P)e(QAM, -PKC) tAM (3.5.2)
步驟 3.2 確認回覆資訊之完整性與 AM 身分的合法性;反之,BDi拒絶 AM 的回覆資訊 並停止執行以下步驟。
tAM =?H2(R´AM)
步驟 3.2 與 AM 共同建立一把競標金鑰:
KBDi= xBDiNAM= xBDiaAM P
【招標商註冊階段】
步驟 1 AUj產生註冊資訊{tAUj , FAUj},並傳送給 AM。詳細步驟如下:
步驟 1.1 使用 AUj本身之私密參數 xAUj計算以下:
RAUj=e(SAUj, P)xAUj tAUj=H2(RAUj)
FAUj=tAUjSAUj+ xAUj SAUj 步驟 1.2 將{tAUj , FAUj}傳送給 AM。
步驟 2 AM 收到註冊資訊{tAUj , FAUj},驗證 AUj資訊的正確性,並計算回覆資訊{tAM , FAM, HAM},
說明如下:
步驟 2.1 利用所接收之資訊,計算以下:
R´AUj=e(FAUj, P)e(QAUj, -PKC)tAUj
步驟 2.2 確認註冊資訊之完整性與 AUj身分的合法性;反之,AM 拒絶 AUj的註冊,並 停止執行以下步驟
tAUj =?H2(R´AUj)
步驟 2.3 使用亂數產生器產生一隨機亂數 bAM ∈Zq*作為機密值,計算 HAM=bAM P 步驟 2.4 使用其 AM 本身之私密參數 xAM計算以下資訊並建立競標金鑰:
RAM=e(SAM, P)xAM tAM=H2(RAM)
FAM=tAM SAM+ xAMSAM
KAUj= bAM YAUj= bAM xAUj P 步驟 2.5 將{tAM , FAM, HAM}傳送給 AUj
步驟 3 AUj收到{tAM , FAM, HAM}後,驗證 AM 所傳送之資訊的正確性,並計算自己的競標金鑰 步驟 3.1 利用所接收之資訊,計算以下:
R´AM =e(FAM, P)e(QAM, -PKC) tAM