Реверс-инжиниринг ПО и российское право
Этот материал представляет собой взгляд на реверс-инжиниринг программного обеспечения с позиций российского права. Помимо анализа норм закона, приведены примеры как договорной практики, так и судебной.
Рассмотрение с позиций российского права такого вида деятельности, как реверс-инжиниринг программного обеспечения, предлагаю начать с представления следующей абстрактной ситуации:
Есть компьютерная программа. Есть компания, которая приобрела лицензию на такое ПО и использует его в своей деятельности. По неизвестной причине на серверах компании программа работает нестабильно. Руководство компании планирует поручить группе сторонних специалистов провести реверс-инжиниринг этой программы для определения причин нестабильности ее работы на серверах компании в целях их устранения.
Такая ситуация – лишь один из примеров, когда встает вопрос о проведении реверс-инжиниринга нужного софта. Причины для этого могут быть самыми разными. Еще пара абстрактных примеров:
- требуется доработать программу, автор которой не известен и нет никакой возможности его установить и связаться с ним для общения насчет кода программы;
- чтобы не отстать от конкурирующей компании, опубликовавшего новый релиз своего ПО, надо как можно быстрее изучить, что за код содержится в последней версии ПО такой компании с целью сделать свой продукт еще лучше, чем у нее.
Словом, таких причин наберется немало. И если приступать к этому делу вплотную, то возникает не только техническая сторона вопроса, но и юридическая. А именно, можно ли с точки зрения закона заниматься такой деятельностью в принципе? Предусмотрена ли какая-нибудь ответственность для лица, которое выполнило обратную разработку программы? А предусмотрена ли она для того, кто заказал такое выполнение? Как понимаете, таких вопросов наберется немало, поэтому предлагаю перейти к самой сути дела.
Если среди читателей этого материала есть те, кому не достаточно хорошо знаком сам термин реверс-инжиниринг, то полагаю, будет уместным сразу определить, что под этим понимается. Под реверс-инжинирингом программного обеспечения понимается следующее:
- Обратная разработка (обратный инжиниринг, реверс-инжиниринг; англ. reverse engineering) — исследование некоторого устройства или программы, а также документации на них с целью понять принцип его работы и, чаще всего, воспроизвести устройство, программу или иной объект с аналогичными функциями, но без копирования как такового.[1]
- Обратная инженерия (процесс систематического разбора программы (восстановления её исходного текста и структуры) или микросхемы для изучения алгоритмов её работы с целью имитации или повторения некоторых или всех её функций в другой форме или на более высоком уровне абстракции, снятия защиты, изучения алгоритмов, добавления новых возможностей, восстановления протоколов или исправления ошибок и др. [2]
- Реверс-инжиниринг (Reverse Engineering) или, как его еще называют, обратная разработка, а иногда — обратное проектирование — это процесс анализа приложения для определения его функциональных характеристик, внутренней архитектуры и, собственно, его работы: модулей, функций, алгоритмов. [3]
Обобщая, можно утверждать, что реверс-инжиниринг (или обратная разработка) программного обеспечения представляет собой процесс исследования содержимого программы путем ее преобразования в исходный код для определения ее структуры и принципов ее работы.
Если вопрос о самом термине можно считать решенным, предлагаю обратить свое внимание к юридической стороне реверс-инжиниринга. Содержание этой стороны изложено в настоящем материале в следующей последовательности: положения законодательства, договорная практика, судебная практика.
Положения законодательства
Начнем, прежде всего, с законодательных норм. Возможно, это кого-то и удивит, но такое явление, как реверс-инжиниринг, вполне знакомо российскому законодательству. О нем идет речь в статье 1280 Гражданского кодекса РФ:
"Гражданский кодекс Российской Федерации (часть четвертая)" от 18.12.2006 N 230-ФЗ
Статья 1280. Право пользователя программы для ЭВМ и базы данных
<…>
3. Лицо, правомерно владеющее экземпляром программы для ЭВМ, вправе без согласия правообладателя и без выплаты дополнительного вознаграждения воспроизвести и преобразовать объектный код в исходный текст (декомпилировать программу для ЭВМ) или поручить иным лицам осуществить эти действия, если они необходимы для достижения способности к взаимодействию независимо разработанной этим лицом программы для ЭВМ с другими программами, которые могут взаимодействовать с декомпилируемой программой, при соблюдении следующих условий:
1) информация, необходимая для достижения способности к взаимодействию, ранее не была доступна этому лицу из других источников;
2) указанные действия осуществляются в отношении только тех частей декомпилируемой программы для ЭВМ, которые необходимы для достижения способности к взаимодействию;
3) информация, полученная в результате декомпилирования, может использоваться лишь для достижения способности к взаимодействию независимо разработанной программы для ЭВМ с другими программами, не может передаваться иным лицам, за исключением случаев, когда это необходимо для достижения способности к взаимодействию независимо разработанной программы для ЭВМ с другими программами, а также не может использоваться для разработки программы для ЭВМ, по своему виду существенно схожей с декомпилируемой программой для ЭВМ, или для осуществления другого действия, нарушающего исключительное право на программу для ЭВМ.
Эта правовая норма дает понять, что обратная разработка допустима с точки зрения закона только в случае выполнения определенных критериев. Предлагаю обратить внимание на следующие из них:
1. Правомерное получение экземпляра (копии) программы. Экземпляр (копия) программы, которая будет являться объектом реверс-инжиниринга, изначально должен быть получен любым правомерным способом.
Т.е. приобретение ПО в официальном магазине цифровых приложений – это правильный подход для реверс-инжиниринга. Если же нелегальная (пиратская) версия программы скачивается на торрент-трекере, реверс-инжиниринг такой программы будет неправомерен.
2. Цель реверс-инжиниринга. Целью реверс-инжиниринга должно выступать достижение способности к взаимодействию программы (версии программы), созданной в ходе реверс-инжиниринга, с другими программами.
Т.е. когда цель обратной разработки – это только лишь изучение новой версии продукта конкурента для необходимости понять, как сделать аналогичный функционал в своем продукте, то такая цель по общему правилу позволит говорить о неправомерности проведенного реверс-инжиниринга.
3. Отсутствие необходимой информации в других источниках. Информация, необходимая для достижения способности к взаимодействию, ранее не была доступна из других источников.
Т.е. в случае наличия в свободном доступе где-то в Интернете документации к программе, являющейся объектом реверс-инжиниринга, содержание которой позволит достигнуть эффект, уже достигнутый с помощью реверс-инжиниринга, но такая документация не была найдена, то этот факт с высокой долей вероятности может быть использован как доказательство неправомерности проведенной обратной разработки.
Остальные критерии также можно определить, исходя из текста вышеприведенной статьи. Но в любом случае, одними положениями закона дело не ограничивается. Практическое применение этой нормы выражено как в договорной, так и в судебной практике.
Договорная практика
На мой взгляд, наиболее широкое распространение в рамках договорной практики деятельность по реверс-инжинирингу нашла в виде ее прямого запрета, закрепленного в текстах различных соглашений на использование программных продуктов и сервисов (EULA, ToS, ToU и т.д.). Впрочем, это вполне ожидаемо – многие правообладатели хотят ограничить действия пользователя в части исследования полученной по лицензии программы, сводя ограничение свободы действий пользователя в том числе и к такому запрету.
Несколько примеров из различных текстов подобных документов:
Лицензионное соглашение для Kaspersky Rescue Disk 10
https://support.kaspersky.ru/4128
Запрещается декомпилировать, дизассемблировать, модифицировать или выполнять производные работы, основанные на ПО, целиком или частично за исключением случаев, предусмотренных применимым законодательством.
Условия использования Skype
https://www.skype.com/ru/legal/tou-connect/
4.2 Ограничения. Вы не должны предпринимать указанные ниже действия и обязуетесь воздержаться от того, чтобы:
<…>
(b) предпринимать, побуждать, разрешать или санкционировать модификацию, создание аналогичных продуктов или усовершенствований, перевод на другие языки, инженерный анализ в целях воспроизводства, декомпилирование, обратное ассемблирование, декодирование, эмуляцию, нарушение целостности защитной системы, восстановление или попытки восстановить исходный код или протоколы Программного обеспечения или каких-либо его частей или функциональных возможностей Программного обеспечения за исключением случаев, когда такие действия допустимы в соответствии с законодательством;
Лицензионное соглашение на использование программы «2GIS Dialer»
http://law.2gis.ru/dialer-licensing-agreement/
5.1. Пользователь не имеет права самостоятельно или с привлечением третьих лиц:
5.1.1. Вскрывать технологию, эмулировать, создавать новые версии, изменять, декомпилировать, дизассемблировать, дешифровать и производить иные действия с кодом Программы, имеющие целью нарушение системы защиты Программы от несанкционированного использования, а также получение информации о реализации алгоритмов, используемых в Программе.
Лицензионное соглашение RoboForm
http://www.roboform.com/ru/support/license
НЕ РАЗРЕШАЕТСЯ: Потребитель не должен: (a) удалять уведомления об авторском праве или ограничения из программы; (б) извлекать алгоритмы из программы или пытаться декомпилировать программу.
По сути, такие формулировки про запрет на осуществление реверс-инжиниринга – это своего рода юридическая перестраховка для правообладателя от действий пользователя на исследование «начинки» программного продукта с закрытым исходным кодом (проприетарный софт). А гарантией соблюдения пользователем такого запрета является перспектива наступления различных негативных последствий к нему (начиная от досрочного прекращения лицензии и заканчивая взысканием с него понесенных правообладателем убытков или денежной компенсации за нарушение авторских прав). Между прочим, в примерах зарубежной судебной практики (например, дело Blizzard v. MDY Industries, LLC), позиция о нарушенных правах истца строится не только на нарушении авторских прав, но и в том числе на нарушении договорных обязательств ответчиком (поскольку предполагается, что ответчик, начав использование исследуемой программы, согласился с положениями ее лицензионного соглашения, т.е. стал стороной в договорных отношениях с истцом как лицензиаром такой программы).
Что касается привлечения третьих лиц (специалистов, обладающих необходимыми техническими познаниями) для выполнения обратной разработки интересующего заказчика программного обеспечения, то здесь договорные отношения, на мой взгляд, сводятся к следующему:
- если действия исполнителя в конечном итоге предполагают создание результатов интеллектуальной деятельности (например, когда реверс-инжиниринг предполагает написание кода и создание каких-либо программ, скриптов и т.п.), то в этом случае следует заключать договор на выполнение работ (а в случае его заключения с физическим лицом будет применим и договор авторского заказа) с конкретизацией в нем статуса интеллектуальных прав заказчика на результаты работ по такому договору;
- Если действия исполнителя не предполагают создание результатов интеллектуальной деятельности (например, если для исследуемой программы необходимо сделать ее тестирование), в этом случае следует заключать договор на оказание услуг.
По большому счету, особой специфики в подобных договорах нет, они мало чем будут отличаться по своему содержанию от иных договоров на выполнение работ или оказание услуг в сфере программного обеспечения, поэтому предлагаю в рамках этого материала отдельно на них не останавливаться, а перейти к следующей части статьи.
Судебная практика
Конечно, наибольший интерес по теме представляет собой судебная практика, поскольку она через призму конфликта сторон позволяет как проследить трактовку и применение норм закона, так и применение положений договора (в случае наличия между сторонами спора договорных отношений), а это, в свою очередь, позволит сделать для самих себя определенные выводы на будущее касательно конкретных формулировок, используемых (или планируемых к использованию) в документах, их юридической силе и практике применения.
Говоря о судебной практике российских судов в отношении реверс-инжиниринга программного обеспечения, сразу отмечу, что она пока не успела накопить такие яркие судебные дела, какими обладают другие страны (по крайней мере, если говорить о тех делах, что были изучены при подготовке текста этого материала). Под яркими делами имеются в виду такие процессы, как Sega Enterprises v. Accolade, Atari Games Corp. v. Nintendo of America, Inc, Blizzard v. Internet Gateway, Inc (все – США), Microsoft v. Vest Corporation (Франция), SAS Institute Inc v World Programming Ltd (Великобритания). Тем не менее, и у нас в российской практике есть примеры, которые вполне будут подходить к обсуждаемой теме и на которые точно стоит обратить свое внимание (см., например, дело № 09АП-23848/2013-ГК по иску ООО "Фирма СтройСофт" к Национальной ассоциации сметного ценообразования и стоимостного инжиринга и ООО "Бюро экономического консалтинга").
Обзор судебной практики, я думаю, следует начать со следующего судебного документа:
Постановление Пленума Верховного Суда РФ N 5, Пленума ВАС РФ N 29 от 26.03.2009 "О некоторых вопросах, возникших в связи с введением в действие части четвертой Гражданского кодекса Российской Федерации"
36. Судам следует учитывать, что право совершения в отношении программы для ЭВМ или базы данных действий, предусмотренных статьей 1280 ГК РФ, принадлежит только лицу, правомерно владеющему экземпляром такой программы для ЭВМ или базы данных (пользователю).
Он говорит ровно о том, что в случае определения правомерности совершения реверс-инжиниринга программы должен быть проанализирован вопрос, действительно ли лицо, которое выполняло реверс-инжиниринг программы, правомерно обладало экземпляром такой программы или нет. Если неправомерно, то, скорее всего, исход дела будет не в пользу такого лица. Именно про это уже было указано выше в пояснении про первый критерий допустимости совершения действий по обратной разработке ПО.
Подобное утверждение фактически продублировано и в таких решениях, как, например, Постановление Пятнадцатого арбитражного апелляционного суда от 6 августа 2014 г. по делу № А32-42112/2013, Решение Арбитражного суда Кировской области от 28 марта 2014 г. по делу № А28-152/2014.
Далее, второй момент, на который стоит обратить внимание: имеет ли право одно лицо привлекать других лиц для выполнения реверс-инжиниринга или это лицо должно осуществлять его самостоятельно? Ответ на этот вопрос может дать следующее решение суда:
Решение Арбитражного суда города Москвы от 29 мая 2013 г. по делу № А40-10750/2013
По смыслу ст.1274 ГК РФ и п.2 ст.1280 ГК РФ исследование программы для ЭВМ, как и любого другого объекта исключительных прав, может быть проведено как пользователем самостоятельно, так и любым иным лицом, обладающим специальными знаниями, но в интересах пользователя, с его ведома и по его согласию. Это объясняется тем, что само по себе исследование в силу ст.1270 ГК РФ не указано в качестве способа использования объекта исключительных прав и не предполагает его возмездное отчуждение или иное введение в оборот.
Т.е. оно позволяет сделать следующий вывод: исследование программы для ЭВМ может быть проведено как пользователем самостоятельно, так и любым иным лицом, обладающим специальными знаниями, но в интересах пользователя, с его ведома и по его согласию.
Тем более что прямого запрета на такое проведение исследования одним лицом и в интересах другого в действующем законодательстве нет. Это также следует из судебной практики:
Постановление Девятого арбитражного апелляционного суда от 12 августа 2013 г. N 09АП-23848/2013-ГК
Прямой запрет на осуществление исследования в интересах пользователя, с его ведома и по его согласию любым лицом, обладающим необходимыми специальными познаниями, в действующем законодательстве отсутствует.
Тот же самый вывод можете найти и в вышеуказанном Решении Арбитражного суда города Москвы от 29 мая 2013 г. по делу № А40-10750/2013.
Следуем далее. Если в соглашении, на условиях которого распространяется программа (представляющая собой объект для реверс-инжиниринга) ничего не говорится о праве пользователя такой программы на осуществление реверс-инжиниринга, то допустимо ли его проведение без закрепления такого права в содержании соглашения или нет?
Ответ на этот вопрос можно найти в этом постановлении:
Постановление Одиннадцатого арбитражного апелляционного суда от 25 октября 2012 года по делу № А55-13189/2012
Заключение лицензионного договора означает, что пользователь программы вправе совершать в отношении ее действия, предусмотренные ст. 1280 ГК РФ, а также иные действия, обусловленные договором и связанные с эксплуатацией программы. <…> На этот договор в отличие от иных лицензионных соглашений не распространяются правила, установленные пунктами 2 - 6 статьи 1235 Кодекса.
Аналогичный ответ, кстати, содержится и в вышеуказанном Постановлении Пленума ВС РФ и Пленума ВАС РФ от 26 марта 2009 года №№ 5, 29 «О некоторых вопросах, возникших в связи с введением в действие части четвертой Гражданского кодекса Российской Федерации».
Интересно, что есть судебная практика, согласно которой внесение исправлений в выявленные ошибки ПО может быть нарушением прав правообладателя:
Постановление Федерального Арбитражного Суда Северо-Западного округа от 07 июня 2013 года по делу N А13-6254/2012
В пункте 6.6.1 названных лицензионных договоров ограничено право лицензиата осуществлять действия: деассемблировать, декомпилировать (преобразовывать объектный код в исходный текст), адаптировать и модифицировать программы и другие компоненты программного обеспечения. <…>
Исследовав и оценив представленные лицами, участвующими в деле, доказательства по правилам статей 65 и 71 АПК РФ, в том числе заключенные Обществом в 2010-2011 годах договоры на оказание услуг по сопровождению программного обеспечения <…>, судебные инстанции установили, что внесение изменений в программное обеспечение, <…> исправление выявленных ошибок в программном обеспечении <…> без согласия правообладателя <…> приведет к нарушению исключительного права <…> на результат интеллектуальной деятельности.
По такой логике, попытка устранить ошибки в программе (для того, чтобы обеспечить ее функционирование для себя правильным образом, без ошибок) самостоятельно, без привлечения к этому самого правообладателя, может привести к появлению ответственности. Тогда получается, что в случае совершения реверс-инжиниринга, для соблюдения всех критериев правомерности, предусмотренных вышеуказанным п. 3 ст. 1280 ГК, необходимо будет иметь обоснование, что самостоятельное (имеется в виду, без привлечения самого правообладателя) устранение ошибок было необходимо для достижения способности к взаимодействию программы правообладателя с другими программами.
Следующий момент: если реверс-инжиниринг исследуемой программы выполняется только в целях проверки, не является ли такая программа объектом нарушения прав, то допустим ли реверс-инжиниринг в подобных целях?
В этой ситуации не все так однозначно. Конечно, многое зависит от конкретных обстоятельств дела, но следующий пример из практики (о котором речь уже шла выше по тексту) говорит о том, что исследование программы в целях подобной проверки и для сбора доказательной базы ответчиками в свою защиту было правомерным действием:
Постановление Девятого арбитражного апелляционного суда от 12 августа 2013 г. N 09АП-23848/2013-ГК
<…> исследование программы было произведено ответчиками в рамках добросовестной и обоснованной необходимости, исключительно в целях исполнения обязанности по доказыванию исковых требований в соответствии со статьей 65 АПК РФ, не имело цели создания для истца каких-либо негативных последствий и не привело к возникновению таких последствий.
На мой взгляд, это достаточно значимый судебный акт, из которого можно сделать вывод, что исследование сторонней программы в целях сбора доказательств вполне может быть признано правомерным действием по отношению к исследуемой программе (а следовательно, и отсутствию нарушения авторских прав ее правообладателя).
Поэтому кому интересна эта тема в деталях, рекомендую ознакомиться с делом по иску ООО "Фирма СтройСофт" к Национальной ассоциации сметного ценообразования и стоимостного инжиринга и ООО "Бюро экономического консалтинга": почитать Постановление Девятого арбитражного апелляционного суда от 12 августа 2013 г. N 09АП-23848/2013-ГК и иные документы по нему.
Что же касается общих выводов по судебной практике по предмету темы, то стоит отметить следующее:
- Поскольку судам надлежит устанавливать, была ли программа, которая являлась объектом реверс-инжиниринга, получена для исследования правомерно или нет, то в первую очередь, следует обратить свое внимание на этот аспект. Если окажется, что была получена неправомерно, то, скорее всего, никакие другие аргументы не сыграют на пользу защитной позиции исследователя;
- Исследование может проводить как сам пользователь, так и любое другое лицо, но с его ведома и согласия. Поэтому в случае привлечения стороннего специалиста необходимо будет подтверждать факт наличия такого ведома и согласия;
- Проведение реверс-инжиниринга программы в целях сбора доказательств может быть признано правомерным действием.
Прим. авт.
- ↑ Словари и энциклопедии на Академике // http://dic.academic.ru/dic.nsf/ruwiki/1070713 дата обращения: 01.10.2016.
- ↑ Мультитран // http://www.multitran.ru/c/M.exe?l1=2&l2=1&s=Reverse+engineering дата обращения: 08.10.2016.
- ↑ Анна Андреева, «Реверс-инжиниринг в контексте безопасности настольных и мобильных приложений» // http://www.a1qa.ru/blog/revers-inzhiniring-v-kontekste-bezopa/ дата обращения: 05.10.2016.
P.S. Кому интересно почитать дополнительные материалы про реверс-инжиниринг программного обеспечения на русском, могу предложить к ознакомлению свой перевод справочного материала по юридическим вопросам реверс-инжиниринга, подготовленного фондом Electronic Frontier Foundation (перевод см. здесь, оригинал доступен по этой ссылке).