Проверка временных меток кода без раскрытия исходного кода
Проверка — это момент, когда криптографическое утверждение становится доказательством. Вы можете ставить временную метку на каждый коммит, но если вы не можете проверить эту метку позже, не передавая свой исходный код, система подводит именно тогда, когда она нужна больше всего. Timestamp GIT — это управляемый SaaS и GitHub App, который привязывает хеши Git-коммитов к блокчейну Bitcoin через протокол OpenTimestamps. Доказательство может проверить любой, у кого есть квитанция, но квитанция никогда не содержит ваш код.
Почему проверка важна для временных меток кода
Временная метка хороша ровно настолько, насколько хороша её история проверки. Для подтверждения предшествующего уровня техники вам нужно доказать, что конкретный коммит существовал до конкретной даты. Это доказательство должно работать в двух направлениях: оно должно быть достаточно убедительным для суда или аудитора и достаточно приватным, чтобы вы не раскрывали коммерческую тайну только ради доказательства её существования.
Ключевая идея — проверка с нулевым разглашением: доказать существование, не раскрывая содержимое. Хеш Git-коммита — это односторонний отпечаток состояния репозитория. Сам по себе хеш невозможно обратить в исходный код. Когда этот хеш закреплён в блокчейне Bitcoin, вы получаете публичную, неизменяемую запись о том, что отпечаток существовал в определённый момент времени.
Если вы новичок в этой теме, прочитайте Что такое доказательство существования для программного кода?. Эта статья посвящена стороне проверки: как выглядит доказательство, как его проверить и что означают результаты.
Timestamp GIT автоматизирует базовый протокол, поэтому вам не нужно запускать команды OpenTimestamps или вручную управлять транзакциями Bitcoin. Вы один раз устанавливаете GitHub App, подключаете репозиторий, и каждый коммит пакетно обрабатывается и закрепляется каждую ночь. Проверка затем выполняется через бейджи, публичные страницы статуса и браузерный просмотрщик цепочки Меркла.
Как выглядит доказательство временной метки
Каждый день с закреплением создаёт два основных артефакта в вашем репозитории:
- Файл манифеста (
.txt), в котором перечислены хеши коммитов, включённые в пакет за этот день. - Файл квитанции
.ots, содержащий доказательство OpenTimestamps и данные о привязке к Bitcoin.
Эти файлы отправляются в отдельную ветку timestamps в вашем репозитории или в теневой репозиторий. Они содержат хеши коммитов и данные о привязке — но не исходный код, не содержимое файлов и не метаданные репозитория сверх того, что необходимо для доказательства.
Поскольку квитанция .ots публична и самодостаточна, любой, у кого есть файл, может проверить привязку к блокчейну Bitcoin. Доказательство не зависит от частной базы данных. Timestamp GIT предоставляет веб-верификатор, который выполняет проверки цепочки Меркла локально в вашем браузере, поэтому вы можете проверять без установки программного обеспечения и без раскрытия того, какой репозиторий вы проверяете.
Чтобы сделать проверку наглядной, Timestamp GIT поддерживает встраиваемые бейджи для вашего README. Бейдж ссылается на публичную страницу статуса вашего репозитория. Для приватных репозиториев URL статуса содержит зашифрованный HMAC, чтобы только авторизованные пользователи могли просматривать результат. Сам бейдж может показывать последний закреплённый блок Bitcoin, общее количество отмеченных коммитов или сводную информацию.
Пошаговая проверка с помощью Timestamp GIT
Процесс проверки рассчитан на тех, кто не хочет изучать базовый протокол. Вот обычный путь.
Шаг 1: Установите GitHub App Timestamp GIT на ваш репозиторий
Это одноразовая настройка. В стандартном режиме GitHub App считывает хеш HEAD-коммита из отслеживаемого исходного репозитория. Ему нужен доступ только для чтения к исходному репозиторию, поскольку разрешения GitHub не предоставляют уровень доступа только к хешу коммита, и доступ на чтение и запись к целевому репозиторию, куда будет записана ветка доказательств. В режиме Enterprise ZK короткий GitHub Action выполняется в вашей инфраструктуре и отправляет в API Timestamp GIT только хеш коммита. В этом режиме исходный код никогда не покидает вашу среду.
Шаг 2: Дождитесь ночного закрепления
Хеши коммитов обнаруживаются автоматически. Каждую ночь воркер группирует ожидающие хеши, создаёт файлы манифестов, строит дерево Меркла, создаёт доказательства OpenTimestamps с использованием публичных календарей OTS и закрепляет корень Меркла в блокчейне Bitcoin. Подтверждение Bitcoin обычно занимает около трёх часов после ночного пакета, поэтому коммит, сделанный сегодня, обычно можно проверить на следующий день.
Шаг 3: Используйте бейдж или страницу статуса
Для публичных репозиториев посетите страницу статуса:
https://timestampgit.dev/status/{user}/{repo}
Эта публичная панель показывает долговечность доказательства, дату самого раннего закрепления, ежедневную регулярность, данные о блоках и транзакциях Bitcoin, а также календарную тепловую карту. Она также содержит ссылки на скачиваемые отчёты: CSV-журнал аудита и PDF-сертификат.
Вы также можете напрямую запросить API статуса:
# Информация о последнем закреплённом блоке Bitcoin
curl -s https://timestampgit.dev/api/statusLast/acme/webapp
# Общее количество закоммиченных/отмеченных коммитов
curl -s https://timestampgit.dev/api/statusCount/acme/webapp
# Сводная информация для бейджей Shields.io
curl -s https://timestampgit.dev/api/statusSummary/acme/webapp
Замените acme/webapp на ваше имя пользователя или организацию GitHub и название репозитория. Для приватных репозиториев аутентифицированный эндпоинт GET /api/badgeLink/{user}/{repo} возвращает URL бейджей и фрагменты Markdown с добавленным зашифрованным HMAC.
Шаг 4: Откройте страницу проверки для конкретного дня
Для подробного, пошагового доказательства по цепочке Меркла откройте:
https://timestampgit.dev/verification/{user}/{repo}/{date}
Эта страница выполняет вычисления проверки локально в вашем браузере. Она показывает многоуровневую цепочку Меркла от хеша вашего коммита до закреплённого корня Меркла и блока Bitcoin. Поскольку вычисления локальны, сервис не видит, что именно вы проверяете.
Шаг 5: Скачайте официальные записи
Со страницы статуса или через API вы можете скачать:
- CSV-журнал аудита за всю историю:
GET /api/audit/{user}/{repo} - PDF-сертификат для конкретной даты:
GET /api/report/{user}/{repo}/{date}
Они полезны для юридических архивов и архивов соответствия требованиям. PDF-сертификат даёт читаемую для человека запись, а CSV — полный аудиторский след.
Если вам нужны базовые данные проверки, эндпоинт GET /api/verify/{user}/{repo}/{date} возвращает полные данные цепочки Меркла для локальной проверки.
Интерпретация результатов проверки и пограничные случаи
Успешная проверка означает одно: хеш коммита был включён в дерево Меркла, корень которого был закреплён в конкретном блоке Bitcoin в конкретное время. Как только блок подтверждён, временная метка становится неизменяемой. Ни одна сторона — включая Timestamp GIT — не может изменить или подделать её.
Есть несколько пограничных случаев, которые стоит понимать.
Ожидающие закрепления
Сразу после коммита доказательства ещё не существует. Timestamp GIT пакетно обрабатывает и закрепляет хеши каждую ночь. Подтверждение Bitcoin обычно занимает около трёх часов после запуска ночного воркера. В течение этого окна страница статуса может показывать пакет как ожидающий. Как только транзакция подтверждена, доказательство сразу становится проверяемым.
Приватные репозитории
Для приватных репозиториев публичные URL статуса и проверки не являются открыто доступными. Система добавляет зашифрованный HMAC, специфичный для экземпляра сервера. Только авторизованные пользователи с полным подписанным URL могут просматривать страницу статуса или проверки. Это сохраняет имя репозитория и метаданные коммитов приватными, при этом позволяя назначенным аудиторам проверять доказательство.
Независимость от серверов Timestamp GIT
Проверка не требует, чтобы Timestamp GIT оставался в сети. Доказательство опирается на данные блокчейна Bitcoin. Вы можете скачать файл .ots и использовать стандартные инструменты проверки OpenTimestamps против блокчейна Bitcoin, если предпочитаете сложный путь. Браузерный верификатор Timestamp GIT — это управляемая версия той же самой проверки.
Потерянные файлы .ots
Квитанция .ots и файлы манифеста хранятся в отдельной ветке timestamps или в теневом репозитории. Если вы потеряли локальную копию, скачайте её заново из ветки. Доказательство можно восстановить из того же места в Git, куда сервис его изначально записал.
Проверка без раскрытия исходного кода: преимущество нулевого разглашения
Самое большое заблуждение о временных метках кода — что сервис должен видеть ваш код, чтобы доказать его существование. Timestamp GIT этого не делает.
В стандартном режиме GitHub App считывает только хеш HEAD-коммита. Он никогда не читает, не копирует и не хранит ваш исходный код. В режиме Enterprise ZK GitHub Action выполняется в вашей инфраструктуре и отправляет в API Timestamp GIT только хеш. В этом режиме Timestamp GIT не нужен доступ на чтение к исходному репозиторию. Это делает режим Enterprise ZK подходящим для сред с высокой чувствительностью.
Третья сторона — аудитор, оппонент в суде или суд — может проверить временную метку без предоставления вами доступа к репозиторию. Вы предоставляете файл .ots или подписанный URL проверки, и они могут проверить доказательство против блокчейна Bitcoin. Они видят криптографическое доказательство, а не исходный код.
Подробности настройки двух режимов развёртывания см. в статье Автоматизация временных меток кода с помощью GitHub App.
FAQ
Могу ли я проверить временную метку без установки чего-либо?
Да. Timestamp GIT предоставляет веб-страницу проверки, где вы можете использовать файл .ots или публичную страницу статуса. Все вычисления выполняются локально в вашем браузере, поэтому установка программного обеспечения не требуется.
Требует ли проверка раскрытия моего исходного кода?
Нет. Проверка использует только хеш коммита и квитанцию .ots, которые не содержат исходного кода. Архитектура с нулевым разглашением гарантирует, что ваш код остаётся приватным.
Сколько времени нужно, чтобы временная метка стала проверяемой?
Временные метки закрепляются каждую ночь, а подтверждение Bitcoin обычно занимает около 3 часов. После подтверждения доказательство сразу становится проверяемым.
Что делать, если я потерял файл квитанции .ots?
Файл .ots хранится в отдельной ветке вашего репозитория или в теневом репозитории. Вы можете в любой момент скачать его оттуда заново.
Заключение
Проверка — это то, что делает криптографические временные метки полезными. Доказательство, которое нельзя проверить, — не доказательство. Timestamp GIT делает путь проверки практичным: установите GitHub App один раз, позвольте коммитам закрепляться каждую ночь, а затем используйте бейджи, страницы статуса и локальную браузерную проверку, чтобы продемонстрировать, когда ваш код существовал — не раскрывая при этом исходный код.
Настройте свой первый репозиторий на Timestamp GIT.
Связанные статьи
- Что такое доказательство существования для программного кода?
- Как доказать, что ваш код существовал до подачи патентной заявки
- Временные метки Git-коммитов для защиты от патентных троллей
- Автоматизация временных меток кода с помощью GitHub App