Ich muss feststellen, ob die Uhr eines PCs in einer eigenständigen Java-Anwendung in einer Offline-Situation driftet oder manipuliert wird. Wie kann ich das erkennen?So erkennen Sie eine Systemtaktstörung in Java
Die Anwendung wird in den Händen der Benutzer für mindestens 3 Stunden in einem überfüllten Raum, ich erwarte nicht, dass sie qualifizierte Angreifer und in der Lage sein, Hacking-Umgebungen einzurichten. Meistens möchte ich Sprünge mindestens in der Größenordnung von Sekunden erkennen.
Ich muss eine Technik finden, um die Zeit in einer Java-Anwendung auf einer eigenständigen Workstation zu verfolgen, die es ermöglicht, signifikante "Sprünge" in der Systemuhr zu erkennen, aber gleichzeitig nicht "falsch" zu verursachen Positive "auf lockeren Slowdonws.
Es ist nicht notwendig, dass die Lösung gegen geschickte Manipulationen des Quellcodes oder der Systemuhr resistent ist. Die Anwendung wird in Tausenden von Arbeitsstationen installiert, aber für eine sehr begrenzte Zeit (Stunden) und in einer öffentlichen Situation. Es ist nur eine computergestützte Testsoftware.
In der Vergangenheit haben wir versucht, eine interne Zeitmessung mit System.nanoTime() zu erstellen und die abgelaufene Zeit aus wiederholten periodischen System.nanoTime() - Aufrufen zu berechnen. Auf diese Weise haben wir gelernt, dass wir jede Uhrmodifikation oder jedes Problem komplett ignorieren können. Aber es war ein Fehler, weil auf einigen Computern (Multicores) nachfolgende Anforderungen der API Werte aus zufälligen Kernen zurückgegeben, so dass die Maßnahme nicht möglich ist.
So, jetzt versuchen wir nur eine plötzliche Änderung in der Zeit zu erkennen, weil einige Workstations fehlerhafte Uhren haben, die sich selbst zurücksetzen (ja, es passiert), einige andere Updates während der Tests aktualisieren (die Arbeitsstationen sollten nicht vernetzt sein, aber jemand hört nicht auf unsere Angaben), und vielleicht versuchen einige Kandidaten, die Systemzeit zu ändern.
Die Arbeitsstationen sind offline. – Maxvader
@Maxvader: Aktualisiert. – wilx