Posso usare l'OTP token hardware per fermare la pirateria?

1

La nostra azienda vende un software desktop offline (.exe), stiamo pensando di utilizzare OTP (da token hardware come nell'internet banking) per impedire alle persone di copiare il software senza autorizzazione. Fondamentalmente, ogni copia legittima avrà il proprio numero seriale e il proprio token hardware.

Pensiamo che all'avvio dell'applicazione verrà visualizzata una schermata di accesso in cui l'utente deve inserire l'OTP dal token. Il token genererà OTP in base al numero di serie, l'ora corrente e un algoritmo sicuro. L'applicazione autentificherà l'OTP inserito. Speriamo che con questo meccanismo una copia del software sia utilizzabile da una sola persona (chi possiede l'OTP).

Lo scopo è di impedire agli utenti occasionali di copiare il software (ad esempio amici, famiglia). Sappiamo che questo non è sicuro al 100%, e posso pensare a molti modi in cui i pirati seri possono ancora copiare il software illegittimamente. Ma in questo caso, siamo interessati a fermare gli utenti occasionali a copiare il software (ad esempio amici, famiglia, ecc.) Che sono comportamenti normali qui. C'è qualcosa di cui preoccuparsi nell'usare questo metodo. Il difetto più preoccupante che riesco a pensare finora è che l'utente può manipolare l'ora locale del computer (questo è molto facile da fare in Windows). C'è un tempo affidabile in un computer difficile da manomettere?

    
posta juragan 06.01.2013 - 01:34
fonte

2 risposte

2

Non è possibile utilizzare un token hardware per fermare la pirateria. Puoi usarlo per cercare di ridurre la pirateria. Se implementato correttamente, sarà necessario il token hardware per eseguire il programma non modificato.

Questo è di uso limitato perché le persone possono modificare il tuo programma per rimuovere il controllo del token; in pratica, cerca il posto nell'eseguibile dove controlla if (token_is_valid()) … e cambialo in if (!token_is_valid()) . A meno che non si prendano precauzioni speciali, sarà facile trovare quel posto con un debugger. Naturalmente, la maggior parte dei tuoi utenti probabilmente non ha le competenze tecniche per farlo, ma basta uno che renderà il programma modificato disponibile per il download.

Se vuoi proteggere seriamente il tuo programma, devi offuscare il test per il token. Maggiore è il numero di tentativi di offuscamento, maggiore sarà l'impegno da parte di un cracker per rendere il programma utilizzabile senza il token. L'aumento dei costi di sviluppo per rendere proficua l'offuscamento è enorme. Non puoi semplicemente applicare un offuscatore off-the-shelf al tuo codice compilato: per ogni off-the-shelf off-the-shelf, c'è un corrispondente deobfuscator.

Un effetto collaterale diretto dell'aggiunta di misure di protezione contro la copia a un programma è che crea un incentivo per le persone a romperlo. Non solo le persone che vogliono copiare il tuo programma, ma anche gli utenti legittimi il cui sistema è incompatibile con le misure di protezione della copia, o perché trovano scomode le misure di protezione della copia, ad esempio perché vogliono usare il tuo software sul portatile in viaggio e non vogliono portare ancora un altro pezzo di spazzatura, o semplicemente perché trovano noioso dover inserire un codice ogni volta che avviano il programma. Ciò si tradurrà in una perdita di attività poiché alcuni potenziali clienti optano per la versione crackata perché è più semplice utilizzare gli altri semplicemente abbandonando il software.

Se vuoi davvero utilizzare un token di protezione dalla copia, non è necessario fare affidamento sull'ora. Puoi invece renderlo un sistema challenge-response: l'applicazione visualizza un codice challenge e il dispositivo risponde con la risposta corrispondente. Per una migliore esperienza utente, usa un token USB-connesso invece di uno in cui l'utente deve inoltrare le informazioni tra il token e il computer (ma si noti che questo sostituisce l'incubo UX da incubi di amministrazione, poiché un token connesso potrebbe non essere sempre facile per raggiungere dal programma in esecuzione su account non privilegiati, all'interno di macchine virtuali, ...).

    
risposta data 07.01.2013 - 00:24
fonte
2

È quasi impossibile impedire che un programma software venga piratato, ma per rispondere alla tua domanda, se l'utente non ha competenze informatiche avanzate potresti essere in grado di raggiungere un certo livello di protezione.

Per impedire la manipolazione dell'ora locale, ogni volta che il software viene avviato e in un determinato periodo di tempo, è necessario controllare l'ora del sistema e archiviarlo in un file crittografato. Se l'ora che hai letto è precedente all'ultima ora di salvataggio, la data è stata cambiata. Inoltre, se il file è mancante, qualcuno ha tentato di manomettere la tua applicazione.

Questo è solo un meccanismo di protezione minore. I meccanismi di protezione più avanzati includono:

  • Tentativo di rilevare un debugger collegato al programma

  • Crittografare parti del codice e decrittografarle in fase di runtime, utilizzare firme per funzione

  • altri thread hanno controllato le firme

  • Analizza informazioni statistiche come il tempo di esecuzione, per rilevare i debugger collegati

Puoi anche dare un'occhiata ai prodotti SafeNet HASP. Il loro scopo è proteggere il software dall'uso non autorizzato. Il tuo software è racchiuso in più livelli di software HASP e un token hardware è necessario per l'esecuzione dell'applicazione.

Maggiori dettagli qui: link

    
risposta data 06.01.2013 - 10:19
fonte