Как защитить код от утечки наружу? [дубликат]

этот вопрос уже есть ответ здесь:

помимо открытых источников вашего проекта и законодательства, есть ли способы предотвратить или, по крайней мере, минимизировать ущерб от утечки кода за пределы вашей компании/группы?

мы очевидно, не может блокировать доступ в Интернет (чтобы предотвратить отправку кода по электронной почте), потому что программисту нужны их ссылки. Мы также не можем блокировать периферийные устройства (USB, Firewire и т. д.)

код имеет наибольшее значение, когда он имеет некоторые собственные алгоритмы и внутренние разработанные знания (в отличие от обычного рутинного кода для рисования GUIs, подключения к базам данных и т. д.), но некоторые приложения (например, бухгалтерское программное обеспечение и CRMs) - это просто: сложные коллекции рутинного кода, которые просты развивать в принципе, но потребуются годы, чтобы писать с нуля. Именно здесь просочившийся код пригодится конкурентам.

насколько я вижу, предотвращение утечки зависит почти полностью от человеческого процесса. А ты как думаешь? Какие меры предосторожности вы принимаете? И утечка кода повлияла на вас раньше?

14 ответов


вы не можете остановить это выходит. Итак, два решения-остановить людей, желающих навредить вам, и принять юридические меры предосторожности. Чтобы остановить ненависть людей, вы относитесь к ним правильно (говоря больше, вероятно, не по теме для переполнения стека).

Я не юрист, но чтобы обеспечить себе юридическую защиту, если вы верите в это, запатентовать идеи, поместить уведомление об авторских правах в коде и убедитесь, что в контрактах для ваших программистов тщательно указаны права интеллектуальной собственности.

но в конце на сегодняшний день ответ работает быстрее, чем конкуренция.


Если вы не работаете с чем-то строго засекреченным и учитывая, что вы не можете блокировать электронную почту и USB-устройства, я думаю, что вы на самом деле не так много вреда, даже если утечка исходного кода. Дело в том, что код или его части стоят без знания того, как он работает, и организации вокруг него.

в целом значение "источника" намного меньше, чем обычно рекламируется, в основном источник без людей или организации не стоит хранение оно занимает для конкурента.

кроме того, вам не хватает наиболее вероятного вектора атаки, и это также тот, который вы не можете остановить, несмотря ни на что. Если кто-то действительно хочет знать, как вы сделали свою магию, они попытаются нанять ваших разработчиков, и, поскольку вы не можете помешать им иметь информацию внутри своего черепа, и даже если они сдадут все свои владения, их знания и опыт домена уходят с ними. В основном удержание сотрудников и доверие-это единственное путь. Извиняюсь.


Я не знаю, насколько реально это будет, но:

  1. Не p*ss ваши программисты прочь. Не ставьте их в такое положение, когда они хочу чтобы дать источник конкуренту. Большинство мест недооценивают своих разработчиков. Учитывая, где вы находитесь (так), я думаю, вы с меньшей вероятностью. Ничто не доставляло мне большего удовольствия, чем видеть продавцов, играющих в гольф - оплачиваемых и оплачиваемых компанией - в то время как нам приходилось бороться, чтобы получить пиццу один раз в год. месяц.

  2. действительно, если ваши прямые конкуренты есть код сегодня что бы это сделать? Является ли ваш продукт или вертикальный рынок настолько застойным, что вы не выпустили бы новые, лучшие версии, прежде чем они могли бы реагировать? Нет ли места для инноваций? Большинство компаний переоценивают свои "собственные алгоритмы и собственные знания". Конечно, это может сократить время, но это только 10% Проблемы.

  3. Если вы получили все источник для всех ваших продуктов конкурентов, насколько фактическое использование было бы? Думаю, это отбросит тебя на несколько месяцев назад. Не пересылать. Спина.

если бы у вас была чистая система и мало внешних/внутренних знаний, сколько времени вам потребовалось бы, чтобы привести свой собственный продукт в работоспособное состояние? Сколько времени потребуется для детализации кода и тренировки того, что происходит? сколько времени и денег вы потратили бы, пытаясь что-то придумать, а не тратить время и деньги на то, как сделать код продукт лучше работает?

Я на самом деле был в состоянии иметь все исходные - 1million строк+ кода - к продукту конкурента. Мы ничего не сделали с ним-кроме небольшого обыска, а затем удалили его, что было больше, чем мне было удобно, но я ожидал, что мы бы пережевали месяцы времени, чтобы добраться до того, где они были тогда.

поэтому мы взорвали его, ударили id10t, который получил его (да, разработчик/ПМ, который пришел из другой компании), и думал о том, как сделать наши продукт удар так много прикладом, что не имело значения, что они сделали. Гораздо лучше использовать время. И работал хорошо. У нас были дифференциаторы, а не просто повторное хэширование одних и тех же функций так же, как они их делали.

Извините, но есть нет как вы можете помешать людям получать вещи, и все еще быть в состоянии работать. Вы можете остановить их хотеть сделать это, или сделайте так, чтобы они не имели никакой ценности.

мы беспокоились о том, что люди декомпилируют наш код тоже. Мы перестали волноваться, когда поняли, что у нас достаточно проблем с тем, что происходит внутри 500K+ строк кода C#, C++ и HTML, разговаривающих с MAPI/Exchange. Если кто-то может декомпилировать его и разобраться, тогда мы хотим нанять их......

кстати, для ясности, и учитывая, на кого я сейчас работаю, я должен указать, что это не мой нынешний работодатель. Этот это было довольно давно.


код не просачивается сам по себе. Для этого нужны люди. Очевидно, есть некоторые меры безопасности, которые вы можете использовать, такие как анализ трафика и блокировка репозиториев, поэтому только авторизованные разработчики могут подключиться к нему.

но к концу дня ваш лучший вариант - убедиться, что никто не хочет украсть у вас. Ваша команда должна быть счастлива, они должны гордиться тем, что работают на вас, они должны быть верны компании и друг другу. Если у вас такая команда это простой вопрос, объясняя всем, что код должен быть защищен от посторонних. Это не остановит выделенного крота, но предотвратит несчастные случаи.

P.S. И да, правильные положения в контрактах также не повредят, по крайней мере, они убедятся, что разработчики знают, что принимать код снаружи морально неправильно.


следуйте этим рекомендациям, и не имеет значения, будет ли содержимое всего репозитория исходного кода размещено по всему stackoverflow:

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

О, и покажите своим разработчикам, что вы не доверяете им, блокируя доступ к частям исходного кода, сканируя исходящую / входящую электронную почту и т. д. Это верный способ заставить их захотеть остаться... ...ничто так не поднимает боевой дух, как недоверие. на рабочем месте.

еще один классный способ-сказать одной половине, что они "команда а", а другую половину назвать ненадежной "командой Б". Затем переверните его и скажите то же самое членам" команды b". Поощряйте их следить за" плохими парнями " в другой команде и сообщать о любых признаках нелояльности вам. Посыпьте несколько " индукторов конфликтов "(например, скажите" Джо":'ты знаешь, что Эд говорит о тебе за твоей спиной?') и т. д. Творит чудеса, если вы настроили разработчиков друг против друга и создают несколько [придуманных вами] конфликтов здесь и там...

(Эх, и нет, я на самом деле не рекомендую ничего из вышеперечисленного. Шучу. Но я видел, как люди использовали все вышеперечисленные тактики. И это не сработало.)


хорошо, я собираюсь быть немного практичным здесь.

  • быть милым со всеми и надеяться, что они не навредят вам, не работает.

каждый программист знает, что с того дня он присоединяется к компании, что он не останется там навсегда. Он изменится, когда узнает достаточно, чтобы получить лучшую возможность.

программисты, которые пишут код, считают, что у них есть право собственности на него, даже если они написали его в то время, когда они сдавали кому-то еще. Многие из них, как правило, пытаются заполучить исходный код, даже если они не собираются никому навредить.

Как только они покидают компанию, и они несут исходный код с собой и потеряли контакт со своими коллегами, совесть успокаивается и отправляется в отпуск, и через некоторое время кусочки кода начинают появляться повсюду.

Это то, что я знаю, происходит, потому что я видел, как это происходит с моей компанией.

Итак, что же один сделать?

  • подписать NDA, который конкретно упоминает, что они программист не будет принимать копии.
  • распределите свой продукт между программистами и, если возможно, получите модули, закодированные индивидуально и интегрированные начальником, чья ответственность заключается в том, что все программисты не получают весь код.
  • в момент прекращения получите письменное обязательство от кодеров, что они не обладают каким-либо IP-адресом компании, и они понимают штрафы нарушение.
  • Если кто-то нарушает ваш IP, подать в суд на человека! Ни одно исключение. Это послужит примером для нынешней команды.

Я говорю в крайности?


Я помню, что это произошло с Valve, когда они разрабатывали HL-2. Интересная ссылка здесь:http://www.shacknews.com/onearticle.x/28619


Я работал где-то, где была настоящая культура секретности в отношении такого рода вещей (исторически было несколько раз, когда компания была маленькой, где "клиенты", скажем, злоупотребляли своим доступом к нашему продукту).

в то время как наверху руководство было очень защитным, я вижу это немного по-другому. Я думаю, что наш код, хотя и не совсем неуместен, не так важен, как можно было бы ожидать от программной компании.

причина, по которой мы успешными являются:

1) код по существу является решением множества проблем. Если вы получите наш код, вы получите эти решения, но у нас все еще есть умные люди, которые решили эти проблемы. Они понимают эти проблемы лучше, чем вы, и лучше, чем вы, способны решить следующий набор проблем.

2) потому что они действительно понимают проблемы (и решения), мы можем делать вещи быстрее, чем наши конкуренты, что означает дешевле (или больше выгодный.)

3) также из-за тех людей и ориентации внутри компания мы поставляли хорошо к нашим клиентам и обеспечивали хорошую поддержку.

4) и из-за этого мы имеем хорошую репутацию и справк-способных клиентов.

небольшое количество компаний имеют код, который действительно стоит держать в секрете-проприетарные алгоритмы и тому подобное - но для подавляющего большинства из нас наши продукты очень легко воспроизводимы smart люди.


лучший шаг начинается от reruting ребята с сильным этического поведения. Различные другие шаги могут быть приняты, как и все коммуникации сканируются. Есть места, где электронная почта и вся информация, выходящая сканируется. Рабочий стол / ноутбук не имеет жесткого диска или доступ ограничен, и вся работа находится в сетевых папках, даже при работе из дома, нужно подключиться к интернету. Автономная работа синхронизируется. USB и диски отключены.

другой политика должна обеспечивать доступ только в случае необходимости. Они будут только замедляться и мешать в некоторой степени, но один очень решительно, то он найдет способы обойти это. Другой способ-если код действительно очень важен, то имейте идею copywrite protected legaly.


честно говоря, это почти невозможно. Если бы я хотел предложить, что сделает компания, которая вскоре появится на ежедневном WTF:

  1. отключите "рабочий компьютер" от интернета, bt, потому что им нужен доступ в интернет для справки купить всем wbbook.

  2. наполните слоты USB разработчиков эпоксидной смолой и требуйте, чтобы они загружали / выгружали все с централизованного сервера, который сканирует все данные, которые проходят через него для кода как синтаксис.

или вы можете просто доверять своим сотрудникам и заставить их подписать NDA...


Я лично никогда не тестировал ни на одном реальном случае, но я бы предложил использовать фрагментацию кода:

в основном вы разделяете свой проект на несколько библиотек, определяете интерфейсы и модульные тесты для каждого из них, затем вы отделяете репозитории SVN, чтобы каждая группа имела доступ к ограниченной части вашего драгоценного исходного кода.

Это также хорошая практика, неважно, что и должно помочь, если вы аутсорсинг за рубежом.


предыдущие ответы, похоже, сосредоточены на создании доверия и использовании этических людей.

другой возможностью может быть создание собственного языка и инструментов для конкретного домена. Это затруднит использование любого просочившегося кода. Возможно, все еще можно украсть полезные идеи из него,но невозможно просто скомпилировать конкурирующий продукт, если вся цепочка инструментов не просочится.


доверять своим разработчикам. Люди склонны оправдывать или оправдывать ожидания. Обращайся с ними хорошо и помни, что верность идет в обоих направлениях. В конце концов, если вы не можете отключить флешки, вы не можете остановить утечку кода, независимо от того, насколько вы им не доверяете.

Это, как говорится, найти себе адвоката с коммерческой тайной знания, возможно опыт в других частях права ИС, и спросить, как юридически защитить вещи. Вы действительно хотите убедиться, что, если конкурент получает ваши вещи, это не законно для конкурента, чтобы извлечь из этого пользу.


большинство ответов основаны на моральных и этических ценностей. Интересно, Google, Facebook и т. д. просто положитесь на добрую волю своих сотрудников. Дайте мне передохнуть, это совершенно утопично. Не будь дураком. Быть реалистами.

да, можно предотвратить утечку кода:

используя виртуальный сервер, на котором размещены виртуальные машины, программисты могут получить доступ к этим виртуальным машинам (интрасеть) только локально через удаленный рабочий стол. Репозиторий управляется локально. закрытые ключи необходимы для доступ к хранилищу. копирование / вставка с виртуальной машины на клиент отключена. разрешено только копировать / вставлять из клиента в виртуальный.

такие компании, как facebook, делают это.

единственный способ по-прежнему код, принимая фотографии к фактическому коду, который совершенно не практично и выполнимо на всех, и так как есть камеры наблюдения везде, вам придется пойти в ванную комнату, чтобы сделать эти фотографии.