Эллиптическая криптография — Википедия
Эллиптическая криптография — раздел криптографии, который изучает асимметричные криптосистемы, основанные на эллиптических кривых над конечными полями. Основное преимущество эллиптической криптографии заключается в том, что на сегодняшний день неизвестны субэкспоненциальные алгоритмы дискретного логарифмирования.
Использование эллиптических кривых для создания криптосистем было независимо друг от друга предложено Нилом Коблицем и Виктором Миллером в 1985 году[1].
Введение
[править | править код]В 1985 году независимо Нилом Коблицем и Виктором Миллером было предложено использовать в криптографии алгебраические свойства эллиптических кривых. С этого момента началось бурное развитие нового направления криптографии, для которого используется термин «криптография на эллиптических кривых». Роль основной криптографической операции выполняет операция скалярного умножения точки на эллиптической кривой на данное целое число, определяемая через операции сложения и удвоения точек эллиптической кривой. Последние, в свою очередь, выполняются на основе операций сложения, умножения и инвертирования в конечном поле, над которыми рассматривается кривая. Особый интерес к криптографии эллиптических кривых обусловлен теми преимуществами, которые дает её применение в беспроводных коммуникациях — высокое быстродействие и небольшая длина ключа[2]. Асимметричная криптография основана на сложности решения некоторых математических задач. Ранние криптосистемы с открытым ключом, такие как алгоритм RSA, криптостойки благодаря тому, что сложно разложить составное число на простые множители. При использовании алгоритмов на эллиптических кривых полагается, что не существует субэкспоненциальных алгоритмов для решения задачи дискретного логарифмирования в группах их точек. При этом порядок группы точек эллиптической кривой определяет сложность задачи. Считается, что для достижения такого же уровня криптостойкости, как и в RSA, требуются группы меньших порядков, что уменьшает затраты на хранение и передачу информации. Например, на конференции RSA 2005 Агентство национальной безопасности объявило о создании «Suite B», в котором используются исключительно алгоритмы эллиптической криптографии, причём для защиты информации, классифицируемой до «Top Secret», используются всего лишь 384-битные ключи.
Эллиптические кривые над конечными полями
[править | править код]Эллиптической кривой называется множество точек , удовлетворяющих уравнению:
Это уравнение может рассматриваться над произвольными полями и, в частности, над конечными полями, представляющими для криптографии особый интерес.
В криптографии эллиптические кривые рассматриваются над двумя типами конечных полей: простыми полями нечётной характеристики (, где — простое число) и полями характеристики 2 ().
Эллиптические кривые над полями нечётной характеристики
[править | править код]Над полем характеристики уравнение эллиптической кривой E можно привести к виду:
где — константы, удовлетворяющие .
Группой точек эллиптической кривой E над полем называется множество пар , лежащих на E, объединённое с нулевым элементом :
Следует отметить, что в у каждого ненулевого элемента есть либо два квадратных корня, либо нет ни одного, поэтому точки эллиптической кривой разбиваются на пары вида и .
Пример
[править | править код]Рассмотрим эллиптическую кривую над полем . На этой кривой, в частности, лежит точка , так как . Легко проверить, что точки , , , это все точки данной кривой.
Теорема Хассе
[править | править код]Теорема Хассе об эллиптических кривых утверждает, что количество точек на эллиптической кривой близко к размеру конечного поля:
что влечёт:
Эллиптические кривые над полями характеристики 2
[править | править код]Над полем характеристики 2 рассматривают два вида эллиптических кривых:
- Суперсингулярная кривая
- Несуперсингулярная кривая
Особое удобство суперсингулярных эллиптических кривых в том, что для них легко вычислить порядок, в то время как вычисление порядка несуперсингулярных кривых вызывает трудности. Суперсингулярные кривые особенно удобны для создания самодельной ЕСС (Elliptic-curve cryptography) криптосистемы. Для их использования можно обойтись без трудоёмкой процедуры вычисления порядка.
Проективные координаты
[править | править код]Для вычисления суммы пары точек на эллиптической кривой требуется не только несколько операций сложения и умножения в , но и операция обращения, то есть для заданного нахождение такого , что , которая на один-два порядка медленнее, чем умножение. К счастью, точки на эллиптической кривой могут быть представлены в различных системах координат, которые не требуют использования обращения при сложении точек:
- в проективной системе координат каждая точка представляется тремя координатами , которые удовлетворяют соотношениям:
- , .
- в системе координат Якоби точка также представляется тремя координатами с соотношениями: , .
- в системе координат Лопес-Дахаб (洛佩斯·達哈卜 кит. / Lopez-Dahab лат.) выполняется соотношение: , .
- в модифицированной системе координат Якоби используются 4 координаты с теми же соотношениями.
- в системе координат Чудновского-Якоби используется 5 координат .
Важно отметить, что могут существовать различные именования — например, IEEE P1363-2000 называет проективными координатами то, что обычно называют координатами Якоби.
Шифрование/дешифрование с использованием эллиптических кривых
[править | править код]Первой задачей в рассматриваемой системе является шифрование открытого текста сообщения , которое должно будет пересылаться в виде значения (Как?)[3] для точки . Здесь точка будет представлять закодированный в неё текст и впоследствии будет раскодироваться. Обратите внимание, невозможно закодировать сообщение просто координатой или точки, так как не все такие координаты имеются в .
Как и в случае системы обмена ключами, в системе шифрования, расшифрования в качестве параметров тоже рассматривается точка и эллиптическая группа . Пользователь выбирает личный ключ и генерирует открытый ключ . Чтобы зашифровать и послать сообщение пользователю , пользователь выбирает случайное положительное целое число и вычисляет шифрованный текст , состоящий из пары точек
- . При этом, — пара точек.
Заметим, что сторона использует открытый ключ стороны : . Чтобы дешифровать этот шифрованный текст, умножает первую точку в паре на секретный ключ и вычитает результат из второй точки:
Пользователь замаскировал сообщение с помощью добавления к нему . Никто, кроме этого пользователя не знает значения , поэтому, хотя и является открытым ключом, никто не сможет убрать маску . Однако, пользователь включает в сообщение и "подсказку", которой будет достаточно, чтобы убрать маску тому, кто имеет личный ключ . Противнику для восстановления сообщения придется вычислить по данным и , что представляется трудной задачей[4].
Арифметические операции с точками на эллиптической кривой не эквивалентны этим арифметическим операциям с их координатами.
Точки эллиптической кривой над конечным полем представляют собой группу[5]. Умножение сводится к многократным удвоению и суммированию.
Например, G+G ≠ 2G (это разные операции), 2G + 2^115G = 2^115G + 2G (суммирование коммутативно);
2G = 2*G; 4G = 2*2G; 8G = 2*4G; 16G = 2*8G, и т. д. (для двух одинаковых точек — только операция удвоения);
25*G; 25 = 11001 (in binary); 25 = 1*2^0 + 0*2^1 + 0*2^2 + 1*2^3 + 1*2^4 = 1 + 8 + 16; 25G = 16G + 8G + G = 1*(2^4)G + 1*(2^3)G + 1*G (операция суммирования).
24G/3 = 24G * (3^-1 mod P); where 3^(-1) mod P - modular multiplicative inverse,
5G - 3G = 5G + (-3G); где -3G = nG - 3G = O - 3G - additive inverse, point opposite.
Пример
[править | править код]Рассмотрим случай , , что соответствует кривой
- и .
Предположим, что пользователь собирается отправить пользователю сообщение, которое кодируется эллиптической точкой , и что пользователь выбирает случайное число . Открытым ключом является . Имеем:
- .
Таким образом, пользователь должен послать шифрованный текст .
Реализация шифрования
[править | править код]Конкретные реализации алгоритмов шифрования на эллиптической кривой описаны ниже. Здесь рассмотрим общие принципы эллиптической криптографии.
Набор параметров
[править | править код]Для использования эллиптической криптографии все участники должны согласовать все параметры, определяющие эллиптическую кривую, т. е. набор параметров криптографического протокола. Эллиптическая кривая определяется константами и из уравнения (2). Абелева подгруппа точек является циклической и задается одной порождающей точкой G. При этом кофактор , где n — порядок точки G, должен быть небольшим (, желательно даже ).
Итак, для поля характеристики 2 набор параметров: , а для конечного поля , где , набор параметров: .
Существует несколько рекомендованных наборов параметров:
Для создания собственного набора параметров необходимо сделать следующее.
- Выбрать набор параметров.
- Найти эллиптическую кривую, удовлетворяющую этому набору параметров.
Для нахождения кривой для заданного набора параметров используются два метода.
- Выбрать случайную кривую, затем воспользоваться алгоритмом подсчета точек[8][9].
- Выбрать точки, после чего построить кривую по этим точкам, используя технику умножения.
Существует несколько классов криптографически «слабых» кривых, которых следует избегать:
- Кривые над , где — не простое число. Шифрование на этих кривых подвержено атакам Вейля.
- Кривые с уязвимы для атаки, которая отображает точки данной кривой в аддитивную группу поля .
Быстрая редукция (NIST-кривые)
[править | править код]Деление по модулю p (которое необходимо для операций сложения и умножения) может выполняться быстрее, если в качестве p выбрать простое число, близкое к степени числа 2. В частности, в роли p может выступать простое число Мерсенна. Например, хорошим выбором являются или . Национальный институт стандартов и технологий (NIST) рекомендует использовать подобные простые числа в качестве p.
Ещё одним преимуществом кривых, рекомендованных NIST, является выбор значения , что ускоряет операцию сложения в координатах Якоби.
Эллиптические кривые, рекомендованные NIST
[править | править код]NIST рекомендует 15 эллиптических кривых, многие из которых были получены Jerry Solinas (NSA) на базе наработок Нила Коблица[10]. В частности, FIPS 186-3[11] рекомендует 10 конечных полей. Некоторые из них:
- поля , где простое p имеет длину 192, 224, 256, 384 или 521[12] бит,
- поля , где m = 163, 233, 283, 409 или 571.
Причём для каждого конечного поля рекомендуется одна эллиптическая кривая. Эти конечные поля и эллиптические кривые выбраны, как часто ошибочно считается, из-за высокого уровня безопасности. По заявлениям NIST, их выбор был обоснован эффективностью программной реализации[13]. Имеются сомнения в безопасности по крайней мере нескольких из них[14][15][16].
Размер ключа
[править | править код]Самым быстрым алгоритмом, решающим задачу дискретного логарифмирования на эллиптических кривых, таким как алгоритм Шенкса и ρ-метод Полларда, необходимо операций. Поэтому размер поля должен как минимум в два раза превосходить размер ключа. Например, для 128-битного ключа рекомендуется использовать эллиптическую кривую над полем , где p имеет длину 256 бит.
Самые сложные схемы на эллиптических кривых, публично взломанные к настоящему времени, содержали 112-битный ключ для конечного простого поля и 109-битный ключ для конечного поля характеристики 2[источник не указан 4019 дней]. В июле 2009 года кластер из более чем двухсот Sony Playstation 3 за 3,5 месяца нашел 109-битный ключ. Ключ над полем характеристики 2 был найден в апреле 2004 года, с использованием 2600 компьютеров, в течение 17 месяцев[источник не указан 4019 дней].
Аналог обмена ключами по алгоритму Диффи-Хеллмана
[править | править код]Предположим, что абоненты А и Б хотят договориться о ключе, которым будут впоследствии пользоваться в некоторой классической криптосистеме. Прежде всего, они открыто выбирают какое-либо конечное поле и какую-либо эллиптическую кривую над ним. Их ключ строится по случайной точке на этой эллиптической кривой. Если у них есть случайная точка , то, например, её -координата дает случайный элемент , который можно затем преобразовать в -разрядное целое число в -ичной системе счисления (где ), и это число может служить ключом в их классической криптосистеме. Они должны выбрать точку так, чтобы все их сообщения друг другу были открытыми и все же никто, кроме них двоих, ничего бы не знал о .
Абоненты (пользователи) А и Б первым делом открыто выбирают точку ∈ в качестве «основания»; играет ту же роль, что образующий в системе Диффи-Хеллмана для конечных полей. Однако, не требуем, чтобы была образующим элементом в группе точек кривой . Эта группа может и не быть циклической. Даже если она циклическая, не будем тратить время на проверку того, что — образующий элемент (или даже на нахождение общего числа N точек, которое нам не понадобится в последующем). Нам хотелось бы, чтобы порожденная В подгруппа была большой, предпочтительно того же порядка величины, что и сама . Пока что предположим, что — взятая открыто точка на весьма большого порядка (равного либо , либо большому делителю ).
Чтобы образовать ключ, вначале случайным образом выбирает целое число , сравнимое по порядку величины с (которое близко к ); это число он держит в секрете. Он вычисляет ∈ и передает эту точку открыто. Абонент Б делает то же самое: он выбирает случайно и открыто передает ∈ . Тогда используемый ими секретный ключ — это ∈ . Оба пользователя могут вычислить этот ключ. Например, знает (точка была передана открыто) и своё собственное секретное . Однако любая третья сторона знает лишь и . Кроме решения задачи дискретного логарифмирования — нахождения а по и (или нахождения по и ) по-видимому, нет способа найти , зная лишь и [17].
Пример обмена ключами по схеме Диффи-Хеллмана
[править | править код]В качестве примера возьмем
- , ,
что соответствует кривой
Безопасность криптографии с использованием эллиптических кривых
[править | править код]Безопасность, обеспечиваемая криптографическим подходом на основе эллиптических кривых, зависит от того, насколько трудной для решения оказывается задача определения по данным и . Эту задачу обычно называют задачей дискретного логарифмирования на эллиптической кривой. Наиболее быстрым из известных на сегодня методов логарифмирования на эллиптической кривой является так называемый -метод Полларда. В таблице (см. ниже) сравнивается эффективность этого метода и метод разложения на простые множители с помощью решета в поле чисел общего вида. Из нее видно, что по сравнению с RSA в случае применения методов криптографии на эллиптических кривых примерно тот же уровень защиты достигается со значительно меньшими значениями длины ключей.
К тому же, при равных длинах ключей вычислительные усилия, требуемые при использовании RSA и криптографии на основе эллиптических кривых, не сильно различаются. Таким образом, в сравнении с RSA при равных уровнях защиты явное вычислительное преимущество принадлежит криптографии на основе эллиптических кривых с более короткой длиной ключа[18].
Таблица: Вычислительные усилия, необходимые для криптоанализа при использовании эллиптических кривых и RSA
- Логарифмирование на эллиптической кривой с помощью -метода Полларда.
Размер ключа | MIPS-годы |
---|---|
150 | 3,8 * 10^10 |
205 | 7,1 * 10^18 |
234 | 1,6 * 10^28 |
- Разложение на множители в целых числах с помощью метода решета в поле чисел общего вида.
Размер ключа | MIPS-годы |
---|---|
512 | 3 * 10^4 |
768 | 3 * 10^7 |
1024 | 3 * 10^11 |
1280 | 3 * 10^14 |
1536 | 3 * 10^16 |
2048 | 3 * 10^20 |
Построение электронной цифровой подписи с использованием эллиптических кривых
[править | править код]Алгоритм ECDSA (Elliptic Curve Digital Signature Algorithm) принят в качестве стандартов ANSI X9F1 и IEEE P1363.
Создание ключей
[править | править код]- Выбирается эллиптическая кривая . Число точек на ней должно делиться на большое простое число n.
- Выбирается базовая точка порядка .
- Выбирается случайное число .
- Вычисляется .
- Закрытым ключом является d, открытым ключом — кортеж <a, b, G, n, Q>.
Создание подписи
[править | править код]- Выбирается случайное число .
- Вычисляется и .
- Проверяется условие , так как иначе подпись не будет зависеть от закрытого ключа. Если r = 0, то выбирается другое случайное число k.
- Вычисляется .
- Вычисляется .
- Проверяется условие , так как в этом случае необходимого для проверки подписи числа не существует. Если s = 0, то выбирается другое случайное число k .
Подписью для сообщения М является пара чисел (r, s).
Проверка подписи
[править | править код]- Проверим, что числа r и s принадлежат диапазону чисел (1, n). В противном случае результат проверки отрицательный, и подпись отвергается.
- Вычислить и H(M).
- Вычислить и .
- Вычислить .
- Подпись верна в том и только том случае, когда v = r[19].
Приложения
[править | править код]Большинство криптосистем современной криптографии естественным образом можно «переложить» на эллиптические кривые. Основная идея заключается в том, что известный алгоритм, используемый для конкретных конечных групп, переписывается для использования групп рациональных точек эллиптических кривых:
- алгоритм ECDSA, основывающийся на ЭЦП,
- алгоритм ECDH, основывающийся на алгоритме Диффи — Хеллмана,
- алгоритм ECMQV, основывающийся на MQV, протоколе распределения ключей Менезеса-Кью-Венстоуна,
- ГОСТ Р 34.10-2012,
- факторизация Ленстры с помощью эллиптических кривых,
- dual EC DRBG.
Необходимо отметить, что безопасность таких систем цифровой подписи опирается не только на криптостойкость алгоритмов шифрования, но и на криптостойкость используемых криптографических хеш-функций и генераторов случайных чисел.
По обзору 2013 года, чаще всего используются кривые nistp256, nistp384, nistp521, secp256k1, secp384r1, secp521r1[20].
Примечания
[править | править код]- ↑ Jeffrey Hoffstein, Jill Pipher, Joseph H. Silverman. An introduction to mathematical cryptography. — Springer, 2008. — 524 с. — (Undergraduate Texts in Mathematics). — ISBN 9780387779942.
- ↑ Болотов А. А., Гашков С. Б., Фролов А. Б., Часовских А. А.. Элементарное введение в эллиптическую криптографию. 11 с.
- ↑ "Кодирование чисел в точки на эллиптической кривой в конечном поле и шифрование-дешифрование их". Дата обращения: 29 октября 2019.
- ↑ Жданов О.Н., Золотарев В.В. Методы и средства криптографической защиты информации. 167 с.
- ↑ "Эллиптическая криптография: теория". Архивировано 13 октября 2016. Дата обращения: 13 октября 2016.
- ↑ Recommended Elliptic Curves for Government Use . Дата обращения: 16 декабря 2009. Архивировано 5 июня 2011 года.
- ↑ SEC 2: Recommended Elliptic Curve Domain Parameters
- ↑ Schoof's algorithm (недоступная ссылка)
- ↑ Schoof–Elkies–Atkin algorithm
- ↑ Neal Koblitz. Random Curves: Journeys of a Mathematician. — Springer, 2009. — С. 312-313. — 402 с. — ISBN 9783540740780.
- ↑ FIPS 186-3 Архивировано 7 октября 2013 года. // NIST, 2009; устарел в 2013 году с выходом FIPS 186-4
- ↑ Может показаться, что в этой последовательности допущена ошибка. Однако, последняя величина именно 521, а не 512 битов.
- ↑ Daniel J. Bernstein, Tanja Lange, Security dangers of the NIST curves Архивная копия от 20 декабря 2015 на Wayback Machine // 2013.09.16: "Why did NIST choose these curves? * Most people we have asked: security * Actual NIST design document: eficiency" ([1] Архивная копия от 20 декабря 2013 на Wayback Machine)
- ↑ Daniel J. Bernstein and Tanja Lange. SafeCurves: choosing safe curves for elliptic-curve cryptography. (англ.). safecurves.cr.yp.to (18 ноября 2013). Дата обращения: 20 декабря 2013. Архивировано 20 декабря 2013 года.
- ↑ Евгений Золотов (2013-09-16). "Сноуден и эллиптическое крипто: Bitcoin и TOR вне подозрений, но что с другими проектами?". Компьютерра. Архивировано 20 декабря 2013. Дата обращения: 20 декабря 2013.
- ↑ Dr Michael Scott, Backdoors in NIST elliptic curves Архивная копия от 20 декабря 2013 на Wayback Machine, Oct 24, 2013: "The curves themselves were suggested by Jerry Solinas who worked at the NSA."
- ↑ Чалкин Т.А. Жданов О.Н. Применение эллиптических кривых в криптографии.
- ↑ Жданов О.Н., Золотарев В.В. Методы и средства криптографической защиты информации. 186 с.
- ↑ Ишмухаметов Ш.Т. Методы факторизации натуральных чисел.99 с.
- ↑ Bos et al, Elliptic Curve Cryptography in Practice Архивная копия от 7 февраля 2016 на Wayback Machine // MSR-TR-2013-119, November 2013
Ссылки
[править | править код]- Болотов А.А., Гашков С.Б., Фролов А.Б., Часовских А.А. Алгоритмические основы эллиптической криптографии. — Москва: МЭИ, 2000. — 100 с.
- Болотов А.А., Гашков С.Б., Фролов А.Б., Часовских А.А. Элементарное введение в эллиптическую криптографию. Алгебраические и алгоритмические основы.. — Москва: КомКнига, 2006. — 328 с.
- Жданов О.Н., Золотарев В.В. Методы и средства криптографической защиты информации. — Красноярск: «Город», 2007. — 217 с.
- Ишмухаметов Ш.Т. Методы факторизации натуральных чисел. — Казань: КФУ, 2011. — 190 с.
- Koblitz N.A. Course in number theory and cryptography.. — USA: Springer-Verlag, 1994. — 235 с.