Cómo proteger un software propietario fuera de línea de ser robado

1

Actualmente estamos desarrollando un software que se supone que se ejecuta en todas las computadoras de una compañía mundial que tiene muchos dominios. Estamos pensando en la seguridad, ya que queremos que el software se utilice solo en una computadora de la empresa .

Una observación particular es que no queremos ninguna medida de seguridad en línea , ya que el software puede ejecutarse sin conexión solamente.

Pensar en la clave de serie es casi inútil ya que un cliente que abandona la empresa puede llevar consigo el software (con una clave de serie ya validada) y usarlo en otro contexto.

Pensamos en verificar el emisor de certificados para un certificado específico en la tienda cada vez que se lanza el software (como en todas las computadoras de la compañía, este emisor de certificado específico será el nombre de la compañía). Sin embargo, el uso de un emisor de certificados falso desde una computadora que no sea de la empresa también funcionará ...

Sabemos que no hay una solución perfecta, pero solo queremos la solución más efectiva.

¡Gracias!

    
pregunta Duke Nukem 10.02.2017 - 15:44
fuente

2 respuestas

2

Con hardware, un TPM o un token de seguridad de hardware sería una solución posible, siempre que un empleado no pudiera simplemente llevarlo consigo cuando dejara la empresa (por ejemplo, un TPM que formaba parte del procesador o que estaba soldado al mainboard)

Si desea trabajar solo en software y no puede conectarse a una red, la única manera que veo es algún tipo de número de serie que caduque. Digamos que necesita que el usuario del software ingrese un número de serie. Luego, el software almacena la fecha en la que se ingresó el número de serie y funciona hasta dos semanas después, cuando se debe ingresar el siguiente número de serie válido. Si el usuario elimina el archivo que almacena la fecha, necesita la entrada inmediata de un nuevo número de serie. Tendrá que considerar que un usuario podría restablecer la fecha en su computadora para evitar tener que ingresar un nuevo número de serie, por lo que deberá proteger su software contra eso (por ejemplo, asegúrese de que cada vez que inicie la aplicación, ha avanzado desde la última vez que lo inició, asegúrese de que el tiempo no avance en pasos demasiado pequeños, etc.). Esto es difícil y nunca será infalible, pero debería brindarte algo de protección, por ejemplo. Sube un poco la barra para los ladrones.

Como dijo Tensibai en su comentario, en última instancia, todo esto carece de sentido, porque si hay suficiente motivación, alguien evitará todas las medidas de seguridad que usted haya implementado para evitar que su software sea robado, y una vez hecho esto, probablemente se puede descargar desde algún lugar de Internet como cualquier otra pieza de software que haga algo que valga la pena.

¿Tal vez una mejor solución a su problema sería hacerlo más atractivo para la mayoría de los posibles ladrones que le paguen para utilizar legalmente el software?

    
respondido por el Pascal 10.02.2017 - 18:15
fuente
2

En primer lugar, no hay manera de hacer esto de manera que sea invulnerable para alguien que sabe cómo usar un depurador y modificar el comportamiento de su programa. Hay algunas mitigaciones básicas que puede hacer, por ejemplo, comprobando si un depurador se está ejecutando y apagando si lo está. Pero también hay formas de evitarlo si el hacker está determinado. Puede programar la comprobación de validación más sofisticada del mundo, pero un pirata informático simplemente puede eliminar esa parte del código. Esto también se aplica a los esquemas de verificación basados en la red, por cierto.

Dicho esto, si está buscando un mínimo de protección contra el cambio de software a cajas no autorizadas, puede utilizar un mecanismo como este:

  1. Cree un archivo plano que solo usted pueda editar y que solo su programa pueda leer (por ejemplo, mediante el cifrado).

  2. Cuando una empresa desea instalar el software en una computadora, pídale que proporcione el número de serie de la CPU, la dirección MAC u otro elemento de datos inmutables de la máquina host. Incluso podría agregar una característica a su programa que generará esto para ellos y colocarla en un archivo .txt para que puedan adjuntarla a un correo electrónico. Llame a esto una "firma de la máquina".

  3. De vuelta en la oficina de su hogar, agregue la firma de la máquina al archivo. El archivo puede contener varios registros delimitados si necesita admitir más de una máquina. Envíe el archivo al cliente para colocarlo en la carpeta raíz de su programa en cada máquina donde esté autorizado para ejecutarse.

  4. Cuando se inicie el programa, descifre el archivo y verifique cada firma de la máquina en el archivo con el entorno de hardware actual. Si no se encuentra una coincidencia, apague.

Naturalmente, un pirata informático determinado puede encontrar la parte de su programa que comprueba el archivo y reemplazarlo con bytes que no comprueban nada (esto sería más fácil que descifrar el cifrado). Pero si estás de acuerdo con eso, el mecanismo anterior funcionará.

    
respondido por el John Wu 11.02.2017 - 02:53
fuente

Lea otras preguntas en las etiquetas