Криптография
Цифровые подписи
Bitcoin Taproot (ноябрь 2021): после 3 лет разработки в Bitcoin добавили Schnorr-подписи. Мультиподпись 2-of-3 теперь неотличима от обычной транзакции. Это улучшило приватность Lightning Network и снизило комиссии. Математика из 1989 года меняет финансовую инфраструктуру.
- **Bitcoin Taproot**: BIP 340 Schnorr, BIP 341 Tapscript, BIP 342 Taproot. Мультиподписи через MuSig2 неотличимы от одиночных - privacy + меньше данных в blockchain.
- **Privacy Pass**: RFC 9576 (2024). Cloudflare и Apple используют для анонимных проходов CAPTCHA. Пользователь получает токены без раскрытия идентичности.
- **Signal PNI**: Private Name Identifier использует слепые подписи для discovery контактов без раскрытия телефонной книги Signal серверам.
- **FIPS 186-5 (2023)**: NIST обновил стандарт, добавив Ed25519 и Ed448. DSA с 1024-битными параметрами официально выведен из использования.
DSA: алгоритм цифровой подписи NIST
DSA (Digital Signature Algorithm, FIPS 186, 1994) - стандарт NIST для цифровых подписей. Работает в подгруппе мультипликативной группы Z/pZ порядка q. Подпись (r, s) с случайным k имеет те же уязвимости к повтору k, что и ECDSA.
DSA 1024 (L=1024, N=160) считается сломанным по сегодняшним стандартам. NIST рекомендует DSA 2048/224 или 3072/256. На практике все новые системы используют ECDSA P-256 или Ed25519 - они компактнее и быстрее при той же безопасности.
Чем DSA принципиально отличается от RSA-подписи?
Подписи Шнорра: минималистичная конструкция
Схема Шнорра (1989) - одна из простейших и красивейших подписей. Патент Шнорра истёк в 2008 году, после чего началось широкое внедрение. Schnorr подписи линейны: это позволяет создавать мультиподписи и агрегацию подписей.
Bitcoin Taproot (2021) добавил Schnorr подписи (BIP 340) для замены ECDSA. Преимущество: мультиподписи нескольких участников выглядят как одна обычная подпись - нет информации о числе подписантов. Экономит место в блокчейне и улучшает приватность.
Почему линейность Schnorr-подписей делает их лучше ECDSA для мультиподписей?
Мультиподписи и агрегация
Мультиподпись (multisignature): несколько сторон совместно создают одну подпись, верифицируемую одним ключом. MuSig2 (2021) - безопасная Schnorr-мультиподпись для двух и более участников без доверенного координатора.
Bitcoin Lightning Network использует мультиподписи для payment channels: 2-of-2 multisig для открытия/закрытия канала. Taproot делает мультиподписи неотличимыми от обычных на блокчейне - улучшает приватность и снижает комиссии.
Зачем MuSig2 использует коэффициенты H(X1,X2) и H(X2,X1) при агрегации ключей?
Слепые подписи: приватность без доверия
Слепая подпись (Chaum, 1982): получатель 'ослепляет' сообщение перед отправкой подписанту. Подписант подписывает, не видя содержимое. Получатель 'снимает слепоту' и получает валидную подпись. Подписант не может связать подписанное сообщение с конкретным запросом.
Privacy Pass (Cloudflare, Apple): слепые подписи для анонимных токенов. Пользователь получает токены без Cloudflare зная какие конкретно токены выданы этому пользователю. При предъявлении токена Cloudflare не может связать его с оригинальным запросом.
Zcash использует криптографию схожую со слепыми подписями для shielded транзакций. Signal использует слепые подписи для Private Contact Discovery. Apple Pay использует tokenization - близкая идея, хотя реализация через HSM, а не криптографические слепые подписи.
Цифровая подпись = аутентификация. Если кто-то имеет подписанный документ, он аутентифицирован
Подпись подтверждает что владелец приватного ключа создал подпись в момент подписания. Нужна ещё PKI-цепочка для связи ключа с личностью, временная метка и проверка отзыва сертификата
Угнанный ключ даёт злоумышленнику способность создавать 'аутентичные' подписи. Поэтому существуют CA, отзыв сертификатов (CRL/OCSP) и timestamp-серверы.
Почему банк не может отследить, какую 'купюру' Alice потратила, используя схему слепых подписей?
Итоги
- **DSA**: стандарт NIST на DLP в подгруппе. Уязвим к повтору k (как ECDSA). Заменяется ECDSA/EdDSA во всех новых системах.
- **Schnorr**: линейность s = k + e*x позволяет агрегацию подписей. Bitcoin Taproot. Детерминированный k через Ed25519 устраняет нужду в PRNG.
- **MuSig2**: n участников -> одна Schnorr-подпись. Неотличима от одиночной. Защита от rogue-key атаки через хэш-коэффициенты.
- **Слепые подписи**: подписант не знает что подписывает. Приватность платежей (e-cash), анонимные токены (Privacy Pass), Signal PNI.
Связанные темы
Цифровые подписи - основа доверия в интернете:
- ECC на практике — ECDSA и Ed25519 - доминирующие схемы подписей. EdDSA решает проблему PRNG через детерминированный nonce.
- PKI и сертификаты — TLS-сертификат содержит публичный ключ и подпись CA. Цепочка подписей устанавливает доверие к серверу.
- Zero-Knowledge Proofs — Schnorr-протокол - интерактивный ZKP знания приватного ключа. Fiat-Shamir преобразует его в неинтерактивную подпись.
Вопросы для размышления
- Threshold signatures (t-of-n) vs multisig in script: какие преимущества у каждого подхода для Bitcoin кошелька?
- Privacy Pass токен: Cloudflare подписал ваш токен и не может связать его с вашим аккаунтом. Как это работает при предъявлении токена другому серверу Cloudflare?
- Если DSA/ECDSA требуют случайный k, а EdDSA детерминирован - почему ECDSA всё ещё широко используется а не заменён везде?