Giảm nhanh từ RSA xuống SAT


28

Bài đăng trên blog của Scott Aaronson hôm nay đã đưa ra một danh sách các vấn đề / nhiệm vụ mở thú vị phức tạp. Một điều đặc biệt thu hút sự chú ý của tôi:

Xây dựng một thư viện công cộng gồm các trường hợp 3SAT, với càng ít biến và mệnh đề càng tốt, điều đó sẽ có những hậu quả đáng chú ý nếu được giải quyết. (Ví dụ: các trường hợp mã hóa các thách thức bao thanh toán RSA.) Điều tra hiệu suất của các trình giải SAT tốt nhất hiện tại trên thư viện này.

Điều này đã kích hoạt câu hỏi của tôi: Kỹ thuật tiêu chuẩn để giảm các vấn đề RSA / bao thanh toán thành SAT là gì và nó nhanh đến mức nào? Có giảm như vậy tiêu chuẩn?

Nói rõ hơn, "nhanh" tôi không có nghĩa là thời gian đa thức. Tôi đang tự hỏi liệu chúng ta có giới hạn trên chặt chẽ hơn về sự phức tạp của việc giảm. Ví dụ, có giảm khối được biết đến?

Câu trả lời:


26

Một cách tiếp cận để mã hóa Nhân tố (RSA) cho SAT là sử dụng các mạch nhân (Mọi mạch có thể được mã hóa dưới dạng CNF).

Giả sử chúng ta được cấp một số nguyên với bit, . Chúng tôi đang quan tâm đến việc tìm kiếm hai -bit số nguyên và có sản phẩm là .2 n C = ( c 1 , c 2 , , c 2 n ) 2 n Một = ( một 1 , , một n ) Một = ( b 1 , , b n ) C = A * BC2nC=(c1,c2,,c2n)2nA=(a1,,an)A=(b1,,bn)C=AB

Mã hóa ngây thơ nhất có thể là một cái gì đó như thế này: Chúng tôi biết rằng

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=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
...

Sau đó, sử dụng chuyển đổi Tseitin, mã hóa trên có thể được dịch sang CNF.

Cách tiếp cận này tạo ra một CNF tương đối nhỏ. Nhưng mã hóa này không hỗ trợ "Tuyên truyền đơn vị" và do đó, hiệu suất của SAT Solvers thực sự rất tệ.

Có các mạch khác để nhân có thể được sử dụng cho mục đích này, nhưng chúng tạo ra một CNF lớn hơn.


10
Trong phần 6.1 của "Tìm kiếm những vấn đề khó khăn về vấn đề thỏa mãn: Một khảo sát", bởi Cook và Mitchell, họ sử dụng vấn đề này như một thách thức.
Amir

Làm thế nào để bạn biết rằng A và B phải có độ dài n bit, không thể là n - 1 và n bit. Để chắc chắn nó có thể là 2n bit và 1 bit.
Ilya Gazman

1
n

c2n2

Điều gì về RSA-129
Ilya Gazman

18

Mở rộng những gì @Amir viết: Tôi đã xem qua trang web đẹp sau đó tổ chức một máy phát điện CNF cho mạch bao thanh toán mà người ta có thể ví dụ như chạy trên một số (nay không hoạt động) RSA Factoring Challenge số . Các trường hợp phát sinh trong DIMACS định dạng đó trực tiếp có thể được làm thức ăn cho bất kỳ một trong những đối thủ cạnh tranh hiện tại trong năm SAT giải cuộc thi . Về các trường hợp SAT khó nói chung, các vấn đề điểm chuẩn được đưa ra tại trang web thi SAT dường như khá hữu ích, cũng như việc phân loại thành ngẫu nhiên / thủ công / công nghiệp là tốt.


1
Liên kết đó rất tuyệt!
Huck Bennett

Nếu bạn thực sự thử nhập một trong những số đó, bạn sẽ thấy mã nguồn của họ sử dụng kiểu dữ liệu int và do đó chỉ có thể giữ các số 32 bit, trong khi các số RSA chưa được khai thác bắt đầu ở hàng trăm bit.
Elliot Gorokhovsky

11

Đây là một bài viết về việc tạo các trường hợp SAT từ bao thanh toán:

Horie, S. & Watanabe, O. [1997] "Tạo thế hệ cứng cho SAT " Thuật toán và tính toán 1350: 22-31 ( pdf )

n2



0

Xem satfactor:


Chuyển đổi hệ số nguyên thành một vấn đề SATISFIABILITY boolean

Shane Neph

Tổng quan

Việc xác định các yếu tố của một số nguyên lớn đã được Man quan tâm kể từ ít nhất là thời gian của Euclid. Không có thuật toán chung nào được biết cho vấn đề này có tỷ lệ nhỏ hơn thời gian theo cấp số mũ đối với số bit cần thiết để biểu diễn số nguyên.

Mã này làm gì

Chuyển đổi một vấn đề nhân tử số nguyên thành một vấn đề SATISFIABILITY boolean. Nếu vấn đề được giải quyết bằng bộ giải SAT, thì nó sẽ trích xuất các thừa số nguyên.

Boolen giải quyết thỏa đáng cải thiện hàng năm. Cứ sau 2 năm, một cuộc cạnh tranh quốc tế giữa những người giải quyết diễn ra (xem http://www.satcompetition.org/http://www.satlive.org/ ). Những người giải quyết hiện đại này có thể làm tốt như thế nào trước một trong những vấn đề toán học mở lâu đời nhất trong sự tồn tại?

Dự án này có 2 mục đích chính:
1) Chuyển đổi vấn đề và tính một số nguyên quan tâm!
2) Nhanh chóng tạo ra một vấn đề SATISFIABILITY có thể giải quyết được hoặc không thể giải quyết được, mà khó khăn của nó dễ dàng được kiểm soát bởi người đi đường.
- Để tạo một vấn đề SATISFIABILITY không thể giải quyết, chỉ cần mã hóa một số nguyên tố.
- Để tạo ra các vấn đề khó hơn nhưng có thể giải quyết được, hãy chọn các số tổng hợp lớn hơn với ít yếu tố hơn.

Số lượng quan tâm có thể là bất kỳ kích thước!

Có một số người giải quyết SATISFIABILITY mã nguồn mở. Xem http://www.satlive.org/ để biết một số trong số này.

Xây dựng

tạo -C src /

Làm thế nào để

Nhập một số quan tâm ở dạng nhị phân của nó:

bin / iencode 10101> composite.21
// giải quyết với bộ giải yêu thích của bạn và đặt kết quả vào Solution.txt
bin / extract-sat composite.21 Solution.txt

Kết quả sẽ là:
00.011
00.111

đó là các biểu diễn nhị phân cho số nguyên thập phân 3 và 7, các yếu tố của 21.

Nếu một số nguyên đầu vào có nhiều hơn 2 yếu tố và vấn đề SAT được giải quyết, đầu ra sẽ chỉ là hai trong số các yếu tố. Đây có thể không phải là số nguyên tố (bạn có thể kiểm tra dễ dàng trong Maxima, Maple hoặc Mathicala).

Không phải tất cả các bộ giải SAT đều cho kết quả giống nhau. Bạn có thể cần bác sĩ những kết quả đó một chút. extract-sat yêu cầu một tệp giải pháp chứa danh sách các số nguyên (trên bất kỳ số dòng nào). Ví dụ,

1 -2 3 4 -5 ...


1
Bạn có thể tóm tắt các kỹ thuật được sử dụng bởi phần mềm này? Trên trang này, chúng tôi quan tâm nhiều hơn đến các thuật toán và kỹ thuật, hơn là quảng cáo về một công cụ phần mềm. Ví dụ, các câu hỏi cho sự phức tạp của việc giảm. Tôi không thấy cách bạn giải quyết câu hỏi; trên các trang web Stack Exchange, bạn chỉ nên trả lời nếu bạn có thể trả lời câu hỏi cụ thể đã được hỏi. Ngoài ra, bạn có bất kỳ mối quan hệ với công cụ hoặc tác giả của nó?
DW
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.