Problema este cum stochez în siguranță acest fișier, astfel încât clientul să nu-l poată modifica. Dacă clientul poate doar să deschidă fișierul text și să schimbe marcajul de timp, programul ar putea fi păcălit să creadă că nu trebuie să se sincronizeze niciodată.
Am luat în considerare următoarele:
- O modalitate de a semna fișierul pentru a asigura autenticitatea.
Asta ar fi cel mai apropiat; modalitatea evidentă ar fi dacă serverul ar avea o cheie privată de semnătură, iar programul ar avea cheia publică corespunzătoare. Apoi, când sunteți conectat, serverul ar putea semna ștampila actuală și poate trimite acel marcaj de timp și semnătura clientului.
Apoi, când clientul nu se poate conecta, el verifică apoi marca de timp/semnătura mai recentă care a fost descărcată și verifică acea semnătură (folosind cheia publică care este instalată cu clientul); dacă se validează, atunci verificați dacă marca temporală nu are mai mult de cinci zile.
În plus, puteți include un hash al unor fișiere relevante (cele pe care clientul nu ar trebui să le modifice) în ceea ce semnează serverul; la momentul verificării, clientul și-ar aplica prin hash copiile fișierelor și le includea în verificare.
Atacatorul nu poate modifica marca temporală, deoarece nu poate modifica semnătura (și nu poate să o verifice); el poate înlocui ștampila/semnătura cu una anterioară, dar asta nu ar câștiga nimic.
Modalități posibile de a ataca acest lucru:
Modificați „ora curentă”; majoritatea sistemelor de operare vă permit să setați ora la orice dorește utilizatorul. Aceasta presupune un marcaj temporal validat (dacă nu este deosebit de precis).
Modificați programul (fie pentru a modifica cheia publică, fie, mai probabil, înlocuiți logica de validare cu ceva care spune întotdeauna „este valid). Aceasta este întotdeauna o problemă atunci când rulați într-o bază de calcul neîncrezătoare.