A method for authenticating a user operating a first device , the method comprising: determining , by the first device , enrollment information input by the user; determining , by the first device , an authentication function that evaluates whether the user is authenticated based on the enrollment information and authentication information input by the user to a second device; determining , by the first device , a circuit representing the authentication function; obfuscating , by the first device , the circuit to determine an obfuscated circuit; sending , by the first device , information associated with the obfuscated circuit to a second device ; receiving , by the first device , a request from the second device for obfuscated authentication information including a plurality of obfuscated values corresponding to the authentication information; initiating, by the first device , a process with the second device , the process involving an oblivious transfer protocol between the first device and the second device ; sending , by the first device and via the oblivious transfer protocol, to the second device , the obfuscated authentication information including the obfuscated values to enable the second device to evaluate the obfuscated circuit based on the obfuscated authentication information; receiving , by the first device , an obfuscated authentication result from the second device , wherein the obfuscated authentication result is determined by the second device evaluating the obfuscated circuit for the obfuscated authentication information; and determining , by the first device , whether the user is authenticated based on the obfuscated authentication result by determining an authentication result based on one or more obfuscated values of the obfuscated authentication result, the authentication result indicating a degree to which the authentication information and the enrollment information match. determining , by the first device , enrollment information input by the user; determining , by the first device , an authentication function that evaluates whether the user is authenticated based on the enrollment information and authentication information input by the user to a second device; determining , by the first device , a circuit representing the authentication function; obfuscating , by the first device , the circuit to determine an obfuscated circuit; sending , by the first device , information associated with the obfuscated circuit to a second device ; receiving , by the first device , a request from the second device for obfuscated authentication information including a plurality of obfuscated values corresponding to the authentication information; initiating, by the first device , a process with the second device , the process involving an oblivious transfer protocol between the first device and the second device ; sending , by the first device and via the oblivious transfer protocol, to the second device , the obfuscated authentication information including the obfuscated values to enable the second device to evaluate the obfuscated circuit based on the obfuscated authentication information; receiving , by the first device , an obfuscated authentication result from the second device , wherein the obfuscated authentication result is determined by the second device evaluating the obfuscated circuit for the obfuscated authentication information; and determining , by the first device , whether the user is authenticated based on the obfuscated authentication result by determining an authentication result based on one or more obfuscated values of the obfuscated authentication result, the authentication result indicating a degree to which the authentication information and the enrollment information match. <EOS>