[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:04.05,Default,,0000,0000,0000,,Agora que sabemos o que MACs são, vamos em frente e construir nossos primeiros MACs seguras. Dialogue: 0,0:00:04.05,0:00:08.47,Default,,0000,0000,0000,,Primeiro quero lembrá-lo que um MAC é um par de algoritmos. A primeira é uma sessão de autógrafos Dialogue: 0,0:00:08.47,0:00:12.92,Default,,0000,0000,0000,,algoritmo que é dada uma mensagem e uma chave irá gerar uma etiqueta correspondente eo Dialogue: 0,0:00:12.92,0:00:17.10,Default,,0000,0000,0000,,segundo é algoritmos de verificação é dada uma mensagem de chave e um tag enquanto Dialogue: 0,0:00:17.10,0:00:21.74,Default,,0000,0000,0000,,saídas zero ou um, dependendo se a etiqueta é válido ou não. E nós dissemos que Dialogue: 0,0:00:21.74,0:00:26.31,Default,,0000,0000,0000,,um MAC é seguro se é existencialmente falsificáveis em um ataque de mensagem escolhida. Dialogue: 0,0:00:26.31,0:00:30.89,Default,,0000,0000,0000,,Em outras palavras, os atacantes permitem montar um ataque mensagem escolhida onde ele pode Dialogue: 0,0:00:30.89,0:00:35.30,Default,,0000,0000,0000,,enviar mensagens arbitrárias de sua escolha e obter as marcas correspondentes para Dialogue: 0,0:00:35.30,0:00:39.52,Default,,0000,0000,0000,,essas mensagens, e depois, apesar da capacidade de gerar etiquetas arbitrárias A Dialogue: 0,0:00:39.52,0:00:43.62,Default,,0000,0000,0000,,atacante não pode criar um par de mensagem de marca-novo que não foi dado a ele Dialogue: 0,0:00:43.62,0:00:47.98,Default,,0000,0000,0000,,durante o ataque mensagem escolhida. Ok então já vimos esta definição, no Dialogue: 0,0:00:47.98,0:00:52.18,Default,,0000,0000,0000,,último segmento e agora a questão é como vamos construir MACs seguras? Assim, o primeiro Dialogue: 0,0:00:52.18,0:00:57.22,Default,,0000,0000,0000,,exemplo, eu quero te dar é, basicamente, mostrando que qualquer PRF seguro diretamente dá Dialogue: 0,0:00:57.22,0:01:01.95,Default,,0000,0000,0000,,-nos um MAC seguro também. Então vamos ver como fazemos. Assim, suponha que temos um pseudo Dialogue: 0,0:01:01.95,0:01:06.81,Default,,0000,0000,0000,,função aleatória para a função pseudo-aleatório e tem entradas e saídas em X Dialogue: 0,0:01:06.81,0:01:12.17,Default,,0000,0000,0000,,Y. E vamos definir o MAC seguinte. Então, a nossa forma de assinar 'M' é basicamente uma mensagem Dialogue: 0,0:01:12.17,0:01:17.18,Default,,0000,0000,0000,,, basta avaliar a função de 'M' o ponto Assim, a tag para a mensagem M é Dialogue: 0,0:01:17.18,0:01:21.35,Default,,0000,0000,0000,,simplesmente o valor da função no ponto M e em seguida, a maneira como verificar uma Dialogue: 0,0:01:21.35,0:01:26.01,Default,,0000,0000,0000,,mensagem para que o par é por recomputing o valor da função na mensagem M e Dialogue: 0,0:01:26.01,0:01:30.28,Default,,0000,0000,0000,,verificação se que é igual à tag que nos foi dado. Nós dizemos que sim, se assim e nós Dialogue: 0,0:01:30.28,0:01:34.68,Default,,0000,0000,0000,,rejeitar o contrário. Então aqui você tem basicamente em imagens que, quando Alice quer Dialogue: 0,0:01:34.68,0:01:39.02,Default,,0000,0000,0000,,para enviar uma mensagem para Bob, ela calcula uma tag pelo valor da PRF e então ela Dialogue: 0,0:01:39.02,0:01:43.25,Default,,0000,0000,0000,,acrescenta esta tag com a mensagem, Bob recebe o par guia correspondente, ele Dialogue: 0,0:01:43.25,0:01:47.82,Default,,0000,0000,0000,,recomputes o valor da função e testa se a etiqueta dada é realmente Dialogue: 0,0:01:47.82,0:01:52.73,Default,,0000,0000,0000,,igual ao valor da função no ponto M. Então, vamos olhar para um mau exemplo de Dialogue: 0,0:01:52.73,0:01:57.83,Default,,0000,0000,0000,,esta instrução. E assim supor que temos uma função pseudo-aleatório que acontece Dialogue: 0,0:01:57.83,0:02:02.87,Default,,0000,0000,0000,,para a saída de apenas 10 bits. Ok, então esta é uma função pseudo-aleatória bem e isso só Dialogue: 0,0:02:02.87,0:02:07.67,Default,,0000,0000,0000,,Acontece que para 'M' qualquer mensagem que ele só gera 10 valor bits. A minha pergunta Dialogue: 0,0:02:07.67,0:02:12.46,Default,,0000,0000,0000,,para você é se usar 'F' esta função para construir um MAC, é que vai ser um Dialogue: 0,0:02:12.46,0:02:17.18,Default,,0000,0000,0000,,MAC é seguro? Portanto, a resposta é não, este MAC é inseguro. Em particular, porque o Dialogue: 0,0:02:17.18,0:02:21.47,Default,,0000,0000,0000,,tags são muito curta. Por isso, considero o adversário seguinte simples. O que o Dialogue: 0,0:02:21.47,0:02:26.12,Default,,0000,0000,0000,,adversário vai fazer é simplesmente escolher uma mensagem arbitrária M e apenas acho que a Dialogue: 0,0:02:26.12,0:02:30.77,Default,,0000,0000,0000,,valor do MAC para que a mensagem particular. Agora, porque a etiqueta só é 10 Dialogue: 0,0:02:30.77,0:02:35.18,Default,,0000,0000,0000,,bits de comprimento, o adversário tem a chance de um em cada dois a 10 em adivinhar o MAC Dialogue: 0,0:02:35.18,0:02:40.00,Default,,0000,0000,0000,,corretamente. Em outras palavras, a vantagem de o adversário supondo, um distintamente Dialogue: 0,0:02:40.00,0:02:44.35,Default,,0000,0000,0000,,palpites tag aleatória para uma determinada mensagem. Que o adversário vai ter um Dialogue: 0,0:02:44.35,0:02:48.90,Default,,0000,0000,0000,,vantagem contra o mac que é basicamente um espaço de dois a dez, que é uma mais Dialogue: 0,0:02:48.90,0:02:52.96,Default,,0000,0000,0000,,mil 24 e que é definitivamente não negligenciável. Assim, o adversário Dialogue: 0,0:02:52.96,0:02:57.35,Default,,0000,0000,0000,,basicamente vai conseguir forjar o mac em uma determinada mensagem com probabilidade um Dialogue: 0,0:02:57.35,0:03:01.84,Default,,0000,0000,0000,,em mil que é inseguro. No entanto, acontece que este é o único exemplo que Dialogue: 0,0:03:01.84,0:03:06.28,Default,,0000,0000,0000,,onde as coisas podem dar errado, só quando a saída da função é pequena lata coisas Dialogue: 0,0:03:06.28,0:03:10.54,Default,,0000,0000,0000,,dar errado. Se a saída do PRF é grande, então obtemos um MAC seguro para fora deste Dialogue: 0,0:03:10.54,0:03:14.34,Default,,0000,0000,0000,,função. E vamos indicar o teorema de segurança aqui. Assim, suponha que temos um Dialogue: 0,0:03:14.34,0:03:18.26,Default,,0000,0000,0000,,'F' função que recebe as mensagens em 'X' e produz etiquetas em 'Y', então o MAC Dialogue: 0,0:03:18.26,0:03:22.59,Default,,0000,0000,0000,,que é derivado dessa PRF na verdade é um MAC segura. Em particular, se você olhar para Dialogue: 0,0:03:22.59,0:03:26.80,Default,,0000,0000,0000,,teorema de segurança aqui, você vai ver muito claramente os limites da época, em outras palavras Dialogue: 0,0:03:26.80,0:03:31.18,Default,,0000,0000,0000,,desde a PRF é seguro sabemos que essa quantidade aqui é insignificante. E assim se Dialogue: 0,0:03:31.18,0:03:35.40,Default,,0000,0000,0000,,quer esta quantidade para ser insignificante, é isso que queremos, queremos dizer que não Dialogue: 0,0:03:35.40,0:03:39.66,Default,,0000,0000,0000,,adversário pode derrotar o MAC 'Eu sub F', que implica que queremos que esta quantidade de Dialogue: 0,0:03:39.66,0:03:43.72,Default,,0000,0000,0000,,ser insignificante, em outras palavras, queremos que o espaço de saída a ser grandes. E assim por Dialogue: 0,0:03:43.72,0:03:48.10,Default,,0000,0000,0000,,exemplo, tomar um PRF que produz oitenta bits é perfeitamente bem. Que vai gerar Dialogue: 0,0:03:48.10,0:03:52.10,Default,,0000,0000,0000,,um 80 bits MAC e, portanto, a vantagem de qualquer adversário será no máximo Dialogue: 0,0:03:52.10,0:03:56.52,Default,,0000,0000,0000,,um sobre dois para o 80. Então, agora a prova deste teorema é muito simples, então vamos Dialogue: 0,0:03:56.52,0:04:00.91,Default,,0000,0000,0000,,apenas ir em frente e fazê-lo. Então, na verdade vamos começar dizendo que supor em vez de um Dialogue: 0,0:04:00.91,0:04:05.45,Default,,0000,0000,0000,,PRF temos uma função verdadeiramente aleatório partir do espaço mensagem para o espaço tag de modo que este Dialogue: 0,0:04:05.45,0:04:10.09,Default,,0000,0000,0000,,é apenas uma função aleatória de X para Y que é escolhido aleatoriamente do conjunto de Dialogue: 0,0:04:10.09,0:04:14.97,Default,,0000,0000,0000,,todas essas funções. Agora vamos ver se essa função pode nos dar um mac seguro. Então, o que Dialogue: 0,0:04:14.97,0:04:19.55,Default,,0000,0000,0000,,o adversário diz é: 'Eu quero um tag no M1 mensagem ". O que ele recebe de volta é o Dialogue: 0,0:04:19.55,0:04:24.16,Default,,0000,0000,0000,,tag que só acontece de ser a função avaliada no ponto M1. Observe que há Dialogue: 0,0:04:24.16,0:04:28.49,Default,,0000,0000,0000,,chave nenhuma aqui porque F é apenas uma função verdadeiramente aleatório de X a Y. E então o Dialogue: 0,0:04:28.49,0:04:33.10,Default,,0000,0000,0000,,adversário começa a escolher uma mensagem de M2 e ele obtém a marca de M2, que ele escolher Dialogue: 0,0:04:33.10,0:04:37.26,Default,,0000,0000,0000,,M3, M4 até MQ e ele obtém todas as tags correspondentes. Agora seu objetivo é Dialogue: 0,0:04:37.26,0:04:41.43,Default,,0000,0000,0000,,produzir um par de tags mensagem e dizemos que ele ganha, lembre-se que esta é uma Dialogue: 0,0:04:41.43,0:04:45.89,Default,,0000,0000,0000,,falsificação existencial, por outras palavras, antes de tudo T tem de ser igual a F de M Esta Dialogue: 0,0:04:45.89,0:04:49.97,Default,,0000,0000,0000,,significa que 'T' é uma tag válida para 'M' da mensagem. E em segundo lugar, o Dialogue: 0,0:04:49.97,0:04:54.68,Default,,0000,0000,0000,,mensagem 'M' tem que ser novo. Então, 'M' a mensagem de que é melhor não ser um dos M-um a MQ. Dialogue: 0,0:04:54.68,0:04:58.88,Default,,0000,0000,0000,,Mas vamos pensar sobre isso por um minuto, o que significa isso? Assim, o Dialogue: 0,0:04:58.88,0:05:03.83,Default,,0000,0000,0000,,adversário tem que ver o valor de uma função verdadeiramente aleatório nos pontos M-um para MQ Dialogue: 0,0:05:03.83,0:05:08.80,Default,,0000,0000,0000,,e agora ele? s supor para prever o valor desta função como algum ponto novo, M Dialogue: 0,0:05:08.80,0:05:13.41,Default,,0000,0000,0000,,No entanto, para uma função verdadeiramente aleatório, o valor da função no ponto M é Dialogue: 0,0:05:13.41,0:05:18.20,Default,,0000,0000,0000,,independente de seu valor no M-1 aponta para MQ. Então o melhor que o adversário pode fazer Dialogue: 0,0:05:18.20,0:05:22.75,Default,,0000,0000,0000,,em prever o valor da função no ponto M é apenas adivinhar o valor, Dialogue: 0,0:05:22.75,0:05:27.30,Default,,0000,0000,0000,,porque ele não tem informações sobre o F de M. E como resultado a sua vantagem se ele Dialogue: 0,0:05:27.30,0:05:31.62,Default,,0000,0000,0000,,adivinha o valor da função no ponto M, ele vai adivinhar direito com Dialogue: 0,0:05:31.62,0:05:36.29,Default,,0000,0000,0000,,probabilidade exatamente um sobre o Y. E, então, a marca que ele produziu será correta Dialogue: 0,0:05:36.29,0:05:40.58,Default,,0000,0000,0000,,com probabilidade exatamente um sobre o Y. Ok, mais uma vez que não tinha informações sobre o Dialogue: 0,0:05:40.58,0:05:44.80,Default,,0000,0000,0000,,valor da função de M e por isso o melhor que ele poderia fazer é adivinhar. E se adivinha, Dialogue: 0,0:05:44.80,0:05:49.35,Default,,0000,0000,0000,,ele vai acertar com probabilidade um sobre Y. E agora, claro, porque o Dialogue: 0,0:05:49.35,0:05:54.42,Default,,0000,0000,0000,,F de capital é uma função pseudo-aleatório O adversário vai se comportar o Dialogue: 0,0:05:54.42,0:05:58.56,Default,,0000,0000,0000,,mesmo se lhe dermos a função verdadeiramente aleatório ou a função pseudo-aleatório. Dialogue: 0,0:05:58.56,0:06:02.66,Default,,0000,0000,0000,,O adversário não pode dizer a diferença e, como resultado mesmo se usarmos um pseudo Dialogue: 0,0:06:02.66,0:06:06.60,Default,,0000,0000,0000,,função aleatória, o adversário vai ter vantagens em mais um sobre Y em Dialogue: 0,0:06:06.60,0:06:10.77,Default,,0000,0000,0000,,ganhar o jogo. Ok, então você pode ver exatamente o teorema de segurança, vamos Dialogue: 0,0:06:10.77,0:06:15.56,Default,,0000,0000,0000,,lá por apenas um segundo. Essencialmente, este é basicamente por isso que nós temos um termo de erro Dialogue: 0,0:06:15.56,0:06:20.00,Default,,0000,0000,0000,,de um sobre Y por causa do ataque de adivinhação e essa é a única maneira que o Dialogue: 0,0:06:20.00,0:06:24.73,Default,,0000,0000,0000,,atacante pode ganhar o jogo. Portanto, agora que sabemos que qualquer PRF seguro é também um seguro Dialogue: 0,0:06:24.73,0:06:29.12,Default,,0000,0000,0000,,MAC, já sabemos que temos o nosso primeiro exemplo MAC. Em particular, nós conhecemos Dialogue: 0,0:06:29.12,0:06:33.68,Default,,0000,0000,0000,,que AES, ou, pelo menos, acreditamos que AES é uma PRF segura, por conseguinte, uma vez que AES Dialogue: 0,0:06:33.68,0:06:38.01,Default,,0000,0000,0000,,tem dezesseis entradas de bytes, o direito do espaço mensagem para AES é 128 bits, o que Dialogue: 0,0:06:38.01,0:06:43.21,Default,,0000,0000,0000,,é de dezesseis bytes. Portanto, a cifra AES essencialmente nos dá um MAC que pode corresponder Dialogue: 0,0:06:43.21,0:06:48.14,Default,,0000,0000,0000,,mensagens que são exatamente dezesseis bytes. Ok, então esse é o nosso primeiro exemplo de uma Dialogue: 0,0:06:48.14,0:06:53.26,Default,,0000,0000,0000,,MAC. Mas agora a questão é se temos uma PRF para entradas pequenas como AES que só Dialogue: 0,0:06:53.26,0:06:58.56,Default,,0000,0000,0000,,atua em dezesseis bytes, podemos construir um MAC para mensagens grandes, que podem atuar em gigabytes Dialogue: 0,0:06:58.56,0:07:02.07,Default,,0000,0000,0000,,de dados? Às vezes eu chamo este problema, o McDonalds. Basicamente dada uma Dialogue: 0,0:07:02.07,0:07:05.87,Default,,0000,0000,0000,,MAC pequeno e vamos construir um Big Mac de fora. Em outras palavras, dado um MAC para pequena Dialogue: 0,0:07:05.87,0:07:10.23,Default,,0000,0000,0000,,mensagens e que construímos um MAC para mensagens grandes. Então, vamos olhar para dois Dialogue: 0,0:07:10.23,0:07:14.84,Default,,0000,0000,0000,,construções para o fazer. O primeiro exemplo é chamado um MAC CBC que novamente Dialogue: 0,0:07:14.84,0:07:19.32,Default,,0000,0000,0000,,leva PRF para pequenas mensagens como entrada e produz uma PRF para muito grande Dialogue: 0,0:07:19.32,0:07:23.69,Default,,0000,0000,0000,,mensagens. Como saídas. O segundo, vamos ver é HMAC que faz a mesma coisa Dialogue: 0,0:07:23.69,0:07:28.28,Default,,0000,0000,0000,,novamente leva um PRF para entradas pequenas e gera uma PRF para entradas muito grandes. Agora Dialogue: 0,0:07:28.28,0:07:32.05,Default,,0000,0000,0000,,os dois são utilizados em contextos muito diferentes. CBC-MAC é realmente muito Dialogue: 0,0:07:32.05,0:07:36.32,Default,,0000,0000,0000,,comumente usada no setor bancário. Por exemplo, há um sistema chamado Dialogue: 0,0:07:36.32,0:07:40.80,Default,,0000,0000,0000,,Automatic Clearing House, ACH, que os bancos usam para limpar cheques um com o outro e Dialogue: 0,0:07:40.80,0:07:44.79,Default,,0000,0000,0000,,sistema que, CBC-MAC, é utilizado para garantir a integridade dos controlos, tal como eles são Dialogue: 0,0:07:44.79,0:07:49.11,Default,,0000,0000,0000,,transferido de banco para banco. Na Internet, protocolos como SSL e IPsec e Dialogue: 0,0:07:49.11,0:07:53.17,Default,,0000,0000,0000,,SSH, aqueles HMAC todos os usos de integridade. Dois MACs diferentes e ia discuti-los Dialogue: 0,0:07:53.17,0:07:57.09,Default,,0000,0000,0000,,no próximo par de segmentos. E como eu disse também vai começar a partir de uma PRF para Dialogue: 0,0:07:57.09,0:08:01.27,Default,,0000,0000,0000,,pequenas mensagens e produzem PRF para mensagens que são gigabytes de comprimento e em Dialogue: 0,0:08:01.27,0:08:06.04,Default,,0000,0000,0000,,particular, eles podem tanto ser fundamentada com a AES como a cifra subjacente. Assim, o Dialogue: 0,0:08:06.04,0:08:10.60,Default,,0000,0000,0000,,último comentário eu quero fazer sobre estes baseado PRF MACs é que de fato o seu Dialogue: 0,0:08:10.60,0:08:15.27,Default,,0000,0000,0000,,saída pode ser truncado. Assim, suponha que temos um PRF que as saídas de N saídas bit. Assim Dialogue: 0,0:08:15.27,0:08:19.94,Default,,0000,0000,0000,,novamente para AES este seria um PRF que gera 128 bits como saídas. Sua fácil Dialogue: 0,0:08:19.94,0:08:24.91,Default,,0000,0000,0000,,lema para mostrar que de fato se você tiver um pouco PRF N se truncado, em outras palavras Dialogue: 0,0:08:24.91,0:08:31.06,Default,,0000,0000,0000,,, se você só saída primeiros bits de chave O resultado é também um seguro PRF e do Dialogue: 0,0:08:31.06,0:08:36.53,Default,,0000,0000,0000,,intuição aqui é se as grandes saídas PRF N bits de aleatoriedade para todas as entradas que você Dialogue: 0,0:08:36.53,0:08:42.06,Default,,0000,0000,0000,,dar à PRF então certamente cortar-lo e truncando-lo em pedaços T ainda é Dialogue: 0,0:08:42.06,0:08:46.57,Default,,0000,0000,0000,,vai parecer aleatória. O atacante agora recebe menos informações para seu trabalho de Dialogue: 0,0:08:46.57,0:08:51.66,Default,,0000,0000,0000,,distinguir as saídas de aleatório só se tornou mais difícil. Em outras palavras, se o Dialogue: 0,0:08:51.66,0:08:56.74,Default,,0000,0000,0000,,bit N PRF é seguro, então o bit menos de T N PRF, a PRF truncado, também Dialogue: 0,0:08:56.74,0:09:01.18,Default,,0000,0000,0000,,ser seguro. Portanto, este é um lema fácil e seguro já que qualquer PRF também nos dá uma Dialogue: 0,0:09:01.18,0:09:05.99,Default,,0000,0000,0000,,seguro MAC, o que isto significa é que se você me der um MAC que é baseado em uma PRF eo que eu Dialogue: 0,0:09:05.99,0:09:10.69,Default,,0000,0000,0000,,pode fazer é I pode truncar-lo em pedaços W, no entanto, por causa do termo de erro na Dialogue: 0,0:09:10.86,0:09:15.38,Default,,0000,0000,0000,,MAC teorema PRF baseado sabemos que truncando em pedaços W só será seguro Dialogue: 0,0:09:15.38,0:09:19.95,Default,,0000,0000,0000,,enquanto uma sobre dois para a W é negligenciável. Então, se você truncar a PRF para Dialogue: 0,0:09:19.95,0:09:24.41,Default,,0000,0000,0000,,apenas três bits, o MAC resultante não vai ser seguro. No entanto, se você Dialogue: 0,0:09:24.41,0:09:29.22,Default,,0000,0000,0000,,truncar dizer 80 bits ou talvez mesmo 64 bits, então o MAC resultante é ainda Dialogue: 0,0:09:29.22,0:09:33.97,Default,,0000,0000,0000,,vai ser um MAC segura. Ok, então a coisa a lembrar aqui é que, embora Dialogue: 0,0:09:33.97,0:09:39.24,Default,,0000,0000,0000,,usar AES para construir PRF maiores ea saída destes PRF vai ser de 128 bits, Dialogue: 0,0:09:39.24,0:09:44.12,Default,,0000,0000,0000,,isso não significa que o MAC se tem para produzir 128 etiquetas bits podemos sempre Dialogue: 0,0:09:44.12,0:09:48.55,Default,,0000,0000,0000,,truncar as saídas para 90 bits ou 80 bits, e como resultado, gostaríamos de obter ainda Dialogue: 0,0:09:48.55,0:09:53.10,Default,,0000,0000,0000,,MACs seguros, mas agora a marca de saída vai ser o tamanho mais razoável e não Dialogue: 0,0:09:53.10,0:09:57.70,Default,,0000,0000,0000,,têm que ser os completa de 128 bits. Ok, então no próximo segmento nós vamos olhar como Dialogue: 0,0:09:57.70,0:09:58.73,Default,,0000,0000,0000,,o CBC-MAC funciona.