安全なソフトウェア ライセンスの使用監査ログ
質問
皆さん、
私たちには興味深い技術的な課題があります。ソフトウェアの使用状況を追跡する安全な監査ファイルを作成して、ライセンス料金を使用状況に基づいて設定し、使用頻度の低いユーザーにとってより手頃な価格にする方法。
具体的には、TickZoom はヘッジファンド向けにアルファ世代の取引プラットフォームを販売していますが、そのライセンス料は現在、サポートを含めて月額 2,000 ドルです (間もなく 2 倍以上に増加する予定です)。組織にとっては問題ありませんが、個人にとっては高すぎます。個人は、固定料金を支払う余裕ができるまで、ソフトウェアを使用して得られた利益の % と引き換えに、より低い価格を要求することがよくあります。
私たちはその提案が気に入っています。しかし、プラットフォーム上で実際に生じた利益を監査する信頼性の高い方法と、監査ファイルを削除または上書きすることでユーザーが実際よりも低い利益を報告することで利益を「ゲーム」することを防ぐ方法が必要です。
このアプリケーションは C# で書かれており、システムのこの部分は難読化されており、少なくともコードの解読が困難になっています。
もう 1 つの要件は、ユーザーが合計手数料に何らかの差異があると感じた場合に、より詳細な監査を可能にするために、取引が発生するたびにファイルに書き込むことです。そうすることで、個々の取引利益をブローカーの取引明細と比較することができます。
もちろん、ファイルは暗号化されることが前提です。
しかし、それを「改ざん防止」にする方法について何かアイデアはありますか?特に単純な削除の試みに対して?
私の最初の推測は、ソフトウェアが常に既存の監査ファイルを必要とするようにすることです。そうしないと、ソフトウェアの実行が拒否されます。
その後、ソフトウェアを納品するときに、「空の」監査ファイルがパッケージ化されますが、実際には、ある種の改ざん防止検証が行われています。
ユーザーがファイルを「改ざん」しようとする次の明白な手法は、元の「空の」ファイルを単純にバックアップし、後でそれを使用して監査ファイルを上書きし、システムを騙して新たなスタートであると思わせることです。
おそらく、これは、ある種の「最終更新タイムスタンプ」と有効期限を含めることで解決できるでしょう。
また、まったく異なるソリューションのアイデアも歓迎します。この場合、取引が中央サーバーに記録されるように「フォン ホーム」機能を追加する必要があるかもしれません。しかし、これは不利なように思え、ミッションクリティカルなアプリケーションに新たな障害点を追加する可能性があります。一般に、彼らは明らかな正当な理由があるにもかかわらず、「フォン ホーム」機能を非常に嫌っています。
心から、ウェイン
解決
ここで思考があります。ハッシュを暗号化し、その後、おそらくあなたのバイナリの中、またはレジストリに隠された、別のファイルに書き出します。
ユーザーが次のアプリケーションを開くと、ログファイルを読み込み、ハッシュを再生成し、それが記録された値と一致するかどうかを確認します。そうでない場合は、エラーメッセージ「改ざん監査ファイル」を使用してアプリケーションをシャットダウンします。
完全に証拠をだますが、かなり固体になるわけではありません。
他のヒント
あなたの問題の声明は次のとおりです。
- 私たちはクライアントを信頼していません。クライアントは敵対的である可能性があります。
- クライアントには信頼できるデータを送ってもらいたいと考えています。
この問題には解決策がありません。「ボブがビルより 1 フィート背が高く、ビルがボブより 1 フィート背が高いような 2 人の男性を探したいのですが、1 人はボブ、もう 1 人はビルです。」と言うのもよいでしょう。その特性を持つ男を2人見つけることはできないだろう。
自分が所有していない、敵対的なクライアントが所有している可能性のあるマシンからのものは絶対に信頼できません。私のアドバイスは、不可能な問題を解決しようとして貴重な時間を無駄にしないことです。その時間を、あなたが所有し信頼しているサーバーを敵対的なクライアントに対して堅牢にすることに費やしてください。
いいえ、すべての収益をリアルタイムでサーバーに報告する以外にできることはないと思いますが、それでも問題があります。
- 編集:
私が考えるに、選択肢は次のとおりです。
- システムを Web ベース (または少なくともシンクライアント) に変換し、すべてのトランザクションをサーバー上で実行します。
明らかに、ローカルベースのシステム全体をすでに開発している場合、これはおそらくかなり非現実的です。
- 破るのが「難しい」手の込んだ計画を考え出し、人々がそれを破らないことを願う
そして、このメソッド内で、ショップが X を稼いでいるかどうかを示すある種のプロファイリングを組み合わせると、突然 X-significantAmount になるため、そのショップはもう利益すらなくなっており、おそらくシステムを不正行為している (または廃業している) と判断できます。 )しかし、これはかなりのプライバシーの侵害に近く、まったく適切ではないかもしれません。
実際には、リスクと利益の可能性を比較検討するか、これらの人々に販売する方法について別の角度から検討する必要があると思います(つまり、インターフェイス/アプリ自体で合計資金 X を管理するだけにしてください。それを超えた場合は、プロ バージョンなどのプロンプトを表示します。