Generalmente, no puedes detener a un hacker determinado o experimentado. Mi sugerencia es no preocuparse demasiado porque, a menos que tenga muchos usuarios (o dinero), es poco probable que alguien haga un esfuerzo serio para piratear su aplicación; Concéntrese en entregar una fantástica pieza de software.
Sin embargo, puedes:
Evita almacenar contraseñas como literales de cadena
- Esto debería ser obvio.
Oscurece tus frases de contraseña
- Use una colección de palabras simples en inglés o caracteres aleatorios para amortiguar su contraseña para posiblemente confundir al pirata informático o hacer que las contraseñas sean menos obvias.
Nombres de símbolos oscuros
- Existe la posibilidad de que un hacker pueda extraer nombres de símbolos obvios de su binario. Por ejemplo, class keyChain
. Puedes engañar al tiempo que mantienes la legibilidad usando #define keyChain readModule
.
Flujo de aplicación oscuro
- Supongamos que el pirata informático trabaja hacia atrás desde el descifrado del archivo para encontrar la frase de contraseña, podría usar los punteros de función para ocultar el flujo de aplicaciones aparecido.
Genera tu contraseña en tiempo de ejecución
- Usted escribe su propia función que genera y escupe su contraseña durante el tiempo de ejecución.
Encriptar / Descifrar frase de contraseña con su propia función
- Si utiliza otra biblioteca de terceros, un atacante puede buscar llamadas comunes. Obviamente, sea inteligente con esto y no use alguna forma de caesar cipher
, y recuerde usar solo esto para ocultar su frase de contraseña, es decir, aún use AES
de OpenSSL
para su cifrado y descifrado de datos reales. Sin embargo, esto lo llevará de nuevo al inicio del almacenamiento seguro de una contraseña. La ganancia está en el intento de evitar que el pirata informático busque las funciones comunes de descifrado / cifrado.
En cualquier caso, ninguno de estos detendrá completamente a un hacker. Pueden ralentizar o impedir a un principiante, o pueden no hacer absolutamente nada.
Trabaja en hacer que tu software sea tan atractivo que pasarlo directamente al descifrado no es atractivo. Convenza a los usuarios de que vale la pena utilizar su software.