Fichas anónimas
¿Qué son las fichas anónimas?
Si utiliza una clave qwant.us, recibirá una contraseña generada aleatoriamente que su navegador nos envía con cada consulta de búsqueda para que podamos habilitar la búsqueda sin anuncios. Si utiliza nuestra aplicación para Android , o nuestra extensión web para Chrome y Firefox, en lugar de la clave, su navegador nos envía una contraseña generada aleatoriamente (token anónimo) con cada solicitud de búsqueda para autenticación, que se genera localmente. Esto garantiza que cada contraseña es única y no tiene conexión con la clave real de qwant.us, ni entre las contraseñas individuales.
¿Qué problema se supone que resuelven las fichas anónimas?
Si su navegador nos envía siempre la misma clave con cada consulta de búsqueda, al menos teóricamente tendríamos la posibilidad de establecer una correlación entre todas las búsquedas realizadas con la misma clave. Aunque no lo hiciéramos, por supuesto, la confianza seguiría siendo necesaria para estar seguros de su búsqueda anónima. Para que no sólo tengamos que prometer la búsqueda anónima, sino que también podamos demostrarla, hemos introducido los tokens anónimos.
¿Cómo funciona?
Así que queremos tener contraseñas de un solo uso generadas directamente desde su dispositivo final, que luego nos envía para la autenticación durante sus búsquedas. Sin embargo, para cada token anónimo en su dispositivo final, tenemos que asegurarnos de que un token regular se ha restado de su clave qwant.us para ello, sin (y este es el quid) decirnos qué clave qwant.us se utilizó para generar el token anónimo.
Tradicionalmente, utilizaríamos algún tipo de firma criptográfica para este fin. En este caso, firmaríamos el código anónimo generado. Entonces, cuando nos envíes el token anónimo junto con la firma más adelante, podremos estar seguros de que el token anónimo es válido. Sin embargo, para obtener la firma, nos habrías enviado el token anónimo junto con tu clave real, lo que anularía el anonimato.
Por lo tanto, en su lugar utilizamos una forma modificada de firma criptográfica, la denominada blind signature. Para crear una analogía de la vida real, es como si nos enviaras tu firma anónima en un sobre de papel carbón. En este ejemplo, no podríamos abrir el sobre, pero sí firmar desde el exterior, por lo que nuestra firma se transferiría al token anónimo del interior. Cuando recibiéramos el sobre, podríamos retirarlo y devolvernos más tarde la contraseña y la firma. Así podríamos confirmar que se trata efectivamente de nuestra firma.
De hecho, esta analogía es un poco engañosa, porque en el proceso real, en el momento en que nos envías el token anónimo y la firma, no sólo no hemos visto nunca antes el token anónimo, sino que tampoco hemos visto nunca la propia firma. Y, sin embargo, podemos verificar que la firma ha sido generada por nosotros.
¿Qué significa esto para tus búsquedas autenticadas?
Utilizando el algoritmo descrito, tanto nosotros como usted podemos garantizar que cada vez se utilice una nueva contraseña aleatoria no relacionada con su clave qwant.us para sus búsquedas autenticadas.
Lo especial de este algoritmo es que todos los componentes que garantizan el anonimato se ejecutan localmente en tu dispositivo. Este código fuente ejecutado puede ser visto y verificado por cualquiera en cualquier momento.
Lo mejor de todo es que no necesitas configurar nada para usar tokens anónimos. Basta con instalar/utilizar nuestra extensión para navegador/aplicación para Android para que tu dispositivo utilice tokens anónimos en todas las búsquedas.
El algoritmo que hay detrás:
En una firma RSA clásica, tomaríamos el testigo anónimo m
, el exponente secreto d
, y el módulo público N
de nuestra clave privada y crearíamos la firma utilizando m^d (mod N)
. Sin embargo, queremos que m
permanezca secreto.
Por lo tanto, su terminal crea un número aleatorio r
utilizando un generador de números aleatorios, que no está relacionado con el divisor de N
. Por lo tanto, el máximo común divisor de r
y N
debe ser 1
.
Dado que r
es un número aleatorio, se deduce que m'
no revela ninguna información sobre el token anónimo almacenado localmente m
.
Nuestro servidor recibe ahora el token anónimo ofuscado m'
de tu dispositivo final junto con la clave qwant.us a utilizar. Restamos un token de la clave y enviamos la firma también ofuscada s'≡ (m')^d (mod N)
de vuelta a tu dispositivo final.
Tu terminal puede calcular ahora la firma RSA válida real s
para el token anónimo sin cifrar: s≡ s' r^-1 (mod N)
. Esto funciona porque para claves RSA, r^(e*d)≡ r (mod N)
. Y por tanto también: s ≡ s' * r^-1 ≡ (m')^d*r^-1 ≡ m^d*r^(e*d)*r^-1 ≡ m^d*r*r^-1 ≡ m^d (mod N)
.
Su dispositivo final nos envía ahora el token anónimo sin cifrar junto con la firma asociada para su autorización durante una búsqueda. La clave en sí ya no se nos envía durante la búsqueda.