VCS para manipular los árboles devueltos para evitar fugas? [cerrado]

2

Me pregunto si hay algún sistema que pueda cambiar los árboles de código fuente en sistemas de control de versiones sutiles de maneras difíciles de descubrir (es decir, espacios en blanco en los extremos de las líneas, tal vez incluso cambiar algunos nombres menos variables) a "marca de agua "el código para que sea posible averiguar quién lo sacó del repositorio. ¿Crees que un sistema así asustaría a los desarrolladores de cargar el código en línea?

Editar: Para abordar el argumento "eso es un asunto de confianza", me gustaría señalar que es una pregunta hipotética y pensé en esto como una manera de evitar que un desarrollador filtre el código fuente en una gran compañía, donde muchos los desarrolladores tienen acceso a todo el árbol.

    
pregunta d33tah 06.05.2013 - 21:46
fuente

2 respuestas

5

Antes de que esto se salga de control con las ediciones y los comentarios, quería decir esto.

Esto no es una situación hipotética. Casi todas las compañías de software enfrentan este problema, y todo se reduce a un problema de confianza. Este tema ha sido ampliamente discutido en otros sitios StackExchange , la mayoría de las respuestas se pueden resumir en:

  

1- Contrata a personas de confianza.

     

2- Haz y luego firma un NDA.

     

3- Déles acceso solo al código que necesitan

Solo ampliaré el último punto para abordar la situación sobre la que te estás preguntando. En el caso de Windows, estoy 99% seguro de que no todos los empleados de Microsoft tienen acceso al código fuente de Windows. Ni siquiera los empleados que trabajan en Windows tienen acceso a todo el código de Windows. Cada empleado debe tener acceso a las partes del código que es responsable de mantener.

Los desarrolladores en el Proyecto A no necesitan acceso al código del Proyecto B, y así sucesivamente.

    
respondido por el Adi 12.04.2017 - 09:31
fuente
5

Ignorando por un momento la sabiduría de manipular el código fuente, pregúntese cómo debería funcionar esta marca de agua. Necesitas tener archivos diferentes para cada desarrollador. Esto significa que una transformación de código automatizada que no cambia el significado del código, sin embargo, no es reversible. Ah, y no debería hacer que el código sea difícil de mantener. Al final del día, se supone que es un código valioso, ¿no?

¿Agregar espacios en blanco? Eso puede ser trivialmente normalizado. ¿Cambiar nombres de variables? ¿Quiere decir ofuscar el código fuente en su propio árbol fuente?

Y si la marca de agua falla alguna vez: "¡Oye, rompiste la compilación!" "En tu pago, tal vez. Funciona para mí ".

A continuación, piénsalo: necesitas tener diferentes archivos para cada desarrollador . ¿Colaborar en la caza de un error? "Seguí el problema en el depurador, x no está inicializado". "¿Qué x ? Solo tengo y y z en mi copia ".

Incluso si de alguna manera encuentras una forma de marcar con marca de agua el código fuente, esto solo puede ser útil si los desarrolladores no tienen otra forma de obtener el código fuente. Por lo tanto, hacer que el servidor de compilación produzca un archivo de origen es correcto. Eso no es un obstáculo, pero estás caminando en una línea delgada.

Ahora pensemos por un minuto en la sabiduría de este enfoque. Le está diciendo a los desarrolladores que confía en ellos para escribir código (y no para hacer un trabajo de mala calidad, o para plantar puertas traseras), pero no confía en que no filtren el código. Primero, esta posición parece bastante inconsistente, por lo que no va a ir bien con su desarrollador típico. Segundo, está haciendo su trabajo más difícil (ver más arriba) sin beneficios tangibles. Una vez más, eso no va a ser popular. El resultado final predecible es que sus desarrolladores echarán un vistazo a sus métodos de codificación, irán y aportarán sus ideas a la competencia, y lo dejarán con su código de mala calidad.

Incluso si por algún milagro pudieras implementar un sistema de marca de agua, ¿qué tan útil crees que podría ser? Si la versión de Alice del código fuente se filtra, ¿cómo sabe si Alice lo filtró? Si Eve quiere filtrar el código, asumiendo que no puede deshacerse de su marca de agua o cambiarla por la de Alice, puede ocultar sus huellas filtrando el código de Alice. Puede acceder a la máquina de Alice a escondidas, por lo que necesita cifrar todas las unidades, entrenar a sus desarrolladores contra los ataques de la criada maligna, tener políticas estrictas de no compartir macros de editor o parches no comprometidos ... Si bien algunas de estas son buenas medidas de alta seguridad, para bloquear todos los ataques También debes limitar seriamente la eficiencia del equipo.

Si tiene un cuerpo de código significativo, lo que puede hacer es limitar el acceso al código fuente, de modo que cada equipo solo vea los módulos en los que está trabajando. Para bases de código suficientemente grandes, esto es de hecho una buena higiene, ya que mantiene la independencia entre los componentes. Si restringir el acceso a partes del código fuente no le funciona, no tiene el código suficiente o no necesita la confidencialidad suficiente para siquiera considerar este esquema de marca de agua.

    
respondido por el Gilles 07.05.2013 - 03:02
fuente

Lea otras preguntas en las etiquetas