DES triplo - Triple DES

Algoritmo de criptografia tripla de dados
Em geral
Publicado pela primeira vez 1995 (RFC 1851)
Derivado de DES
Detalhe de cifra
Tamanhos de chave 112 ou 168 bits
Tamanhos de bloco 64 bits
Estrutura Rede Feistel
Rodadas 48 rodadas equivalentes a DES
Melhor criptoanálise pública
Lucks: 2 32 textos simples conhecidos, 2 113 operações, incluindo 2 90 criptografias DES, 2 88 de memória; Biham: encontre uma das 2 28 chaves de destino com um punhado de textos simples escolhidos por chave e 2 84 criptografias

Na criptografia , Triple DES ( 3DES ou TDES ), oficialmente o algoritmo de criptografia triplo de dados ( TDEA ou Triple DEA ), é uma cifra de bloco de chave simétrica , que aplica o algoritmo de cifra DES três vezes a cada bloco de dados. A chave de 56 bits do Data Encryption Standard (DES) não é mais considerada adequada em face das técnicas criptanalíticas modernas e do poder de supercomputação. Um CVE lançado em 2016, CVE-2016-2183 revelou uma grande vulnerabilidade de segurança nos algoritmos de criptografia DES e 3DES . Este CVE , combinado com o tamanho de chave inadequado do DES e 3DES, o NIST suspendeu o DES e o 3DES para novos aplicativos em 2017 e para todos os aplicativos até 2023. Ele foi substituído pelo AES mais seguro e robusto .


Enquanto os padrões do governo e da indústria abreviam o nome do algoritmo como TDES (Triple DES) e TDEA (Triple Data Encryption Algorithm), o RFC 1851 se refere a ele como 3DES desde o momento em que promulgou a ideia, e este homônimo desde então passou a ser amplamente utilizado pela maioria dos fornecedores, usuários e criptógrafos.

Padrões

O algoritmo de criptografia tripla de dados é definido de várias maneiras em vários documentos padrão:

  • RFC 1851, The ESP Triple DES Transform (aprovado em 1995)
  • ANSI ANS X9.52-1998 Modos de operação do algoritmo de criptografia tripla de dados (aprovado em 1998, retirado em 2008)
  • FIPS PUB 46-3 Data Encryption Standard (DES) (aprovado em 1999, retirado em 2005)
  • Publicação especial NIST 800-67 Revisão 2 Recomendação para o algoritmo de criptografia de dados triplo (TDEA) Block Cipher (aprovado em 2017)
  • ISO / IEC 18033-3: 2010: Parte 3: Cifras de bloco (aprovado em 2005)

Algoritmo

O tamanho da chave da cifra DES original de 56 bits era geralmente suficiente quando o algoritmo foi projetado, mas a disponibilidade de poder computacional crescente tornou os ataques de força bruta viáveis. O DES triplo fornece um método relativamente simples de aumentar o tamanho da chave do DES para proteger contra tais ataques, sem a necessidade de projetar um algoritmo de criptografia de bloco completamente novo.

A abordagem ingênua para aumentar a força de um algoritmo de criptografia bloco com comprimento de chave curta (como DES) seria a utilização de duas chaves em vez de um, e criptografar cada bloco duas vezes: . Se o comprimento da chave original for em bits, seria de se esperar que esse esquema fornecesse segurança equivalente ao uso de bits de chave longos. Infelizmente, essa abordagem é vulnerável a ataques de encontro intermediário : dado um par de texto simples conhecido , de modo que se possa recuperar o par de chaves em etapas, em vez das etapas que se esperaria de um algoritmo idealmente seguro com bits de chave .

Portanto, Triple DES usa um "pacote chave" que compreende três DES teclas , , e , cada um dos 56 bits (excluindo bits de paridade ). O algoritmo de criptografia é:

Ou seja, DES criptografa com , DES descriptografa com e DES criptografa com .

A descriptografia é o inverso:

Ou seja, descriptografar com , criptografar com e , em seguida, descriptografar com .

Cada criptografia tripla criptografa um bloco de 64 bits de dados.

Em cada caso, a operação do meio é o reverso da primeira e da última. Isso melhora a força do algoritmo ao usar a opção de codificação 2 e fornece compatibilidade com versões anteriores do DES com a opção de codificação 3.

Opções de codificação

Os padrões definem três opções de codificação:

Opção de codificação 1
Todas as três chaves são independentes. Às vezes conhecido como 3TDEA ou chaves de comprimento triplo.
Este é o mais forte, com 3 × 56 = 168 bits de chave independentes. Ele ainda é vulnerável a ataques de encontro no meio , mas o ataque requer 2 2 × 56 etapas.
Opção de codificação 2
K 1 e K 2 são independentes e K 3 = K 1 . Às vezes conhecido como 2TDEA ou chaves de comprimento duplo.
Isso fornece um comprimento de chave menor de 112 bits e um meio-termo razoável entre o DES e a opção 1 de codificação, com a mesma ressalva acima. Esta é uma melhoria em relação ao "DES duplo", que requer apenas 2 56 passos para atacar. O NIST tornou esta opção obsoleta.
Opção de codificação 3
Todas as três chaves são idênticas, ou seja, K 1 = K 2 = K 3 .
Isso é compatível com versões anteriores do DES, uma vez que duas operações se cancelam. ISO / IEC 18033-3 nunca permitiu esta opção, e NIST não permite mais K 1 = K 2 ou K 2 = K 3 .

Cada chave DES tem 8 bytes de paridade ímpar , com 56 bits de chave e 8 bits de detecção de erro. Um pacote de chaves requer 24 bytes para a opção 1, 16 para a opção 2 ou 8 para a opção 3.

O NIST (e as especificações atuais do TCG versão 2.0 de algoritmos aprovados para Módulo de plataforma confiável ) também não permite o uso de qualquer um dos 64 valores de 64 bits a seguir em qualquer chave (observe que 32 deles são o complemento binário dos outros 32; e que 32 dessas chaves também são a permutação reversa de bytes dos outros 32), listados aqui em hexadecimal (em cada byte, o bit menos significativo é um bit gerado por paridade ímpar, ele é descartado ao formar as chaves efetivas de 56 bits) :

01.01.01.01.01.01.01.01, FE.FE.FE.FE.FE.FE.FE.FE, E0.FE.FE.E0.F1.FE.FE.F1, 1F.01.01.1F.0E.01.01.0E,
01.01.FE.FE.01.01.FE.FE, FE.FE.01.01.FE.FE.01.01, E0.FE.01.1F.F1.FE.01.0E, 1F.01.FE.E0.0E.01.FE.F1,
01.01.E0.E0.01.01.F1.F1, FE.FE.1F.1F.FE.FE.0E.0E, E0.FE.1F.01.F1.FE.0E.01, 1F.01.E0.FE.0E.01.F1.FE,
01.01.1F.1F.01.01.0E.0E, FE.FE.E0.E0.FE.FE.F1.F1, E0.FE.E0.FE.F1.FE.F1.FE, 1F.01.1F.01.0E.01.0E.01,
01.FE.01.FE.01.FE.01.FE, FE.01.FE.01.FE.01.FE.01, E0.01.FE.1F.F1.01.FE.0E, 1F.FE.01.E0.0E.FE.01.F1,
01.FE.FE.01.01.FE.FE.01, FE.01.01.FE.FE.01.01.FE, E0.01.01.E0.F1.01.01.F1, 1F.FE.FE.1F.0E.FE.FE.0E,
01.FE.E0.1F.01.FE.F1.0E, FE.01.1F.E0.FE.01.0E.F1, E0.01.1F.FE.F1.01.0E.FE, 1F.FE.E0.01.0E.FE.F1.01,
01.FE.1F.E0.01.FE.0E.F1, FE.01.E0.1F.FE.01.F1.0E, E0.01.E0.01.F1.01.F1.01, 1F.FE.1F.FE.0E.FE.0E.FE,
01.E0.01.E0.01.F1.01.F1, FE.1F.FE.1F.FE.0E.FE.0E, E0.1F.FE.01.F1.0E.FE.01, 1F.E0.01.FE.0E.F1.01.FE,
01.E0.FE.1F.01.F1.FE.0E, FE.1F.01.E0.FE.0E.01.F1, E0.1F.01.FE.F1.0E.01.FE, 1F.E0.FE.01.0E.F1.FE.01,
01.E0.E0.01.01.F1.F1.01, FE.1F.1F.FE.FE.0E.0E.FE, E0.1F.1F.E0.F1.0E.0E.F1, 1F.E0.E0.1F.0E.F1.F1.0E,
01.E0.1F.FE.01.F1.0E.FE, FE.1F.E0.01.FE.0E.F1.01, E0.1F.E0.1F.F1.0E.F1.0E, 1F.E0.1F.E0.0E.F1.0E.F1,
01.1F.01.1F.01.0E.01.0E, FE.E0.FE.E0.FE.F1.FE.F1, E0.E0.FE.FE.F1.F1.FE.FE, 1F.1F.01.01.0E.0E.01.01,
01.1F.FE.E0.01.0E.FE.F1, FE.E0.01.1F.FE.F1.01.0E, E0.E0.01.01.F1.F1.01.01, 1F.1F.FE.FE.0E.0E.FE.FE,
01.1F.E0.FE.01.0E.F1.FE, FE.E0.1F.01.FE.F1.0E.01, E0.E0.1F.1F.F1.F1.0E.0E, 1F.1F.E0.E0.0E.0E.F1.F1,
01.1F.1F.01.01.0E.0E.01, FE.E0.E0.FE.FE.F1.F1.FE, E0.E0.E0.E0.F1.F1.F1.F1, 1F.1F.1F.1F.0E.0E.0E.0E,

Com essas restrições nas chaves permitidas, o Triple DES foi aprovado novamente com as opções de chave 1 e 2 apenas. Geralmente, as três chaves são geradas pegando 24 bytes de um gerador aleatório forte e apenas a opção de codificação 1 deve ser usada (a opção 2 precisa de apenas 16 bytes aleatórios, mas geradores aleatórios fortes são difíceis de afirmar e é considerada a prática recomendada usar apenas a opção 1 )

Criptografia de mais de um bloco

Tal como acontece com todas as cifras de bloco, a criptografia e descriptografia de vários blocos de dados podem ser realizadas usando uma variedade de modos de operação , que geralmente podem ser definidos independentemente do algoritmo de cifra de bloco. No entanto, ANS X9.52 especifica diretamente, e NIST SP 800-67 especifica via SP 800-38A que alguns modos devem ser usados ​​apenas com certas restrições sobre eles que não se aplicam necessariamente às especificações gerais desses modos. Por exemplo, ANS X9.52 especifica que para encadeamento de bloco de cifra , o vetor de inicialização deve obrigatoriamente ser diferente a cada vez, enquanto ISO / IEC 10116 não. FIPS PUB 46-3 e ISO / IEC 18033-3 definem apenas o algoritmo de bloco único e não impõem nenhuma restrição aos modos de operação para blocos múltiplos.

Segurança

Em geral, Triple DES com três chaves independentes ( opção de chave  1) tem um comprimento de chave de 168 bits (três chaves DES de 56 bits), mas devido ao ataque meet-in-the-middle , a segurança efetiva que ele fornece é apenas 112 bits. A opção de codificação 2 reduz o tamanho efetivo da chave para 112 bits (porque a terceira chave é igual à primeira). No entanto, esta opção é suscetível a certos ataques de texto simples escolhido ou texto simples conhecido e , portanto, é designada pelo NIST para ter apenas 80  bits de segurança . Isso pode ser considerado inseguro e, como consequência, Triple DES foi descontinuado pelo NIST em 2017.

Logo do ataque Sweet32

O tamanho de bloco curto de 64 bits torna o 3DES vulnerável a ataques de colisão de bloco se for usado para criptografar grandes quantidades de dados com a mesma chave. O ataque Sweet32 mostra como isso pode ser explorado em TLS e OpenVPN. O ataque Sweet32 prático em conjuntos de cifras baseados em 3DES em TLS exigiu blocos (785 GB) para um ataque completo, mas os pesquisadores tiveram a sorte de obter uma colisão logo após cerca de blocos, que levou apenas 25 minutos.

A segurança do TDEA é afetada pelo número de blocos processados ​​com um pacote de chaves. Um pacote de chaves não deve ser usado para aplicar proteção criptográfica (por exemplo, criptografar) mais do que blocos de dados de 64 bits.

-  Recomendação para codificação de bloco de algoritmo de criptografia tripla de dados (TDEA) (SP 800-67 Rev2)

O OpenSSL não inclui 3DES por padrão desde a versão 1.1.0 (agosto de 2016) e o considera uma "cifra fraca".

Uso

A indústria de pagamento eletrônico usa Triple DES e continua a desenvolver e promulgar padrões baseados nele, como EMV .

As versões anteriores do Microsoft OneNote , Microsoft Outlook 2007 e Microsoft System Center Configuration Manager 2012 usam Triple DES para proteger com senha o conteúdo do usuário e os dados do sistema. No entanto, em dezembro de 2018, a Microsoft anunciou a aposentadoria do 3DES em seu serviço Office 365.

O Firefox e o Mozilla Thunderbird usam Triple DES no modo CBC para criptografar as credenciais de login de autenticação do site ao usar uma senha mestra.

Implementações

Abaixo está uma lista de bibliotecas de criptografia que suportam Triple DES:

Algumas implementações acima podem não incluir 3DES na construção padrão, em versões posteriores ou mais recentes.

Veja também

Referências e notas