Nos Estados Unidos, os GOSTs também são mais ou menos. Vulnerabilidade fatal do YubiKey FIPS que poderia ter sido evitada



Olá% username%!

Em 13 de junho de 2019, a Yubico, fabricante de dispositivos de autenticação de dois fatores, emitiu um aviso de segurança informando a vulnerabilidade crítica de alguns dispositivos Yubikey FIPS. Vamos ver o que é essa vulnerabilidade e como ela pode ser evitada.

Prefácio


Os Estados também têm seus próprios GOSTs, chamados FIPS - Federal Information Processing Standard. Hardware e software com o qual o estado. estruturas necessárias para cumprir o FIPS.

De acordo com os colegas que conhecemos no EuroCrypt 2019, a certificação FIPS é uma coisa enorme, a ponto de os especialistas em FIPS chegarem até você, iniciar o software no modo de depuração, alterar os valores na memória e verificar se ele cai onde se destina.

Apesar disso, obter a certificação e tornar-se compatível com FIPS é real. Portanto, os produtos e empresas que prestam serviços ao estado, existem muitas vezes mais que os nossos.

ECDSA


Dentro do token usb do Yubico, há um armazenamento de chaves e um mecanismo que implementa, incluindo ECDSA. Durante o registro, a chave pública do token é transferida para o servidor e armazenada.

E no login, o servidor envia uma sequência aleatória para o cliente, que assina junto com as meta-informações, como, por exemplo, um domínio.

Em poucas palavras, como funciona o ECDSA ou a assinatura digital nas curvas elípticas. Alguns detalhes são omitidos para facilitar a apresentação:

  1. Consideramos o hash da mensagem e o convertemos em um número. .
  2. Geramos um número aleatório criptograficamente forte k.
  3. Calcular ponto onde G é o ponto base da curva chamado gerador (constante)
  4. Calculamos onde n é a ordem do ponto base (constante)
  5. Calculamos onde d é a chave privada
  6. A assinatura digital consiste em um par de números r, s

É fundamental que o número k não seja apenas secreto, mas sempre diferente. Caso contrário, torna-se possível calcular a chave privada.

Por exemplo, temos duas assinaturas (r, s) e (r1, s1), que foram recebidas para diferentes mensagens m e m1, mas com a ajuda do mesmo segredo k. Vamos calcular a chave privada.

  • O atacante calcula e e e1.
  • Desde então podemos descobrir k.
  • Desde , então podemos calcular d.
  • d - chave privada

Se os números k forem diferentes, mas não totalmente , também é possível calcular a chave privada, basta forçar um pouco. A propósito, em 2013, eu já escrevi como o DSA desajeitado (EC) implementado quebrou no PlayStation e em outros produtos, eu recomendo a leitura.

Yubico


Portanto, em vários produtos Yubico FIPS, ocorreu um erro em que os números k imediatamente após ativar o token não eram inteiramente aleatórios. E havia uma oportunidade real de calcular a chave privada conectada dentro. Portanto, eles recuperaram dispositivos vulneráveis ​​e emitiram uma notificação.

O que poderia ser feito?


De um modo geral, o problema já foi resolvido. Desde 2013, existe o RFC 6979 , que descreve um ECDSA determinístico obtido a partir do usual por meio de várias modificações simples. Além disso, em 2014, ao desenvolver o padrão U2F, foi precisamente por causa de possíveis problemas com o RPS que o FIPS propôs abertamente a mudança para o ECDSA determinístico, mas a oferta foi rejeitada. Esse é um dos motivos pelos quais o FIPS representa os padrões F * cked-up, Insecure, Persnickety Standards.

O Yubico pode atender formalmente aos requisitos do FIPS para a aleatoriedade do número k, mas usar a solução alternativa, gerando k deterministicamente e, em seguida, fazer o XOR com o fato de que emitiu um RNG (ou executando tudo pelo KDF). No entanto, isso não foi feito.

E nós?


E nós temos a mesma coisa. GOST R 34.10-2012 - essencialmente o mesmo ECDSA, apenas com curvas diferentes. Os requisitos para gerar o número k permanecem os mesmos do ECDSA tradicional. Algum dos fabricantes de nossos tokens executa a solução descrita acima? Ele usa a versão determinística do ECDSA? Eu duvido.

Se houver representantes de desenvolvedores russos, seria interessante ouvir a opinião deles sobre esse assunto. Ou pelo menos para manter isso em mente.

Obrigado pela atenção.

Source: https://habr.com/ru/post/pt456494/


All Articles