WEBVTT 00:00:00.000 --> 00:00:04.669 Neste segmento veremos como usar cifras de bloco para criptografar mensagens múltiplas 00:00:04.669 --> 00:00:08.959 usando a mesma chave. Isto vem para cima, na prática, por exemplo, em sistemas de ficheiros onde 00:00:08.959 --> 00:00:13.412 chave o mesmo é usado para criptografar arquivos múltiplos. Ele vem em protocolos de rede 00:00:13.412 --> 00:00:17.647 , onde a mesma chave é utilizada para criptografar vários pacotes. Então vamos ver como fazer 00:00:17.647 --> 00:00:21.883 -lo. A primeira coisa que precisamos fazer é definir o que é significa para uma cifra de ser 00:00:21.883 --> 00:00:26.185 seguro quando a mesma chave é usada para criptografar mensagens múltiplas. Quando usamos o 00:00:26.185 --> 00:00:31.041 tecla mais uma vez o resultado disso é que o adversário começa a ver muitos cibernético 00:00:31.041 --> 00:00:35.627 texto criptografado utilizando a mesma chave. Como resultado, quando se definir a segurança, estamos 00:00:35.627 --> 00:00:40.512 vai permitir que o adversário para montar o que é chamado um ataque de texto escolhido simples. Em 00:00:40.512 --> 00:00:45.522 outras palavras, o adversário pode obter a criptografia de mensagens arbitrárias de seu 00:00:45.522 --> 00:00:49.710 escolha. Assim, por exemplo, se o adversário interagindo com Alice. O 00:00:49.710 --> 00:00:53.924 adversário pode pedir a Alice para criptografar mensagens arbitrárias da do adversário 00:00:53.924 --> 00:00:58.138 escolha. E Alice vai em frente e criptografar as mensagens e dar a 00:00:58.138 --> 00:01:02.929 adversário dos textos cifrados resultantes. Você pode se perguntar por que Alice nunca fazer isso. 00:01:02.929 --> 00:01:07.431 Como isso poderia acontecer na vida real? Mas acontece que este é realmente 00:01:07.431 --> 00:01:11.760 muito comum na vida real. E, de fato, essa modelagem é bastante conservador 00:01:11.760 --> 00:01:16.320 modelagem da vida real. Por exemplo, o adversário pode enviar um e-mail Alice. Quando 00:01:16.320 --> 00:01:21.168 Alice recebe o e-mail, a grava-lo em seu disco criptografado, assim criptografar o 00:01:21.168 --> 00:01:26.140 e-mail adversário usando sua chave secreta. Se mais tarde o adversário rouba este disco, em seguida, 00:01:26.140 --> 00:01:31.280 ele obtém a criptografia de um e-mail que ele enviou Alice com chave secreta de Alice. Assim 00:01:31.280 --> 00:01:36.298 que é um exemplo de um ataque de texto escolhido planície, onde o adversário desde Alice 00:01:36.298 --> 00:01:41.075 com uma mensagem e ela criptografada que a mensagem usando sua própria chave. E depois 00:01:41.075 --> 00:01:45.429 atacante foi capaz de obter o texto cifrado resultante. Então essa é a 00:01:45.429 --> 00:01:49.661 poder do adversário. E então o objetivo do adversário é, basicamente, para quebrar 00:01:49.661 --> 00:01:54.368 segurança semântica. Portanto, vamos definir isso com mais precisão. Como de costume, nós vamos 00:01:54.368 --> 00:01:59.447 definir a segurança semântica em um ataque de texto simples escolhido através de dois experimentos, 00:01:59.447 --> 00:02:04.717 nula experiência e experimentação, que são modeladas como um jogo entre um desafiante 00:02:04.717 --> 00:02:09.669 e um adversário. Quando o jogo começa, o grande desafio é que vai escolher uma amostra aleatória 00:02:09.669 --> 00:02:14.006 chave K. E agora o adversário basicamente começa a consultar o desafiante. Assim, o 00:02:14.006 --> 00:02:18.198 adversário agora começa por enviar uma consulta de segurança semântico, ou seja, ele 00:02:18.198 --> 00:02:22.804 envia duas mensagens, M zero e um M. Eu adicionei um outro índice, mas deixe-me ignorar 00:02:22.804 --> 00:02:27.351 índice que extra por um tempo. Assim, o adversário apresenta duas mensagens, M zero e 00:02:27.351 --> 00:02:31.780 M uma, que acontece ser do mesmo comprimento. E, em seguida, o adversário recebe 00:02:31.780 --> 00:02:36.031 criptografia de uma dessas mensagens, quer de M zero ou de M uma. Em 00:02:36.031 --> 00:02:40.224 experiência zero, ele recebe a criptografia de M zero. No primeiro experimento, 00:02:40.224 --> 00:02:44.952 ele recebe a criptografia de um M. Então, até agora isso parece familiar este parece 00:02:44.952 --> 00:02:49.477 exatamente como um padrão de segurança semântico [inaudível]. No entanto, o ataque de texto simples 00:02:49.477 --> 00:02:54.007 adversário pode agora repetir esta consulta novamente. Então, agora você pode emitir uma consulta com 00:02:54.007 --> 00:02:58.485 outros dois textos simples, de novo do mesmo comprimento, e, novamente, você receberia o 00:02:58.485 --> 00:03:03.189 criptografia de um deles. No experimento zero, você receberia a criptografia de M 00:03:03.189 --> 00:03:07.837 zero. No primeiro experimento você receberia a criptografia de um M. E o atacante 00:03:07.837 --> 00:03:12.542 pode continuar a emitir consultas como este. Na verdade nós vamos dizer que ele pode emitir até Q 00:03:12.542 --> 00:03:17.020 consultas deste tipo. E então, lembre-se, cada vez que ele emite um par de mensagens. 00:03:17.020 --> 00:03:21.416 que venham a ser do mesmo comprimento e cada vez que ele ou obtém a encriptação 00:03:21.416 --> 00:03:25.867 do lado esquerdo ou do lado direito novamente em zero experimento ele sempre terá o 00:03:25.867 --> 00:03:29.727 criptografia da mensagem deixada no experimento que ele sempre terá o 00:03:29.727 --> 00:03:33.970 encriptação da mensagem esquerda. E, então o objetivo do adversário é, basicamente, para descobrir 00:03:33.970 --> 00:03:38.289 saber se ele está em zero experimental ou em experimentação. Em outras palavras, se 00:03:38.289 --> 00:03:42.713 ele recebia constantemente a criptografia da mensagem a esquerda ou para a criptografia de 00:03:42.713 --> 00:03:47.032 a mensagem certa. Então, em certo sentido, este é um jogo padrão de segurança de apenas semântica 00:03:47.032 --> 00:03:51.193 iterada muitas consultas que o atacante pode emitir a adaptativamente uma após 00:03:51.193 --> 00:03:56.014 o outro. Agora, o ataque de texto simples escolhido é capturado pelo facto de que, se o 00:03:56.014 --> 00:04:00.646 atacante quer a criptografia de uma mensagem m particular. O que ele poderia fazer é, 00:04:00.646 --> 00:04:05.234 por exemplo, usam J consulta para J soma, onde neste J consulta ele vai definir tanto o zero 00:04:05.234 --> 00:04:09.593 mensagem ea mensagem de um ser a mesma mensagem exatamente M. Em outras palavras, 00:04:09.593 --> 00:04:14.008 tanto a mensagem a esquerda e direita da mensagem são os mesmos, e ambos são definidos para 00:04:14.008 --> 00:04:18.653 a mensagem M. Neste caso, o que irá receber, uma vez que ambas as mensagens são os mesmos, 00:04:18.653 --> 00:04:23.126 ele sabe que vai receber a criptografia desta mensagem M que ele era 00:04:23.126 --> 00:04:27.600 interessados polegadas Então este é exatamente o que significa um ataque escolhido [inaudível]. 00:04:27.600 --> 00:04:32.598 Quando a consultoria pode enviar uma mensagem m e receber a criptografia de que 00:04:32.598 --> 00:04:37.429 m mensagem especial de sua escolha. Então algumas de suas consultas podem ser deste escolheu 00:04:37.429 --> 00:04:42.157 sabor texto simples onde a mensagem do lado esquerdo é igual à mensagem do lado direito, 00:04:42.157 --> 00:04:46.775 , mas algumas das consultas pode ser padrão de segurança consultas semânticas onde as duas 00:04:46.775 --> 00:04:51.281 mensagens são distintas e que realmente lhe dá informações sobre se ele está em 00:04:51.281 --> 00:04:55.453 experiência zero ou em um experimento. Agora, agora você deve ser usado para este 00:04:55.453 --> 00:05:00.182 definição, sempre que dizemos que o sistema é semanticamente seguro sob uma planície escolhida 00:05:00.182 --> 00:05:04.141 ataque texto. Se, por todos os adversários eficientes, eles não conseguem distinguir 00:05:04.141 --> 00:05:08.703 nula experiência de um experimento. Em outras palavras, a probabilidade de que, no 00:05:08.703 --> 00:05:13.091 final, a saída, B Prime, que vamos denotar por a saída do experimento 00:05:13.091 --> 00:05:17.769 B. Esta saída será o mesmo se nula experiência [inaudível] ou experiência 00:05:17.769 --> 00:05:22.310 um. Assim, o invasor não podia distinguir entre sempre recebendo criptografias de 00:05:22.310 --> 00:05:26.900 as mensagens deixadas, versus sempre recebendo criptografias das mensagens certas. Assim, em 00:05:26.900 --> 00:05:31.267 sua mente, eu gostaria que você esteja pensando em um adversário que é capaz de montar um 00:05:31.267 --> 00:05:35.745 escolhido ataque de texto simples, ou seja, ser dada a criptografia de mensagens arbitrárias de 00:05:35.745 --> 00:05:40.168 escolha sua, e seu objetivo é quebrar a segurança semântica por algum outro desafio 00:05:40.168 --> 00:05:44.330 textos cifrados. E como eu disse neste modelo [inaudível] do mundo real do 00:05:44.330 --> 00:05:48.721 atacante é capaz de enganar Alice em criptografar mensagens para ele de sua escolha 00:05:48.721 --> 00:05:53.287 e, em seguida, o objetivo do atacante é de alguma forma, quebrar algum texto cypher desafio. Então, eu 00:05:53.287 --> 00:05:58.173 alegação de que todas as cifras que temos visto até agora balcão, ou seja determinista 00:05:58.173 --> 00:06:02.541 modo ou o teclado de uma vez, sentem-se inseguros em um ataque de texto escolhido simples. Mais 00:06:02.541 --> 00:06:07.312 geralmente, suponha que temos um esquema de criptografia que sempre gera a mesma cifra 00:06:07.312 --> 00:06:11.968 texto para um M. mensagem particular Em outras palavras, se eu pedir o esquema de criptografia para 00:06:11.968 --> 00:06:16.188 criptografar a mensagem M uma vez. E então eu pergunto o esquema de criptografia para criptografar o 00:06:16.188 --> 00:06:21.183 m mensagem novamente. Se em ambos os casos, o esquema de criptografia gera a cifra mesmo 00:06:21.183 --> 00:06:26.550 texto, então esse sistema não pode estar seguro em um ataque de texto escolhido simples. 00:06:26.550 --> 00:06:31.281 E ambos modo determinista contador ea almofada tempo um eram de que o sabor. Eles 00:06:31.281 --> 00:06:35.923 sempre imprimir o mesmo texto cifrado, recebeu a mesma mensagem. E assim vamos ver por que 00:06:35.923 --> 00:06:41.143 que não pode ser escolhido de texto simples seguro. E o ataque é bastante simples, o que o 00:06:41.143 --> 00:06:46.300 atacante vai fazer, é que ele vai produzir a mesma mensagem duas vezes. Este apenas diz. 00:06:46.300 --> 00:06:51.233 que ele realmente quer a criptografia de M0. Então aqui o atacante é dada C0 que é 00:06:51.233 --> 00:06:55.872 criptografia de M0. Então esta foi a sua consulta de texto escolhido planície onde ele realmente 00:06:55.872 --> 00:07:00.805 recebeu a criptografia do M0 mensagem de sua escolha. E agora ele vai quebrar 00:07:00.805 --> 00:07:05.445 segurança semântica. Então o que ele faz é que ele gera duas mensagens, M0 e M1 do 00:07:05.445 --> 00:07:10.084 mesmo comprimento, e ele vai ser dada a criptografia de MB. Mas baixa e eis que, 00:07:10.084 --> 00:07:15.850 dissemos que o sistema de criptografia. Sempre envia o texto cifrado mesmo quando o seu 00:07:15.850 --> 00:07:21.539 criptografar a mensagem, M0. Portanto, se B é = a zero, sabemos que C, esta 00:07:21.539 --> 00:07:27.310 desafiou texto cifrado, é simplesmente a = CO, porque é a criptografia de M0. 00:07:27.310 --> 00:07:32.409 No entanto, se B é = a um. Então sabemos que este texto cypher desafio é a 00:07:32.409 --> 00:07:38.048 criptografia de M1, que é algo diferente de zero para todos os C o atacante não é ele 00:07:38.048 --> 00:07:43.441 apenas verifica a sua C é = a zero a saída do C0, em outras palavras, ele gera um. Assim, em 00:07:43.441 --> 00:07:47.722 Neste caso, o atacante é perfeitamente capaz de adivinhar esta B bit, então ele sabe 00:07:47.722 --> 00:07:52.412 exatamente [inaudível], dada a criptografia de M0, ou a criptografia de M1. E como um 00:07:52.412 --> 00:07:57.103 resultado, a sua vantagem em ganhar este jogo é um deles. O que significa que o sistema não pode 00:07:57.103 --> 00:08:01.491 possivelmente ser CPA seguro. Um não é um número insignificante. Então isso mostra que o 00:08:01.491 --> 00:08:05.582 esquemas de criptografia determinísticos não pode ser CPA-seguro, mas você pode 00:08:05.582 --> 00:08:09.345 maravilha bem, o que isso significa na prática? Bem, na prática, isso significa 00:08:09.345 --> 00:08:13.111 novamente que cada mensagem é sempre criptografado para o mesmo texto cifrado. O que 00:08:13.111 --> 00:08:17.234 isto significa é que se você está a criptografia de arquivos no disco, e acontecer de você ser criptografar 00:08:17.234 --> 00:08:21.407 dois ficheiros que acontece ser o mesmo, que irá resultar em o mesmo texto cifrado e 00:08:21.407 --> 00:08:25.327 , em seguida, o atacante, olhando para o disco criptografado, vai aprender que estes dois 00:08:25.327 --> 00:08:29.297 arquivos realmente conter o mesmo conteúdo. O atacante pode não saber o que o 00:08:29.297 --> 00:08:33.419 conteúdo é, mas ele vai aprender que esses dois arquivos criptografados são uma criptografia de 00:08:33.419 --> 00:08:37.524 , o mesmo conteúdo e não deve ser capaz de aprender isso. Da mesma forma, se você enviar dois 00:08:37.524 --> 00:08:41.287 pacotes cifrados na rede que acontecem para ser o mesmo, o atacante vai 00:08:41.287 --> 00:08:45.146 não saber o conteúdo desses pacotes, mas ele vai aprender que os dois pacotes 00:08:45.146 --> 00:08:49.301 realmente conter a mesma informação. Pense, por exemplo de uma voz criptografada 00:08:49.301 --> 00:08:53.769 conversa. Cada vez há calma sobre a linha, o sistema estará enviando 00:08:53.769 --> 00:08:58.072 criptografias de zero. Mas desde que a encriptação de zero são sempre mapeado para o mesmo 00:08:58.072 --> 00:09:02.334 texto cifrado. Um atacante olhando para a rede será capaz de identificar exatamente 00:09:02.334 --> 00:09:06.489 os pontos da conversa onde não há calma, porque ele sempre vai ver 00:09:06.489 --> 00:09:11.113 aqueles texto cifra exata mesma o tempo todo. Então esses são exemplos onde determinista 00:09:11.113 --> 00:09:15.492 criptografia não pode ser seguro. E como eu disse anteriormente, dizemos que o 00:09:15.492 --> 00:09:19.800 criptografia determinística não pode ser semanticamente seguro sob uma planície escolhida 00:09:19.800 --> 00:09:24.743 ataque texto. Então o que fazemos, bem a lição aqui é se as chaves secretas vai ser 00:09:24.743 --> 00:09:29.674 usada para criptografar mensagens múltiplas, é melhor que seja o caso que, dado o mesmo 00:09:29.674 --> 00:09:33.572 texto simples para criptografar duas vezes. O algoritmo de criptografia deve produzir 00:09:33.572 --> 00:09:38.147 diferentes textos cifrados. E então há duas maneiras de fazer isso. O primeiro método é 00:09:38.147 --> 00:09:42.836 que é chamado de encriptação aleatória. Aqui, o algoritmo de encriptação si vai 00:09:42.836 --> 00:09:47.296 para escolher alguns seqüência aleatória durante o processo de criptografia e vai 00:09:47.296 --> 00:09:51.642 criptografar a mensagem M utilizando essa seqüência aleatória. Então o que isto significa é que um 00:09:51.642 --> 00:09:56.389 mensagem particular, M0 por exemplo, não está indo só para ser mapeado para um texto cifrado 00:09:56.389 --> 00:10:00.894 , mas vai ser mapeado para uma bola toda de textos cifrados. Whereon cada 00:10:00.894 --> 00:10:06.692 criptografia, basicamente, mostramos um ponto nesta bola. Então, toda vez que criptografar, o 00:10:06.692 --> 00:10:11.292 algoritmo de criptografia escolhe uma seqüência aleatória, e que leva a seqüência aleatória 00:10:11.292 --> 00:10:15.832 um ponto nesta bola. Claro que, o algoritmo de descodificação, quando ela toma qualquer 00:10:15.832 --> 00:10:20.610 ponto nesta bola, sempre vai mapear o resultado para M zero. Do mesmo modo texto cifrado M 00:10:20.610 --> 00:10:25.449 um será mapeado para uma bola, e cada vez que criptografar M um, nós basicamente de saída 00:10:25.449 --> 00:10:29.690 um ponto nesta bola. E estas bolas tem que ser separado, de modo que o 00:10:29.690 --> 00:10:34.469 algoritmo de encriptação, quando se obtém um ponto em que a bola correspondente a M uma, 00:10:34.469 --> 00:10:38.964 será sempre saída a mensagem M uma. Deste modo, uma vez que o algoritmo de encriptação 00:10:38.964 --> 00:10:43.266 usa aleatoriedade, se cifrar a mesma mensagem duas vezes, com alta probabilidade de que vai 00:10:43.266 --> 00:10:47.144 obter textos cifrados diferentes. Infelizmente, isto significa que o texto cifrado 00:10:47.144 --> 00:10:51.393 necessariamente tem que ser maior que o texto simples, porque de alguma forma a aleatoriedade 00:10:51.393 --> 00:10:55.855 que foi usado para gerar o texto cifrado está agora codificado de algum modo no texto cifra. 00:10:55.855 --> 00:11:00.158 Assim, o texto cifrado tem mais espaço. E a grosso modo, o tamanho do texto cifrado é 00:11:00.158 --> 00:11:04.620 vai ser maior do que o texto simples. Por basicamente o número de bits aleatórios que 00:11:04.620 --> 00:11:08.748 foram utilizados durante a criptografia. Então, se os textos simples são muito grandes, se a planície 00:11:08.748 --> 00:11:13.203 textos são gigabytes longo, o número de bits aleatórios vai ser da ordem de 00:11:13.203 --> 00:11:17.494 128. Então, talvez este espaço extra realmente não importa. Mas se os textos são simples 00:11:17.494 --> 00:11:21.786 muito curto, talvez eles próprios são 128 bits, em seguida, adicionar um extra de 128 bits para 00:11:21.786 --> 00:11:26.240 texto a cada cifra vai dobrar o tamanho do texto total de cifra. E que poderia ser 00:11:26.240 --> 00:11:31.117 bastante caro. Então, como eu digo criptografia randomizado é uma solução bem, mas em alguns 00:11:31.117 --> 00:11:35.862 casos que realmente introduz um pouco de custos. Então, vamos olhar para um exemplo simples. 00:11:35.862 --> 00:11:41.107 Então, imagine que temos uma função pseudo-aleatório que leva insumos em um certo 00:11:41.107 --> 00:11:46.223 r espaço que vai ser chamado de um espaço de uso único. E saídas, saídas na mensagem 00:11:46.223 --> 00:11:50.636 espaço. E, agora, vamos definir o esquema de criptografia seguinte randomize 00:11:50.636 --> 00:11:55.880 onde queremos para criptografar a mensagem m com a criptografia de tudo o que vai 00:11:55.880 --> 00:12:01.149 não é o primeiro que vai gerar um r aleatório neste espaço nonce R. E então ele vai 00:12:01.149 --> 00:12:06.232 para abrir um texto cypher que consistem em dois componentes, o primeiro componente vai 00:12:06.232 --> 00:12:10.943 ser este valor R eo segundo componente vai ser uma avaliação de 00:12:10.943 --> 00:12:16.180 função pseudo-aleatória no ponto R XOR com a mensagem M. E a minha pergunta para 00:12:16.180 --> 00:12:21.397 você é, isso é o sistema de criptografia semanticamente seguro sob uma planície escolhida 00:12:21.397 --> 00:12:26.290 ataque texto. Portanto, a resposta correta é sim. Mas só se o espaço R nonce é grande 00:12:26.290 --> 00:12:31.249 o suficiente para que nunca se repete com R pouca probabilidade muito, muito alto. E vamos 00:12:31.249 --> 00:12:36.332 rapidamente argumentar por que isso é verdade. Então, em primeiro lugar, porque F é um seguro pseudo-aleatório 00:12:36.332 --> 00:12:41.352 função, podemos muito bem substituí-lo com uma função verdadeiramente aleatório. Em outras palavras, 00:12:41.352 --> 00:12:46.373 este é indistinguível da de caso em que encriptar a mensagem M, usando o 00:12:46.373 --> 00:12:51.252 função F verdadeiramente aleatório pouco, avaliados para apontar R e, em seguida XOR com M. 00:12:51.252 --> 00:12:57.320 Mas desde que isso nunca r pouco se repete a cada texto cifra usa um pouco diferente do que r 00:12:57.320 --> 00:13:03.095 isto significa é que os valores de F (r) são aleatórias uniformes cordas independentes 00:13:03.095 --> 00:13:08.818 o tempo todo. Então, toda vez que criptografar uma mensagem, criptografá-lo essencialmente usando um 00:13:08.818 --> 00:13:14.369 novo time pad aleatório uniforme um. E desde XORing uma seqüência uniforme com qualquer seqüência 00:13:14.369 --> 00:13:19.666 simplesmente gera uma nova seqüência de uniforme, o texto cifrado resultante é distribuído como 00:13:19.666 --> 00:13:24.767 apenas duas cordas aleatórias uniformes. Vou chamá-los de r e r principal. E assim, tanto em 00:13:24.767 --> 00:13:30.325 experiência zero e no experimento um, tudo o atacante consegue ver são verdadeiramente uniforme 00:13:30.325 --> 00:13:35.622 seqüências aleatórias r, r ', e uma vez que em ambos os experimentos o atacante está vendo o mesmo 00:13:35.622 --> 00:13:40.666 distribuição, ele não consegue distinguir as duas distribuições. E assim como a segurança 00:13:40.666 --> 00:13:45.695 mantém completamente quando estamos usando uma função verdadeiramente aleatório é também vou segurar quando 00:13:45.695 --> 00:13:50.559 estamos usando uma função pseudo-aleatório. Ok, então este é um bom exemplo de como usar 00:13:50.559 --> 00:13:55.435 o facto de a função pseudo aleatória se comporta como uma função aleatória para argumentar 00:13:55.435 --> 00:13:59.829 segurança deste esquema de criptografia particular. Ok, então agora temos um bom 00:13:59.829 --> 00:14:04.465 exemplo de encriptação aleatória. A outra abordagem para a construção de planície escolhida 00:14:04.465 --> 00:14:09.344 texto esquemas de criptografia seguras é o que é chamado de criptografia baseada em nonce. Agora, em 00:14:09.344 --> 00:14:14.012 um sistema de criptografia não-espaço, o algoritmo de criptografia realmente leva três 00:14:14.012 --> 00:14:19.044 entradas invés de dois. Como é habitual que leva a chave ea mensagem. Mas ele também tem 00:14:19.044 --> 00:14:23.773 introduzir um adicional chamado nonce. E da mesma forma, a descriptografia algoritmo também 00:14:23.773 --> 00:14:28.683 leva o nonce como entrada, e então produz o texto resultante descriptografado simples. E 00:14:28.683 --> 00:14:33.529 o que é esse valor nonce n. Este nonce é um valor público. Ela não precisa de ser 00:14:33.529 --> 00:14:38.402 escondida do adversário mas o único requisito é que o par (k, n) 00:14:38.402 --> 00:14:43.213 só é usada para criptografar uma mensagem única. Em outras palavras, este par (k, n) 00:14:43.213 --> 00:14:48.148 deve mudar de mensagem para mensagem. E há duas maneiras de mudar isso. Uma forma 00:14:48.148 --> 00:14:53.144 para mudá-la é escolher uma nova chave aleatória para cada mensagem. Ea outra maneira 00:14:53.144 --> 00:14:58.276 é continuar usando a mesma chave o tempo todo, mas depois temos de escolher um novo para nonce 00:14:58.276 --> 00:15:02.721 mensagem cada. E, e como eu disse, eu quero enfatizar novamente, desta nonce não precisa 00:15:02.721 --> 00:15:06.823 ser secreta, e não precisa ser aleatória. O único requisito é o uso único é único. 00:15:06.823 --> 00:15:11.029 E, de fato, vamos usar este termo ao longo do curso. A nonce 00:15:11.029 --> 00:15:15.247 para nós, significa um valor único que não se repete. Ele não tem que ser aleatória. Assim 00:15:15.247 --> 00:15:19.891 vamos olhar alguns exemplos de escolher um nonce, assim, a opção mais simples é 00:15:19.891 --> 00:15:24.255 simplesmente para tornar o nonce do accounter assim, por exemplo a criação de redes 00:15:24.255 --> 00:15:28.898 protocolo que você pode imaginar o nonce ser um contador de pacotes que é incrementado 00:15:28.898 --> 00:15:33.598 cada vez que um pacote é enviado por um remetente ou recebidos pelo receptor, isto significa que 00:15:33.598 --> 00:15:37.962 encriptador tem para manter o estado de mensagem para mensagem, principalmente, que ele tem que 00:15:37.962 --> 00:15:42.270 manter esse contador volta e incrementá-lo depois de cada mensagem é transmitida. 00:15:42.270 --> 00:15:47.487 Curiosamente, se o decrypter na verdade, tem o mesmo estado, então não há necessidade 00:15:47.487 --> 00:15:52.705 para incluir a nuance no texto cifrado desde a nuance está implícita. Vamos dar uma olhada 00:15:52.705 --> 00:15:57.987 um exemplo. O protocolo https é executado ao longo de um mecanismo de transporte confiável que 00:15:57.987 --> 00:16:03.075 significa que os pacotes enviados pelo remetente são assumidos para ser recebida, de modo a uma 00:16:03.075 --> 00:16:07.645 destinatário. Então, se o remetente envia pacote # 5 e # 6, então o pacote, o destinatário 00:16:07.645 --> 00:16:12.068 irá receber pacote # 5 e, em seguida pacote # 6, nessa ordem. Este 00:16:12.068 --> 00:16:16.215 significa que se o remetente mantém um contador de pacotes, o destinatário pode também 00:16:16.215 --> 00:16:20.860 manter um contador de pacotes e dois contadores basicamente incrementar em sincronia. Neste caso 00:16:20.860 --> 00:16:24.896 não há nenhuma razão para incluir o uso único em que os pacotes porque o 00:16:24.896 --> 00:16:29.476 nonce é implícita entre os dois lados. No entanto, em protocolos de outros, por 00:16:29.476 --> 00:16:34.600 exemplo, em IPsec, tem um protocolo IPsec projetada para criptografar a camada IP. O IP 00:16:34.600 --> 00:16:39.330 camada não garante a entrega dos pedidos. E assim, o remetente pode enviar 00:16:39.330 --> 00:16:44.520 pacote # 5 e # 6, então o pacote, mas aqueles que serão recebidos na ordem inversa em 00:16:44.520 --> 00:16:49.164 o destinatário. Neste caso ainda é bom usar um contador de pacotes como um nonce 00:16:49.164 --> 00:16:53.748 mas agora a nonce tem de ser incluído no pacote de modo a que o receptor sabe 00:16:53.748 --> 00:16:58.102 que nonce para usar para desencriptar o pacote recebido. Então, como eu digo, com base nonce 00:16:58.102 --> 00:17:02.686 criptografia é uma maneira muito eficiente para atingir CPA segurança. Em particular, se o 00:17:02.686 --> 00:17:07.098 nonce é implícita, não mesmo aumentar o comprimento do texto cifrado. Claro 00:17:07.098 --> 00:17:11.796 outro método para gerar um único nonce é simplesmente escolher o nonce aleatoriamente 00:17:11.796 --> 00:17:16.495 assumindo que o espaço nonce é suficientemente grande para que, com grande probabilidade de o 00:17:16.495 --> 00:17:21.579 nonce nunca será repetido para a vida da chave. Agora, neste caso, nonce 00:17:21.579 --> 00:17:26.098 criptografia baseada simplesmente reduz a encriptação aleatória. No entanto, o 00:17:26.098 --> 00:17:31.600 vantagem aqui é que o remetente não precisa manter todo o estado de mensagem para 00:17:31.600 --> 00:17:36.382 mensagem. Então isso é muito útil, por exemplo se a criptografia acontece a tomar 00:17:36.382 --> 00:17:41.425 lugar em vários dispositivos. Por exemplo, eu poderia ter um laptop e um inteligente 00:17:41.425 --> 00:17:46.096 telefone. Eles podem tanto usar a mesma chave. Mas neste caso, se eu preciso de estado completo 00:17:46.097 --> 00:17:49.961 criptografia, então meu laptop eo smartphone teria que coordenar a 00:17:49.961 --> 00:17:54.302 certifique-se que eles nunca reutilizar os nonces mesmos. Considerando que, se os dois simplesmente tomar 00:17:54.302 --> 00:17:58.114 nonces ao acaso, eles não precisam de coordenar porque era muito elevada 00:17:58.114 --> 00:18:02.243 probabilidade eles simplesmente nunca escolher o nonce mesmo. Novamente assumindo que o nonce 00:18:02.243 --> 00:18:06.478 espaço é grande o suficiente. Então, existem alguns casos onde a criptografia apátrida é bastante 00:18:06.478 --> 00:18:10.562 importante, nomeadamente quando a mesma chave é utilizada por várias máquinas. Então, eu 00:18:10.562 --> 00:18:14.492 queria encontrar, mais precisamente, o que significa segurança para nonce base 00:18:14.492 --> 00:18:18.694 criptografia. E, em particular, quero enfatizar que o sistema deve permanecer 00:18:18.694 --> 00:18:23.122 seguro quando o nonce são escolhidos pelo adversário. A razão é importante 00:18:23.122 --> 00:18:27.027 para permitir que o adversário para escolher os nonces é porque o adversário pode 00:18:27.027 --> 00:18:31.090 escolher qual texto cifrado ele quer atacar. Então, imagine o nonce acontece 00:18:31.090 --> 00:18:35.364 ser um contador e acontece que, quando o couter atinge o valor 15, talvez 00:18:35.364 --> 00:18:39.428 nesse ponto é fácil para o adversário para quebrar a segurança semântica. Assim, o 00:18:39.428 --> 00:18:43.702 adversário vai esperar até o décimo quinto pacote é enviado e só então ele vai pedir 00:18:43.702 --> 00:18:48.076 para quebrar a segurança semântica. Então, quando falamos de criptografia baseada em nonce, nós 00:18:48.076 --> 00:18:52.806 geralmente permitem que o adversário para escolher o nonce eo sistema deve permanecer 00:18:52.806 --> 00:18:57.772 garantir, mesmo sob essas configurações. Portanto, vamos definir o jogo CPA neste caso e é 00:18:57.772 --> 00:19:02.442 realmente muito parecido com o jogo antes. Basicamente, o atacante começa a apresentar 00:19:02.442 --> 00:19:06.935 pares de mensagens IM, MI0, e MI1. Obviamente que ambos têm de ser do mesmo 00:19:06.935 --> 00:19:11.576 comprimento. E ele começa a fornecer o nonce. E em resposta, o adversário é dada 00:19:11.576 --> 00:19:16.304 a criptografia de qualquer MI0, ou MI1. Mas usando o nonce que o adversário 00:19:16.304 --> 00:19:20.740 escolheu. E, claro, como de costume, o objetivo do adversário é para dizer se ele era 00:19:20.740 --> 00:19:25.096 dada a criptografia do texto simples esquerda ou direita o texto sem formatação. E como 00:19:25.096 --> 00:19:29.464 antes de o adversário começa a repetir essas consultas e ele pode emitir tantas, como muitos 00:19:29.464 --> 00:19:33.610 consultas como ele quer, nós normalmente vamos q denotar o número de consultas que o 00:19:33.610 --> 00:19:37.956 questões adversário. Agora, a única restrição de curso, que é crucial, é que 00:19:37.956 --> 00:19:42.329 embora o adversário começa a escolher os nonces, ele está restrito a escolher 00:19:42.329 --> 00:19:46.758 nonces distintas. A razão por que obrigá-lo a escolher nonces distintos é porque 00:19:46.758 --> 00:19:50.959 essa é a exigência na prática. Mesmo que os tolos adversário Alice em 00:19:50.959 --> 00:19:55.161 criptografar várias mensagens para ele, Alice nunca vai usar o mesmo nonce 00:19:55.161 --> 00:19:59.477 novamente. Como resultado, o adversário nunca verá mensagens criptografadas usando o 00:19:59.477 --> 00:20:03.678 nonce mesma e, portanto, mesmo no jogo, é necessário que todos nonce ser 00:20:03.678 --> 00:20:08.305 distinta. E então, como sempre dizemos que o sistema é uma criptografia baseada em nonce 00:20:08.305 --> 00:20:13.412 sistema que é, semanticamente seguro sob um ataque de texto simples escolhido se o adversário 00:20:13.421 --> 00:20:17.890 não consegue distinguir de zero experimento onde ele deu criptografias de esquerda 00:20:17.890 --> 00:20:22.593 mensagens de um experimento onde ele deu criptografias das mensagens certas. 00:20:22.593 --> 00:20:27.121 Então, vamos olhar um exemplo de um sistema de criptografia baseado em nonce. Como antes, nós 00:20:27.121 --> 00:20:32.119 ter um seguro que leva PRF entradas no espaço R nonce e cordas saídas no 00:20:32.119 --> 00:20:36.823 mensagem espaço M. Agora, quando uma nova chave é escolhido, vamos redefinir o nosso contador de R 00:20:36.823 --> 00:20:41.006 para ser zero. E agora vamos criptografar a mensagem M particular, o que vamos fazer é 00:20:41.006 --> 00:20:45.103 vamos incrementar o nosso contador de R, e depois criptografar a mensagem M utilizando o 00:20:45.103 --> 00:20:49.481 função pseudo aplicada a este valor R. E, como antes, o texto cifra é 00:20:49.481 --> 00:20:53.859 vai conter dois componentes, o nosso valor actual do contador e, em seguida, os 00:20:53.859 --> 00:20:58.518 uma criptografia pad hora da mensagem M. E por isso a minha pergunta é se este 00:20:58.518 --> 00:21:03.312 é um sistema seguro de criptografia não-espaço. Portanto, a resposta é sim, como antes, mas apenas 00:21:03.312 --> 00:21:08.485 se o espaço a nuance é grande o suficiente. Assim como incrementar a R balcão, nunca será 00:21:08.485 --> 00:21:13.284 ciclo volta a zero de modo que as nuances sempre, sempre ser único. Argumentamos 00:21:13.284 --> 00:21:18.020 segurança da mesma maneira como antes. Porque a PRF é segura, sabemos que este 00:21:18.020 --> 00:21:22.819 sistema de criptografia é indistinguível de usar uma função verdadeiramente aleatório. Em 00:21:22.819 --> 00:21:27.493 outras palavras, se aplicarmos uma função verdadeiramente aleatório para o balcão e XOR a 00:21:27.493 --> 00:21:32.602 resultados com texto simples, o M. Mas agora desde o R nuance nunca se repete, a cada 00:21:32.602 --> 00:21:37.447 hora de calcular essa F de R, nós conseguiremos um uniforme verdadeiramente aleatório e independente 00:21:37.447 --> 00:21:42.843 corda de modo que nós estamos realmente criptografar todas as mensagens usando o teclado de uma vez. E 00:21:42.843 --> 00:21:48.306 como resultado, todos o adversário começa a ver em ambos os experimentos são basicamente um 00:21:48.306 --> 00:21:52.751 par de seqüências aleatórias. Assim, ambos zero do experimento e experiência de um a 00:21:52.751 --> 00:21:57.408 adversário se é para ver exatamente a mesma distribuição, ou seja, as respostas a todos 00:21:57.408 --> 00:22:02.064 este escolhidos consultas de texto simples são apenas pares de cordas que são apenas uniformemente 00:22:02.064 --> 00:22:06.950 distribuído e isso é basicamente o mesmo em zero experimentar e experimentar um e, 00:22:06.950 --> 00:22:11.664 , portanto, o atacante não consegue distinguir os dois experimentos. E desde que ele não pode 00:22:11.664 --> 00:22:16.206 ganhar o jogo semântico de segurança com uma função verdadeiramente aleatório que ele, também, não pode ganhar 00:22:16.206 --> 00:22:20.517 o jogo de segurança semântica com a PRF seguro, e, por conseguinte, o sistema é 00:22:20.517 --> 00:22:25.222 seguro. Portanto, agora entendemos o que significa para um sistema simétrico para ser seguro quando 00:22:25.222 --> 00:22:30.091 as chaves usadas para criptografar mensagens múltiplas a exigência é que seja seguro e sob 00:22:30.091 --> 00:22:34.777 um plano de ataque escolhida. E nós dissemos que, basicamente, a única maneira de ser seguro em 00:22:34.777 --> 00:22:39.289 um ataque de texto simples ou é escolhido para usar a criptografia randomizado, ou de usar, usar 00:22:39.289 --> 00:22:43.462 criptografia nonce espaço onde nunca o nonce repete. E em seguida, na 00:22:43.462 --> 00:22:48.143 próximos dois segmentos, nós vamos construir dois sistemas de criptografia clássicos que são seguros 00:22:48.143 --> 00:22:50.174 quando a chave é usada várias vezes.