秦 杰
[摘要]網絡即時通訊在為人們日常交流帶來便利的同時,也伴隨著信息泄露、個人隱私被竊等煩擾。如何保證敏感信息在網絡上安全的傳輸成為一個重要的研究課題?;诰W絡通信的軟件都需要采用加密手段來最大限度上對用戶的敏感信息進行保護,其中密鑰的管理將影響整個系統的性能和安全性。模擬SSL協議原理,提出使用公鑰密碼進行私密鑰的分配,并通過密鑰分配中心(KDC)對公鑰密碼進行認證的解決方案。
[關鍵詞]SSL RSA 數字簽名 KDC
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0810055-01
一、研究背景
隨著顧客行為、溝通方式的轉變,單一通道的電話客服已不再能滿足網絡時代的需求,網頁聊天作為一種高效、內容豐富,成本低廉的新興客戶服務方式,正被廣泛應用于企業客戶服務領域。目前,越來越多的企業門戶網站出現“在線支持”的鏈接,您只需輕點鼠標,就可以和相關的客服人員進行即時通訊。數據資料顯示,這種通訊方式有效地降低投入及運營費用達到30%,并且可有效增加25%的新客戶。但是,通訊內容往往包括一些私密的信息,尤其是在提供金融、醫療等方面的咨詢服務時,信息的安全問題成為了客戶使用的最大的顧慮。
目前,國內外一些知名產品,如Live Person,Sight Max等都是采用基于安全套接字層協議(SSL)的解決方案,具有如下優點:
1.安全性高:SSL協議第3版作為業界使用一般標準,提供可靠的端到端安全服務,保障了消息的保密性和完整性。
2.實現方便:主流Web服務器如Netscape、IE瀏覽器均實現了SSL協議。
同時又存在著以下缺點:
1.SSL使用復雜的數學公式進行數據加密和解密,隨著秘鑰位數的增加,高強度的計算給服務器CPU造成了沉重負擔并產生了嚴重的性能瓶頸。
2.需要權威的第三方認證機構頒發證書,增加了成本開銷。
3.SSL提供了端到端的安全服務,對于有多方參與的會話來說,會增加加密解密的次數,增加了性能開銷。
即時通訊在應用上首先考慮的是信息的即時性,其次才考慮到安全性。本文旨在尋找一種高效且相對安全的密鑰管理策略。
二、原理分析
(一)SSL握手協議。此協議允許客戶端和服務器端相互認證、協商加密和MAC算法,保護數據使用的密鑰通過SSL記錄傳送。握手協議在傳遞應用數據之前使用。握手協議由客戶端和服務器間交換的一系列消息組成,此交換由四個階段組成:
階段1:建立安全能力,包括協議版本、會話標識、密碼組、壓縮方法和初始隨機數。
階段2:服務器發送證書,交換密鑰,證書請求,完成消息。
階段3:如果接收到請求,客戶端發送其證書;發送交換密鑰,也可以發送證書驗證消息。
階段4:改變密碼組,結束握手協議。
(二)SSL會話。SSL會話是一個客戶端和服務器間的關聯,會話是通過握手協議創建的,定義了一組多個連接共享的密碼安全參數。
三、系統設計
模擬SSL握手協議,即時通訊雙方在傳遞應用數據之前,通過密鑰分配中心交換公鑰,完成握手,并生成共享的密鑰,作為以后通信的會話密鑰。
首先我們來看由Merkle提出的一種簡單的秘密鑰分配方法。
(一)簡單秘密鑰分配
若A要與B通信,則執行下列操作:
1.A產生公/私鑰對{PUa,PRa},并將含有PUa和其標識IDA的消息發送給B。
2.B產生秘密鑰KS,并用A的公鑰對KS加密后發送給A。
3.A計算D(PRa,E(PUa,KS))得出秘密鑰KS。因為只有A能解密該消息,所以只有A和B知道KS。
4.A丟掉PUa和PRa,B丟掉PUa。
這樣,A和B就可利用傳統密碼和會話密鑰KS安全地通信。密鑰交換完成后,A和B均丟棄KS。上述協議盡管簡單,但卻很誘人。由于在通信前和通信完成后都沒有密鑰存在,所以密鑰泄密的可能性最小,同時這種通信還可以抗竊聽攻擊。
但是,此協議是不安全的,因為對手可以截獲消息,然后可以重放截獲的消息或者對消息進行替換。這樣的攻擊稱為中間人攻擊[RIVE84]。此時,如果攻擊者E能夠控制通信信道,那么他可用下列方式對通信造成危害但又不被發現:
1.A產生公/私鑰對{PUa,PRa},并將含有PUa和其標識IDA的消息發送給B。
2.E截獲消息,產生其公/私鑰對{PUe,PRe},并將PUe||IDA發送給B。
3.B產生秘密鑰KS,并發送E(PUe,KS)。
4.E截獲該消息,并通過計算D(PRe,E(PUe,KS))得出秘密鑰KS。
5.E發送E(PUa,KS)給A。
結果是,A和B均已知KS,但他們不知道E也已知道KS。A和B用KS來交換消息;E不再主動干擾通信信道而只需竊聽即可。由于E也已知KS,所以E可解密任何消息,但是A和B卻毫無察覺,因此上述簡單協議只能用于僅有竊聽攻擊的環境中。
(二)增加數字簽名的密鑰分配中心
如果A能確認接收到的秘密鑰是來自B,就能有效防止中間人攻擊。由此引入數字簽名的概念:數字簽名是一種認證機制,它使得消息的產生者可以添加一個起簽名作用的碼字。通過計算消息的散列值并用產生者的私鑰加密散列值來生成簽名。簽名保證了消息的來源和完整性。
結合客戶服務行業特點,建立如下模型:
KDC:簡單的密鑰分配中心,負責會話雙方的公鑰管理及會話秘密鑰的生成及分派。
Agent:客戶服務人員,登錄后負責提供客戶支持。
Customer:會話的一般發起者。
1.KDC產生公/私鑰對{PUkdc,PRkdc},并將PUkdc對外公布。
2.Agent登錄系統,產生其公/私鑰對{PUa,PRa},并將E(PUkdc,PUa)發送給KDC。
3.KDC計算D(PRkdc,E(PUkdc,PUa))得出Agent的公鑰。因為只有KDC能解密該消息,所以能保證KDC和Agent之間的通信是安全的。
4.Customer訪問網站發起會話請求,產生其公/私鑰對{PUc,PRc},并將E(PUkdc,PUc)發送給KDC。
5.KDC計算D(PRkdc,E(PUkdc,PUc))得出Customer的公鑰。因為只有KDC能解密該消息,所以能保證KDC和Customer之間的通信是安全的。
6.KDC根據一定算法產生會話密鑰KS,首先計算E(PRkdc,KS)產生數字簽名。
7.然后計算E(PUa,E(PRkdc,KS))對會話密鑰和簽名加密,發送給Agent,計算E(PUc,E(PRkdc,KS))發送給Customer。
8.Agent計算D(PRa,E(PUa,E(PRkdc,KS)))得出經過KDC簽名的消息,再計算D(PUkdc,E(PRkdc,KS))驗證數字簽名并得出對稱加密的會話密鑰KS。
9.Customer計算D(PRc,E(PUc,E(PRkdc,KS)))得出經過KDC簽名的消息,再計算D(PUkdc,E(PRkdc,KS))驗證數字簽名并得出對稱加密的會話密鑰KS。
10.Agent和Customer使用KS進行即時通訊。
上述模型假設KDC對外公布的公鑰PUkdc是安全的,能夠被Agent及Customer正確訪問的。事實上也正如此,PUkdc可以通過應用站點的配置文件進行配置。
四、結束語
本文基于SSL協議原理,對Merkle提出的簡單秘密鑰分配方法進行改進,提出增加了密鑰分配中心及數字簽名認證的密鑰管理方案。
參考文獻:
[1](美)StallingsW著,楊明等譯,密碼編碼學與網絡安全:原理與實踐(第二版),北京:電子工業出版社,2001:51-60,130-154?.
[2]盧開澄,計算機密碼學——計算機網絡中的數據保密與安全,北京:清華大學出版社,1998.
[3]馮登國、裴定一,密碼學導引,北京:科學出版社,1999.
[4]Salomma A著,公鑰密碼學,丁存生、單煒娟譯,北京:國防工業出版社,1985.
作者簡介:
秦杰(1981-),男,漢族,上海人,工程碩士,研究方向:計算機技術。