-
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.