Швидке скорочення від RSA до SAT


28

Сьогодні в блозі Скотта Аронсон викладено список цікавих відкритих проблем / завдань за складністю. Зокрема, один привернув мою увагу:

Створіть публічну бібліотеку з примірників 3SAT з якомога менше змінних та підказок, які матимуть вагомі наслідки, якщо їх вирішити. (Наприклад, екземпляри, що кодують проблеми факторингу RSA.) Дослідіть ефективність найкращих поточних SAT-рішень у цій бібліотеці.

Це викликало моє запитання: Яка стандартна методика зменшення проблем RSA / факторингу до SAT і наскільки швидко вона? Чи є таке стандартне зниження?

Щоб було зрозуміло, під «швидким» я не маю на увазі поліноміальний час. Мені цікаво, чи є у нас більш жорсткі верхні межі щодо складності скорочення. Наприклад, чи відомо відоме кубічне скорочення?

Відповіді:


26

Одним із підходів до кодування факторингу (RSA) до SAT є використання мультиплікаторних схем (Кожна схема може бути кодована як CNF).

Припустимо, нам дано ціле число з бітами, . Ми зацікавлені в пошуку два -бітний цілі числа і , твір яких .2 n C = ( c 1 , c 2 , , c 2 n ) 2 n A = ( a 1 , , a n ) A = ( b 1 , , b n ) C = A BC2nC=(c1,c2,,c2n)2nA=(a1,,an)A=(b1,,bn)C=AB

Найнаївніше кодування може бути приблизно таким: Ми це знаємо

c2n=anbn
c2n1=(anbn1)xor(an1bn)
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
Carry:d2n1=(anbn1)(an1bn)
c2n2=(anbn2)xor(an1bn1)xor(an2bn)xord2n1
...

Потім, використовуючи трансформацію Цеїтіна, вищевказане кодування може бути переведено в CNF.

Такий підхід виробляє відносно невелику CNF. Але це кодування не підтримує "Поширення одиниць", і тому продуктивність SAT Solvers дійсно погана.

Існують інші схеми множення, які можна використовувати для цієї мети, але вони виробляють більшу CNF.


10
У розділі 6.1 «Виявлення важких причин проблеми задоволеності: опитування» Кука та Мітчелла вони використовують цю проблему як виклик.
Амір

Звідки ви знаєте, що A і B повинні бути n біт довжини, хіба це не могло бути n - 1 і n біт. Напевно це може бути 2n біт і 1 біт.
Ілля Газман

1
@Babibu: Якщо ми говоримо про загальну факторизацію, ви маєте рацію. Але для випадку RSA ми знаємо, що кожен з двох прайменів має біт. n
Амір

Я розумію, що ви відповідаєте, але не знаю, як це продовжити. Покажіть, будь ласка, . c2n2
Ілля Газман


18

Розширюючи те, що написав @Amir, я натрапив на наступну приємну веб-сторінку, на якій розміщено генератор CNF для схем факторингу, який можна, наприклад, запустити на деяких (зараз неактивних) номерах RSA факторингу викликів . Згенеровані екземпляри є у форматі DIMACS , які можуть безпосередньо подаватися будь-якому з поточних конкурентів у щорічному змаганні SAT solver . Що стосується важких випадків SAT в цілому, проблеми, орієнтовані на етапі змагань на SAT, здаються досить корисними, також приємною є класифікація на випадкові / виготовлені / промислові.


1
Це посилання дуже здорово!
Гек Беннетт

Якщо ви насправді спробуєте ввести одне з цих чисел, ви знайдете, що їх вихідний код використовує тип даних int, і тому він може містити лише 32-бітні числа, тоді як некористувані числа RSA починаються з сотень біт.
Елліот Гороховський

11

Ось стаття про створення примірників SAT з факторингу:

Horie, S. & Watanabe, O. [1997] Алгоритми та обчислення " жорсткий екземпляр для SAT " 1350: 22-31 ( pdf )

Це гірше, ніж лінійне, але краще, ніж . 512-розрядне число виклику типу RSA створює екземпляр з 63,652 змінними та 406,860 пропозицій.n2



0

Дивіться satfactor:


Перетворіть цілісну факторизацію в булеву задачу SATISFIABILITY

Шейн Неф

Огляд

Визначення факторів великого цілого числа зацікавило людину ще принаймні з часу Евкліда. Не існує відомого загального алгоритму цієї проблеми, який масштабує менше, ніж експоненціальний час щодо кількості бітів, необхідних для представлення цілого числа.

Що робить цей код

Перетворює цілочисельну задачу факторизації в булеву задачу SATISFIABILITY. Якщо проблему вирішити SAT-розв'язувачем, вона витягує цілі коефіцієнти.

Вирішення рівня задоволення булів щороку покращується. Кожні 2 роки відбувається міжнародна конкуренція між вирішувачами (див. Http://www.satcomcharge.org/ та http://www.satlive.org/ ). Наскільки добре ці сучасні рішення можуть протистояти одній із найстаріших відкритих математичних проблем?

Цей проект має дві основні цілі:
1) Перетворити проблему та визначити ціле число, що цікавить!
2) Швидко створити або вирішувану, або нерозв’язну задачу SATISFIABILITY, складність якої легко контролюється за допомогою шрифта.
- Щоб створити нерозв'язну проблему SATISFIABILITY, просто кодуйте просте число.
- Для створення складніших, але вирішуваних задач вибирайте більші складові числа з меншою кількістю факторів.

Кількість інтересів може бути будь-якого розміру!

Існує декілька розв’язувачів SATISFIABILITY з відкритим кодом. Дивіться http://www.satlive.org/ для деяких із них.

Побудувати

make -C src /

Як

Введіть кілька цікавих у його двійковій формі:

bin / iencode 10101> composite.21
// вирішувати з улюбленим рішенням і вводити результати у rešitve.txt bin / extra
-sat composite.21 solution.txt

Вихід буде:
00011
00111

які є двійковими поданнями для десяткових цілих чисел 3 та 7, коефіцієнтів 21.

Якщо вхідне ціле число має більше 2 факторів, і проблема SAT вирішена, вихід буде мати лише два чинники. Це не можуть бути простими числами (ви можете легко перевірити це в Maxima, Maple або Mathematica).

Не всі вирішувачі SAT дають результат в одному форматі. Можливо, вам доведеться злегка віднести ці результати до лікаря. Extract-Sat вимагає файлу рішення, що містить список цілих чисел (у будь-якій кількості рядків). Наприклад,

1 -2 3 4 -5 ...


1
Чи можете ви підсумувати методи, якими користується це програмне забезпечення? На цьому сайті нас більше цікавлять алгоритми та методи, а не реклама програмного засобу. Наприклад, питання щодо складності скорочення. Я не бачу, як ви вирішили це питання; на сайтах Stack Exchange ви повинні відповісти лише в тому випадку, якщо зможете відповісти на конкретне запитання, яке було задано. Також у вас є стосунки з інструментом або його авторами?
DW
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.