Research Article

Improving an Anonymous and Provably Secure Authentication Protocol for a Mobile User

Algorithm 2

Role specification for user .
role user (Ui, AS: agent,
SKuas: symmetric_key,
H, F: function,
SND, RCV: channel (dy))
played_by Ui def=
local State: nat,
IDi, PWi, BIOi, RPWi, DPWi, T, Ai: text,
Hi, Vi, VVi, R, S, Xi, Yi, Wi: text,
CIDi, Zi, T1, T3, SK, Y2, Ys, Zs: text
const as_ui_y2,
sc1, sc2, sc3, sc4: protocol_id
init State ≔ 0
transition
(1) State = 0 ∧ RCV(start) =|>
State’ ≔ 1 ∧ T’ ≔ new()
∧ RPWi’ ≔ H(PWi.Ai)
∧ DPWi’ ≔ xor(RPWi’,T’)
∧ secret(, sc1, Ui)
∧ secret(IDi, sc2, )
∧ SND(SKuas)
(2) State = 2 ∧ RCV(xor(H(IDi.xor(H(PWi.Ai),T’)),F(R.H(S.IDi))).xor((Yi’.H(Yi’.S)),
xor(H(PWi.Ai),T’)) _SKuas) =|>
State’ ≔ 4 ∧ secret(R, S, sc3, AS)
∧ secret(F(R.H(S.IDi)), sc4, Ui, AS)
∧ VVi’ ≔ xor(H(IDi.H(PWi.Ai)), F(R.H(S.IDi)))
∧ Wi’ ≔ H(H(IDi.H(PWi.Ai)).F(R.H(S.IDi)))
∧ Xi’ ≔ xor((Yi’.H(Yi’.S)),H(PWi.Ai))
∧ CIDi’ ≔ xor(IDi, H(Yi’.S))
∧ T1’ ≔ new()
∧ Zi’ ≔ H(IDi.F(R.H(S.IDi)).Yi’.T1’)
∧ SND(CIDi’.Yi’.Zi’.T1’)
(3) State = 6 ∧ RCV(xor((Y2’.H(Y2’.S)),F(R.H(S.IDi))).H(SK.F(R.H(S.IDi)).T1’.T3’).T3’) =|>
State’ ≔ 8 ∧ SK’ ≔ H(IDi.F(R.H(S.IDi)).H(Y2’.S).T1’.T3’)
∧ Xi’ ≔ xor((Y2’.H(Y2’.S)),H(PWi.Ai))
∧ request(Ui, AS, as_ui_y2, Y2’)
end role