WEBVTT 00:00:00.000 --> 00:00:04.069 Neste segmento, nós vamos olhar para o protocolo Diffie-Hellman, que é nosso 00:00:04.069 --> 00:00:08.234 mecanismo primeira troca prático chave. Então deixe-me lembrá-lo das configurações. Nosso 00:00:08.234 --> 00:00:12.442 amigos aqui, Alice e Bob, nunca se encontraram e ainda eles querem uma troca compartilhada 00:00:12.442 --> 00:00:16.445 chave secreta que eles podem então usar para comunicar de forma segura com o outro. 00:00:16.445 --> 00:00:20.088 Nesse segmento e no próximo, estamos só vai estar a olhar para escutas 00:00:20.088 --> 00:00:23.937 segurança. Em outras palavras, estamos preocupados apenas com os bisbilhoteiros. Os atacantes são 00:00:23.937 --> 00:00:27.992 na verdade, não permitiu a mexer com os dados na rede. Eles não estão autorizados a 00:00:27.992 --> 00:00:32.046 injetar pacotes. Eles não estão autorizados a mudar os pacotes de forma alguma. Tudo o que fazem é 00:00:32.046 --> 00:00:36.336 apenas para espionar o tráfego. E no final do protocolo, a troca da chave 00:00:36.336 --> 00:00:40.880 protocolo nossos amigos Alice e Bob deve ter uma chave secreta compartilhada, mas o atacante 00:00:40.880 --> 00:00:45.031 ou seja, o intruso não tem idéia do que essa chave que vai ser. No anterior 00:00:45.031 --> 00:00:49.343 segmento olhamos para um segmento-chave chamados puzzles Merkle. Isso é apenas usando bloco 00:00:49.343 --> 00:00:53.708 cifras ou funções de hash. E mostrei-lhe que há que, basicamente, o atacante 00:00:53.708 --> 00:00:57.487 tem uma diferença de quadrática em comparação com os participantes. Em outras palavras, se o 00:00:57.487 --> 00:01:01.799 participantes passou um tempo proporcional a N o atacante pode quebrar o protocolo em 00:01:01.799 --> 00:01:06.163 tempo proporcional a N quadrado. E, como resultado desse protocolo é inseguro para ser 00:01:06.163 --> 00:01:10.369 considerado prático. Neste segmento nós vamos perguntar se podemos fazer o 00:01:10.369 --> 00:01:14.733 mesma coisa, mas agora gostaríamos de alcançar uma lacuna entre o exponencial do atacante 00:01:14.733 --> 00:01:19.051 trabalho acabou no trabalho do participante. Em outras palavras, Alice e Bob pode fazer 00:01:19.051 --> 00:01:23.602 trabalho proporcional a N, mas para quebrar o protocolo que o atacante vai ter que fazer 00:01:23.602 --> 00:01:27.876 trabalho proporcional a alguma exponencial em N. Então agora há uma lacuna exponencial 00:01:27.876 --> 00:01:32.702 entre o trabalho participantes eo trabalho do atacante. Então, como eu disse no 00:01:32.702 --> 00:01:37.985 segmento anterior não podemos alcançar esta lacuna exponencial a partir de cifras do blog como AES 00:01:37.985 --> 00:01:43.143 ou SHA-256. Temos que usar os problemas difíceis que têm mais estrutura do que apenas aqueles 00:01:43.143 --> 00:01:48.714 primitivas simétricas. E assim, em vez o que vamos fazer é usar um pouco de álgebra. 00:01:48.714 --> 00:01:51.600 Nesse segmento eu vou descrever o protocolo Diffie-Hellman muito 00:01:51.600 --> 00:01:55.769 concreta e um pouco informal. Quando nós vamos voltar a Diffie-Hellman na próxima semana 00:01:55.769 --> 00:02:00.090 e nós vamos descrever o protocolo de forma mais abstrata e nós vamos fazer um mais muito 00:02:00.090 --> 00:02:04.198 análise de segurança rigoroso do presente protocolo. Ok, então como é Diffie-Hellman 00:02:04.198 --> 00:02:08.173 trabalho? O que vamos fazer é, em primeiro lugar, nós vamos corrigir alguns principal grande 00:02:08.334 --> 00:02:12.684 que eu vou chamar p. Na verdade p eu costumo usar para designar primos. E você 00:02:12.684 --> 00:02:16.820 deve estar pensando de primos realmente gigantescas. Como, primos que são compostas de 00:02:16.820 --> 00:02:21.009 600 dígitos são assim. E apenas para aqueles de vocês que gostam de pensar em binário, a 600 00:02:21.009 --> 00:02:25.413 primeiro dígito corresponde aproximadamente a cerca de 2000 bits. Então, basta escrever o primeiro 00:02:25.413 --> 00:02:29.932 leva cerca de dois bits quilo de dados. E então nós estamos também vai corrigir um inteiro g 00:02:29.932 --> 00:02:35.067 que acontece a viver na faixa de um a p. Assim, estes valores p e g são parâmetros 00:02:35.067 --> 00:02:40.014 do protocolo Diffie-Hellman. Eles são escolhidos uma vez e eles estão fixados para sempre. Agora 00:02:40.014 --> 00:02:45.087 protocolo funciona da seguinte forma. Então aqui está o nosso amigos Alice e Bob. Então, o que Alice 00:02:45.087 --> 00:02:50.347 vai fazer é ela vai começa por escolher um número aleatório um na faixa de 1 a p-1 00:02:50.347 --> 00:02:55.420 E então ela vai calcular o g número à potência de um modulo p. 00:02:55.420 --> 00:02:59.802 Ok, então ela calcula este exponention, e reduz o resultado modular o primo p. 00:02:59.802 --> 00:03:04.407 E nós estamos realmente indo para ver como calcular isso de forma eficiente o módulo seguinte, 00:03:04.407 --> 00:03:07.817 para agora, apenas acredite que este cálculo pode ser feito de forma eficiente. 00:03:07.817 --> 00:03:13.118 Agora, vamos chamá-capital de um resultado deste valor. Então, o que Alice vai fazer é que ela vai 00:03:13.118 --> 00:03:17.501 enviar maiúsculo sobre a Bob. Agora Bob vai fazer a mesma coisa. Ele vai 00:03:17.501 --> 00:03:22.161 escolher um número aleatório b na gama de 1 a p-1. Ele vai calcular g para 00:03:22.161 --> 00:03:26.322 módulo de b p e vamos chamar esse número B e vai para enviar esta 00:03:26.322 --> 00:03:31.114 B número sobre para Alice. Então, Alice envia para Bob A. Bob envia B. Para Alice. E agora 00:03:31.114 --> 00:03:36.848 eles afirmam que podem gerar uma chave secreta compartilhada. Então, o que é uma chave secreta compartilhada? 00:03:36.848 --> 00:03:41.968 Bem, ele é definido como. Vamos chamá-lo K_AB. E é basicamente definida como a 00:03:41.968 --> 00:03:47.410 g valor para a energia de um b vezes. Agora, a observação surpreendente de Diffie-Hellman teve 00:03:47.410 --> 00:03:53.040 em 1976 é que, de facto, ambas as partes podem calcular este valor para o g ab. 00:03:53.040 --> 00:03:58.738 Então vamos ver, Alice pode calcular este valor, porque ela pode levá-la B valor que ela 00:03:58.738 --> 00:04:04.232 recebeu de Bob. Ela pode tomar este valor B, aumentá-lo para o poder de um e, vamos 00:04:04.232 --> 00:04:09.116 ver, o que ela vai conseguir é g a b para o poder do b. E pelas regras do 00:04:09.116 --> 00:04:14.935 exponenciação, g para o poder de b para o poder de a é igual a G para o ab. Prumo 00:04:14.935 --> 00:04:19.986 despeja, pode fazer algo semelhante, por isso seu objetivo é calcular g para o um a b, 00:04:19.986 --> 00:04:24.972 que por sua vez, é g ao ab, então Alice e Bob terá computadorizada K_AB, e 00:04:24.972 --> 00:04:32.567 deixe-me perguntar, como é que Bob realmente calcular esta quantidade g para a ab? 00:04:32.567 --> 00:04:37.894 Bem por isso tudo que ele faz é que ele leva o valor de que ele recebeu de Alice e ele levanta-lo para 00:04:37.894 --> 00:04:43.412 seu b próprio segredo e que lhe dá o g secreta compartilhada para o ab. Assim você pode ver 00:04:43.412 --> 00:04:48.450 agora que ambas as partes, embora aparentemente calculado valores diferentes. Em 00:04:48.450 --> 00:04:53.495 fato de que ambos acabam com o mesmo valor ou seja, g ab módulo p. Devo mencionar por 00:04:53.495 --> 00:04:57.703 maneira que Martie Hellman e Diffiie peruca veio com este protocolo de volta 00:04:57.703 --> 00:05:01.752 1976. Martie Hellman foi um professor aqui na Universidade de Stanford e Diffie peruca era o seu 00:05:01.752 --> 00:05:06.120 estudante de graduação. Eles vieram com este protocolo e este protocolo realmente mudou 00:05:06.120 --> 00:05:10.541 mundo. Em que introduziu nesta nova era em criptografia. Onde está agora não é apenas 00:05:10.541 --> 00:05:14.536 sobre o desenvolvimento de cifras de bloco mas na verdade é sobre o projeto algébrica 00:05:14.536 --> 00:05:19.293 protocolos que têm imóveis como o que vemos aqui. Então você percebe que o que 00:05:19.293 --> 00:05:24.336 faz este protocolo funciona é basicamente propriedades da exponenciação. Ou seja, que, 00:05:24.525 --> 00:05:29.443 g para o b para a potência de um é o mesmo que para o g uma à potência de b, bem? 00:05:29.443 --> 00:05:33.568 Estes são apenas propriedades de exponenciações. Agora, quando eu descrever um 00:05:33.568 --> 00:05:38.041 protocolo como o que acabei de mostrar. A verdadeira questão que deve estar no seu 00:05:38.041 --> 00:05:41.941 mente não é por isso que o protocolo funciona. Em outras palavras, é muito fácil de verificar 00:05:41.941 --> 00:05:45.840 que, de fato, Alice e Bob acabar com a mesma chave secreta. Quanto maior 00:05:45.840 --> 00:05:49.636 questão é porque é que este protocolo seguro? Em outras palavras, por que é que um 00:05:49.636 --> 00:05:53.847 eavesdropper não consigo descobrir a mesma chave compartilhada devido à AB que tanto Alice 00:05:53.847 --> 00:05:57.902 e Bob calculado por eles próprios? Então vamos analisar isso um pouco, então, como eu 00:05:57.902 --> 00:06:02.114 disse, vamos fazer um mais muito na análise aprofundada na próxima semana. Mas, vamos, para já, 00:06:02.114 --> 00:06:06.221 apenas ver intuitivamente por isso que este protocolo vai ser seguro. Bem, o que faz o 00:06:06.566 --> 00:06:11.106 eavesdropper ver? Bem, ele vê o primo eo gerador. Estes são apenas fixada 00:06:11.106 --> 00:06:15.876 para sempre e todo mundo sabe quem eles são. Ele também vê o valor que Alice enviou para 00:06:15.876 --> 00:06:20.531 Bob, ou seja, esta A. capital e vê o valor que Bob enviado para Alice, a saber 00:06:20.531 --> 00:06:25.187 este capital de B. E a pergunta é, pode, pode a eavesdropper calcular g para o 00:06:25.187 --> 00:06:29.899 ab dado apenas esses quatro valores? Então, mais genericamente, o que podemos fazer é que podemos definir 00:06:29.899 --> 00:06:34.497 esta função Diffie-Hellman. Então, vamos dizer que a função Diffie-Hellman é definido 00:06:34.497 --> 00:06:39.373 com base em alguma g valor. E a pergunta é dada g para a, e g a b. Você pode 00:06:39.373 --> 00:06:44.743 computação g para a ab? E o que estamos pedindo é como é que é difícil calcular essa 00:06:44.743 --> 00:06:49.580 módulo de função durante muito grande p primo. Lembre-se de p era algo como 600 dígitos. 00:06:49.580 --> 00:06:53.968 Então, a verdadeira questão que precisamos responder é o quão difícil é este, é este Diffie-Hellman 00:06:53.968 --> 00:06:58.850 função? Então deixe-me mostrar-lhe o que sabe sobre isso. Assim, suponha que o principal acontece 00:06:58.850 --> 00:07:04.406 para ser n bits de comprimento. Ok, então no nosso caso dizem que n é de 2.000 bits. Acontece que o melhor 00:07:04.406 --> 00:07:08.783 algoritmo conhecido para calcular a função de Diffie-Hellman. É realmente um 00:07:08.783 --> 00:07:12.853 mais algoritmo geral que calcula a função de log discreto, que nós vamos 00:07:12.853 --> 00:07:16.822 falar na próxima semana. Mas, por enquanto, vamos apenas dizer que este algoritmo calcula um 00:07:16.822 --> 00:07:20.742 Diffie-Hellman função. O algoritmo é chamado um peneiro campo geral número. Eu sou 00:07:20.742 --> 00:07:24.912 não vou descrever como funciona, mas se você gostaria de saber como ele funciona, deixe-me 00:07:24.912 --> 00:07:28.982 sabe, e que pode ser um dos tópicos especiais que cobrem no final do 00:07:28.982 --> 00:07:33.002 curso. Mas o interessante é que ele está correndo o tempo é exponencial 00:07:33.002 --> 00:07:36.771 aproximadamente a raiz cúbica de n. Em outras palavras, o tempo de execução é aproximadamente e para 00:07:36.771 --> 00:07:41.028 o poder de o de raiz cúbica de n. Então, na verdade a expressão exata para a execução 00:07:41.028 --> 00:07:44.853 hora, desse algoritmo é muito mais complicado do que isso. Eu estou deliberadamente 00:07:44.853 --> 00:07:49.035 simplificando-o aqui só para obter o tipo de ponto de vista. O ponto que eu quero 00:07:49.035 --> 00:07:52.809 enfatizar é que, na verdade, isso não é bem um algoritmo de tempo exponencial. 00:07:52.809 --> 00:07:57.093 exponencial seria e à potência de n. Isso às vezes é chamado de sub-exponencial 00:07:57.093 --> 00:08:01.377 algoritmo porque o expoente é apenas proporcional à raiz cúbica de n, 00:08:01.377 --> 00:08:05.847 em oposição a n lineares. O que isto diz é que mesmo que este problema é bastante 00:08:05.847 --> 00:08:10.360 difícil, não é realmente um problema de tempo exponencial. O tempo de execução na 00:08:10.360 --> 00:08:15.175 expoente vai ser apenas proporcional à raiz cúbica de n. Então, vamos olhar para alguns 00:08:15.175 --> 00:08:19.848 exemplos. Suponha que eu acontecer de estar a olhar para um módulo que passa a ser sobre um 00:08:19.848 --> 00:08:23.879 mil bits de comprimento. O que este algoritmo diz é que podemos resolver o 00:08:23.879 --> 00:08:28.436 problema Diffie-Hellman no tempo, que é aproximadamente e para a raiz qube de 1.024. 00:08:28.436 --> 00:08:33.285 Agora, isso não é realmente correto, na verdade, existem mais constantes no expoente. 00:08:33.285 --> 00:08:38.192 Mas, novamente, apenas para começar, o ponto de vista, podemos dizer que o tempo de execução seria 00:08:38.192 --> 00:08:42.866 cerca e à raiz qube de 1.024, o que é realmente muito pequena, cerca de e para o 10. 00:08:42.866 --> 00:08:47.231 Portanto, o exemplo simples mostra que se você tiver um algoritmo sub-exponencial, 00:08:47.231 --> 00:08:51.589 você ver que mesmo se o problema é muito grande, como 1000 bits. Devido à NOTE Paragraph 00:08:51.589 --> 00:08:56.277 efeito raiz cúbica o expoente na verdade não é tão grande como um todo. Agora, para ser honesto, eu sou 00:08:56.277 --> 00:09:00.849 realmente mentindo aqui. Peneira campo Geral Número realmente tem muitos outros 00:09:00.849 --> 00:09:05.420 constantes dos expoentes assim, de facto, isso não vai ser 10 em tudo. É 00:09:05.420 --> 00:09:09.816 realmente vai ser algo como 80. Por causa de várias constantes do 00:09:09.816 --> 00:09:14.622 expoentes. Mas mesmo assim, mas você vê o problema é muito mais difícil do que dizer de 2 a 00:09:14.622 --> 00:09:19.428 1000 a. Apesar de descrever leva 1.000 bits, resolução de não ter tempo 00:09:19.428 --> 00:09:23.587 para a 1.000. Então aqui eu rolar a tabela que tipo de mostra-lhe o áspero 00:09:23.587 --> 00:09:27.309 dificuldade de quebrar o protocolo de Diffie-Hellman em comparação com o 00:09:27.309 --> 00:09:31.785 dificuldade de quebrar uma cifra com um número apropriado de bits. Por exemplo, 00:09:31.785 --> 00:09:36.261 se o seu cifra tem 80 teclas de bits. Isso seria mais ou menos comparável ao uso de 1.000 bit 00:09:36.261 --> 00:09:40.792 módulos. Em outras palavras, quebrando uma cifra com 80 teclas de bit demora cerca de 2 a 80 00:09:40.792 --> 00:09:45.053 , o que significa que a quebra se você tiver Diffie-Hellman função com 1.000 00:09:45.053 --> 00:09:47.701 módulo terá pouco tempo de 2 à 80. 00:09:47.701 --> 00:09:53.989 Se o seu cifra usa chaves de 128 bits como AES, você deve estar realmente usando um módulo bit 3.000, 00:09:53.989 --> 00:09:58.734 , embora ninguém realmente faz isso. Na realidade, as pessoas usariam 2.000 módulo bit. E 00:09:58.734 --> 00:10:03.083 , em seguida, se a sua chave é muito grande, como se estivéssemos usando uma chave AES de 256 bits, em seguida, 00:10:03.083 --> 00:10:07.715 fato de seu módulo precisa ser muito, muito grande. Novamente, você, você pode realmente ver o 00:10:07.715 --> 00:10:12.346 efeito raiz cúbica aqui. Nós duplicou o tamanho da nossa chave e por causa da raiz cubo 00:10:12.346 --> 00:10:16.752 efeito, o que isso significa é que temos que aumentar o tamanho, do nosso módulo por um 00:10:16.752 --> 00:10:21.327 fator de dois cubos, ou seja, um fator de oito, que é onde esta 15.000 vem. 00:10:21.327 --> 00:10:25.952 a partir de. E mais uma vez devo mencionar que não há exatamente um fator de oito por causa de 00:10:25.952 --> 00:10:30.251 as constantes extra no expoente. Portanto, este é um belo quadro que mostra que 00:10:30.251 --> 00:10:34.481 , se você está indo estar usando Diffie-Hellman para troca, uma chave de sessão. E que a sessão 00:10:34.481 --> 00:10:38.608 chave vai ser utilizado para uma codificação de bloco com um tamanho de chave determinado, esta tabela mostra 00:10:38.608 --> 00:10:42.633 qual o tamanho modular você precisa usar para que a segurança da troca de chaves 00:10:42.633 --> 00:10:46.709 protocolo é comparável com a segurança da cifra de bloco você vai estar usando depois. NOTE Paragraph 00:10:46.709 --> 00:10:50.837 Agora, esta última linha deve ser realmente preocupante para você. Eu deveria dizer 00:10:50.837 --> 00:10:54.913 você que trabalha com esse módulo de um grande é muito problemática. Esta é realmente 00:10:54.913 --> 00:10:59.040 vai ser bastante lenta, e então a questão é se existe algo melhor que 00:10:59.040 --> 00:11:03.832 podemos fazer? E acontece que há. Na verdade, a maneira que eu descrever o Diffie-Hellman 00:11:03.832 --> 00:11:08.984 função é que eu descrevê-la com a forma como Diffie e Hellman descrito em 1976 00:11:08.984 --> 00:11:13.516 módulo usando aritmética dos números primos. O problema com números primos aritmética modular é 00:11:13.516 --> 00:11:17.539 que a função de Diffie-Hellman é difícil de calcular, mas não é tão duro como você 00:11:17.539 --> 00:11:21.611 como. Não há este efeito raiz cúbica que o torna um pouco mais fácil do que o que você 00:11:21.611 --> 00:11:26.158 realmente gosto. E então a questão é que podemos executar o protocolo Diffie-Hellman em outro 00:11:26.158 --> 00:11:30.300 configurações. E acontece que a resposta é sim. Na verdade, podemos traduzir literalmente 00:11:30.300 --> 00:11:34.308 o protocolo de Diffie-Hellman a partir de um modelo de aritmética de números primos para um diferente 00:11:34.308 --> 00:11:38.752 tipo de objeto algébrico e resolver o problema Diffie-Hellman em que outro 00:11:38.752 --> 00:11:43.196 objeto algébrico é muito, muito mais difícil. Este outro objeto algébrico é o que é 00:11:43.196 --> 00:11:47.758 chamado uma curva elíptica. E como eu disse, o cálculo da função de Diffie-Hellman em 00:11:47.758 --> 00:11:52.735 essas curvas elípticas é muito mais difícil do que calcular os números primos Diffie-Hellman modulo. 00:11:52.735 --> 00:11:57.476 Porque o problema é muito mais difícil, agora podemos usar objetos muito menores em 00:11:57.476 --> 00:12:02.453 particular, você sabe que estaria usando números primos que são apenas uma de 160 bits ou 80 bits ou chaves 00:12:02.453 --> 00:12:06.780 apenas 512 bits para 256 bits chaves. Então, porque estes módulo não crescem como 00:12:06.780 --> 00:12:10.914 rápido em curvas elípticas, há geralmente uma transição lenta de distância usando o módulo 00:12:10.914 --> 00:12:14.949 aritmética, ao uso de curvas elípticas. Eu não vou descrever curvas elípticas 00:12:14.949 --> 00:12:18.735 agora para você, mas se isso é algo que você gostaria de aprender sobre o que posso 00:12:18.735 --> 00:12:22.421 fazer isso na última semana do curso, quando discutimos mais avançado 00:12:22.421 --> 00:12:27.149 tópicos. Mas na verdade, quando voltamos para Diffie-Hellman na próxima semana eu vou descrevê-lo 00:12:27.149 --> 00:12:31.933 mais abstrata, para que isso realmente não importa qual você usa estrutura algébrica 00:12:31.933 --> 00:12:36.831 se você usar o modelo aritmética dos números primos, ou se você usar uma curva elíptica que 00:12:36.831 --> 00:12:41.557 pode meio abstrato questão que todo fora e use o conceito de Diffie-Hellman para um 00:12:41.557 --> 00:12:46.109 troca de chaves e outras coisas também. E como eu disse, vamos ver que mais 00:12:46.109 --> 00:12:50.321 abstratamente na próxima semana. Então, como de costume, eu quero mostrar que este protocolo bonita que eu 00:12:50.321 --> 00:12:54.307 apenas mostrei, o protocolo Diffie-Hellman, é como é, na verdade é completamente inseguro 00:12:54.307 --> 00:12:58.195 contra um ataque ativo. Ou seja, é completamente inseguro contra o que é chamado 00:12:58.195 --> 00:13:02.132 o homem no meio ataque. Precisamos fazer algo mais do que este protocolo para 00:13:02.132 --> 00:13:06.019 fazer é segura contra o homem no meio. E mais uma vez vamos voltar a Diffie 00:13:06.019 --> 00:13:10.135 Hellman e torná-la segura contra o homem no meio da semana seguinte. Okay. Então vamos ver 00:13:10.135 --> 00:13:14.649 porque o protocolo que eu mostrei é inseguro contra ataques ativos. Bem 00:13:14.649 --> 00:13:18.767 suponha que temos esse homem no meio que está tentando espionar o 00:13:18.767 --> 00:13:23.393 conversa entre Alice e Bob. Bem assim, o protocolo começa com Alice enviando 00:13:23.563 --> 00:13:28.309 g ao longo de um para Bob. Bem, então o homem no meio é que vai interceptar e 00:13:28.309 --> 00:13:32.777 ele vai levar a mensagem de que Alice enviou e ele vai substituí-lo com a sua 00:13:32.777 --> 00:13:37.113 própria mensagem. Então, ele é chamado a ', e vamos escrever que é g a um ". 00:13:37.113 --> 00:13:41.939 Ok? Então o homem no meio escolhe o seu "um próprio eo que ele envia para Bob é 00:13:41.939 --> 00:13:46.588 realmente g para a 'a. Agora pobre Bob não sabe que o homem no meio 00:13:46.588 --> 00:13:51.356 realmente fez alguma coisa para esse tráfego, tudo o que ele vê é que ele tem o valor de A '. Como 00:13:51.356 --> 00:13:55.946 até onde ele sabe, que o valor veio de Alice. Então, o que é que ele vai fazer em resposta? 00:13:55.946 --> 00:14:00.723 Bem, ele vai mandar de volta o seu valor B para fora que é g a b volta para Alice. Bem 00:14:00.723 --> 00:14:05.457 novamente o homem no meio vai interceptar este B. Ele vai gerar o seu 00:14:05.457 --> 00:14:10.434 b própria "e que ele realmente envia de volta para Alice é B", que é g a b '. 00:14:10.434 --> 00:14:16.807 Ok, agora o que acontece? Bem Alice vai calcular a sua parte do 00:14:16.807 --> 00:14:22.808 chave secreta e ela vai ficar g para o ab '. Bob vai calcular a sua parte 00:14:22.808 --> 00:14:28.281 chave secreta e ele vai ficar g para os tempos de um 'b. Ok, estes agora você 00:14:28.281 --> 00:14:33.592 aviso estas não são as mesmas teclas. No homem no meio, porque ele sabe tanto "A 00:14:33.592 --> 00:14:38.903 e B ", ele pode calcular tanto para o g ab 'e g a ba'. Sim, é 00:14:38.903 --> 00:14:44.215 não é difícil de ver o homem no meio sabe os dois valores. E, como resultado, agora ele 00:14:44.215 --> 00:14:49.526 pode basicamente jogar este homem no meio e quando Alice envia uma mensagem criptografada 00:14:49.526 --> 00:14:54.711 de Bob o homem no meio pode simplesmente decifrar esta mensagem, porque ele sabe o 00:14:54.711 --> 00:14:59.622 chave secreta que Alice mensagem criptografada com, re-criptografá-la utilizando a chave de Bob. E 00:14:59.622 --> 00:15:04.105 , em seguida, enviar a mensagem sobre sobre a Bob. E desta forma Alice enviou a mensagem, Bob 00:15:04.105 --> 00:15:08.239 recebido a mensagem. Bob acredita que a mensagem é segura. Mas, de facto, que 00:15:08.239 --> 00:15:12.605 mensagem foi enviada através do homem no meio. O homem no meio descriptografados 00:15:12.605 --> 00:15:17.146 -lo, re-codificado-lo para Bob. Ao mesmo tempo que era capaz de completamente lê-lo, 00:15:17.146 --> 00:15:21.746 modificá-lo, se ele quer, e assim por diante. Assim, o protocolo torna-se completamente inseguro 00:15:21.746 --> 00:15:26.531 dar nd homem no meio. E assim como eu disse nós vamos ter para melhorar a 00:15:26.531 --> 00:15:30.697 protocolo de alguma forma para se defender contra os homens no meio, mas acontece que é 00:15:30.697 --> 00:15:34.915 na verdade não tão difícil de melhorar e impedir o homem no meio ataques. 00:15:34.915 --> 00:15:39.377 E nós vamos voltar a isso e ver que em uma semana ou duas. O último acho que eu quero 00:15:39.377 --> 00:15:43.658 fazer é mostrar-lhe uma propriedade interessante do protocolo Diffie-Hellman. Na verdade, eu 00:15:43.658 --> 00:15:48.046 quero mostrar a você que este protocolo pode ser visto como um protocolo não-interativo. Assim, 00:15:48.046 --> 00:15:52.487 o que quero dizer com isso? Então, imagine que temos um monte de usuários, você sabe, milhões 00:15:52.487 --> 00:15:56.340 de usuários. Vamos chamá-los de Alice, Bob, Charlie, David e assim por diante e assim por diante. 00:15:56.500 --> 00:16:00.567 Cada um deles vai escolher um valor aleatório, segredo, e, em seguida, em seu 00:16:00.567 --> 00:16:04.419 perfis do Facebook, eles vão escrever, sua contribuição para o 00:16:04.419 --> 00:16:08.486 Diffie-Hellman protocolo. Tudo bem, então todo mundo só escreve você sabe g para 00:16:08.486 --> 00:16:13.604 a um, g para o b, g para o C e assim por diante. Agora a coisa interessante sobre isso é, 00:16:13.604 --> 00:16:18.942 se dizem Alice e Charlie quer estabelecer uma chave compartilhada eles não precisam se comunicar 00:16:18.942 --> 00:16:24.360 de todo. Basicamente Alice iria ler e perfil público de Charlie. Charlie iria 00:16:24.360 --> 00:16:29.635 e ler o perfil de Alice público. E agora, boom, têm imediatamente uma chave secreta. 00:16:29.635 --> 00:16:34.976 Ou seja, agora, Alice sabe, g a c e a. Charlie sabe g à uma e с. E como 00:16:34.976 --> 00:16:39.987 um resultado, ambos podem calcular п à AC. Então, em certo sentido, uma vez que eles 00:16:39.987 --> 00:16:44.669 postou suas contribuições para o protocolo Diffie-Hellman para seu público 00:16:44.669 --> 00:16:50.076 os outros em tudo para criar uma chave compartilhada. 00:16:50.076 --> 00:16:53.919 têm imediatamente uma chave compartilhada e agora eles podem começar a se comunicar 00:16:53.919 --> 00:16:58.194 de forma segura através do Facebook ou não um com o outro. E notem que isto é verdade para 00:16:58.194 --> 00:17:02.121 qualquer usuário do Facebook. Assim, logo que li o perfil público de alguém, eu imediatamente 00:17:02.121 --> 00:17:06.198 têm uma chave compartilhada com eles, sem nunca se comunicar com eles. Esta propriedade é 00:17:06.198 --> 00:17:09.967 às vezes chamado de uma propriedade não-interativo do Diffie-Hellman. Então agora, vamos 00:17:09.967 --> 00:17:14.716 me mostrar-lhe um problema em aberto. E este é um problema em aberto que tem sido aberto para as idades 00:17:14.716 --> 00:17:19.407 e eras e eras. Por isso, seria muito legal se um de vocês pode realmente resolvê-lo. O 00:17:19.407 --> 00:17:24.041 questão é, podemos fazer isso por mais de duas partes? Em outras palavras, dizer que temos 00:17:24.041 --> 00:17:28.559 quatro partes. Todos eles postam seus valores para seus perfis do Facebook. E agora 00:17:28.559 --> 00:17:33.366 gostaríamos de fazê-lo que apenas lendo perfis no Facebook, todos eles podem configurar 00:17:33.366 --> 00:17:38.057 palavras, é Alice, que ela vai, ela vai fazer é ela só vai 00:17:38.057 --> 00:17:42.427 ler os perfis do público, os três amigos, Bob, Charlie e David. E 00:17:42.427 --> 00:17:47.650 ela já pode calcular a chave compartilhada com eles. E da mesma forma David está apenas indo 00:17:47.650 --> 00:17:54.187 ler o perfil público de Charlie. Bob e Alice. E já que ele tem uma chave compartilhada 00:17:54.187 --> 00:17:58.716 com todos os quatro deles. Ok, então a questão é se podemos tipo de configuração 00:17:58.885 --> 00:18:03.546 não-interativamente estes, estas chaves compartilhadas para grupos que são maiores do que apenas dois 00:18:03.546 --> 00:18:07.986 pessoas. Então, como eu disse, para n igual a dois, este é apenas um protocolo Diffie-Hellman. Em 00:18:07.986 --> 00:18:12.594 outras palavras, se apenas dois partidos querem criar uma chave compartilhada sem comunicar 00:18:12.594 --> 00:18:16.696 um com o outro, isso é apenas Diffie-Hellman. Acontece que, para N igual a 00:18:16.696 --> 00:18:21.473 três, nós também sabemos como fazê-lo, há um protocolo conhecido, é chamado de protocolo devido 00:18:21.473 --> 00:18:25.688 de Joux. Ela já usa matemática muito, muito chique, muito mais complicado 00:18:25.688 --> 00:18:29.959 matemática do que aquilo que acabei de mostrar. E para N igual a quatro, ou cinco, ou 00:18:29.959 --> 00:18:34.455 nada acima deste, acima de quatro, este problema é completamente aberta. Quase o 00:18:34.455 --> 00:18:38.790 caso em que quatro pessoas postar algo para os perfis públicos e então todos 00:18:38.790 --> 00:18:42.908 pessoa lê o perfil público e eles têm uma chave comum compartilhado, isto é 00:18:42.908 --> 00:18:47.459 algo que não sei como fazer, mesmo para quatro pessoas. E este é um problema que é 00:18:47.459 --> 00:18:52.010 sido aberto por eras e eras, é um tipo de problema legal pensar e assim ver se 00:18:52.010 --> 00:18:56.073 você pode resolvê-lo, se quiser, é a fama instantânea no mundo crypto. Ok, então 00:18:56.073 --> 00:19:00.516 Vou parar por aqui, e vamos continuar com um outro mecanismo de troca de chaves no próximo segmento.