摘 要:本文首先對TLS協議及RSA簽名算法等基礎知識進行了介紹,主要針對符號理論分析安全協議所存在的不足,受可證明安全理論中分析安全協議思想的啟發,從密碼體制角度出發,針對于TLS協議中所使用的RSA簽名算法可能受到的已知消息攻擊,在兩類攻擊者模型中分析描述了該協議可能受到攻擊者偽造合法參與者簽名的攻擊情形,并對協議進行了改進,這對于協議在安全性要求較高的應用中是具有實際意義的。
關鍵詞:RSA簽名;TLS協議;供給;改進
中圖分類號:TP393.08 文獻標識碼:A 文章編號:1674-7712 (2013) 14-0000-01
一、TLS協議
(一)TLS協議概況
TLS協議是以會話的加密和認證的Internet協議為基礎的,它為客戶和服務器間的通信建立了一個安全的通道,TLS提供了服務器認證服務和可選的客戶端認證服務,其目的就是要防止監聽、篡改及消息偽造等發生在客戶-服務器應用中。TLS提供機密性服務的方式是在兩個實體之間建立一個共享的秘密。用戶采用的應用層協議與TLS協議沒有關系,因為TLS協議只是工作在傳輸層上。這其實也是TLS協議的最大優點。圖1顯示了TLS在TCP/IP 中的位置。在如何使TLS協議能增加安全性以及交換證書等方案時要由協議應用者來決定。TLS協議包括三個基本階段:
利用相應的函數進行對等協商支援;
利用私鑰加密交換公鑰及PKI證書進行相應的身份確認;
利用公鑰對數據進行相應加密傳輸。
TLS由兩個協議組—TLS記錄協議和TLS握手協議構成的復合協議。很多不同格式的信息包含在各個組中。TLS記錄協議是一種分層協議,長度、描述和內容等字段構成了每一層中的信息,而TLS握手協議則是由TLS密碼規范協議、TLS警告協議、HTTP協議共三個協議構成。該協議允許對等雙方在記錄層的安全參數上達成一致。體系結構圖如圖2。
(二)安全隱患
由于TLS握手協議用來建立連接會話狀態的密碼參數,當采用TLS協議進行第一次通信的協議雙方,首先需要對協議版本以及密碼算法進行選擇、確定,然后再對對方的身份進行相應的認證,最終生成共享秘密。由于RSA算法既可用于加密又可用于簽名,具有安全,易懂的優點,是目前應用最廣泛的公開密鑰密碼算法。TLS協議很多情況下缺省使用該算法作為數字簽名的公開密鑰密碼算法,但該算法同時卻會給TLS協議的安全帶來隱患。目前有很多文獻對TLS協議主要是從符號理論角度進行安全性分析,但由于符號理論的缺陷,以串空間模型為例,在分析協議的正確性時,屏蔽了密碼體制,只分析協議中存在的內在的安全缺陷,這種過于理想化的假設,容易導致本來證明是安全的,實際上也許并不安全。
作者運用可證明安全理論的思想,著重于從密碼體制角度對協議的安全性進行了分析,從而發現了攻擊者能夠利用RSA簽名算法的漏洞,對TLS協議通信方的簽名進行偽造的攻擊。
二、數字簽名方案及其攻擊者目標
我們先來對數字簽名方案做一個形式化定義:
一個數字簽名方案由以下3個算法組成。
①密鑰生成算法K:輸入系統參數,輸出一對匹配的公鑰和私鑰 。
②輸入消息m和私鑰 ,輸出簽名
③驗證算法V:輸入簽名 ,消息m和公鑰 ,輸出1(表示簽名有效)或0(表示簽名無效)。
對于所有的數字簽名方案來說,攻擊者A都有如下模型:
A具有三級目標:通過將提供簽名的人的私鑰獲取,即完全破譯,該目標級別最高;構建假冒的簽名程序,即通用偽造, 這種簽名算法必須保證成功概率值足夠大,通常情況下會在一定的范圍內;重新構造一個消息-簽名對,即存在性偽造,以此來欺騙合法參與者。
A的兩類攻擊:未知消息攻擊和已知消息攻擊。其中已知消息攻擊還可按攻擊強度進行分類,攻擊能力最強的要屬適應性選擇消息攻擊類型,這種攻擊一旦發生,那么它所截獲的任何消息的簽名都能得到,主要是采用向真正的簽名者詢問,最理想的結果是直接獲得答案,否則,根據反饋結果,不斷調整問題,重新詢問,直到得到答案。
RSA簽名體制及其可能受到的攻擊
RSA體制的加密算法和解密算法是一對互逆運算,這在數字簽名系統中非常有用。設M為明文, 是A的公開密鑰, 是A的保密的私鑰。則 ,其中 便是A對M的簽名。驗證簽名的過程是:如果 ,則 是M的簽名。然而由于RSA 算法的數學特性,導致該簽名算法會遭受這樣一種攻擊:利用已有簽名進行攻擊。
假設攻擊者想要偽造A對 的簽名,它很容易找到另外兩個數據 和 ,使得
三、基于RSA簽名算法的TLS協議可能受到的攻擊
其中一種簡化版的TLS協議如下:
已知g 是生成元,它是公開的, 是S的私鑰, 是C的私鑰, , 是用來區分S和C的標簽,S和C之間要協商一個密鑰,該密鑰只有雙方知道。S從集合{1,2,3,…|G|}中隨機選擇一個元素x,以 的形式發送給C,同樣C也是如此,隨機選擇一個元素y,以 的形式發送給S,最終S利用已有的x和接收到的 ,計算出 ,而C則利用已有的y和接收到的 ,計算出 ,從而雙方協商出這樣一個密鑰 ,它是對稱密鑰且 ,它是用來驗證C,S是否對于計算出的共享密鑰達成一致。
四、對TLS協議的改進及其分析
為了避免該類攻擊,對TLS協議進行了改進,即不直接對數據簽名,而是對數據的hash值簽名,其hash算法可以選擇不基于任何假設和密碼體制且抗攻擊能力較強的SHA算法或者MD5算法。
改進的協議如下:
第一步,C給S發送了其身份標簽C;
第二步,C收到S的身份標簽,知道是S后,用S的公鑰將簽名進行恢復,得到 的摘要,然后C對收到的 進行hash運算,與得到的摘要進行比較,如果一樣,則證明是S發來的;
第三步,進行與第二步類似的操作,S證實對方是C后,利用已有的x和收到的 ,計算出對稱密鑰 = ,對C發給自己的加密消息進行解密,得到 ,C,S ;
第四步,S將 替換成了 ,將用 加密的消息發送給C,以便C進行確認,驗證雙方的共享密鑰是否達成一致。
由以上分析可得,改進后的協議在原協議的基礎上增加了hash運算,所以它在保證了與原協議同樣安全性的基礎上,避免了攻擊者利用簽名算法漏洞偽造合法參與者簽名,從而以此獲取秘密信息的攻擊,提高了安全性。但是該協議比原協議多了兩次hash運算,增大了通信雙方的計算開銷,所以改進后的協議更適合于安全性要求較高的通信應用。
參考文獻:
[1]譚湘融,戴一奇.支持數字簽名的TLS改進協議[J].清華大學學報,2004,44(1):58-64.
[2]Herzog JC.The Diffe-Hellman key-Agreement in The Strand-Space Model[C].In:Proceeings of IEEE Computer Security Foundations Workshop.California:IEEE Press,2003,234~247.
[3]龍士工.串空間理論及其在安全協議分析中的應用研究[D].貴州:貴州大學,2007.