Реверс-инжиниринг исходного кода чужого ПО для улучшения своей программы

Судебная практика в США: можно ли сделать реверс-инжиниринг чужого ПО и внести потом правки в свою программу.


это перевод текста "Reverse Engineering Source Code of Software is Not Limited to Accessing and Testing" представителей юридической фирмы "Holland & Knight"


24 октября 2017 года Апелляционный суд четвёртого округа США вынес решение по делу SAS Institute, Inc. v. World Programming Ltd., 874 F.3d 370. В этом деле стороны спорили о том, нарушил ли ответчик (апеллянт) условия лицензионного соглашения на ПО, получив доступ к исходному коду программы. Истец утверждал, что ответчик нарушил условие лицензии, запрещающее реверс-инжиниринг, получив доступ к исходному коду, а затем включив определенные функциональные возможности в своё собственное программное обеспечение, конкурирующее на рынке с ПО истца.

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

Соответственно, апелляционный суд подтвердил постановление окружного суда о вынесении решения в упрощенном порядке в пользу истца. Впоследствии суд отклонил ходатайства ответчика о повторном слушании дела в порядке en banc[1] и об отсрочке. Судебный приказ ответчика о передаче дела на рассмотрение Верховным судом[2] остаётся на рассмотрении.


  1. более подробно про это понятие см. здесь и здесь (прим. пер.) ↩︎

  2. имеется в виду, на дату публикации оригинальной статьи; более подробно об этой процедуре см. здесь (прим. пер.) ↩︎

Факты и процессуальная основа

Компания SAS Institute, Inc. (истец) продаёт проприетарное программное обеспечение для статистического анализа, известное под общим названием “SAS System”. Пользователи используют SAS Sytem, создавая на языке программирования инструкции, известные как “Программы SAS”. Истец предлагает обучающую версию (“Learning Edition”) своего программного обеспечения, которая обеспечивает полную функциональность SAS System. Для установки Learning Edition лицензиат должен оформить лицензию (далее - "Лицензия"), которая включает запрет на “реверс-инжиниринг”. Так, Лицензия предусматривает, что лицензиат “не может осуществлять обратную сборку, реверс-инжиниринг или декомпиляцию программного обеспечения или иным образом пытаться воссоздать исходный код. ...”

Компания World Programming Limited (ответчик) находится в Соединенном Королевстве, разрабатывает конкурирующее программное обеспечение (WPS). Модифицируя и улучшая WPS, ответчик приобрёл несколько экземпляров Learning Edition. Затем ответчик запустил программу SAS как через программное обеспечение Learning Edition истца, так и через WPS, а затем изменил код WPS, чтобы изменённая версия WPS и программа Learning Edition достигли паритета в части выходных данных. Как итог, ряд бывших клиентов SAS заменили программу SAS System на WPS.

В 2010 году истец подал в суд на ответчика, утверждая, что, inter alia, ответчик нарушил Лицензию, якобы выполнив реверс-инжиниринг исходного кода, доступ к которому предоставляла Лицензия. Окружной суд Соединенных Штатов по восточному округу Северной Каролины (далее – “Окружной суд”) отклонил иск на основании несоответствия юрисдикции, учитывая ожидающийся параллельный судебный процесс в Великобритании в 2012 году. Апелляционный суд четвёртого округа не согласился с этим и вернул дело в окружной суд.

Окружной суд выносит решение в упрощённом порядке по иску истца о нарушении Лицензии

Два года спустя окружной суд вынес решение в упрощённом порядке по иску о нарушении Лицензии. Окружной суд постановил, что в соответствии с законами Северной Каролины о договорах недвусмысленный термин “реверс-инжиниринг” охватывает не только запрет на декомпиляцию и воссоздание исходного кода программы Learning Edition, но также запрещает анализировать программное обеспечение для изучения деталей его проектирования, конструирования и производства как средства для создания копии или “улучшенной” версии.

Апелляционный суд четвёртого округа заслушивает различные интерпретации понятия “реверс-инжиниринг”, используемого в Лицензии

В апелляции ответчик не оспаривал своё поведение, но утверждал, что решение в упрощенном порядке было неуместным, поскольку термин “реверс-инжиниринг” был двусмысленным. Согласно законам Северной Каролины, “нетехническим терминам” должно быть придано “значение, соответствующее смыслу, в котором они используются в обычной речи, если контекст явно не требует иного”. 874 F.3d at 380 (цитата опущена). Суды “могут прибегать к словарям для определения” общего и обыденного значения слов и фраз”. См. там же. (цитата опущена).

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

Юридический анализ и заключение

Термин “Реверс-инжиниринг” в Лицензии является недвусмысленным и широким

Апелляционный суд четвёртого округа встал на сторону истца. Он согласился, что значение фразы “реверс-инжиниринг” “не является самоочевидным”, когда оно вырвано из контекста. Следовательно, закон Северной Каролины разрешает использование словарных определений и толкование Лицензии в целом для определения обычного значения “реверс-инжиниринга”. Согласно одному словарному определению, “реверс-инжиниринг” означает “исследование (продукта) с целью определения его конструкции, состава или функционирования, как правило, с целью производства аналогичного продукта”. По мнению апелляционного суда, это определение и аналогичное из другого словаря, “более соответствует широкому пониманию, предлагаемому [истцом], чем более узкому толкованию, предлагаемому [ответчиком]”. Апелляционный суд четвёртого округа также отметил, что ответчик не указал и суд не обнаружил никаких технических словарей, раскрывающих более ограничительное определение в контексте программного обеспечения.

Апелляционный суд четвёртого округа также постановил, что интерпретация истца “лучше соответствует” требованию толкования договоров согласно законодательству Северной Каролины о том, чтобы, по возможности, каждое слово Лицензии имело силу. Положение Лицензии о реверс-инжиниринге было сопряжено с запретами на “обратную сборку” и “декомпиляцию”. Интерпретация ответчиком запрета на реверс-инжиниринг затронет только тех, кто провел реверс-инжиниринг программного обеспечения путём его декомпиляции и обратной сборки (как это якобы было сделано). По мнению суда, такой подход толкования понятия “реверс-инжиниринг” сделал бы его полностью бессмысленным. Следовательно, более широкое и понятное толкование истцом понятия “реверс-инжиниринг” позволяет избежать чрезмерности и избыточности этого понятия.

Внешние доказательства недопустимы и бесполезны, учитывая однозначность

Наконец, Апелляционный суд четвёртого округа отклонил доводы ответчика о внешних доказательствах, якобы свидетельствующих о двусмысленности, учитывая его предыдущий вывод об однозначности. См. также Reply Br. of Appellant, Flour Fed. Solutions v. PAE Applied Technologies, LLC, No. 17-1468, 2017 WL 5997802, at 8 (4th Cir. Oct. 27, 2017) (ссылаясь на позицию SAS Institute о том, что сторона не может “пренебрегать традиционными инструментами толкования договора, вместо этого полагаясь на внешние доказательства, которые, как она утверждает, демонстрируют двусмысленность”). В любом случае, апелляционный суд признал предполагаемые внешние доказательства ответчика несостоятельными. Такие доказательства состояли в том, что ответчик показал, что программа версии Learning Edition может быть подвергнута реверс-инжинирингу описанным в ней способом – путём декомпиляции и воссоздания исходного кода – что “никак не указывает на то, что никакой другой вид реверс-инжиниринга невозможен”, т.е. путём, который согласуется с более широкой интерпретацией истца положения Лицензии.

Поскольку “очевидно, что [ответчик] нарушил недвусмысленный запрет на реверс-инжиниринг”, суд подтвердил решение в упрощенном порядке в пользу истца.

Апелляционный суд отклоняет ходатайство ответчика En Banc и ходатайство о приостановлении

Ответчик 7 ноября 2017 года подал ходатайство о повторном слушании en banc, которое суд отклонил 21 ноября 2017 года. Вскоре, 28 ноября 2017 года ответчик подал ходатайство об отсрочке рассмотрения его ходатайства о передаче дела на рассмотрение Верховным судом, но суд его отклонил 30 ноября 2017 года. Поэтому решение в пользу истца вступило в силу 8 декабря 2017 года.