Come proteggere un software proprietario offline dal furto

1

Attualmente stiamo sviluppando un software che dovrebbe funzionare su tutti i computer di un'azienda di livello mondiale che ha molti domini. Pensiamo alla sicurezza perché vogliamo che il software sia utilizzato solo su un computer aziendale .

Una nota particolare è che non vogliamo alcuna misura di sicurezza online , poiché il software può essere eseguito solo offline.

Pensare alla chiave seriale è quasi inutile perché un cliente che lascia la società può portare con sé il software (con una chiave seriale già convalidata) con lui e utilizzarlo in un altro contesto.

Abbiamo pensato di verificare l'emittente del certificato per un certificato specifico nell'archivio ogni volta che viene avviato il software (come per tutti i computer dell'azienda, questo specifico emittente di certificati sarà il nome della società). Tuttavia, utilizzare un emittente di certificati fasulli da un computer non aziendale funzionerà anche ...

Sappiamo che non esiste una soluzione perfetta, ma vogliamo solo la soluzione più efficace.

Grazie!

    
posta Duke Nukem 10.02.2017 - 15:44
fonte

2 risposte

2

Con l'hardware, un token di sicurezza TPM o hardware sarebbe una possibile soluzione, a condizione che un dipendente non potesse semplicemente portarlo con sé quando ha lasciato l'azienda (ad esempio un TPM che faceva parte del processore o saldato sul mainboard)

Se vuoi lavorare solo con il software e non puoi connetterti a una rete, l'unico modo che vedo è una specie di numero seriale che scade. Diciamo che è necessario che l'utente del software inserisca un numero di serie. Il software memorizza quindi la data in cui è stato inserito il numero di serie e funziona fino a due settimane dopo, quando deve essere inserito il successivo numero di serie valido. Se l'utente elimina il file che memorizza la data, è necessario immettere immediatamente un nuovo numero di serie. Dovrai considerare che un utente può reimpostare la data sul suo computer per evitare di dover inserire un nuovo numero di serie, quindi dovrai proteggere il tuo software da quello (ad es. Assicurati che ogni volta che avvii l'applicazione, tempo è andato avanti dall'ultima volta che l'hai avviato, assicurati che il tempo non si muova in passi troppo piccoli, ecc.). Questo è difficile e non sarà mai infallibile, ma dovrebbe darti un po 'di protezione, ad es. alzare un po 'il tiro per i ladri.

Come ha detto Tensibai nel suo commento, alla fine questo è tutto inutile, perché se c'è una motivazione sufficiente, qualcuno aggirerà tutte le salvaguardie che hai messo in atto per impedire il furto del tuo software, e una volta fatto, probabilmente sarà essere scaricabile da qualche parte su Internet come ogni altro software che fa qualcosa di utile.

Forse una soluzione migliore al tuo problema sarebbe rendere più attraente la maggior parte dei ladri possibili per pagarti l'utilizzo legale del software?

    
risposta data 10.02.2017 - 18:15
fonte
2

Prima di tutto, non c'è modo di farlo in un modo che è invulnerabile a qualcuno che sa come usare un debugger e modificare il comportamento del programma. Ci sono alcune attenuazioni di base che puoi fare, ad esempio verifica se un debugger è in esecuzione e si arresta se lo è. Ma ci sono modi per aggirare anche questo, se l'hacker è determinato. Puoi programmare il controllo di validazione più elaborato al mondo, ma un hacker può semplicemente cancellare quella parte del codice. Questo vale anche per gli schemi di verifica basati sulla rete.

Detto questo, se stai cercando un minimo di protezione contro il passaggio del software a caselle non autorizzate, puoi utilizzare un meccanismo come questo:

  1. Crea un file flat che solo tu puoi modificare e solo il tuo programma può leggere (ad esempio usando la crittografia).

  2. Quando un'azienda desidera installare il software su un computer, chiedere loro di fornire il numero di serie della CPU, l'indirizzo MAC o altri dati immutabili dal computer host. Potresti anche aggiungere una funzione al tuo programma che genererà questo per loro e inserirla in un file .txt in modo che possano allegarla a un'e-mail. Chiamala "firma della macchina".

  3. Torna al tuo ufficio a casa, aggiungi la firma della macchina al file. Il file può contenere diversi record delimitati se è necessario supportare più di un computer. Invia il file al cliente per inserirlo nella cartella principale del tuo programma su ogni computer in cui è autorizzato ad eseguire.

  4. All'avvio del programma, decrittografare il file e controllare ogni firma della macchina nel file rispetto all'ambiente hardware corrente. Se una corrispondenza non viene trovata, spegni.

Ovviamente, un hacker determinato può trovare la parte del tuo programma che controlla il file e sostituirlo con byte che non controllano nulla (sarebbe più facile che crackare la crittografia). Ma se sei d'accordo, il meccanismo sopra funzionerà.

    
risposta data 11.02.2017 - 02:53
fonte

Leggi altre domande sui tag