Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разные вопросы > Код


Автор: миг 27.10.2016, 18:45
Я работаю в корпорации. Пишу приложения для инженеров в основном на С++. Теоретически весь код, который мной пишется принадлежит корпорации. Доступ к моим исходникам имеет любой желающий. Т.е. любой может скопировать в ознакомительных целях немного изменить код и выдать за свой. Некоторые ушлые инженеры хотят использовать в тайне от корпорации и от меня код в своих коммерческих целях. Вопрос можно ли зашыть некий не прозрачный код в программу, чтобы можно было доказать авторство? А если кто-то попытаемся убрать непрозрачный код, то ему нужно будет основательно переписать программу . Или это утопия.

Автор: Alexeis 27.10.2016, 21:08
Водяные знаки. Записывают всякими пробелами и другими не важными символами. Модифицируются все исходники. Руками править затрахаешься. Но если знаешь алгоритм водянок, то можно написать скрипт, который удалит их все. Не знаю можно ли это использовать как доказательство в суде, но прочитать код можно даже после значительной модицикации исходников.

Автор: _zorn_ 28.10.2016, 21:47
Цитата(Alexeis @  28.10.2016,  04:08 Найти цитируемый пост)
Руками править затрахаешься

sed
Цитата(Alexeis @  28.10.2016,  04:08 Найти цитируемый пост)
Но если знаешь алгоритм водянок, то можно написать скрипт, который удалит их все

sed
 smile 
Такие проблемы нужно решать не на уровне кода, ибо это бессмысленно.

Автор: миг 28.10.2016, 22:45
Alexeis, у меня была идея. сделать самомодифицирующийся код. ну, например вы же можете умышленно допустить логическую ошибку в коде одной или нескольких вызываемых функций. ну, логические ошибки можно смоделировать самые разные: не правильный оператор, выход за пределы массива и т.д. в исполняемой программе можно достать  указатель на функцию в которой логическая ошибка и исправить эту ошибку "налету".  тогда как минимум тупое копирование части кода не даст результатов. а в функции, которая будет править другие функции можно также зашить информацию о разработчиках программы. если эта функция выкидывается из кода, то значит вся программа начинает работать неправильно.
P.S. просто думал может у кого другие идеи есть.

Автор: _zorn_ 29.10.2016, 16:43
Цитата(миг @  29.10.2016,  05:45 Найти цитируемый пост)
 ну, например вы же можете умышленно допустить логическую ошибку в коде одной или нескольких вызываемых функций

И потом про нее не забыть.
И ВСЕМ кто будет поддерживать твой код НАПОМИНАТЬ.

Цитата(миг @  29.10.2016,  05:45 Найти цитируемый пост)
тогда как минимум тупое копирование части кода не даст результатов

А копирование всей программы даст  smile 

Не усложняй жизнь СЕБЕ в главную очередь. Если будет дешевле "хакнуть" твой код (дожили, раньше бинарники "хакали"   smile ) чем написать с нуля, так и сделают. Чтобы ты не придумал.

И задай себе (и корпорации своей) вопрос зачем это все нужно ?
Если захотят, переколбасят твой код что мама родная не узнает. А если просто позаимствуют - пусть нанимают спецов и проверяют "интересующие программы подозрительно похожие на..."
Тупо строчку вкоряч какую нибудь чтобы вкомпиливалась (собственно водяные знаки).

Автор: миг 1.11.2016, 09:09

Цитата(_zorn_ @  29.10.2016,  16:43 Найти цитируемый пост)
А копирование всей программы даст

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


Цитата(_zorn_ @  29.10.2016,  16:43 Найти цитируемый пост)
Не усложняй жизнь СЕБЕ в главную очередь. Если будет дешевле "хакнуть" твой код (дожили, раньше бинарники "хакали"    ) чем написать с нуля, так и сделают. Чтобы ты не придумал.

Обычную программу хакнуть смогут не так много человек, а программу , которая меняет свой код "на лету" хакнуть еще сложнее.
Цитата(_zorn_ @  29.10.2016,  16:43 Найти цитируемый пост)
И задай себе (и корпорации своей) вопрос зачем это все нужно ?

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

Автор: SVN74 1.11.2016, 10:51
А обязательное требование в вашей корпорации (для Вас) держать исходники открытыми? Если нет, то может написать свою программку-"банк" и закинуть туда все свои труды, "запаролить", затем закинуть куда нибудь в "облоко"  и опять "запаролить"... (выдавать по предъявлению финансов)  smile 

Автор: миг 1.11.2016, 14:25
SVN74, все исходники должны хранится на моем компе, но их нужно выдать начальнику при первом его требовании. выносить их из корпорации или хранить в облаке нельзя. На наших компьютерах также нет доступа в интернет.плюс в том, что начальник незнает ассемблер. Поэтому можно написать несовсем для него очевидный код на С++ возможно со вставками ассемблера. Ну, и реально интересно, что получиться.

Автор: CompWorm 15.12.2016, 03:58
добавь в мелкие классы строковые переменные со своим именем - они будут видны в дампе памяти скомпилированной проги через любую стандартную смотрелку (https://technet.microsoft.com/en-us/sysinternals/bb896653). имя пиши криво, чтоб жулики автоматом не отпарсили (к примеру застрингованым байт-эреем с цифрами вместо букв).

Автор: vpf 15.12.2016, 08:09
По теме, вопросы защиты авторских прав на уровне исходников это тема службы безопасности корпорации, 
а не программистов, о чем уже сказали в этой теме.

Автор: CompWorm 15.12.2016, 20:21
vpf, ну вот пришёл штатный сотрудник с доступом к коду с флешкой, скопировал репу и пошёл домой. как служба безопасности должна это регулировать? объясни...

Автор: vpf 15.12.2016, 21:37
Штатный сотрудник не должен копировать код из репозитория, расположенного на защищенном сервере на флешку.
А если он это сделал, значит это отражено в логах. Самое время задать ему вопрос с какого бодуна он стал его копировать.
Наконец есть такое понятие как сигнатура. Если код всплывает где нибудь по сигнатуре, а программист при найме подписывал заявление об авторских правах и неразглашении, ему реально светит срок. А если дела серьезные то до срока дело не дойдет, паяльник в заднице окажется намного раньше.
В целом я вообще не вижу проблемы. Зачем добавлять некие водяные знаки если код и так содержит уникальную сигнатуру...
Мы же говорим не об исходнике на две странички формата А4, а на пару гиг текстов. Такое переписать заново лучше уж свое написать. Что кстати и сделал автор Одноклассников. Он проработал в английской компании по соцсетям.
Потому уволился, приехал в Россию и написал Одноклассники заново. Судились они с ним судились так ничего доказать не смогли. Да идеи их, но софт его, совпадений нет. 
Вот так и программер "с доступом" может просто написать свой код заново и использовать его на стороне. И никаких там водяных знаков. Но служба безопасности на то и служба чтобы знать чем именно занимается конкретный человек. 
Если исходники важны, они запросто могут смотреть его рабочий стол без ведома сотрудника. И анализировать его действия.
Короче, есть 1000 способов поймать программиста за задницу и служба безопасности больше их забыла чем программист придумает за всю свою карьеру.
Так что повторюсь, программист должен писать программы, а корпорация думать о защите своих интересов.

Автор: irinazanuda 15.12.2016, 22:55
Цитата(Alexeis @  27.10.2016,  21:08 Найти цитируемый пост)
Водяные знаки

Ещё раньше молоком писали на листочках

Автор: CompWorm 16.12.2016, 01:17
vpf, 
давай на пальцах, для тупых вроде меня:

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

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

Автор: vpf 16.12.2016, 08:30
По поводу "огромной корпорации где кто то чего то скопировал". Любая гигантская корпорация состоит из 99% каких то сотрудников и 1% ключевых сотрудников по даннному направлению. Считаем.
Доступ к репозиториям имеют только программисты. Отсекаем остальные 35 подразделений. 
Доступ к чувствительным для компании исходникам имеет очень ограниченный круг лиц, не более 5 человек. 
И на компах этих программистов естественно стоит софт, который отслеживает что и куда было отослано.
Следить за 5ю программистами может 5 сотрудников безопасности круглосуточно, с подготовкой сисадминов каждый.
В том числе и за их мониторами, сетевыми запросами и прочее. А еще есть корпоративные телефоны с возможностью прослушки, 
корпоративные ноутбуки с теми же функциями, сексапильные негласные сотрудницы модельной внешности, готовые забухать с программистом в первом попвшемся кабаке и не глядя махнуть с ним на острова Южной Америки на деньги утащенные у корпорации, "под запись" естественно.
Так что тему безопасности оставим безоспасности. Программисту ничего не светит если дело поставлено серьезно. От слова совсем.

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

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

Автор: CompWorm 17.12.2016, 00:33
Цитата(vpf @  16.12.2016,  08:30 Найти цитируемый пост)
По поводу "огромной корпорации где кто то чего то скопировал".

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

по поводу подписи - https://duckduckgo.com/?q=&t=ffsb, но инфы про такие программы не нашё ни в нём ни в других поисковиках. наверно они проприетарные и за деньги предоставляются в комплекте прочих услуг безопасности. опять же за баснословные бабки. 

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

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

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

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

Автор: миг 1.1.2017, 21:02
SVN74,  всё равно рано или поздно потребуют открыть все исходники. Ну, например при увольнении обязательно потребуют передать все исходники. или начальник в любой момент может подойти попросить исходник, а потом смотришь этот начальник уже с твоим исходником на конференции выступает или статью научную пишет.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)