protection - proteger - proteccion de software propiedad intelectual
¿Cómo proteger su código de software? (13)
Posibles duplicados:
¿Cómo protege su software de la distribución ilegal?
Las mejores prácticas para evitar la copia de software
Situación hipotética:
Digamos que he construido un producto de software desde cero y hace cosas maravillosas. El único problema es que, una vez que alguien echa un vistazo al código, lo entenderá muy fácilmente y podrá construirlo por sí mismo.
Ahora, la cosa es que construí el código desde cero al 100% y usé una mezcla de llamadas a la API. Nadie más está involucrado en el desarrollo del código.
Si quiero vender este producto, ¿cuál es la garantía de que alguien mucho más inteligente que yo va a aplicar ingeniería inversa a todo esto y ofrecer un mejor producto?
Ahora mismo estoy pensando en fragmentar todo el código. Añadiendo muchos códigos redundantes y toneladas de comentarios.
¿Hay algún software que encripta el código del software, que hará que la depuración, solución de problemas y comprensión de cómo funciona el código sea prácticamente imposible? y sin embargo corre como de costumbre? ¿Para que el desarrollador pueda tener tranquilidad?
¿Existe algún software que encripte el código del software que haga que la depuración, la resolución de problemas y la comprensión de cómo funciona el código sea prácticamente imposible? y sin embargo corre como de costumbre? ¿Para que el desarrollador pueda tener tranquilidad?
Esta es la mentalidad totalmente equivocada de la OMI. ¿Qué pasa si te atropella un autobús? ¿Su empresa quiebra? ¿Todos tus datos se destruyen en un incendio? Para cada uno de sus clientes, el valor de su inversión en su software se reducirá, y eventualmente llegará a cero, porque el software no se puede desarrollar ni resolver más sin usted. He visto tanto dinero desperdiciado de esa manera, creo que es un modelo de negocio horrible.
Me gano el pan haciendo software yo mismo, así que sé las dificultades de ganarme la vida con él. Sin embargo, la ofuscación no puede ser el camino a seguir en la actualidad. Imponga acuerdos de licencia estrictos a sus clientes, déjelos asustados para que ni siquiera piensen en redistribuir el software, sino que lo dejen abierto .
Una vez que alguien eche un vistazo al código, lo entenderán muy fácilmente y podrán construirlo fácilmente por sí mismos.
Así que no le des a nadie el código fuente.
Si quiero vender este producto, ¿cuál es la garantía de que alguien mucho más inteligente que yo va a aplicar ingeniería inversa a todo esto y ofrecer un mejor producto?
(a) Entonces comience a venderlo ahora y capture el mercado. La ingeniería inversa toma tiempo, durante el cual está capturando el mercado y la "participación de la mente". (b) Coloque una disposición en su contrato de licencia que prohíba la ingeniería inversa. (c) Asegúrese de que todos los que obtengan el producto firmen el acuerdo.
Ahora mismo estoy pensando en fragmentar todo el código. Añadiendo muchos códigos redundantes y toneladas de comentarios.
Eso solo tiene un punto si vas a distribuir el código fuente. En cuyo caso nadie necesita siquiera hacer ingeniería inversa. Ellos tienen su código fuente. No se lo des a ellos.
¿Hay algún software ...
Hay un montón de software que pretende hacer este trabajo. Sin embargo, es una solución técnica a un problema empresarial. Todo el software puede tener ingeniería inversa, ya que, en un momento u otro, todo tiene que ser descifrado y desenfocado hasta el punto en que la CPU lo entenderá. En ese punto es esencialmente texto plano. Por lo tanto, no es formalmente posible hablar de una solución técnica (menos de algo como el código que se ejecuta en un HSM a prueba de falsificaciones).
Agregaré que hay otro mecanismo comercial que puede usar para defenderse contra la pérdida comercial, que es de lo que se trata: el precio. Hacer que el precio sea tan alto que los licenciatarios valoren su copia y no permitan que se inspeccione, o que sea tan bajo que la ingeniería inversa no sea factible; o hazlo gratis y gana tu dinero en el contrato de soporte.
Alguien siempre podrá entender y trabajar su código. Demonios, si tienes 0 maneras de llegar al código, incluso con solo usar el sistema es suficiente para que alguien pueda replicar el proceso.
Ejemplo: Tomo una jarra de agua y la vierto en la taza, mientras mi espalda está mirando hacia otra persona. Esta otra persona sabe que el agua y la gravedad son asombrosas para hacer que las cosas caigan en otros recipientes, por lo que pueden elaborar un proceso de levantar una jarra para que la gravedad (llamada API) trabaje a su favor. Es posible que no sepan exactamente el ángulo que usaste en tu antebrazo y las técnicas de sujeción de vasos que utilizaste, pero pueden replicar el mismo proceso y mejorarlo con el tiempo.
tl; dr: No puedes proteger el código.
Ellos van a hacer ingeniería inversa de su código. Nada puede detenerlos ... Lo único que puedes hacer es hacerlo más difícil. Esto abarca desde el ofuscado código que es inherentemente "abierto", como PHP y Javascript, hasta la basura de su código con una carga de auto-modificación.
En muchos sentidos, creo que lo que hace que una pieza de software sea valiosa, no es el avance tecnológico alucinante que proporciona, sino las cosas que pensamos que podrían considerarse terciarias con respecto a la pieza de software en sí. Como el hecho de que estarás ahí para apoyarlo. O bien, se proporciona como un servicio web y estará allí para asegurarse de que el servidor se está ejecutando. O que es una comunidad, y estarás allí para moderar y construir la comunidad.
Si bien puede estar realmente vendiendo código, el valor que tiene su código no es intrínseco al código en sí, sino que se deriva de las características y el ecosistema que rodea su código.
Esto es inútil. Siempre hay alguien más listo que usted y, por lo tanto, podrán aplicar ingeniería inversa a su ofuscación.
Lo que hay que hacer es inventar cosas aún más maravillosas, mientras que la competencia está desarrollando ingeniería inversa de tus cosas actuales. Se llama competir a través de la innovación.
Muy pocas cosas en un programa son realmente novedosas. Casi todo lo que es probable que pongas en tu código, otra persona podría inventarlo por su cuenta. En general, es más fácil de lo que ellos podrían aprender leyendo tu código. Leer el código es más difícil que escribirlo, ya la mayoría de los programadores no les gusta hacerlo de todos modos.
Así que es mucho más probable que vean tu aplicación y piensen "Yo podría hacer eso", luego "Eso está bien, voy a leer ese código y luego a copiarlo". Incluso si lo entienden, usted seguirá siendo el propietario de los derechos de autor, de todos modos podrá llegar al mercado primero.
Te recomiendo que te olvides de eso.
Ni siquiera te molestes. Si su código realmente "hace cosas maravillosas", tenga la seguridad de que será pirateado. Y sea por curiosidad.
No hay una forma del 100% de proteger su código de la ingeniería inversa. ¿De qué idioma estamos hablando? Si esto es C / C ++, entonces es bastante difícil realizar ingeniería inversa, más podrías quitarlo de la información de depuración, etc. Pero si esto es por ejemplo Java, entonces incluso si ofuscas el código, hay algunas herramientas bastante interesantes (como JAD ) Eso revelará mucho de tu trabajo de todos modos.
A pesar de todo esto, creo que deberías intentar cambiar tu actitud. Las grandes compañías pagan mucho dinero por soluciones simples y parece que hoy en día el servicio es lo más importante, no el software (de ahí el éxito de las empresas basadas en software abierto). Entonces, si tiene un gran software, no se asuste de que alguien pueda robarlo, en lugar de pensar cómo venderlo bien.
Por lo general, alguien lo suficientemente inteligente como para hackear su código y usarlo de una manera significativa es lo suficientemente inteligente como para hacerlo solo, y probablemente piense que pueden hacerlo mejor que usted, para que no se molesten en robar sus cosas.
No se preocupe por las personas que pueden piratear su código pero no hacer un uso significativo de él. Si has hecho un buen trabajo, esto solo puede reforzar la calidad del trabajo que has hecho (piensa en todos los imitadores de teléfonos con pantalla táctil de mierda).
Una vez que realmente tenga el conocimiento y la experiencia para escribir dicha base de código, le quedará claro que la ofuscación está destinada a disuadir la infracción de IP.
Alguien que quiera saber su código va a conocer su código.
Si se convierte en un problema de pérdida monetaria, los tribunales son su protección.
Asi es como funciona.
yo no soy un abogado
Si está realmente preocupado por eso, hasta el punto en que esté dispuesto a invertir dinero en él, no proteja su código (más allá de algo razonable como ofuscación o cifrado), sino que patente su idea y su arte. Entonces, si alguien lo toma, lo invierte en ingeniería inversa y crea un mejor proceso basado en el suyo, tiene fundamentos legales para obtener su dinero.
Tendrá que hacer muchas cosas, incluyendo probar que tomaron su idea (que no es fácil), pero si esta es la solución al hambre mundial y todos los problemas de humanidades es lo que hay que hacer.
Ahora, por el lado negativo , lo adivinaré, y probablemente tenga un 90% de razón de que su método es:
- No es patentable, por varias razones (me sorprendió la cantidad de ideas ya patentadas y lo difícil que fue identificar el arte original)
- No es nuevo ni único (es decir, ya hay arte establecido para ello)
- No vale la pena patentar porque el gasto muy lejos los beneficios
Un abogado de propiedad intelectual puede informarle con seguridad, y el costo de una consulta no es mucho. En general, será más barato consultar con ellos que invertir mucho tiempo en ocultar el código.
Buena suerte.