C言語でアプリケーションを開発しました。次に、これをクロス コンパイルし、Linux を実行している ARM シングル ボード コンピューターに移植しました。このアプリケーションを使用する特定のニーズに合わせて、この SBC を顧客に販売し始めています。しかし、彼らは SBC をハッキングして、コンパイル済みのコードをコピーし、それを逆コンパイルして、将来的に独自のコードを開発しようとしているという噂も耳にしました。私の質問は次のとおりです。SBC でソフトウェア アプリケーションを保護するにはどうすればよいですか? truecrypt などの標準的な Linux ソフトウェア保護ソリューションを試しましたが、SBC へのクロス コンパイルは困難です。助言がありますか?よろしく、 new2RoR
質問する
504 次
1 に答える
2
ここで対処する必要がある 2 つの別個の問題があるようです。
- 機密情報の開示 (例: ソフトウェアの実装の詳細)
- ソフトウェアの不正使用/改変
両方に対する完全に信頼できる唯一のソリューションは、セキュア ブートと完全に信頼された実行パス (すべてコード署名されたものなど) を備えた SBC を使用することです。これは決して不可能ではありませんが、ハードウェアの選択が制限され、手間がかかります。これは、オープンソース運動の精神に根本的に反しており、解決策を見つけるのは困難です。
機密性の問題に対処し、コンパイルされた C および C++ を逆アセンブルすることは、特に簡単でも有用でもなく、かなり高度なスキルが必要です。そうすることの価値が非常に高くない限り、それは経済的攻撃にはなりません。
攻撃者がソフトウェアのバイナリ形式にアクセスするのを防ぐことができない限り、次の方法で攻撃対象領域を減らし、攻撃者の生活をより困難にすることができます。
- シンボルの除去
- 残す必要のあるシンボルを難読化する
- ライブラリと静的にリンクします。
- ソフトウェアにコンパイルされたデータの難読化または暗号化
不正使用の防止は、正当なユーザーが保持するものやコード署名による何らかの認証によって実現できます。
- コード署名を使用して、変更されたバージョンのソフトウェアが使用されるのを防ぐことができます (オペレーティング システムが強制することを信頼している限り)。
- ハードウェア認証トークンまたは一意の ID デバイスを使用すると、ソフトウェアがコピーされて別のシステムで使用されないようにすることができます。
実際には、おそらくこれらの両方が必要です。
于 2012-12-19T10:27:05.327 に答える