A system comprising an access device and a user device, the access device comprising: a processor; and a non-transitory computer-readable storage medium comprising code executable by the processor for implementing a method comprising: sending an access device public key to the user device, wherein the access device public key is associated with an access device private key; receiving a response message including a blinded user device public key and encrypted user device data from the user device, wherein the user device data comprises a cryptographic nonce and a user device certificate, the user device certificate comprising a user device public key; generating a shared secret by inputting the access device private key and the blinded user device public key to an elliptic curve Diffie-Hellman function; and decrypting the encrypted user device data using the shared secret, wherein the user device is configured to: receive the access device public key; generate the shared secret by inputting the access device public key and a blinded user device private key into the elliptic curve Diffie-Hellman function, wherein the blinded user device private key is generated by the user device multiplying a user device private key by the cryptographic nonce, wherein the user device private key corresponds to the user-device public key; encrypt the user device data using the shared secret; generate the blinded user device public key by multiplying the user device public key by the cryptographic nonce; and send the response message including the encrypted user device data and the blinded user device public key to the access device. a processor; and a non-transitory computer-readable storage medium comprising code executable by the processor for implementing a method comprising: sending an access device public key to the user device, wherein the access device public key is associated with an access device private key; receiving a response message including a blinded user device public key and encrypted user device data from the user device, wherein the user device data comprises a cryptographic nonce and a user device certificate, the user device certificate comprising a user device public key; generating a shared secret by inputting the access device private key and the blinded user device public key to an elliptic curve Diffie-Hellman function; and decrypting the encrypted user device data using the shared secret, wherein the user device is configured to: receive the access device public key; generate the shared secret by inputting the access device public key and a blinded user device private key into the elliptic curve Diffie-Hellman function, wherein the blinded user device private key is generated by the user device multiplying a user device private key by the cryptographic nonce, wherein the user device private key corresponds to the user-device public key; encrypt the user device data using the shared secret; generate the blinded user device public key by multiplying the user device public key by the cryptographic nonce; and send the response message including the encrypted user device data and the blinded user device public key to the access device. sending an access device public key to the user device, wherein the access device public key is associated with an access device private key; receiving a response message including a blinded user device public key and encrypted user device data from the user device, wherein the user device data comprises a cryptographic nonce and a user device certificate, the user device certificate comprising a user device public key; generating a shared secret by inputting the access device private key and the blinded user device public key to an elliptic curve Diffie-Hellman function; and decrypting the encrypted user device data using the shared secret, wherein the user device is configured to: receive the access device public key; generate the shared secret by inputting the access device public key and a blinded user device private key into the elliptic curve Diffie-Hellman function, wherein the blinded user device private key is generated by the user device multiplying a user device private key by the cryptographic nonce, wherein the user device private key corresponds to the user-device public key; encrypt the user device data using the shared secret; generate the blinded user device public key by multiplying the user device public key by the cryptographic nonce; and send the response message including the encrypted user device data and the blinded user device public key to the access device. receive the access device public key; generate the shared secret by inputting the access device public key and a blinded user device private key into the elliptic curve Diffie-Hellman function, wherein the blinded user device private key is generated by the user device multiplying a user device private key by the cryptographic nonce, wherein the user device private key corresponds to the user-device public key; encrypt the user device data using the shared secret; generate the blinded user device public key by multiplying the user device public key by the cryptographic nonce; and send the response message including the encrypted user device data and the blinded user device public key to the access device.