Agora que entendemos segurança texto escolhido simples, permite construir sistemas de criptografias que são escolhidos de texto simples seguro. E o esquema de criptografia primeiro tal vai ser chamado cifra encadeamento bock. Então aqui está como o encadeamento de bloco cifra funciona. encadeamento de blocos de codificação é uma maneira de usar uma cifra de bloco a ter escolhido texto simples segurança. Em particular, estamos indo olhar um modo chamado encadeamento bloco cifra com uma IV aleatória. CBC representa chaning bloco cifrado. Assim, suponha que temos um bloco cifra, assim EB é uma cifra de bloco. Então, agora vamos definir CBC para ser o seguinte esquema de criptografia. Assim, o algoritmo de criptografia quando é solicitado para criptografar uma mensagem M, a primeira coisa que vai fazer é que vai escolher um IV aleatório que é exatamente um bloco da cifra de bloco. Então IV é um bloco de cifra. Assim, no caso de AES a IV seria de 16 bytes. E então nós estamos vai correr através do algoritmo aqui, o IV, basicamente, que nós escolhemos vai ser XOR para o bloco primeiro texto simples. E então o resultado vai ser criptografada usando a cifra de bloco e de saída do primeiro bloco do texto cifrado. E agora vem a parte encadeamento onde nós realmente usar o primeiro bloco de texto a cifra Para tipo de máscara o segundo bloco do texto simples. Então, nós XOR os dois juntos ea criptografia de que se torna o segundo bloco de texto cifrado. E assim por diante, e assim por diante, e assim por diante. Portanto, este é o encadeamento cifra bloco que você pode ver que cada bloco de cifra é acorrentado e XOR para o próximo texto simples bloco. E o texto cifrado final é vai ser, essencialmente, a IV do IV inicial que nós escolhemos, juntamente com todos os blocos de texto cifrado. Devo dizer que está IV para vetor de inicialização. E nós vamos estar vendo esse termo usado um pouco, cada vez que precisamos escolher algo aleatoriamente no início da criptografia esquema tipicamente vamos chamar isso de um IV para vetor de inicialização. Então você percebe que o texto cifra é um pouco maior do que o texto simples, porque tínhamos para incluir este IV nos textos cifrados que, basicamente, capta a aleatoriedade que foi usado durante a criptografia. Assim, a primeira pergunta é como nós decifrar o resultados de criptografia CBC e então deixe-me lembrá-lo mais uma vez que se nós, quando criptografar o bloco primeira mensagem que XOR com o encrypt IV do resultado e que se torna o primeiro bloco de texto cifrado. Então deixe-me perguntar-lhe como é que você descriptografar isso? Portanto, dado o bloco de texto primeiro cifra como você recuperar do bloco de texto original primeiro planície? Assim descodificação é na verdade muito semelhante à criptografia, aqui escrevi o circuito de decodificação, você pode ver, basicamente, é quase a mesma coisa, exceto o XOR é no fundo, em vez de na parte superior e novamente você percebe que, essencialmente, que cortou o IV como parte do processo de descriptografia e só emitir a mensagem original de volta, o IV é descartado pela tomada de descriptografia ok então o seguinte teorema vai mostrar que em fato de criptografia modo CBC com um IV aleatório é, de fato semanticamente seguro sob um escolhido texto simples, e por isso vamos levar isso mais precisamente, basicamente, se início com um PRP, em outras palavras seu e cifra do bloco, que é definido por um X espaço, então nós vamos acabar com uma criptografia de uma ECBC que leva mensagens de comprimento L e mensagens cifradas saídas de comprimento L, mais um. E, em seguida supor que temos um adversário que faz Q escolhidos querries texto plano. Então, podemos estado o fato de segurança a seguir, que, para cada adversário de tal forma que está atacando ECBC de existir um adversário que está atacando o PRP a cifra de bloco com a seguinte relação entre o algoritmo de dois, por outras palavras, a vantagem do algoritmo A contra esquema de encriptação é menor do que a vantagem de B algoritmo contra o PRP original mais algum termo de ruído. Então deixe-me interpretar este teorema para você como de costume, então o que isto significa é que, essencialmente, uma vez que E é um PRP segura este quantidade aqui é insignificante, e nosso objetivo é dizer que uma vantagem do adversário é também desprezível, no entanto aqui estamos impedidos de dizer que porque temos este termo de erro extra. Isso é muitas vezes chamado de um termo de erro e argumentar que CBC é seguro, temos de ter certeza de que o termo de erro também é insignificante. Porque se ambos os termos à direita são desprezíveis, não há sinal é insignificante e , portanto, a vantagem de um contra ECBC também seria negligenciável. Portanto, este diz que, na verdade para ECBC para ser seguro era ser o fato de que Q L quadrado quadrado é muito, muito, muito menor que o valor de X, então deixe-me lembrá-lo que Q e L são, por assim L é simplesmente o comprimento das mensagens que estamos criptografia. Ok, então L pode ser como dizer que um 1000, o que significa que estamos a criptografia de mensagens que são no máximo 1000 blocos AES. Q é o número de textos de codificação que o adversário consegue ver sob a ataque CPA, mas na vida real que Q é, é basicamente o número de vezes que temos usou o K-chave para criptografar mensagens, em outras palavras, se usar uma chave AES particular criptografar 100 mensagens, Q seria de 100. É porque o adversário, então, ver maioria das 100 mensagens criptografadas nos termos do presente K chave Ok, então vamos ver o que isto significa no real mundo. Então aqui eu reescrevi o equilíbrio seta no teorema. E só para lembrar que você use as mensagens cifradas com a K e L com os comprimentos das mensagens e suponha que queremos vantagem do adversário para ser inferior a um sobre dois para o 30 dois. Isto significa que o termo seta melhor que seja inferior a um sobre dois à 32. Ok, vamos olhar para AES e ver o que isso significa. Para AES, AES, naturalmente, utiliza bloco de 128 bits para X vai ser dois para o 128, o tamanho de X vai ser 2 a 128, e se ligue-a a expressão que você vê que, basicamente, o produto é Q vezes teve L melhor ser inferior a duas vezes quarenta e oito. Isto significa que, depois de se usar um especial chave para criptografar 2 para o bloco 48 AES temos de mudar a chave. Ok então essencialmente CBC deixa de ser seguro depois que a chave é usada para criptografar 2 à 48 diferentes AS blocos. Então, seu tipo de bom que o teorema de segurança diz você exatamente quanto tempo a chave pode ser usada e, em seguida, a freqüência como a chave precisa de ser substituído. Agora é interessante se você aplicar a mesma analogia para o que 3DES realmente tem um bloco muito mais curto, talvez apenas 64 bits, você vê a chave tem de ser mudado mais freqüentemente talvez depois a cada 65 mil blocos DES você precisa de uma nova chave. Assim esta é uma das razões que AES tem um tamanho maior do bloco de modo que nos modos de facto como CBC seria mais seguro e pode-se usar as chaves por um longo período antes de ter para substituí-lo. O que isto significa é ter que substituir dois a 60, em blocos, cada bloco do curso é de 8 bytes, por isso depois de criptografar cerca de metade de um megabyte de cada bloco do curso é de 8 bytes, por isso depois de criptografar cerca de metade de um megabyte de aviso com AES você pode criptografar um monte de dados antes de ter que mudar o chave. Então eu quero avisá-lo sobre um erro muito comum que as pessoas fizeram quando usando CBC com um IV aleatório. Isso é que minuto o que o atacante pode prever a IV que você está indo usar para criptografar uma mensagem especial decifrar ECBC isso não é mais seguro CPA. Então, quando usando CBC com um IV aleatório, como nós temos apenas mostrado É crucial que a IV não é previsível. Mas vamos ver um ataque. Assim suponho que assim acontece que, dada uma codificação em particular em uma mensagem que atacante pode realmente prever que IV, que será utilizado para a próxima mensagem. Bem permite mostrar que de fato o sistema resultante não é CPA seguro. Então a primeira coisa que a adversário vai fazer é, ele vai pedir para a criptografia de um bloco de um mensagem. Em particular que um bloco vai ser zero. Então, o que o adversário recebe de volta é a criptografia de um bloco, ou seja, que é a criptografia de mensagem ou seja zero, o XOR IV. Ok e, claro, o adversário também recebe o IV. Ok então agora o adversário por hipótese pode prever o que vai IV ser utilizado para a codificação seguinte. Ok, então vamos dizer que IV é chamado, bem IV. Assim seguinte, o adversário vai lançar seu desafio de segurança Symantec e da mensagem M0 vai ser o predito IV XOR IV1 o qual foi utilizado na criptografia de C1. E a, a mensagem do M1 é apenas vai ser alguma outra mensagem, ela não importa realmente o que é. Então, agora vamos ver o que acontece quando o adversário recebe o resultado do desafio de segurança Symantic. Bem, ele está indo para obter o criptografia de M0 ou M1. Assim, quando o adversário recebe a criptografia de M0, me dizer o que é que o texto real claro que é criptografada no texto cifrado C? Bem então a resposta é que o que é realmente criptografado é a mensagem que é IV XOR XOR IV1 o IV que é usada para criptografar a mensagem que passa a ser IV e isso, claro, é IV1. Assim, quando o adversário recebe a criptografia de M0, ele está realmente recebendo a criptografia cifra de bloco de IV1. E baixa e eis você vai perceber que ele já tem o valor de sua consulta de texto escolhido simples. E então quando ele está recebendo a criptografia da mensagem M1, ele só recebeu uma criptografia CBC normais do M1 mensagem. Então você percebe que agora ele tem um simples forma de quebrar o esquema, ou seja, o que ele vai fazer é que ele vai perguntar: 'É o segundo bloco do texto cifrado C igual ao valor que recebi em minha consulta CPA? Se então eu vou dizer que eu recebi a criptografia de M0, caso contrário eu vou dizer que eu recebi criptografia de M1. Então, realmente o seu teste é C1 onde ele se refere ao segundo bloco de C e C1 refere-se ao segundo bloco de C1 se os dois são iguais, ele diz zero, caso contrário, ele diz um deles. Assim, a vantagem desta adversário vai ser 1 e como um resultado, ele rompe completamente a segurança da CPU deste criptografia CBC. Então a lição aqui é, se o IV é previsível, então, na verdade, não há segurança CPA e , infelizmente, este é realmente um erro muito comum na prática. Em particular mesmo protocolo SSL e em TLS1.1 verifica-se que para número recorde IV I é de fato do bloco de texto última cifra recorde de I-1. Isso significa que exactamente dada a criptografia de disco I-1, o adversário sabe exatamente o que está acontecendo IV para ser usado como I. número recorde Muito recentemente apenas no verão passado esta era realmente convertido em um ataque devastador em SSL. Vamos descrever que um ataque falamos de SSL em mais detalhes, mas agora eu queria ter certeza de você entende quando você usa criptografia CBC é absolutamente crucial que o IV ser aleatória. Ok. Então agora eu vou te mostrar a versão nonce base de criptografia CBC Assim, neste modo, o IV é substituído pelo nonce aleatório, mas não único , por exemplo, o número 1,2,3,4,5. No entanto, se vai ser um contador de você precisa fazer mais um passo. Antes de realmente CBC criptografia e em especial que você tem para realmente criptografar as notas para se obter o IV que irá ser efectivamente utilizado para criptografia. As anotações para CBC é semelhante a um IV aleatória, a diferença é que o notas é primeiro codificado, e os resultados é que o IV é utilizado na CBC criptografia Agora a beleza deste modo é que a Nance não tem necessariamente de ser incluídos no texto codificado. Ele só precisa estar lá, se as suas incógnitas são decrypter, mas que se o decrypter acontece que já conhecem o valor do contra por outros meios, em seguida, na verdade, o texto cifrado é somente tão grande quanto o texto simples. Não há valor extra transmitida no texto cifrado. E, novamente, eu avisar que quando você está usando criptografia espaço não, é absolutamente crucial que a chave comum Nance de reposição só é usado para uma mensagem de forma para cada mensagem, ou Nance o que mudou ou a tecla mudou. Ok, então aqui enfatizar a fato de que você precisa fazer esse passo extra antes de criptografia usando o real Nance. Isso é erro muito comum que realmente esquecido na prática e exemplo, TLS, isso não foi feito e como resultado houve um ataque significativo contra criptografia CBC em TLS. Lembre-se da razão que isso é tão importante para sabem é que na verdade muitas APIs de criptografia são criados para quase deliberadamente enganar o usuário usando CBC incorretamente. Então, vamos olhar para ver como CBC implementado dentro de SSL aberta. Então aqui estão os argumentos da função. Basicamente este é o simples texto, este é o lugar onde o texto cifrado vai ficar gravado. Este é o comprimento do texto simples. Esta é uma, uma tecla Sim Finalmente, há um argumento de que aqui diz se você está crypting ou descriptografar. E o mais importante parâmetro que eu queria salientar aqui é o IV real e, infelizmente, o usuário é solicitado a fornecer este IV ea função usa o IV diretamente no CBC mecanismo de criptografia. Não encriptar a IV, antes de utilizá-lo e, como resultado, se você chamar essa função usando um IV não aleatório, o sistema de criptografia resultando não será CPA seguro. Ok, isso é muito importante saber que ao chamar funções como este. Criptografia SSL Cbc ou aberto ou fornecer um IV verdadeiramente aleatório ou se você deseja que o IV para ser um contador do que você tem para criptografar um contador usando AAS antes de realmente chamar um encrypt CBC e você tem que que você mesmo. Então, novamente, é muito importante que o programador sabe que precisa ser feito caso contrário, a CBC criptografia é inseguro. Um detalhe técnico última sobre CBC é o que fazer quando a mensagem não é um múltiplo do comprimento do bloco do bloco de codificação? Isso é o que fazemos se o bloco de mensagem último é mais curto do que o comprimento do bloco de AES, por exemplo? Assim o bloco de mensagem é passada menos de dezasseis bytes. E a resposta é se somarmos uma almofada para o último bloco de modo que se torna tão longo como dezasseis bytes, contanto que o AES tamanho do bloco. E esta almofada, é claro, se vai ser removido durante a criptografia. Assim aqui é um caminho típico, este é o caminho que é usado no TLS. Basicamente almofada um com N bytes, em seguida, essencialmente o que você faz é escrever o número N, N vezes. Assim, para exemplo, se você pad com cinco bytes, você almofada com a seqüência 555555. Então, cinco bytes onde cada byte é o valor cinco. E a principal coisa sobre este tapete é basicamente quando decrypter a receber a mensagem, o que ele faz é ele olha para o último byte de o último bloco. Então suponho que o valor é cinco, então, ele simplesmente elimina os últimos cinco bytes da mensagem. Agora a pergunta é o que vamos fazer se, de facto, a mensagem é um múltiplo de dezesseis bytes então de fato não pad é necessário? Se não o fizermos pad em tudo, bem que é um problema porque o decrypter vai olhar para o próprio último byte do último bloco que não faz parte da mensagem real e que ele vai para remover este número de bytes a partir do texto simples. De modo que, na verdade seria um problema. Então a solução é, se de fato não há almofada que é necessário, no entanto, ainda tem que adicionar um bloco de manequim. E uma vez que adicionar o bloco manequim este seria um bloco que é basicamente contém dezesseis bytes cada um contendo o número 16. Ok, então vamos adicionar blocos manequim essencialmente dezesseis. O decrypter, que quando ele é descriptografar, ele olha para o último byte do último bloco, ele vê que o valor é 16, pois ele remove todo o bloco. E o que resta é a real texto simples. Então é um pouco lamentável que na verdade se você estiver criptografando curto mensagens com CBC e as mensagens que ser, digamos, 32 bytes, assim que são uma múltiplo de dezesseis bytes, então você tem que adicionar mais um bloco e fazer todos estes mensagens cifradas de 48 bytes apenas para acomodar o preenchimento CBC. Eu deveria menção há uma variante do chamado CBC CBC com texto cifrado roubar que realmente evita este problema, mas eu não vou descrever isso aqui. Se você está interessado você pode olhar que até online. Ok, então isso é o fim da nossa discussão do CBC e no segmento seguinte, verá como utilizar os modos de contador para criptografar múltipla mensagens utilizando uma única tecla.