Research Article

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

Algorithm 3

Role specification for application server AS.
role applicationserver (Ui, AS: agent,
SKuas: symmetric_key,
H, F: function,
SND, RCV: channel(dy))
played_by AS 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:= 1
transition
(1) State = 1 ∧ RCV(IDi.xor(H(PWi.Ai),T’)) =|>
State’ ≔ 3 ∧ Hi’ ≔ H(S.IDi)
∧ Vi’ ≔ xor(H(IDi.xor(H(PWi.Ai),T’)),F(R.H(S.IDi)))
∧ Yi’ ≔ new()
∧ Xi’ ≔ xor((Yi’.H(Yi’.S)),xor(H(PWi.Ai),T’))
∧ secret(F(R.H(S.IDi)), sc4, , )
∧ SND(_SKuas)
(2) State = 5 ∧ RCV(xor(IDi,H(Yi’.S).Yi’.H(IDi.F(R.H(S.IDi).Yi’.T1’)).T1’)) =|>
State’ ≔ 7 ∧ Hi’ ≔ H(S.IDi)
∧ Y2’ ≔ new()
∧ T3’ ≔ new()
∧ SK’ ≔ H(IDi.F(R.H(S.IDi)).H(Y2’.S).T1’.T3’)
∧ Ys’ ≔ xor((Y2’.H(Y2’.S)),F(R.H(S.IDi)))
∧ Zs’ ≔ H(SK’.F(R.H(S.IDi)).T1’.T3’)
∧ SND(Ys’.Zs’.T3’)
∧ witness(AS, Ui, as_ui_y2, Y2’)
end role