Aux États-Unis, les GOST sont aussi des moyens. VulnĂ©rabilitĂ© fatale YubiKey FIPS qui aurait pu ĂȘtre Ă©vitĂ©e



Salut% username%!

Le 13 juin 2019, Yubico, un fabricant d'appareils d'authentification Ă  deux facteurs, a publiĂ© un avis de sĂ©curitĂ© indiquant la vulnĂ©rabilitĂ© critique de certains appareils Yubikey FIPS. Voyons ce qu'est cette vulnĂ©rabilitĂ© et comment elle pourrait ĂȘtre Ă©vitĂ©e.

Préface


Les États ont Ă©galement leurs propres GOST, appelĂ©s FIPS - Federal Information Processing Standard. MatĂ©riel et logiciels avec lesquels l'État. structures nĂ©cessaires pour se conformer Ă  la FIPS.

Selon les collĂšgues que nous avons rencontrĂ©s Ă  EuroCrypt 2019, la certification FIPS est un enfer, mĂȘme au point que des experts FIPS viennent vous voir, lancent votre logiciel en mode dĂ©bogage, modifient les valeurs en mĂ©moire et vĂ©rifient s'il tombe lĂ  oĂč il est prĂ©vu.

MalgrĂ© cela, obtenir une certification et devenir conforme Ă  la norme FIPS est rĂ©el. Par consĂ©quent, les produits et les entreprises qui fournissent des services Ă  l'État sont bien plus nombreux que les nĂŽtres.

ECDSA


À l'intĂ©rieur du jeton USB de Yubico, il y a un stockage pour les clĂ©s et un moteur qui implĂ©mente notamment ECDSA. Lors de l'enregistrement, la clĂ© publique du jeton est transfĂ©rĂ©e sur le serveur et stockĂ©e.

Et lors de la connexion, le serveur envoie une chaßne aléatoire au client, qu'il signe avec les méta-informations, comme par exemple un domaine.

En bref sur le fonctionnement de l'ECDSA ou de la signature numérique sur les courbes elliptiques. Certains détails sont omis pour faciliter la présentation:

  1. Nous considérons le hachage du message et le traduisons en nombre. e=HASH(m).
  2. Nous générons un nombre aléatoire cryptographiquement fort k.
  3. Calculer le point (x,y)=k∗GoĂč G est le point de base de la courbe appelĂ©e gĂ©nĂ©rateur (constante)
  4. Nous calculons r=x mod noĂč n est l'ordre du point de base (constant)
  5. Nous calculons s=k−1(e+r∗d) bmodnoĂč d est la clĂ© privĂ©e
  6. La signature numérique se compose d'une paire de chiffres r, s

Il est essentiel que le nombre k soit non seulement secret, mais toujours différent. Sinon, il devient possible de calculer la clé privée.

Par exemple, nous avons deux signatures (r, s) et (r1, s1), qui ont Ă©tĂ© reçues pour diffĂ©rents messages m et m1, mais en utilisant le mĂȘme secret k. Calculons la clĂ© privĂ©e.

  • L'attaquant calcule e et e1.
  • Depuis s−s1=k−1(e−e1)alors nous pouvons dĂ©couvrir k. k= frace−e1s−s1
  • Depuis s=k−1(e+r∗d), alors nous pouvons calculer d. d= fracs∗k−er
  • d - clĂ© privĂ©e

Si les nombres k sont différents, mais pas tout à fait , vous pouvez également calculer la clé privée, il vous suffit de forcer un peu. Au fait, en 2013, j'ai déjà écrit comment le DSA maladroitement implémenté (EC) s'est cassé sur la PlayStation et d'autres produits, je recommande fortement de le lire.

Yubico


Ainsi, dans un certain nombre de produits Yubico FIPS, il y avait un bogue dans lequel les nombres k immédiatement aprÚs avoir allumé le jeton n'étaient pas entiÚrement aléatoires. Et il y avait une réelle opportunité de calculer la clé privée cùblée à l'intérieur. Par conséquent, ils ont rappelé des appareils vulnérables et émis une notification.

Que pourrait-on faire?


D'une maniÚre générale, le problÚme est depuis longtemps résolu. Depuis 2013, il existe la RFC 6979 , qui décrit un ECDSA déterministe obtenu à partir de l'ordinaire à travers plusieurs modifications simples. De plus, en 2014, lors du développement de la norme U2F, c'est précisément en raison de problÚmes potentiels avec le RPS que la FIPS a ouvertement proposé de passer à l'ECDSA déterministe, mais l'offre a été rejetée. C'est l'une des raisons pour lesquelles FIPS signifie F * cked-up, Insecure, Persnickety Standards.

Yubico pourrait officiellement répondre aux exigences FIPS pour le caractÚre aléatoire du nombre k, mais utiliser une solution de contournement, générant k de maniÚre déterministe, puis le XOR avec le fait qu'il a émis un RNG (ou en exécutant tout via KDF). Mais cela n'a pas été fait.

Et nous?


Et nous avons la mĂȘme chose. GOST R 34.10-2012 - essentiellement le mĂȘme ECDSA, juste avec des courbes diffĂ©rentes. Les exigences pour gĂ©nĂ©rer le nombre k restent les mĂȘmes que dans l'ECDSA traditionnel. L'un des fabricants de nos jetons effectue-t-il la solution de contournement dĂ©crite ci-dessus? Utilise-t-il la version dĂ©terministe de l'ECDSA? J'en doute.

S'il y a des représentants de développeurs russes, il serait intéressant d'écouter leur avis à ce sujet. Ou du moins de garder cela à l'esprit.

Merci de votre attention.

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


All Articles