En criptografía , el cegamiento es una técnica mediante la cual un agente puede proporcionar un servicio (es decir, calcular una función para) un cliente en una forma codificada sin conocer ni la entrada real ni la salida real. Las técnicas de cegamiento también tienen aplicaciones para prevenir ataques de canal lateral en dispositivos de cifrado.
Más precisamente, Alice tiene una entrada x y Oscar tiene una función f . A Alice le gustaría que Oscar calcule y = f ( x ) para ella sin revelarle x ni y . La razón por la que quiere esto podría ser que no conoce la función p o que no tiene los recursos para calcularla. Alice "ciega" el mensaje codificándolo en alguna otra entrada E ( x ); la codificación E debe ser una biyección en el espacio de entrada de f , idealmente una permutación aleatoria. Oscar le daf ( E ( x )), a la que aplica una decodificación D para obtener D ( f ( E ( x ))) = y .
No todas las funciones permiten el cálculo a ciegas. En otras ocasiones, el cegamiento debe aplicarse con cuidado. Un ejemplo de lo último son las firmas de Rabin-Williams . Si cegadora se aplica al mensaje formateado pero el valor aleatorio no cumple los requisitos de Jacobi en p y q , entonces podría conducir a la recuperación de clave privada. Una demostración de la recuperación se puede ver en CVE - 2015-2141 [1] descubierto por Evgeny Sidorov.
La aplicación más común de cegamiento es la firma ciega . En un protocolo de firma ciega, el firmante firma digitalmente un mensaje sin poder aprender su contenido.
La libreta de un solo uso (OTP) es una aplicación de cegamiento al problema de la comunicación segura, por su propia naturaleza. A Alice le gustaría enviarle un mensaje a Bob en secreto, sin embargo, Oscar puede leer toda su comunicación. Por lo tanto, Alice envía el mensaje después de cegarlo con una clave secreta u OTP que comparte con Bob. Bob invierte el cegamiento después de recibir el mensaje. En este ejemplo, la función f es la identidad y E y D son ambos típicamente la operación XOR .
El cegamiento también se puede utilizar para prevenir ciertos ataques de canal lateral en esquemas de cifrado asimétrico . Los ataques de canal lateral permiten que un adversario recupere información sobre la entrada a una operación criptográfica midiendo algo diferente al resultado del algoritmo, por ejemplo, el consumo de energía, el tiempo de cálculo o las emanaciones de radiofrecuencia de un dispositivo. Por lo general, estos ataques dependen de que el atacante conozca las características del algoritmo, así como (algunas) entradas. En este escenario, el cegamiento sirve para alterar la entrada del algoritmo en un estado impredecible. Dependiendo de las características de la función de cegamiento, esto puede prevenir alguna o toda la fuga de información útil. Tenga en cuenta que la seguridad depende también de la resistencia de las propias funciones cegadoras a los ataques de canal lateral.
Por ejemplo, en RSA el cegamiento implica calcular la operación de cegamiento E ( x ) = (xr) e mod N , donde r es un número entero aleatorio entre 1 y N y relativamente primo a N (es decir, mcd ( r , N ) = 1) , x es el texto sin formato, e es el exponente RSA público y N es el módulo RSA. Como de costumbre, la función de descifrado f ( z ) = z d mod N se aplica dando así f ( E ( x )) = (xr) ed mod N = xr mod N . Finalmente es no cegada utilizando la función D ( z ) = zr -1 mod N . Al multiplicar xr mod N por r −1 mod N se obtiene x , como se desee. Al descifrar de esta manera, un adversario que sea capaz de medir el tiempo que tarda esta operación no podría hacer uso de esta información (mediante la aplicación de ataques de tiempo, se sabe que RSA es vulnerable) ya que no conoce la constante r y por lo tanto, no tiene conocimiento de la entrada real alimentada a las primitivas RSA.