オフラインの状況で、PCのクロックがドリフトしているか、スタンドアロンのJavaアプリケーションで操作されているかどうかを検出する必要があります。これをどのように検出できますか?Javaのシステム時計の改ざんを検出する方法
混雑した部屋では、アプリケーションはユーザーの手元に3時間以上置かれるため、熟練した攻撃者ではなく、ハッキング環境をセットアップすることもできません。 ほとんどの場合、少なくとも秒単位のジャンプを検出したいと考えています。
スタンドアロンワークステーション上のJavaアプリケーションで、システムクロック内の重要な「ジャンプ」を検出できるようにする技術を見つける必要がありますが、同時に「falseカジュアルなスロードンウイングにはポジティブです。
解決策は、ソースコードやシステムクロックの熟練した操作に耐える必要はありません。このアプリケーションは、数千のワークステーションにインストールされますが、非常に限られた時間(時間)および一般的な状況でインストールされます。それは単なるコンピュータベースのテストソフトウェアです。
これまで、System.nanoTime()を使用してSystem.nanoTime()を繰り返し呼び出してからの経過時間を計算することで、内部的な時間測定を設定しようとしました。 このようにすれば、クロックの変更や問題を完全に無視することができます。 しかし、いくつかのマシン(マルチコア)では、APIの後続のリクエストがランダムコアから値を返して、測定が難しいため、失敗でした。
いくつかのワークステーションでは、自分自身をリセットするクロックが間違っているため(テストが行われている)、テスト中にクロックアップデートが行われているため(ワークステーションをネットワークに接続しないでください。誰かが私たちの兆候を聞いていない)、そしておそらくいくつかの候補者はシステム時間を変更しようとします。
ワークステーションはオフラインです。 – Maxvader
@Maxvader:更新されました。 – wilx