期間限定(30日間の試用など)のソフトウェアがどのように機能するか知りたいです。
シリアルキーがどのように生成および設計されるかは知っていますが、システムの時刻が正しいことを確認するのは簡単ではないため(たとえば、ユーザーが手動で変更するなど)、時間制限の部分を理解するのはより複雑です。
完全な、または「完全な」保護は不可能ですが、概念実証や提案があるかどうか知りたいです。
信頼できるNTPサーバーを使用したのは初期の解決策ですが、完全ではありません(インターネット接続が必要です)。
私自身の経験から、非常に堅牢な時間制限メカニズムを備えたソフトウェアを見ました(ネットワークをシャットダウンしたり、手動で時間を変更したりしたとしても、不正行為は不可能です)。
そこには暗号はありません。それはすべてstateの問題です。アプリケーションは、システム時刻、およびハードウェアクロック(コンピューターがオフのときに時刻を保持するバッテリー付きのクロック)にもアクセスできます。アプリケーションは、さまざまなファイルの変更日を調べて、システムクロックの不正な動作を検出することもできます。また、実行中に経過時間を測定し、(ファイルの1つに)蓄積することができます。
ソフトウェアを仮想マシンにインストールし、VM全体のスナップショットを作成し、後でrestore完全にスナップショットを作成し、(仮想)ハードウェアクロックをスナップショットを作成し、ネットワークを非アクティブ化すると、時間制限をだますことができます。この種の制限時間の経済効率は、VMスナップショットと時計ゲームは煩雑すぎて、ほとんどのお客様が定期的に使用するのには面倒すぎるという考えに依存しています。