1. Prompt password semplice (non sicuro):
Questo è il più semplice da implementare ma non offre praticamente alcuna sicurezza. Chiede semplicemente una password, la confronta con una stringa hardcoded e concede l'accesso se corrispondono.
`` `Matlab
funzione my_script
% Definire la password (non archiviare le password sensibili direttamente nel codice)
correttoPassword ='mySECRETPASPORD';
% Prompt per la password
userpassword =input ('immettere password:', 's');
% Verifica se la password corrisponde
Se STRCMP (userPassword, CorrectPassword)
dis ('accesso concesso!');
% Il tuo codice da eseguire se la password è corretta va qui
disp ('questo è il codice protetto.');
altro
Disp ("password errata. Accesso negata. ');
FINE
FINE
`` `
Spiegazione:
* `input ('Inserisci password:', 's')` chiede all'utente di inserire il testo e lo archivia in `userpassword`. L'argomento `'s' dice` input` per trattare l'input come una stringa.
* `strcmp (userpassword, correctpassword)` confronta la password immessa con la password hardcoded.
* In base al confronto, l'accesso è concesso o negato.
Problemi di sicurezza:
* Password codificata con codifica hard: La password è semplice nel codice, rendendolo banale da trovare. Chiunque possa leggere il file `.m` conosce la password.
* Nessuna crittografia: Il codice stesso non è protetto.
2. Password memorizzata come valore hash (leggermente migliore, ma ancora debole):
Questo approccio è leggermente migliore perché memorizza un hash della password anziché la password di testo semplice. Tuttavia, le funzioni di hashing di Matlab non sono progettate per una forte sicurezza e possono essere rotte.
`` `Matlab
funzione my_script_hashed
% Genera l'hash della password (fallo solo una volta e salva l'hash)
% Non archiviare mai la password effettiva.
% Esempio usando una funzione di hashing di base (non per la produzione):
correttoPasswordHash =dataHash ('MySECRETPassword', 'MD5'); % Sostituire con un hash più moderno
% In un'applicazione reale, salveresti "correttoPasswordhash" in un file.
% Per scopi dimostrativi, lo faremo solo con il codifica qui (cattiva pratica):
correttoPasswordHash ='e5b6460f9578c6382f2c4d0f28d4e9f7';
% Prompt per la password
userpassword =input ('immettere password:', 's');
% Hash la password inserita dall'utente
userpasswordHash =dataHash (userPassword, 'md5'); % Usa la stessa funzione hash
% Controlla se gli hash corrispondono
Se STRCMP (userpasswordhash, correttoPasswordHash)
dis ('accesso concesso!');
% Il tuo codice protetto va qui
disp ('questo è il codice protetto.');
altro
Disp ("password errata. Accesso negata. ');
FINE
FINE
`` `
Spiegazione:
* `DataHash ('MySecretPassword', 'md5')` calcola l'hash MD5 della password. md5 è considerato rotto e non deve essere utilizzato per alcuna applicazione sensibile. In genere lo faresti solo una volta per generare l'hash e archiviare l'hash.
* `DataHash (userpassword, 'md5')` calcola l'hash MD5 della password inserita dall'utente.
* Il codice quindi confronta i due hash.
Problemi di sicurezza:
* Funzione hash debole: MD5 (e SHA-1) sono suscettibili agli attacchi di collisione, rendendo più facile trovare una password diversa che genera lo stesso hash. Dovrebbero essere usati SHA-256 o SHA-3. Tuttavia, DataHash supporta solo funzioni di hash deboli.
* L'hashing di Matlab è insicuro: Le funzioni di hash integrate di Matlab non sono crittograficamente sicure. Non sono progettati per resistere agli attacchi.
* ancora vulnerabile: Un attaccante determinato potrebbe potenzialmente ingegnere inverso l'hash o utilizzare un attacco da tavolo arcobaleno.
3. Crittografia esterna (più sicuro):
Questo è l'approccio consigliato se hai bisogno di sicurezza effettiva. Implica l'uso di strumenti di crittografia esterni (al di fuori di MATLAB) per crittografare i dati o l'intero script MATLAB.
* crittografare l'intero script Matlab: Utilizzare un programma di crittografia dedicato (ad es. 7-Zip con protezione da password) per crittografare il file `.m`. L'utente dovrebbe decrittografare lo script prima di eseguirlo in MATLAB. Questo protegge l'intero codice.
* Crittografia dei file di dati sensibili: Se è necessario proteggere solo determinati file di dati utilizzati dallo script MATLAB, è possibile utilizzare strumenti di crittografia esterni per crittografare tali file. Lo script MATLAB dovrebbe quindi decrittografare i file prima di utilizzare i dati e ricontruirli dopo l'uso.
Esempio (usando 7-zip sulla riga di comando):
`` `Bash
7Z a -pmysecretpassword my_script.7z my_script.m
7Z x my_script.7z -pmysecretpassword
`` `
È quindi possibile chiamare questi comandi da Matlab usando il comando `System`, ma avrai comunque bisogno che l'utente inserisca manualmente la password su un'applicazione esterna.
Codice MATLAB per eseguire un'applicazione esterna:
`` `Matlab
funzione my_encrypted_script
% Richiedere all'utente di decrittografare il file (utilizzando uno strumento esterno)
crittograptedFile ='my_script.7z';
decryptedFile ='my_script.m';
% Chiedi all'utente di decrittografare il file e premere Invio per continuare
input (['DECRYPT FILE "' CriptedFile" a "'decryptedFile'" e premere Invio:'],' s ');
% Ora esegui lo script decrypted
run (decrittografatofile);
FINE
`` `
Problemi di sicurezza:
* si basa sullo strumento esterno: La sicurezza dipende interamente dalla forza dell'algoritmo di crittografia e dall'implementazione dello strumento esterno utilizzato.
* Gestione delle chiavi: Gestire in modo sicuro la chiave di crittografia è cruciale. Non archiviare la password all'interno dello script MATLAB.
4. Utilizzando un matlab compilato con protezione della licenza (migliore per prodotti commerciali, ma costosi):
Questo approccio prevede la compilazione del codice MATLAB in un eseguibile autonomo e l'utilizzo del compilatore MATLAB per proteggere il codice con una licenza. Questo aiuta a prevenire la distribuzione non autorizzata e l'uso dell'applicazione.
* Compila con il compilatore MATLAB: Compilare lo script MATLAB in un file eseguibile (.exe).
* Protezione della licenza: Utilizzare il compilatore MATLAB per aggiungere protezione da licenza all'eseguibile. Ciò può limitare l'accesso all'applicazione in base a una chiave di licenza.
Considerazioni sulla sicurezza:
* Offuscamento, non crittografia: Il compilatore MATLAB offusca il codice ma non lo crittografa veramente. Un ingegnere reverse qualificato potrebbe essere ancora in grado di estrarre il codice, ma lo rende significativamente più difficile.
* Costo: Il compilatore MATLAB è un prodotto separato che richiede una licenza.
Riepilogo e raccomandazioni:
* Non fare affidamento sulle funzioni di hashing integrate di Matlab per la sicurezza. Non sono progettati per questo scopo.
* Se hai bisogno di un controllo di accesso di base (ad es. Per evitare un uso improprio accidentale), il semplice prompt della password potrebbe essere sufficiente. Tuttavia, sii consapevole dei suoi limiti.
* Per qualsiasi sicurezza reale, utilizzare uno strumento di crittografia esterno per crittografare lo script MATLAB o i file di dati. Questo è l'approccio consigliato.
* Se si sta sviluppando un'applicazione MATLAB commerciale, prendi in considerazione l'utilizzo del compilatore MATLAB con protezione della licenza per un livello più elevato di sicurezza contro l'uso non autorizzato.
Pratiche di sicurezza importanti:
* Password forti: Usa password forti e casuali (lunghe almeno 12 caratteri, con un mix di maiuscolo, minuscolo, numeri e simboli).
* Gestione delle chiavi sicura: Memorizza in modo sicuro le chiavi di crittografia. Non codirli nello script MATLAB. Utilizzare variabili di ambiente, file di configurazione o sistemi di gestione delle chiavi dedicati.
* Principio del minimo privilegio: Fornire agli utenti solo le autorizzazioni necessarie per eseguire le loro attività.
* Audit di sicurezza regolari: Rivedi regolarmente le tue pratiche di sicurezza e aggiornale secondo necessità.
* Mantieni il software aggiornato: Mantieni l'installazione MATLAB e qualsiasi strumento di crittografia esterni aggiornati con le ultime patch di sicurezza.
Ricorda di scegliere il metodo che equilibra meglio le tue esigenze di sicurezza con la complessità di implementazione e costi. Se hai a che fare con dati veramente sensibili, consulta un esperto di sicurezza. Il consiglio qui fornisce un punto di partenza, ma la sicurezza è un campo complesso e in evoluzione.
Domanda © www.354353.com