La informática forense es la ciencia que analiza el código fuente o el código binario del software para determinar si se ha producido una infracción o un robo de propiedad intelectual. Es el eje central de demandas, juicios y acuerdos cuando las empresas tienen disputas sobre cuestiones relacionadas con patentes de software , derechos de autor y secretos comerciales . Las herramientas de informática forense pueden comparar el código para determinar la correlación, una medida que se puede utilizar para orientar a un experto en informática forense.
Los métodos anteriores de comparación de código incluían el hash , el análisis estadístico , la comparación de texto y la tokenización . Estos métodos comparaban el código de software y producían una única medida que indicaba si se había producido una copia. Sin embargo, estas medidas no eran lo suficientemente precisas como para ser admisibles en los tribunales porque los resultados no eran precisos, los algoritmos podían ser fácilmente engañados con simples sustituciones en el código y los métodos no tenían en cuenta el hecho de que el código podía ser similar por razones distintas a la copia.
Después de utilizar herramientas de software para comparar el código y determinar el grado de correlación, un experto puede utilizar un proceso de filtrado iterativo para determinar si el código correlacionado se debe a un código de terceros, herramientas de generación de código, nombres de uso común, algoritmos comunes, programadores comunes o una copia. Si la correlación se debe a una copia y el autor de la copia no tenía la autorización del titular de los derechos, se produjo una infracción de los derechos de autor .
El software puede contener secretos comerciales, que proporcionan una ventaja competitiva a una empresa. Para determinar el robo de secretos comerciales, se pueden utilizar las mismas herramientas y procesos que se utilizan para detectar la infracción de los derechos de autor. Si el código se copió sin autorización y tiene las características de un secreto comercial (no es de conocimiento público, la empresa lo mantiene en secreto y su secreto conserva su valor para la empresa), entonces el código copiado constituye un robo de secreto comercial.
El robo de secretos comerciales también puede implicar la apropiación de funcionalidades de código sin copiarlo literalmente. Comparar la funcionalidad de código es un problema muy difícil que aún no se ha solucionado con ningún algoritmo en un tiempo razonable. Por este motivo, detectar el robo de funcionalidad de código sigue siendo en su mayor parte un proceso manual.
Al igual que con la funcionalidad de los secretos comerciales, actualmente no es posible detectar científicamente la infracción de patentes de software, ya que las patentes de software cubren la implementación general en lugar de un código fuente específico. Por ejemplo, un programa que implementa una invención patentada puede escribirse en muchos lenguajes de programación disponibles, utilizando diferentes nombres de funciones y nombres de variables y realizando operaciones en diferentes secuencias. Hay tantas combinaciones de formas de implementar inventos en software que incluso las computadoras modernas más poderosas no pueden considerar todas las combinaciones de código que podrían infringir una patente. Este trabajo aún se deja en manos de expertos humanos que utilizan su conocimiento y experiencia, pero es un problema que muchos en la investigación forense de software están tratando de automatizar mediante la búsqueda de un algoritmo o la simplificación del proceso.
Una regla importante de cualquier análisis forense es que primero se deben considerar los hechos objetivos. Revisar los comentarios en el código o buscar en Internet información sobre las empresas que distribuyen el código y los programadores que lo escribieron es útil solo después de haber considerado los hechos objetivos relacionados con la correlación. Una vez que se ha realizado un análisis utilizando herramientas y procedimientos forenses, los analistas pueden comenzar a analizar evidencias subjetivas, como los comentarios en el código. Si la información contenida en esas evidencias subjetivas entra en conflicto con el análisis objetivo, los analistas deben dudar de las evidencias subjetivas. Los avisos de derechos de autor falsos, las notificaciones de código abierto o los nombres de programadores que se agregaron al código fuente después de que se realizó la copia, para disfrazar la copia, no son poco comunes en los casos reales de robo de código.