1. Solicitud de contraseña simple (no seguro):
Este es el más fácil de implementar, pero prácticamente no ofrece seguridad. Simplemente solicita una contraseña, la compara con una cadena codificada y otorga acceso si coinciden.
`` `Matlab
función my_script
% Defina la contraseña (no almacene contraseñas confidenciales directamente en el código)
correctPassword ='mySecretPassword';
% Aviso para la contraseña
userPassword =input ('Ingrese la contraseña:', 's');
% Compruebe si la contraseña coincide
if strcmp (userPassword, correctPassword)
disp ('¡Acceso otorgado!');
% Su código para ejecutar si la contraseña es correcta va aquí
disp ('este es el código protegido');
demás
disp ('contraseña incorrecta. Acceso denegado');
fin
fin
`` `` ``
Explicación:
* `Entrada ('Ingrese la contraseña:', 's')` solicita al usuario que ingrese texto y lo almacene en `UserPassword`. El argumento `'S'` le dice a` entrada' que trate la entrada como una cadena.
* `STRCMP (UserPassword, correctPassword)` Compara la contraseña ingresada con la contraseña codificada.
* Basado en la comparación, el acceso se otorga o se niega.
Problemas de seguridad:
* Contraseña codificada: La contraseña es texto sin formato en el código, lo que hace que sea trivial de encontrar. Cualquiera que pueda leer el archivo '.m` conoce la contraseña.
* Sin cifrado: El código en sí no está protegido.
2. Contraseña almacenada como un valor hash (ligeramente mejor, pero aún débil):
Este enfoque es marginalmente mejor porque almacena un hash de la contraseña en lugar de la contraseña de texto sin formato. Sin embargo, las funciones de hash de Matlab no están diseñadas para una fuerte seguridad y se pueden romper.
`` `Matlab
función my_script_hashed
% Generar el hash de la contraseña (solo haga esto una vez y guarde el hash)
% Nunca almacene la contraseña real.
% Ejemplo utilizando una función de hashing básica (no para la producción):
correctPasswordHash =dataHash ('mySecretPassword', 'md5'); % Reemplazar con un hash más moderno
% En una aplicación real, guardaría 'correctPasswordhash' en un archivo.
% Para fines de demostración, lo handalizaremos aquí (mala práctica):
correctPasswordHash ='e5b6460f9578c6382f2c4d0f28d4e9f7';
% Aviso para la contraseña
userPassword =input ('Ingrese la contraseña:', 's');
% Hash la contraseña enviada por el usuario
userPasswordHash =datahash (userPassword, 'md5'); % Usar la misma función hash
% Compruebe si las hashes coinciden
Si strcmp (userPasswordhash, correctopasswordhash)
disp ('¡Acceso otorgado!');
% Su código protegido va aquí
disp ('este es el código protegido');
demás
disp ('contraseña incorrecta. Acceso denegado');
fin
fin
`` `` ``
Explicación:
* `Datahash ('MySecretPassword', 'MD5')` calcula el hash MD5 de la contraseña. md5 se considera roto y no debe usarse para ninguna aplicación sensible. Por lo general, harías esto solo una vez para generar el hash y almacenar el hash.
* `Datahash (UserPassword, 'MD5')` calcula el hash MD5 de la contraseña ingresada del usuario.
* El código luego compara los dos hashes.
Problemas de seguridad:
* Función hash débil: MD5 (y SHA-1) son susceptibles a los ataques de colisión, lo que hace que sea más fácil encontrar una contraseña diferente que genere el mismo hash. SHA-256 o SHA-3 deben usarse. Sin embargo, Datahash solo admite funciones hash débiles.
* El hashing de Matlab es inseguro: Las funciones hash incorporadas de Matlab no son criptográficamente seguras. No están diseñados para resistir los ataques.
* Todavía vulnerable: Un atacante determinado podría potencialmente ingeniería inversa del hash o usar un ataque de mesa del arco iris.
3. Cifrado externo (más seguro):
Este es el enfoque recomendado si necesita seguridad real. Implica el uso de herramientas de cifrado externos (fuera de MATLAB) para cifrar los datos o el script de MATLAB completo.
* Cifre todo el script de Matlab: Use un programa de cifrado dedicado (por ejemplo, 7-ZIP con protección de contraseña) para cifrar el archivo '.m`. El usuario necesitaría descifrar el script antes de ejecutarlo en MATLAB. Esto protege todo el código.
* CIRRY CIRY ALIMENTOS DE DATOS SENTIBLES: Si solo necesita proteger ciertos archivos de datos utilizados por su script MATLAB, puede usar herramientas de cifrado externos para cifrar esos archivos. Su script MATLAB necesitaría descifrar los archivos antes de usar los datos y volver a entrenarlos después de su uso.
Ejemplo (usando 7-ZIP en la línea de comando):
`` `Bash
Para cifrar my_script.m con contraseña "mySecretPassword" (reemplace con una contraseña segura):
7Z a -pmysecretpassword my_script.7z my_script.m
para descifrar:
7Z x my_script.7z -pmysecretpassword
`` `` ``
Luego puede llamar a estos comandos desde dentro de MATLAB usando el comando 'System`, pero aún necesitará que el usuario ingrese la contraseña manualmente a una aplicación externa.
Código MATLAB para ejecutar una aplicación externa:
`` `Matlab
función my_encrypted_script
% Solicitar al usuario que descifra el archivo (usando una herramienta externa)
cifryptedFile ='my_script.7z';
DecryptedFile ='my_script.m';
% Solicite al usuario que descifrara el archivo y presione ENTER para continuar
Entrada (['por favor Decrypt "' CifryptedFile '" a "' DecryptedFile '" y presione ENTER:'], 'S');
% Ahora ejecuta el script descifrado
ejecutar (DecryptedFile);
fin
`` `` ``
Problemas de seguridad:
* se basa en la herramienta externa: La seguridad depende completamente de la fuerza del algoritmo de cifrado y la implementación de la herramienta externa que utiliza.
* Gestión de claves: Administrar de forma segura la clave de cifrado es crucial. No almacene la contraseña dentro del script MATLAB.
4. Uso de un ejecutable de Matlab compilado con protección de licencia (mejor para productos comerciales, pero caros):
Este enfoque implica compilar su código MATLAB en un ejecutable independiente y usar el compilador MATLAB para proteger el código con una licencia. Esto ayuda a evitar la distribución no autorizada y el uso de su aplicación.
* Compilar con el compilador MATLAB: Compile el script MATLAB a un archivo ejecutable (.exe).
* Protección de la licencia: Use el compilador MATLAB para agregar protección de licencia al ejecutable. Esto puede restringir el acceso a la aplicación en función de una clave de licencia.
Consideraciones de seguridad:
* ofuscación, no cifrado: El compilador de Matlab ofusca el código pero no lo cifra realmente. Un ingeniero inverso experto podría aún poder extraer el código, pero lo hace significativamente más difícil.
* Costo: El compilador MATLAB es un producto separado que requiere una licencia.
Resumen y recomendaciones:
* No confíe en las funciones de hashing incorporadas de Matlab para la seguridad. No están diseñados para este propósito.
* Si necesita un control de acceso básico (por ejemplo, para evitar el mal uso accidental), el mensaje de contraseña simple podría ser suficiente. Sin embargo, tenga en cuenta sus limitaciones.
* Para cualquier seguridad real, use una herramienta de cifrado externo para cifrar el script de MATLAB o los archivos de datos. Este es el enfoque recomendado.
* Si está desarrollando una aplicación comercial MATLAB, considere usar el compilador MATLAB con protección de licencias para un mayor nivel de seguridad contra el uso no autorizado.
Prácticas de seguridad importantes:
* Contraseñas seguras: Use contraseñas fuertes y aleatorias (al menos 12 caracteres de largo, con una combinación de mayúsculas, minúsculas, números y símbolos).
* Gestión de claves seguras: Almacene las claves de cifrado de forma segura. No los codifique en el script MATLAB. Use variables de entorno, archivos de configuración o sistemas de administración de claves dedicados.
* Principio de menor privilegio: Dé a los usuarios solo los permisos necesarios para realizar sus tareas.
* Auditorías de seguridad regulares: Revise sus prácticas de seguridad con regularidad y actualice según sea necesario.
* Mantenga el software actualizado: Mantenga su instalación de MATLAB y cualquier herramienta de cifrado externa actualizada con los últimos parches de seguridad.
Recuerde elegir el método que mejore mejor sus necesidades de seguridad con la complejidad de la implementación y el costo. Si se trata de datos verdaderamente confidenciales, consulte con un experto en seguridad. El consejo aquí proporciona un punto de partida, pero la seguridad es un campo complejo y en evolución.