ลดอย่างรวดเร็วจาก RSA เป็น SAT


28

โพสต์บล็อกของ Scott Aaronson วันนี้ให้รายการของปัญหา / งานเปิดที่น่าสนใจในความซับซ้อน หนึ่งในความสนใจของฉัน:

สร้างห้องสมุดสาธารณะของอินสแตนซ์ 3SAT โดยมีตัวแปรและส่วนคำสั่งน้อยที่สุดเท่าที่จะเป็นไปได้ (ตัวอย่างเช่นอินสแตนซ์ที่เข้ารหัสความท้าทายแฟคตอริ่ง RSA) ตรวจสอบประสิทธิภาพของ SAT-solvers ที่ดีที่สุดในปัจจุบันบนห้องสมุดนี้

สิ่งนี้ก่อให้เกิดคำถามของฉัน: อะไรคือเทคนิคมาตรฐานในการลดปัญหา RSA / แฟ็กเตอริ่งให้ SAT และเร็วแค่ไหน มีการลดมาตรฐานเช่นนี้หรือไม่?

เพื่อให้ชัดเจนโดย "เร็ว" ฉันไม่ได้หมายถึงเวลาพหุนาม ฉันสงสัยว่าเรามีขอบเขตที่แน่นกว่าบนความซับซ้อนของการลดลงหรือไม่ ตัวอย่างเช่นมีการลดลูกบาศก์รู้จักหรือไม่

คำตอบ:


26

วิธีหนึ่งในการเข้ารหัส Factoring (RSA) ถึง SAT คือการใช้วงจรทวีคูณ (ทุกวงจรสามารถเข้ารหัสเป็น CNF)

สมมติว่าเราจะได้รับจำนวนเต็มกับบิต, 2 เรามีความสนใจในการหาสองบิตจำนวนเต็มและที่มีสินค้าเป็น B2 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)
2 n - 2 =( nn - 2 )xoR( n - 1n - 1 )xoR( n - 2n )xoR d 2 n - 1
Carry:d2n1=(anbn1)(an1bn)
c2n2=(anbn2)xor(an1bn1)xor(an2bn)xord2n1
...

จากนั้นใช้การแปลง Tseitin การเข้ารหัสข้างต้นสามารถแปลเป็น CNF

วิธีการนี้ทำให้เกิด CNF ที่ค่อนข้างเล็ก แต่การเข้ารหัสนี้ไม่สนับสนุน "Unit Propagation" ดังนั้นประสิทธิภาพของ SAT Solvers นั้นแย่มาก

มีวงจรอื่น ๆ สำหรับการคูณซึ่งสามารถใช้สำหรับจุดประสงค์นี้ได้ แต่จะสร้าง CNF ที่ใหญ่กว่า


10
ในส่วนที่ 6.1 ของ "การค้นหาอินสแตนซ์ของปัญหาความพึงพอใจ: แบบสำรวจ" โดย Cook และ Mitchell พวกเขาใช้ปัญหานี้เป็นความท้าทาย
อาเมียร์

คุณจะรู้ได้อย่างไรว่า A และ B ต้องมีความยาว n บิตไม่เป็น n - 1 และ n บิต แน่นอนมันสามารถเป็นบิต 2n และ 1 บิต
Ilya Gazman

1
@Babibu: ถ้าเรากำลังพูดถึงการแยกตัวประกอบทั่วไปคุณพูดถูก แต่สำหรับกรณีของ RSA เรารู้ว่าแต่ละช่วงเวลาสองช่วงมีบิต n
อาเมียร์

ฉันเข้าใจคำตอบของคุณ แต่ฉันไม่รู้วิธีดำเนินการต่อ คุณช่วยกรุณาแสดงได้ไหม c2n2
Ilya Gazman

แล้วRSA-129
Ilya Gazman

18

ขยายสิ่ง @Amir เขียนผมมาในหน้าเว็บต่อไปนี้มีความสุขซึ่งเป็นเจ้าภาพจัดกำเนิด CNF สำหรับวงจรแฟว่าสามารถเช่นการทำงานในบางส่วนของ (ตอนนี้ไม่ได้ใช้งาน) อาร์เอแฟท้าทาย ตัวเลข อินสแตนซ์ที่สร้างอยู่ในDIMACSรูปแบบที่สามารถโดยตรงจะเลี้ยงคนใดคนหนึ่งในคู่แข่งที่ปัจจุบันในปีSAT แก้ การแข่งขัน สำหรับกรณีทั่วไปเกี่ยวกับ SAT ปัญหามาตรฐานที่ได้รับจากเว็บไซต์การแข่งขัน SAT นั้นค่อนข้างมีประโยชน์และการจัดประเภทเป็นแบบสุ่ม / งานฝีมือ / อุตสาหกรรมก็ดี


1
ลิงค์นั้นเจ๋งมาก!
Huck Bennett

หากคุณลองป้อนหนึ่งในตัวเลขเหล่านั้นคุณจะพบว่าซอร์สโค้ดของพวกเขาใช้ประเภทข้อมูล int และดังนั้นจึงสามารถเก็บตัวเลข 32 บิตได้เท่านั้นในขณะที่หมายเลข RSA ที่ไม่ได้กรองเริ่มต้นที่หลายร้อยบิต
Elliot Gorokhovsky

11

นี่คือบทความเกี่ยวกับการสร้างอินสแตนซ์ SAT จากการแยกตัวประกอบ:

Horie, S. & Watanabe, O. [1997] " อัลกอรึทึมการสร้างฮาร์ดสำหรับ SAT " อัลกอริทึมและการคำนวณ 1350: 22-31 ( pdf )

มันเลวร้ายยิ่งกว่าการเชิงเส้น แต่ดีกว่า 2 หมายเลขประเภทความท้าทาย RSA 512 บิตสร้างอินสแตนซ์ที่มีตัวแปร 63,652 และ 406,860 ส่วนn2


9

ToughSatโดยเฮนรี่และโจเซฟ Yuen Bebel เป็นอีกเครื่องมือหนึ่งที่คล้ายกับการเชื่อมโยงโดย @ Martin ซึ่งจะสร้างสูตร CNF ว่ากรณีการเข้ารหัสของแยกตัวประกอบและปัญหาการแข็งอื่น ๆ


1
Scott blogged เกี่ยวกับเรื่องนี้ด้วย: scottaaronson.com/blog/?p=676
Alessandro Cosentino

0

ดูsatfactor:


แปลงการแยกตัวประกอบจำนวนเต็มเป็นปัญหา SATISFIABILITY

เชนเนฟ

ภาพรวม

การพิจารณาปัจจัยของจำนวนเต็มจำนวนมากเป็นที่สนใจของมนุษย์มาตั้งแต่สมัยของยูคลิดอย่างน้อย ไม่มีอัลกอริทึมทั่วไปที่รู้จักกันดีสำหรับปัญหานี้ที่ปรับขนาดในเวลาน้อยกว่าเลขชี้กำลังด้วยความเคารพต่อจำนวนบิตที่จำเป็นในการเป็นตัวแทนจำนวนเต็ม

รหัสนี้ทำอะไร

แปลงปัญหาการแยกตัวประกอบจำนวนเต็มเป็นปัญหา SATISFIABILITY แบบบูล หากปัญหาได้รับการแก้ไขโดยตัวแก้ SAT แล้วจะแยกปัจจัยจำนวนเต็ม

ตัวแก้ปัญหาความน่าเชื่อถือ Boolen ปรับปรุงทุกปี ทุก ๆ 2 ปีจะมีการแข่งขันระดับนานาชาติระหว่างนักแก้ปัญหา (ดู http://www.satcompetition.org/และhttp://www.satlive.org/ ) นักแก้ปัญหาที่ทันสมัยเหล่านี้สามารถทำอะไรได้ดีกับหนึ่งในปัญหาทางคณิตศาสตร์แบบเปิดที่เก่าแก่ที่สุดที่มีอยู่?

โครงการนี้มีวัตถุประสงค์หลัก 2 ประการคือ
1) แปลงปัญหาและตัวคูณจำนวนเต็มที่น่าสนใจ!
2) สร้างปัญหาที่แก้ปัญหาได้อย่างรวดเร็วหรือแก้ปัญหาความพึงพอใจที่ไม่สามารถแก้ไขได้อย่างรวดเร็ว
- ในการสร้างปัญหา SATISFIABILITY ที่แก้ไม่ได้เพียงแค่เข้ารหัสหมายเลขเฉพาะ
- หากต้องการสร้างปัญหาที่ยากขึ้น แต่แก้ไขได้ให้เลือกหมายเลขคอมโพสิตที่ใหญ่ขึ้นด้วยปัจจัยที่น้อยลง

จำนวนที่สนใจอาจมีขนาดใดก็ได้!

มีตัวแก้ปัญหา SATISFIABILITY โอเพนซอร์สอยู่บ้าง ดูhttp://www.satlive.org/สำหรับบางส่วนของเหล่านี้

สร้าง

ทำ -C src /

ทำอย่างไร

ป้อนจำนวนที่น่าสนใจในรูปแบบไบนารี:

bin / iencode 10101> composite.21
// แก้ปัญหาด้วยตัวแก้ไขที่คุณชื่นชอบและใส่ผลลัพธ์ใน solution.txt
bin / extract-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
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.