Qual é a vantagem do XTS sobre o modo CBC (com difusor)?
On Novembro 30, 2020 by adminTenho alguns problemas em compreender a “vantagem” do AES-XTS em comparação com o CBC com difusor.
Li algo sobre FileVault , neste artigo eles mencionam os dois modos de operações XTS e CBC (com difusor) e as vantagens do XTS.
Ambos os modos criptografam unidades de dados quase da mesma maneira. Para CBC, o número do setor é de alguma forma usado para construir o IV, para XTS, há um “valor de ajuste”, que também inclui (de alguma forma) o deslocamento do bloco, de modo que cada bloco de dados pode ser criptografado independentemente (faz sentido ao criptografar discos rígidos / partições). Não consigo ver realmente a vantagem do XTS.
Agora, eles escrevem o seguinte sobre o XTS:
Existem várias vantagens sobre as alternativas como AES em CBC: não há requisitos para um vetor de inicialização (a chave de ajuste pode ser derivada do número do bloco); cada bloco é criptografado de maneira diferente (já que o valor de ajuste será diferente); e, ao contrário do AES-CBC, o AES-XTS evita que um invasor altere um bit específico em uma unidade de dados xorando cada entrada AES com uma versão diferente do ajuste criptografado.
Talvez eles apenas comparem XTS com CBC (sem difusor) … se sim, alguém conhece alguma vantagem do XTS?
E alguém pode explicar a segunda vantagem: “AES- O XTS evita que um invasor mude um bit específico em uma unidade de dados xorando cada entrada AES com uma versão diferente do ajuste criptografado. “?
Comentários
- Qual ' s " difusor "? " o número do setor é de alguma forma " como? Você não ' não descreveu o esquema claramente. Se o algoritmo for previsível, isso levará a fraquezas, e um algoritmo imprevisível é caro.
- @CodesInChaos Acho que a referência é para Microsoft ' s Elephant diffuser usado no BitLocker ( download.microsoft.com/download/0/2/3/… – aviso: downloads PDF ).
- Bem-vindo ao Cryptography Stack Exchange. Sua pergunta foi migrada aqui por não estar diretamente relacionada ao desenvolvimento de software (o tópico Stack Overflow) e por estar mais no tópico aqui. Registre sua conta aqui também para poder comentar e aceitar uma resposta.
Resposta
XTS x CBC não difuso. O problema aqui é maleabilidade . Tanto o XTS quanto o CBC evitam que um invasor descubra informações sobre os dados criptografados. No entanto, nenhum dos dois conseguiu impedir completamente que um invasor adulterasse dados criptografados.
No entanto, é indiscutivelmente mais fácil adulterar um texto cifrado CBC (não difundido) do que adulterar um texto cifrado XTS. Digamos que um invasor saiba que alguma mensagem diz
“blá, blá, Dê a Alice \ $ 400 … blá, blá blah “.
Se esta mensagem for criptografada usando CBC, o invasor pode adulterar o texto cifrado de forma que agora será descriptografado para
“blá, blá! ^% @ ^^ Dê a Alice \ $ 800 blá, blá, blá”
O \ $ 400 tornou-se \ $ 800. É a isso que se refere a sua citação sobre “AES-XTS impede que um invasor mude um bit específico em uma unidade de dados”. Aqui eu escrevo! ^% @ ^^ para indicar que o bloco anterior de 16 bytes se tornará algo confuso depois de descriptografado, e esse jargão estará além do controle do invasor.
Por outro lado, usando XTS evita esse ataque. O invasor pode corromper uma mensagem transformando qualquer bloco de 16 bytes em um jargão aleatório, mas não poderá ter o mesmo grau de controle que tinha no exemplo CBC.
Mas A Microsoft decidiu não usar o XTS de qualquer maneira. O motivo é que a capacidade de corromper um bloco de 16 bytes ainda pode ser prejudicial. Aqui está a citação do documento com link:
Por exemplo, pode haver um arquivo de configuração (ou entrada de registro) com um valor que, quando definido como 0, cria uma brecha de segurança no sistema operacional. No disco, a configuração é semelhante a “enableSomeSecuritySetting = 1”. Se o início do valor cair em um limite de 16 bytes e o invasor randomizar o valor do texto simples, há uma $ 2 ^ {16} $ chance de que os primeiros dois bytes do texto simples será 0x30 0x00, que é uma string que codifica o valor ASCII 0.
(Esta citação se refere à cifra ajustável LRW, mas a cifra ajustável XEX usada no XTS tem o mesmo problema).
Adicionando um difusor. Usando um difusor é a solução da Microsft para esse problema.A ideia aqui é “misturar” o texto simples antes de criptografá-lo para que um invasor não possa mudar \ $ 400 para \ $ 800 — interferir com parte do texto cifrado mudará quase todo o texto simples, não apenas pequenas partes dele.
Isso parece bom, mas há uma pegadinha: ninguém realmente sabe se o difusor da Microsoft é realmente seguro. Até onde sei, ele não recebeu nenhuma análise formal publicada de criptógrafos. Isso significa que você deve ser cético quanto a confiar nele. A Microsoft reconhece isso:
No lado negativo, o difusor é um novo algoritmo não comprovado e isso inevitavelmente leva a dúvidas. Sem amplo escrutínio público e análise de um algoritmo, há um ceticismo justificado sobre sua segurança. As pessoas relutam em confiar em novos algoritmos. Então, por que escolhemos essa opção? Em nossa análise final, decidimos que essa era a melhor escolha para nosso produto. O ganho de desempenho sobre as alternativas foi importante o suficiente para compensar as desvantagens de um novo algoritmo difusor. O tempo dirá se fizemos a escolha certa.
Resultado final. XTS é menos maleável do que CBC não difundido. No entanto, CBC + Diffuser é provavelmente menos maleável que XTS, pelo menos para fins práticos.
Um aspecto importante. Nem CBC nem XTS foram projetados para serem não maleáveis. Garantir que os textos criptografados não sejam violados é um problema à parte, que deve ser resolvido com o uso de códigos de autenticação de mensagem (MACs), como HMAC-SHA256. Os motivos pelos quais os MACs não são normalmente usados para algoritmos de criptografia de disco completo são (1) problemas de desempenho e (2) o uso de um MAC exige o armazenamento de informações extras com o texto cifrado, o que torna sua adição transparente um pouco complicada.
Um meio-termo entre MACs e difusores seria usar um modo de criptografia de bloco amplo, como CMC, EME ou HEH. Você pode pensar nisso como tendo um difusor “embutido”, que os torna não maleáveis. Ao contrário do difusor da Microsoft, esses algoritmos têm definições formais de segurança e provas matemáticas revisadas por pares. Eles estão seguros com o pressuposto de que o AES é seguro. A Microsoft optou por não usar estes devido a (1) problemas de desempenho e (2) patentes.
Comentários
- No contexto de criptografia de disco simples MACs não são ' bons o suficiente. Você ' precisará do hashtree com uma raiz autenticada.
- obrigado por esta ótima resposta !!! isso deixou tudo claro … 5 *****
- Provavelmente isso não ' t funcionou, mas não ' t o problema de maleabilidade pode ser resolvido criptografando os mesmos dados duas vezes, usando senhas diferentes e / ou algoritmos diferentes? Então, em vez de usar um algoritmo difusor não comprovado, por que não usar o AES comprovado novamente?
- @Yura Isso dependerá de como o AES é usado (o XTS, por exemplo, geralmente é construído sobre o AES). Se você usar o modo CTR-AES duas vezes, o resultado não ' torna-se menos maleável (virar um pouco no texto cifrado ainda inverte o bit correspondente no texto simples). Se você usar o modo CBC-AES duas vezes, ainda poderá fazer o mesmo ataque que mencionei na minha resposta, mas o comprimento do " lixo " dobrará. Finalmente, usar o AES em um modo " wideblock " seguro seria quase tão rápido quanto qualquer uma dessas soluções. Então, pode também fazer isso, em vez disso.
- Atualização: o Windows 10 oferece a opção de usar o modo XTS. Atualização ainda maior / pior: No Windows 8 a Microsoft REMOVEU o difusor. Portanto, o bitlocker do Windows 8 não ' nem tem o difusor.
Deixe uma resposta