1 00:00:00,000 --> 00:00:04,669 Neste segmento veremos como usar cifras de bloco para criptografar mensagens múltiplas 2 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 3 00:00:08,959 --> 00:00:13,412 chave o mesmo é usado para criptografar arquivos múltiplos. Ele vem em protocolos de rede 4 00:00:13,412 --> 00:00:17,647 , onde a mesma chave é utilizada para criptografar vários pacotes. Então vamos ver como fazer 5 00:00:17,647 --> 00:00:21,883 -lo. A primeira coisa que precisamos fazer é definir o que é significa para uma cifra de ser 6 00:00:21,883 --> 00:00:26,185 seguro quando a mesma chave é usada para criptografar mensagens múltiplas. Quando usamos o 7 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 8 00:00:31,041 --> 00:00:35,627 texto criptografado utilizando a mesma chave. Como resultado, quando se definir a segurança, estamos 9 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 10 00:00:40,512 --> 00:00:45,522 outras palavras, o adversário pode obter a criptografia de mensagens arbitrárias de seu 11 00:00:45,522 --> 00:00:49,710 escolha. Assim, por exemplo, se o adversário interagindo com Alice. O 12 00:00:49,710 --> 00:00:53,924 adversário pode pedir a Alice para criptografar mensagens arbitrárias da do adversário 13 00:00:53,924 --> 00:00:58,138 escolha. E Alice vai em frente e criptografar as mensagens e dar a 14 00:00:58,138 --> 00:01:02,929 adversário dos textos cifrados resultantes. Você pode se perguntar por que Alice nunca fazer isso. 15 00:01:02,929 --> 00:01:07,431 Como isso poderia acontecer na vida real? Mas acontece que este é realmente 16 00:01:07,431 --> 00:01:11,760 muito comum na vida real. E, de fato, essa modelagem é bastante conservador 17 00:01:11,760 --> 00:01:16,320 modelagem da vida real. Por exemplo, o adversário pode enviar um e-mail Alice. Quando 18 00:01:16,320 --> 00:01:21,168 Alice recebe o e-mail, a grava-lo em seu disco criptografado, assim criptografar o 19 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, 20 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 21 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 22 00:01:36,298 --> 00:01:41,075 com uma mensagem e ela criptografada que a mensagem usando sua própria chave. E depois 23 00:01:41,075 --> 00:01:45,429 atacante foi capaz de obter o texto cifrado resultante. Então essa é a 24 00:01:45,429 --> 00:01:49,661 poder do adversário. E então o objetivo do adversário é, basicamente, para quebrar 25 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 26 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, 27 00:01:59,447 --> 00:02:04,717 nula experiência e experimentação, que são modeladas como um jogo entre um desafiante 28 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 29 00:02:09,669 --> 00:02:14,006 chave K. E agora o adversário basicamente começa a consultar o desafiante. Assim, o 30 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 31 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 32 00:02:22,804 --> 00:02:27,351 índice que extra por um tempo. Assim, o adversário apresenta duas mensagens, M zero e 33 00:02:27,351 --> 00:02:31,780 M uma, que acontece ser do mesmo comprimento. E, em seguida, o adversário recebe 34 00:02:31,780 --> 00:02:36,031 criptografia de uma dessas mensagens, quer de M zero ou de M uma. Em 35 00:02:36,031 --> 00:02:40,224 experiência zero, ele recebe a criptografia de M zero. No primeiro experimento, 36 00:02:40,224 --> 00:02:44,952 ele recebe a criptografia de um M. Então, até agora isso parece familiar este parece 37 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 38 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 39 00:02:54,007 --> 00:02:58,485 outros dois textos simples, de novo do mesmo comprimento, e, novamente, você receberia o 40 00:02:58,485 --> 00:03:03,189 criptografia de um deles. No experimento zero, você receberia a criptografia de M 41 00:03:03,189 --> 00:03:07,837 zero. No primeiro experimento você receberia a criptografia de um M. E o atacante 42 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 43 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. 44 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 45 00:03:21,416 --> 00:03:25,867 do lado esquerdo ou do lado direito novamente em zero experimento ele sempre terá o 46 00:03:25,867 --> 00:03:29,727 criptografia da mensagem deixada no experimento que ele sempre terá o 47 00:03:29,727 --> 00:03:33,970 encriptação da mensagem esquerda. E, então o objetivo do adversário é, basicamente, para descobrir 48 00:03:33,970 --> 00:03:38,289 saber se ele está em zero experimental ou em experimentação. Em outras palavras, se 49 00:03:38,289 --> 00:03:42,713 ele recebia constantemente a criptografia da mensagem a esquerda ou para a criptografia de 50 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 51 00:03:47,032 --> 00:03:51,193 iterada muitas consultas que o atacante pode emitir a adaptativamente uma após 52 00:03:51,193 --> 00:03:56,014 o outro. Agora, o ataque de texto simples escolhido é capturado pelo facto de que, se o 53 00:03:56,014 --> 00:04:00,646 atacante quer a criptografia de uma mensagem m particular. O que ele poderia fazer é, 54 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 55 00:04:05,234 --> 00:04:09,593 mensagem ea mensagem de um ser a mesma mensagem exatamente M. Em outras palavras, 56 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 57 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, 58 00:04:18,653 --> 00:04:23,126 ele sabe que vai receber a criptografia desta mensagem M que ele era 59 00:04:23,126 --> 00:04:27,600 interessados polegadas Então este é exatamente o que significa um ataque escolhido [inaudível]. 60 00:04:27,600 --> 00:04:32,598 Quando a consultoria pode enviar uma mensagem m e receber a criptografia de que 61 00:04:32,598 --> 00:04:37,429 m mensagem especial de sua escolha. Então algumas de suas consultas podem ser deste escolheu 62 00:04:37,429 --> 00:04:42,157 sabor texto simples onde a mensagem do lado esquerdo é igual à mensagem do lado direito, 63 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 64 00:04:46,775 --> 00:04:51,281 mensagens são distintas e que realmente lhe dá informações sobre se ele está em 65 00:04:51,281 --> 00:04:55,453 experiência zero ou em um experimento. Agora, agora você deve ser usado para este 66 00:04:55,453 --> 00:05:00,182 definição, sempre que dizemos que o sistema é semanticamente seguro sob uma planície escolhida 67 00:05:00,182 --> 00:05:04,141 ataque texto. Se, por todos os adversários eficientes, eles não conseguem distinguir 68 00:05:04,141 --> 00:05:08,703 nula experiência de um experimento. Em outras palavras, a probabilidade de que, no 69 00:05:08,703 --> 00:05:13,091 final, a saída, B Prime, que vamos denotar por a saída do experimento 70 00:05:13,091 --> 00:05:17,769 B. Esta saída será o mesmo se nula experiência [inaudível] ou experiência 71 00:05:17,769 --> 00:05:22,310 um. Assim, o invasor não podia distinguir entre sempre recebendo criptografias de 72 00:05:22,310 --> 00:05:26,900 as mensagens deixadas, versus sempre recebendo criptografias das mensagens certas. Assim, em 73 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 74 00:05:31,267 --> 00:05:35,745 escolhido ataque de texto simples, ou seja, ser dada a criptografia de mensagens arbitrárias de 75 00:05:35,745 --> 00:05:40,168 escolha sua, e seu objetivo é quebrar a segurança semântica por algum outro desafio 76 00:05:40,168 --> 00:05:44,330 textos cifrados. E como eu disse neste modelo [inaudível] do mundo real do 77 00:05:44,330 --> 00:05:48,721 atacante é capaz de enganar Alice em criptografar mensagens para ele de sua escolha 78 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 79 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 80 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 81 00:06:02,541 --> 00:06:07,312 geralmente, suponha que temos um esquema de criptografia que sempre gera a mesma cifra 82 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 83 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 84 00:06:16,188 --> 00:06:21,183 m mensagem novamente. Se em ambos os casos, o esquema de criptografia gera a cifra mesmo 85 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. 86 00:06:26,550 --> 00:06:31,281 E ambos modo determinista contador ea almofada tempo um eram de que o sabor. Eles 87 00:06:31,281 --> 00:06:35,923 sempre imprimir o mesmo texto cifrado, recebeu a mesma mensagem. E assim vamos ver por que 88 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 89 00:06:41,143 --> 00:06:46,300 atacante vai fazer, é que ele vai produzir a mesma mensagem duas vezes. Este apenas diz. 90 00:06:46,300 --> 00:06:51,233 que ele realmente quer a criptografia de M0. Então aqui o atacante é dada C0 que é 91 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 92 00:06:55,872 --> 00:07:00,805 recebeu a criptografia do M0 mensagem de sua escolha. E agora ele vai quebrar 93 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 94 00:07:05,445 --> 00:07:10,084 mesmo comprimento, e ele vai ser dada a criptografia de MB. Mas baixa e eis que, 95 00:07:10,084 --> 00:07:15,850 dissemos que o sistema de criptografia. Sempre envia o texto cifrado mesmo quando o seu 96 00:07:15,850 --> 00:07:21,539 criptografar a mensagem, M0. Portanto, se B é = a zero, sabemos que C, esta 97 00:07:21,539 --> 00:07:27,310 desafiou texto cifrado, é simplesmente a = CO, porque é a criptografia de M0. 98 00:07:27,310 --> 00:07:32,409 No entanto, se B é = a um. Então sabemos que este texto cypher desafio é a 99 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 100 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 101 00:07:43,441 --> 00:07:47,722 Neste caso, o atacante é perfeitamente capaz de adivinhar esta B bit, então ele sabe 102 00:07:47,722 --> 00:07:52,412 exatamente [inaudível], dada a criptografia de M0, ou a criptografia de M1. E como um 103 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 104 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 105 00:08:01,491 --> 00:08:05,582 esquemas de criptografia determinísticos não pode ser CPA-seguro, mas você pode 106 00:08:05,582 --> 00:08:09,345 maravilha bem, o que isso significa na prática? Bem, na prática, isso significa 107 00:08:09,345 --> 00:08:13,111 novamente que cada mensagem é sempre criptografado para o mesmo texto cifrado. O que 108 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 109 00:08:17,234 --> 00:08:21,407 dois ficheiros que acontece ser o mesmo, que irá resultar em o mesmo texto cifrado e 110 00:08:21,407 --> 00:08:25,327 , em seguida, o atacante, olhando para o disco criptografado, vai aprender que estes dois 111 00:08:25,327 --> 00:08:29,297 arquivos realmente conter o mesmo conteúdo. O atacante pode não saber o que o 112 00:08:29,297 --> 00:08:33,419 conteúdo é, mas ele vai aprender que esses dois arquivos criptografados são uma criptografia de 113 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 114 00:08:37,524 --> 00:08:41,287 pacotes cifrados na rede que acontecem para ser o mesmo, o atacante vai 115 00:08:41,287 --> 00:08:45,146 não saber o conteúdo desses pacotes, mas ele vai aprender que os dois pacotes 116 00:08:45,146 --> 00:08:49,301 realmente conter a mesma informação. Pense, por exemplo de uma voz criptografada 117 00:08:49,301 --> 00:08:53,769 conversa. Cada vez há calma sobre a linha, o sistema estará enviando 118 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 119 00:08:58,072 --> 00:09:02,334 texto cifrado. Um atacante olhando para a rede será capaz de identificar exatamente 120 00:09:02,334 --> 00:09:06,489 os pontos da conversa onde não há calma, porque ele sempre vai ver 121 00:09:06,489 --> 00:09:11,113 aqueles texto cifra exata mesma o tempo todo. Então esses são exemplos onde determinista 122 00:09:11,113 --> 00:09:15,492 criptografia não pode ser seguro. E como eu disse anteriormente, dizemos que o 123 00:09:15,492 --> 00:09:19,800 criptografia determinística não pode ser semanticamente seguro sob uma planície escolhida 124 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 125 00:09:24,743 --> 00:09:29,674 usada para criptografar mensagens múltiplas, é melhor que seja o caso que, dado o mesmo 126 00:09:29,674 --> 00:09:33,572 texto simples para criptografar duas vezes. O algoritmo de criptografia deve produzir 127 00:09:33,572 --> 00:09:38,147 diferentes textos cifrados. E então há duas maneiras de fazer isso. O primeiro método é 128 00:09:38,147 --> 00:09:42,836 que é chamado de encriptação aleatória. Aqui, o algoritmo de encriptação si vai 129 00:09:42,836 --> 00:09:47,296 para escolher alguns seqüência aleatória durante o processo de criptografia e vai 130 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 131 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 132 00:09:56,389 --> 00:10:00,894 , mas vai ser mapeado para uma bola toda de textos cifrados. Whereon cada 133 00:10:00,894 --> 00:10:06,692 criptografia, basicamente, mostramos um ponto nesta bola. Então, toda vez que criptografar, o 134 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 135 00:10:11,292 --> 00:10:15,832 um ponto nesta bola. Claro que, o algoritmo de descodificação, quando ela toma qualquer 136 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 137 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 138 00:10:25,449 --> 00:10:29,690 um ponto nesta bola. E estas bolas tem que ser separado, de modo que o 139 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, 140 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 141 00:10:38,964 --> 00:10:43,266 usa aleatoriedade, se cifrar a mesma mensagem duas vezes, com alta probabilidade de que vai 142 00:10:43,266 --> 00:10:47,144 obter textos cifrados diferentes. Infelizmente, isto significa que o texto cifrado 143 00:10:47,144 --> 00:10:51,393 necessariamente tem que ser maior que o texto simples, porque de alguma forma a aleatoriedade 144 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. 145 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 é 146 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 147 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 148 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 149 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 150 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 151 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 152 00:11:26,240 --> 00:11:31,117 bastante caro. Então, como eu digo criptografia randomizado é uma solução bem, mas em alguns 153 00:11:31,117 --> 00:11:35,862 casos que realmente introduz um pouco de custos. Então, vamos olhar para um exemplo simples. 154 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 155 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 156 00:11:46,223 --> 00:11:50,636 espaço. E, agora, vamos definir o esquema de criptografia seguinte randomize 157 00:11:50,636 --> 00:11:55,880 onde queremos para criptografar a mensagem m com a criptografia de tudo o que vai 158 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 159 00:12:01,149 --> 00:12:06,232 para abrir um texto cypher que consistem em dois componentes, o primeiro componente vai 160 00:12:06,232 --> 00:12:10,943 ser este valor R eo segundo componente vai ser uma avaliação de 161 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 162 00:12:16,180 --> 00:12:21,397 você é, isso é o sistema de criptografia semanticamente seguro sob uma planície escolhida 163 00:12:21,397 --> 00:12:26,290 ataque texto. Portanto, a resposta correta é sim. Mas só se o espaço R nonce é grande 164 00:12:26,290 --> 00:12:31,249 o suficiente para que nunca se repete com R pouca probabilidade muito, muito alto. E vamos 165 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 166 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, 167 00:12:41,352 --> 00:12:46,373 este é indistinguível da de caso em que encriptar a mensagem M, usando o 168 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. 169 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 170 00:12:57,320 --> 00:13:03,095 isto significa é que os valores de F (r) são aleatórias uniformes cordas independentes 171 00:13:03,095 --> 00:13:08,818 o tempo todo. Então, toda vez que criptografar uma mensagem, criptografá-lo essencialmente usando um 172 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 173 00:13:14,369 --> 00:13:19,666 simplesmente gera uma nova seqüência de uniforme, o texto cifrado resultante é distribuído como 174 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 175 00:13:24,767 --> 00:13:30,325 experiência zero e no experimento um, tudo o atacante consegue ver são verdadeiramente uniforme 176 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 177 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 178 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 179 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 180 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 181 00:13:55,435 --> 00:13:59,829 segurança deste esquema de criptografia particular. Ok, então agora temos um bom 182 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 183 00:14:04,465 --> 00:14:09,344 texto esquemas de criptografia seguras é o que é chamado de criptografia baseada em nonce. Agora, em 184 00:14:09,344 --> 00:14:14,012 um sistema de criptografia não-espaço, o algoritmo de criptografia realmente leva três 185 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 186 00:14:19,044 --> 00:14:23,773 introduzir um adicional chamado nonce. E da mesma forma, a descriptografia algoritmo também 187 00:14:23,773 --> 00:14:28,683 leva o nonce como entrada, e então produz o texto resultante descriptografado simples. E 188 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 189 00:14:33,529 --> 00:14:38,402 escondida do adversário mas o único requisito é que o par (k, n) 190 00:14:38,402 --> 00:14:43,213 só é usada para criptografar uma mensagem única. Em outras palavras, este par (k, n) 191 00:14:43,213 --> 00:14:48,148 deve mudar de mensagem para mensagem. E há duas maneiras de mudar isso. Uma forma 192 00:14:48,148 --> 00:14:53,144 para mudá-la é escolher uma nova chave aleatória para cada mensagem. Ea outra maneira 193 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 194 00:14:58,276 --> 00:15:02,721 mensagem cada. E, e como eu disse, eu quero enfatizar novamente, desta nonce não precisa 195 00:15:02,721 --> 00:15:06,823 ser secreta, e não precisa ser aleatória. O único requisito é o uso único é único. 196 00:15:06,823 --> 00:15:11,029 E, de fato, vamos usar este termo ao longo do curso. A nonce 197 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 198 00:15:15,247 --> 00:15:19,891 vamos olhar alguns exemplos de escolher um nonce, assim, a opção mais simples é 199 00:15:19,891 --> 00:15:24,255 simplesmente para tornar o nonce do accounter assim, por exemplo a criação de redes 200 00:15:24,255 --> 00:15:28,898 protocolo que você pode imaginar o nonce ser um contador de pacotes que é incrementado 201 00:15:28,898 --> 00:15:33,598 cada vez que um pacote é enviado por um remetente ou recebidos pelo receptor, isto significa que 202 00:15:33,598 --> 00:15:37,962 encriptador tem para manter o estado de mensagem para mensagem, principalmente, que ele tem que 203 00:15:37,962 --> 00:15:42,270 manter esse contador volta e incrementá-lo depois de cada mensagem é transmitida. 204 00:15:42,270 --> 00:15:47,487 Curiosamente, se o decrypter na verdade, tem o mesmo estado, então não há necessidade 205 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 206 00:15:52,705 --> 00:15:57,987 um exemplo. O protocolo https é executado ao longo de um mecanismo de transporte confiável que 207 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 208 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 209 00:16:07,645 --> 00:16:12,068 irá receber pacote # 5 e, em seguida pacote # 6, nessa ordem. Este 210 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 211 00:16:16,215 --> 00:16:20,860 manter um contador de pacotes e dois contadores basicamente incrementar em sincronia. Neste caso 212 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 213 00:16:24,896 --> 00:16:29,476 nonce é implícita entre os dois lados. No entanto, em protocolos de outros, por 214 00:16:29,476 --> 00:16:34,600 exemplo, em IPsec, tem um protocolo IPsec projetada para criptografar a camada IP. O IP 215 00:16:34,600 --> 00:16:39,330 camada não garante a entrega dos pedidos. E assim, o remetente pode enviar 216 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 217 00:16:44,520 --> 00:16:49,164 o destinatário. Neste caso ainda é bom usar um contador de pacotes como um nonce 218 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 219 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 220 00:16:58,102 --> 00:17:02,686 criptografia é uma maneira muito eficiente para atingir CPA segurança. Em particular, se o 221 00:17:02,686 --> 00:17:07,098 nonce é implícita, não mesmo aumentar o comprimento do texto cifrado. Claro 222 00:17:07,098 --> 00:17:11,796 outro método para gerar um único nonce é simplesmente escolher o nonce aleatoriamente 223 00:17:11,796 --> 00:17:16,495 assumindo que o espaço nonce é suficientemente grande para que, com grande probabilidade de o 224 00:17:16,495 --> 00:17:21,579 nonce nunca será repetido para a vida da chave. Agora, neste caso, nonce 225 00:17:21,579 --> 00:17:26,098 criptografia baseada simplesmente reduz a encriptação aleatória. No entanto, o 226 00:17:26,098 --> 00:17:31,600 vantagem aqui é que o remetente não precisa manter todo o estado de mensagem para 227 00:17:31,600 --> 00:17:36,382 mensagem. Então isso é muito útil, por exemplo se a criptografia acontece a tomar 228 00:17:36,382 --> 00:17:41,425 lugar em vários dispositivos. Por exemplo, eu poderia ter um laptop e um inteligente 229 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 230 00:17:46,097 --> 00:17:49,961 criptografia, então meu laptop eo smartphone teria que coordenar a 231 00:17:49,961 --> 00:17:54,302 certifique-se que eles nunca reutilizar os nonces mesmos. Considerando que, se os dois simplesmente tomar 232 00:17:54,302 --> 00:17:58,114 nonces ao acaso, eles não precisam de coordenar porque era muito elevada 233 00:17:58,114 --> 00:18:02,243 probabilidade eles simplesmente nunca escolher o nonce mesmo. Novamente assumindo que o nonce 234 00:18:02,243 --> 00:18:06,478 espaço é grande o suficiente. Então, existem alguns casos onde a criptografia apátrida é bastante 235 00:18:06,478 --> 00:18:10,562 importante, nomeadamente quando a mesma chave é utilizada por várias máquinas. Então, eu 236 00:18:10,562 --> 00:18:14,492 queria encontrar, mais precisamente, o que significa segurança para nonce base 237 00:18:14,492 --> 00:18:18,694 criptografia. E, em particular, quero enfatizar que o sistema deve permanecer 238 00:18:18,694 --> 00:18:23,122 seguro quando o nonce são escolhidos pelo adversário. A razão é importante 239 00:18:23,122 --> 00:18:27,027 para permitir que o adversário para escolher os nonces é porque o adversário pode 240 00:18:27,027 --> 00:18:31,090 escolher qual texto cifrado ele quer atacar. Então, imagine o nonce acontece 241 00:18:31,090 --> 00:18:35,364 ser um contador e acontece que, quando o couter atinge o valor 15, talvez 242 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 243 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 244 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 245 00:18:48,076 --> 00:18:52,806 geralmente permitem que o adversário para escolher o nonce eo sistema deve permanecer 246 00:18:52,806 --> 00:18:57,772 garantir, mesmo sob essas configurações. Portanto, vamos definir o jogo CPA neste caso e é 247 00:18:57,772 --> 00:19:02,442 realmente muito parecido com o jogo antes. Basicamente, o atacante começa a apresentar 248 00:19:02,442 --> 00:19:06,935 pares de mensagens IM, MI0, e MI1. Obviamente que ambos têm de ser do mesmo 249 00:19:06,935 --> 00:19:11,576 comprimento. E ele começa a fornecer o nonce. E em resposta, o adversário é dada 250 00:19:11,576 --> 00:19:16,304 a criptografia de qualquer MI0, ou MI1. Mas usando o nonce que o adversário 251 00:19:16,304 --> 00:19:20,740 escolheu. E, claro, como de costume, o objetivo do adversário é para dizer se ele era 252 00:19:20,740 --> 00:19:25,096 dada a criptografia do texto simples esquerda ou direita o texto sem formatação. E como 253 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 254 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 255 00:19:33,610 --> 00:19:37,956 questões adversário. Agora, a única restrição de curso, que é crucial, é que 256 00:19:37,956 --> 00:19:42,329 embora o adversário começa a escolher os nonces, ele está restrito a escolher 257 00:19:42,329 --> 00:19:46,758 nonces distintas. A razão por que obrigá-lo a escolher nonces distintos é porque 258 00:19:46,758 --> 00:19:50,959 essa é a exigência na prática. Mesmo que os tolos adversário Alice em 259 00:19:50,959 --> 00:19:55,161 criptografar várias mensagens para ele, Alice nunca vai usar o mesmo nonce 260 00:19:55,161 --> 00:19:59,477 novamente. Como resultado, o adversário nunca verá mensagens criptografadas usando o 261 00:19:59,477 --> 00:20:03,678 nonce mesma e, portanto, mesmo no jogo, é necessário que todos nonce ser 262 00:20:03,678 --> 00:20:08,305 distinta. E então, como sempre dizemos que o sistema é uma criptografia baseada em nonce 263 00:20:08,305 --> 00:20:13,412 sistema que é, semanticamente seguro sob um ataque de texto simples escolhido se o adversário 264 00:20:13,421 --> 00:20:17,890 não consegue distinguir de zero experimento onde ele deu criptografias de esquerda 265 00:20:17,890 --> 00:20:22,593 mensagens de um experimento onde ele deu criptografias das mensagens certas. 266 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 267 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 268 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 269 00:20:36,823 --> 00:20:41,006 para ser zero. E agora vamos criptografar a mensagem M particular, o que vamos fazer é 270 00:20:41,006 --> 00:20:45,103 vamos incrementar o nosso contador de R, e depois criptografar a mensagem M utilizando o 271 00:20:45,103 --> 00:20:49,481 função pseudo aplicada a este valor R. E, como antes, o texto cifra é 272 00:20:49,481 --> 00:20:53,859 vai conter dois componentes, o nosso valor actual do contador e, em seguida, os 273 00:20:53,859 --> 00:20:58,518 uma criptografia pad hora da mensagem M. E por isso a minha pergunta é se este 274 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 275 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á 276 00:21:08,485 --> 00:21:13,284 ciclo volta a zero de modo que as nuances sempre, sempre ser único. Argumentamos 277 00:21:13,284 --> 00:21:18,020 segurança da mesma maneira como antes. Porque a PRF é segura, sabemos que este 278 00:21:18,020 --> 00:21:22,819 sistema de criptografia é indistinguível de usar uma função verdadeiramente aleatório. Em 279 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 280 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 281 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 282 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 283 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 284 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 285 00:21:52,751 --> 00:21:57,408 adversário se é para ver exatamente a mesma distribuição, ou seja, as respostas a todos 286 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 287 00:22:02,064 --> 00:22:06,950 distribuído e isso é basicamente o mesmo em zero experimentar e experimentar um e, 288 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 289 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 290 00:22:16,206 --> 00:22:20,517 o jogo de segurança semântica com a PRF seguro, e, por conseguinte, o sistema é 291 00:22:20,517 --> 00:22:25,222 seguro. Portanto, agora entendemos o que significa para um sistema simétrico para ser seguro quando 292 00:22:25,222 --> 00:22:30,091 as chaves usadas para criptografar mensagens múltiplas a exigência é que seja seguro e sob 293 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 294 00:22:34,777 --> 00:22:39,289 um ataque de texto simples ou é escolhido para usar a criptografia randomizado, ou de usar, usar 295 00:22:39,289 --> 00:22:43,462 criptografia nonce espaço onde nunca o nonce repete. E em seguida, na 296 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 297 00:22:48,143 --> 00:22:50,174 quando a chave é usada várias vezes.