Программно-компьютерная экспертиза — вид компьютерно-технической экспертизы, объект которой составляют программы для электронных вычислительных машин: их исполняемые файлы, исходный код, алгоритмы, документация и история версий. Эксперт устанавливает назначение и функции программы, ее состав и происхождение, наличие скрытых возможностей, совпадение кода с другими программами, соответствие программы документации и заявленным свойствам.
Программа — нематериальный объект, но в споре о ней требуются вполне материальные ответы. Скопировал ли бывший разработчик код в продукт конкурента. Передает ли приложение данные пользователей туда, куда не обещал. Что на самом деле считает программа расчета, по которой начислены штрафы. Та ли версия установлена у лицензиата, которую он купил. Суд не может прочитать тысячи строк кода и не вправе подменять специальные знания собственным впечатлением от интерфейса.
АНО «СЗЭПЦ» проводит экспертизы с 1990 года и относится к первым негосударственным экспертным организациям на территории Российской Федерации. АНО «СЗЭПЦ» — некоммерческое судебное экспертное учреждение, зарегистрировано Министерством юстиции Российской Федерации под учетным номером 7814053482. Заключения АНО принимают арбитражные суды и суды общей юрисдикции более чем в сорока регионах. Ниже описано, какие задачи программно компьютерной экспертизы встречаются в судебной практике, как проводится экспертиза исходного кода и сравнение программ, какие вопросы ставить эксперту и чем эта экспертиза отличается от проверки выполнения договора разработки.
Что такое программно компьютерная экспертиза
Программно компьютерная экспертиза исследует программу как самостоятельный объект, вне зависимости от того, по какому договору она создана. Если аппаратная экспертиза отвечает на вопросы об устройстве, а информационная — о данных, то здесь предмет — сама логика: что программа делает, как она устроена и откуда взялась.
Статья 1261 Гражданского кодекса Российской Федерации определяет программу для электронных вычислительных машин как представленную в объективной форме совокупность данных и команд, предназначенных для функционирования компьютеров и других устройств в целях получения определенного результата, включая подготовительные материалы и порождаемые программой аудиовизуальные отображения. Эксперт использует эту конструкцию: в заключении разделяются исходный текст, объектный код, подготовительные материалы и интерфейс, потому что у каждого своя роль в споре.
Судебная программно компьютерная экспертиза назначается чаще всего в трех категориях дел: об исключительных правах на программы, о свойствах поставленного или лицензированного программного продукта, о последствиях работы программы, например о начислениях, расчетах, обработке персональных данных. Споры о выполнении работ по разработке и сопровождению по техническому заданию описаны на отдельной странице, и там применяется своя методика сравнения с требованиями договора.
Задачи программно компьютерной экспертизы
Задачи программно компьютерной экспертизы группируются по характеру вопроса.
Идентификационные задачи отвечают, одна ли это программа, одна ли версия, произошла ли одна программа от другой. Сюда относится сравнение исходных текстов, установление общего происхождения, идентификация версии, установленной у пользователя.
Диагностические задачи устанавливают свойства: какие функции реализует программа, работает ли она, какие данные обрабатывает и куда передает, есть ли в ней функции, не описанные в документации, корректны ли алгоритмы расчета.
Классификационные задачи относят программу к определенной группе: является ли она средством удаленного управления, средством сбора данных, программой с признаками вредоносного поведения, свободно распространяемым компонентом с определенной лицензией.
Ситуационные задачи восстанавливают картину событий: когда программа устанавливалась и обновлялась, какие версии сменяли друг друга, кто вносил изменения в код по истории системы контроля версий.
Вопрос права — нарушено ли исключительное право, является ли программа контрафактной, законна ли обработка данных — в задачи программно компьютерной экспертизы не входит. Эксперт устанавливает технические факты, суд дает им правовую оценку.
Экспертиза исходного кода
Экспертиза исходного кода — центральная часть большинства исследований программ. Исходный текст показывает, что делает программа, как она написана, кем и в какой последовательности. Исполняемый файл отвечает на первый вопрос, исходный код — на все три.
Что устанавливает экспертиза исходного кода
Экспертиза исходного кода отвечает на несколько типовых вопросов. Соответствует ли представленный исходный текст исполняемой программе, то есть собирается ли из него именно тот файл, который работает у пользователя. Каков состав программы: собственные модули, сторонние библиотеки, заимствованные фрагменты. Какие функции реализованы в коде, в том числе не отраженные в интерфейсе и документации. Каково качество кода по признанным метрикам: структура, дублирование, наличие тестов, соблюдение правил оформления. Какова история создания кода по данным системы контроля версий.
Соответствие исходного кода исполняемой программе
Этот вопрос возникает, когда стороны спорят, та ли программа передана. Исполнитель передал код, заказчик утверждает, что работающая у него программа содержит больше функций, или наоборот. Эксперт собирает программу из переданного кода по инструкции и сравнивает результат с исполняемым файлом: по размеру, структуре, контрольным значениям, а при расхождении — по составу функций. Точного совпадения контрольных значений ожидать не всегда можно: сборка может включать дату и путь, поэтому эксперт сравнивает содержательную часть и объясняет расхождения.
История кода
Если разработка велась в системе контроля версий, ее история — самостоятельный объект исследования. Эксперт устанавливает, кто и когда вносил изменения, в каком порядке появлялись функции, не переписывалась ли история задним числом. Последнее выявляется по несоответствию дат фиксаций, служебных сведений и внешних источников, например копий репозитория у других участников или на серверах размещения.
Сравнение программ и заимствование кода
Самая частая задача в спорах об исключительных правах — установить, скопирована ли программа или ее часть. Бывший сотрудник запустил конкурирующий продукт, подрядчик продал заказчику код, который ранее создал для другого клиента, лицензиат после окончания лицензии выпустил «собственную» программу.
Сравнение ведется на нескольких уровнях. Текстуальный уровень выявляет совпадающие фрагменты исходного текста, в том числе после переименования переменных и изменения форматирования. Структурный уровень сравнивает архитектуру: состав модулей, иерархию классов, схемы баз данных, последовательность вызовов. Уровень уникальных признаков ищет то, что не может совпасть случайно: одинаковые ошибки, одинаковые опечатки в комментариях и сообщениях, одинаковые нестандартные решения, оставшиеся от исходного проекта пути к файлам и имена авторов.
Совпадение само по себе еще не означает заимствования. Программы на одной платформе используют одинаковые библиотеки, типовые конструкции языка, общеизвестные алгоритмы. Эксперт отделяет такие совпадения от характерных для конкретного автора и указывает долю совпадений каждого вида. Выводы формулируются осторожно: объем совпадающих фрагментов в строках и процентах, характер совпадения, признаки общего происхождения. Вывод о том, является ли совпадение переработкой произведения по статье 1270 Гражданского кодекса, делает суд.
Когда исходного кода нет
Программа конкурента обычно доступна только в исполняемом виде. Эксперт сравнивает исполняемые файлы, извлекает строки, ресурсы, структуры данных, сигнатуры функций, анализирует поведение программ при одинаковых входных данных. Декомпиляция возможна, но ограничена законом: статья 1280 Гражданского кодекса допускает ее без согласия правообладателя только для достижения взаимодействия программ, а в судебном споре такое исследование проводится по определению суда. Выводы по исполняемым файлам, как правило, менее категоричны, чем по исходному коду, и суд может истребовать исходный текст у стороны.
Недокументированные функции и скрытая передача данных
Программа может делать больше, чем обещает. Приложение для учета собирает контакты пользователя, корпоративная система отправляет статистику разработчику, в поставленном программном комплексе есть скрытая функция удаленного отключения при неоплате, в программе есть учетная запись с неизменяемым паролем для доступа разработчика. В споре такие функции решают исход: нарушение условий лицензии, обработка персональных данных без оснований, утрата контроля над системой.
Эксперт выявляет их двумя путями. Статический анализ исследует код или исполняемый файл без запуска: какие адреса и сервисы в нем указаны, какие функции вызываются, какие данные собираются. Динамический анализ наблюдает за программой при работе в контролируемой среде: какие соединения она устанавливает, какие данные передает, какие файлы создает и изменяет, какие действия выполняет по команде извне. Результаты сопоставляются с документацией и лицензионным договором.
Для мобильных приложений дополнительно исследуются запрашиваемые разрешения и их фактическое использование. Эксперт сопоставляет список разрешений в описании приложения с тем, что приложение фактически запрашивает при установке и в процессе работы, и с тем, какие данные оно реально читает и передает. Расхождение между заявленным и фактическим поведением — самый частый предмет претензий пользователей и контрагентов, и программно-компьютерная экспертиза фиксирует его по конкретным сценариям с указанием версии приложения и условий проверки. Разрешение на доступ к местоположению или контактам, которое приложение запрашивает, но не использует по назначению, — частый предмет претензий по Федеральному закону от 27 июля 2006 года № 152-ФЗ «О персональных данных». Эксперт устанавливает, что именно и куда передавалось, а законность обработки оценивает суд или надзорный орган.
Признаки вредоносного поведения в гражданском споре
Иногда поставленная или установленная подрядчиком программа выполняет действия, которые наносят вред пользователю: блокирует работу, уничтожает данные, передает сведения третьим лицам. В гражданском споре о возмещении убытков эксперт устанавливает, какие функции программы привели к последствиям, были ли они предусмотрены документацией и договором, могли ли они активироваться без ведома пользователя.
В гражданском процессе экспертиза описывает поведение программы и его последствия, не давая уголовно-правовой квалификации.
Алгоритмы расчета
Многие споры упираются в то, как программа считает. Биллинг оператора начислил сумму, которую абонент оспаривает. Система учета рабочего времени показала переработку, которую работодатель не признает. Программа расчета тарифа применила коэффициент, не предусмотренный договором. Система штрафов автоматически начислила санкции.
Программно компьютерная экспертиза восстанавливает алгоритм: по коду, по документации, по поведению программы на контрольных примерах. Эксперт проверяет, соответствует ли фактический алгоритм описанному в договоре, методике или правилах, воспроизводит расчет на спорных данных и показывает, на каком шаге возникает расхождение. Экономический смысл расчета, например правильность тарифа или налоговой базы, оценивает экономист, а эксперт по программе устанавливает, что программа делает с входными данными. Для проверки эксперт готовит набор контрольных примеров: обычные значения, граничные значения, нулевые и отрицательные величины, даты на стыке периодов. Ошибки программ расчета чаще всего проявляются именно на границах: при смене тарифного периода, округлении, переходе через полночь или конец месяца, пересчете задним числом. Если спорная сумма образовалась на такой границе, заключение показывает это на конкретном примере с пошаговым расчетом.
Версии, лицензии и контрафактные экземпляры
Лицензионный договор разрешает использовать определенную версию программы на определенном числе рабочих мест. Правообладатель утверждает, что пользователь установил больше экземпляров или более функциональную редакцию. Пользователь утверждает, что все в пределах лицензии.
Эксперт устанавливает, какие версии и редакции программы установлены, на скольких устройствах, какие ключи и средства защиты используются, вносились ли изменения в механизм проверки лицензии. Для контрафактных экземпляров характерны измененные исполняемые файлы, отключенная проверка лицензии, генераторы ключей, сторонние модули эмуляции защиты. Эти признаки фиксируются в заключении без инструкций по их применению. Гражданско-правовые последствия, включая компенсацию по статье 1301 Гражданского кодекса, определяет суд.
В арбитражных спорах правообладателей с пользователями экспертиза проводится в обычном порядке.
Встроенное программное обеспечение устройств
Программы работают не только на компьютерах. Встроенное программное обеспечение управляет кассовыми аппаратами, приборами учета, промышленными контроллерами, медицинским оборудованием, автомобильными блоками, умной техникой. Споры возникают, когда устройство ведет себя не так, как должно: прибор учета показывает завышенный расход, контроллер останавливает линию, блок управления ограничивает функции после неоплаты.
Эксперт извлекает встроенную программу из устройства, если это технически возможно и допускается определением суда, устанавливает ее версию и сравнивает с версией, заявленной производителем. Затем исследует логику: какие условия вызывают спорное поведение, предусмотрено ли оно документацией, вносились ли изменения в программу после выпуска. Если производитель выпускал обновления встроенной программы, эксперт устанавливает, какие версии существовали, когда и каким способом обновление попало на устройство, и не изменило ли оно поведение, ставшее предметом спора. Для средств измерений отдельно проверяется идентификация программы, указанная в описании типа, но метрологическую экспертизу по Федеральному закону от 26 июня 2008 года № 102-ФЗ «Об обеспечении единства измерений» проводят аккредитованные организации.
Установление авторства и времени создания программы
В спорах об авторстве и о правах работодателя на служебную программу по статье 1295 Гражданского кодекса нужно установить, кто и когда создал код. Судебная программно компьютерная экспертиза отвечает на эти вопросы по объективным следам: истории системы контроля версий, служебным сведениям файлов, датам сборок, фиксациям на серверах размещения кода, переписке и задачам в системе управления проектом.
Вывод об авторстве в правовом смысле делает суд. Эксперт устанавливает, под какой учетной записью, с какого устройства и когда вносились изменения, в какой последовательности появлялись модули, существовал ли код до даты трудового договора или до даты договора заказа. Стилистическое сравнение кода, то есть сопоставление манеры программирования, применяется как вспомогательный метод и дает вероятные выводы, поэтому само по себе не дает основания для категорического заключения.
Регистрация программы в федеральном органе исполнительной власти по интеллектуальной собственности носит заявительный характер: орган не проверяет авторство и оригинальность, и свидетельство о регистрации опровергается другими доказательствами. Экспертиза может установить, соответствует ли депонированный фрагмент исходного текста спорной программе.
Программа как продукт: соответствие документации
Когда программа поставляется как готовый продукт по лицензии, эталон — не техническое задание, а документация производителя и условия лицензии. Покупатель утверждает, что функции, указанные в описании, отсутствуют или не работают, продавец — что покупатель неправильно использует программу.
Эксперт составляет перечень заявленных функций по документации, рекламным материалам и спецификации, проверяет каждую на рабочей копии в среде, соответствующей системным требованиям, и фиксирует результат. Если функция работает только при определенных условиях, не указанных в документации, это описывается отдельно. Правовая оценка, в том числе вопрос о существенности недостатка программного продукта, остается за судом.
Реестр российского программного обеспечения
Для включения программы в единый реестр российских программ, созданный в соответствии с постановлением Правительства Российской Федерации от 16 ноября 2015 года № 1236, проводится экспертная проверка сведений о программе в установленном порядке. Эта процедура административная, ее проводят уполномоченные органы и экспертный совет. В судебном споре, например о соответствии поставленной программы требованию закупки о происхождении, эксперт может установить технические факты: версию, состав компонентов, наличие иностранных модулей, но вывод о соответствии требованиям реестра делает уполномоченный орган.
Как эксперт измеряет совпадения
Цифра «совпадает сорок процентов кода» сама по себе мало что говорит суду, пока не ясно, как она получена. Поэтому методика сравнения описывается в заключении подробно.
Сначала из обеих программ исключается то, что не относится к предмету спора: сторонние библиотеки, автоматически сгенерированный код, файлы конфигурации сборки, стандартные шаблоны среды разработки. Затем исходные тексты нормализуются: убираются комментарии и форматирование, переменные приводятся к единому виду, чтобы переименование не маскировало совпадение. После этого выполняется поиск совпадающих последовательностей с минимальной длиной фрагмента, которая указывается в заключении.
Найденные совпадения классифицируются: типовые конструкции языка, реализации общеизвестных алгоритмов, фрагменты из общих источников и индивидуальные фрагменты. Для последних эксперт приводит примеры в приложениях с указанием файлов и строк обеих программ. Итоговые доли указываются отдельно по каждой группе и в пересчете на объем каждой программы, потому что сорок процентов маленькой программы и пять процентов большой могут означать один и тот же объем заимствованного кода.
Код как актив в корпоративном конфликте
В технологических компаниях программный продукт часто стоит больше всего остального имущества. При выходе участника, смене директора или разделе бизнеса спор идет о том, где хранится код, кто имеет к нему доступ и не был ли он вынесен. Выясняется, что репозиторий зарегистрирован на личную учетную запись основателя, ключи сборки хранятся у одного разработчика, а права на код никогда не оформлялись.
Программно-компьютерная экспертиза устанавливает, какой код существует, где хранятся актуальные версии, соответствует ли переданная компании версия той, что используется в продукте, какие изменения вносились после конфликта и кем. По истории системы контроля версий видно, копировался ли репозиторий, создавались ли ответвления на сторонних площадках, удалялись ли ветки. Правовые вопросы о принадлежности прав решает суд, но без технической картины ему не на что опереться.
Утечка исходного кода
Исходный код попадает к конкуренту через бывшего сотрудника, подрядчика или взлом. Для иска правообладателю нужно доказать два факта: что код у конкурента совпадает с его кодом и что код был вынесен.
Первый факт устанавливается сравнением программ. Второй — исследованием инфраструктуры правообладателя: журналы доступа к репозиторию, клонирования и выгрузки, подключения внешних носителей на рабочих станциях, передача архивов на внешние сервисы. Если утечка связана с сетевым доступом, к исследованию подключается компьютерно-сетевая часть. В совокупности это дает суду цепочку от источника до конечного продукта.
Программы в закупках: эквивалентность и происхождение
При закупке программного обеспечения документация описывает требуемые функции и характеристики, а поставщик вправе предложить эквивалент. Заказчик отказывается принимать программу, считая ее неэквивалентной, поставщик настаивает на соответствии.
Эксперт составляет перечень требований из документации о закупке и проверяет каждое на поставленной программе в среде, соответствующей требованиям. Результат оформляется таблицей соответствия с указанием, где требование выполнено, где выполнено иным способом и где не выполнено. Вывод об эквивалентности в правовом смысле делает суд, опираясь на эту таблицу.
Для государственных закупок дополнительно возникает вопрос о происхождении программы. Технические факты о составе и происхождении компонентов эксперт устанавливает, а соответствие требованиям о включении в реестр российских программ определяет уполномоченный орган.
Игровые программы, аккаунты и внутриигровые покупки
Споры пользователей с издателями игр и онлайн-сервисов касаются блокировки аккаунтов, утраты купленных предметов, списаний за покупки, которые пользователь не совершал. Издатель ссылается на нарушение правил и автоматическое срабатывание защиты, пользователь — на ошибку системы.
Программно компьютерная экспертиза устанавливает, по каким правилам работает механизм блокировки или списания, какие события зафиксированы в отношении аккаунта, соответствует ли фактическое поведение программы пользовательскому соглашению. Для этого исследуются клиентская часть, журналы действий пользователя, сведения, представленные издателем по запросу суда. Серверная логика обычно недоступна напрямую, поэтому выводы строятся на сопоставлении клиентских данных с журналами издателя, и заключение указывает это ограничение.
Совместимость и интеграция программ
Программа, купленная для работы вместе с другой системой, может не взаимодействовать с ней: данные не передаются, форматы не совпадают, обновление одной системы ломает обмен с другой. Поставщик утверждает, что программа соответствует описанию, а проблема на стороне покупателя.
Эксперт проверяет, какие интерфейсы и форматы обмена программа поддерживает по документации и фактически, воспроизводит обмен в тестовой среде, выявляет, на каком этапе он прерывается и какая программа отклоняется от согласованного описания интерфейса. Если причина в обновлении одной из систем, устанавливается, какая версия и когда изменила поведение. Декомпиляция для достижения взаимодействия допускается статьей 1280 Гражданского кодекса и в судебном споре выполняется по определению суда.
Разграничение со смежными экспертизами
Экспертиза соответствия работ по разработке и сопровождению программного обеспечения техническому заданию проверяет результат относительно требований договора: реализованы ли функции, какой объем работ выполнен, по чьей вине ошибки. Программно компьютерная экспертиза шире по предмету и не привязана к договору: она исследует программу как объект — ее функции, происхождение, скрытые возможности, алгоритмы, версии.
Экспертиза 1С учитывает механизмы платформы «1С:Предприятие»: конфигурации, журнал регистрации, проведение документов. Для программ на этой платформе нужна именно она.
Информационно-компьютерная экспертиза исследует данные, которые программа создала или обработала. Если вопрос касается того, что записано в базе, а не того, как программа работает, это информационная задача.
Аппаратно-компьютерная экспертиза исследует устройство, на котором работает программа. Встроенное программное обеспечение находится на границе: программа исследуется здесь, а неисправность платы — там.
Экспертиза объектов интеллектуальной собственности отвечает на правовые и искусствоведческие вопросы охраноспособности. Техническое сравнение кода, на котором строится спор о правах, выполняет программно компьютерная экспертиза, и в сложных делах эти исследования назначаются вместе.
Экспертиза и аудит информационной безопасности оценивают защищенность системы. Если спор касается уязвимостей в конкретной программе как недостатка продукта, вопрос относится к программно-компьютерной экспертизе.
Где применяется заключение АНО «СЗЭПЦ»
АНО «СЗЭПЦ» проводит программно-компьютерную экспертизу в гражданском, арбитражном и административном судопроизводстве, по делам об административных правонарушениях и во внесудебном порядке: для досудебного урегулирования, обоснования претензии, внутренней проверки и подготовки к процессу.
Исследование ведется на исходном коде, исполняемых файлах и истории разработки, переданных сторонами или истребованными судом, с соблюдением режима коммерческой тайны. Заключение описывает функции, происхождение и совпадения программ, а вывод о нарушении исключительных прав и контрафактности делает суд.
Нормативная база
Процессуальный порядок: Федеральный закон от 31 мая 2001 года № 73-ФЗ «О государственной судебно-экспертной деятельности в Российской Федерации», положения которого по статье 41 обязательны для негосударственных экспертов; статьи 79–87 Гражданского процессуального кодекса Российской Федерации; статьи 82–87 Арбитражного процессуального кодекса Российской Федерации. Споры о правах на программы рассматривают арбитражные суды, в том числе Суд по интеллектуальным правам, поэтому значимы разъяснения постановления Пленума Высшего Арбитражного Суда Российской Федерации от 4 апреля 2014 года № 23 об экспертизе и постановления Пленума Верховного Суда Российской Федерации от 23 апреля 2019 года № 10 о применении части четвертой Гражданского кодекса.
Материальное право: статьи 1259 и 1261 Гражданского кодекса об охране программ как литературных произведений; статья 1262 о государственной регистрации программ; статья 1270 об исключительном праве и переработке; статья 1280 о свободных действиях пользователя, включая декомпиляцию для достижения взаимодействия; статьи 1295 и 1296 о служебных программах и программах, созданных по заказу; статья 1301 об ответственности за нарушение исключительного права. Федеральный закон № 152-ФЗ «О персональных данных» — для исследований обработки данных приложениями. Постановление Правительства Российской Федерации от 16 ноября 2015 года № 1236 — о реестре российских программ, в части разграничения компетенции.
Стандарты: ГОСТ Р ИСО/МЭК 25010-2015 о модели качества программного продукта, ГОСТ Р ИСО/МЭК 12207-2010 о процессах жизненного цикла программных средств, ГОСТ Р ИСО/МЭК 27037-2014 о сборе и сохранении цифровых свидетельств, ГОСТ Р 34.11-2012 о функции хэширования для подтверждения неизменности объектов.
Судебная программно компьютерная экспертиза: назначение
Судебная программно компьютерная экспертиза назначается определением суда по ходатайству стороны. К ходатайству прилагается информационное письмо экспертной организации с кандидатурами экспертов, их образованием в области программирования, сроком и стоимостью.
Главная трудность — объекты. Исходный код почти всегда находится у одной стороны, и она не заинтересована его показывать. Программа конкурента доступна только в исполняемом виде. Версия, работавшая в спорный период, могла быть обновлена. Поэтому в ходатайстве сторона просит суд:
истребовать исходный код с историей изменений из системы контроля версий у стороны, которая его хранит;
обязать стороны сохранить версии программы, действовавшие в спорный период, и не удалять репозитории;
указать в определении, какие версии и редакции программ сравниваются;
разрешить эксперту исследование исполняемых файлов, включая декомпиляцию в пределах, необходимых для ответа на вопросы;
определить порядок обращения с исходным кодом как с коммерческой тайной: эксперт не раскрывает его содержание за пределами заключения, а фрагменты в приложениях приводит в объеме, необходимом для обоснования выводов.
Если сторона отказывается представить исходный код, суд вправе оценить это против нее по правилам о доказывании, а в гражданском процессе — признать факт установленным или опровергнутым по части 3 статьи 79 Гражданского процессуального кодекса.
Программно компьютерная экспертиза вопросы: как их формулировать
Программно компьютерная экспертиза вопросы получает из определения суда, и от их формулировки зависит, будет ли заключение полезным. Хороший вопрос касается конкретной программы и версии, описывает, что именно сравнивается или проверяется, и не содержит правовой оценки.
Вопросы о сравнении программ
Имеются ли в исходном тексте программы А фрагменты, совпадающие с исходным текстом программы Б? Каков объем совпадений в строках и в процентах от объема программы?
Какие из совпадений объясняются использованием общедоступных библиотек, типовых конструкций языка и стандартных алгоритмов, а какие являются индивидуальными?
Имеются ли признаки общего происхождения программ: совпадающие ошибки, комментарии, имена, пути к файлам, структуры данных?
Какая из программ создана раньше по данным систем контроля версий, служебных сведений и иных материалов дела?
Вопросы о функциях и составе
Каковы назначение и функциональные возможности представленной программы?
Имеются ли в программе функции, не описанные в документации? Если да, каковы они и при каких условиях активируются?
Какие данные собирает программа и куда их передает?
Какие сторонние компоненты входят в состав программы и под какими лицензиями они распространяются?
Соответствует ли исполняемая программа представленному исходному коду?
Вопросы об алгоритмах и версиях
Каков алгоритм расчета, реализованный в программе? Соответствует ли он методике, указанной в договоре или правилах?
Какой результат дает программа на указанных входных данных, и на каком шаге возникает расхождение с расчетом стороны?
Какие версии и редакции программы установлены на указанных устройствах? Вносились ли изменения в механизм проверки лицензии?
Программно компьютерная экспертиза вопросы, которые ставить не нужно
Вопросы о том, нарушены ли исключительные права, является ли программа контрафактной, законна ли обработка персональных данных, кто автор программы в правовом смысле, — правовые. Эксперт укажет, что они выходят за пределы специальных знаний. Корректная замена — вопросы о фактах: объем совпадений, признаки происхождения, дата создания, фактическая передача данных, учетные записи, под которыми вносились изменения.
Порядок проведения исследования
Приемка и фиксация объектов
Эксперт получает исходный код, исполняемые файлы, документацию, доступ к репозиториям. Для каждого архива и файла вычисляется контрольное значение. Если программа установлена на устройстве, с него снимается копия, а версия программы фиксируется по служебным сведениям и файлам установки. Репозиторий копируется целиком с историей, а не как набор текущих файлов.
Подготовка среды
Для запуска программы готовится изолированная среда с операционной системой и компонентами, соответствующими системным требованиям. Сетевые соединения из этой среды контролируются, чтобы наблюдать передачу данных и исключить воздействие на внешние системы. Для мобильных приложений используются тестовые устройства или эмуляторы с перехватом трафика.
Статический анализ
Исследуются исходный текст или исполняемые файлы без запуска. Эксперт определяет состав модулей и компонентов, строит граф зависимостей, выявляет вызовы сетевых функций и функций работы с данными, извлекает строки и ресурсы, проводит сравнение с другой программой средствами поиска совпадений. Автоматические результаты проверяются вручную на выборке: инструмент может посчитать совпадением типовую конструкцию, а эксперт должен это отфильтровать.
Динамический анализ
Программа запускается по сценариям, отражающим вопросы суда: выполнение спорной функции, расчет на контрольных данных, работа с правами пользователя. Фиксируются действия программы, созданные файлы, изменения настроек, сетевые соединения и передаваемые данные.
Оформление
Результаты сводятся в заключение с приложениями: таблицами совпадений с указанием фрагментов, схемами архитектуры, протоколами сценариев, перечнем сторонних компонентов, выдержками из истории изменений. Фрагменты кода в приложениях приводятся в объеме, необходимом для обоснования, с учетом режима коммерческой тайны.
Что передать для экспертизы
Для предварительного анализа достаточно описания спора, сведений о программах и их версиях, договоров и лицензий. Для экспертизы понадобятся:
исходный код программ с полной историей из системы контроля версий;
исполняемые файлы и дистрибутивы тех версий, которые действовали в спорный период;
документация, спецификации, описания функций, рекламные материалы, если спор о заявленных свойствах;
лицензионные договоры, договоры разработки, трудовые договоры и служебные задания, если спор об авторстве и правах;
сведения о системных требованиях и среде, в которой работала программа;
для алгоритмов расчета — договор или методика, спорные входные данные и результаты, полученные сторонами;
для мобильных приложений — версии установочных пакетов и сведения о периоде их распространения;
для встроенного программного обеспечения — само устройство или образ его памяти.
Главное правило: не удалять и не перезаписывать репозитории, не выпускать обновления, заменяющие спорную версию, без сохранения ее копии.
Структура заключения и его проверка
Заключение оформляется по статье 25 закона № 73-ФЗ и статье 86 процессуальных кодексов. Для программно-компьютерной экспертизы в нем обязательны: идентификация программ с версиями и контрольными значениями; описание среды исследования; перечень примененных программных средств с версиями; методика сравнения с указанием, как отделялись типовые совпадения от индивидуальных; ограничения выводов, например отсутствие исходного кода одной из программ.
Проверяя чужое заключение, сторона смотрит: указаны ли версии сравниваемых программ; отделены ли совпадения за счет общих библиотек; проверены ли результаты автоматических инструментов вручную; описана ли среда динамического анализа; есть ли в приложениях фрагменты, подтверждающие выводы; нет ли правовых выводов о нарушении прав и контрафакте. Отрицательный ответ по двум и более пунктам — основание для рецензии.
Категории дел
Программно-компьютерная экспертиза назначается в следующих категориях споров.
Защита исключительных прав на программы: копирование кода бывшими работниками, подрядчиками, лицензиатами, конкурентами.
Споры о служебных программах и программах, созданных по заказу: кому принадлежат права и когда создан код.
Споры правообладателей с пользователями о превышении лицензии и использовании контрафактных экземпляров.
Споры о качестве программных продуктов, приобретенных по лицензии или вместе с оборудованием.
Споры о начислениях и расчетах, выполненных программами: связь, коммунальные услуги, банковские продукты, учет рабочего времени.
Споры о персональных данных, собираемых мобильными приложениями и программами.
Споры о последствиях работы программ: блокировки, уничтожение данных, скрытые функции отключения.
Корпоративные конфликты вокруг программного продукта как основного актива компании.
Досудебное исследование
До суда сторона заказывает внесудебное исследование, и его результат оформляется заключением специалиста. Для правообладателя это способ оценить перспективы иска о нарушении прав: насколько совпадают программы и есть ли признаки общего происхождения. Для обвиняемой стороны — способ показать, что совпадения объясняются общими библиотеками и типовыми решениями.
Суд оценивает заключение специалиста как письменное доказательство. Если оппонент его оспаривает, оно обосновывает ходатайство о судебной экспертизе и подсказывает вопросы. Специалиста можно вызвать в заседание для консультации.
Раннее исследование особенно полезно, когда программа конкурента распространяется открыто: специалист фиксирует версии, доступные на дату исследования, вычисляет их контрольные значения и описывает, откуда они получены. Позже конкурент может выпустить обновление, из которого спорные фрагменты удалены, и без зафиксированной копии доказать их наличие будет трудно.
Свободные лицензии и открытый код
Большинство современных программ включают компоненты с открытым кодом. Лицензии на них различаются: одни разрешают практически любое использование, другие требуют раскрыть исходный код производной программы при ее распространении, третьи запрещают коммерческое использование. Споры возникают, когда правообладатель компонента предъявляет требования к разработчику продукта или когда заказчик обнаруживает, что купленная программа содержит компоненты с ограничительными лицензиями.
Эксперт составляет перечень компонентов с открытым кодом, их версий и лицензий, устанавливает, как они включены в программу — отдельной библиотекой или встроены в код, изменялись ли они. Правовые последствия, в том числе вопрос о том, распространяются ли условия лицензии компонента на всю программу, решает суд.
Исходный код как коммерческая тайна
Исходный код — ценный актив, и стороны опасаются его раскрытия в процессе. Закон позволяет защитить эту информацию. Эксперт, получивший код, не раскрывает сведения за пределами заключения. В заключение включаются только фрагменты, необходимые для обоснования выводов. Стороны могут ходатайствовать о закрытом рассмотрении дела в части, касающейся коммерческой тайны, по статье 11 Арбитражного процессуального кодекса и статье 10 Гражданского процессуального кодекса.
На практике это решает проблему, которая иначе останавливает дело: сторона не хочет показывать код оппоненту, а без кода экспертиза невозможна. Порядок обращения с кодом стоит обсудить со специалистом до заседания и включить в ходатайство.
Когда экспертиза не нужна
Если стороны не спорят о том, что код скопирован, и расходятся только в правовой оценке, экспертиза не требуется. Если программа распространяется по свободной лицензии и спор касается только соблюдения ее условий, достаточно документов и перечня компонентов. Если расчет программы можно проверить вручную на нескольких примерах и стороны согласны с исходными данными, экспертиза может оказаться избыточной.
Предварительный анализ показывает, что даст экспертиза в конкретном споре и можно ли обойтись без нее. Иногда честный ответ — экспертиза не нужна, и это экономит стороне месяцы.
Мобильные приложения
Мобильное приложение — программа с особенностями, которые влияют на методику. Оно распространяется через магазины приложений, обновляется часто и незаметно для пользователя, работает в связке с серверной частью, которая не видна исследователю, и запрашивает разрешения на доступ к данным устройства.
В спорах о копировании эксперт сравнивает установочные пакеты приложений, их ресурсы, структуру и код, извлеченный из пакета. В спорах о функциях — устанавливает, какие разрешения запрашивает приложение, как их использует, какие соединения устанавливает и какие данные передает. В спорах о подписке и списаниях — какие элементы интерфейса показывались пользователю при оформлении, какие условия были видны и в какой момент происходило подтверждение оплаты.
Важная деталь — версия. Приложение, которое пользователь установил год назад, и текущая версия в магазине могут отличаться принципиально. Поэтому для экспертизы нужен установочный пакет спорной версии, и его стоит сохранить сразу, пока приложение не обновилось.
Программы с элементами машинного обучения
Все больше программ содержат обученные модели: системы распознавания, рекомендательные алгоритмы, генераторы текста и изображений, скоринговые модели. Споры о них возникают в тех же категориях — права, качество, последствия работы, — но предмет исследования шире: кроме кода, это модель, данные для обучения и параметры работы.
Программно компьютерная экспертиза в таких делах устанавливает, как устроена система: какие компоненты созданы разработчиком, какие взяты из открытых источников, какая модель используется и откуда она получена. Для споров о результатах — как система пришла к конкретному результату на спорных входных данных, насколько он воспроизводим, соответствует ли поведение системы описанию в документации и договоре.
Отдельный вопрос — код, созданный с помощью генеративных систем. Он может содержать фрагменты, совпадающие с чужим кодом из обучающих данных, и это обнаруживается при сравнении. Правовой статус такого кода и распределение прав определяет суд, а эксперт устанавливает факты: совпадения, их источник, историю появления фрагментов в репозитории.
Выводы о поведении обученных моделей часто вероятностные: одна и та же модель может давать разные результаты при одинаковых данных. Эксперт описывает эту особенность в заключении и указывает, на скольких повторах получен результат.
Сроки
Срок зависит от объема кода, числа сравниваемых программ и версий, наличия исходного текста и сложности подготовки среды для запуска. Исследование версий и лицензий и выявление недокументированных функций занимают 5–10 дней, экспертиза исходного кода 5–15 дней. Исследование назначения и функций программы, сравнение исходного кода двух программ, исследование алгоритма расчета и исследование мобильного приложения или встроенного программного обеспечения требуют 7–14 дней: в эти сроки входят подготовка изолированной среды, нормализация кода и ручная проверка результатов инструментов. Рецензия на чужое заключение готовится за 4–8 дней. Если эксперт ждет исходный код, который суд истребует у стороны, срок продлевается на время его получения.
Повторная экспертиза и рецензия
Неполное заключение восполняется дополнительной экспертизой, необоснованное — повторной по статье 87 процессуальных кодексов. Типичные дефекты заключений по программам: не указаны версии сравниваемых программ; совпадения посчитаны без исключения общих библиотек и типовых конструкций; результаты инструмента сравнения приняты без ручной проверки; вывод о заимствовании сделан по исполняемым файлам без оговорки об ограничениях; не описана среда запуска; эксперт дал правовую оценку, назвав программу контрафактной или переработкой. Эти дефекты показывает рецензия специалиста. Судебная коллегия по экономическим спорам Верховного Суда Российской Федерации в определении от 25 января 2018 года по делу № 305-ЭС17-11486 подтвердила, что рецензия образует мотивированные возражения, которые суд обязан рассмотреть.
Возражения оппонента
«Совпадения объясняются общими библиотеками». Эксперт указывает, какая доля совпадений приходится на общедоступные компоненты, и отдельно приводит индивидуальные совпадения с их признаками.
«Мы написали код независимо». Проверяется по истории системы контроля версий: как появлялись спорные модули, одним большим добавлением или постепенно, есть ли следы переименований и правки чужого кода.
«Функция передачи данных описана в документации». Эксперт сопоставляет фактическое поведение с текстом документации и указывает расхождения, если они есть.
«Исследовалась не та версия». Ответ дают контрольные значения и описание происхождения каждой версии в заключении.
Стоимость и сроки
Цена зависит от объема кода, числа программ и версий, наличия исходного текста и сложности среды. Сумма и срок называются после бесплатного предварительного анализа и указываются в информационном письме для суда.
| Вид исследования или услуги | Стоимость | Срок |
| Предварительный анализ материалов и оценка задачи | бесплатно | 1 день |
| Исследование назначения и функций программы | от 50 000 ₽ | 7–14 дней |
| Сравнительное исследование исходного кода двух программ | от 80 000 ₽ | 7–14 дней |
| Экспертиза исходного кода: состав, качество, соответствие исполняемой версии | от 80 000 ₽ | 5–15 дней |
| Выявление недокументированных функций и скрытой передачи данных | от 70 000 ₽ | 5–10 дней |
| Исследование версий, лицензий и признаков контрафактных экземпляров | от 50 000 ₽ | 5–10 дней |
| Исследование алгоритма расчета в программе | от 60 000 ₽ | 7–14 дней |
| Исследование мобильного приложения или встроенного программного обеспечения | от 70 000 ₽ | 7–14 дней |
| Рецензия на заключение программно-компьютерной экспертизы | от 50 000 ₽ | 4–8 дней |
| Подготовка ходатайства о назначении или повторной экспертизе | 12 000 ₽ | от 1 дня |
| Подготовка вопросов для допроса эксперта | от 20 000 ₽ | 1–3 рабочих дня |
| Участие специалиста в судебном заседании | от 20 000 ₽ | по согласованию |
| Срочное исследование | плюс 50 % к базовой цене | по согласованию |
Типичные ошибки сторон
Спорную версию программы не сохраняют, и после обновления доказать ее свойства невозможно.
Репозиторий переписывают или удаляют после начала спора, и история изменений теряется.
Сравнение программ поручают сотруднику или подрядчику стороны, и суд не принимает такой отчет.
В ходатайстве не просят истребовать исходный код у оппонента, и эксперт работает только с исполняемыми файлами.
Не решают заранее вопрос о режиме коммерческой тайны, и сторона отказывается передавать код.
Ставят эксперту вопрос о нарушении прав, а не о фактах совпадения и происхождения.
Не фиксируют программу конкурента на дату обнаружения, и к моменту суда спорные фрагменты удалены.
Распространенные заблуждения
Заблуждение первое: если интерфейс похож, код скопирован. Похожий интерфейс создается независимо, а скопированный код может скрываться за совершенно другим оформлением. Вывод делается только по коду и структуре.
Заблуждение второе: небольшой процент совпадений доказывает отсутствие заимствования. Важен и объем, и характер: несколько индивидуальных фрагментов с общими ошибками значат больше, чем десятки процентов совпадений в стандартных библиотеках.
Заблуждение третье: свидетельство о регистрации программы доказывает авторство. Регистрация заявительная, орган не проверяет авторство и оригинальность, и свидетельство опровергается другими доказательствами.
Заблуждение четвертое: без исходного кода экспертиза невозможна. Исследование исполняемых файлов дает результат, хотя и менее категоричный. Кроме того, суд может истребовать исходный код у стороны.
Заблуждение пятое: декомпиляция чужой программы всегда незаконна. Статья 1280 Гражданского кодекса допускает ее для достижения взаимодействия программ, а в судебном споре исследование проводится по определению суда.
Заблуждение шестое: эксперт скажет, нарушены ли права. Эксперт устанавливает совпадения, происхождение и даты. Вывод о нарушении делает суд.
Что делать, если вы считаете, что ваш код скопирован
Шаг первый. Зафиксируйте собственный код и его историю: сделайте полную копию репозитория, сохраните даты фиксаций, сборки и релизы, вычислите контрольные значения.
Шаг второй. Зафиксируйте программу, в которой, по вашему мнению, использован ваш код: скачайте доступные версии с указанием источника и даты, сохраните страницы описания, вычислите контрольные значения файлов.
Шаг третий. Получите предварительный анализ специалиста: есть ли признаки совпадения и какие объекты нужны для категорического вывода. При необходимости закажите заключение специалиста.
Шаг четвертый. Соберите документы о правах: трудовые договоры и служебные задания, договоры заказа, акты, документы о регистрации программы.
Шаг пятый. В суде заявите ходатайство об истребовании исходного кода у ответчика и о назначении экспертизы с вопросами о совпадениях, их характере и признаках общего происхождения. Решите вопрос о режиме коммерческой тайны.
Шаг шестой. Получив заключение, проверьте, указаны ли версии, отделены ли типовые совпадения, есть ли фрагменты в приложениях. При дефектах подготовьте рецензию и ходатайство о повторной экспертизе.
Частые вопросы
Что устанавливает программно-компьютерная экспертиза?
Назначение и функции программы, ее состав и происхождение, совпадение кода с другими программами, недокументированные функции и передачу данных, алгоритмы расчета, версии и признаки изменения механизмов лицензирования.
Какие задачи программно компьютерной экспертизы встречаются чаще всего?
Сравнение программ при споре о заимствовании, выявление скрытых функций и передачи данных, проверка алгоритмов расчета, установление версий и лицензионного статуса, определение времени и последовательности создания кода.
Можно ли доказать, что код скопирован?
Да, если сравниваются исходные тексты или хотя бы исполняемые файлы спорных версий. Эксперт устанавливает объем и характер совпадений и признаки общего происхождения. Вывод о нарушении прав делает суд.
Что дает экспертиза исходного кода?
Состав программы, реализованные функции, соответствие кода исполняемой версии, качество кода, историю его создания по системе контроля версий.
Как быть, если у оппонента исходный код, а у нас только его программа?
Заявить ходатайство об истребовании исходного кода. До его получения эксперт может исследовать исполняемые файлы, но выводы будут менее категоричными.
Не раскроется ли наш исходный код в процессе?
Эксперт не раскрывает его за пределами заключения, фрагменты приводятся в минимальном объеме, а стороны вправе ходатайствовать о закрытом рассмотрении в части коммерческой тайны.
Можно ли проверить, правильно ли программа начислила сумму?
Да. Эксперт восстанавливает алгоритм, воспроизводит расчет на спорных данных и показывает, на каком шаге возникает расхождение с договорной методикой.
Сколько стоит программно-компьютерная экспертиза?
Исследование назначения и функций программы и исследование версий и лицензий стоят от 50 000 ₽, исследование алгоритма расчета от 60 000 ₽, выявление недокументированных функций и исследование мобильного приложения от 70 000 ₽, сравнение и экспертиза исходного кода от 80 000 ₽. Точная сумма фиксируется в договоре после бесплатного предварительного анализа.
Сколько стоит экспертиза исходного кода?
От 80 000 ₽, срок 5–15 дней. Цена зависит от объема кода, числа модулей и необходимости собирать программу из исходного текста для сравнения с исполняемой версией.
Сколько стоит сравнение исходного кода двух программ при споре о заимствовании?
От 80 000 ₽, срок 7–14 дней. В работу входят исключение общих библиотек, нормализация текстов, поиск совпадений, их классификация и приложения с фрагментами обеих программ.
Сколько стоит выявление скрытых функций и передачи данных в программе?
От 70 000 ₽, срок 5–10 дней. Эксперт проводит статический и динамический анализ в изолированной среде и сопоставляет поведение программы с документацией и лицензией.
Сколько стоит проверка алгоритма расчета в программе?
От 60 000 ₽, срок 7–14 дней. Эксперт восстанавливает алгоритм, готовит контрольные примеры и воспроизводит расчет на спорных данных.
Сколько стоит рецензия на заключение программно-компьютерной экспертизы?
От 50 000 ₽, срок 4–8 дней. Цена зависит от объема заключения и приложений и от того, нужно ли повторно проверять сравнение кода.
Основные термины
Программа для электронных вычислительных машин: совокупность данных и команд для функционирования компьютеров и других устройств в целях получения определенного результата.
Исходный код: текст программы на языке программирования, понятный человеку.
Объектный код: результат преобразования исходного кода в форму, исполняемую устройством.
Декомпиляция: восстановление исходного текста или его подобия по объектному коду.
Система контроля версий: система, хранящая историю изменений кода с авторами и датами.
Статический анализ: исследование программы без ее запуска.
Динамический анализ: исследование программы в процессе ее работы в контролируемой среде.
Недокументированная функция: возможность программы, не описанная в ее документации.
Сторонний компонент: библиотека или модуль, созданный не разработчиком программы и включенный в нее по лицензии.
Встроенное программное обеспечение: программа, записанная в память устройства и управляющая его работой.
Версия программы: состояние программы на определенный момент, идентифицируемое номером и контрольными значениями.
Изолированная среда: компьютерная среда с контролируемыми соединениями, в которой программа запускается без влияния на внешние системы.
Коротко о главном
Программно-компьютерная экспертиза исследует программу как объект: функции, состав, происхождение, скрытые возможности, алгоритмы, версии. Она не привязана к договору разработки и применяется в спорах о правах, о свойствах продуктов и о последствиях работы программ.
Экспертиза исходного кода дает наиболее полные и категоричные выводы. Если исходного кода нет, исследуются исполняемые файлы, а исходный текст истребует суд. Для защиты кода от раскрытия применяется режим коммерческой тайны.
При сравнении программ эксперт отделяет совпадения за счет общих библиотек и типовых конструкций от индивидуальных и указывает признаки общего происхождения. Вывод о нарушении прав и контрафакте делает суд.
Главное условие — сохранить спорные версии, репозитории с историей и копии программы конкурента на дату обнаружения до того, как они будут изменены.
Об АНО «СЗЭПЦ»
АНО «Северо-Западный экспертно-правовой центр» проводит экспертизы с 1990 года и относится к первым негосударственным экспертным организациям России. Головной офис расположен в Санкт-Петербурге, представительства работают в Москве, Екатеринбурге, Новосибирске, Казани, Краснодаре, Нижнем Новгороде и Ростове-на-Дону. Заключения АНО «СЗЭПЦ» принимают арбитражные суды и суды общей юрисдикции более чем в сорока регионах.
По программно-компьютерной экспертизе АНО «СЗЭПЦ» проводит судебные экспертизы по определениям судов, в том числе комплексные с экспертизой объектов интеллектуальной собственности и экономической экспертизой, готовит заключения специалиста до суда, рецензии на чужие заключения и информационные письма для суда. Штатный юридический отдел помогает сформулировать вопросы, подготовить ходатайство и решить вопрос о режиме коммерческой тайны. Предварительный анализ материалов бесплатный.
Направьте описание задачи на info@szexp.ru или позвоните: +7 (812) 982-86-69 (Санкт-Петербург и Москва), +7 (905) 222-86-69 (регионы Российской Федерации) — АНО «СЗЭПЦ» проведет предварительный анализ и подготовит информационное письмо для суда.
