Следующий вопрос неоднократно возникал при тестировании безопасности системы или модели.
Мотивация: недостатки безопасности программного обеспечения часто возникают не из-за ошибок из-за допустимых входных данных, а из-за неправильных входных данных, которые достаточно близки к допустимым входным данным, чтобы пройти многие из простых проверок достоверности. Классическим примером, конечно, является переполнение буфера, когда ввод является разумным, за исключением того, что он слишком велик. Компиляторы и другие инструменты могут помочь решить эти проблемы, изменив компоновку стека и кучи и используя другие методы запутывания. Альтернативой является удаление проблем из самого исходного кода. Один из методов, называемый фаззингом, бомбардирует программу с входами, близкими к ожидаемым, но в некоторых местах необоснованными (большие значения для целочисленных или строковых полей). Я хотел бы понять фаззинг (в качестве одного примера) с более формальной точки зрения.
Предположим, что пространство действительных входов описывается ограничениями . Пусть - множество решений таких ограничений, а именно , где - пространство возможных входов.
Я ищу работу, описывающую следующие понятия:
Способы ослабления ограничений to , так что, во-первых, и , в некотором смысле, являются синтаксической полутенью .
«Пенумбра» - это слово, которое я выбрал, чтобы описать концепцию. Это вполне можно назвать чем-то другим.
Я нашел вдохновение в математической морфологии , отсюда моя визуальная метафора, но эти два мира разделены на части. Там есть какая-нибудь полезная работа? Или, может быть, в мире грубых сетов ?
Кто-нибудь может пролить свет?