Последние годы в мире активно развивается технология блокчейн,
которая представляет собой распределенную архитектуру, состоящую из
множества равноправных узлов. Узлы в свою очередь осуществляют
обмен информацией в виде транзакций, содержащих информацию как о
движении ценностей, так и о выполнении смарт-контрактов. При этом
сама технология обеспечивает группировку этих транзакций в блоки,
выработку консенсусов с целью включения блоков в существующие
последовательности, выбор единственно верной цепочки блоков
(блокчейн) и обеспечение распространения верной цепочки блоков
между всеми узлами.
Технология блокчейн позволяет обеспечить наличие в каждом узле
корректной цепочки блоков, что также можно назвать технологией
распределенного реестра.
По сути блокчейн или цепочка блоков представляет собой непрерывно
актуализируемый реестр, хранящий в открытом виде всю информацию о
транзакциях (движении ценностей и операций с ними) и позволяющий
проследить полную историю возникновения и передачи ценностей между
участниками. В единстве с наличием в каждом узле корректной цепочки
блоков это позволяет обеспечить для участников системы неизменность
и прозрачность содержащейся в таком распределенном реестре
информации.
При этом нужно учитывать, что далеко не каждый участник,
использующий функциональность технологии распределенного реестра,
хочет афишировать состав, качество и количество своих ценностей,
операции, проводимые с ними, или участников таких операций. Для
решения задачи по обеспечению конфиденциальности указанной
информации в различных системах, основанных на технологии
распределенного реестра, можно рассмотреть применение технологии,
использующей Протокол с нулевым разглашением секрета.
А что же в банковской сфере? С точки зрения АО Россельхозбанк
технология распределенных реестров с реализацией Протокола с
нулевым разглашением секрета может быть полезной при организации
электронного взаимодействия между банками.
Указанное решение обладает следующим набором преимуществ:
хранение информации о ценностях и операциях с ними без разглашения
содержимого такой информации (конфиденциальность);
высокая скорость проведения операций;
относительная простота при реализации масштабируемости системы на
основе технологии распределенного реестра в зависимости от
потребностей участников;
высокая отказоустойчивость при осуществлении хранения
информации.
Предлагаем подробнее остановиться на решении, предполагающем
использование Протокола с нулевым разглашением секрета, так как по
нашему мнению именно этот ключевой элемент определяет потенциал
применения технологии распределенного реестра в банковской
сфере.
Особенности использования Протокола с нулевым разглашением
секрета
Протокол с нулевым разглашением секрета является протоколом
строгой аутентификации. В его работе используется пара открытого и
закрытого ключа, а используется он для аутентификации пользователей
без разглашения какой-либо секретной информации. Подобные протоколы
применимы для обеспечения информационной безопасности во многих
сферах современных информационных технологий. Помимо этого
существуют варианты использования протоколов с нулевым разглашением
секрета для построения механизма электронной подписи либо для
повышения её криптостойкости перед атаками злоумышленников.
Протоколы с нулевым разглашением секрета принадлежат к протоколам с
открытым ключом. Протокол построен на повторении раундов,
включающих определенные действия. В процессе его работы раунд
выполняется за 3 шага. Первые 2 шага в качестве входных значений
используют случайные значения. Сторона, которую проверяют,
называется
Доказывающий, а сторона, которая проверяет
называется
Проверяющий.
Шаги раунда:
1. Доказывающий производит генерацию одноразового секретного ключа,
а также одноразового открытого ключа, который затем отправляет
Проверяющему;
2. Проверяющий получает одноразовый открытый ключ от Доказывающего
и затем производит генерацию случайного бита, который затем
посылает Доказывающему;
3. Доказывающий получает бит информации и производит над ним
вычисления.
Получившийся результат Доказывающий отправляет Проверяющему для
проверки.
Во всех раундах проверки вероятность правильного ответа равна 50 %,
то есть в каждом раунде Доказывающий может обладать знанием истины
с вероятностью 50 %.
Чтобы добиться нужной точности, следует увеличивать количество
таких раундов, тем самым достигнув необходимой вероятности, при
который Доказывающий будет считаться авторизованным.
Основными проблемами при использовании протоколов с нулевым
разглашением секрета являются:
1. Требуемая длина открытого ключа;
2. Уверенность в том, что секрет не был разглашен каким-то другим
способом.
Рассмотрим теоретическую составляющую нескольких протоколов с
нулевым разглашением секрета и составим сравнительную таблицу их
характеристик.
Протокол zkSNARKs
zkSNARKs означает неинтерактивный аргумент знания с нулевым
разглашением.
Эта форма криптографии, которая позволяет человеку доказать, что он
является владельцем определенного набора данных, не обязательно
раскрывая его. Эта система включает только две стороны: проводников
и верификаторов. Проводник доказывает, что определенный элемент,
информация или слово существуют и правильны, не раскрывая, что это
за элемент или информация.
В этом смысл нулевого знания.
Процесс, который включили в доказательство и утверждение информации
является быстрым и может быть подтвержден в доли секунды даже для
программ с большими объемами данных.
Для работы протокол должен удовлетворять основным требованиям
нулевого разглашения секрета.
Например, был создан смарт-контракт. Пользователь сможет получить
платеж, если сделает определенные действия. Что делать, если
пользователь не хочет раскрывать детали, потому что они являются
конфиденциальными и секретными для конкурентов?
Для этого используется протокол с нулевым разглашением
zkSNARKs, который доказывает, что шаги были исполнены
согласно условиям смарт-контракта, не раскрывая, что это за
действия. Он может просто показать часть процесса, не показывая
весь процесс, и доказать, что пользователь честен.
zkSNARKs состоит из 3 алгоритмов:
G,
P и
V.
Генератор (C программа, input, которая не должна раскрываться
(конфиденциально)):
(pk,vk) = G(,C)
Доказывающий (x общедоступный input, w секретное заявление, которое
нужно доказать, но не рассказывать):
= P(pk,x,w) доказательство prf
Проверяющий:
V(vk,x,) == ( w s.t.C(x,w)) true или false
G является генератором ключей, принимающим input (который не
должен раскрываться ни при каких обстоятельствах) и программу C.
Затем генерируется два общедоступных ключа:
ключ проверки pk
(для пруфера) и
доказательный ключ vk (для верификатора).
Эти ключи являются доступными для любой из заинтересованных
сторон.
P это тот, кто будет использовать 3 элемента в качестве
входных данных. Проверяющий ключ pk, случайный input x, который
является общедоступным, и заявление, которое нужно доказать, но не
рассказывать, что это на самом деле. Назовем этого оператора w.
Алгоритм P порождает доказательство
prf такое, что:
prf =
P (pk,x,w).
Алгоритм верификатора V возвращает логическую переменную.
Логическая переменная имеет только два варианта: она может быть
TRUE (правда) или
FALSE (ложь). Итак, верификатор
принимает ключ, input X и доказательство prf в качестве входных
данных, таких как:
V(vk,x,prf). А затем определяет, правда
это или ложь.
Стоит отметить, что параметр , используемый в генераторе, иногда
затрудняет использование
zkSNARKs в реальных приложениях.
Причина этого в том, что любой, кто знает этот параметр, может
генерировать поддельные доказательства. Поэтому необходимо, чтобы
значение
было конфиденциальным.
Таким образом, запуск генератора должен являться безопасным
процессом, защищенным от того, чтобы кто-то мог узнать или украсть
параметр .
Протокол zkSTARKs
В
zkSTARKs отсутствует фаза внешней доверенной установки, и
используемая случайность является общедоступной информацией.
Публичное использование случайности исключительно важно для
общественности, чтобы доверять системам с нулевым знанием, иначе
могущественный объект мог бы оказать свое влияние, чтобы получить
параметры настройки и генерировать ложные доказательства. Поскольку
не существует сторонней фазы доверительной настройки и вместо нее
используется общедоступная проверяемая случайность, системы
zkSTARKs создают проверяемое доверие.
zkSTARKs не полагаются на пары закрытых и открытых ключей
(такие как
ECDSA), но полагаются на хеширование для
интерактивных решений, устойчивое к столкновениям,, и случайную
модель оракула (которая обычно используется вместо общих
криптографических хеш-функций, где для вывода оракула требуются
строгие предположения о случайности) для неинтерактивных
доказательств (
zknSTARKs, n = неинтерактивный), поэтому
zkSTARKs могут быть устойчивы к атакам квантовых
компьютеров.
Протокол
zkSTARKs является масштабируемым, прозрачным, имеет
универсальное применение и может быть устойчивым к квантовым
воздействиям. Это позволяет создать доверие к технологии, поскольку
поддается проверке. Есть много областей, которые могут быть
улучшены с помощью таких технологий, как
zkSTARKs, где
требуется доверие и существуют большие стимулы для обмана,
например:
системы голосования;
выполнение вычисления и проверка его результатов, таких как прошлые
транзакции в распределённых реестрах;
безопасная проверка информации, например, для подтверждения
личности или учетных данных.
Можно выделить четыре категории, связанные с масштабируемостью
(результаты, полученные из документа
zkSTARKs):
1. Сложность арифметической схемы (в системах
zkSNARK и
zkSTARK код для создания программ
zk написан таким
образом, чтобы они могли разбить на схемы, а затем вычислить
фактически сложность схемы выше ее вычислительной
эффективности;
2. Сложность связи (по мере роста объема вычислений растет и
сложность связи
zkSNARK линейным способом, в отличие от
zkSTARKs, который растет незначительно с ростом размера
вычислений);
3. Доказательная сложность (
zkSTARKs по сравнению с
zkSNARK примерно в 10 раз быстрее, чем размер
вычислений);
4. Сложность верификатора (По мере роста объема вычислений zkSTARKs
растут лишь незначительно по сравнению с
zkSNARK, которые
имеют тенденцию к линейному росту, что является существенным
преимуществом
zkSTARKs по сравнению с
zkSNARK, когда
дело доходит до установки времени).
Протокол
zkSTARKs планировали использовать в
Ethereum
в проверяемых вычислениях и потенциально безопасных / анонимных
транзакциях, а также в приложениях Dapps, где важна
конфиденциальность, таких как веб-браузер Brave, использующий токен
Basic Attention.
Существует новая компания под названием
StarkWare
Industries, которая стремится решить некоторые проблемы с
использованием ZK-STARK (одной из которых является размер
доказательства), а также коммерциализировать технологию, которая
может быть использована во многих отраслях, включая реализации
систем распределённых реестров.
Технология Bulletproofs
Подразделение разработок распределённых реестров банка ING
экспериментирует с технологией Bulletproofs (в переводе с англ.
пуленепробиваемый), которая ориентирована на конфиденциальность и
основана на современных криптографических алгоритмах.
Технология Bulletproofs основана на работах Джонатана Бутла
(Jonathan Bootle) и других авторов от 2016 года, посвященных
повышению эффективности использования дискретного логарифмирования,
которое лежит в основе доказательства с нулевым разглашением. и
представляет собой более эффективную форму этого самого
доказательства.
Важно, что
Bulletproofs имеет встроенную поддержку открытых
ключей и
обязательств Педерсена (криптографический примитив,
который позволяет зафиксировать какое-либо выбранное значение,
сохраняя его скрытым для других, с возможностью позже раскрыть
зафиксированное значение). Это дает нам возможность реализовать
доказательства диапазона на общих принципах нулевого разглашения
без осуществления тяжелых машинных расчетов эллиптических
кривых.
Доказательства
Bulletproofs представлены в гораздо более
общем виде, нежели доказательства диапазона и могут использоваться
для произвольных утверждений с нулевым знанием. По своей
эффективности технология сопоставима с
zkSNARKs или
zkSTARKs, но имеет встроенную поддержку открытых ключей на
эллиптической кривой и
обязательств Педерсена (поэтому, как
правило, отсутствует необходимость осуществлять вычисления
эллиптической кривой внутри проверенной программы). Также, в
отличие от
zkSNARKs, доказательства
Bulletproofs
имеют полный 128-битный уровень криптостойкости в соответствии со
стандартными предположениями без использования доверенной
установки. И, в отличие от
zkSTARKs, они достаточно быстры,
чтобы можно было доказывать и проверять разумные по масштабу задачи
на обычном вычислительном оборудовании.
По сравнению с технологией
ZKP, которая требует больших
вычислительных мощностей, технология
Bulletproofs примерно в
10 раз быстрее, так как позволяет проводить транзакции без обмена
платежными данными.
Ключевые пункты по данной технологии (протоколу):
в основе технологии Bulletproofs лежат общие принципы
доказательства с нулевым разглашением (как и в zkSNARKs);
технология может использоваться для расширения многосторонних
протоколов, таких как мультиподписи или условные платежи с нулевым
знанием;
Bulletproofs предоставляет гораздо более эффективную версию
доказательств диапазона конфиденциальных транзакций (при
использовании пакетной верификации скорость проверки увеличивается
более чем в 23 раза);
такие доказательства диапазона могут быть объединены внутри
транзакции, при этом её размер будет расти логарифмически;
при должном агрегировании, таком как
Provisions, пакетная
верификация дает более чем 120-кратный прирост скорости по
сравнению с прежними доказательствами.
Сравнительная таблица характеристик протоколов
Составим сравнительную таблицу с характеристиками рассмотренных
протоколов с нулевым разглашением секрета
Выводы
1.
zk-SNARKs и
zk-STARKs имеют множество областей
применения, в том числе для целей реализации простых электронных
подписей, а также создания систем электронного документооборота,
предполагающего обеспечение конфиденциальности информации.
2. В целом, протоколы с нулевым разглашением являются очень
перспективными и становятся более практичными для использования в
системах на основе технологии распределенного реестра. На данный
момент каждая реализация по-своему выделяется, однако, все они
требуют ресурсов, и существует необходимость в эффективных решениях
с нулевым диапазоном знаний.
3. Одним из недостатков, на наш взгляд, выступает отсутствие
реализации Протокола с нулевым разглашением секрета, использующего
отечественные криптографические алгоритмы и средства
криптографической защиты информации, что является существенным
ограничением для применения протокола (к примеру, для обработки
информации, защищаемой в соответствии с законодательством
Российской Федерации).
Список литературы
1. ГОСТ 34.13-2018 Информационная технология (ИТ).
Криптографическая защита информации. Режимы работы блочных шифров
// docs.cntd.ru URL:
docs.cntd.ru/document/1200161709
(дата обращения: 31.05.2020);
2. Recommendation for Key Management Part 1: General //
nvlpubs.nist.gov URL:
nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57pt1r5.pdf
(дата обращения: 11.05.2020);
3. ГОСТ Р ИСО/МЭК 12207-2010 // docs.cntd.ru/ URL:
docs.cntd.ru/document/gost-r-iso-mek-12207-2010 (дата
обращения: 11.05.2020);
4. Recommendation for Cryptographic Key Generation //
nvlpubs.nist.gov/ URL:
nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-133r1.pdf
(дата обращения: 11.05.2020);
5. Recommendation for Key Management Part 2 Best Practices for Key
Management Organizations // nvlpubs.nist.gov URL:
nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57pt2r1.pdf
(дата обращения: 11.05.2020);
6. Security Requirements for Cryptographic Modules //
nvlpubs.nist.gov URL:
nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.140-2.pdf (дата
обращения: 11.05.2020);
7. Payment Card Industry (PCI) Data Security Standard //
pcisecuritystandards.org URL:
www.pcisecuritystandards.org/documents/PCI_DSS_v3-2-1.pdf?agreement=true&time=1589494129851
(дата обращения: 11.05.2020);
8. Управление ключами шифрования и безопасность сети // intuit.ru
URL:
www.intuit.ru/studies/courses/553/409/info (дата обращения:
11.05.2020).
9. Базовые конструкции протоколов распределения ключей //
cryptowiki.net/ URL:
cryptowiki.net/index.php?title=Базовые_конструкции_протоколов_распределения_ключей
(дата обращения: 11.05.2020);
10. Kerberos_(protocol) // en.wikipedia.org URL:
en.wikipedia.org/wiki/Kerberos_(protocol)
(дата обращения: 11.05.2020)
11. RFC5280 Internet X.509 Public Key Infrastructure Certificate
and Certificate Revocation List (CRL) Profile;
12. Recommendation for Key Management Part 3: Application-Specific
Key Management Guidance // nvlpubs.nist.gov URL:
nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-57Pt3r1.pdf
(дата обращения: 11.05.2020);
13. Blockchain reference architecture // ibm.com URL:
www.ibm.com/cloud/architecture/files/blockchain-architecture-diagram.pdf
(дата обращения: 24.05.2020).
14. Key management // cloud.ibm.com URL:
cloud.ibm.com/docs/blockchain?topic=blockchain-ibp-security
(дата обращения: 24.05.2020);
15. Воронов, Д. С. Обзор требований безопасности для
криптографических модулей / Д. С. Воронов. Текст: непосредственный
// Молодой ученый. 2016. 1 (105). С. 141-143. URL:
moluch.ru/archive/105/24663
(дата обращения: 31.05.2020).
16. CKMS Система управления криптографическими ключами //
www.cryptomathic.com
URL:
www.cryptomathic.com/hubfs/Documents/Product_Sheets/Cryptomathic_CKMS_-_Product_Sheet.pdf
(дата обращения: 31.05.2020);
17. Аппаратные модули безопасности HSM //
www.croc.ru URL:
www.croc.ru/promo/insafety/design/hardware-security-module
(дата обращения: 31.05.2020);
18. Функционально технические требования к HSM // cbr.ru URL:
cbr.ru/Content/Document/File/104755/FT_35.pdf (дата обращения:
30.05.2020);
19. AWS Key Management Service // aws.amazon.com URL:
aws.amazon.com/ru/kms
(дата обращения: 30.05.2020);
20. Руководящий документ. Безопасность информационных технологий.
Критерии оценки безопасности информационных технологий //
zakonbase.ru URL:
zakonbase.ru/content/part/1250444
(дата обращения: 31.05.2020);
21. Diffie Hellman Protocol // mathworld.wolfram.com URL:
mathworld.wolfram.com/Diffie-HellmanProtocol.html (дата
обращения: 31.05.2020);
22. STS Protocol // archive.dimacs.rutgers.edu URL:
archive.dimacs.rutgers.edu/Workshops/Security/program2/boyd/node13.html
(дата обращения: 31.05.2020);
23. The Needham-Schroeder Protocol //
www.cs.utexas.edu
URL:
www.cs.utexas.edu/~byoung/cs361/lecture60.pdf (дата обращения:
31.05.2020);
24. Otway Rees protocol //
www.lsv.fr URL:
www.lsv.fr/Software/spore/otwayRees.pdf (дата обращения:
31.05.2020);
25. Payment Card Industry (PCI) PTS HSM Security Requirements //
www.pcisecuritystandards.org
URL:
www.pcisecuritystandards.org/documents/PTS_HSM_Technical_FAQs_v3_May_2018.pdf
(дата обращения: 31.05.2020);
26. Что такое zk-SNARK? // z.cash/ru URL:
z.cash/ru/technology/zksnarks
(дата обращения: 31.05.2020);
27. Что такое zk-SNARKs и zk-STARKs? // academy.binance.com/ru URL:
academy.binance.com/ru/blockchain/zk-snarks-and-zk-starks-explained
(дата обращения: 31.05.2020);
28. Bulletproofs: Short Proofs for Confidential Transactions and
More // web.stanford.edu URL:
web.stanford.edu/~buenz/pubs/bulletproofs.pdf (дата обращения:
31.05.2020);
29. Что такое технология распределенного реестра Автор Татьяна
Чепкова // beincrypto.ru URL:
beincrypto.ru/learn/chto-takoe-tehnologiya-raspredelennogo-reestra
(дата обращения: 31.05.2020);
30. 12 консенсус-протоколов для распределенных систем // dou.ua
URL:
dou.ua/lenta/articles/12-konsensus-protocols (дата обращения:
31.05.2020);
31. СТ РК ISO/IEC 11770-1-2017. Информационные технологии Методы
обеспечения безопасности Менеджмент ключей Часть 1 СТРУКТУРА //
www.egfntd.kz URL:
www.egfntd.kz/rus/tv/391980.html?sw_gr=-1&sw_str=&sw_sec=24
(дата обращения: 31.05.2020);
32. Consensus algorithm // whatis.techtarget.com URL:
clck.ru/Nvade
(дата обращения: 31.05.2020);
33. Introduction to Zero Knowledge Proof: The protocol of next
generation Blockchain // medium.com URL:
medium.com/@kotsbtechcdac/introduction-to-zero-knowledge-proof-the-protocol-of-next-generation-blockchain-305b2fc7f8e5
(дата обращения: 31.05.2020).