Только в образовательных целях; не является инвестиционным советом или инвестиционной рекомендацией. Инвестиции могут привести к убыткам.
Краткий ответ
Подпись Boneh-Lynn-Shacham — цифровая подпись на основе спаривания. В распространенной ориентации секретный ключ sk создает публичный ключ PK = sk * G1; сообщение m отображается в H(m) в группе G2; подпись sig = sk * H(m) проверяется равенством e(PK, H(m)) = e(G1, sig). Конкретные группы, кодировки, набор hash-to-curve и разделение доменов являются параметрами ciphersuite, а не взаимозаменяемыми обозначениями.
BLS обладает необычным эксплуатационным преимуществом: действительные подписи можно сложить в один элемент группы постоянного размера. Это сжимает подписи, но не список подписантов, не доказывает quorum, не определяет уполномоченных валидаторов, не предотвращает equivocation и не обеспечивает финальность консенсуса. Эти свойства задает окружающий протокол.
Как это работает
- Зафиксируйте протокол, ciphersuite и версию: кривую, группы публичного ключа и подписи, сериализацию, функцию hash-to-curve, тег разделения домена и построение корня сообщения. Не выводите совместимость только из названия BLS.
- Создайте
skустановленной процедурой генерации ключей и получитеPK. Отклоняйте ноль, бесконечность, поврежденные, неканонические кодировки и точки неверной подгруппы согласно точным правиламKeyValidateи десериализации. - Сформируйте точные bytes сообщения и домен подписи. В консенсусе Ethereum корень подписи связывает корень объекта SSZ с доменом, выведенным из типа операции и данных fork; отображаемый текст не является подписанным объектом.
- Подпишите и индивидуально проверьте выбранной схемой. Basic, дополнение сообщения и proof-of-possession по-разному защищаются от rogue key, поэтому их нельзя произвольно смешивать.
- Выберите агрегатный верификатор по шаблону сообщений. Применяйте
FastAggregateVerifyтолько к нескольким проверенным публичным ключам, подписавшим одно сообщение, при требуемых предпосылках proof-of-possession; для разрешенного схемой списка ключей и сообщений используйтеAggregateVerify. - Независимо восстановите набор подписантов из данных комитета или participant bitlist, отклоните дублирующиеся и неуполномоченные индексы, примените веса stake или threshold, затем проверьте агрегат. Действительная агрегированная подпись аутентифицирует переданный набор, но не решает, удовлетворяет ли он политике.
- Сверьте результат с fork choice, условиями slashing, quorum, availability, временем и finality. Сохраните входные bytes, домены, индексы подписантов, версию реализации и test vectors и сравните независимые библиотеки до развертывания.
Разобранные примеры
- Сжатие не устраняет данные о составе. В консенсусе Ethereum публичный ключ BLS занимает
48 bytes, подпись —96 bytes. Для512отдельных подписей одного сообщения требуется512 * 96 = 49,152 bytes. Одна агрегированная подпись и participant bitlist размером512-bit = 64-byteзанимают96 + 64 = 160 bytes: сокращение на49,152 - 160 = 48,992 bytes, или99.6744791667%. Публичные ключи валидаторов и соответствие комитету все равно должны быть доступны отдельно. - Агрегация одного сообщения. Зарегистрированные валидаторы
17,24и91подписывают одинаковый кореньR. Их подписи складываются какsigAgg = sig17 + sig24 + sig91. Проверка использует упорядоченный проверенный набор[PK17, PK24, PK91], тот жеRиFastAggregateVerify. Действительный результат доказывает, что эти ключи подписалиRв рамках схемы; отдельное правило определяет их вес и составляет ли три подписанта quorum. - Разным сообщениям нужен правильный API. Ключи
PK1,PK2иPK3подписывают разные сообщенияm1,m2иm3. Верификатор должен сохранить пары[PK1, m1],[PK2, m2],[PK3, m3]и вызвать применимыйAggregateVerify; замена входов одним сообщением иFastAggregateVerifyпроверяет другое утверждение. В схеме Basic сообщения также должны различаться. - Агрегация не является threshold-подписью. В группе из
8участников обычная агрегация подписей членов[1, 2, 4, 6, 8]дает одну подпись и список из пяти подписантов. Она не превращается в threshold-подпись5-of-8под одним групповым публичным ключом. Настоящей threshold-BLS нужны распределенная генерация ключа либо доверенный дилер, индексы долей и правила интерполяции; ее предпосылки доверия и отказа проверяются отдельно.
Риски
- Использование кривой, ориентации групп или ciphersuite, отличающихся от протокола.
- Подписание разных сериализованных bytes при одинаковом читаемом сообщении.
- Пропуск домена fork, операции или приложения, допускающий replay между контекстами.
- Восприятие истекшего Internet-Draft как неизменного окончательного стандарта.
- Принятие поврежденных, неканонических кодировок или точки бесконечности.
- Пропуск проверок подгруппы и принятие точек неверной кривой или малой подгруппы.
- Самодельный hash-to-curve вместо указанного набора и test vectors.
- Генерация смещенных, нулевых, повторных, раскрытых или предсказуемых секретных ключей.
- Повторное использование ключа в протоколах с разными предпосылками proof-of-possession и домена.
- Агрегация незарегистрированных публичных ключей без требуемой защиты от rogue key.
- Быстрая проверка одного сообщения для разных сообщений или несовпадающих корней.
- Перестановка, дублирование или пропуск связи публичного ключа с сообщением.
- Доверие participant bitlist без проверки членства в комитете и уникальности индексов.
- Подсчет подписей вместо установленных протоколом stake, веса или threshold.
- Предположение, что агрегат указывает, какая индивидуальная подпись неверна.
- Смешение обычной агрегации, multisignatures и threshold signatures.
- Восприятие действительной подписи как доказательства availability, правильности исполнения или finality.
- Игнорирование equivocation, наказуемых сообщений, временных окон или контекста fork choice.
- Зависимость от одной библиотеки, функции CPU или непроверенной оптимизации batch verification.
- Недооценка стоимости спаривания, DoS-входов, побочных каналов, хранения ключей, обновлений и отсутствия постквантовой защиты.
Распространенные заблуждения
- Агрегированная подпись доказывает участие каждого валидатора.
- Любые публичные ключи и подписи BLS можно безопасно объединить без правил proof-of-possession.
- Агрегация постоянного размера устраняет передачу или восстановление состава подписантов.
- Агрегация BLS и threshold BLS — одна конструкция.
- Действительная подпись BLS делает блок, сообщение моста или протокол экономически безопасным и финальным.
Связанные темы
Источники
- BLS Signatures - Internet Research Task Force (accessed: 2026-08-12)
- RFC 9380: Hashing to Elliptic Curves - RFC Editor (accessed: 2026-08-12)
- Short Signatures from the Weil Pairing - Springer (accessed: 2026-08-12)
- Ethereum Proof-of-Stake Consensus Specifications - Ethereum Foundation (accessed: 2026-08-12)
- Phase 0 Beacon Chain Specification - Ethereum Foundation (accessed: 2026-08-12)
- Ethereum Annotated Specification: BLS Signatures - Ethereum Foundation (accessed: 2026-08-12)
- EIP-2537: Precompile for BLS12-381 curve operations - Ethereum Improvement Proposals (accessed: 2026-08-12)
- Consensus mechanisms - Ethereum.org (accessed: 2026-08-12)