C'è un problema specifico con il modello corrente?
Se l'applicazione è installata su sistemi che normalmente dispongono di accesso a Internet, è possibile farlo su un server per evitare la situazione in cui qualcuno gioca con il proprio orologio di sistema e esegue l'applicazione per più di 6 mesi.
Quando l'applicazione è installata, si registra con il tuo servizio e il tuo servizio registra un identificatore di applicazione (forse una chiave di licenza) e la data di installazione. Ogni volta che inizia, controlla con il server per vedere se sono trascorsi 6 mesi e poi dice all'utente di aggiornarsi se è passato più di 6 mesi.
Possibili svantaggi: è un po 'più complicato. Ora dovrai creare e mantenere il servizio di registrazione / convalida. È inoltre necessario decidere cosa dovrebbe accadere se l'applicazione non è in grado di connettersi al servizio. E qualcuno che è veramente desideroso di andare in giro potrebbe provare ad annusare i dati inviati al servizio e poi creare il proprio servizio che convalida sempre l'applicazione, quindi reindirizzare il traffico destinato al tuo servizio a il loro servizio invece. Quindi, ovviamente, vorrai che tutto il traffico con questo servizio sia crittografato.
If the user finds the encrypted date in the file they can simply replace it with one from a more recent install. I am wondering if there's a more secure way to do this?
Quindi sei preoccupato che capiranno che se sostituiscono il loro file esistente con una copia dello stesso file ma da un'installazione più recente, saranno in grado di aggirare il limite di 6 mesi? La risposta sopra potrebbe ancora aiutare con questo problema, un'altra idea pubblicata qui sotto.
Non so esattamente come si sta creando o crittografando il file, ma un'idea potrebbe essere quella di includere l'installazione datetime nella chiave utilizzata per codificare / decrittografare il file. In questo modo, un file proveniente da un'installazione diversa avrebbe una chiave diversa e quindi non può essere condivisa con altre installazioni. Ora il problema è di memorizzare questa chiave in un posto sicuro, in modo che l'utente non possa accedervi.