ELI5 · Часть 7 из 7
Почему стандарт сохраняется надолго

Подтверждение существования, сделанное сегодня, может понадобиться и через тридцать лет. Представьте научное открытие, чьё право называться первым должно подтверждаться десятилетия спустя, или архив договоров, который кому-то предстоит проверить много лет спустя, когда подписавших их давно нет рядом. Такому подтверждению «работает сегодня» — мало. Оно должно работать и дальше, в будущем, которого сейчас никому не разглядеть.
И это настоящая проблема, потому что математика, на которой держатся эти подтверждения, не стоит на месте.
Хорошие методы не остаются хорошими вечно
В основе каждого криптографического метода лежит вычисление, которое легко выполнить, но практически невозможно обратить. Со временем случаются две вещи. Компьютеры становятся быстрее, а исследователи — изобретательнее, и метод, ещё вчера казавшийся незыблемым, мало-помалу слабеет. А ещё то и дело появляются совсем новые методы, более стойкие, чем всё, что было до них.
Поэтому любой честный стандарт упирается в неудобную истину: лучший метод сегодня не останется лучшим навсегда. Новый, более стойкий, рано или поздно придёт ему на смену.
Почему жёсткая привязка к одному методу — ловушка
Представьте стандарт, который попросту велит: «всегда использовать этот конкретный метод». Работал бы он прекрасно — ровно до тех пор, пока этот метод не ослабнет. И вот вы в тупике. Чтобы перейти на что-то получше, пришлось бы переписать правила, уговорить всех переключиться в один и тот же день и как-то разобраться с каждым подтверждением, сделанным по старым правилам. Подобный момент «все меняются разом» — как раз то, что обрывает историю и подвешивает старые записи. Стандарт такого устройства тихо истлевает с самого выпуска.
Label 309 обходит эту ловушку стороной — попросту не называя с самого начала ни одного жёстко заданного метода.
Каталог, который постоянно пополняется
Вместо того чтобы закладывать один метод в самую основу, Label 309 ссылается на каждый метод по имени из открытого списка — реестра. Представьте каталог деталей. Каждое подтверждение существования записывает, из каких «деталей» оно собрано — какой метод вычислил отпечаток, какой выполнил запечатывание, какой поставил подпись, — и записывает именно по имени.
Под каждый вид деталей — свой каталог (один для хешей, один для запечатывания, один для подписей и так далее), и любое изменение в нём — строго добавление:
- новый метод должен быть настоящим опубликованным стандартом с публичной ссылкой (RFC, публикация NIST и тому подобное) — самодельная криптография не допускается;
- он получает в каталоге новое имя вместе с тестом, который точно фиксирует его поведение.
Когда подоспеет более стойкий метод, вы не рвёте каталог и не перепечатываете старые страницы. Вы подшиваете новую страницу. Старые остаются ровно там, где были, и так навсегда. И вот что здесь по-настоящему изящно: каждое когда-либо сделанное подтверждение хранит исходные детали на своей собственной странице. Поднимите старое подтверждение — и каталог по-прежнему точно подскажет, как его проверить, ведь его детали никуда не делись, к ним лишь добавились более новые.
Так одновременно остаются верными два утверждения:
- Старые подтверждения продолжают проверяться. Подтверждение, сделанное годы назад, по-прежнему называет методы, которые есть в каталоге, а значит, сегодня проверяется так же, как в день создания.
- Новые подтверждения могут брать новейший метод. Тот, кто делает свежее подтверждение, просто выбирает из списка имя поновее.
Никакого «дня Х», когда всем надо переключиться разом. Никаких разрывов в истории и никакой суеты с переводом горы старых записей. Изменение — это чистое добавление, новая запись в списке, и никогда не замена. Оно даже не меняет версию формата: верификатор, в жизни не слышавший о новом имени, просто спокойно ответит «этот метод я пока не поддерживаю» — а не упадёт с ошибкой и не примется гадать.
Как происходит и квантовый переход
Вы, возможно, слышали, что мощные новые компьютеры когда-нибудь смогут взломать часть нынешней криптографии. (Этому посвящена отдельная статья: Защита от квантовых компьютеров.) Что обнадёживает: защита от этого не требует в Label 309 никакого особого плана спасения — это тот же самый ход, что и любое другое улучшение, — внести в каталог новый, устойчивый к квантовым атакам метод. Собственно, однажды так уже и случилось: постквантовый метод запечатывания добавили рядом с классическим, и теперь новые записи тянутся к нему уже сегодня, а старые живут себе дальше без изменений. Угроза, от которой словно бы требовалась перестройка с нуля, оборачивается всего лишь ещё одной страницей в каталоге.
Создан, чтобы пережить собственные методы
Методы внутри любого подтверждения рано или поздно выйдут из обращения — это нормально, и Label 309 этого ожидает. Долговечен сам каталог: открытый набор реестров, в которые только добавляют и где каждое подтверждение навсегда сохраняет свои исходные детали. О том, как реестры растут, не бросая позади ни одного старого подтверждения, — в разделе реестры алгоритмов.