web-dev-qa-db-fra.com

Combien de nombres premiers existe-t-il (disponibles pour le cryptage RSA)?

Suis-je dans l'erreur de penser que la sécurité du chiffrement RSA, en général, est limitée par la quantité de nombres premiers connus?

Pour casser (ou créer) une clé privée, il faut combiner la bonne paire de nombres premiers.

Est-il impossible de publier une liste de tous les nombres premiers de la plage utilisée par RSA? Ou cette liste est-elle suffisamment longue pour rendre cette attaque par force brute improbable? N'y aurait-il pas des nombres premiers "couramment utilisés"?

43
pinhead

RSA ne choisit pas dans une liste de nombres premiers connus: il génère un nouveau très grand nombre, puis applique un algorithme pour trouver un nombre proche qui est presque certainement premier. Voir cette description utile de la grande génération principale ):

La façon standard de générer de grands nombres premiers est de prendre un nombre aléatoire présélectionné de la longueur souhaitée, d'appliquer un test de Fermat (mieux avec la base 2 car il peut être optimisé pour la vitesse), puis d'appliquer un certain nombre de tests de Miller-Rabin (en fonction de la longueur et du taux d'erreur autorisé comme 2−100) pour obtenir un nombre qui est très probablement un nombre premier.

(Vous pourriez vous demander pourquoi, dans ce cas, nous n'utilisons pas cette approche lorsque nous essayons de trouver des nombres premiers de plus en plus grands. La réponse est que le plus grand nombre premier connu a plus de 17 millions de chiffres - bien au-delà même les très grands nombres généralement utilisés en cryptographie).

Quant à savoir si les collisions sont possibles, les tailles de clés modernes (selon la sécurité souhaitée) vont de 1024 à 4096, ce qui signifie que les nombres premiers vont de 512 à 2048 bits. Cela signifie que vos nombres premiers sont de l'ordre de 2 ^ 512: plus de 150 chiffres.

Nous pouvons très approximativement estimer la densité des nombres premiers en utilisant 1 / ln(n) (voir ici ). Cela signifie que parmi ces nombres 10^150, Il y a approximativement 10^150/ln(10^150) nombres premiers, ce qui équivaut à 2.8x10^147 Nombres premiers parmi lesquels choisir - certainement plus que ce que vous pourriez trouver dans n'importe quelle liste! !

Alors oui, le nombre de nombres premiers dans cette plage est incroyablement énorme et les collisions sont effectivement impossibles. (Même si vous génériez un billion de nombres premiers possibles, formant un septillion de combinaisons, la chance que deux d'entre eux soient le même nombre premier serait 10^-123).

93
David Robinson

À mesure que de nouvelles recherches apparaissent, la réponse à votre question devient plus intéressante. Dans un article récent "Imperfect Forward Secrecy: How Diffie-Hellman Fails in Practice" par David Adrian et tous trouvé @ https://weakdh.org/imperfect-forward-secrecy-ccs15.pdf consulté sur 16/10/2015 les chercheurs montrent que bien qu'il y ait probablement un nombre suffisant de nombres premiers disponibles pour l'ensemble de clés de 1024 bits de RSA, il existe des groupes de clés à l'intérieur de l'ensemble qui sont plus susceptibles d'être utilisés en raison de la mise en œuvre.

Nous estimons que même dans le cas de 1024 bits, les calculs sont plausibles compte tenu des ressources de l'État-nation. Un petit nombre de groupes fixes ou standardisés sont utilisés par des millions de serveurs; effectuer un précalcul pour un seul groupe 1024 bits permettrait une écoute passive sur 18% des sites HTTPS populaires, et un deuxième groupe permettrait le décryptage du trafic vers 66% des VPN IPsec et 26% des serveurs SSH. Une lecture attentive des fuites publiées de NSA montre que les attaques de l'agence contre les VPN sont compatibles avec la réalisation d'une telle rupture. Nous concluons que le passage à des méthodes d'échange de clés plus fortes devrait être une priorité pour la communauté Internet.

La recherche montre également une faille dans TLS qui pourrait permettre à un attaquant homme au milieu de rétrograder le cryptage à 512 bits.

Donc, en réponse à votre question, il y a probablement une quantité suffisante de nombres premiers dans le cryptage RSA sur papier, mais dans la pratique, il y a un problème de sécurité si vous vous cachez d'un État-nation.