Domanda

So che ci sono già domande simili su SO. Ma la mia domanda è più teorica.

Mi chiedo, è possibile progettare un sistema di prova a prova di errore? Per infallibile intendo un tale sistema che non può essere decifrato anche se un cracker conosce l'algoritmo di un tale sistema?

Scusate se non è una domanda di programmazione.

Modifica: penso che dovrei rendere la mia domanda più pratica. Sto chiedendo un intero sistema, non un'applicazione autonoma. Il sistema è composto da PC con sistema operativo Linux e hardware collegato ad esso. Forse posso usare una crittografia HDD?

È stato utile?

Soluzione

Probabilmente l'unico modo è un software "as a service" basato su Internet applicazione. Se non si fornisce l'accesso, non stanno utilizzando il software. Se si tratta di un'applicazione basata su desktop, alcune funzionalità chiave dovrebbero comunque trovarsi su un server online da qualche parte.

Se l'hacker ha l'intera applicazione sul proprio computer locale, può essere decodificato e "crackato". in qualche modo. L'unico modo per ovviare a questo è assicurare che parte della funzionalità non sia mai sulla loro macchina.

Altri suggerimenti

L'unico modo (teorico) per avere un software a prova di crack è quello di avere un sistema completamente chiuso. Se hai controllato tutto, dall'hardware al sistema operativo, alle applicazioni e agli strumenti di sviluppo, potresti impedire la manomissione.

Nota come ho detto che questo era teorico. Inevitabilmente, troverai un hacker hardware che troverà un modo per modificare l'hardware (vedi modchips ). Da lì, possono caricare qualsiasi software desiderino e modificare il software che è già lì.

Lo stesso modello che si applica alla sicurezza fisica (casseforti, caveau, ecc.) si applica al software. Il punto è rendere più costoso il furto / copia dei beni che ottenerli con mezzi legittimi. Non puoi mai creare un sistema infallibile, ma puoi facilmente impedire ai fan degli script e agli hacker hobby di rompere il tuo prodotto. I professionisti, d'altra parte, vivono per rompere. Troveranno un modo.

Potresti progettare la tua applicazione in modo che dipenda da un server remoto di cui chiunque tranne tu abbia il controllo.

No. Puoi renderlo molto difficile, ma la tua domanda equivale a " come posso consentire a qualcuno di eseguire il codice ma non lasciargli eseguire il codice. & Quot;

Ad esempio, potresti tralasciare una parte piccola ma chiave del codice e richiedere che tale codice venga scaricato da un server che controlli. Ciò consente di tenere traccia delle attività di prova e chiudere utenti specifici. Tuttavia, una volta che ricevono il codice, una volta che sono stati in grado di catturarlo e creare una versione non vincolata del tuo prodotto, dato il lavoro sufficiente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top