私は小型コンピュータ(Raspberry-Piなど)とLinuxオペレーティングシステムを使ってロボットを作りたいと思います。私の考えでは、これらのボード(RPi、NanoPiなど)にはOSを起動するための外部SDカードがあり、私のコードはそこに配置されます(SDカードに)。それでは、他の人が自分のコードをコピーするのを防ぐことができますか?
私のコードは、CMUsphinx、Opencvなどを使って書かれたプログラムを意味します。
特定のボードに各SDカードを指定する方法はありますか?私の言葉は、SDカードnom.1がnom.1ボードでのみ実行できることを意味します。
あるいは、アルゴリズムを使用し、実行中のコードと一致する必要がある隠しコードをマザーボードとSDカードに挿入することもできます。
答え1
デバイスに物理的にアクセスできる人があなたのコードをコピーするのを防ぐことはできません。ボードがあなたのコードを読むことができれば、他の誰も読むことができます。
コードのコピーを防ぐには、改ざん防止ストアを備えたデバイスを使用する必要があります。これらのハードウェアが存在しますが、価格範囲が高くなります。
コードにテストを追加して特定のハードウェア識別子を確認し、他のハードウェアデバイスで実行している場合は起動を拒否できます。これにより実行が不可能になります精密コピーは簡単ですが、コードを変更してスキャンをバイパスしたり、コードに必要なハードウェアIDを提供する仮想化環境で実行することは依然として簡単です。基本的に、これは正直な人を正直に保つ方法ですが、コードをコピーしたい人を防ぐことはできません。
答え2
データを保護するには、物理的に保護および制御でき、秘密データとは別に保管できるすべての種類のキーが必要です。脳内のパスワードはそのような解決策の一例です。パスワードは記憶することによって所有者によって物理的に保護されます。
パスワードで、スーパーボットにはソフトウェアの暗号化を解除し、その方法で実行できるバーコード付きの紙などのビジュアルトークンがあります。もちろん、openvcとスクリプトの助けを借りて、同じドキュメントを使用して生成を完了することができるので、これを考慮する価値があります。
それほど実用的ではありませんが、簡単に実装できるのは2枚のSDカードを使用することです。そのうちの1つにはシステムの起動に必要なキーが含まれており、起動を続行するにはsdカードを交換するのを待ちます。
あなたはどうするか見なければなりませんファイルシステムの初期化システム全体を起動するために使用されます。生成する方法を見てください。カスタムinitramfs、メインシステムで2番目のカードのインストールを待ってパスワードを復号化するようにinitスクリプトを変更できます。
システムは完璧ではありませんが、汚れていて安価です。
initramfsソリューションである必要はありません。実行コードを一部のUSBドライブからRAMディスクにコピーして作成を開始し、アクティブになり始めると、削除されるソリューションを使用できます。
メディアに秘密とキー(賢いトリック、隠されたものなど)がある場合は、リバースエンジニアリングできます。
私にとって、initramfsソリューションにはより少ない労力が必要で、カスタムinitramfsを作成する方法に関する多くの情報があります。