Réduction rapide de RSA à SAT


28

Le blog de Scott Aaronson a donné aujourd'hui une liste de problèmes / tâches ouverts intéressants en complexité. Un en particulier a retenu mon attention:

Construisez une bibliothèque publique d'instances 3SAT, avec aussi peu de variables et de clauses que possible, qui aurait des conséquences notables si elle était résolue. (Par exemple, les instances codant les défis d'affacturage RSA.) Enquêter sur les performances des meilleurs solveurs SAT actuels sur cette bibliothèque.

Cela a déclenché ma question: quelle est la technique standard pour réduire les problèmes RSA / factorisation en SAT, et à quelle vitesse est-elle? Existe-t-il une telle réduction standard?

Juste pour être clair, par "rapide", je ne veux pas dire le temps polynomial. Je me demande si nous avons des limites supérieures plus strictes sur la complexité de la réduction. Par exemple, y a-t-il une réduction cubique connue?

Réponses:


26

Une approche pour coder l'affacturage (RSA) en SAT consiste à utiliser des circuits multiplicateurs (chaque circuit peut être codé en CNF).

Supposons que l'on nous donne un entier avec 2 n bits, C = ( c 1 , c 2 , , c 2 n ) 2 . Nous souhaitons trouver deux entiers à n bits A = ( a 1 , , a n ) et A = ( b 1 , , b n ) dont le produit est C = A C2nC=(c1,c2,,c2n)2nUNE=(une1,,unen)UNE=(b1,,bn) .C=UNEB

L'encodage le plus naïf peut être quelque chose comme ceci: Nous savons que

c 2 n - 1 = ( a nb n - 1 ) x o r ( a n - 1b n ) C a r r y : d 2 n - 1 = ( a nb n - 1 ) ( a n

c2n=unenbn
c2n-1=(unenbn-1)Xor(unen-1bn)
c 2 n - 2 =( a n b n - 2 )xor( a n - 1 b n - 1 )xor( a n - 2 b n )xor d 2 n - 1 ...
Cunerry:2n-1=(unenbn-1)(unen-1bn)
c2n-2=(unenbn-2)Xor(unen-1bn-1)Xor(unen-2bn)Xor2n-1

Ensuite, en utilisant la transformation Tseitin, le codage ci-dessus peut être traduit en CNF.

Cette approche produit un CNF relativement petit. Mais cet encodage ne prend pas en charge la «propagation d'unité» et les performances des solveurs SAT sont donc vraiment mauvaises.

Il existe d'autres circuits de multiplication qui peuvent être utilisés à cette fin, mais ils produisent un CNF plus important.


10
Dans la section 6.1 de «Trouver des instances concrètes du problème de satisfaction: une enquête», par Cook et Mitchell, ils utilisent ce problème comme un défi.
Amir

Comment savez-vous que A et B doivent avoir une longueur de n bits, ne pourrait-il pas être n - 1 et et n bits. Pour sûr, cela peut être 2n bits et 1 bit.
Ilya Gazman

1
n

c2n-2

Qu'en est-il de RSA-129
Ilya Gazman

18

En étendant ce que @Amir a écrit, je suis tombé sur la belle page Web suivante qui héberge un générateur CNF pour les circuits d'affacturage que l'on pourrait par exemple exécuter sur certains des numéros (maintenant inactifs) du RSA Factoring Challenge . Les instances générées sont en DIMACS format qui peut être directement envoyé à l'une des concurrents actuels dans le rapport annuel SAT solver la concurrence . En ce qui concerne les instances SAT dures en général, les problèmes de référence donnés sur le site de compétition SAT semblent être très utiles, également la classification en aléatoire / artisanal / industriel est agréable.


1
Ce lien est très cool!
Huck Bennett

Si vous essayez réellement d'entrer l'un de ces nombres, vous constaterez que leur code source utilise le type de données int et ne peut donc contenir que des nombres 32 bits, tandis que les nombres RSA non factorisés commencent à des centaines de bits.
Elliot Gorokhovsky



0

Voir satfactor:


Convertir la factorisation d'entiers en un problème booléen de SATISFIABILITÉ

Shane Neph

Présentation

La détermination des facteurs d'un grand nombre entier intéresse l'homme depuis au moins le temps d'Euclide. Il n'y a pas d'algorithme général connu pour ce problème qui évolue en moins de temps exponentiel par rapport au nombre de bits nécessaires pour représenter l'entier.

Que fait ce code

Convertit un problème de factorisation d'entier en un problème de SATISFIABILITÉ booléenne. Si le problème est résolu par un solveur SAT, il extrait alors les facteurs entiers.

Les solveurs de satisfiabilité Boolen s'améliorent chaque année. Tous les 2 ans, une compétition internationale entre solveurs a lieu (voir http://www.satcompetition.org/ et http://www.satlive.org/ ). Dans quelle mesure ces solveurs à la pointe de la technologie peuvent-ils faire face à l'un des plus anciens problèmes de mathématiques ouvertes qui existent?

Ce projet a 2 objectifs principaux:
1) Convertir le problème et factoriser un entier d'intérêt!
2) Créez rapidement un problème de SATISFACTION résoluble ou insoluble, dont la difficulté est facilement contrôlée par le créateur.
- Pour créer un problème de SATISFACABILITÉ insoluble, il suffit de coder un nombre premier.
- Pour créer des problèmes plus difficiles mais résolubles, choisissez des nombres composites plus grands avec moins de facteurs.

Le nombre d'intérêt peut être de n'importe quelle taille!

Il existe des solveurs de SATISFIABILITÉ open source. Voir http://www.satlive.org/ pour certains d'entre eux.

Construire

faire -C src /

Comment

Entrez un certain nombre d'intérêt dans sa forme binaire:

bin / iencode 10101> composite.21
// résolvez avec votre solveur préféré et mettez les résultats dans solution.txt
bin / extract-sat composite.21 solution.txt

La sortie serait:
00011
00111

qui sont des représentations binaires pour les nombres décimaux 3 et 7, les facteurs de 21.

Si un entier d'entrée a plus de 2 facteurs et que le problème SAT est résolu, la sortie ne sera que deux des facteurs. Ce ne sont peut-être pas des nombres premiers (vous pouvez le tester facilement dans Maxima, Maple ou Mathematica).

Tous les résultats des solveurs SAT n'ont pas le même format. Vous devrez peut-être examiner ces résultats légèrement. extract-sat nécessite un fichier de solution contenant une liste d'entiers (sur un nombre quelconque de lignes). Par exemple,

1 -2 3 4 -5 ...


1
Pouvez-vous résumer les techniques utilisées par ce logiciel? Sur ce site, nous nous intéressons davantage aux algorithmes et aux techniques, plutôt qu'à la publicité d'un outil logiciel. Par exemple, les questions de la complexité de la réduction. Je ne vois pas comment vous avez répondu à la question; sur les sites Stack Exchange, vous ne devez répondre que si vous pouvez répondre à la question spécifique qui a été posée. Avez-vous également une relation avec l'outil ou ses auteurs?
DW
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.