A method for setting up a secure session between a first entity and a second entity, the first and the second entity being a user authentication device and an application running on a platform, respectively, or vice versa, the method being performed by the first entity, the second entity and an intermediate node that is in connection to the first and the second entity, the method comprising the steps of: - generating, by the first entity, a first random number; - exporting, by the first entity, a first string derived from said first random number, to a user for entering the first string into the second entity, wherein the first string is identical to the first random number, or wherein the first string is produced as a random message from the first random number or as another representation of the first random number; - applying, by the first entity, a one-way function or a similar function to the first string or to a derivative thereof, obtaining an encoded string; - transmitting, by the first entity, the encoded string to the intermediate node; - receiving, by the second entity, via an I/O interface, the first string derived from the first random number generated by the first entity; - applying, by the second entity, a one-way function to the received first string or to a derivative thereof, obtaining an encoded string; - transmitting, by the second entity, the obtained encoded string to the intermediate node; - receiving, by the intermediate node, the encoded string from the first and the second entity, and - verifying, by the intermediate node, whether the encoded strings received from the first and the second entity are the same; - if the verifying step has a positive result, authorizing, by the intermediate node, the first and the second entity to set up a secure session, in particular to share a second string being derived by the first or the second entity, respectively, from a second random number generated by the first or the second entity, respectively. - generating, by the first entity, a first random number; - exporting, by the first entity, a first string derived from said first random number, to a user for entering the first string into the second entity, wherein the first string is identical to the first random number, or wherein the first string is produced as a random message from the first random number or as another representation of the first random number; - applying, by the first entity, a one-way function or a similar function to the first string or to a derivative thereof, obtaining an encoded string; - transmitting, by the first entity, the encoded string to the intermediate node; - receiving, by the second entity, via an I/O interface, the first string derived from the first random number generated by the first entity; - applying, by the second entity, a one-way function to the received first string or to a derivative thereof, obtaining an encoded string; - transmitting, by the second entity, the obtained encoded string to the intermediate node; - receiving, by the intermediate node, the encoded string from the first and the second entity, and - verifying, by the intermediate node, whether the encoded strings received from the first and the second entity are the same; - if the verifying step has a positive result, authorizing, by the intermediate node, the first and the second entity to set up a secure session, in particular to share a second string being derived by the first or the second entity, respectively, from a second random number generated by the first or the second entity, respectively.