Как защитить код от утечки снаружи?

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

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

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

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

Ответы

Ответ 1

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

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

Но в конце дня ответ выполняется быстрее, чем соревнование.

Ответ 2

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

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

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

Ответ 3

Я не знаю, сколько реальной помощи это будет, но:

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

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

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

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

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

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

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

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

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

Ответ 4

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

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

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

Ответ 5

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

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

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

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

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

Ответ 6

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

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

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

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

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

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

Итак, что он делает?

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

Я звучу экстрим?

Ответ 7

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

Ответ 8

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

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

Мы добились успеха:

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

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

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

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

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

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

Ответ 9

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

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

Ответ 10

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

  • Отключите "рабочий компьютер" от интернета, потому что им нужен доступ в Интернет для справки. Купите всех в wbbook.

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

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

Ответ 11

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

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

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

Ответ 12

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

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

Ответ 13

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

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

Ответ 14

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

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

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

Компании, подобные facebook, делают это.

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