質問

SRPプロトコルについて:http://en.wikipedia.org/wiki/secure_remote_password_protocol

セッションキー(k)の生成は完全に安全であることがわかりますが、最後のステップでは、ユーザーはk(m)の証明を送信します。ネットワークが不安定で、Midlleの攻撃者がMをキャプチャしている場合、彼はKを持たずに認証することができます。

役に立ちましたか?

解決

少し背景

よく知られている値(事前に確立):

  n    A large prime number. All computations are performed modulo n.
  g    A primitive root modulo n (often called a generator).

ユーザーのパスワードは次のように確立されます。

x = H(s, P)
v = g^x 

  H()  One-way hash function
  s    A random string used as the user's salt
  P    The user's password
  x    A private key derived from the password and salt
  v    The host's password verifier

認証:

+---+------------------------+--------------+----------------------+
|   | Alice                  | Public Wire  | Bob                  |
+---+------------------------+--------------+----------------------+
| 1 |                        |        C --> | (lookup s, v)        |
| 2 | x = H(s, P)            | <-- s        |                      |
| 3 | A = g^a                |        A --> |                      |
| 4 |                        | <-- B, u     | B = v + g^b          |
| 5 | S = (B - g^x)^(a + ux) |              | S = (A · v^u)^b      |
| 6 | K = H(S)               |              | K = H(S)             |
| 7 | M[1] = H(A, B, K)      |     M[1] --> | (verify M[1])        |
| 8 | (verify M[2])          | <-- M[2]     | M[2] = H(A, M[1], K) |
+---+------------------------+--------------+----------------------+

    u    Random scrambling parameter, publicly revealed
  a,b    Ephemeral private keys, generated randomly and not publicly revealed
  A,B    Corresponding public keys
  m,n    The two quantities (strings) m and n concatenated
    S    Calculated exponential value 
    K    Session key

あなたの質問への答え:

ご覧のとおり、両当事者は、それぞれが利用できる値に基づいて、k(=セッションキー)を個別に計算します。
ステップ2に入力されたAliceのパスワードPがVを生成するために最初に使用したパスワードと一致する場合、Sの両方の値が一致します。

ただし、実際のセッションキーKはワイヤー上に送信されることはなく、両当事者が同じセッションキーを正常に計算したことの証明のみがあります。したがって、真ん中の男は証拠を再送信することができましたが、彼は実際のセッションキーを持っていないので、彼は傍受されたデータで何もできません。

他のヒント

証明は特定のkに対してのみ有効です。

MITMなし:

Alice <-K-> Bob

アリスはKの証拠を生み出し、ボブはそれを受け入れます

MITMで:

Alice <-K1-> Eve <-K2-> Bob

アリスはK1の証拠を作成しますが、イブがボブにそれを提示すると、K2に合わないので受け入れません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top