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.