Блокчейн — криптография на основе эллиптических кривых
Криптография — это изучение методов безопасной связи в условиях враждебного поведения. Шифрование использует алгоритм для шифрования данных и секретный ключ для их расшифровки. Существует 2 типа шифрования:
- Шифрование с симметричным ключом (шифрование с секретным ключом): Алгоритмы с симметричным ключом — это криптографические алгоритмы, которые используют одни и те же криптографические ключи как для шифрования открытого текста, так и для декодирования зашифрованного текста. Ключи могут быть идентичными или между ними может быть простой переход.
- Шифрование с асимметричным ключом (шифрование с открытым ключом): Алгоритмы с асимметричным ключом шифруют и расшифровывают сообщение с помощью пары связанных ключей (один открытый ключ и один закрытый ключ) и защищают его от несанкционированного доступа или использования.
Здесь будут обсуждаться следующие темы эллиптической криптографии:
- Введение в криптографию на основе эллиптических кривых
- История эллиптической криптографии
- Компоненты криптографии на основе эллиптических кривых
- Алгоритмы криптографии на основе эллиптических кривых
- Применение эллиптической криптографии
- ECC против RSA
- Реализация протокола Диффи-Хеллмана на эллиптических кривых
- Типы атак безопасности
- Преимущества эллиптической криптографии
- Ограничения криптографии на основе эллиптических кривых
- Вывод
Введение в криптографию на основе эллиптических кривых
ECC, как следует из названия, представляет собой алгоритм асимметричного шифрования, использующий алгебраическую архитектуру эллиптических кривых с конечными полями.
- Криптография на эллиптических кривых (ECC) — это технология шифрования, сравнимая с RSA, которая обеспечивает шифрование с открытым ключом.
- В то время как безопасность RSA зависит от огромных простых чисел, ECC использует математическую теорию эллиптических кривых для достижения того же уровня безопасности с ключами значительно меньшего размера.
- Виктор Миллер и Нил Коблиц по отдельности предложили шифры на эллиптических кривых в середине 1980-х годов. На высоком уровне они являются аналогами реальных общедоступных криптосистем, в которых модульная арифметика заменена операциями на эллиптических кривых.
История эллиптической криптографии
- Нил Коблиц и Виктор С. Миллер независимо друг от друга предложили использовать эллиптические кривые в шифровании в 1985 году.
- Алгоритмы криптографии на основе эллиптических кривых получили широкое распространение с 2004 по 2005 год.
- В середине 1980-х исследователи обнаружили, что изучение эллиптических кривых может привести к открытию новых источников сложных проблем. Криптография на эллиптических кривых (ECC) ввела новую степень безопасности в криптосистемы с открытым ключом, которые обеспечивают комбинированные услуги шифрования и цифровой подписи.
- Безопасность криптосистем на основе эллиптических кривых, как и всех криптосистем с открытым ключом, основана на сложных математических задачах. Даны две точки эллиптической кривой G и Y, где Y = kG.
- Термин «эллиптическая кривая» происходит от эллипса. Эллиптические кривые были открыты в виде диофантова уравнения для c после 17 века. Кроме того, хотя вычислить поверхность эллипса просто, вычислить длину окружности эллипса сложно. Уравнение можно упростить до интеграла:
Компоненты эллиптической криптографии
Ниже приведены компоненты криптографии на эллиптических кривых:
1. Ключи ЕСС:
- Закрытый ключ: создание закрытого ключа криптографии ECC так же просто, как безопасное создание случайного целого числа в определенном диапазоне, что делает его очень быстрым. Любое целое число в поле представляет собой действительный закрытый ключ ECC.
- Открытые ключи: открытые ключи в ECC — это точки EC, представляющие собой пары целых чисел с координатами x и y, лежащие на кривой. Благодаря своим уникальным свойствам точки EC могут быть сжаты до одной координаты + 1 бит (нечетный или четный). В результате сжатый открытый ключ соответствует 256-битному ECC.
2. Точка генератора:
- Криптосистемы ECC устанавливают специальную предопределенную точку EC, называемую порождающей точкой G (базовой точкой) для эллиптических кривых над конечными полями, которая может генерировать любую другую позицию в своей подгруппе над эллиптической кривой путем умножения G на некоторое целое число в диапазоне [0… р].
- Число r называется «порядком» циклической подгруппы.
- Подгруппы эллиптических кривых обычно содержат множество точек-генераторов, но криптологи тщательно выбирают одну из них для создания всей группы (или подгруппы), что отлично подходит для оптимизации производительности вычислений. Это генератор «G».
Алгоритмы криптографии на основе эллиптических кривых
Основываясь на арифметике эллиптических кривых над конечными полями, криптография на эллиптических кривых (ECC) предоставляет многочисленные наборы алгоритмов:
Алгоритмы цифровой подписи:
- Алгоритм цифровой подписи на основе эллиптических кривых. (ECDSA): ECDSA, или Алгоритм цифровой подписи на эллиптических кривых, представляет собой более сложный алгоритм шифрования с открытым ключом. Криптография на эллиптических кривых — это тип криптографии с открытым ключом, в основе которой лежит алгебраическая структура эллиптических кривых с конечными полями. Криптография на основе эллиптических кривых в основном используется для генерации псевдослучайных чисел, цифровых подписей и других данных.
- Алгоритм цифровой подписи на основе кривой Эдвардса (EdDSA). Алгоритм цифровой подписи на основе кривой Эдвардса (EdDSA) был предложен в качестве замены алгоритма цифровой подписи на основе эллиптической кривой для выполнения быстрых цифровых подписей с открытым ключом (ECDSA). Его основными преимуществами для встраиваемых устройств являются более высокая производительность и простота и безопасность реализации. Во время подписи операции ветвления или поиска на основе секретных значений не выполняются. Многие атаки по сторонним каналам предотвращаются благодаря этим свойствам.
Алгоритмы шифрования:
- Интегрированная схема шифрования на основе эллиптических кривых (ECIES): ECIES — это схема шифрования с аутентификацией на основе открытого ключа, в которой используется KDF (функция получения ключа) для создания отдельного ключа управления доступом к среде и симметричного ключа шифрования из общего секрета ECDH. Поскольку алгоритм ECIES включает симметричный шифр, он может шифровать любой объем данных. На практике ECIES используется такими стандартами, как Intelligent Transportation Systems.
- Криптография на основе эллиптических кривых Эль-Гамаля на основе EC: Криптография на эллиптических кривых Эль-Гамаля является криптографическим эквивалентом схем шифрования Эль-Гамаля с открытым ключом, в которых используется проблема дискретного логарифмирования на эллиптических кривых. ElGamal — это алгоритм асимметричного шифрования, который используется для безопасной отправки сообщений на большие расстояния. К сожалению, если зашифрованное сообщение достаточно короткое, алгоритм уязвим для атаки Meet in the Middle.
Алгоритм согласования ключей:
- Эллиптическая кривая Диффи-Хеллмана (ECDH): Эллиптическая кривая Диффи-Хеллмана (ECDH) — это протокол согласования ключей, который позволяет двум сторонам установить общий секрет по незащищенному каналу, каждая из которых имеет пару открытого и закрытого ключей эллиптической кривой. Этот общий секрет можно использовать непосредственно в качестве ключа или для создания другого ключа. После этого ключ или производный ключ можно использовать для шифрования последующих сообщений с помощью шифра с симметричным ключом.
- Fully Hashed Menezes-Qu-Vanstone (FHMQV): Fully Hashed Menezes-Qu-Vanstone — это протокол согласования ключей с проверкой подлинности, основанный на схеме Диффи-Хеллмана. MQV, как и другие аутентифицированные схемы Диффи-Хеллмана, защищает от активного злоумышленника. Протокол может быть адаптирован для работы в любой конечной группе, в первую очередь в группах эллиптических кривых, в которых он распознается как эллиптическая кривая MQV (ECMQV).
Применение эллиптической криптографии
- Диффи-Хеллман: Базовая криптосистема с открытым ключом, предлагаемая для совместного использования секретных ключей, — это протокол Диффи-Хеллмана. Если A (Алиса) и B (Боб) изначально согласны с заданной кривой, размером поля и математическим типом. Затем они распределяют секретный ключ следующим образом. Мы видим, что все, что нам нужно для построения протокола Диффи-Хеллмана, — это скалярное умножение.
- Алгоритм цифровой подписи на эллиптических кривых (ECDSA): ECC — один из наиболее широко используемых подходов к реализации цифровой подписи в криптовалютах. Для подписи транзакций и Биткойн, и Эфириум используют обратное умножение поля, а также арифметическое умножение, обратную функцию и модульную операцию.
- Онлайн-приложение: Более того, ECC не ограничивается криптовалютами. Это стандарт шифрования, который в будущем будет использоваться большинством онлайн-приложений из-за уменьшенного размера ключа и эффективности. Чаще всего используется в криптовалютах, таких как Биткойн и Эфириум, наряду с односторонним шифрованием электронной почты, данных и программного обеспечения.
- Применение блокчейна: Криптовалюта Биткойн использует криптографию на основе эллиптических кривых. Ethereum 2.0 интенсивно использует пары эллиптических кривых с подписями BLS, как указано в предложенной IETF спецификации BLS, чтобы криптографически гарантировать, что конкретный валидатор Eth2 действительно проверил конкретную транзакцию.
ECC против RSA
Ниже приведена разница между ECC и RSA:
Параметры | ЕСС | ЮАР |
---|---|---|
Алгоритм работы | ECC — это метод криптографии, который работает только с математической моделью эллиптических кривых. | Алгоритм криптографии RSA в первую очередь основан на методе простой факторизации. |
Экономия пропускной способности | ECC обеспечивает значительную экономию полосы пропускания по сравнению с RSA. | RSA обеспечивает гораздо меньшую экономию полосы пропускания, чем ECC. |
Процесс шифрования | Процесс шифрования занимает меньше времени в ECC. | Процесс шифрования занимает больше времени в RSA. |
Процесс расшифровки | Процесс расшифровки занимает больше времени. | Расшифровка быстрее, чем ECC. |
Безопасность | ECC намного безопаснее, чем RSA, и в настоящее время находится в процессе адаптации. | Срок полномочий RSA подходит к концу. |
ECC против RSA: сравнение длины ключа:
Безопасность (в битах) | Требуется длина ключа RSA | Требуется длина ключа ECC |
---|---|---|
80 | 1024 | 160-223 |
112 | 2048 | 224-255 |
128 | 3072 | 256-383 |
192 | 7680 | 384-511 |
256 | 15360 | 512+ |
Эллиптическая кривая Реализация протокола Диффи-Хеллмана
Предварительные требования: основы языка программирования Python, основы методов криптографии и протокол Диффи-Хеллмана на эллиптических кривых.
Установите tunyec в Python:
pip install tinyec
После установки необходимых модулей и зависимостей используйте следующий код для вычисления общего секретного ключа между пользователем A и пользователем B.
Python
# Importing required libraries used # to perform arithmetic operations # on elliptic curves from tinyec import registry import secrets # Function to calculate compress point # of elliptic curves def compress(publicKey): return hex (publicKey.x) + hex (publicKey.y % 2 )[ 2 :] # The elliptic curve which is used for the ECDH calculations curve = registry.get_curve( "brainpoolP256r1" ) # Generation of secret key and public key Ka = secrets.randbelow(curve.field.n) X = Ka * curve.g print ( "X:" , compress(X)) Kb = secrets.randbelow(curve.field.n) Y = Kb * curve.g print ( "Y:" , compress(Y)) print ( "Currently exchange the publickey (e.g. through Internet)" ) # (A_SharedKey): represents user A # (B_SharedKey): represents user B A_SharedKey = Ka * Y print ( "A shared key :" ,compress(A_SharedKey)) B_SharedKey = Kb * X print ( "(B) shared key :" ,compress(B_SharedKey)) print ( "Equal shared keys:" , A_SharedKey = = B_SharedKey) |
Выход:
Объяснение:
- Следующий код Python генерирует пару закрытый-открытый ключ ECC для получателя сообщения (на основе кривой brainpoolP256r1), затем извлекает секретный общий ключ (для шифрования) и эфемерный шифр-текстовый ключ (для ECDH) из получателя. открытый ключ, а затем извлекает ту же пару секретных ключей (для расшифровки) из секретного ключа получателя и ранее сгенерированного эфемерного открытого ключа зашифрованного текста.
- В интегрированной схеме шифрования эти ключи будут использоваться для шифрования и дешифрования данных. Если вы выполните код, приведенный выше вывод будет другим (из-за случайности, используемой для создания ciphertextPrivKey), но ключи дешифрования и шифрования останутся прежними.
- Процесс создания общего эфемерного секретного ключа на основе пары ключей ECC, описанный выше, является примером KEM (механизм инкапсуляции ключей), основанный на ECC и ECDH.
Типы атак безопасности
- Атака по сторонним каналам. Атаки по сторонним каналам в криптографии на основе эллиптических кривых вызваны непреднамеренной утечкой информации во время обработки. Вычисление n*P, где n — положительное число, а P — положение на эллиптической кривой E, является критической операцией.
- Бэкдор-атака: специалисты по криптографии выразили обеспокоенность тем, что Агентство национальной безопасности установило клептографический бэкдор по крайней мере в один генератор псевдослучайных чисел на основе эллиптических кривых. Согласно одному исследованию потенциального бэкдора, злоумышленник, владеющий секретным ключом алгоритма, может получить доступ к ключам шифрования, предоставляя только 32 байта выходных данных.
- Атаки с помощью квантовых вычислений: вычисляя дискретные логарифмы на гипотетическом квантовом компьютере, метод Шора можно использовать для взлома криптографии на эллиптических кривых. Самые последние оценки квантовых ресурсов составляют 2330 кубитов и 126 миллиардов вентилей Тоффоли для взлома кривой только с 256-битным модулем (128-битный уровень безопасности).
Преимущества эллиптической криптографии
- Быстрое создание ключа: создание ключа криптографии ECC так же просто, как безопасное создание случайного целого числа в определенном диапазоне, что делает его очень быстрым. Любое целое число в диапазоне представляет собой действительный секретный ключ ECC. Открытые ключи в ECC — это точки EC, представляющие собой пары целочисленных координат x и y, которые лежат на кривой.
- Меньший размер ключа: зашифрованный текст, подписи и криптография на основе эллиптических кривых (ECC) — это метод шифрования с открытым ключом, основанный на алгебраической структуре эллиптических кривых с конечными полями. По сравнению с шифрованием без EC (на основе обычных полей Галуа) ECC позволяет использовать меньшее количество ключей, чтобы гарантировать равную безопасность .
- Низкая задержка: сигнатуры могут быть вычислены в два этапа, что значительно снижает задержку. Вычисляя сигнатуры в два этапа, ECC обеспечивает меньшую задержку, чем в обратном случае. ECC имеет надежные протоколы для авторизованного обмена ключами, и эта технология получила широкое распространение.
- Меньшая вычислительная мощность: поскольку ключ ECC короче, вычислительная мощность также меньше вычислительной мощности, ECC обеспечивает высокую безопасность с более быстрыми и короткими ключами по сравнению с RSA и требует больше энергии для расчета, чем для вычисления целевой функции эллиптической кривой.
- Высокая безопасность: 256-битный открытый ключ ECC обеспечивает безопасность, сравнимую с 3072-битным открытым ключом RSA. С ECC вы можете получить тот же уровень безопасности с ключами меньшего размера. ECC обеспечивает надежную защиту в мире, где мобильные телефоны должны выполнять все больше и больше шифрования с меньшими вычислительными ресурсами.
Ограничения криптографии на основе эллиптических кривых
- Большой размер шифрования: ECC увеличивает размер зашифрованного сообщения значительно больше, чем шифрование RSA. Длина ключа по умолчанию для закрытых ключей ECC составляет 256 бит, но в зависимости от кривой возможны различные размеры ключей ECC.
- Более сложный: алгоритм ECC является более полным и более сложным в реализации, чем RSA. Стоимость алгоритмов была рассчитана на основе вычисления операции с эллиптической кривой и операций с конечным полем, которые определяют время выполнения метода скалярного умножения целочисленного подразложения (ISD).
- Сложная безопасность: сложно и сложно реализовать безопасно, в основном стандартные кривые. Если размер используемого ключа достаточно велик, ECC считается очень безопасным. Для внутренней связи правительству США требуется ECC с размером ключа 256 или 384 бита, в зависимости от уровня конфиденциальности передаваемого материала.
- Бинарные кривые: обработка бинарных кривых требует больших затрат. Криптография на основе эллиптических кривых (ECC) использует эллиптические кривые над конечными полями Fp (где p — простое число и p > 3) или F2m (где размер поля p = 2 m_). Это означает, что поле представляет собой квадратную матрицу apxp, а точки на кривой могут иметь только целочисленные положения внутри поля.
Вывод
- Стойкость шифрования. Основное различие между сертификатами RSA и ECC заключается в стойкости шифрования. По сравнению с другими подходами, такими как RSA, ECC может обеспечить уровень безопасности, который использует меньше вычислительных ресурсов для шифрования и расшифровки данных.
- Функция ключей ECC: с меньшей длиной ключа криптография на эллиптических кривых (ECC) обеспечивает тот же уровень надежности шифрования, что и RSA. ECC и другие системы шифрования с открытым ключом используют математический метод для объединения двух отдельных ключей, а затем используют полученный результат для шифровать и расшифровывать данные. Один из них является открытым ключом, который может видеть каждый, а другой — закрытым ключом, который могут видеть только отправитель и получатель данных.
- Сертификаты ECC: в результате для инфраструктуры открытых ключей сертификат ECC обеспечивает большую скорость и безопасность, чем сертификат RSA. Криптография на эллиптических кривых (ECC) обеспечивает такой же уровень надежности шифрования, что и алгоритм RSA, но с более короткой длиной ключа.
- Кривые ECC: эллиптическая кривая на конечной площади обеспечивает большую безопасность. Для современных целей ECC эллиптическая кривая представляет собой плоскую кривую над конечным полем, состоящую из точек, соответствующих уравнению: любая точка на кривой в этом примере криптографии на эллиптической кривой может быть отражена по оси x, и кривая останется неизменной.
- Использование простого числа: Zp (где p — простое число) эллиптическая кривая Когда p — огромное простое целое число, это означает, что зашифрованный текст чрезвычайно сложно взломать. Открытый и общий ключи имеют длину 257 бит (65 шестнадцатеричных цифр, 256 бит из-за сжатия ключа). Закрытые ключи KA и KB различаются из-за случайности, но предполагаемый общий секретный ключ для (A) и (B) всегда будет одинаковым.