Pertanyaan berikut telah muncul beberapa kali saat menguji keamanan sistem atau model.
Motivasi: Kelemahan keamanan perangkat lunak sering kali bukan berasal dari bug karena input yang valid, tetapi bug yang dihasilkan dari input tidak valid yang cukup dekat dengan input yang valid untuk melewati banyak pemeriksaan validitas langsung. Contoh klasiknya tentu saja buffer overflows, di mana inputnya masuk akal, kecuali bahwa itu terlalu besar. Kompiler dan alat lain dapat membantu mengatasi masalah ini dengan memodifikasi tata letak tumpukan dan tumpukan dan dengan teknik kebingungan lainnya. Alternatifnya adalah menghapus masalah dari kode sumber itu sendiri. Salah satu teknik yang disebut fuzzing bombardir program dengan input mendekati input yang diharapkan, tetapi di beberapa tempat tidak masuk akal (nilai besar untuk bidang bilangan bulat atau string). Saya ingin memahami fuzzing (sebagai salah satu contoh) dari perspektif yang lebih formal.
Asumsikan bahwa ruang input yang valid dijelaskan oleh kendala . Biarkan M menjadi himpunan solusi dari kendala tersebut, yaitu M = { m ∈ M | m ⊨ Φ } , di mana M adalah ruang input yang memungkinkan.
Saya mencari pekerjaan yang menggambarkan gagasan berikut:
The penumbra dari adalah seperangkat M ' ⊆ M sehingga untuk setiap m ∈ M ' m ⊭ Φ dan dalam beberapa pengertian unsur M ' yang dekat dengan unsur-unsur M . Orang dapat menganggap penumbra sebagai solusi yang hampir . Tentu saja, gagasan ini tidak akan unik.
Cara mengendurkan kendala hingga Φ ′ sedemikian rupa sehingga pertama-tama Φ ⇒ Φ ′ dan Φ ′ ∧ ¬ Φ adalah, dalam arti tertentu, penumbra sintaksis dari Φ .
"Penumbra" adalah kata yang saya pilih untuk menggambarkan konsep. Mungkin juga disebut sesuatu yang lain.
Saya menemukan inspirasi dalam morfologi matematika , karenanya metafora visual saya, tetapi dua dunia terpisah parsec. Apakah ada pekerjaan yang bermanfaat di sana? Atau mungkin di dunia set kasar ?
Adakah yang bisa menjelaskan?