ロボットコードを保護するにはどうすればよいですか?

ロボットコードを保護するにはどうすればよいですか?

Raspberry-Pi などのミニコンピューターと Linux OS を使用してロボットを構築したいと考えています。これらのボード (RPi、NanoPi など) には OS を起動するための外部 SD カードがあり、コードはそこ (SD カード) に保存されると思います。では、コードをコピーしようとする人からコードを保護するにはどうすればよいでしょうか。

私のコードとは、CMUsphinx、Opencv などを使用して作成されたプログラムのことです。

指定されたボードごとに各 SD カードを指定する方法はありますか? つまり、SD カード番号 1 はボード番号 1 でのみ実行されます。

あるいは、1 つのアルゴリズムを使用し、実行するために一致する必要があるボードと SD カードに隠しコードを配置するのでしょうか?

答え1

デバイスに物理的にアクセスできる人がコードをコピーするのを防ぐことはできません。ボードがコードを読み取ることができる場合、他の人もコードを読み取ることができます。

コードがコピーされないように保護するには、改ざん防止機能を備えたストレージを備えたデバイスを使用する必要があります。そのようなハードウェアは存在しますが、価格帯が高くなります。

コードにテストを入れてハードウェア識別子を検証し、別のハードウェアデバイスで実行している場合は起動を拒否することができます。これにより、ちょうど直接コピーすることはできますが、コードを変更してチェックをバイパスしたり、コードに期待されるハードウェア ID を入力する仮想化環境で実行したりすることは依然として簡単です。基本的に、これは正直な人を正直に保つ方法ですが、コードをコピーしたい人を阻止することはできません。

答え2

データを保護するには、物理​​的に保護および制御でき、秘密データとは別に保管できる、何らかのキーが必要です。頭の中のパスワードは、そのようなソリューションの一例です。パスワードは、所有者が記憶することで物理的に保護されます。

パスワードとして、ソフトウェアを解読してそのように実行できるようにするバーコード付きの紙片など、スーパーロボット用の視覚的なトークンがある場合があります。同じ紙片が、もちろん openvc とスクリプトの助けを借りて、作成したものをシャットダウンするために使用される可能性があるため、検討する価値があるかもしれません。

あまり実用的ではありませんが、実装が簡単なのは、2 枚の SD カードを用意することです。1 枚にはキーが含まれており、システムの起動に使用され、SD カードが変更されるまで待機し、その後は起動を続けます。

どのように調べるべきかインストールシステム全体の起動に使用されます。作成方法を確認してくださいカスタム initramfs、メインシステムで 2 枚目のカードをマウントして待機し、復号化するための init スクリプトを変更できるようになります。

システムは完璧ではなく、汚くて安っぽいです。

また、initramfs ソリューションである必要はなく、作成したファイルを起動するためだけに挿入した USB ドライブから RAM ディスクに実行可能コードをコピーし、作成が開始したら削除するなどのソリューションを使用することもできます。

秘密と鍵を 1 つのメディアに保存すると (それが賢いトリックで、何かが隠されているなど)、リバース エンジニアリングされる可能性があります。

私にとって、initramfs ソリューションは作成にそれほど労力がかからず、カスタム initramfs を作成する方法についての情報が豊富です。

関連情報