Circuit de détection similaire en termes de fonctionnalité et d'implémentation

11

Soit un vecteur de variables booléennes. Soit C , D deux circuits booléens sur x . Disons que C est similaire à D si:x=(x1,,xn)C,DxCD

  1. est exponentiellement petit, lorsque x est tiré uniformément au hasard à partir de { 0 , 1 } n (en d'autres termes, ils ont une fonctionnalité presque identique); et,Pr[C(x)D(x)]x{0,1}n

  2. diffèrent dans la distance d'édition du graphique d'une petite quantité (leur distance d'édition est beaucoup plus petite que la taille du circuit, disons O ( 1 ) ou une petite constante), ce qui signifie que presque toutes les portes et les fils de C correspondent une porte et un fil correspondant en D , avec seulement quelques portes ajoutées / supprimées / modifiées.C,DO(1)CD


Mon problème: on me donne un circuit , et je veux savoir s'il existe un circuit D similaire à C mais pas identique à C (ie, où il existe x tel que C ( x ) D ( x ) ) .CDCCxC(x)D(x)

Quelqu'un peut-il suggérer un algorithme pour résoudre ce problème?

Si cela peut aider, nous pouvons limiter l'attention aux circuits qui sont plus petits que le circuit C donné (c'est-à-dire que nous voulons savoir s'il existe un circuit D tel que D est plus petit que C , D est similaire à C et il existe x tels que C ( x ) D ( x ) ).DCDDCDCxC(x)D(x)

Si cela aide, vous pouvez en outre supposer que nous recevons des cas de test connus comme bons tels que C ( x i ) = y i pour tout i , et nous pouvons restreindre davantage attention aux seuls circuits D tels que D ( x i ) = y i pour tout i .x1,,xm,y1,,ymC(xi)=yiiDD(xi)=yii


Cela découle d'une application pratique, donc si vous ne pouvez pas résoudre ce problème, n'hésitez pas à résoudre toute variante ou cas spécial intéressant. Par exemple, n'hésitez pas à instancier l'un des paramètres ou seuils de la manière qui vous convient. Vous pouvez supposer que les circuits ne sont pas trop grands (taille polynomiale, ou quelque chose). N'hésitez pas à remplacer la distance d'édition du graphique par une autre mesure de quasi-correspondance d'implémentation. En outre, dans la pratique, les solveurs SAT sont souvent étonnamment efficaces sur les circuits structurés qui surviennent dans la pratique, il est donc probablement bien d'invoquer un solveur SAT en tant que sous-programme / oracle (au moins, si vous l'invoquez sur quelque chose comme une instance SAT dérivée à partir d'un circuit comme ).C

Alternativement, faute d'algorithmes, je serais également intéressé par la question de l'existence: pour un circuit "moyen" , quelle est la probabilité qu'il existe un D qui réponde à tous les critères? (J'espère que cette probabilité est très faible, mais je n'ai aucune idée si c'est le cas.)CD


L'application pratique consiste à tester si un circuit peut contenir une porte dérobée malveillante / un œuf de Pâques caché. L'hypothèse de la façon dont une telle chose pourrait être insérée se présente comme suit. Nous commençons avec un circuit "doré" D , qui calcule la fonctionnalité souhaitée et n'a pas de porte dérobée cachée. Ensuite, l'adversaire fait un petit changement à D pour introduire la porte dérobée cachée, l' obtention d' un circuit modifié C . Le but de la porte dérobée est de changer la fonction calculée par D d'une certaine manière. Si Pr [ C ( x ) D ( x ) ]CDDCDPr[C(x)D(x)]n'est pas trop petit, le changement peut vraisemblablement être détecté par des tests aléatoires, donc un adversaire tentera probablement de garder très petit. De même, si C diffère de D à trop d'endroits, cela peut être remarqué par une inspection aléatoire du circuit, donc un adversaire tentera probablement de minimiser le nombre de changements. (Et, il peut y avoir une suite de tests de paires x i , y i qui représentent des instances de la fonctionnalité souhaitée, donc nous savons que quel que soit le circuit "doré" D , il satisfait D (Pr[C(x)D(x)]CDxi,yiD pour tout i .) Finalement, on nous donne le circuit C (mais pas le circuit "doré" D ), et nous voulons savoir si C pourrait être une version modifiée de certains D , où la modification a été fait pour introduire une porte dérobée cachée de ce type.D(xi)=yiiCDCD

DW
la source
Combien de bits forment l'entrée du circuit? Si elle est suffisamment petite, il peut être judicieux d'effectuer des tests exhaustifs.
András Salamon
n2n
ont utilisé des algorithmes génétiques pour attaquer empiriquement quelque chose comme ce problème. dans ce cas, il semble que l'algorithme que vous énoncez, les tests aléatoires, soit quelque chose à essayer. aussi, il semble que vous n'ayez pas du tout décrit ce qu'est une "porte dérobée" dans le circuit (cela semble avoir une connexion non déclarée à la cryptographie), mais merci d'avoir fourni une tentative de motivation ... une question immédiate semble être de savoir comment un adversaire pourrait-il insérer une porte dérobée tout en évitant la détection par des tests aléatoires? mais le scénario global ne semble pas entièrement défini.
vzn
3
D(x)nCCCD1/2100
DW
f(x)g(x)

Réponses:

4

Ce n'est qu'un commentaire prolongé qui m'est venu à l'esprit immédiatement après avoir lu la question:

  • ϕnx1,...,xnC

  • Cm=nky1,y2,...,ynkmCC=ϕy1...ym

  • DCD=C¬C

ϕDCxiyi=1myi=1

Donc, si vous avez un algorithme efficace pour votre problème, vous pouvez résoudre facilement l'instance 3SAT.

Marzio De Biasi
la source