Proteger um filtro IIR da engenharia reversa

7

Criei um filtro IIR algo único e quero proteger o filtro contra engenharia reversa

Acho que todos sabem que é muito fácil obter todos os pesos diferentes de um IIR usando sinais de impulso.

O filtro é encapsulado de forma programática em um programa maior, para que eu possa adicionar alguns truques para proteger os coeficientes do filtro.

Mas qual seria o melhor método para proteger meu filtro IIR?

Jeff
fonte
11
Eu posso gerar um filtro IIR "um tanto único" usando um gerador de números pseudo-aleatórios. O que torna o seu filtro interessante ?
Rodrigo de Azevedo
11
Além disso, elabore o que você quer dizer com "proteger". Se eu tiver um filtro FIR cuja resposta ao impulso seja "próxima o suficiente" do filtro, seu filtro IIR ainda está protegido?
Rodrigo de Azevedo
Ah, e a resposta aceita está errada.
Rodrigo de Azevedo
3
@RodrigodeAzevedo: Então escreva a resposta certa, por favor! :-)
Peter K.

Respostas:

7

Resposta curta:

Você não pode. Se um invasor pode inserir um sinal que cubra toda a largura de banda (por exemplo, um sinal branco ou pelo menos um que não tenha zeros espectrais) no sistema (e ele pode fazer isso por um período arbitrariamente longo ou adicionar observações), eles obterá uma saída e, através da mágica da correlação, obterá a resposta ao impulso.

Marcus Müller
fonte
Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
Peter K.
3

Resposta longa:

Vamos modelar o fluxo de informações do seu IIR "oculto" X à sua saída observável Y Como

XY

Então, chamamos a quantidade de informação que você obtém por observação de * informação mútua I(X;Y); essa informação é a redução da incerteza sobreX a ser alcançado observando Y.

Chamamos a incerteza esperada de algo a entropia , no seu caso, a incerteza sobreX é a sua entropia e normalmente designada como H(X).

Agora, o legal de tudo isso é que H(X|Y), ou seja, a "incerteza sobre X que resta quando você sabe Y", na verdade é apenas a entropia de X menos as informações que você obtém, então:

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

O objetivo do atacante é reduzir a incerteza que ele ainda tem sobre X para 0.

Agora, como qualquer sinal que "excite" todas as funções próprias de um sistema pode caracterizar completamente o sistema, isso significa que precisamos apenas enviar o conjunto completo de funções próprias através do seu IIR. E como o seu IIR é um sistema de LTI, esse é o vetor que contém todas as oscilações de qualquer frequência representável.

Você pode reduzir a quantidade de informações que um invasor pode obter sobre o seu sistema inserindo ruído artificialmente. Informações teóricas, isso aumenta sua irrelevânciaH(Y|X) (mesmo se você soubesse X, você não saberia 100% Y, porque o ruído é adicionado).

A informação mútua I(X;Y) como usado em (1) é simétrico, ou seja I(X;Y)=I(Y;X); daqui segue

(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)

Seu objetivo era parar um engenheiro reverso, ou seja, maximizar H(X|Y).

Desde a H(X) é fixo (você tem alguns coeficientes que podem levar alguns valores, então é uma quantidade de bits), sua única maneira de ajustar essa função objetivo é aumentar H(Y|X). E a única maneira de fazer isso é inserindo variações verdadeiramente aleatórias em sua saída.

Marcus Müller
fonte
obrigado, alguma dica sobre o algoritmo aleatório para usar? ou algum vai fazer?
Jeff
tudo o que for o menos correlacionado possível (branco) fará - praticamente tudo, menos uma implementação LFSR curta de um gerador de ruído. Quanto mais uniforme a distribuição da amostra, melhor. Em um sistema DSP, você não quer ser limitado pela velocidade do seu gerador aleatório; portanto, não use algo como RNGs da Mersenne Twister - eles são de alta qualidade, mas são lentos. Pessoalmente, estou muito feliz com o XOROSHIRO128 +, que uso como RNG em aplicativos DSP.
Marcus Müller
11
A propósito, não espere maravilhas - através de observação arbitrariamente longa, um alto grau arbitrário de H(X|Y)pode ser eliminado; portanto, o ruído realmente apenas aumenta a variação do "estimador de engenharia reversa IIR", não impossibilitando a reconstrução.
Marcus Müller
1

A convolução é um operador linear. Como tal, pode ser, pelo menos teoricamente, invertido. Mas é infinito em comprimento e em precisão de amplitude de coeficiente. O que, na prática do mundo real, não pode ser alcançado.

Portanto, o saldo reside no que você chama de "proteção" e pode haver algumas possibilidades de "privacidade por design":

  • se o algoritmo for uma mera convolução, não será possível evitar tentativas contraditórias de obter aproximações "o mais próximo possível" do seu filtro.

  • você pode limitar essa possibilidade, por exemplo, adicionando não linearidades à sua saída, como quantização ou truncamento (ou apenas exibindo o resultado, não os valores), restringir tentativas inversas ou adicionando impressões digitais aos seus coeficientes, para que você pode "reivindicar" alguém o usou.

  • de acordo com alguma legislação, você pode (tentar) proteger algoritmos ou métodos (patentes etc.), com algum custo.

No passado, fiz engenharia reversa de um sistema de medição de ruído. Era uma caixa do tamanho de um sapato, com documentação e um preço alto. Ele deveria filtrar os dados do sensor de pressão (linear), integrar seu valor absoluto (não linearidade) e gerar um valor de dB (redução de dimensão). Com um gerador de ondas, podemos redesenhar o espectro absoluto, invertê-lo e obter a saída com±Precisão de 0,8 dB, suficiente para o efeito. E verificamos que os diagramas da documentação eram imprecisos (suspeito que "privacidade por design" aqui) e havia uma enorme variabilidade entre duas "cópias" dos sistemas de medição de ruído.

Laurent Duval
fonte
11
Você poderia, por favor, elaborar o que você quer dizer com "exibindo o resultado, não os valores"?
Rodrigo de Azevedo
Se você só exibir um sinal filtrado, e fazer os valores não de saída, você pixelize (quantização) o resultado
Laurent Duval
Infelizmente, não entendi o seu comentário. Por favor, permita-me tentar novamente. Suponha que eu tenha um processador de sinal digital executando algum processamento de um sinal de áudio digital. Nesse caso, qual é o "resultado" e quais são os "valores"?
Rodrigo de Azevedo
11
Se você está olhando para "privacidade por design", fornecer uma saída gráfica (uma imagem) protege você melhor do que fornecer uma lista de valores numéricos, porque seria necessário converter o gráfico em dados, isso é mais claro?
Laurent Duval
De fato é. Obrigado.
Rodrigo de Azevedo