Encontrando a penumbra de um problema de satisfação com restrições

12

A pergunta a seguir surgiu várias vezes ao testar a segurança de um sistema ou modelo.

Motivação: As falhas de segurança do software geralmente não provêm de bugs devido a entradas válidas, mas de bugs resultantes de entradas inválidas suficientemente próximas das entradas válidas para passar por muitas das verificações diretas de validade. É claro que o exemplo clássico é estouros de buffer, onde a entrada é razoável, exceto que é muito grande. Compiladores e outras ferramentas podem ajudar a solucionar esses problemas, modificando o layout da pilha e da pilha e por outras técnicas de ofuscação. Uma alternativa é remover os problemas do próprio código-fonte. Uma técnica chamada fuzzing bombardeia o programa com entradas aproximadas das entradas esperadas, mas em alguns lugares não é razoável (valores grandes para campos inteiros ou de seqüência de caracteres). Eu gostaria de entender a difusão (como um exemplo) de uma perspectiva mais formal.

Suponha que o espaço de entradas válidas seja descrito por restrições Φ . Seja M o conjunto de soluções de tais restrições, a saber M={mM | mΦ} , onde M é o espaço de possíveis entradas.

Estou procurando trabalho descrevendo as seguintes noções:

  • MMMmM mΦ MM

  • Maneiras de relaxar as restrições Φ a Φ tal maneira que primeiramente ΦΦ e Φ¬Φ são, em certo sentido, a penumbra sintática de Φ .

"Penumbra" é uma palavra que eu selecionei para descrever o conceito. Pode muito bem ser chamado de outra coisa.

Encontrei inspiração na morfologia matemática , daí a minha metáfora visual, mas os dois mundos estão separados. Existe algum trabalho útil lá? Ou talvez no mundo dos sets ásperos ?

Alguém pode lançar luz?

Dave Clarke
fonte
O problema é por si só realmente interessante, mas na maioria das vezes o interesse não é em construir a penumbra (não sei um nome mais "oficial"), mas em ofuscar técnicas que evitam ataques de adulteração de software (como ataques por modificação) da entrada). Essas técnicas ocultam o núcleo do comportamento do programa inundando-o com outra coisa. Por exemplo, você pode criar um programa intercalando o original com um programa que codifique a resolução de um problema grave do NP em uma instância específica.
22410 Sylvain Peyronnet #:
Isso é realmente verdade. Estou aludindo à abordagem conhecida como difusa.
Dave Clarke
A propósito, CSP = Problema de satisfação com restrições.
MS Dousti 07/10/10

Respostas:

6

Grande parte da atenção dada às variantes de otimização do problema de satisfação de restrições (CSP) concentrou-se em satisfazer algum número de restrições (MAX-CSP) ou no caso booleano em escolher a solução que atribui o maior número possível de variáveis ​​ao valor 1 ( MAX-ONES, também há MIN-ONES).

Em vez disso, você está perguntando sobre uma variante que poderia ser chamada CSP PARCIAL MÁXIMO. Isso foi estudado pelo menos no final da década de 1960, mas não sei se ele tem um nome estabelecido. É um problema natural, e seria bom ver mais trabalhos investigando-o. Obrigado por fornecer outro aplicativo em potencial para esse problema!

  • Ambler, AP and Barrow, HG e Brown, CM e Burstall, RM e Popplestone, RJ, um sistema versátil para montagem controlada por computador , Inteligência Artificial 6 129–156, 1975. doi: 10.1016 / 0004-3702 (75) 90006- 5

Um conjunto de atribuições de valor variável é chamado de atribuição parcial . Pode-se escrever uma atribuição de valor variável como uma tupla (variável, valor). Atribuições parciais são então simplesmente funções de variáveis ​​a valores. Adereços são atribuições parciais que não violam nenhuma restrição. Equivalentemente, um suporte não contém atribuição parcial proibida por alguma restrição (como um subconjunto).

Uma maneira de expressar o problema de otimização é a seguinte.

CSP PARCIAL MÁXIMO:
Entrada: instância do CSP
Saída: prop Critério: maximizef
|f|

Em um caso com variáveis, claramente um suporte de cardinalidade será uma solução. Pode haver adereços grandes, com cardinalidade até , que não estão contidos em nenhuma solução.nnn1

Na terminologia que você propõe, o conjunto de adereços com cardinalidade máxima forma a penumbra, talvez até com alguma margem adicional (portanto cardinalidade pelo menos ).kdkd

A segunda parte da sua pergunta também parece muito interessante, mas não conheço nenhum trabalho relacionado a ela.


Nota de rodapé: O termo prop é da minha tese; destina-se a transmitir a ideia de que tais atribuições parciais são adequadas e também de que elas apóiam o conjunto de soluções. Isso contrasta com nogood , que é o termo aceito para descrever uma atribuição parcial que não pode ser estendida a uma solução. A palavra "nogood" foi introduzida por Richard Stallman e Gerald Sussman em 1976, quando o RMS ainda era um pesquisador de IA em vez de ativista da liberdade de software.

  • Stallman, Richard M. e Sussman, Gerald Jay, Raciocínio Direto e Retrocesso Dirigido por Dependência em um Sistema de Análise de Circuitos Assistido por Computador , Memorando MIT No. 380, 1976 do Laboratório de Inteligência Artificial do MIT. ( PDF )
András Salamon
fonte