天天看點

【SRP協定】The Secure Remote Password Protocol論文筆記The Secure Remote Password Protocol

The Secure Remote Password Protocol

作者:Thomas Wu

發表:NDSS 1998

一、非對稱密鑰交換(AKE)

在介紹本文重點的SRP協定之前,首先先要從宏觀的角度上介紹非對稱密鑰交換這種技術。

  • 特點:AKE不需要加密任何協定資料流。可以抽象地了解為,交換密鑰的雙方互相共享一部分資訊,然後利用共享的資訊以及自己本身所具有的秘密可以得到一樣的密鑰,也就成為了他們之間唯一的會話密鑰。具體地細節要通過具體協定和數學公式去了解。
  • 優點:
    1. 簡化協商加密算法的過程
    2. 避免加密算法本身脆弱性的影響
    3. 避免了加密算法使用權等問題
  • 等式要求:從數學層面上講,AKE協定應當滿足以下數學等式的要求

    ( ∀ w , x , y , z )   S ( R ( P ( w ) , P ( x ) ) , Q ( y , z ) ) = S ( R ( P ( y ) , P ( z ) ) , Q ( w , x ) ) (\forall w,x,y,z)\ S(R(P(w),P(x)),Q(y,z))=S(R(P(y),P(z)),Q(w,x)) (∀w,x,y,z) S(R(P(w),P(x)),Q(y,z))=S(R(P(y),P(z)),Q(w,x))

    其中w,x,y,z屬于任意的參數;P(x)為單向驗證生成函數;Q(x,y),R(x,y)公開、私有參數的混合參數;S(x,y)會話密鑰生成函數;K會話密鑰

  • 協定互動:x和z屬于Carol和Steve的長期秘密,在真實的協定中往往相當于密碼,由Carol發給Steve P(x),Steve發給Carol P(z),此後再交換臨時秘密w和y,生成會話密鑰。
【SRP協定】The Secure Remote Password Protocol論文筆記The Secure Remote Password Protocol

二、SRP:AKE的一種實施

(一)SRP定義規則

  • 所有計算都在有限域GF(n)中進行
  • P ( ) : P ( x ) = g x   m o d   n P():P(x)=g^x\ mod\ n P():P(x)=gx mod n
  • Q ( ) : Q ( w , x ) = w + u x Q():Q(w,x)=w+ux Q():Q(w,x)=w+ux
  • R ( ) : R ( w , x ) = w x u R():R(w,x)=wx^u R():R(w,x)=wxu
  • S ( ) : S ( w , x ) = w x S():S(w,x)=w^x S():S(w,x)=wx

其中 u = f ( w , x ) u=f(w,x) u=f(w,x)

(二)SRP協定

【SRP協定】The Secure Remote Password Protocol論文筆記The Secure Remote Password Protocol

其中 C C C代表使用者名, v = g x v=g^x v=gx, S = g a b + b u x S=g^{ab+bux} S=gab+bux

數學符合的含義一覽

  • n:大素數,模數
  • g:模n的原根(又稱為生成元)
  • s:一個随機字元串用作鹽值
  • P:使用者的密碼
  • x:由P和s生成的私鑰
  • v:主機的密碼驗證器
  • u:随機拼湊的參數,公開揭示
  • a,b:臨時的密鑰,随機生成且不公開
  • A,B:相關公鑰
  • H():單向哈希函數
  • m,n:逗号表示對m和n兩個字元串進行串聯
  • K:會話密鑰

解釋一下協定,Carol首先将自己的使用者名發送給Steve,Steve(一般指伺服器)可以從自己的使用者注冊目錄中找到該使用者名對應的鹽值s和密碼驗證器v。此後将鹽值發送給Carol,Carol收到鹽值後結合自己的密碼P生成私鑰x,然後利用私鑰a生成公鑰A發送給Steve,Steve同樣生成公鑰 g b g^b gb并用v保護起來得到B,并結合一個公開參數u一同發送給Carol(這裡就展現了AKE協定的特點,互相共享部分資訊)。雙方收到來自對方的共享資訊後開始生成會話密鑰,可以得到同樣的會話密鑰(讀者可自行驗算)。後一輪互動是挑戰響應的驗證過程,確定雙方都得到了相同的密鑰,這樣就對身份完成了認證。

(三)SRP細節解釋

問題1 為什麼發送 B = v + g b B=v+g^b B=v+gb而不是發送 B = g b B=g^b B=gb?

直接發送 B = g b B=g^b B=gb容易被字典攻擊。如果攻擊者Sue從合法會話中截獲鹽值s,可以進行下列步驟的攻擊。
【SRP協定】The Secure Remote Password Protocol論文筆記The Secure Remote Password Protocol

此時攻擊者Sue擁有A,b,M1,開始猜測P,按順序依次,算出x,算出v,算出S,算出K,算出M1,此時就可以拿已經掌握的M1和算出來的M1進行比對,進而實施字典攻擊。

個人了解就是Sue在原版的SRP協定中,如果想實施字典攻擊,Sue缺少驗證文本(Sue很難得到一個正确的驗證文本),而一旦 B = g b B=g^b B=gb就會讓Sub通過互動得到正确的驗證文本,進而可以實作攻擊。

問題2 那麼B應當如何保護v?

SRP是AKE的一種實作,實作方式可以不止這一種,但是基本的思路是不變的。B中應當選取适當的f()函數以保護v,避免v的洩露導緻攻擊者得到驗證文本進而進行字典攻擊。
  1. 避免 B = f ( v , g b ) B=f(v,g^b) B=f(v,gb)中的f()會滿足條件 f ( g x , g y ) = g f ′ ( x , y ) f(g^x,g^y)=g^{f'(x,y)} f(gx,gy)=gf′(x,y),其中 f ′ ( x , y ) f'(x,y) f′(x,y)是一個很簡單的派生,比如 f ( x , y ) = x y f(x,y)=xy f(x,y)=xy就屬于 f ( g x , g y ) = g x + y f(g^x,g^y)=g^{x+y} f(gx,gy)=gx+y,一旦有這種性質,攻擊者便可以将其利用。
  2. 盡量減少資訊洩露,避免被分區攻擊,不使用 f ( x , y ) = x ⊕ y f(x,y)=x\oplus y f(x,y)=x⊕y, f ( x , y ) = E y ( x ) f(x,y)=E_y(x) f(x,y)=Ey​(x),結果可以排除大于n的
  3. g也必須要求是原根,否則可能會被分區攻擊

問題3 u的作用是什麼?

u可以確定不會被輕易仿冒,可以将認證的資訊加入到會話并生成會話密鑰。

u一定不可以在Steve得到A之前公開,可以是u由B生成得到,u也不能為0.

如果Chris可以提前得到了u的話,Chris一旦捕獲到了v的值,那麼即使其沒有密碼P,Chris可以實施新的攻擊

【SRP協定】The Secure Remote Password Protocol論文筆記The Secure Remote Password Protocol

三、安全性分析

(一)安全性要求

  • 密碼P和私鑰x在成功的通信中不能洩露
  • 會話密鑰K在成功的通信中不能洩露
  • 攻擊者僞造變造消息的行為并不會讓其成功通信或得到有用的資訊
  • 即使攻擊者得到了v,他也隻能通過複雜的字典搜尋才能僞造使用者身份
  • 過去的會話密鑰被攻擊不會使得攻擊者得到使用者的密碼
  • 如果使用者密碼被攻擊,攻擊者不能決定過去的密鑰或解密它

(二)SRP的安全性高于Diffie-Hellman

通過分析兩個協定中的Q()函數可以利用歸約證明結論。

SRP的Q()函數, Q ( g a , g b + g x , u , g , n , x ) = g a b + b u x Q(g^a,g^b+g^x,u,g,n,x)=g^{ab+bux} Q(ga,gb+gx,u,g,n,x)=gab+bux

DH的Q’()函數, Q ′ ( g a , g b , g , n ) = g a b Q'(g^a,g^b,g,n)=g^{ab} Q′(ga,gb,g,n)=gab

SRP的Q()函數可以表示DH的Q’()函數, Q ′ ( A , B , g , n ) = Q ( A , B + g n − 1 2 , 2 , g , n , n − 1 2 ) Q'(A,B,g,n)=Q(A,B+g^{\frac{n-1}{2}},2,g,n,\frac{n-1}{2}) Q′(A,B,g,n)=Q(A,B+g2n−1​,2,g,n,2n−1​)

(三)抵抗Denning-Sacco攻擊

Denning-Sacco攻擊:攻擊者竊聽到會話密鑰K,然後得到僞造成使用者或對密碼進行暴力破解的能力

SRP協定中,攻擊者得到K隻能順勢算出來M1,M2(歸功于單向哈希函數),沒法利用其進行字典攻擊。

(四)抵抗主動攻擊

SRP可以抵抗大多數常見的攻擊,可以抵抗中間人攻擊,攻擊者不知道x的話就沒辦法騙Steve,不知道v的話就無法欺騙Carol。

(五)安全假設與限制

  • 離散對數

    P ( x ) = g x P(x)=g^x P(x)=gx離散對數的難解性

  • 群參數約定

    n是non-smooth素數,即n-1也不能有小因子

    n是安全素數,即n=2p+1,p也為素數,這樣的條件可以抵抗小子群限制攻擊

    如何配置設定好參數:

    1. server把n和g在協定中發送給client——靈活,易變
    2. 參數嵌入到雙端的系統軟體中——避免被測試臨時參數
  • 限制檢測

    使用者和服務端都應該對于參數的安全性進行檢測

    n是一個安全大素數(使用者端)

    g是GF(n)的原根(使用者端)

    A≠0(服務端)

    B≠0(使用者端)

    a , b > l o g g n a,b\gt log_gn a,b>logg​n 避免直接求對數就可以得到結果

四、優化SRP

(一)影響效率的因素

  • 通信輪數
  • 交換資訊的位元組大小
  • 正常的執行時間

(二)兩輪優化

合并沒有前後依賴的消息

  1. C ⇒ S : C , A C\Rightarrow S:C,A C⇒S:C,A
  2. S ⇒ C : s , B S\Rightarrow C:s,B S⇒C:s,B
  3. C ⇒ S : M 1 C\Rightarrow S:M_1 C⇒S:M1​
  4. S ⇒ C : M 2 S\Rightarrow C:M_2 S⇒C:M2​

(三)一輪半優化

隻單向認證

  1. C ⇒ S : C , A C\Rightarrow S:C,A C⇒S:C,A
  2. S ⇒ C : s , B S\Rightarrow C:s,B S⇒C:s,B
  3. C ⇒ S : M 1 C\Rightarrow S:M_1 C⇒S:M1​

注意:一輪協定是很危險的,容易被重播攻擊

(四)執行時間

群運算是最耗費時間的

SRP中的 g a g^a ga和 g b g^b gb都是可以提前計算的

繼續閱讀