¿Puedo usar OTP de token de hardware para detener la piratería?

1

Nuestra empresa vende un software de escritorio fuera de línea (.exe), estamos pensando en utilizar OTP (de token de hardware como en la banca por Internet) para evitar que las personas copien el software sin permiso. Básicamente, cada copia legítima tendrá su propio número de serie y token de hardware.

Estamos pensando que cuando se inicie la aplicación, se mostrará una pantalla de inicio de sesión donde se supone que el usuario debe ingresar la OTP desde el token. El token generará OTP según el número de serie, la hora actual y un algoritmo seguro. La aplicación autentificará la OTP ingresada. Esperamos que con este mecanismo, una copia del software solo pueda ser utilizada por una persona (que es la propietaria de la OTP).

El propósito es evitar que los usuarios ocasionales copien el software (por ejemplo, a amigos, familiares). Sabemos que esto no es 100% seguro, y puedo pensar en muchas formas en que los piratas serios aún pueden copiar el software de manera ilegítima. Pero en este caso, estamos interesados en detener a los usuarios ocasionales para copiar el software (por ejemplo, a amigos, familiares, etc.) que es el comportamiento normal aquí. ¿Hay algo de qué preocuparse por usar este método? El error más preocupante que puedo pensar hasta ahora es que el usuario puede manipular la hora local de la computadora (esto es muy fácil de hacer en Windows). ¿Hay algún tiempo confiable en una computadora que sea difícil de manipular?

    
pregunta juragan 06.01.2013 - 01:34
fuente

2 respuestas

2

No puedes usar un token de hardware para detener la piratería. Puedes usarlo para intentar reducir la piratería. Si se implementa correctamente, se requerirá el token de hardware para ejecutar su programa no modificado.

Esto tiene un uso limitado porque las personas pueden modificar su programa para eliminar la comprobación del token; básicamente, busque el lugar en el ejecutable donde verifica if (token_is_valid()) … y cámbielo a if (!token_is_valid()) . A menos que tome precauciones especiales, será fácil encontrar ese lugar con un depurador. Por supuesto, la mayoría de los usuarios probablemente carezcan de la competencia técnica para hacer esto, pero todo lo que hace falta es uno que luego hará que el programa modificado esté disponible para descargar.

Si desea proteger su programa seriamente, debe ofuscar la prueba para el token. Cuanto más esfuerzo ponga en la ofuscación, más esfuerzo tendrá que gastar un cracker para hacer que el programa sea utilizable sin el token. El aumento en los costos de desarrollo para hacer una ofuscación que vale la pena es enorme. No puede simplemente aplicar un ofuscador estándar a su código compilado: para cada ofuscador común, hay un desobuscador correspondiente.

Un efecto secundario directo de agregar medidas de protección contra copia a un programa es que crea un incentivo para que las personas lo rompan. No solo las personas que desean copiar su programa, sino también los usuarios legítimos cuyo sistema es incompatible con sus medidas de protección de copia, o porque consideran que sus medidas de protección de copia son inconvenientes, por ejemplo, porque quieren usar su software en su computadora portátil en cualquier lugar. no quieren llevar otra pieza de chatarra, o simplemente porque les resulta tedioso tener que ingresar un código cada vez que inician el programa. Esto resultará en la pérdida de negocios, ya que algunos clientes potenciales optan por la versión crackeada porque es más fácil de usar que otros simplemente se dan por vencidos con su software.

Si realmente desea utilizar un token de protección contra copia, no es necesario confiar en el tiempo. En su lugar, puede convertirlo en un sistema de desafío-respuesta: su aplicación muestra un código de desafío y el dispositivo responde con la respuesta correspondiente. Para una mejor experiencia de usuario, use un token conectado por USB en lugar de uno donde el usuario deba transmitir la información entre el token y la computadora (pero tenga en cuenta que esto reemplaza a la pesadilla de UX por pesadillas de administración, ya que un token conectado no siempre es fácil para acceder desde programas que se ejecutan en cuentas no privilegiadas, dentro de máquinas virtuales, ...).

    
respondido por el Gilles 07.01.2013 - 00:24
fuente
2

Es casi imposible evitar que un programa de software sea pirateado, pero para responder a su pregunta, si el usuario no tiene habilidades informáticas avanzadas, es posible que pueda alcanzar algún nivel de protección.

Para evitar la manipulación de la hora local, cada vez que inicie su software y en un período de tiempo determinado, debe verificar la hora del sistema y almacenarlo en un archivo cifrado. Si la hora que ha leído es anterior a la última hora de guardado, entonces la fecha ha sido cambiada. Además, si falta el archivo, alguien intentó manipular su aplicación.

Esto es solo un mecanismo de protección menor. Los mecanismos de protección más avanzados incluyen:

  • Intentando detectar un depurador adjunto al programa

  • Encriptando partes del código y desencriptándolas en tiempo de ejecución, use firmas por función

  • Haga que otros subprocesos comprueben estas firmas

  • Analice información estadística como el tiempo de ejecución, para detectar depuradores adjuntos

También puede echar un vistazo a los productos HASP de SafeNet. Su propósito es proteger el software del uso no autorizado. Su software está envuelto en varias capas de software HASP y se necesita un token de hardware para que la aplicación se ejecute.

Más detalles aquí: enlace

    
respondido por el Dinu S 06.01.2013 - 10:19
fuente

Lea otras preguntas en las etiquetas