sviluppo dongle

0

Devo fornire una soluzione hardware + software. Il software è un'applicazione in c ++ in esecuzione su Windows. L'hardware è scheda madre + processore + disco + memoria. Per proteggere la soluzione, ho bisogno di sviluppare un dongle USB.

Sto pianificando lo sviluppo di un'applicazione che genererà i dongle USB crittografando dati diversi (dati dei clienti, componenti hardware ...) combinati con una password.

La soluzione controllerà se questo dongle USB è presente ogni 60 secondi. In tal caso, la soluzione decodificherà il contenuto del dongle USB e lo confronterà con ciò che la soluzione ha caricato internamente (nel codice). Se c'è una corrispondenza, la soluzione continuerà a funzionare fino al ciclo successivo (60 secondi dopo). In caso contrario, la soluzione si fermerà.

Domande:

  1. ha senso?

  2. Devo controllare il numero di serie dei componenti hardware (cpu ...) ogni ciclo? come rendere questo controllo veramente veloce?

posta ekremer 31.07.2018 - 18:28
fonte

3 risposte

2

does is make sense ?

No.

Più di 20 anni fa, ogni piccolo fornitore di software specializzato stava cercando di proteggere i propri IP utilizzando i dongle hardware. Era un turn-off per i clienti, una PITA per il supporto e bypassato con la frequenza con cui si sono interrotti.

Il mondo è passato - così dovresti.

The solution will check if this USB dongle is present every 60 seconds. If so, the solution will decrypt the USB dongle's content and compare it...

Quindi la soluzione controllerà se un file è presente ogni 60 secondi. In questo caso, la soluzione decodificherà il file e lo confronterà. Quanto sarebbe difficile sovvertire?

Should I check hardware components' serial number (cpu...) every cycle ?

Leggermente più sensato rispetto all'utilizzo di un dongle. Ma se il tuo prodotto richiede realmente tale capacità, allora perché non utilizzare un network HSM ; sia del cliente che di quello che ospiti.

how to make this check really fast ?

Leggere le proprietà dovrebbe essere intorno alla stessa velocità di un recupero della RAM - cioè misurato in nanosecondi per qualcosa che si propone di fare ogni 60 secondi, e si è preoccupati per le prestazioni?!

    
risposta data 01.08.2018 - 14:55
fonte
1

does is make sense ?

No. Si basa sull'applicazione che legge il contenuto del dongle e esegue un'azione su di esso. Ciò implica che il contenuto è leggibile e quindi banale da replicare. Basta intercettare tutte le chiamate USB con wireshark e annotare la risposta attesa.

Should I check hardware components' serial number (cpu...) every cycle ? how to make this check really fast ?

Non è necessario effettuare il controllo molto velocemente. Puoi eseguirlo ad esempio ogni dieci secondi in un thread separato. Ma ti suggerisco di esaminare i sistemi di chiavi commerciali, come offerte di Flexeras . Perché in qualche modo dubito che sarai in grado di creare da solo un buon sistema - basato sulle domande che chiedi.

    
risposta data 01.08.2018 - 08:11
fonte
0

Sono d'accordo con vidarlo (risposta precedente). IMHO utilizzando una soluzione pronta sarebbe più veloce ed economico.

Potrebbe essere sufficiente un semplice token di crittografia (token USB o una scheda): potresti consentire al software di firmare alcuni dati casuali e controllare la firma.

Indipendentemente dal fatto che, non appena il codice risiede sul lato client, perdi effettivamente qualsiasi controllo su di esso e non puoi impedire al client di modificare il codice disabilitando la convalida (ok - a meno che non funzioni su un hw progettato esplicitamente per impedire l'accesso al suo codice interno, come i microcontrollori).

    
risposta data 01.08.2018 - 09:51
fonte

Leggi altre domande sui tag