9

私は、USB ドングルを使用してユーザーが支払いを済ませていることを確認する垂直市場の Mac アプリケーションに取り組んでいます。それは非常に高価であり、十分な需要があるため、「ブラック ハット」がドングル スキームをクラックしようとしたため、アプリは実行時に実行可能ファイルと主要なリソース ファイルをチェックし、何かが改ざんされている場合、プログラムは実行されません。

PKI (Public Key Infrastructure) ベースのコード署名が Mac の世界でより一般的になってきているので、このランタイム検証を行うために PKI を使用することに切り替えることを検討しています。

しかし、Apple の関心は私のものとは大きく異なります。彼らはユーザーを満足させることに重点を置いているため、アプリの署名が正しくない場合、Mac OS X は単にそれを実行するかどうかをユーザーに尋ねます。私はクラッカーを阻止することに重点を置いているため、アプリの署名が正しくない場合、エンドユーザーにとって有益なことをアプリに行わせたくありません。

そのため、アプリが実行時に Apple の署名を使用して、独自の実行可能ファイルとリソースを検証できるようにしたいと考えています。

また、検証を行うために Mac OS X に提供されたライブラリについて読んだところによると、それらは実行可能ファイルの検証要求に対して単に「はい」または「いいえ」の答えを返します。これは多くの点で「ブラック ハット」攻撃を受けやすいと思います。たとえば、Apple のツールを、システム ディレクトリで、またはシステム ディレクトリを変更することによって、「はい、これは有効です」と常に言うツールに単純に置き換えることができます。それらのツールの検索パス。そのため、署名検証コードの完全なセットをアプリに組み込むのは良い考えだと思います。

だから私はいくつかの質問があります:

  1. Apple のコード署名システムを使用して署名された独自の実行可能ファイルとリソースをアプリが検証できるようにするために、どの PKI ライブラリ/API を使用できますか?
  2. これらのライブラリにはソース コードがありますか?
  3. Apple が Mac OS X に同梱する PKI ライブラリの使用に関するセキュリティ上の懸念は有効ですか? それとも、私が思っているよりも安全に使用できますか?
  4. この種の経験を共有したい人はいますか? 他に落とし穴やヒントはありますか?

これについてご協力いただきありがとうございます。

4

1 に答える 1

1

上記の #1 と #2 に答えるために、Apple はデジタル署名を作成および検証するためのコードを libsecurity_codesigning としてオープンソース化しました。したがって、開発者はそれをアプリに組み込んで、独自の署名を検証できるようにすることができます。

別の方法として、このライブラリの MacOS バージョンをアプリで使用することもできますが、API はプライベートであるため、注意が必要です。このリンクに簡単な議論があります。

于 2013-01-10T01:37:52.223 に答える