Não apenas os esquemas de criptografia podem ter aleatoriedade, mas em alguns casos (por exemplo, criptografia de chave pública), eles devem ser randomizados. Isso não é um problema, pois exigimos que um esquema de criptografia esteja correto , ou seja, para qualquer mensagem e qualquer chave ela mantenha
através da aleatoriedade .mk
Pr[ DEC( ENC(k,m,R) )=m]=1
R
A razão pela qual os esquemas de chave pública devem ser aleatórios deriva da maneira como definimos a segurança: não queremos que o texto cifrado vaze nenhuma informação sobre a mensagem criptografada. O exemplo clássico é o seguinte. Suponha que é a chave pública e secreta, respectivamente, e que o adversário intercepte uma mensagem criptografada enviada a alguma unidade no campo. O adversário sabe que a mensagem é "ATAQUE" ou "RETIRO", mas não sabe qual. Uma coisa que o adversário pode fazer é criptografar as duas mensagens usando o público . deixe e . Se(pk,sk)cpkcA=ENCpk("ATTACK ")cR=ENCpk("RETREAT")ENCé determinístico, o adversário pode descobrir a mensagem com certeza comparando com e .ccAcR
A maneira como essa noção é formalmente definida é conhecida como segurança semântica :
Um esquema de criptografia é semanticamente seguro se algum adversário não puder vencer o jogo a seguir com probabilidade visivelmente maior que :A1/2
- Um desafiante gera chaves e envia a chave pública ao adversário.C(pk,sk)pk
- A escolhe duas mensagens de igual comprimento e e as fornece a .m0m1C
- C seleciona uniformemente um pouco e envia de volta .b∈{0,1}ENC(mb)
- A precisa dizer qual mensagem foi criptografada: ou , ou seja, ele precisa gerar o bit .m0m1b
(Estou omitindo o parâmetro de segurança , que é fundamental para definir "insignificante" ou "perceptível"; precisamos assumir que a geração das chaves depende de e que a vantagem tem acima é insignificante em , ou seja, menor que )
κκA1/2κκ−ω(1)