Loading
Nota de Estudos
Study Reminders
Support
Text Version

Outras Abordagens para Criptografia Autenticada

Set your study reminders

We will email you at these times to remind you to study.
  • Monday

    -

    7am

    +

    Tuesday

    -

    7am

    +

    Wednesday

    -

    7am

    +

    Thursday

    -

    7am

    +

    Friday

    -

    7am

    +

    Saturday

    -

    7am

    +

    Sunday

    -

    7am

    +

Fundamentos of Cryptography Dr. Ashish Choudhury Department of Computer Science International Institute of Information Technology – Bangalore Lecture -35 Compondo CPA Secure Cipher com um Secure MAC Part II (Consulte o Tempo de Slide: 00:28) Bem-vindos a esta palestra. Por isso, o plano para esta palestra é o seguinte. Nesta palestra, continuaremos nossa discussão sobre como compor uma cifra simétrica segura da CPA e uma MAC segura genericamente para obter um esquema de criptografia autenticado. Por isso, já tínhamos visto uma abordagem na última palestra a saber, a criptografada então autenticar abordagem que sempre lhe dá a garantia de que o esquema composto é uma cifra de encriptação autenticada. Nesta palestra, discutiremos outras 2 abordagens a saber: o autenticar então encriptar abordagem e a abordagem de criptografar e autenticar. (Consulte O Tempo De Deslizamento: 01 :00) Então, vamos começar com a abordagem criptografada e autenticada. Assim você recebe uma criptografia de chave simétrica segura e você recebe um MAC seguro CMA forte e é assim que compõe os 2 primitivos usando a abordagem criptografada e autenticada. Assim, o algoritmo de geração de chaves do esquema composto irá escolher de forma independente uma chave para instanciar o componente seguro CPA e para instanciar o componente MAC. E a chave geral para o esquema composto será a dupla (ke, km). Agora para criptografar uma mensagem conforme esta abordagem criptografar e autenticar como o nome sugere nós primeiro criptografamos uma mensagem usando a parte ke da chave e obtemos o texto cifrado c e então estamos autenticando. Por isso, estamos autenticando de forma independente a mensagem m e computando a tag conforme o algoritmo de geração da tag. E a chave que utilizamos para a computação a tag é a parte do km da chave e o texto geral cifrado que obtemos como per o esquema composto será c seguido por t, certo. Portanto, isso é diferente de criptografar então autenticar a abordagem direito. Na criptografada então a abordagem de autenticidade a tag foi computada no texto cifrado, mas aqui nesta abordagem a tag é computada no próprio texto simples. E agora você pode imaginar que a decriptografia acontece analogamente você pega o texto cifrado que a analisa como consistindo de duas partes a c parte e uma parte t. Você primeiro verifica, primeiro decriptografa a c parte do texto cifrado usando a parte de ke da chave e recupera o texto do plano m e então você verifica se a parte da tag t do texto cifrado é uma tag legítima sobre o m partand recuperado se ele assim então você aceita o m recuperado caso contrário você rejeita o m recuperado. Portanto, esse é um algoritmo de decriptografia correspondente. (Consulte O Tempo De Deslizamento: 03:01) Agora você quer analisar a segurança desta abordagem. Acontece que se compusermos a criptografia simétrica segura do CPA e um MAC seguro com esta abordagem então ela não precisa sempre levar a uma cifra de criptografia autenticada. Ele depende da instanciação segura de CPA subjacente e da instanciação subjacente de sua MAC que significa genericamente não é garantido que essa maneira de compor os 2 primitivos sempre vai levar a uma cifra de criptografia autenticada e o problema é o seguinte. Imagine que temos um código de autenticação de mensagens onde o algoritmo de geração de tags é direito determinístico. Por isso, tínhamos visto durante a nossa discussão sobre o código de autenticação de mensagens que no que diz respeito à segurança do código de autenticação da mensagem não é necessário que o seu código de autenticação de mensagens deva ter um algoritmo de geração de tags randomizado. Mesmo que o algoritmo de geração de tags seja determinista podemos alcançar a segurança. Então agora imagine que estamos instanciando essa abordagem criptografada e autenticada usando MAC cujo algoritmo de geração de tags é determinístico. Se este for o caso então uma criptografia de um texto simples m com chave de ke, km conforme o esquema composto sempre produzirá um texto cifrado onde a parte t do texto cifrado permanecerá a mesma, certo porque se você vir a caixa de criptografia aqui para o esquema composto, mesmo que o meu processo de criptografia subjacente seja CPA segura a parte c parte do texto cifrado para a mesma mensagem m certo será diferente porque isso está vindo por causa do fato de que o meu esquema seguro de CPA subjacente será randomizado. Assim, a parte c da criptografia do mesmo m novamente e novamente sob a mesma chave produzirá uma parte c diferente para o texto cifrado geral. É por isso que estou a denotá-lo como *, mas a parte t a saber: a tag parte do texto cifrado que eu vou obter neste esquema composto para a mesma mensagem m sob a mesma chave k será o mesmo sempre vai me dar a mesma tag a saber t certo e se for o caso então é muito fácil para qualquer adversário distinguir uma encriptação da mensagem m0 de uma encriptação da mensagem m1 conforme este esquema composto. E essa é a grande falha nessa abordagem de combinar um esquema seguro CPA com um código de autenticação de mensagem segura não é necessariamente garantido que o esquema composto sempre será uma cifra de criptografia de autenticação. Depende da sua instanciação subjacente do MAC se ela é determinista ou não determinística e é por isso que esta abordagem não é geralmente recomendada. Porque estamos interessados numa abordagem que sempre leve a uma cifra de encriptação autenticada independentemente de saber se independentemente da instanciação do gadget subjacente da CPA e do gadget MAC subjacente. (Consulte O Tempo De Deslizamento: 06:02) Então agora vamos discutir a terceira abordagem usando a qual podemos compor um esquema seguro CPA e um código de autenticação de mensagens esta abordagem é chamada como a abordagem de criptografar então criptografar. Então novamente somos novamente dois primitivos um primitivo CPA seguro e um código de autenticação de mensagens primitivas e o esquema composto é o seguinte. Assim, o algoritmo de geração de chaves irá saída de uma chave para a primitiva de CPA segura de forma independente. E a chave para o código de autenticação de mensagens de forma independente e a chave geral será ke e km então agora como o nome sugere para criptografar a mensagem o que fazemos é primeiramente autenticar a mensagem. Portanto, autenticar o texto simples utilizamos a chave do km da chave geral e computar a tag e agora uma vez que a tag é obtida tanto a mensagem como a tag eles são combinadas são concatenadas, e então que é considerada como o novo texto simples e criptografado usando a parte ke da chave geral e o texto cifrado é obtido e o texto geral cifrado que obtemos que do esquema composto é considerado o c e é por isso que o nome autenticado então criptografa. Nós estamos primeiramente autenticando a mensagem e tratando-a própria como a parte do texto simples anexando-a ao texto simples. E então o texto simples anexado e a tag é criptografada conforme o esquema seguro de CPA subjacente para obter o texto cifrado geral do esquema composto e você pode pensar a operação de descriptografia analogamente, você tem um texto cifrado para descriptografar o que você faz é primeiro descriptografar o texto cifrado conforme o algoritmo de decriptografia do esquema seguro da CPA subjacente e a saída resultante você analisá-lo como 2 componentes a parte da mensagem, e a parte da tag e então você verificar se a parte t da saída recuperada é realmente uma tag válida na parte de m recuperada se for então aceita a parte m Caso contrário você rejeita a parte m e de saída bot que é o algoritmo de decriptografia correspondente. (Consulte o Tempo do slide: 08 :14) Então agora queremos analisar que é essa abordagem de compor o esquema seguro CPA e um código de autenticação de mensagens sempre vai levar a uma cifra de criptografia autenticada independentemente da instanciação subjacente do esquema seguro CPA e da instanciação do componente MAC subjacente e verifica-se que a resposta é não. Essa abordagem não precisa sempre garantir a você uma cifra de criptografia autenticada. Na verdade o que vamos mostrar agora é vamos ver que o modo CBC de criptografia para criptografar mensagem longa arbitrária quando composto com qualquer MAC seguro como por esta abordagem a saber, autenticar então a abordagem de criptografar não precisa dar a você uma cifra de criptografia autenticada. (Consulte Slide Time: 09:00) Então basta relembrar o que exatamente é o modo CBC de criptografia nós não provamos formalmente que ele é seguro CPA, mas há uma prova bem conhecida de que realmente o modo CBC de criptografia é um modo seguro CPA de criptografia. Assim, no modo CBC de criptografia somos dados uma permutação pseudo aleatória chaveada e aqui estou assumindo que um comprimento de chave é n bits e o comprimento do bloco é L bytes. E há 2 maneiras pelas quais o modo CBC de criptografia funciona dependendo se o número de bytes no texto simples que você deseja criptografar é um múltiplo de L ou não. Se for um múltiplo de L então basicamente você divide sua mensagem em vários blocos de L bytes e aqui é como você faz o cálculo de texto cifrado. Você começa com um aleatório IV e depois faz o chaining. Aquele aleatório IV ele é XORed com o primeiro bloco da mensagem e então a saída é considerada como a entrada de blocos para a primeira chamada do seu F e que é um primeiro bloco de texto cifrado e que primeiro bloco de texto cifrado é xor com o bloco seguinte da mensagem e que é considerado como a entrada para a segunda instanciação de F e saída é o segundo bloco de texto cifrado e assim por diante e é por isso que o nome chaining aqui cifrou bloqueio de texto que está chavando aqui. (Consulte O Tempo De Deslizamento: 10:18) Por outro lado, se a mensagem que você deseja criptografar se o número de bytes não for um múltiplo de L então você precisa fazer algum preenchimento aqui e nós tivemos discutido um dos preenchimento popular a saber: o preenchimento PKCS versão 5 que é um preenchimento altamente popular usado praticamente e ideia deste preenchimento é o seguinte. Então imagine que deixe b ser o número de bytes que você deseja anexar ao último bloco do texto simples para garantir que o número de bytes, e a mensagem padicionada seja um múltiplo de L. Então o que fazemos é uma vez que identificamos o valor de b adicionamos ou preenchemos aqueles muitos bytes para o último bloco de mensagem e cada um desses bytes representa o valor b e uma vez que agora temos a mensagem padicionada nós computamos a criptografia conforme o modo CBC usual de criptografia. Para fazer a decriptografia executamos a decriptografia conforme o modo CBC usual de decriptografia e agora temos que remover o preenchimento. Para remover o preenchimento o que fazemos é tiramos o último bloco da mensagem recuperada neste exemplo vamos dizer m2 ’ e tiramos o último byte e lemos o valor b e depois vemos se todos os últimos b bytes representam o valor b ou não; se é se a resposta for sim então simplesmente removemos aqueles bytes porque agora sabemos que são os bytes preenchidos e tirar a coisa restante como o texto simples recuperado. Considerando que no último b se qualquer um dos últimos b byte não representa o valor b então nós saída o algoritmo de decriptografia saídas mal preenchimento de mau enchimento. Então você pode estar se perguntando que o número de bytes que precisamos para pad pode estar na faixa de 0 L – 1, 0 porque pode o caso de que o número de bytes e a mensagem já é um múltiplo de L nesse caso nós não tivemos que adicionar nada. E L – 1 porque pode ser o caso de que o último bloco da mensagem seja apenas 1 byte minutos em que caso precisamos adicionar um preenchimento de L – 1 bytes, mas isso não é o caso porque precisamos de um preenchimento invertível ou um preenchimento inequívoco para garantir que a decriptografia aconteça adequadamente e para garantir que o número real de bytes que precisamos para preencher deve estar na faixa 1 para L. Isso significa se não precisarmos pad nada então para indicá-lo ao receptor de forma inequívoca precisamos adicionar um bloco de dummy completo consistindo de L número de bytes todos eles representando o inteiro L direito. Então, é por isso que o intervalo de b não está na faixa de 0 L – 1, mas sim é na faixa de 1 L. (Consulte o Tempo do slide: 12:59) Então agora o que vamos discutir é que agora o que nós vamos discutir é que o modo CBC de criptografia não é CCA seguro e para fins de demonstração eu estou considerando uma instância onde diz sender tem a mensagem em que o primeiro bloco de tamanho n bits e o segundo bloco não é um tamanho n bits como resultado um remetente fez um preenchimento e assim tem preenchida o preenchimento necessário composto por 2 blocos. E ele criptografa a mensagem padicionada conforme o modo CBC de criptografia. O bloco de texto cifrado resultante são c0 c1, c2 e eu chamo este último bloco da mensagem a saber o bloco com o preenchimento como 2 e lembre-se que a maneira como um receptor vai realizar a decriptografia do texto cifrado c0, c1, c2 é a seguinte: para recuperar o bloco 2 ele vai primeiramente computar o inverso da função pseudo aleatória de função aleatória ou pseudo permutação aleatória com a chave k na entrada c2. E o que quer que saia como o resultado que vai xor com o texto cifrado bloco c1 e que lhe dará 2 direito e adversário também está ciente desse processo de decriptografia. O que adversário não é saber neste caso é o valor da chave k. Agora a observação interessante aqui é que qualquer modificação que seja feita neste primeiro bloco de texto cifrado a saber: c1 vai resultar na modificação correspondente no bloco recuperado 2 após a decriptografia da CBC direita. Então deixe-me demonstrar o que quero dizer com isso então imagine que remetente enviou este texto cifrado c0, c1, c2 e imagine que adversário modificou o texto cifrado para outro texto cifrado em que apenas o bloco de texto cifrado c1 é alterado para c1 ’ onde c1 ’ não passa de xor do c1 real com algum valor onde é conhecido o adversário. Agora quando o receptor recebe este texto cifrado modificado e se ele tentar decriptografar e recuperar o segundo bloco de mensagens de preenchidos então ele vai resultar no que o receptor real deve resultar em qual receptor deve recuperar xor com porque agora em vez de c1 o receptor vai realizar uma decriptografia usando c1 xor com porque meu primeiro bloco de texto cifrado agora é modificado para c1 ’. Onde c1 é xor do [lambda] com c1 real so que significa que o recuperado 2 será o real 2 xor com e a ideia dessa insegurança CCA do modo CBC da criptografia é que desde adversário sabe-se que qualquer alteração que faça em c1 vai resultar no efeito correspondente enquanto decriptografar 2 no adversário final de recebimento pode utilizar este fato através da emissão de cifração modificada de texto. E submetê-lo como decriptografia oracle queries e com base na resposta da decriptografia baseada na resposta que vê a partir do decriptografia oracle service adversário pode descobrir qualquer byte específico de m que o adversário está interessado. (Consulte O Tempo De Deslizamento: 16:56) E este ataque é chamado como um ataque de preenchimento oracle por que é chamado de ataque de padding oracle o nome será claro em breve. Então imagine um cenário em que agora temos um remetente e um receptor e digamos que remetente tem uma mensagem formada por 2 blocos e dizer que ele preencheu o segundo bloco com o número necessário de bytes conforme o modo CBC de criptografia e o preenchimento PKCS. E o texto cifrado resultante foi comunicado ao receptor e o adversário não sabe o valor da chave, não conhece o conteúdo do bloco m1 e m2, mas sabe ou sabe a relação que como exatamente a decriptografia vai acontecer na extremidade de recebimento. Agora o que esse adversário faz é interceptar esse texto cifrado e ele produz um novo texto cifrado substituindo o primeiro bloco de texto cifrado por outro texto cifrado bloco c1 ’ em que c1 ’ é diferente de c1 apenas no primeiro byte. E aguarda para ver a resposta do receptor a saber: espera para ver o que exatamente é a saída do algoritmo de decriptografia na extremidade de recebimento e isso pode acontecer no mundo real certo porque o receptor está pensando que o texto cifrado c0, c1 ’, c2 veio do emissor e vai decriptografar esse texto cifrado conforme o algoritmo de decriptografia CBC e dependendo se o preenchimento está correto ou não ele vai aceitar a mensagem se o preenchimento estiver correto ou se vai a saída incorreta padding mensagem de preenchimento incorreta. Assim, essa saída do lado receptor pode ser agora observada por aquele atacante. Então o que o atacante faz é se ver que a resposta do algoritmo de decriptografia do receptor é mau preenchimento então ele dá uma indicação para o adversário que o valor do número de bytes que foram preenchidos é L e isto ocorre porque o preenchimento ruim ocorrerá apenas quando o receptor executar a decriptografia, o último byte que ele obtém no m2 recuperado tem o valor L. E conforme o algoritmo de decriptografia o receptor teria passado todos os bytes L no bloco m2 recuperado e teria verificado se todos eles representam o valor L ou não, mas o que o adversário fez foi ele fez alterações no primeiro byte do primeiro bloco de texto cifrado que teria realmente alterado o primeiro byte do segundo bloco recuperado que não seria o mesmo que o valor L. E então somente o algoritmo de decriptografia teria lançado a mensagem de erro preenchimento que significa se a mensagem de erro de preenchimento ruim estiver vindo como resposta do lado do receptor então isso dá uma implicação ao adversário que o que exatamente é o valor de número de bytes que foram preenchados e que em si mesmo é uma quebra de segurança porque se em todo o modo CBC de criptografia teria sido seguro, então até a quantidade de preenchimento que foi feita por o remetente deveria ter sido escondido do adversário, mas agora você pode ver claramente aqui um ataque pelo qual o adversário apenas por ter acesso ao serviço de oracle de decriptografia pode identificar o que exatamente é o valor do número de bytes que foram preenchados e isto também significa que por que este ataque é chamado como o ataque de oráculo de enchimento. Pois apenas modificando os bytes no bloco de texto da primeira cifração e vendo a resposta do adversário do receptor é basicamente conhecer se que tipo de preenchimento foi feito se o preenchimento satisfaz algum relacionamento ou não e é por isso que o nome padding oracle attack, adversário está obtendo acesso a algum tipo de oráculo de preenchimento aqui. Da mesma forma o que esse adversário poderia fazer é que poderia produzir outro texto cifrado modificado onde em vez de alterar o primeiro byte ele agora está mudando o segundo byte do primeiro bloco de texto cifrado e ele aguarda para ver a resposta do receptor. Novamente se a mensagem de erro de preenchimento ruim sair do lado do receptor então isso dá uma indicação para o adversário que a quantidade de bytes que foram preenchidos é L – 1. Porque já que o adversário está mudando o segundo byte de c1 que irá de fato alterar o segundo byte do bloco m2 recuperado e se o erro de preenchimento ruim vier ele virá apenas porque o valor de b é L – 1 em que caso o receptor teria esperado todos os L-1 bytes do recupera m2 para representar o valor L – 1 certo mas isso não vai acontecer mas porque o segundo byte do m2 recuperado já mudou no fim da decriptografia. Portanto, se em toda a mensagem de erro de preenchimento ruim vem aqui então que dá uma indicação ao adversário que o valor de b é L – 1 e não só isso, adversário pode de fato manter em enviar texto cifrado modificado como este suponha que submeta outro texto cifrado modificado onde ele apenas altera a última parte de c1 e novamente se a resposta do lado do receptor for mau preenchimento então ele dá uma indicação para o adversário que o valor de b = 1. Então o que basicamente agora o resumo é que o adversário pode preparar L número de texto cifrado modificado onde no primeiro texto cifrado modificado o primeiro byte é alterado e o segundo texto cifrado modificado e o segundo byte de c1 alterado e o terceiro texto de cifração modificado o terceiro byte de c1 foi alterado e assim por diante e é apenas aguarda para ver que do texto cifrado modificado o receptor está enviando mensagem de preenchimento ruim e quando ele não está enviando mensagem de preenchimento ruim. Por isso, verifica-se que o byte mais modificado da esquerda para o qual o erro de preenchimento é recebido do lado receptor ou do lado receptor revela o valor de b a saber o valor de bytes de preenchimento e que por si só é uma quebra de segurança aqui certo. (Consulte O Slide Time: 22 :59) Então agora o que vamos mostrar é que não só o adversário pode aprender a quantidade de bytes que foi preenchida pelo remetente. Ele também pode aprender qualquer byte de mensagem específico no qual o adversário está interessado. Então imagine que o adversário já aprendeu o valor do valor de b a saber, o número de bytes que foram preenchidos e agora quer aprender o último byte da mensagem que é agora desconhecida para o atacante. E ideia novamente aqui é o mesmo adversário vai continuar brincando com os alguns bytes específicos do primeiro bloco de texto cifrado e ele enviará o texto cifrado modificado para o receptor o que realmente significa que ele está tentando obter o serviço de oracle de decriptografia e baseado na resposta que vê do receptor se foi emitido um erro ou não ele aprende alguma relação entre o byte B desconhecido e o valor de b que agora é conhecido do atacante. E com base nessa relação ele pode recuperar completamente o conteúdo do valor de byte desconhecido B. Então, aqui é como ele é executado. Então, o que um adversário não é ele prepara o bloco modificado que eu denote como eu e o que está acontecendo neste bloqueio modificado i é que um último b bytes representa cadeia binária correspondente ao xor do valor b e b + 1. Sendo assim, é o que é o conteúdo binário dos últimos b bytes. E o byte b + tinto do último aqui representa o valor i, i em inteiro. Portanto, é o que é o bloco modificado i que o adversário computou e agora o que ele faz é em vez de encaminhar o texto cifrado real c0, c1, c2 ao receptor, ele encaminha o texto cifrado modificado para o receptor em nome do remetente onde no texto cifrado modificado o primeiro texto cifrado é um xor do c1 existente e i. E agora se você relembrar a forma de descriptografia vai acontecer na extremidade de recebimento para este texto cifrado modificado; no bloco m2 recuperado os últimos b bytes terão agora o valor b + 1 Considerando que o byte de b + 1 terá o conteúdo B a saber, o byte desconhecido xor com i por causa do fato de que o m2 recuperado teria sido computado por este direito de operação e agora após recuperar este bloco m2 o que o receptor vai fazer é analisar o último conteúdo de byte que é b + 1. Assim, pensará que como se o remetente tiver padicionado b + 1 número de bytes e ele analisará se todos os últimos b + 1 bytes representa o valor inteiro b + 1 ou não. Se não for então ele vai lançar uma mensagem de erro, a saber, um mau preenchimento caso contrário ele irá proceder para descriptografar um m2 recuperado direito. Então isso significa se a mensagem bad padding vem como resposta do receptor então adversário aprende que o byte desconhecido contém B xor com i não é igual a b + 1. Considerando que se a mensagem de preenchimento ruim não sai isso significa que o byte b x xor com i é = b + 1 direito. Assim, isso dá a equação do adversário no byte desconhecido b e todo o resto agora é conhecido do atacante o valor de i é conhecido o valor de b é conhecido então ele pode simplesmente resolver essa equação e aprender o byte desconhecido b e realizando um ataque similar basicamente adversário pode aprender qualquer byte específico da mensagem em que o adversário se interessa por aqui certo. Agora você pode ver claramente que apenas ao obter um serviço de oracle de decriptografia aqui a saber, um serviço de oracle de preenchimento aqui se o preenchimento está correto ou não para o adversário de texto cifrado modificado poderia aprender acabar aprendendo a não apenas a quantidade de bytes que foram preenchidos pelo remetente, mas também qualquer bytes de mensagem específico. (Consulte O Tempo De Deslizamento: 27 :08) Então, isso mostra que o modo CBC de criptografia não é seguro CCA, mas é seguro CPA. Então agora vamos voltar para esta abordagem de autenticar então criptografemos e então vamos ver como exatamente este esquema composto que vamos obter por esta abordagem autenticada então criptografar se parecerá se instanciamos o esquema seguro de CPA subjacente pelo modo CBC de criptografia e tomarmos qualquer instanciação MAC que seja segura. Assim, a forma como a criptografia vai acontecer neste esquema composto será a seguinte. Então imagine que você tem um texto simples então primeiro nós vamos computar a tag nessa mensagem porque estamos no authenticate então criptografar abordagem. Uma vez que computamos a tag então essa mensagem geral e a tag juntas são tratadas como um texto simples para ser criptografado conforme o modo CBC de criptografia e para fazer o modo CBC de criptografia. Dependendo se esta mensagem e a tag por completo o número de bytes concatenados com t é um múltiplo do número de bytes que está presente na permutação pseudoaleatória subjacente temos que fazer um preenchimento a saber: temos que fazer um preenchimento de PKCS preenchimento. Então assuma p denota os bytes que nós preenchemos por completo esta coisa toda agora é criptografada conforme o modo CBC de criptografia. Sendo assim, é assim que o texto cifrado vai sair no esquema composto conforme o autenticado então criptografar abordagem se usarmos o modo CBC de criptografia para instanciar o esquema de encriptação segura do CPA subjacente. No final da decriptografia o que vamos fazer é se obtermos um texto cifrado c cap o primeiro decriptografado conforme o modo CBC de descriptografia e sobre decriptografia qualquer que obtenhamos nós o tratamos como mensagem seguido de tag seguido do preenchimento e se primeiro verificamos o preenchimento do preenchimento e se o preenchimento não for adequado ou ele não satisfaz a exigência de preenchimento de preenchimento de preenchimento de PKCS, mas se o preenchimento é adequado então nós tiramos o preenchimento do preenchimento e, em seguida, apenas focamos na mensagem, na parte da tag e depois verificamos se a parte t da coisa recuperada é realmente uma tag adequada na parte de mensagem recuperada ou não se não então nós lançar uma mensagem de erro de autenticação. A parte interessante para notar aqui é qual é, na verdade, a causa raiz do problema é que, que uma tag t que estamos computando no final da criptografia ele apenas mantém a integridade da mensagem m, mas não precisa fazer nada com o preenchimento que estamos fazendo para realmente criptografar a coisa toda conforme o modo CBC de encriptação direito. Por isso, a tag t não protege a integridade do pad p. (Consulte O Tempo De Deslizamento: 30:01) Também é possível ver aqui que 2 tipos de mensagens de erro são lançadas durante a decriptografia. O erro de preenchimento é emitido primeiro se o preenchimento em si estiver incorreto, mas se o preenchimento estiver correto então nós iremos mais longe e verificaremos se a parte da tag está correta ou não e, assim, lançamos um erro de autenticação direito. Portanto, a ideia que pode ser explorada aqui pelo adversário para provar que esse esquema composto não é CCA seguro como o seguinte. Imagine que um adversário tente bagunçar esse processo de criptografia ao chegar a um novo texto cifrado de sua própria. Por isso, para chegar a novo texto cifrado basicamente ele tem que chegar com algum c ’ e ele pode encaminhá-lo aqueles c ’ para o receptor e esperar para ver que tipo de mensagens de erro são lançadas pelo receptor. Acontece que se no decrinypting c ’ o preenchimento de preenchimento ficar incorreto, então essa mensagem de erro será emitida mais rápido que significa texto cifrado que estão tendo preenchimento incorreto serão rejeitados mais rápido comparado com texto cifrado que possuem preenchimento correto mas a tag MAC incorreta e que por si mesmo é uma espécie de pista para o adversário identificar a quantidade de preenchimento que aconteceu na extremidade de encriptação que significa dependendo da mensagem de erro que vai ser lançada pelo receptor, se a mensagem de erro é rápida que significa que corresponde a uma mensagem de erro de preenchimento de padding e se o erro mensagem é realmente a mensagem de erro de preenchimento ruim então adversário pode exatamente jogar o mesmo tipo de papel que tínhamos visto no ataque de padding oracle onde ele pode tentar modificar texto cifrado e tentar bagunçar o bloco de texto cifrado para ver se está recebendo a mensagem de erro de preenchimento ou não. E basicamente o adversário acaba obtendo acesso de canal de cronograma de preenchimento de oracle e dependendo da resposta do receptor pode acabar aprendendo os bytes específicos da mensagem em que ele está interessado. De modo que ’ s a principal fonte de problema aqui assim mesmo que tenhamos uma instanciação subjacente do processo de criptografia simétrica que é a CPA segura a saber o modo CBC da criptografia a maneira como estamos compondo o esquema aqui a tag t, ele não impede a autenticidade do pad e que dá ao adversário a alavancagem para chegar a qualquer texto cifrado modificado e obter acesso ao ataque oracle padding e que garante que o esquema geral composto não é CCA seguro e é por isso que esta abordagem geral de autenticar então não é a abordagem correta para compor um esquema seguro CPA com um seguro MAC. Então isso me leva até o final desta palestra. Só para resumir nesta palestra tivemos visto 2 outras abordagens de compor uma criptografia simétrica segura e um MAC seguro e verifica-se que nenhuma dessas 2 abordagens sempre genericamente implica em um esquema de criptografia autenticado. Por isso, é por isso que não devemos ir atrás dessas abordagens. Devemos ir para a abordagem a saber: encriptar do que autenticar abordagem que sabemos que sempre vai a