Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

Además de la fuente abierta de su proyecto y legislación, ¿hay formas de prevenir, o al menos minimizar, los daños causados ??por la fuga de código fuera de su empresa / grupo?

Obviamente no podemos bloquear el acceso a Internet (para evitar enviar el código por correo electrónico) porque los programadores necesitan sus referencias. Tampoco podemos bloquear dispositivos periféricos (USB, Firewire, etc.)

El código es más importante cuando tiene algunos algoritmos patentados y conocimiento desarrollado internamente (a diferencia del código de rutina regular para dibujar GUI, conectarse a bases de datos, etc.), pero algunas aplicaciones (como el software de contabilidad y CRM) son solo eso: colecciones complejas de código de rutina que son simples de desarrollar en principio, pero tomarán años para escribir desde cero. Aquí es donde el código filtrado será útil para los competidores.

Por lo que veo, la prevención de fugas se basa casi totalmente en el proceso humano. ¿Qué piensas? ¿Qué precauciones y medidas estás tomando? ¿Y la fuga de código te ha afectado antes?

¿Fue útil?

Solución

No puedes evitar que salga. Entonces, dos soluciones: detener a las personas que quieren lastimarte y tener precauciones legales. Para evitar que las personas que lo odian los traten correctamente (decir que más es probablemente fuera del tema para el desbordamiento de pila).

No soy abogado, pero para protegerte legalmente, si crees en ello, patenta las ideas, coloca un aviso de copyright en el código y asegúrate de que los contratos para tus programadores especifiquen cuidadosamente los derechos de propiedad intelectual.

Pero al final del día, la respuesta es más rápida que la competencia.

Otros consejos

A menos que esté trabajando con algo altamente clasificado y dado que no puede bloquear el correo electrónico y los dispositivos USB, supongo que no, realmente no habrá mucho daño, incluso si se filtra el código fuente. El problema es que el código, o partes de él, vale la pena sin el conocimiento de cómo funciona y la organización que lo rodea.

En general, el valor de " fuente " es mucho menos de lo que comúnmente se promociona, básicamente la fuente sin las personas o la organización no vale el almacenamiento que ocupa para un competidor.

Además, te estás perdiendo el vector de ataque más probable, y también es el que no puedes detener, pase lo que pase. Si alguien realmente quiere saber cómo hiciste tu magia, entonces tratarán de contratar a tus desarrolladores, y dado que no puedes evitar que tengan información dentro de su cráneo e incluso si entregan todas sus posesiones de conocimiento y dominio La experiencia se va con ellos. Básicamente la retención y la confianza de los empleados es la única manera. Lo siento.

No sé cuánta ayuda real será, pero:

  1. No molestes a tus programadores. No los coloque en una posición en la que quieran dar la fuente a un competidor. La mayoría de los lugares subestiman a sus desarrolladores. Dado dónde está (SO), supongo que es menos probable que lo haga. Nada me atrapó más que ver a la gente de ventas para juegos de golf, pagados y pagados por la compañía, mientras teníamos que luchar para conseguir pizza una vez al mes.

  2. Realmente, si sus competidores directos obtuvieran su código hoy , ¿qué haría? ¿Es su producto o mercado vertical lo más estancado que no lanzaría versiones nuevas y mejores antes de que pudieran reaccionar? ¿No hay espacio para la innovación? La mayoría de las empresas sobrevaloran sus "algoritmos patentados y su conocimiento desarrollado internamente". Claro, puede reducir el tiempo de inactividad, pero solo representa aproximadamente el 10% del problema.

  3. Si obtuviera todas las fuentes para todos los productos de sus competidores, ¿cuánto uso real sería? Supongo que te haría retroceder meses. No hacia adelante Atrás.

Si tuviera un sistema limpio y poco conocimiento externo / interno, ¿cuánto tiempo le llevaría obtener su propio producto en un estado de desarrollo? ¿Cuánto tiempo tomaría profundizar en el código y entrenar lo que está sucediendo? ¿Cuánto tiempo y dinero desperdiciarías tratando de resolver algo, en lugar de gastar tiempo y dinero en cómo hacer que tu el producto funciona mejor?

En realidad, he estado en la posición de tener toda la fuente - 1 millón de líneas + de código - para el producto de un competidor. No hicimos nada con eso, aparte de un poco de hurgar y luego eliminarlo, que era más de lo que me sentía cómodo, pero esperaría que hubiéramos masticado meses para llegar a donde estaban entonces.

Así que lo bombardeamos, le dimos una bofetada al id10t que lo obtuvo (sí, un desarrollador / PM que vino de la otra compañía), y pensamos en cómo hacer que nuestro golpee tanto que No importaba lo que hicieran. Mucho mejor uso del tiempo. Funcionó bien también. Teníamos diferenciadores, no solo volviendo a mezclar las mismas características de la misma forma en que lo hacían ellos.

Lo siento, pero hay no en la forma en que puedes evitar que la gente saque las cosas y aún así poder trabajar. Puede detenerlos queriendo para hacerlo, o hacerlo para que no tenga ningún valor tenerlo.

También nos preocupaba que la gente descompilara nuestro código. Dejamos de preocuparnos cuando nos dimos cuenta de que NOSOTROS teníamos suficientes problemas para resolver lo que estaba sucediendo dentro de 500 K + líneas de código C #, C ++ y HTML al hablar con MAPI / Exchange. Si alguien puede descompilarlo y resolverlo, entonces queremos contratarlo ......

Por cierto, para mayor claridad, y dado para quién trabajo ahora, debo señalar que no es mi empleador actual. Esto fue hace bastante tiempo.

El código no se filtra por sí mismo. Se necesita gente para tomarlo. Obviamente, existen algunas medidas de seguridad que puede usar como análisis de tráfico y bloqueo en los repositorios, de modo que solo los desarrolladores autorizados pueden conectarse a él.

Pero al final del día, su mejor opción es asegurarse de que nadie QUIERA robarle. Su equipo tiene que ser feliz, tiene que estar orgulloso de trabajar para usted, debe ser leal a la empresa y entre sí. Si tiene tal equipo, es una cuestión simple de explicar a todos que el código debe estar protegido de personas externas. No detendrá un lunar dedicado, pero evitará accidentes.

P.S. Y sí, las cláusulas correctas en los contratos no perjudicarán también, al menos se asegurarán de que los desarrolladores SEAN CONSCIENTES de que sacar el código de afuera es moralmente incorrecto.

Siga estas pautas y no debería importar si el contenido de todo su repositorio de código fuente se publica en todo el stackoverflow:

http://geocities.com/mdetting/unmaintainable.html

Ah, y demuestre a sus desarrolladores que no confía en ellos bloqueando el acceso a partes del código fuente, escaneando el correo electrónico saliente / entrante, etc. Esa es una forma segura de hacer que quieran quedarse ... . Nada mejora la moral como un poco de desconfianza en el lugar de trabajo.

Otra forma genial es decirle a la mitad que son " equipo a " y nombra a la otra mitad como el no confiable "equipo b". Luego inviértalo y dígale lo mismo al " equipo b " miembros Aliéntelos a vigilar a los "chicos malos". en el otro equipo e informarle cualquier indicio de ilegalidad. Espolvoree unos cuantos " inductores de conflicto " (por ejemplo, dígale a "Joe": ' ¿sabe lo que Ed dice de usted a sus espaldas? ') etc. Funciona de maravilla si configura a los desarrolladores uno contra el otro y crea algunos [inventados- by-you] entra en conflicto aquí y allá ...

(Eh, y no, en realidad no recomiendo ninguno de los anteriores. Es broma. Pero he visto a personas usar todas las tácticas anteriores. Y no funcionó).

Bien, voy a ser un poco práctico aquí.

  • Ser amable con todos y esperar que no te lastimen no funciona.

Todo programador sabe desde el día en que se une a una empresa que no se quedará allí para siempre. Él cambiará cuando haya aprendido lo suficiente como para tener una mejor oportunidad.

Los programadores que escriben el código creen que tienen la propiedad, incluso si lo escribieron en el momento en que se lo alquilaron a otra persona. Por lo general, muchos de ellos intentarán obtener el código fuente, aunque no tengan la intención de lastimar a nadie.

Una vez que dejan la compañía y llevan el código fuente con ellos y pierden el contacto con sus colegas, la conciencia se establece y se va de vacaciones y, después de un tiempo, comienzan a aparecer fragmentos del código en todas partes.

Eso es lo que SÉ que sucede porque he sido testigo de que le sucedió a mi empresa.

Entonces, ¿qué hace uno?

  • Firme un NDA que mencione específicamente que su programador NO tomará copias.
  • Distribuya su producto entre programadores y, si es posible, obtenga módulos codificados individualmente e integrados por un jefe cuya responsabilidad es que todos los programadores no obtengan todo el código.
  • Al momento de la terminación, obtenga un compromiso por escrito de los codificadores de que no poseen ninguna propiedad intelectual de la empresa y entienden las sanciones de violación.
  • Si alguien viola tu IP, ¡demanda al hombre! Sin excepciones. Funcionará como un ejemplo para el equipo actual.

¿Sueno extremo?

Recuerdo que esto le sucedió a Valve cuando estaban desarrollando HL-2. Enlace interesante aquí: http://www.shacknews.com/onearticle.x/28619

He trabajado en algún lugar donde existía una verdadera cultura de secreto sobre este tipo de cosas (históricamente, hubo varias ocasiones en que la empresa era pequeña donde "clientes", digamos, abusaron de su acceso a nuestro producto).

Mientras que en la parte superior la administración era muy protectora, lo veo ligeramente diferente. Creo que nuestro código, aunque no es del todo irrelevante, no es tan clave como cabría esperar en una compañía de software.

La razón por la que tenemos éxito es:

1) El código es esencialmente la solución a un montón de problemas. Si obtiene nuestro código, obtiene esas soluciones, pero aún tenemos personas inteligentes que resolvieron esos problemas. Ellos entienden esos problemas mejor que tú y son más capaces de resolver el siguiente conjunto de problemas mejor que tú.

2) Debido a que realmente entienden los problemas (y las soluciones), podemos hacer las cosas más rápido que nuestros competidores, lo que se traduce en más barato (o más rentable).

3) También debido a esas personas y la actitud dentro de la empresa, nos hemos entregado bien a nuestros clientes y hemos brindado un buen soporte.

4) Y por eso tenemos una buena reputación y clientes con capacidad de referencia.

Una pequeña cantidad de compañías tiene un código que realmente vale la pena mantener en secreto: algoritmos patentados y ese tipo de cosas, pero para la mayoría de nosotros, nuestros productos son fácilmente reproducibles por personas inteligentes.

Lo que digo es hacer lo básico: escribir en los contratos de las personas que no pueden tomarlo, mantenerlo seguro, etc., pero no obsesionarse con eso. A menos que esté en un mercado muy específico, es poco probable que lo que realmente va a hacer que su negocio tenga éxito o falle.

El mejor paso comienza con la revisión de hombres con un comportamiento ético fuerte. Se pueden tomar otros pasos como todas las comunicaciones que se escanean. Hay lugares donde se escanea el correo electrónico y toda la información que sale. La computadora de escritorio / portátil no tiene disco duro o el acceso está restringido y todo el trabajo se realiza en las carpetas de la red, incluso cuando se trabaja desde casa, uno tiene que conectarse a Internet. El trabajo fuera de línea se sincroniza. El USB y las unidades están desconectados.

Las otras políticas son proporcionar acceso solo en base a la necesidad. Esto solo disminuirá la velocidad y dificultará hasta cierto punto, pero si uno está muy determinado, entonces encontrará maneras de evitar esto. La otra forma es que si el código es realmente muy importante, haga que la idea esté protegida contra copia legalmente.

Para ser honesto, es casi imposible. Si quisiera sugerir qué haría una compañía que aparecería en breve en el Daily WTF:

  1. Desconecta la " computadora de trabajo " desde internet, bt porque necesitan acceso a internet como referencia, compre a todos un libro de wb.

  2. Rellene las ranuras USB de los desarrolladores con epoxy y requiera que carguen / descarguen todo desde un servidor centralizado, que analiza todos los datos que lo atraviesan en busca de códigos como la sintaxis.

O simplemente puede confiar en sus empleados y hacer que firmen un NDA ...

Yo personalmente nunca probé en ningún caso real, pero sugeriría usar la fragmentación de código:

básicamente divide su proyecto en varias bibliotecas, define interfaces y pruebas unitarias para cada una de ellas, luego separa los repositorios SVN para que cada grupo tenga acceso a una parte limitada de su precioso código fuente.

Esta es también una buena práctica, sin importar qué, y debería ayudar si está subcontratando en el extranjero.

Las respuestas anteriores parecen centrarse en generar confianza y emplear personas éticas.

Otra posibilidad podría ser crear su propio lenguaje y herramientas específicos de dominio. Eso hará que cualquier código filtrado sea más difícil de usar. Todavía podría ser posible robarle ideas útiles, pero no sería posible simplemente compilar un producto de la competencia a menos que se filtre toda la cadena de herramientas.

Confía en tus desarrolladores. Las personas tienden a estar a la altura de las expectativas. Trátalos bien, y recuerda que la lealtad va en ambos sentidos. Después de todo, si no puede cortar las unidades de memoria USB, no puede evitar que nadie filtre el código, no importa cuánto no confíe en ellas.

Dicho esto, busque un abogado con experiencia en secretos comerciales, probablemente con experiencia en otras partes de la ley de propiedad intelectual, y pregunte cómo proteger legalmente las cosas. Usted quiere asegurarse de que, si un competidor obtiene sus cosas, no es legal que el competidor se beneficie de ello.

La mayoría de las respuestas se basan en valores morales y éticos. Me pregunto si Google, Facebook, etc. simplemente confían en la buena voluntad de sus empleados. Dame un respiro, eso es totalmente utópico. No seas tonto Sé realista.

SÍ, es posible evitar la pérdida de código:

Utilizando un servidor virtual que aloja máquinas virtuales, los programadores solo pueden acceder localmente a estas máquinas virtuales (intranet) a través de Escritorio remoto. El repositorio se gestiona localmente. Se requieren claves privadas para acceder al repositorio. Copiar / pegar de la máquina virtual al cliente está deshabilitado. solo se permite copiar / pegar desde el cliente a lo virtual.

Las empresas como Facebook hacen eso.

La única forma de codificar todavía es tomando fotos con el código real, lo que no es práctico y factible en absoluto, y dado que hay cámaras de vigilancia en todas partes, tendrá que ir al baño para tomar esas fotos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top