天天看點

《A Graduate Coursse in Applied Cryptography》Chapter 21 Authenticated Key Exchange (2)

原文教材 與 參考資料:

        Boneh Dan , Shoup Victor . A Graduate Course in Applied Cryptography[J].

        該書項目位址(可以免費擷取):http://toc.cryptobook.us/

        部落格為對該書的學習筆記,并非原創知識,幫助了解,整理思路,将書上的知識點用自己的語言組織起來也是一種學習方法, 就是比較耗時間。

21.3 Perfect forward secrecy and a protocol based on ephemeral encryption

基于臨時加密協定的完美前向安全協定

       前向安全 perfect forward secrecy (PFS),即使參與者的長期密鑰丢失或者被盜用,那麼在被盜用密鑰之前所産生的所有會話密鑰都安全的。對于AKE1協定而言,就不是一個前向安全的協定,因為如果長期密鑰丢失那麼之前所有包含會話秘鑰c的密文都會被敵手解密,就會丢失所有的前向會話密鑰。

為解決上述問題,該書中描述的一種方法是利用一個CCA的加密方案應用在每一次的協定運作中,這将使得每次的會話密鑰是由一個公鑰加密方案來保證在信道上的安全性,而不是用傳統的對稱加密方式,這樣即使丢失了解密的私鑰,由于每次會話都會運作這個CCA公鑰加密方案,顯然公鑰加密方案是機率性的那麼每次都能産生新的臨時密鑰對,協定描述如下:

《A Graduate Coursse in Applied Cryptography》Chapter 21 Authenticated Key Exchange (2)

需要注意的是,簽名的私鑰此時還是由參與者自己秘密儲存的,如果這個簽名丢失,那麼任何的都可以假裝P的身份與其他人通信,因為pk可以自己生成,CertP和P的簽名公鑰是公開的,是以不讨論簽名秘鑰丢失的情況,即使現在簽名秘鑰丢失也不會影響先前的會話秘鑰k的安全,因為k是每次用機率的臨時公私鑰對保護的。

Forward secrecy:在這個協定中,長期私鑰僅僅用來簽名,并不進行解密,是以如上文所述,這裡一定是滿足PFS的。

Choice of encryption scheme: 這裡使用RSA或者EIgama方案均可。

Erasing ephemeral data: 這類協定必須能夠保證安全的擦除臨時資訊,如果在協定的一次執行周期中,臨時資訊例如單次的公私鑰對被洩露,那麼亦可以導緻此次的會話密鑰洩露。

AKE2的不安全因素,使用SS安全的對稱加密方案:假設僅僅使用語義安全的對稱加密方案,那麼意味着密文具有延展性,那麼敵手将有機會對監聽到底密文c進行修改,然後将和這個資訊發送給參與者,參與者如果接受了這個密文并進行了解密,那麼敵手往往可以發動一個related key attack攻擊。

21.4 HSM security

到目前為止,AKE1方案隻滿足static security, 為了達到PFS,将AKE1中解密密鑰換成了簽名密鑰,這保證了敵手隻能簽名不能解密,實作了PFS。但是,如果簽名密鑰丢失或者被盜用,亦會産生一個新的安全問題,敵手可以任意的以丢失密鑰的參與者名義與其他參與者進行互動。

為了實作上述安全性,有個方法使用用一個硬體來存儲使用者的長期私鑰,然後将整個子產品定義成一個安全子產品Hardware Security Module,所有人智能以一個谕言機的形式對其進行通路,其計算過程将是被協定定義好的。敵手也是可以通路到HSM的,但是不能從中提取出LTSsp,使用者的長期私鑰,HSM由一個特殊的硬體實作。

HSM 安全:

           這種安全是由前提的,例如在P和Q的互動中,會話密鑰隻有在一下的情況下才會被攻擊:

      (1). P是一個被腐敗的參與者。

      (2). P是一個誠實的參與者,但是LTSp被盜用在過去的某個時間點。

      (3). P是一個誠實的參與者,但是敵手能夠在P的一次密鑰協商中通路HSM,重要的是,其他與P互動的執行個體數量是小于P總共通路HSM數量的。(意味着,敵手已經大量的通路了HSM,可能學習到了相關資訊)

條件1對應的是靜态安全,敵手不能盜用私鑰資訊隻能控制參與方P與之互動。條件1-2對應的是前向安全,如果兩個條件同時成立,那麼就是前向安全的定義。條件1-3同時成立對應的是HSM敵手,并且對敵手的通路時間和次數進行了限制。

HSM安全對敵手的通路是有限制和次數的,并且我們應該将HSM通路作為一個無狀态的簽名谕言機來使用,将其作為一個獨立的元件來使用,為此設計協定AKE3,将CCA加密換成了SS安全加密,并增加了一輪的互動。(我們回憶一下為什麼AKE2必須使用CCA安全的加密方案?因為Q在發送完最後一條消息後預設P收到了,是以Q很有可能會用自認為協商好的k1進行加密并發送一個密文m1,但是最後一條消息被敵手截獲并修改了密文c得到了c`發送給了P,如果P無法檢測其有效性,必然會使用敵手給與的k`進行通信,向Q發送加密消息m2,此時敵手可發動相關密鑰攻擊。但是如果Q能夠确認P确實收到了真正的密文c,那麼上述攻擊就不會發生,是以說此處增加一輪通信可以将CCA要求換成SS安全。)

《A Graduate Coursse in Applied Cryptography》Chapter 21 Authenticated Key Exchange (2)

Ensuring HSM security: HSM安全要求兩房參與者P和Q必須能夠對等的對随機挑戰進行簽名,HSM必須在協定執行過程中直接的或者間接的被通路與調用。這是實作HSM安全的基本要求,并且HSM協定必須是三輪互動的。

Choice of encryption scheme: 這裡不要求加密協定(加密k的協定)是CCA的,原因上文高亮部分已經進行了讨論。

21.4.1 A techincal requirement: strongly unpredictable ciphertexts

對于我們在協定中選用的加密方案,有一個非标準的但是合理的要求,要求該算法在給定公鑰時,無法猜測其密文輸出(公鑰可能是敵手或者是誠實者提供的)稱作“strongly unpredictable ciphertexts”。一般公鑰加密都是滿足這個要求的,我覺得可以了解為完美保密概念的延伸。

21.4.2 Insercure variations

AKE3 方案的變體及其不安全的地方

Variation 1: 在消息1中不對c進行簽名

不安全因素:敵手會劫取這條消息1,并加密新的會話密鑰sk得到密文c,将密文c發送給參與方P,此後敵手繼續劫取消息與P進行互動,此後P将會擷取敵手提供的密鑰,進而被敵手竊取資訊。

Variation 2: 在消息1中不對idP進行簽名

不安全因素:不對身份綁定的直接後果很可能導緻身份的錯誤認定, 敵手在這種情況下可以發起一個中間人攻擊, 敵手收到P的第一條消息, 并修改身份為R發送給參與者Q, Q 以為自己是和R在通信,按照既定的規則将資訊發送給P,因為沒有對IDP進行簽名,Q不知P,P也不知道Q的身份。最終敵手接收到P的資訊,并進一步将資訊修改後發送給Q完成協定,敵手擷取了全部的資訊,Q和P互相錯誤認定身份。

Variation 3: 在消息2不對pk進行簽名

不安全因素: 不對PK進行簽名,直覺上還是會發生關于身份的問題,原理很簡單一般公鑰都是與ID進行綁定的,如果向對應的PK進行簽名,敵手往往可以自己重新做一個消息發送給接受方。在此處,敵手可以僞造一個PK`連同P的證書發送給Q,敵手将收到Q的第一條消息,并重産生第一條消息的簽名,發送給P。此時敵手相當于對于P而言完全僞造了Q的角色,P會使用自己的密鑰對c進行解密(即使是CCA的加密方案,往往是可以解密成功的,即使解出來的内容并沒有太大的意義,是一個錯誤的密鑰)。最後P發送一個簽名2給Q,P和Q認為自己的互動過程結束,但是實際上P并沒有得到一個正确的會話秘鑰,Q得到了一個敵手的密鑰。

Variation 4:在消息2中,不對密文c進行簽名

不安全因素:直覺上,不對c進行簽名直接的結果就是Q無法确定P是不是對自己計算出來的正确結果進行的解密,如果P解密的是一個其他的密文,那麼必将得不到一個正确的資訊。假設敵手此處是能夠通路P的HSM的,那麼敵手将能在某個時刻獲得P的臨時資訊,那麼敵手可以通路HSM來獲得一個合法的簽名,并且可以在任何時刻發送該簽名給其他參與者,因為這個簽名不對c進行簽名,那麼則任何時候都可以用這個非法的簽名,可以危害到後續多個互動過程。敵手隻需要裝作P與Q進行互動,最後将獲得的有效但是非法的簽名發送Q安全終止協定即可。

Variation 5:在消息2中沒有對idQ進行簽名

不安全因素:消息2不對IdQ 進行簽名直接導緻的結果是P這條消息2并不會不知道會發送給誰,即使他認為是發送給Q的,但是也可能會是發送給其他人的。敵手在這裡繼續扮演中間人,因為P在收到資訊之前并不知道是與誰在通信,是以敵手将Q的資訊進行改造,用一個新的身份R對于密文c進行改造,P收到後認為是在和Q互動并将簽名資訊發送給敵手,敵手轉發給Q,最終是敵手在和Q通信。

Variation 6:不對消息編号1、2進行簽名

不安全因素:當兩個參與方P和Q是一個身份具備同一個CA時,如果沒有消息編号就不會是安全的。

繼續閱讀