Los esquemas de cifrado no solo pueden ser aleatorios, sino que en algunos casos (por ejemplo, cifrado de clave pública ), deben ser aleatorizados. Esto no es un problema ya que requerimos un esquema de cifrado para que sea correcto , es decir, para cualquier mensaje cualquier clave contenga que
sobre la aleatoriedad .mk
Pr[ DEC( ENC(k,m,R) )=m]=1
R
La razón por la que los esquemas de clave pública deben ser aleatorios se deriva de la forma en que definimos la seguridad: no deseamos que el texto cifrado filtre ninguna información sobre el mensaje cifrado. El ejemplo clásico es el siguiente. Suponga que es la clave pública y secreta, respectivamente, y que el adversario intercepta un mensaje cifrado enviado a alguna unidad en el campo. El adversario sabe que el mensaje es "ATAQUE" o "RETIRADA", pero no sabe cuál. Una cosa que el adversario puede hacer es encriptar ambos mensajes usando el público . deje que y . If(pk,sk)cpkcA=ENCpk("ATTACK ")cR=ENCpk("RETREAT")ENCes determinista, el adversario puede encontrar el mensaje con certeza comparando con y .ccAcR
La forma en que esta noción se define formalmente se conoce como seguridad semántica :
Un esquema de cifrado es semánticamente seguro si algún adversario no puede ganar el siguiente juego con una probabilidad notablemente mayor que :A1/2
- Un retador genera claves y envía la clave pública al adversario.C(pk,sk)pk
- A elige dos mensajes de igual longitud y y los entrega a ambos a .m0m1C
- C recoge uniformemente un bit y envía de vuelta .b∈{0,1}ENC(mb)
- A necesita decir qué mensaje se cifró: o , es decir, necesita generar el bit .m0m1b
(Estoy omitiendo el parámetro de seguridad , que es crítico para definir "insignificante" o "notable"; Necesitamos suponer que la generación de las claves depende de , y que la ventaja que tiene es superior es insignificante en , es decir, menor que )
κκA1/2κκ−ω(1)