Proteja un filtro IIR de ingeniería inversa

7

Creé un filtro IIR algo único y quiero proteger el filtro de ingeniería inversa

Creo que todos saben que es bastante fácil obtener todos los diferentes pesos de un IIR mediante el uso de señales de impulso.

El filtro está encapsulado programáticamente en un programa más grande, por lo que puedo agregar algunos trucos para proteger los coeficientes del filtro.

Pero, ¿cuál sería el mejor método para proteger mi filtro IIR?

Jeff
fuente
1
Puedo generar un filtro IIR "algo único" usando un generador de números pseudoaleatorio. ¿Qué hace que tu filtro sea interesante ?
Rodrigo de Azevedo
1
Además, explique qué quiere decir con "proteger". Si tengo un filtro FIR cuya respuesta al impulso está "lo suficientemente cerca" de su filtro, ¿está todavía protegido su filtro IIR?
Rodrigo de Azevedo
Ah, y la respuesta aceptada es incorrecta.
Rodrigo de Azevedo
3
@RodrigodeAzevedo: ¡Entonces escribe la respuesta correcta, por favor! :-)
Peter K.

Respuestas:

7

Respuesta corta:

No puedes Si un atacante puede insertar una señal que cubra todo el ancho de banda (por ejemplo, una señal blanca, o al menos una que no tenga ceros espectrales) en el sistema (y puede hacerlo durante un tiempo arbitrariamente largo, o sumar observaciones), obtendrá una salida y, a través de la magia de la correlación, puede obtener la respuesta al impulso.

Marcus Müller
fuente
Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
Peter K.
3

Respuesta larga:

Modelemos el flujo de información de su IIR "oculto" X a su salida observable Y como

XY

Luego, llamamos a la cantidad de información que obtiene por observación la * información mutua I(X;Y); esa información es la reducción de la incertidumbre sobreX a lograr observando Y.

Llamamos a la incertidumbre esperada de algo la entropía , en su caso, la incertidumbre sobreX es su entropía y típicamente se denota como H(X).

Ahora, lo bueno de todo esto es que H(X|Y), es decir, la "incertidumbre sobre X eso queda cuando sabes Y", en realidad es solo la entropía de X menos la información que obtienes, entonces:

(1)H(X|Y)=H(X)I(X;Y).

El objetivo del atacante es reducir la incertidumbre que aún tiene sobre X a 0.

Ahora, dado que cualquier señal que "excite" todas las funciones propias de un sistema puede caracterizar completamente el sistema, eso significa que solo necesitamos enviar el conjunto completo de funciones propias a través de su IIR. Y dado que su IIR es un sistema LTI, resulta ser el vector que contiene todas las oscilaciones de cualquier frecuencia representable.

Puede reducir la cantidad de información que un atacante puede obtener sobre su sistema insertando ruido artificialmente. Información teórica, esto aumenta su irrelevanciaH(Y|X) (incluso si supieras X, no lo sabrías al 100% Y, porque se agrega ruido).

La información mutua I(X;Y) como se usa en (1) es simétrico, es decir I(X;Y)=I(Y;X); por lo tanto sigue

(2)H(Y|X)=H(Y)I(X;Y)=(1)H(Y)(H(X)H(X|Y))=H(Y)H(X)+H(X|Y)H(X|Y)=H(Y|X)+H(X)H(Y)

Su objetivo era detener a un ingeniero inverso, es decir, maximizar H(X|Y).

Ya que H(X) es fijo (tiene algunos coeficientes que pueden tomar algunos valores, por lo que es una cantidad de bits), su única forma de ajustar esta función objetivo es aumentar H(Y|X). Y la única forma de hacerlo es insertando variaciones verdaderamente aleatorias en su salida.

Marcus Müller
fuente
gracias, ¿alguna pista sobre el algoritmo de aleatorización a usar? o alguno lo hará?
Jeff
cualquier cosa que no esté tan correlacionada como sea posible (blanco) servirá, casi cualquier cosa menos una implementación corta de LFSR de un generador de ruido. Cuanto más uniforme sea la distribución de la muestra, mejor. En un sistema DSP, no desea estar limitado por la velocidad de su generador aleatorio, así que no elija algo como los RNG Mersenne Twister: estos son de alta calidad, pero lentos. Personalmente, estoy bastante contento con XOROSHIRO128 +, que uso como RNG en aplicaciones DSP.
Marcus Müller el
1
Por cierto, no esperes maravillas: a través de una observación arbitrariamente larga, un alto grado arbitrario de H(X|Y)puede ser eliminado entonces, el ruido realmente solo aumenta la variación del "estimador de ingeniería inversa IIR", no hace imposible la reconstrucción.
Marcus Müller
1

La convolución es un operador lineal. Como tal, puede ser, al menos teóricamente, invertido. Pero tiene una longitud infinita y una precisión de amplitud de coeficiente. Que, en la práctica del mundo real, no se puede alcanzar.

Por lo tanto, el equilibrio reside en lo que usted llama "proteger", y puede haber algunas posibilidades de "privacidad por diseño":

  • Si el algoritmo es una mera convolución, no puede evitar los intentos adversos de obtener aproximaciones "lo más cercanas posible" de su filtro.

  • puede limitar esta posibilidad, por ejemplo, agregando no linealidades a su salida, como cuantización o truncamiento (o simplemente mostrando el resultado, no los valores), para restringir los intentos inversos, o agregando huellas digitales a sus coeficientes, para que pueda puede "reclamar" que alguien más lo usó.

  • De acuerdo con algunas leyes, puede (intentar) proteger algoritmos o métodos (patentes, etc.), con algún costo.

En el pasado, realicé una ingeniería inversa de un sistema de medición de ruido. Era una caja del tamaño de un zapato, con documentación y un alto precio. Se suponía que debía filtrar los datos del sensor de presión (lineal), integrar su valor absoluto (no linealidad) y generar un valor de dB (reducción de dimensión). Con un generador de ondas, podríamos volver a dibujar el espectro absoluto, invertirlo y obtener la salida con±Precisión de 0,8 dB, suficiente para el propósito. Y verificamos que los diagramas de documentación eran inexactos (sospecho que "privacidad por diseño" aquí), y que había una gran variabilidad entre dos "copias" de los sistemas de medición de ruido.

Laurent Duval
fuente
1
¿Podría explicar qué quiere decir con "mostrar el resultado, no los valores"?
Rodrigo de Azevedo
Si solo muestra una señal filtrada y no emite valores, pixela (cuantifica) el resultado
Laurent Duval
Lamentablemente, no entendí tu comentario. Permítame intentarlo de nuevo. Supongamos que tengo un procesador de señal digital que procesa una señal de audio digital. En este caso, ¿cuál es el "resultado" y cuáles son los "valores"?
Rodrigo de Azevedo
1
Si está buscando "privacidad por diseño", dar una salida gráfica (una imagen) lo protege mejor que dar una lista de valores numéricos, porque uno necesitaría convertir el gráfico en datos, ¿está más claro?
Laurent Duval
De hecho, es. Gracias.
Rodrigo de Azevedo