na semana passada, aprendemos a teoria dos números que é necessário para a criptografia de chave pública.
Esta semana vamos colocar esse conhecimento para trabalhar, e vamos construir uma
seguras número de sistemas públicos de criptografia de chave. Mas, primeiro, precisamos definir o que
é a criptografia de chave pública, eo que isso significa para a criptografia de chave pública para ser
é seguro? Então deixe-me lembrá-lo que, em um esquema de criptografia de chave pública, há uma
algoritmo de criptografia que normalmente é representado por E, e há uma decodificação
algoritmo que denotamos por D. No entanto, aqui, o algoritmo de criptografia tem um
chave pública, enquanto o algoritmo de descodificação leva uma chave secreta. Este par é chamado um
par de chaves. E a chave pública é usada para criptografar mensagens, enquanto a chave secreta
é utilizado para decifrar mensagens. Assim, neste caso uma mensagem m é criptografar usando
a chave pública eo que sai do que é o c texto cifrado. E da mesma forma o
cifrado é alimentada no algoritmo de descodificação e usando a chave secreta, o que
sai do algoritmo de descodificação é o m mensagem original. Agora chave pública
criptografia tem muitas aplicações. Na semana passada vimos o clássico de uma aplicação que
é a configuração da sessão, ou seja, de troca de chaves e agora estamos apenas olhando para troca de chaves
que é seguro contra a espionagem só. E se você se lembrar da forma como o protocolo
obras, basicamente de Alice, o que ela faria se ela gerar um segredo de chave pública
par. Ela iria enviar a chave pública para Bob. Bob irá gerar uma aleatória X, o qual
vai servir como seu segredo compartilhado, e então ele envia X criptografadas para Alice,
criptografada com sua chave pública. Alice pode descriptografar, recuperar X e agora ambos
tem esse X segredo compartilhado que eles podem usar para comunicar de forma segura com um
outro. O atacante, é claro, tudo o que ele consegue ver é apenas a chave pública, o
criptografia de X sob a chave pública, a partir do qual ele não deveria ser capaz de obter qualquer
informações sobre X. E nós vamos definir que, mais precisamente para entender
o que significa não ser capaz de aprender qualquer coisa sobre X. criptografia de chave pública
realmente tem muitas outras aplicações. Por exemplo, é muito útil na
não aplicações interativas. Então, acho que de um sistema de e-mail por exemplo. Então, aqui, Bob
quer enviar e-mail para Alice, e como Bob envia o e-mail, o e-mail passa de
retransmissão de email para retransmitir emails até que finalmente chega Alice, altura em que Alice deve
descriptografar. A forma como o sistema de e-mail está configurado, é projetado para o tipo de
não-interativas locais onde Bob envia o e-mail. E, em seguida, Alice é suposto
recebê-lo. E Alice não deve ser para comunicar com Bob para descodificar
e-mail o. Portanto, neste caso, por causa da interatividade não, não há oportunidade
para a criação de um segredo compartilhado entre Alice e Bob. Portanto, neste caso, qual seria
acontecer é, basicamente, Bob teria, seria enviar o e-mail criptografado, usando de Alice, pública
chave. Então ele envia o e-mail. Qualquer pessoa no mundo pode enviar o e-mail criptografado para
Alice, criptografados usando sua chave pública. Quando Alice recebe este e-mail, ela utiliza
chave o seu segredo para descriptografar o texto cifrado e recuperar a mensagem de texto simples.
Claro que a única ressalva em um sistema como este é que, de facto, Bob precisa de alguma forma
obter a chave pública de Alice Então, por agora estamos apenas indo supor que Bob já tem
chave pública de Alice, mas mais tarde, na verdade, quando falamos sobre digitais
assinaturas nós vamos ver como, este pode realmente ser feito de forma muito eficiente utilizando o que há de
chamado de gerenciamento de chave pública e como eu disse nós vamos realmente voltar para que em uma tarde
tempo. Mas a principal coisa que eu quero que você lembre-se, é que a criptografia de chave pública é
usado para a instalação da sessão. Isso é muito comum na web, onde a chave pública
criptografia é usada para criar uma chave segura entre um navegador da web e e servidor web.
E a criptografia de chave pública também é muito útil para aplicações não-interativas,
onde qualquer pessoa no mundo, não interativa, precisa enviar uma mensagem
para Alice, que pode criptografar a mensagem utilizando a chave pública de Alice, e Alice pode descriptografar
e recuperar o texto puro. Então deixe-me lembrá-lo em detalhe um pouco mais que um
sistema de criptografia de chave pública é. Bem, ela é composta de três algoritmos G, E, e
D. G é chamado o algoritmo de geração de chave. Basicamente o que ele vai fazer é que vai
gerar esse par de chaves, a chave pública ea chave secreta. Como escrevi aqui, G leva
sem argumentos, mas na vida real, G, na verdade não ter um argumento chamado a segurança
parâmetro que especifica o tamanho das teclas que são gerados por esta chave
algoritmo de geração. Então há esses algoritmos de criptografia, como de costume que tomar uma
chave pública e uma mensagem e produzir uma mensagem cifrada em um algoritmo de descodificação que
pega a chave correspondente secreta e um texto cifrado e produz uma correspondente
mensagem. E como de costume para a consistência nós dizemos que se criptografar uma mensagem sob uma
dada chave pública e, então, decifrar com uma correspondente chave secreta que deve começar a
volta mensagem original. Agora o que isso significa para uma criptografia de chave pública a ser
seguro? Vou começar por definir, a segurança contra a espionagem.
E então vamos definir a segurança contra ataques ativos. Assim, a maneira para
definir a segurança contra a espionagem é muito semelhante com o caso simétrico nós temos
já esta semana passada, então nós vamos passar por isso rapidamente, assim como uma revisão.
Basicamente jogo o ataque é definido como segue. Definimos estes dois experimentos,
nula experiência e experimentação. No experimento em ambos o desafiante está indo
gerar um público e um par de chave secreta. Ele vai dar ao público
chave para o adversário. O adversário mundo vai querer saída de duas mensagens M0 e M1 de
comprimento igual e então o que ele recebe de volta é a criptografia de m0 ou o
criptografia de m1. No experimento que ele recebe de zero a criptografia de m0. No experimento
que ele recebe a criptografia de m1. E, em seguida, o adversário é suposto dizer que um
ele conseguiu. Ele começa a criptografia de m0 ou ele conseguiu a criptografia de m1? Assim
neste jogo, o atacante só fica um texto cifrado. Isto corresponde a uma
ataque escutas onde ele simplesmente escutado sobre esse texto cifrado C. E agora
seu objetivo é saber se o texto cifrado C é a criptografia de M0 ou M1. Não
adulteração no texto cifrado C é permitido ainda. E como sempre dizemos que o
esquema de criptografia de chave pública semanticamente seguro se o atacante não pode
distinguir de zero experiência de um experimento. Em outras palavras, ele não pode
dizer se ele chegou a criptografia de M0, ou a criptografia de M1. Antes de seguir em frente
aos ataques ativos, quero mencionar uma relação rápida entre a definição que
acabamos de ver, E a definição de, de segurança espionagem para simétrico
cifras. Se você se lembrar, quando falamos de segurança espionagem para simétrico
cifras, foi possível distinguir entre o caso em que a chave é usada uma vez, e no caso
onde a chave é usada várias vezes. E, de fato, vimos que, há uma clara
separação. Por exemplo, a almofada de uma única vez. É seguro se a chave é usada para criptografar uma
única mensagem, mas é completamente inseguro se a chave é utilizada para encriptar múltipla
mensagens. E, de fato, tivemos duas definições diferentes se você se lembra, tivemos uma
definição de um tempo de segurança, e depois tivemos uma definição separada, o que era
mais forte, quando a chave foi usada várias vezes. A definição que eu mostrei no
slide anterior é muito similar à definição de um tempo para segurança
cifras simétricas. E, de fato, verifica-se que para a criptografia de chave pública, se um
sistema é seguro em uma chave única vez, em certo sentido, também é seguro por um tempo, muitos
chave. Em outras palavras, não temos explicitamente dar ao invasor a capacidade
para, criptografias de mensagens de solicitação de sua escolha. Porque ele poderia apenas criar as
criptografias sozinho. Ele recebe a chave pública e, portanto, ele pode, por
se criptografar qualquer mensagem que ele gosta. Como resultado qualquer par de chave pública secreta em alguns
sentido inerentemente é usada para criptografar mensagens múltiplas porque o atacante
poderia ter apenas criptografados muitas, muitas mensagens de sua escolha usando o dado
chave pública que nós apenas lhe deu na primeira etapa. E assim, como resultado, na verdade,
definição de um segurança o tempo é suficiente para implicar a segurança do tempo e muitos
é por isso que nos referimos ao conceito como indistinguibilidade sob uma planície escolhida
texto anexar. Portanto, esta é apenas uma questão menor para explicar por que as configurações do público
criptografia, nós não precisamos de uma definição mais complicado para capturar
segurança escutas. Agora que entendemos de segurança espionagem, vamos
olhada adversários mais poderosos que podem realmente montar ataques ativos. Assim, em
particular, vejamos o exemplo de e-mail. Então, aqui, temos o nosso amigo Bob
que quer enviar e-mail para sua amiga Caroline. E Caroline acontece a ter, um
conta no Gmail. E a maneira como isso funciona é, basicamente, o email é enviado para o
servidor do Gmail, criptografado. O servidor decifra o e-mail Gmail, olha para o destinado
destinatários. E então, se é, o destinatário é Caroline, que
encaminha o e-mail para Caroline. Se o destinatário é o atacante, que
encaminha e-mail até o atacante. Esta é semelhante à forma como realmente funciona o Gmail
porque o remetente enviar o e-mail criptografado em SSL para o servidor do Gmail.
O servidor do Gmail iria encerrar a SSL e, em seguida, encaminhar e-mail até o
recipientes apropriados. Agora, suponha que Bob criptografa o e-mail usando um sistema que
permite que o adversário para mexer com o texto cifrado sem ser detectado. Para
exemplo, imagine que este e-mail é criptografada usando o Modo Contador, ou algo parecido
que. Então, quando o atacante intercepta este e-mail, ele pode alterar o destinatário,
de modo que agora o destinatário diz attacker@gmail.com, e sabemos que, para
modo de contador, por exemplo, isso é muito fácil de fazer. O atacante sabe que o
e-mail destina-se a Caroline, ele está apenas interessado no corpo do email. Assim, ele pode
facilmente alterar o destinatário de e-mail para attacker@gmail.com e agora, quando o servidor
recebe o e-mail, ele vai decifrá-lo, ver que o destinatário é suposto ser
atacante, e encaminhar o corpo para o atacante. E agora, o atacante foi capaz de
ler o corpo do e-mail que foi destinado para Caroline. Então esta é uma
exemplo clássico de um ataque ativo, e você percebe que o atacante poderia fazer
aqui, é possível decodificar qualquer texto cifrado, onde o destinatário é o seguinte:
atacante. Assim, qualquer texto cifrado, onde o texto simples começa com as palavras "Para: atacante". Portanto, nossa meta é
para projetar sistemas de chave pública que são seguros, mesmo que o atacante pode manipular
com texto cifrado e, possivelmente, cyphertexts decifrar certos. E novamente, eu quero
ressaltar que aqui o objetivo do atacante era fazer com que o corpo da mensagem. O atacante
já sabia que o e-mail destina-se a Caroline. E tudo o que tinha a fazer era
apenas alterar o destinatário, se destina. Portanto, este ataque motiva a adulteração
definição de texto cifrado escolhido segurança. E na verdade, esta é a noção de padrão de
de segurança para criptografia de chave pública. Então deixe-me explicar como o ataque [aqui Proceedes] e como eu
disse que nosso objetivo é construir sistemas que sejam seguros ao abrigo do presente muito, muito conservadora
noção de criptografia. Portanto, temos um esquema de criptografia (G, E, D). E digamos
que é definido sobre um espaço e uma mensagem cifrada (M, C) e como de costume estamos
vai definir dois experimentos, experiência zero, e um experimento. Então, 'b' aqui
diz que se o adversário está a implementar a zero experimento ou experiência
um. O desafiante começa por gerar uma chave pública e uma chave secreta, e, em seguida, dá
chave pública para o adversário. Agora, o adversário pode dizer: "Bem, aqui são um bando
de mensagens cifradas, por favor, decifrá-los para mim. "Então, aqui o adversário apresenta
texto cifrado C1 e ele fica a decodificação de texto cifrado C1, ou seja, M1. E ele fica
fazer isso de novo e de novo, então ele envia texto cifrado C2, e ele fica a descriptografia,
que é M2, cifrado C3, e que ele recebe o M3 descodificação, e assim por diante e assim por diante.
Finalmente, o adversário diz: "Esta fase de quadratura é mais", e agora ele
apresenta basicamente duas mensagens de comprimento igual, M0 e M1 como normal, e ele
recebe em resposta ao desafio cifrado C, que é a criptografia de M
zero ou a criptografia de um M. Dependendo se estamos em zero ou experiência
experimento um. Agora, o adversário pode continuar a emitir estes texto cifrado
consultas. Assim, ele pode continuar a pedidos de emissão, de descriptografia. Então ele envia uma
texto cifrado, e ele recebe uma decodificação desse texto cifrado, mas é claro que, agora, não
tem que ser uma advertência. Se o atacante poderia enviar texto cifrado arbitrária de sua escolha,
é claro, ele poderia quebrar o desafio. O que ele faria se ele se submeteria a
desafio cifrado C como uma consulta de descriptografia. E então ele seria informado se
na fase de desafio foi-lhe dada a criptografia de M0 ou a criptografia de M1.
Como resultado, colocamos esta limitação aqui, que diz que ele pode de fato apresentar qualquer
texto cifrado de sua escolha senão. Para o texto cifrado desafio. Assim, o invasor
poderia pedir a decodificação de qualquer mensagem cifrada de sua escolha que não seja o
desafio cifrado. E mesmo que ele foi dado todos estes decryptions, ele ainda
não deve ser capaz de dizer se ele foi dado a criptografia de M0 ou o
criptografia de M1. Então você percebe esta é uma definição muito conservadora. Ele dá a
poder atacante mais do que aquilo que vimos no slide anterior. No slide anterior,
o invasor pode descriptografar mensagens apenas quando o texto simples começou com as palavras
"para: atacante". Aqui, nós estamos dizendo que o atacante pode decifrar qualquer mensagem cifrada de sua escolha,
enquanto é diferente do desafio cifrado C. Ok? E então, seu
objetivo é dizer se o texto cifrado desafio é a criptografia de M0 ou o
criptografia de M1. E como de costume, se ele não pode fazer isso, em outras palavras, a sua
comportamento em zero experiência é basicamente o mesmo que o seu comportamento no experimento
um, então ele não foi capaz de distinguir a criptografia de M0 da criptografia de
M1, embora tivesse todo esse poder Então dizemos que o sistema é escolhido
texto cifrado seguro, CCA seguro. E às vezes há uma sigla, a sigla
para isso é indistinguibilidade sob um ataque de texto cifrado escolhido, mas eu sou apenas
vai dizer CCA garantido. Então vamos ver como isso captura, o exemplo de e-mail que vimos
antes. Assim, suponhamos que o sistema de criptografia a ser utilizado é tal que apenas dada a
criptografia de uma mensagem que o atacante pode mudar o destinatário a partir de
Alice dizer, para Charlie. Então aqui está como gostaríamos de ganhar o jogo CCA. Bem no
primeiro passo ele deu a chave pública do curso. E então o que o atacante vai fazer
é que ele iria emitir duas mensagens de comprimento igual, ou seja, na primeira mensagem, os
corpo é zero. Na segunda mensagem o corpo é um. Mas ambas as mensagens são
destinado a Alice. E em resposta, ele seria dado o desafio cifrado C.
Ok, então agora aqui temos o nosso desafio cifrado C. Agora, o que o atacante é
vai fazer é que ele vai usar o seu, a sua capacidade aqui para modificar a que se destina
destinatário. E ele vai mandar de volta um texto cifrado C, onde C 'é a criptografia
da mensagem de Charlie com o corpo sendo o corpo b desafio. Então, se você lembrar é
zero ou um. Agora, porque o texto sem formatação é diferente, sabemos que o
texto cifrado também deve ser diferente. Assim, em particular, C nobre deve ser diferente do
o desafio cifrado C, yeah? Assim, o primeiro-C aqui deve ser diferente do C. E
, como resultado, o desafiante pobre tem agora para descriptografar por definição do jogo CCA.
O desafiante deve descriptografar qualquer texto cifrado que não é igual a um desafio
texto cifrado. Assim, o desafiante decifra dar o adversário M prime. Basicamente, ele
deu a B adversário, e agora o adversário pode produzir o B desafio e
ele ganha o jogo com vantagem de um. Então, vantagem que ele com este regime especial
é um deles. Então, simplesmente porque o atacante foi capaz de mudar o texto cifrado desafio
de um recipiente para outro que lhe permite, para ganhar o jogo com CCA
única vantagem. Então, como eu disse, escolhido texto cifrado segurança acaba realmente é
a noção correta de segurança para os sistemas públicos de criptografia de chave. E é muito,
conceito muito interessante, certo? Basicamente, de alguma forma mesmo que o atacante tem essa capacidade
a qualquer coisa que ele quer decifrar. Diferentemente do texto cifrado desafio, ainda que ele não pode
aprender o que o texto cifrado é desafio. E assim o objetivo para o restante deste módulo
e realmente o módulo seguinte, bem, é a construção de sistemas CCA seguras. É
realmente incrível que isso é possível e eu vou mostrar para você
exatamente como fazê-lo. E, na verdade esses sistemas CCA seguros que construímos são o
aquelas que são utilizadas no mundo real. E cada vez que um sistema tem tentado implantar
um mecanismo de criptografia de chave pública que não é seguro CCA alguém surgiu com uma
ataque e foi capaz de quebrá-lo. E vamos ver alguns desses ataques exemplo
efectivamente nos segmentos mais próximos.