Análisis forense de software


El análisis forense de software es la ciencia que analiza el código fuente o el código binario del software para determinar si se produjo una infracción o un robo de la propiedad intelectual . Es la pieza central de demandas, juicios y acuerdos cuando las empresas están en disputa sobre cuestiones relacionadas con patentes de software , derechos de autor y secretos comerciales . Las herramientas de análisis forense de software pueden comparar el código para determinar la correlación, una medida que se puede utilizar para guiar a un experto en análisis forense de software.

Los métodos anteriores de comparación de código incluían hashing , análisis estadístico , coincidencia de texto y tokenización . Estos métodos compararon el código del software y produjeron una sola medida que indicaba si se había producido una copia. Sin embargo, estas medidas no fueron lo suficientemente precisas para ser admisibles en los tribunales porque los resultados no eran precisos, los algoritmos podían engañarse fácilmente mediante simples sustituciones en el código y los métodos no tenían en cuenta el hecho de que el código podría ser similar por razones aparte de copiar.

Después del uso de herramientas de software para comparar el código y determinar la cantidad de correlación, un experto puede usar un proceso de filtrado iterativo para determinar que el código correlacionado se debe a código de terceros, herramientas de generación de código, nombres de uso común, algoritmos comunes, programadores, o copiar. Si la correlación se debe a la copia y el copiador 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, lo que proporciona una ventaja competitiva a una empresa. Para determinar el robo de secretos comerciales, se pueden usar las mismas herramientas y procesos para detectar la infracción de derechos de autor. Si el código se copió sin autorización y ese código tiene las características de un secreto comercial (generalmente no se conoce, la empresa lo mantiene en secreto y su secreto mantiene 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 toma de la funcionalidad del código sin copiar literalmente el código. Comparar la funcionalidad del código es un problema muy difícil que aún debe ser resuelto por cualquier algoritmo en un tiempo razonable. Por esta razón, encontrar la funcionalidad de robo de código sigue siendo principalmente un proceso manual.

Al igual que con la funcionalidad de secreto comercial, 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 del código fuente específico. Por ejemplo, un programa que implementa una invención patentada se puede escribir en muchos lenguajes de programación disponibles, usando diferentes nombres de funciones y nombres de variables y realizando operaciones en diferentes secuencias. Hay tantas combinaciones de formas de implementar invenciones 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 a los expertos humanos que usan su conocimiento y experiencia, pero es un problema que muchos en el análisis forense de software están tratando de automatizar al encontrar un algoritmo o simplificar el proceso.