Vulnerabilidade nas implementações do algoritmo de criptografia pós-quântico Kyber

Na implementação do algoritmo de criptografia Kyber, vencedor do concurso de criptografia resistente a ataques de computadores quânticos, foi identificada uma vulnerabilidade que permite a realização de ataques por canais laterais para a reconstrução de chaves secretas com base na medição do tempo das operações durante a descriptografia do texto cifrado fornecido pelo atacante. O problema afeta tanto a implementação de referência do mecanismo de encapsulamento de chaves CRYSTALS-Kyber KEM quanto muitas bibliotecas de criptografia de terceiros que suportam Kyber, incluindo a biblioteca pqcrypto utilizada no mensageiro Signal.

A essência da vulnerabilidade, que recebeu o nome de código KyberSlash, está no uso, durante o processo de decodificação da mensagem, da operação de divisão «t = (((t < 1) + KYBER_Q/2)/KYBER_Q) & 1;», onde o dividendo contém o valor secreto «t» do tipo «double» e o divisor é o valor público conhecido KYBER_Q. O problema é que o tempo da operação de divisão não é constante e, em diferentes ambientes, o número de ciclos de CPU necessários para a divisão depende dos dados de entrada. Dessa forma, com base na variação do tempo das operações, é possível obter uma noção sobre a natureza dos dados utilizados na divisão.

Daniel Bernstein, conhecido especialista em criptografia, conseguiu preparar uma demonstração funcional que prova a possibilidade de realizar um ataque na prática. Em dois dos três experimentos realizados na placa Raspberry Pi 2, foi possível reconstruir completamente a chave privada Kyber-512 com base na medição do tempo de decodificação dos dados. O método também pode ser adaptado para chaves Kyber-768 e Kyber-1024. Para a realização bem-sucedida do ataque, é necessário que o texto cifrado fornecido pelo atacante seja processado usando o mesmo par de chaves e que o tempo de execução da operação possa ser medido com precisão.

Nas algumas bibliotecas, foi identificada mais uma vulnerabilidade (KyberSlash2), que também surge devido ao uso de um valor secreto durante a execução da divisão. As diferenças em relação à primeira versão se resumem à chamada na fase de criptografia (nas funções poly_compress e polyvec_compress), e não durante a descriptografia. No entanto, a segunda variante pode ser útil para um ataque apenas em casos onde o procedimento é utilizado em operações de recriptografia, nas quais a saída do texto criptografado é considerada confidencial.

A vulnerabilidade já foi corrigida nas bibliotecas:

  • zig/lib/std/crypto/kyber_d00.zig (22 de dezembro),
  • pq-crystals/kyber/ref (30 de dezembro),
  • symbolicsoft/kyber-k2so (19 de dezembro),
  • cloudflare/circl (8 de janeiro),
  • aws/aws-lc/crypto/kyber (4 de janeiro),
  • liboqs/src/kem/kyber (8 de janeiro).

Bibliotecas que originalmente não eram vulneráveis:

  • boringssl/crypto/kyber,
  • filippo.io/mlkem768,
  • formosa-crypto/libjade/tree/main/src/crypto_kem,
  • kyber/common/amd64/avx2,
  • formosa-crypto/libjade/tree/main/src/crypto_kem/kyber/common/amd64/ref,
  • pq-crystals/kyber/avx2,
  • pqclean/crypto_kem/kyber*/avx2.

A vulnerabilidade permanece não corrigida nas bibliotecas:

  • antontutoveanu/crystals-kyber-javascript,
  • Argyle-Software/kyber,
  • debian/src/liboqs/unstable/src/kem/kyber,
  • kudelskisecurity/crystals-go,
  • mupq/pqm4/crypto_kem/kyber* (20 de dezembro, apenas 1 variante da vulnerabilidade foi corrigida),
  • PQClean/PQClean/crypto_kem/kyber*/aarch64,
  • PQClean/PQClean/crypto_kem/kyber*/clean,
  • randombit/botan (20 de dezembro, apenas 1 variante da vulnerabilidade foi corrigida),
  • rustpq/pqcrypto/pqcrypto-kyber (5 de janeiro, correção adicionada em libsignal, mas a vulnerabilidade em pqcrypto-kyber ainda não foi corrigida).

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster