Se um algoritmo de criptografia pretende converter uma string para outra, que pode ser descriptografada de volta ao original, como esse processo pode envolver qualquer aleatoriedade?
Certamente, isso deve ser determinístico; caso contrário, como a função de descriptografia poderia saber quais fatores estavam envolvidos na criação da cadeia criptografada?
Respostas:
Pode haver mais de um texto cifrado que mapeia de volta para o mesmo texto simples. Em termos matemáticos, o algoritmo de criptografia deve ser injetivo para que você possa recuperar o texto sem formatação para o texto cifrado, mas isso não impede que o texto cifrado codifique mais informações que o texto sem formatação.
Como um exemplo concreto, considere modos de operação de codificação de bloco, como CBC , CTR ou OFB . Todos esses modos envolvem um IV (vetor de inicialização), além do texto simples, o algoritmo da cifra de bloco e sua chave. (Para CTR, o IV é chamado noncece, mas desempenha um papel semelhante.) A função de criptografia é determinística para um determinado IV. O IV, por outro lado, pode ser escolhido aleatoriamente (para CTR, deve ser escolhido aleatoriamente). Assim, a menos que o protocolo especifique um método determinístico de escolha do IV (como uma constante acordada), o IV é enviado juntamente com o texto cifrado. De fato, a saída do software de criptografia geralmente consiste no IV seguido pelo texto cifrado stricto sensu. O IV em si é enviado em texto simples; não contém (não deve) nenhuma informação confidencial.
Como outro exemplo, considere o modo PKCS1.5 ("esquema de preenchimento") do RSA (definido no PKCS # 1 versão 1.5 - consulte as páginas 22 a 25 do PKCS # 1 v2.1 ). Simplificando um pouco, esse modo consiste em concatenar uma sequência aleatória com a mensagem e aplicar a operação de exponenciação. O texto cifrado é onde é concatenação, é a mensagem e é uma string de preenchimento cuja maioria dos bits é aleatória. Para recuperar a mensagem do texto cifrado , aplique a operação de descriptografia bruta e divida em preenchimento (que é descartado) e mensagem.(P∥M)emodn ∥ M P C Cdmodn C
fonte
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 .m k
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) c pk cA=ENCpk("ATTACK ") cR=ENCpk("RETREAT") ENC é determinístico, o adversário pode descobrir a mensagem com certeza comparando com e .c cA cR
A maneira como essa noção é formalmente definida é conhecida como segurança semântica :
(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 )κ κ A 1/2 κ κ−ω(1)
fonte
Você não indicou que tipo de criptografia estamos discutindo, mas deixe-me apontar o que é realmente necessário para a segurança dos protocolos cartográficos (além do que é indicado em outras respostas).
O que realmente precisamos é isto: as chaves devem ser geradas aleatoriamente (isso pode ser feito em colaboração como em criptografia de chave pública como RSA ou por uma entidade como em criptografia de chave privada). A aleatoriedade da chave garante que um adversário não possa prever as chaves (e usá-las para quebrar o protocolo). Enquanto as chaves parecerem aleatórias para o adversário, o protocolo estará seguro. Freqüentemente, as chaves são geradas por um algoritmo aleatório e depois são fornecidas às partes, enquanto os algoritmos de criptografia e descriptografia não são randomizados, mas determinísticos.
Lembre-se também de que ser randomizado não significa que o processo não seja invertível. Um exemplo simples é o seguinte: dado , gere aleatoriamente , produza . Para inverter, podemos produzir a primeira parte do par.x r ⟨x,r⟩
fonte
Os algoritmos de criptografia e descriptografia podem ser randomizados, desde que você possa provar algum teorema de que a criptografia seguida pela descriptografia fornecerá a mensagem original na maioria das vezes .
Por que alguém iria querer esse esquema de criptografia? Porque: 1) existem situações em que não queremos estar certos o tempo todo, mas apenas 99999999 vezes a cada 100000000 e 2) permitindo que erros tão pequenos muitas vezes melhorem algo mais (como eficiência) em uma quantidade desproporcional.
fonte
Só para citar um exemplo, na criptografia RSA , você precisa gerar dois primos e e um inteiro que será usado para criar o seu público e chaves privadas.p q e
Se você gerar algum desses valores de maneira determinística, a geração deles poderá ser reproduzida, comprometendo potencialmente sua criptografia. Se esses números são gerados de maneira aleatória, isso não é problema.
Atualizar
Como um exemplo mais específico da resposta de Ran G. , você pode dar uma olhada na criptografia Elliptic Curve , onde o algoritmo requer um parâmetro aleatório (geralmente chamado , ou ) para criptografar e descriptografar mensagens. Se o mesmo parâmetro "aleatório" for usado mais de uma vez, a chave poderá ser calculada a partir de duas mensagens criptografadas. Este foi o problema / premissa do hack do PlayStation 3 do ano passado .d k r
fonte