[Script Info] Title: [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.00,0:00:04.15,Default,,0000,0000,0000,,Agora que entendemos segurança texto escolhido simples, permite construir sistemas de criptografias Dialogue: 0,0:00:04.15,0:00:08.52,Default,,0000,0000,0000,,que são escolhidos de texto simples seguro. E o esquema de criptografia primeiro tal vai Dialogue: 0,0:00:08.52,0:00:12.51,Default,,0000,0000,0000,,ser chamado cifra encadeamento bock. Então aqui está como o encadeamento de bloco cifra funciona. Dialogue: 0,0:00:12.51,0:00:16.61,Default,,0000,0000,0000,,encadeamento de blocos de codificação é uma maneira de usar uma cifra de bloco a ter escolhido texto simples Dialogue: 0,0:00:16.61,0:00:20.87,Default,,0000,0000,0000,,segurança. Em particular, estamos indo olhar um modo chamado encadeamento bloco cifra Dialogue: 0,0:00:20.87,0:00:25.02,Default,,0000,0000,0000,,com uma IV aleatória. CBC representa chaning bloco cifrado. Assim, suponha que temos um bloco Dialogue: 0,0:00:25.02,0:00:28.96,Default,,0000,0000,0000,,cifra, assim EB é uma cifra de bloco. Então, agora vamos definir CBC para ser o seguinte Dialogue: 0,0:00:28.96,0:00:33.25,Default,,0000,0000,0000,,esquema de criptografia. Assim, o algoritmo de criptografia quando é solicitado para criptografar uma Dialogue: 0,0:00:33.25,0:00:37.99,Default,,0000,0000,0000,,mensagem M, a primeira coisa que vai fazer é que vai escolher um IV aleatório que é Dialogue: 0,0:00:37.99,0:00:41.96,Default,,0000,0000,0000,,exatamente um bloco da cifra de bloco. Então IV é um bloco de cifra. Dialogue: 0,0:00:41.96,0:00:46.04,Default,,0000,0000,0000,,Assim, no caso de AES a IV seria de 16 bytes. E então nós estamos Dialogue: 0,0:00:46.04,0:00:50.65,Default,,0000,0000,0000,,vai correr através do algoritmo aqui, o IV, basicamente, que nós escolhemos vai ser XOR Dialogue: 0,0:00:50.65,0:00:54.73,Default,,0000,0000,0000,,para o bloco primeiro texto simples. E então o resultado vai ser Dialogue: 0,0:00:54.73,0:00:58.86,Default,,0000,0000,0000,,criptografada usando a cifra de bloco e de saída do primeiro bloco do texto cifrado. Dialogue: 0,0:00:58.86,0:01:03.04,Default,,0000,0000,0000,,E agora vem a parte encadeamento onde nós realmente usar o primeiro bloco de Dialogue: 0,0:01:03.04,0:01:07.44,Default,,0000,0000,0000,,texto a cifra Para tipo de máscara o segundo bloco do texto simples. Então, nós XOR Dialogue: 0,0:01:07.44,0:01:11.59,Default,,0000,0000,0000,,os dois juntos ea criptografia de que se torna o segundo bloco de texto cifrado. Dialogue: 0,0:01:11.59,0:01:15.54,Default,,0000,0000,0000,,E assim por diante, e assim por diante, e assim por diante. Portanto, este é o encadeamento cifra bloco que você pode Dialogue: 0,0:01:17.56,0:01:19.58,Default,,0000,0000,0000,,ver que cada bloco de cifra é acorrentado e XOR para o próximo texto simples Dialogue: 0,0:01:19.58,0:01:24.12,Default,,0000,0000,0000,,bloco. E o texto cifrado final é vai ser, essencialmente, a IV do IV inicial Dialogue: 0,0:01:24.12,0:01:30.02,Default,,0000,0000,0000,,que nós escolhemos, juntamente com todos os blocos de texto cifrado. Devo dizer que está IV Dialogue: 0,0:01:30.02,0:01:35.80,Default,,0000,0000,0000,,para vetor de inicialização. E nós vamos estar vendo esse termo usado um pouco, Dialogue: 0,0:01:35.80,0:01:39.72,Default,,0000,0000,0000,,cada vez que precisamos escolher algo aleatoriamente no início da criptografia Dialogue: 0,0:01:39.72,0:01:43.54,Default,,0000,0000,0000,,esquema tipicamente vamos chamar isso de um IV para vetor de inicialização. Então você percebe Dialogue: 0,0:01:43.54,0:01:47.32,Default,,0000,0000,0000,,que o texto cifra é um pouco maior do que o texto simples, porque tínhamos Dialogue: 0,0:01:47.32,0:01:51.15,Default,,0000,0000,0000,,para incluir este IV nos textos cifrados que, basicamente, capta a aleatoriedade Dialogue: 0,0:01:51.15,0:01:55.45,Default,,0000,0000,0000,,que foi usado durante a criptografia. Assim, a primeira pergunta é como nós decifrar o Dialogue: 0,0:01:55.45,0:02:00.23,Default,,0000,0000,0000,,resultados de criptografia CBC e então deixe-me lembrá-lo mais uma vez que se nós, quando Dialogue: 0,0:02:00.23,0:02:04.47,Default,,0000,0000,0000,,criptografar o bloco primeira mensagem que XOR com o encrypt IV do Dialogue: 0,0:02:04.47,0:02:09.19,Default,,0000,0000,0000,,resultado e que se torna o primeiro bloco de texto cifrado. Então deixe-me perguntar-lhe como é que Dialogue: 0,0:02:09.19,0:02:13.67,Default,,0000,0000,0000,,você descriptografar isso? Portanto, dado o bloco de texto primeiro cifra como você recuperar Dialogue: 0,0:02:13.67,0:02:17.92,Default,,0000,0000,0000,,do bloco de texto original primeiro planície? Assim descodificação é na verdade muito semelhante à Dialogue: 0,0:02:17.92,0:02:21.66,Default,,0000,0000,0000,,criptografia, aqui escrevi o circuito de decodificação, você pode ver, basicamente, Dialogue: 0,0:02:21.66,0:02:25.96,Default,,0000,0000,0000,,é quase a mesma coisa, exceto o XOR é no fundo, em vez de na parte superior e Dialogue: 0,0:02:25.96,0:02:29.60,Default,,0000,0000,0000,,novamente você percebe que, essencialmente, que cortou o IV como parte do Dialogue: 0,0:02:29.60,0:02:33.75,Default,,0000,0000,0000,,processo de descriptografia e só emitir a mensagem original de volta, o IV é descartado Dialogue: 0,0:02:33.75,0:02:38.44,Default,,0000,0000,0000,,pela tomada de descriptografia ok então o seguinte teorema vai mostrar que em Dialogue: 0,0:02:38.44,0:02:43.76,Default,,0000,0000,0000,,fato de criptografia modo CBC com um IV aleatório é, de fato semanticamente seguro sob um Dialogue: 0,0:02:43.76,0:02:48.96,Default,,0000,0000,0000,,escolhido texto simples, e por isso vamos levar isso mais precisamente, basicamente, se Dialogue: 0,0:02:48.96,0:02:54.08,Default,,0000,0000,0000,,início com um PRP, em outras palavras seu e cifra do bloco, que é definido por um Dialogue: 0,0:02:54.08,0:02:59.08,Default,,0000,0000,0000,,X espaço, então nós vamos acabar com uma criptografia de uma ECBC que leva Dialogue: 0,0:02:59.08,0:03:03.94,Default,,0000,0000,0000,,mensagens de comprimento L e mensagens cifradas saídas de comprimento L, mais um. E, em seguida Dialogue: 0,0:03:03.94,0:03:09.32,Default,,0000,0000,0000,,supor que temos um adversário que faz Q escolhidos querries texto plano. Então, podemos Dialogue: 0,0:03:09.32,0:03:15.02,Default,,0000,0000,0000,,estado o fato de segurança a seguir, que, para cada adversário de tal forma que está atacando Dialogue: 0,0:03:15.02,0:03:20.18,Default,,0000,0000,0000,,ECBC de existir um adversário que está atacando o PRP a cifra de bloco com Dialogue: 0,0:03:20.18,0:03:24.93,Default,,0000,0000,0000,,a seguinte relação entre o algoritmo de dois, por outras palavras, a vantagem Dialogue: 0,0:03:24.93,0:03:29.85,Default,,0000,0000,0000,,do algoritmo A contra esquema de encriptação é menor do que a vantagem de B algoritmo Dialogue: 0,0:03:29.85,0:03:35.08,Default,,0000,0000,0000,,contra o PRP original mais algum termo de ruído. Então deixe-me interpretar este teorema para Dialogue: 0,0:03:35.08,0:03:40.00,Default,,0000,0000,0000,,você como de costume, então o que isto significa é que, essencialmente, uma vez que E é um PRP segura este Dialogue: 0,0:03:40.00,0:03:45.05,Default,,0000,0000,0000,,quantidade aqui é insignificante, e nosso objetivo é dizer que uma vantagem do adversário é Dialogue: 0,0:03:45.05,0:03:49.79,Default,,0000,0000,0000,,também desprezível, no entanto aqui estamos impedidos de dizer que porque temos Dialogue: 0,0:03:49.79,0:03:54.63,Default,,0000,0000,0000,,este termo de erro extra. Isso é muitas vezes chamado de um termo de erro e argumentar que CBC Dialogue: 0,0:03:54.63,0:03:59.68,Default,,0000,0000,0000,,é seguro, temos de ter certeza de que o termo de erro também é insignificante. Porque se Dialogue: 0,0:03:59.68,0:04:04.47,Default,,0000,0000,0000,,ambos os termos à direita são desprezíveis, não há sinal é insignificante e Dialogue: 0,0:04:04.47,0:04:09.46,Default,,0000,0000,0000,,, portanto, a vantagem de um contra ECBC também seria negligenciável. Portanto, este diz Dialogue: 0,0:04:09.46,0:04:14.56,Default,,0000,0000,0000,,que, na verdade para ECBC para ser seguro era ser o fato de que Q L quadrado quadrado é Dialogue: 0,0:04:14.56,0:04:19.56,Default,,0000,0000,0000,,muito, muito, muito menor que o valor de X, então deixe-me lembrá-lo que Q e L são, por assim Dialogue: 0,0:04:19.56,0:04:24.57,Default,,0000,0000,0000,,L é simplesmente o comprimento das mensagens que estamos criptografia. Ok, então L pode ser Dialogue: 0,0:04:24.57,0:04:29.90,Default,,0000,0000,0000,,como dizer que um 1000, o que significa que estamos a criptografia de mensagens que são no máximo 1000 Dialogue: 0,0:04:29.90,0:04:35.30,Default,,0000,0000,0000,,blocos AES. Q é o número de textos de codificação que o adversário consegue ver sob a Dialogue: 0,0:04:35.30,0:04:40.77,Default,,0000,0000,0000,,ataque CPA, mas na vida real que Q é, é basicamente o número de vezes que temos Dialogue: 0,0:04:40.77,0:04:46.04,Default,,0000,0000,0000,,usou o K-chave para criptografar mensagens, em outras palavras, se usar uma chave AES particular Dialogue: 0,0:04:46.04,0:04:51.05,Default,,0000,0000,0000,,criptografar 100 mensagens, Q seria de 100. É porque o adversário, então, ver Dialogue: 0,0:04:51.05,0:04:56.22,Default,,0000,0000,0000,,maioria das 100 mensagens criptografadas nos termos do presente K chave Ok, então vamos ver o que isto significa no real Dialogue: 0,0:04:56.22,0:05:00.87,Default,,0000,0000,0000,,mundo. Então aqui eu reescrevi o equilíbrio seta no teorema. E só para lembrar Dialogue: 0,0:05:00.87,0:05:05.09,Default,,0000,0000,0000,,que você use as mensagens cifradas com a K e L com os comprimentos das mensagens e Dialogue: 0,0:05:05.09,0:05:09.37,Default,,0000,0000,0000,,suponha que queremos vantagem do adversário para ser inferior a um sobre dois para o 30 Dialogue: 0,0:05:09.37,0:05:13.35,Default,,0000,0000,0000,,dois. Isto significa que o termo seta melhor que seja inferior a um sobre dois à Dialogue: 0,0:05:13.35,0:05:17.85,Default,,0000,0000,0000,,32. Ok, vamos olhar para AES e ver o que isso significa. Para AES, AES, naturalmente, utiliza Dialogue: 0,0:05:17.85,0:05:22.30,Default,,0000,0000,0000,,bloco de 128 bits para X vai ser dois para o 128, o Dialogue: 0,0:05:22.30,0:05:26.36,Default,,0000,0000,0000,,tamanho de X vai ser 2 a 128, e se Dialogue: 0,0:05:26.36,0:05:30.86,Default,,0000,0000,0000,,ligue-a a expressão que você vê que, basicamente, o produto é Q vezes teve L Dialogue: 0,0:05:30.86,0:05:35.48,Default,,0000,0000,0000,,melhor ser inferior a duas vezes quarenta e oito. Isto significa que, depois de se usar um especial Dialogue: 0,0:05:35.48,0:05:40.01,Default,,0000,0000,0000,,chave para criptografar 2 para o bloco 48 AES temos de mudar a chave. Ok então Dialogue: 0,0:05:40.01,0:05:46.97,Default,,0000,0000,0000,,essencialmente CBC deixa de ser seguro depois que a chave é usada para criptografar 2 à 48 diferentes AS blocos. Dialogue: 0,0:05:46.97,0:05:49.57,Default,,0000,0000,0000,,Então, seu tipo de bom que o teorema de segurança diz Dialogue: 0,0:05:49.57,0:05:54.50,Default,,0000,0000,0000,,você exatamente quanto tempo a chave pode ser usada e, em seguida, a freqüência como a chave precisa Dialogue: 0,0:05:54.50,0:05:59.58,Default,,0000,0000,0000,,de ser substituído. Agora é interessante se você aplicar a mesma analogia para o que 3DES Dialogue: 0,0:05:59.58,0:06:04.91,Default,,0000,0000,0000,,realmente tem um bloco muito mais curto, talvez apenas 64 bits, você vê a chave tem de ser Dialogue: 0,0:06:04.91,0:06:10.48,Default,,0000,0000,0000,,mudado mais freqüentemente talvez depois a cada 65 mil blocos DES você precisa de uma nova chave. Assim Dialogue: 0,0:06:10.48,0:06:15.28,Default,,0000,0000,0000,,esta é uma das razões que AES tem um tamanho maior do bloco de modo que nos modos de facto Dialogue: 0,0:06:15.28,0:06:20.24,Default,,0000,0000,0000,,como CBC seria mais seguro e pode-se usar as chaves por um longo período antes de ter Dialogue: 0,0:06:20.24,0:06:24.80,Default,,0000,0000,0000,,para substituí-lo. O que isto significa é ter que substituir dois a 60, em blocos, Dialogue: 0,0:06:24.80,0:06:29.59,Default,,0000,0000,0000,,cada bloco do curso é de 8 bytes, por isso depois de criptografar cerca de metade de um megabyte de Dialogue: 0,0:06:29.59,0:06:33.87,Default,,0000,0000,0000,,cada bloco do curso é de 8 bytes, por isso depois de criptografar cerca de metade de um megabyte de Dialogue: 0,0:06:33.87,0:06:37.64,Default,,0000,0000,0000,,aviso com AES você pode criptografar um monte de dados antes de ter que mudar o Dialogue: 0,0:06:37.64,0:06:42.60,Default,,0000,0000,0000,,chave. Então eu quero avisá-lo sobre um erro muito comum que as pessoas fizeram quando Dialogue: 0,0:06:42.60,0:06:47.63,Default,,0000,0000,0000,,usando CBC com um IV aleatório. Isso é que minuto o que o atacante pode prever Dialogue: 0,0:06:47.63,0:06:52.71,Default,,0000,0000,0000,,a IV que você está indo usar para criptografar uma mensagem especial decifrar Dialogue: 0,0:06:52.71,0:06:57.80,Default,,0000,0000,0000,,ECBC isso não é mais seguro CPA. Então, quando usando CBC com um IV aleatório, como nós temos Dialogue: 0,0:06:57.80,0:07:02.25,Default,,0000,0000,0000,,apenas mostrado É crucial que a IV não é previsível. Mas vamos ver um ataque. Assim Dialogue: 0,0:07:02.25,0:07:06.28,Default,,0000,0000,0000,,suponho que assim acontece que, dada uma codificação em particular em uma mensagem que Dialogue: 0,0:07:06.28,0:07:10.70,Default,,0000,0000,0000,,atacante pode realmente prever que IV, que será utilizado para a próxima mensagem. Bem Dialogue: 0,0:07:10.70,0:07:14.84,Default,,0000,0000,0000,,permite mostrar que de fato o sistema resultante não é CPA seguro. Então a primeira coisa que a Dialogue: 0,0:07:14.84,0:07:19.20,Default,,0000,0000,0000,,adversário vai fazer é, ele vai pedir para a criptografia de um bloco de um Dialogue: 0,0:07:19.20,0:07:23.45,Default,,0000,0000,0000,,mensagem. Em particular que um bloco vai ser zero. Então, o que o adversário Dialogue: 0,0:07:23.45,0:07:27.59,Default,,0000,0000,0000,,recebe de volta é a criptografia de um bloco, ou seja, que é a criptografia de Dialogue: 0,0:07:27.59,0:07:31.75,Default,,0000,0000,0000,,mensagem ou seja zero, o XOR IV. Ok e, claro, o adversário também recebe o Dialogue: 0,0:07:31.75,0:07:35.88,Default,,0000,0000,0000,,IV. Ok então agora o adversário por hipótese pode prever o que vai IV Dialogue: 0,0:07:35.88,0:07:40.20,Default,,0000,0000,0000,,ser utilizado para a codificação seguinte. Ok, então vamos dizer que IV é chamado, bem IV. Assim Dialogue: 0,0:07:40.20,0:07:44.46,Default,,0000,0000,0000,,seguinte, o adversário vai lançar seu desafio de segurança Symantec e da Dialogue: 0,0:07:44.46,0:07:49.17,Default,,0000,0000,0000,,mensagem M0 vai ser o predito IV XOR IV1 o qual foi utilizado na criptografia Dialogue: 0,0:07:49.17,0:07:53.71,Default,,0000,0000,0000,,de C1. E a, a mensagem do M1 é apenas vai ser alguma outra mensagem, ela não Dialogue: 0,0:07:53.71,0:07:58.25,Default,,0000,0000,0000,,importa realmente o que é. Então, agora vamos ver o que acontece quando o adversário recebe Dialogue: 0,0:07:58.25,0:08:02.35,Default,,0000,0000,0000,,o resultado do desafio de segurança Symantic. Bem, ele está indo para obter o Dialogue: 0,0:08:02.35,0:08:06.47,Default,,0000,0000,0000,,criptografia de M0 ou M1. Assim, quando o adversário recebe a criptografia de M0, Dialogue: 0,0:08:06.47,0:08:10.80,Default,,0000,0000,0000,,me dizer o que é que o texto real claro que é criptografada no texto cifrado C? Dialogue: 0,0:08:11.26,0:08:17.37,Default,,0000,0000,0000,,Bem então a resposta é que o que é realmente criptografado é a mensagem que é Dialogue: 0,0:08:17.37,0:08:22.83,Default,,0000,0000,0000,,IV XOR XOR IV1 o IV que é usada para criptografar a mensagem que passa a ser Dialogue: 0,0:08:22.83,0:08:28.30,Default,,0000,0000,0000,,IV e isso, claro, é IV1. Assim, quando o adversário recebe a criptografia de M0, Dialogue: 0,0:08:28.30,0:08:33.17,Default,,0000,0000,0000,,ele está realmente recebendo a criptografia cifra de bloco de IV1. E baixa e eis Dialogue: 0,0:08:33.17,0:08:38.44,Default,,0000,0000,0000,,você vai perceber que ele já tem o valor de sua consulta de texto escolhido simples. Dialogue: 0,0:08:38.44,0:08:42.80,Default,,0000,0000,0000,,E então quando ele está recebendo a criptografia da mensagem M1, ele só recebeu Dialogue: 0,0:08:42.80,0:08:47.82,Default,,0000,0000,0000,,uma criptografia CBC normais do M1 mensagem. Então você percebe que agora ele tem um simples Dialogue: 0,0:08:47.82,0:08:53.06,Default,,0000,0000,0000,,forma de quebrar o esquema, ou seja, o que ele vai fazer é que ele vai perguntar: 'É o segundo Dialogue: 0,0:08:53.06,0:08:58.35,Default,,0000,0000,0000,,bloco do texto cifrado C igual ao valor que recebi em minha consulta CPA? Se Dialogue: 0,0:08:58.35,0:09:03.84,Default,,0000,0000,0000,,então eu vou dizer que eu recebi a criptografia de M0, caso contrário eu vou dizer que eu recebi Dialogue: 0,0:09:03.84,0:09:09.21,Default,,0000,0000,0000,,criptografia de M1. Então, realmente o seu teste é C1 onde ele se refere ao segundo bloco Dialogue: 0,0:09:09.21,0:09:14.44,Default,,0000,0000,0000,,de C e C1 refere-se ao segundo bloco de C1 se os dois são iguais, ele diz zero, Dialogue: 0,0:09:14.44,0:09:20.10,Default,,0000,0000,0000,,caso contrário, ele diz um deles. Assim, a vantagem desta adversário vai ser 1 e como um Dialogue: 0,0:09:20.10,0:09:25.65,Default,,0000,0000,0000,,resultado, ele rompe completamente a segurança da CPU deste criptografia CBC. Então a lição aqui Dialogue: 0,0:09:25.65,0:09:30.33,Default,,0000,0000,0000,,é, se o IV é previsível, então, na verdade, não há segurança CPA e Dialogue: 0,0:09:30.33,0:09:35.62,Default,,0000,0000,0000,,, infelizmente, este é realmente um erro muito comum na prática. Em particular Dialogue: 0,0:09:35.62,0:09:41.34,Default,,0000,0000,0000,,mesmo protocolo SSL e em TLS1.1 verifica-se que para número recorde IV I é de fato Dialogue: 0,0:09:41.34,0:09:46.36,Default,,0000,0000,0000,,do bloco de texto última cifra recorde de I-1. Isso significa que exactamente dada Dialogue: 0,0:09:46.36,0:09:51.58,Default,,0000,0000,0000,,a criptografia de disco I-1, o adversário sabe exatamente o que está acontecendo IV Dialogue: 0,0:09:51.58,0:09:56.03,Default,,0000,0000,0000,,para ser usado como I. número recorde Muito recentemente apenas no verão passado esta era Dialogue: 0,0:09:56.03,0:10:00.74,Default,,0000,0000,0000,,realmente convertido em um ataque devastador em SSL. Vamos descrever Dialogue: 0,0:10:00.74,0:10:06.02,Default,,0000,0000,0000,,que um ataque falamos de SSL em mais detalhes, mas agora eu queria ter certeza de Dialogue: 0,0:10:06.02,0:10:12.37,Default,,0000,0000,0000,,você entende quando você usa criptografia CBC é absolutamente crucial que o IV ser aleatória. Dialogue: 0,0:10:12.37,0:10:16.37,Default,,0000,0000,0000,,Ok. Então agora eu vou te mostrar a versão nonce base de criptografia CBC Dialogue: 0,0:10:16.37,0:10:21.44,Default,,0000,0000,0000,,Assim, neste modo, o IV é substituído pelo nonce aleatório, mas não único Dialogue: 0,0:10:26.51,0:10:26.51,Default,,0000,0000,0000,,, por exemplo, o número 1,2,3,4,5. No entanto, se vai ser um contador de você Dialogue: 0,0:10:26.51,0:10:32.05,Default,,0000,0000,0000,,precisa fazer mais um passo. Antes de realmente CBC criptografia e em especial que você tem Dialogue: 0,0:10:32.05,0:10:37.38,Default,,0000,0000,0000,,para realmente criptografar as notas para se obter o IV que irá ser efectivamente utilizado para Dialogue: 0,0:10:37.38,0:10:42.92,Default,,0000,0000,0000,,criptografia. As anotações para CBC é semelhante a um IV aleatória, a diferença é que o Dialogue: 0,0:10:42.92,0:10:48.05,Default,,0000,0000,0000,,notas é primeiro codificado, e os resultados é que o IV é utilizado na CBC Dialogue: 0,0:10:48.05,0:10:52.73,Default,,0000,0000,0000,,criptografia Agora a beleza deste modo é que a Nance não tem necessariamente de Dialogue: 0,0:10:52.73,0:10:56.98,Default,,0000,0000,0000,,ser incluídos no texto codificado. Ele só precisa estar lá, se as suas incógnitas são Dialogue: 0,0:10:56.98,0:11:01.12,Default,,0000,0000,0000,,decrypter, mas que se o decrypter acontece que já conhecem o valor do Dialogue: 0,0:11:01.12,0:11:05.31,Default,,0000,0000,0000,,contra por outros meios, em seguida, na verdade, o texto cifrado é somente tão grande quanto o Dialogue: 0,0:11:05.31,0:11:09.29,Default,,0000,0000,0000,,texto simples. Não há valor extra transmitida no texto cifrado. E, novamente, Dialogue: 0,0:11:09.29,0:11:13.59,Default,,0000,0000,0000,,eu avisar que quando você está usando criptografia espaço não, é absolutamente crucial que Dialogue: 0,0:11:13.59,0:11:17.68,Default,,0000,0000,0000,,a chave comum Nance de reposição só é usado para uma mensagem de forma para cada mensagem, Dialogue: 0,0:11:17.68,0:11:22.03,Default,,0000,0000,0000,,ou Nance o que mudou ou a tecla mudou. Ok, então aqui enfatizar a Dialogue: 0,0:11:22.03,0:11:26.50,Default,,0000,0000,0000,,fato de que você precisa fazer esse passo extra antes de criptografia usando o real Dialogue: 0,0:11:26.50,0:11:31.09,Default,,0000,0000,0000,,Nance. Isso é erro muito comum que realmente esquecido na prática e Dialogue: 0,0:11:31.09,0:11:35.80,Default,,0000,0000,0000,,exemplo, TLS, isso não foi feito e como resultado houve um ataque significativo Dialogue: 0,0:11:35.80,0:11:40.28,Default,,0000,0000,0000,,contra criptografia CBC em TLS. Lembre-se da razão que isso é tão importante para Dialogue: 0,0:11:40.28,0:11:44.95,Default,,0000,0000,0000,,sabem é que na verdade muitas APIs de criptografia são criados para quase deliberadamente enganar o Dialogue: 0,0:11:44.95,0:11:49.45,Default,,0000,0000,0000,,usuário usando CBC incorretamente. Então, vamos olhar para ver como CBC implementado dentro de Dialogue: 0,0:11:49.45,0:11:53.84,Default,,0000,0000,0000,,SSL aberta. Então aqui estão os argumentos da função. Basicamente este é o simples Dialogue: 0,0:11:53.84,0:11:58.12,Default,,0000,0000,0000,,texto, este é o lugar onde o texto cifrado vai ficar gravado. Este é o Dialogue: 0,0:11:58.12,0:12:02.76,Default,,0000,0000,0000,,comprimento do texto simples. Esta é uma, uma tecla Sim Finalmente, há um argumento de que aqui Dialogue: 0,0:12:02.76,0:12:06.44,Default,,0000,0000,0000,,diz se você está crypting ou descriptografar. E o mais importante Dialogue: 0,0:12:06.44,0:12:10.88,Default,,0000,0000,0000,,parâmetro que eu queria salientar aqui é o IV real e, infelizmente, o Dialogue: 0,0:12:10.88,0:12:15.33,Default,,0000,0000,0000,,usuário é solicitado a fornecer este IV ea função usa o IV diretamente no CBC Dialogue: 0,0:12:15.33,0:12:19.83,Default,,0000,0000,0000,,mecanismo de criptografia. Não encriptar a IV, antes de utilizá-lo e, como resultado, se Dialogue: 0,0:12:19.83,0:12:24.33,Default,,0000,0000,0000,,você chamar essa função usando um IV não aleatório, o sistema de criptografia resultando Dialogue: 0,0:12:24.33,0:12:28.82,Default,,0000,0000,0000,,não será CPA seguro. Ok, isso é muito importante saber que ao chamar Dialogue: 0,0:12:28.82,0:12:33.96,Default,,0000,0000,0000,,funções como este. Criptografia SSL Cbc ou aberto ou fornecer um IV verdadeiramente aleatório Dialogue: 0,0:12:33.96,0:12:38.84,Default,,0000,0000,0000,,ou se você deseja que o IV para ser um contador do que você tem para criptografar um contador usando AAS Dialogue: 0,0:12:38.84,0:12:43.67,Default,,0000,0000,0000,,antes de realmente chamar um encrypt CBC e você tem que que você mesmo. Então, novamente, é Dialogue: 0,0:12:43.67,0:12:48.34,Default,,0000,0000,0000,,muito importante que o programador sabe que precisa ser feito caso contrário, a CBC Dialogue: 0,0:12:48.34,0:12:52.46,Default,,0000,0000,0000,,criptografia é inseguro. Um detalhe técnico última sobre CBC é o que fazer quando Dialogue: 0,0:12:52.46,0:12:57.18,Default,,0000,0000,0000,,a mensagem não é um múltiplo do comprimento do bloco do bloco de codificação? Isso é o que fazemos Dialogue: 0,0:12:57.18,0:13:01.69,Default,,0000,0000,0000,,se o bloco de mensagem último é mais curto do que o comprimento do bloco de AES, por exemplo? Assim Dialogue: 0,0:13:01.69,0:13:06.28,Default,,0000,0000,0000,,o bloco de mensagem é passada menos de dezasseis bytes. E a resposta é se somarmos Dialogue: 0,0:13:06.28,0:13:11.59,Default,,0000,0000,0000,,uma almofada para o último bloco de modo que se torna tão longo como dezasseis bytes, contanto que o AES Dialogue: 0,0:13:11.59,0:13:16.63,Default,,0000,0000,0000,,tamanho do bloco. E esta almofada, é claro, se vai ser removido durante a criptografia. Assim Dialogue: 0,0:13:16.63,0:13:21.87,Default,,0000,0000,0000,,aqui é um caminho típico, este é o caminho que é usado no TLS. Basicamente almofada um com Dialogue: 0,0:13:21.87,0:13:26.92,Default,,0000,0000,0000,,N bytes, em seguida, essencialmente o que você faz é escrever o número N, N vezes. Assim, para Dialogue: 0,0:13:26.92,0:13:32.04,Default,,0000,0000,0000,,exemplo, se você pad com cinco bytes, você almofada com a seqüência 555555. Então, cinco bytes Dialogue: 0,0:13:32.04,0:13:37.18,Default,,0000,0000,0000,,onde cada byte é o valor cinco. E a principal coisa sobre este tapete é basicamente quando Dialogue: 0,0:13:37.18,0:13:42.01,Default,,0000,0000,0000,,decrypter a receber a mensagem, o que ele faz é ele olha para o último byte de Dialogue: 0,0:13:42.01,0:13:46.97,Default,,0000,0000,0000,,o último bloco. Então suponho que o valor é cinco, então, ele simplesmente elimina os últimos cinco Dialogue: 0,0:13:46.97,0:13:51.82,Default,,0000,0000,0000,,bytes da mensagem. Agora a pergunta é o que vamos fazer se, de facto, a mensagem é um Dialogue: 0,0:13:51.82,0:13:56.26,Default,,0000,0000,0000,,múltiplo de dezesseis bytes então de fato não pad é necessário? Se não o fizermos pad em tudo, Dialogue: 0,0:13:56.26,0:14:00.48,Default,,0000,0000,0000,,bem que é um problema porque o decrypter vai olhar para o próprio Dialogue: 0,0:14:00.48,0:14:05.27,Default,,0000,0000,0000,,último byte do último bloco que não faz parte da mensagem real e que ele vai Dialogue: 0,0:14:05.27,0:14:10.00,Default,,0000,0000,0000,,para remover este número de bytes a partir do texto simples. De modo que, na verdade seria um problema. Dialogue: 0,0:14:10.00,0:14:15.36,Default,,0000,0000,0000,,Então a solução é, se de fato não há almofada que é necessário, no entanto, ainda Dialogue: 0,0:14:15.36,0:14:20.66,Default,,0000,0000,0000,,tem que adicionar um bloco de manequim. E uma vez que adicionar o bloco manequim este seria um bloco Dialogue: 0,0:14:20.66,0:14:25.83,Default,,0000,0000,0000,,que é basicamente contém dezesseis bytes cada um contendo o número 16. Dialogue: 0,0:14:25.83,0:14:30.04,Default,,0000,0000,0000,,Ok, então vamos adicionar blocos manequim essencialmente dezesseis. O decrypter, que quando ele é Dialogue: 0,0:14:30.04,0:14:34.47,Default,,0000,0000,0000,,descriptografar, ele olha para o último byte do último bloco, ele vê que o valor é Dialogue: 0,0:14:34.47,0:14:38.82,Default,,0000,0000,0000,,16, pois ele remove todo o bloco. E o que resta é a real Dialogue: 0,0:14:38.82,0:14:42.98,Default,,0000,0000,0000,,texto simples. Então é um pouco lamentável que na verdade se você estiver criptografando curto Dialogue: 0,0:14:42.98,0:14:47.02,Default,,0000,0000,0000,,mensagens com CBC e as mensagens que ser, digamos, 32 bytes, assim que são uma Dialogue: 0,0:14:47.02,0:14:51.39,Default,,0000,0000,0000,,múltiplo de dezesseis bytes, então você tem que adicionar mais um bloco e fazer todos estes Dialogue: 0,0:14:51.39,0:14:55.11,Default,,0000,0000,0000,,mensagens cifradas de 48 bytes apenas para acomodar o preenchimento CBC. Eu deveria Dialogue: 0,0:14:55.11,0:14:59.58,Default,,0000,0000,0000,,menção há uma variante do chamado CBC CBC com texto cifrado roubar que realmente Dialogue: 0,0:14:59.58,0:15:03.79,Default,,0000,0000,0000,,evita este problema, mas eu não vou descrever isso aqui. Se você está interessado Dialogue: 0,0:15:03.79,0:15:07.91,Default,,0000,0000,0000,,você pode olhar que até online. Ok, então isso é o fim da nossa discussão do CBC Dialogue: 0,0:15:07.91,0:15:12.20,Default,,0000,0000,0000,,e no segmento seguinte, verá como utilizar os modos de contador para criptografar múltipla Dialogue: 0,0:15:12.20,0:15:13.72,Default,,0000,0000,0000,,mensagens utilizando uma única tecla.