So che tutto è reversibile. Ma come posso bloccare un'istanza di linux su un dispositivo hardware specifico? Ad esempio, legando il filesystem ad un numero seriale specifico sulla scheda.
So che tutto è reversibile. Ma come posso bloccare un'istanza di linux su un dispositivo hardware specifico? Ad esempio, legando il filesystem ad un numero seriale specifico sulla scheda.
Ecco una soluzione semplice
Al primo avvio, richiede l'autenticazione dal server. Avere un nome utente che è memorizzato sul dispositivo. Il server fornisce una password associata a tale nome utente.
Alla verifica successiva, invia quella password al server.
Il server restituisce una nuova password che viene memorizzata. Il cliente conferma la ricezione della nuova password.
Alla verifica successiva invia la nuova password. Se non funziona, prova l'ultima password di lavoro conosciuta.
Il server verifica che la password sia "l'ultima che è stata confermata".
a) Se corrisponde, il server procede al punto 3. (nuova password per la rotazione)
b) Altrimenti, questa è una copia, che non è sincronizzata con le altre istanze del tuo dispositivo.
Il client avrebbe un uso limitato del tempo di queste copie fino a quando la verifica del server non catturerà la frode. Il client dovrebbe apportare ulteriori modifiche all'immagine per ignorare questa protezione.
Si spera che qualcun altro qui sappia come controllare alcuni componenti hardware del dispositivo ARM per un numero seriale, in quanto ciò fornirebbe un errore più immediato senza dover attendere una connessione Internet.
Come ammetti nel tuo post originale, queste protezioni potrebbero essere modificate o rimosse modificando il contenuto dell'SSD prima della duplicazione.
La soluzione migliore sarebbe spostare una parte della funzionalità nel cloud, in modo che sia necessaria una connessione Internet per operazione invece di verifica . Ovviamente questa non è sempre una possibilità.
Potrebbero esserci hardware specializzati là fuori che non ho familiarità con quale sia
a) Difficile o impossibile da copiare.
b) Verifica il contenuto del sistema operativo di avvio
c) Se OK, passa una chiave di decrittazione necessaria per decodificare il codice dell'applicazione prima che possa essere eseguito.
Potrebbero esserci hardware specializzati (anche in questo caso non familiari) che adottano questo approccio: Archivia la chiave di crittografia in una memoria autodistruttiva, in modo che quando il frame del tuo dispositivo viene aperto, il dispositivo non sarà più essere in grado di avviare.
Anche il dispositivo dovrebbe essere spento allo stesso tempo per avviare il processo di rendere la memoria irrecuperabile.
Se sei interessato a una di queste opzioni hardware specializzate, devi pubblicare una seconda domanda con le specifiche e forse qualcuno qui saprà se esiste e come viene chiamato.
Modifica: molti dispositivi Android hanno qualcosa chiamato Trusted Execution Environment (TEE) e / o Secure Element (SE) che possono essere utili termini di ricerca nella categoria di hardware specializzato. Vedi Sistema Android Keystore .
ARM ha una implementazione di trusted computing e alcuni licenziatari ARM hanno le proprie soluzioni. Questo ti permetterà di criptare il tuo programma e i tuoi dati sia su disco che in memoria, quindi non è possibile copiare senza danneggiare fisicamente la CPU.
I problemi sono una tecnologia informatica affidabile richiede un sacco di lavoro di integrazione (dal bootloader all'applicazione), che può facilmente costare più del valore del tuo prodotto.
Se il processore ARM che utilizzi ha già questa funzione integrata, l'utilizzo di un sistema operativo basato su Android può semplificare l'integrazione.
Leggi altre domande sui tag linux disk-encryption