Detectando circuitos semelhantes em funcionalidade e implementação

11

Seja x=(x1,,xn) um vetor de variáveis ​​booleanas. Sejam C,D dois circuitos booleanos em x . Diga que C é semelhante a D se:

  1. Pr[C(x)D(x)]{ 0 , 1 } nx{0,1}n

  2. C,D diferem na distância de edição do gráfico em uma quantidade minúscula (a distância de edição é muito menor que o tamanho do circuito, digamos, O(1) ou alguma pequena constante), significando que quase todos os portões e fios de C correspondem um portão e um fio correspondentes em D , com apenas alguns portões adicionados / excluídos / alterados.


Meu problema: recebo um circuito C e quero saber se existe um circuito D semelhante a C mas não idêntico a C (ou seja, onde existe x tal que C(x)D(x) )

Alguém pode sugerir um algoritmo para resolver esse problema?

Se ajudar, podemos restringir a atenção aos circuitos D que são menores que o circuito C fornecido C(ou seja, queremos saber se existe um circuito D tal que D seja menor que C , D é semelhante a C e existe x tal que C(x)D(x) ).

Se ajudar, você também pode supor que recebemos casos de teste em bom estado x1,,xm,y1,,ym modo que C(xi)=yi para all i , e podemos restringir ainda mais a atenção apenas aos circuitos D modo que D(xi)=yi para todos os i .


Isso decorre de uma aplicação prática; portanto, se você não conseguir resolver esse problema, sinta-se à vontade para resolver qualquer variante ou caso especial interessante. Por exemplo, fique à vontade para instanciar qualquer um dos parâmetros ou limites da maneira que for mais conveniente para você. Você pode assumir que os circuitos não são muito grandes (tamanho polinomial ou algo assim). Sinta-se à vontade para substituir a distância de edição do gráfico por alguma outra medida de implementação próxima. Além disso, na prática, os solucionadores de SAT são surpreendentemente eficazes nos circuitos estruturados que surgem na prática; portanto, provavelmente é bom invocar um solucionador de SAT como uma sub-rotina / oráculo (pelo menos, se você o estiver chamando em algo como uma instância de SAT derivada de um circuito como ).C

Como alternativa, na falta de algoritmos, eu também estaria interessado na questão da existência: para um circuito "médio" , qual é a probabilidade de existir algum que atenda a todos os critérios? (Espero que essa probabilidade seja muito baixa, mas não faço ideia se é esse o caso.)DCD


A aplicação prática é testar se um circuito pode conter um backdoor malicioso / ovo de Páscoa escondido. A hipótese de como uma coisa dessas pode ser inserida é assim. Começamos com um circuito "dourado" , que calcula a funcionalidade desejada e não possui backdoor oculto. Em seguida, o adversário faz uma pequena alteração em para introduzir a porta traseira oculta, obtendo um circuito modificado . O objetivo do backdoor é alterar a função calculada por de alguma maneira. Se não for muito pequeno, a alteração poderá ser detectada plausivelmente por testes aleatórios, portanto, um adversário provavelmente tentará manterD D C D Pr [ C ( x ) D ( x ) ] Pr [ C ( x ) D ( x ) ] C D x i , y i D D ( x i ) = y i i C D C DCDDCDPr[C(x)D(x)]Pr[C(x)D(x)]muito pequeno. Da mesma forma, se difere de em muitos lugares, isso pode ser percebido pela inspeção aleatória do circuito, de modo que um adversário provavelmente tentará minimizar o número de alterações. (E, pode haver um conjunto de testes de pares que representam instâncias da funcionalidade desejada, portanto sabemos que, seja qual for o circuito "dourado" , ele satisfaz para todos .) Por fim, recebemos o circuito (mas não o circuito "dourado" ) e queremos saber se pode ser uma versão modificada de algumCDxi,yiDD(xi)=yiiCDCD, onde a modificação foi feita para introduzir um backdoor oculto desse tipo.

DW
fonte
Quantos bits formam a entrada do circuito? Se isso for suficientemente pequeno, pode fazer sentido fazer testes exaustivos.
András Salamon 04/10
@ AndrásSalamon: Infelizmente, o número de entradas no circuito é grande o suficiente na prática (nas aplicações que tenho em mente) que testes exaustivos em todas as entradas possíveis são inviáveis. Eu aprecio o pensamento, no entanto! 2 nn2n
DW
usaram algoritmos genéticos para atacar empiricamente algo como esse problema. Nesse caso, parece que o algoritmo que você declara, teste aleatório, é algo para tentar. Além disso, parece que você não descreveu o que é um "backdoor" no circuito (isso parece ter alguma conexão não estabelecida com a criptografia), mas thx por fornecer alguma tentativa de motivação ... uma pergunta imediata parece ser como um adversário poderia inserir algum backdoor enquanto evita a detecção por testes aleatórios? mas o cenário geral parece não estar totalmente definido.
vzn
3
@vzn, O circuito dourado descreve a funcionalidade pretendida do dispositivo. Suponha que 100 dos bits de entrada possam ser escolhidos / influenciados pelo invasor. Estamos preocupados que exista um backdoor oculto em que funcione assim: se o invasor fornecer um valor mágico de 100 bits em suas entradas, o circuito backdoored calculará a saída errada (com efeito trágico), mas, caso contrário, se comportará exatamente como . Isso permitiria que o atacante desencadeasse uma tragédia no momento de sua escolha, mas é difícil detectá-lo com testes aleatórios (uma vez que apenas das entradas desencadeiam uma tragédia). n C C C D 1 / 2 100D(x)nCCCD1/2100
DW
a questão parece que pode ter alguma relação com o "backbone" do SAT. veja também esta pergunta sobre conversão / erros cnf vs dnf, que pode ser uma maneira natural / formal de quantificar "similaridade" que você não quantifica formalmente. é verdade que o atacante pode apenas "virar" o resultado "dourado" de verdadeiro ou falso adicionando portas? isto é, soa como um problema semelhante a -xor- . g ( x )f(x)g(x)
vzn

Respostas:

4

Este é apenas um comentário extenso que me veio à mente imediatamente após ler a pergunta:

  • suponha que você tenha uma fórmula 3SAT com variáveis e deixe ser o circuito correspondente;n x 1 , . . . , x n Cϕnx1,...,xnC

  • construa um novo circuito , adicionando variáveis e portas suficientes para AND as novas variáveis ​​com a saída do original ( ); m = n k y 1 , Y 2 , . . . , y n k m C C = ϕ y 1. . . y mCm=nky1,y2,...,ynkmCC=ϕy1...ym

  • construa um novo circuito de que simplesmente force sua saída para 0 usando um gate AND e NOT ( )C ' D ' = C '¬ C 'DCD=C¬C

Se não é satisfatório, e são equivalentes; caso contrário, diferem quando o satisfaz a fórmula AND todo , mas você pode escolher grande o suficiente para tornar a probabilidade de que muito pequena.D ' C ' x i y i = 1 m y i = 1ϕDCxiyi=1myi=1

Portanto, se você tiver um algoritmo eficiente para o seu problema, poderá resolver com eficiência a instância 3SAT.

Marzio De Biasi
fonte