Skip to content

Latest commit

 

History

History
160 lines (88 loc) · 16.6 KB

postkvantovaya-kriptografiya.md

File metadata and controls

160 lines (88 loc) · 16.6 KB
description cover coverY
Большой раздел посвящённый постквантовым алгоритмам на KLYNTAR
../../.gitbook/assets/1608636809_1.jpg
-28.739205526770295

⚡ Постквантовая криптография

Введение

Благодаря криптографии мы живём в безопасном мире. Эта на первый взгляд незаметная для обывателя составная Интернета позволяет нам безопасно сёрфить по сайтам, пользоваться криптовалютой, проводить транзакции, подписывать разного рода соглашения и так далее. За всем этим стоит надёжность разных математических схем, эллиптических кривых, дискретное логарифмирование, модульная арифметика, протоколы обмена ключами, алгоритмы хэширования и многое другое. Да, да - не просто красивые кнопки и плавные меню.

Если говорить в целом, то наиболее популярные и используемые алгоритмы можно пересчитать по пальцам буквально в каждой категории

  • Хэширования - семейства SHA, старые MD, BLAKE хэши
  • Подписи - RSA, ECDSA,EdDSA,Ed25519
  • Симметричное шифрование - AES, CAST, ChaCha20
  • Обмен ключами - ECDH, DH, X25519

Они долгое время работали хорошо, имеют открытый исходный код(согласованность с принципом Керкгоффса) и многие годы подвергались исследованиям и атакам. Тем не менее, ни что не вечно и постепенно безопасность и этих алгоритмов упадёт ввиду появления квантовых компьютеров.

Как уже упоминалось ранее, квантовые компьютеры - это не какой-то магический чёрный ящик который "что-то там быстро считает". Это совершенно конкретные математические алгоритмы, но их отличие от стандартных математических путей взлома в том, что они используют другую фундаментальную науку - физику.

В математике не может так произойти что ноль вдруг станет единицей если вам не понравился ответ. В квантовой механике - возможно.

Если раньше в рамках классических атак на алгоритмы применялся математический подход(не учитывая атак по сторонним каналам типа перехват сигнала, перехват ван Эйка и т.д.), то сейчас в бой вступает физика и природа фундаментальных частиц стандартной модели

{% embed url="https://en.wikipedia.org/wiki/Standard_Model" %}

Пользуясь такими благами квантово-механических свойств как интерференция, корпускулярно-волновой дуализм, запутанность, недетерминизм мы в конечном итоге и получаем возможность строить схемы которые позволяют производить быструю факторизацию(и таким образом угрожать RSA и аналогичным алгоритмам), производить поиск с квадратичным ускорением(угрожая симметричным алгоритмам и хэшам) и многое другое.

Проблемы квантовых алгоритмов

Математические атаки на алгоритмы ранее были ограничены только математикой. Это разного рода meet-in-the-middle атаки, атаки с перехватом и оракулом(CPA/CCA), повторное использование, радужные таблицы и другие пути.

Раз квантовая угроза опирается как на математику так и на физику, то и проблемы тут как математические(создать алгоритм, построить вентили и подобрать матрицы) так и физические(сложность удержания запутанности, влияние окружающей среды, естественные ограничения путём потери энергии).

Эти два вида проблем и не позволяют пока что создать wunderwaffe в мире криптографии. Тем не менее, нельзя относится к этому халатно - надо быть готовым ко всему.

KLYNTAR и вот это всё вышесказанное. Типы алгоритмов

Поэтому перед нами стала совершенно конкретная потребность применения постквантовых механизмов безопасности на KLYNTAR. Нам надо обезопасить всё - начиная от подписей и заканчивая архитектурным концепциям ввиду того, что мы полагаемся на безопасность других цепочек, так что если они будут уязвимы, то это могло бы нам угрожать(могло, потому что сейчас не угрожает).

Мы выделили несколько областей которые необходимо обезопасить

Пары ключей / Подписи

Группы постквантовых алгоритмов

На начальных этапах мы решили использовать Dilithium и BLISS подписи. Среди остальных алгоритмов их соотношение безопасности и размеров публичных ключей + подписей показалось оптимальным. Они показывают хорошую скорость и могут брать участия в разного рода событиях на KLYNTAR. Мы рекомендуем использовать их как адрес с повышенной безопасностью. Например, на них можно хранить большие суммы и пользоваться не часто или вообще через холодный кошелёк. ****

Dilithium

Данный алгоритм является NIST кандидатом и предоставляет возможность генерировать пары ключей и подписи. Широко популярный, изучается на самых высоких уровнях. Он включён в постквантовую реализацию OpenSSL, изучается CloudFlare и входит в их репозиторий CIRCL

{% embed url="https://github.com/cloudflare/circl" %}

Мы как раз таки и используем эту реализацию от CloudFlare предоставляя стандартный набор функций типа generate, sign и verify.

В зависимости от уровней безопасности NIST существует несколько реализаций. Вот их характеристики

Сами создатели рекомендуют использовать набор параметров Dilithium3, мы же используем Dilithium5 ввиду большей безопасности. Однако, для изменения уровня безопасности достаточно просто поменять одну строчку так что можно будет проводить такие изменения при необходимости. Вот сравнительная таблица по уровнях безопасности согласно NIST

Уровень безопасности NIST Взлом такой же трудный как и ...
1 Восстановление ключа AES-128 методом полного перебора
2 Поиск коллизии SHA-256 методом полного перебора
3 Восстановление ключа AES-192 методом полного перебора
4 Поиск коллизии SHA-384 методом полного перебора
5 Восстановление ключа AES-256 методом полного перебора

Так же оставляем вам ссылку на имплементацию API под Node.js в репозитории Cryptoland

{% embed url="https://github.com/KLYN74R/Cryptoland/blob/main/dilithium.go" %}

Ссылка на официальный сайт исследований

{% embed url="https://pq-crystals.org/dilithium/index.shtml" %}

BLISS

Вторым и приоритетным постквантовым алгоритмом подписи будет BLISS. Он так же основан на криптографии с решетками, а точнее на RLWE(Ring Learning With Errors).Хотя он создает небольшую подпись и имеет хорошую безопасность, он не был внесен в список кандидатов NIST для стандартизации. Он использует схему решетчатой ​​подписи Фиата-Шамира и его улучшенный метод выбора образцов для параметров. Он также использует кодирование Хаффмана для сжатия подписи.

Вы уже можете сгенерировать BLISS пару ключей и адрес. Адресом является BLAKE3 хэш от публичного ключа

{% embed url="https://bliss.di.ens.fr/" %}

{% embed url="https://asecuritysite.com/signatures/go_bliss" %}

Сравнение

{% hint style="info" %} В таблице отсутствуют некоторые наши алгоритмы {% endhint %}

Протоколы обмена ключами

Казалось бы странно - ну где в блокчейне это может понадобится? Всё встает на свои места когда речь заходит про оффчейн взаимодействие узлов - в рамках обмена данными между сервисами или общения с внешним миром.

Ввиду того, что симметричное шифрование быстрее чем ассиметричное, в обычном мире, например, в TLS или SSH протоколах происходит согласование симметричного ключа. Таким образом обеспечивается безопасный канал связи.

Раз речь зашла про постквантовые механизмы, то здесь мы выбрали несколько кандидатов. Итак, на KLYNTAR будут доступны Kyber, SIKE, SIDH и CSIDH.

{% hint style="danger" %} Согласно последним данным, NIST кандидат SIKE был подвергнут атаке. Рекомендуем воздержаться от его использования. Ближе к запуску KLYNTAR Services мы выпустим более содержательные рекомендации по общей безопасности и по использованию постквантовых алгоритмов при взаимодействии между сервисами {% endhint %}

Каждый из них либо является текущим кандидатом NIST(Kyber) либо же относится к альтернативам(алгоритмы на основе супер изогении).

Мы используем реализацию CloufFlare CIRCL в виде аддонов с Go на Node.js. Так же поскольку полный путь Go => C => Node.js, то вы можете использовать наш репозиторий с простым API на любом языке

{% embed url="https://github.com/cloudflare/circl" %}

{% embed url="https://github.com/KLYN74R/Cryptoland" %}

А вот несколько сравнительных таблиц

https://blog.cloudflare.com/nist-post-quantum-surprise/

{% embed url="https://pq-crystals.org/kyber/index.shtml" %} Официальная страница {% endembed %}

Ассиметричное шифрование

Так же мы предоставим вам и ассиметричное шифрование. Ассиметричное шифрование позволяет одной стороне имея пару ключей $$(PubKey,PrivateKey)$$ получать зашифрованные публичным ключом сообщения от других сторон и расшифровывать их с помощью приватных.

В этом плане мы решили много не добавлять и ограничились лишь Kyber PKE. В KLYNTAR представлена реализация Kyber1024 PKE от CloudFlare, хотя опять таки это вариативно и решается путём изменения одной строки кода.

{% embed url="https://github.com/KLYN74R/Cryptoland/blob/main/kyber_pke.go" %}

Альтернативы

Ввиду принципа мутаций мы допускаем использование и альтернативных методов постквантовой криптографии. Такие например могут быть использованы на сервисах. Вы вольны сами выбирать разного рода алгоритмы, но в любом случае тестируйте и не пользуйтесь непроверенными имплементациями

Дополнительные ссылки

{% embed url="https://asecuritysite.com/pqc/" %}

{% embed url="https://blog.cloudflare.com/nist-post-quantum-surprise/" %}

{% embed url="https://www.nist.gov/news-events/news/2022/07/nist-announces-first-four-quantum-resistant-cryptographic-algorithms" %}