User Ui: |
|
|
Insert ⟨ID
i, PW
i⟩ |
|
|
Smartcard: |
|
|
Compute B
i = H(ID
i∣∣PW
i), A
i = C
i⊕B
i
|
|
|
Compute = H(A
i∣∣B
i) |
|
|
If () |
|
|
terminate the session |
|
|
Else |
|
|
compute c
i = c
i + 1 |
|
|
Choose
|
|
|
Compute M
1 = (ID
i∣∣A
i∣∣a∣∣c
i)2 mod n
|
|
|
|
|
|
|
|
Obtain ID
i, A
i, a, c
i from M
1
|
|
|
Retrieve ⟨ID
i, , b
i⟩ from database |
|
|
If () |
|
|
terminate the session |
|
|
Else |
|
|
update ⟨ID
i, , b
i⟩ to ⟨ID
i, c
i, b
i⟩ |
|
|
Compute = H(ID
i∣∣K∣∣b
i) |
|
|
If () |
|
|
terminate the session |
|
|
Else |
|
|
select
|
|
|
Compute d = a⊕b and |
|
|
Session key SK = H(ID
i∣∣a∣∣b∣∣A
i) |
|
|
Compute M
2 = H(ID
i∣∣A
i∣∣d∣∣SK) |
|
|
|
Smartcard: |
|
|
Compute b = d⊕a and |
|
|
Session key SK = H(ID
i∣∣a∣∣b∣∣A
i) |
|
|
Compute = H(ID
i∣∣A
i∣∣d∣∣SK) |
|
|
If () |
|
|
terminate the session |
|
|
Else |
|
|
authenticate S and |
|
|
Accept SK as session key |
|
|