Tìm kiếm điểm yếu của một vấn đề thỏa mãn ràng buộc


12

Câu hỏi sau đây đã đưa ra một số lần khi kiểm tra tính bảo mật của hệ thống hoặc mô hình.

Động lực: Lỗi bảo mật phần mềm thường không phải do lỗi do đầu vào hợp lệ, mà là lỗi do đầu vào không hợp lệ đủ gần với đầu vào hợp lệ để vượt qua nhiều kiểm tra tính hợp lệ đơn giản. Ví dụ cổ điển tất nhiên là tràn bộ đệm, trong đó đầu vào là hợp lý, ngoại trừ việc nó quá lớn. Trình biên dịch và các công cụ khác có thể giúp giải quyết các vấn đề này bằng cách sửa đổi bố cục của ngăn xếp và đống và bằng các kỹ thuật che giấu khác. Một cách khác là loại bỏ các vấn đề từ chính mã nguồn. Một kỹ thuật gọi là làm mờ các chương trình với các đầu vào gần với các đầu vào dự kiến, nhưng ở một số nơi không hợp lý (giá trị lớn cho các trường số nguyên hoặc chuỗi). Tôi muốn hiểu fuzzing (như một ví dụ) từ một quan điểm chính thức hơn.

Giả sử rằng không gian đầu vào hợp lệ được mô tả bởi các ràng buộc . Hãy M là tập hợp các giải pháp hạn chế như vậy, cụ thể là M = { m M | m Φ } , nơi M là không gian đầu vào càng tốt.ΦMM={mM | mΦ}M

Tôi đang tìm kiếm công việc mô tả các khái niệm sau:

  • MMMmM mΦ M'M

  • Các cách thư giãn các ràng buộc thành trước hết là và , theo một nghĩa nào đó, là cú pháp cú pháp của .Φ ' Φ Φ ' Φ '¬ Φ ΦΦΦ'ΦΦ'Φ'¬ΦΦ

"Penumbra" là một từ tôi đã chọn để mô tả khái niệm này. Nó cũng có thể được gọi là cái gì khác.

Tôi tìm thấy nguồn cảm hứng trong hình thái toán học , do đó ẩn dụ hình ảnh của tôi, nhưng hai thế giới tách biệt nhau. Có công việc hữu ích nào ở đó không? Hoặc có lẽ trong thế giới của bộ thô ?

Bất cứ ai có thể làm sáng tỏ?


Vấn đề là bản thân nó thực sự thú vị, tuy nhiên, phần lớn thời gian quan tâm đến việc không xây dựng bán đảo (tôi không biết tên "chính thức" hơn) mà là các kỹ thuật che giấu để tránh các cuộc tấn công giả mạo phần mềm (chẳng hạn như tấn công thông qua sửa đổi của đầu vào). Kỹ thuật này che giấu cốt lõi của hành vi của chương trình bằng cách làm ngập nó với một cái gì đó khác. Chẳng hạn, bạn có thể xây dựng một chương trình bằng cách xen kẽ chương trình gốc cùng với một chương trình mã hóa độ phân giải của một vấn đề khó NP trên một trường hợp cụ thể.
Sylvain Peyronnet

Điều đó thực sự đúng. Tôi đang ám chỉ cách tiếp cận được gọi là mờ.
Dave Clarke

Nhân tiện, CSP = Vấn đề thỏa mãn ràng buộc.
MS Dousti

Câu trả lời:


6

Phần lớn sự chú ý dành cho các biến thể tối ưu hóa của vấn đề thỏa mãn ràng buộc (CSP) đã tập trung vào việc thỏa mãn một số ràng buộc (MAX-CSP) hoặc trong trường hợp Boolean khi chọn giải pháp gán càng nhiều biến càng tốt giá trị 1 ( MAX-ONES, cũng có MIN-ONES).

Thay vào đó, bạn đang hỏi về một biến thể có thể được gọi là CSP MAXIMUM PHẦN MỀM. Điều này đã được nghiên cứu ít nhất là từ cuối những năm 1960, nhưng tôi không biết nó có tên đã được thiết lập. Đó là một vấn đề tự nhiên, và sẽ tốt hơn nếu thấy nhiều công việc điều tra nó. Cảm ơn bạn đã cung cấp một ứng dụng tiềm năng khác cho vấn đề này!

  • Ambler, AP và Barrow, HG và Brown, CM và Burstall, RM và Popplestone, RJ, Một hệ thống linh hoạt để lắp ráp điều khiển bằng máy tính , Trí tuệ nhân tạo 6 129 Quay156, 1975. doi: 10.1016 / 0004-3702 (75) 90006- 5

Một tập hợp các phép gán giá trị biến được gọi là phép gán một phần . Người ta có thể viết một phép gán giá trị biến dưới dạng một tuple (biến, giá trị). Việc gán một phần sau đó chỉ đơn giản là các hàm từ biến đến giá trị. Đạo cụ là bài tập một phần không vi phạm bất kỳ ràng buộc nào. Tương tự, một prop không chứa một phần gán bị cấm bởi một số ràng buộc (như là một tập hợp con).

Một cách để thể hiện vấn đề tối ưu hóa như sau.



f
|f|

nnn-1

kdk-d

Phần thứ hai của câu hỏi của bạn cũng có vẻ rất thú vị, nhưng tôi không biết về bất kỳ công việc nào liên quan đến nó.


Chú thích: Thuật ngữ prop là từ luận án của tôi; nó có nghĩa là để truyền đạt ý tưởng rằng các bài tập một phần như vậy là phù hợp, và họ cũng hỗ trợ các giải pháp. Điều này trái ngược với một nogood , là thuật ngữ được chấp nhận để mô tả một nhiệm vụ một phần không thể mở rộng cho một giải pháp. Từ "nogood" được giới thiệu bởi Richard Stallman và Gerald Sussman vào năm 1976, khi RMS vẫn là một nhà nghiên cứu AI thay vì nhà hoạt động tự do phần mềm.

  • Stallman, Richard M. và Sussman, Gerald Jay, Chuyển tiếp lý do và phụ thuộc theo hướng phụ thuộc vào hệ thống phân tích mạch hỗ trợ máy tính , Bản ghi nhớ phòng thí nghiệm trí tuệ nhân tạo MIT số 380, 1976. ( PDF )
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.