Problema de los millonarios
# Problema de los millonarios

El problema de los millonarios es un problema de computación segura multipartita introducido en 1982 por Andrew C. Yao. El problema se enuncia de la siguiente forma:

    Dos millonarios A y B tienen respectivamente una riqueza $a$ y $b$. Ambos millonarios quieren saber cual de ellos es más rico sin revelarse entre ellos la cantidad de dinero que tiene cada uno. Es decir, lo que se quiere es un protocolo que permite a A y B saber si la condición $a<b$ es cierta, pero sin que se tenga que revelar entre ellos el valor de su riqueza respectiva.

Notar que si $a$ y $b$ son representaciones binarias de los dos número y $a_{i}$ y $b_{i}$ son los i-ésimos digits empezando por la derecha, la función de 'más grande que' puede ser reformulada de la siguiente forma:

    $[a>b]\Leftrightarrow \bigvee _{j=1}^{k}(a_{j}\land \neg b_{j}\land \bigwedge _{d=j+1}^{k}(\neg (a_{d}\oplus b_{d}))$

donde k es el tamaño en bits del mayor número.

## Soluciones

La primera solución fue presentada por Andrew C. Yao pero el protocolo tenía tiempo y espacio exponencial-

Posteriormente ha habido varias propuestas. Por ejemplo:

* En 2003 Ioannis Ioannidis y Ananth Grama, usando una variante de transferencia inconsciente llamada transferencia inconsciente 1-2, consigue complejidad $O(d^{2})$.
* En 2005 Hsiao-Ying Lin and Wen-Guey Tzeng proponen una solución basada en cifrado homomórfico.
* En 2005 Felix Brandt propone otro protocolo basándose en el algoritmo de Cifrado ElGamal, el cual es un cifrado homomórfico.

La resolución de este problema tiene múltiples aplicaciones.

