ややユニークなIIRフィルターを作成し、リバースエンジニアリングからフィルターを保護したい
インパルス信号を使用することで、IIRのさまざまな重みをすべて取得するのが非常に簡単であることはご存じでしょう。
フィルターはプログラムでより大きなプログラムにカプセル化されているので、フィルター係数を保護するためにいくつかのトリックを追加できます。
しかし、IIRフィルターを保護する最善の方法は何でしょうか?
ややユニークなIIRフィルターを作成し、リバースエンジニアリングからフィルターを保護したい
インパルス信号を使用することで、IIRのさまざまな重みをすべて取得するのが非常に簡単であることはご存じでしょう。
フィルターはプログラムでより大きなプログラムにカプセル化されているので、フィルター係数を保護するためにいくつかのトリックを追加できます。
しかし、IIRフィルターを保護する最善の方法は何でしょうか?
回答:
簡潔な答え:
できません。攻撃者が全帯域幅をカバーする信号(たとえば、白い信号、またはスペクトルゼロのない少なくとも1つの信号)をシステムに挿入できる場合(そして、攻撃者が任意の長い時間にわたってそれを行うか、観測を合計できる場合)、出力を取得し、相関の魔法を通じてインパルス応答を取得できます。
長い答え:
「隠された」IIRからの情報フローをモデル化しましょう あなたの観察可能な出力に なので
次に、観測ごとに取得する情報の量を*相互情報量と呼びます ; その情報はについての不確実性の減少です 観察することによって達成される 。
何かの予想される不確実性をエントロピーと呼びます。あなたの場合、 はそのエントロピーであり、通常は 。
さて、これらすべての良い点は 、つまり「約不確実性 それはあなたが知っているときに残ります "、実際にはただのエントロピーです あなたが得る情報を除いて、それで:
攻撃者の目標は、彼がまだ持っている不確実性を減らすことです に 。
これで、システムのすべての固有関数を「励起」する信号はシステムを完全に特徴付けることができるため、IIRを通じて固有関数の完全なセットを送信するだけでよいことを意味します。そして、IIRはLTIシステムなので、それはたまたま、表現可能な周波数のすべての振動を含むベクトルです。
人工的にノイズを挿入することで、攻撃者がシステムについて入手できる情報の量を減らすことができます。理論的な情報、これはあなたの無関係性を増加させます (知っていても 、100%知らない 、ノイズが追加されるため)。
相互情報 で使用される 対称です、すなわち ; したがって
あなたの目的は、リバースエンジニアを停止すること、つまり最大化することでした。 。
以来 は固定されています(いくつかの値をとる可能性のあるいくつかの係数があるため、それはビットの量です)。この目的関数を調整する唯一の方法は、 。そのための唯一の方法は、出力に真にランダムなバリエーションを挿入することです。
畳み込みは線形演算子です。そのため、少なくとも理論的には反転させることができます。しかし、長さは無限大で、係数の振幅精度も無限です。現実の世界ではこれに到達することはできません。
したがって、バランスは「保護」と呼ばれるものにあり、「設計によるプライバシー」の可能性があるかもしれません。
アルゴリズムが単なるたたみ込みである場合、フィルターの「可能な限り近い」近似を得ようとする敵対的な試みを回避することはできません。
この可能性を制限するには、たとえば、量子化や切り捨てなどの非線形性を出力に追加する(または値ではなく結果を表示する)ことにより、逆試行を抑制したり、係数にフィンガープリントを追加したりして、他の誰かがそれを「要求」できる。
一部の法律では、ある程度のコストをかけて、アルゴリズムやメソッド(特許など)を(試行する)保護することができます。
以前は、ノイズ測定システムのリバースエンジニアリングを行っていました。それは、ドキュメントが付いた靴サイズの箱であり、高価格でした。圧力センサーデータ(線形)をフィルター処理し、その絶対値(非線形)を統合し、dB値(次元削減)を出力するはずでした。ウェーブジェネレーターを使用すると、絶対スペクトルを再描画し、それを反転して、次のコマンドで出力を取得できます。目的に十分な0.8 dBの精度。また、ドキュメンテーションダイアグラムが不正確であること(ここでは「設計によるプライバシー」の疑いがあります)、およびノイズ測定システムの2つの「コピー」間に大きなばらつきがあることを確認しました。