Privacy-Preserving Two-Factor Key Agreement Protocol Based on Chebyshev Polynomials
Table 4
Simulation of send oracle queries.
(i) On a query Send(Ui; start), assuming Ui is in the correct state, we proceed as follows: Choose a positive integer i and a real number x over and compute Ti(x), mod n, , = h(c||x||Ti(x)||h(ID||n1)). Then, the answer to the query is returned.
(ii) On a query Send(Sj; ), assuming Sj is in the correct state, we proceed as follows: Solve the square roots of e and obtain ,. Decrypt and get . Compute ,c0∗ = h(ID||), and check if the received = h(||x||Ti(x)||c0). If the equation does not hold, the server instance terminates without accepting. Otherwise, choose randomly a nonce n2, a positive integer j, and compute ,SK = h(||Ti(x)||Tj(x)||||n2||Tj(Ti(x))), = h(c0||(Tj(x)h(n2))||SK). Then, the answer to the query is returned.
(iii) On a query Send(Ui; ), assuming Ui is in the correct state, we proceed as follows: Compute , SK∗ = h(ID||Ti(x)||Tj(x)||n1||n2||Ti(Tj(x))), and check whether = h(c||(Tj(x)h(n2))||SK). If the equation does not hold, the user instance terminates without accepting. Otherwise, compute = h(SK||(n1n2)||c0), authenticate Sj, and establish SK as the session key. Then, the answer {} to the query is returned.
(iv) On a query Send(Sj; {}), assuming Sj is in the correct state, we proceed as follows: Check if = h(SK||( n2)||). If the equation does not hold, the server instance terminates without accepting and aborts the session. Otherwise, S accepts the session key SK.