Бывший сотрудник «Яндекса» Дмитрий Коробов был задержан ФСБ после того, как попытался продать исходный код поисковой системы «Аркадия». Он вынес с работы алгоритмы на внешний носитель, разослал части кода в даркнет и даже предложил его одному из крупных компьютерных ритейлеров. Это не был утечка через хакеров, не техническая уязвимость — просто человек, имевший доступ к репозиторию, скопировал файлы. Ни история коммитов, ни системные журналы не помешали ему это сделать.
Коробов получил условный срок за разглашение коммерческой тайны. Но сама история стала показательным примером: даже в крупнейших IT-компаниях код может быть уязвим не из-за технологий, а из-за отсутствия дополнительных мер защиты. Git, каким бы мощным ни был инструментом для управления версиями, не является ни сейфом, ни юридическим доказательством. Он просто фиксирует, кто и когда вносил изменения в код — и только.
Почему этого недостаточно, какие риски упускают разработчики и почему git версии не обеспечивают безопасность интеллектуальной собственности — разбираем в статье.
Почему истории коммитов в Git могут быть недостаточными для полноценной защиты исходного кода. Рассмотрим, какие риски существуют, и разберем дополнительные меры, которые помогут обеспечить безопасность ваших разработок.
Git — это программа, которую разработчики используют, чтобы отслеживать все изменения в коде. Он позволяет сохранять каждую правку, видеть, кто ее сделал, и возвращаться к любому этапу разработки. Это бесплатная система с открытым исходным кодом, которую можно скачать на официальном сайте git-scm.com. Кроме того, Git встроен в популярные среды разработки, вроде Visual Studio Code или PyCharm. Часто Git используют в связке с онлайн-сервисами вроде GitHub, GitLab или Bitbucket — они позволяют работать с проектами в облаке, делиться кодом, комментировать изменения и управлять доступом. Но у Git есть важное ограничение: он не создан для обеспечения юридической или технической защиты кода. Это не система безопасности, а инструмент управления версионностью.
Разберем, почему просто хранить код в Git — недостаточно.
Git — это инструмент, но не хранилище. Где и как вы его используете, зависит от внешних условий. Если ваш код лежит в открытом репозитории на GitHub или GitLab, и при этом отсутствует настройка доступа или шифрование, он потенциально доступен всем. Даже если репозиторий приватный, он не обеспечивает полный контроль версий git: кто-то из команды может случайно (или намеренно) «слить» доступ, и история коммитов не поможет вам остановить утечку. Система версий git устроена так, что она не спрашивает, кто имеет право видеть или использовать ваш код — он просто хранит то, что в него загружают.
Многие разработчики ошибочно полагают, что история коммитов в Git — это нечто вроде «доказательства авторства». На деле, это не совсем так.
Git не обеспечивает юридически значимой фиксации авторства по российскому законодательству. Внесение изменений в код, даже если в логах указано ваше имя и дата, не приравнивается к официальной регистрации авторских прав. Тем более, что эти данные можно подделать. Git не проверяет, кто вы на самом деле, он просто записывает то, что указано в настройках пользователя — а туда можно вписать любое имя и email.
Многие стартапы или студенты выкладывают свои проекты в открытые репозитории для демонстрации навыков. Это удобно, но несет риски: файлы git репозитория могут быть скопированы, переработаны и представлены кем-то другим как собственная разработка. Git при этом ничего не «заметит», потому что с его точки зрения все законно — пользователь просто скачал проект.
С Git можно делать не только новые коммиты, но и переписывать историю. Это полезно для исправлений, но дает лазейку для фальсификаций.
Командой вроде `git rebase -i` можно «подчистить» или изменить старые коммиты — даже их дату и автора. Существуют и более радикальные методы, такие как `git filter-branch`, позволяющие переписать всю историю проекта. Все это делает Git-логи недостаточным доказательством в случае спора об авторстве или утечке, а систему контроля версий git несовершенной, особенно для юридической защиты.
Git никак не защищает от действий «своих». Если участник команды решил удалить, скопировать или продать код — Git это зафиксирует, но не предотвратит. Если злоумышленник получит доступ к вашему репозиторию, он может унести всю разработку за минуту. Учитывая, что копия Git-репозитория всегда полная (все версии кода скачиваются при клонировании), даже одна утечка может стать фатальной.
Чтобы действительно защитить разработку, одного Git недостаточно. Ниже — список инструментов и подходов, которые повысят безопасность и помогут при необходимости доказать свое авторство.
Git позволяет подписывать коммиты цифровой подписью — с использованием GPG или других криптографических ключей. Это добавляет уровень доверия: можно подтвердить, что именно вы сделали конкретный коммит, и что он не был изменен после этого. Но важно понимать: это не юридическое доказательство авторства. Git управление версиями не включает проверку вашей личности — вы можете подписать коммит любым именем, и в суде это не будет считаться фиксацией прав.
Если проект особенно чувствителен (например, касается финансов, безопасности или коммерческой тайны), его репозиторий стоит хранить в зашифрованном виде. Некоторые организации используют инструменты вроде SOPS или даже полностью шифруют репозитории перед отправкой в удаленное хранилище. Это снижает риск утечки при физическом доступе к устройству или серверу.
Чтобы иметь юридическую защиту, нужно зафиксировать авторство в понятной и признанной форме. Например, можно зафиксировать владение объектом авторского права на конкретный момент времени через онлайн-сервис для охраны и защиты интеллектуальных прав n’RIS. При депонировании сервис фиксирует, кем и что было депонировано, закрепляя все цифровой подписью и штампом даты и времени КриптоПро. Свидетельство о депонировании n’RIS признается всеми судебными инстанциями в России. Такой подход дополняет git работу с версиями, а не заменяет его. Он нужен, если вы хотите, чтобы ваша разработка была не просто «в коммитах», а в юридическом поле.
Наконец, стоит настроить политику доступа: кто и какие действия может выполнять с репозиторием. Все серьезные платформы — GitHub, GitLab, Bitbucket — позволяют ограничить права на чтение, запись, слияние и даже комментирование кода. Для бизнес-проектов важно вести аудит: кто и когда что делал. Есть инструменты, которые ведут логи не только Git-операций, но и действий в интерфейсе (например, кто добавил кого в команду или изменил настройки доступа).
Git — это мощный инструмент, но он не про защиту, а про удобство работы. Он не гарантирует, что ваш код не украдут, не изменят или не присвоят. Чтобы действительно защитить интеллектуальную собственность, стоит использовать сочетание технических и юридических средств: цифровые подписи, контроль доступа, и депонирование через специализированные сервисы, как n’RIS.
Если вы разработчик, стартапер или просто делаете проект, который может стать чем-то большим — не полагайтесь только на историю коммитов. Git не юрист и не охранник, он просто ведет дневник. А дневник, как известно, можно легко подделать.