Вы находитесь на странице: 1из 18

Перевод: английский - русский - www.onlinedoctranslator.

com

Криптография на основе эллиптических кривых на практике

Йоппе В. Бос1, Дж. Алекс Халдерман2, Надя Хенингер3, Джонатан Мур,


Майкл Нэриг1и Эрик Вустроу2

1Исследования Майкрософт
2УниверситетМичигана
3
Университет Пенсильвании

Абстрактный.В этой статье мы проводим обзор криптографии на эллиптических кривых


(ECC), как она используется на практике сегодня, чтобы выявить уникальные ошибки и
уязвимости, возникающие в реализациях ECC. Мы изучаем четыре популярных
протокола, которые используют этот тип криптографии с открытым ключом: биткойн,
безопасная оболочка (SSH), безопасность транспортного уровня (TLS) и австрийская
карта электронного удостоверения личности. Мы рады отметить, что примерно 1 из 10
систем поддерживает ECC по протоколам TLS и SSH. Однако мы обнаружили, что,
несмотря на высокие ставки денег, доступа и ресурсов, защищенных ECC, реализации
страдают от уязвимостей, подобных тем, которые преследовали предыдущие
криптографические системы.

1. Введение

Криптография на эллиптических кривых (ECC) [32, 37] все чаще используется на практике для
реализации протоколов шифрования с открытым ключом, например, для реализации цифровых
подписей и согласования ключей. Спустя более 25 лет после их появления в криптографии
практические преимущества использования эллиптических кривых хорошо известны: они
предлагают меньшие размеры ключей [34] и более эффективные реализации [6] при том же
уровне безопасности, что и другие широко распространенные схемы, такие как RSA. [44]. В этой
статье мы приводим два вклада:

• Во-первых, мы изучаем текущее состояние существующих развертываний


эллиптических кривых в нескольких различных приложениях. Certicom выпустила
первый документ, содержащий стандарты для криптографии на основе эллиптических
кривых, в 2000 г., а NIST стандартизировал ECDSA в 2006 г. Как выглядит развертывание
этих алгоритмов в 2013 г.? Чтобы изучить этот вопрос, мы собираем криптографические
данные из ряда различных реальных применений криптографии на эллиптических
кривых: Биткойн [38], безопасная оболочка (SSH) [47], безопасность транспортного
уровня (TLS) [9] и Карта гражданина Австрии [29].
• Затем мы выполняем ряд «проверок работоспособности» собранных нами данных, в
частности открытых ключей, данных обмена ключами и цифровых подписей, чтобы
обнаружить проблемы реализации, которые могут сигнализировать о наличии
криптографических уязвимостей.

Безопасность развернутых асимметричных криптографических схем зависит от предполагаемой


сложности теоретико-числовых задач, таких как целочисленная факторизация и
вычисление дискретных логарифмов в конечных полях или в группах
точек на эллиптической кривой. Тем не менее, большинство реальных
криптографических уязвимостей связаны не со слабостью исходного
предположения о надежности, а скорее с проблемами реализации,
такими как атаки по сторонним каналам, программные ошибки или
недостатки дизайна (см. [26]). Одним из таких примеров являются так
называемые атаки на кэш [40] (см. приложение к асимметричной
настройке в [13]), которые используют шаблон доступа к памяти в
криптографических схемах с использованием зависимых от данных
таблиц поиска. Другой класс проблем связан с реализациями, которые не
обеспечивают достаточной случайности и впоследствии генерируют
ненадежные криптографические ключи. Недавними примерами
реализации, страдающей от недостатка случайности, являются
уязвимость Debian OpenSSL [51],
Чтобы изучить ландшафт реализации криптографии на основе эллиптических кривых, мы
собрали несколько больших наборов криптографических данных:

• Первый (и самый большой) набор данных получен из цепочки блоков Биткойн. Биткойн — это
электронная криптовалюта, и криптография на основе эллиптических кривых занимает центральное
место в ее работе: биткойн-адреса напрямую выводятся из открытых ключей на основе
эллиптических кривых, а аутентификация транзакций осуществляется с использованием цифровых
подписей. Открытые ключи и подписи публикуются как часть общедоступной и проверяемой
цепочки блоков, чтобы предотвратить двойную трату.
• Второй по величине набор данных, который мы собрали, основан на сканировании HTTPS-серверов в
масштабах всего Интернета. Наборы шифров на эллиптических кривых, которые обеспечивают
прямую секретность путем установления сеансового ключа с использованием обмена ключами
Диффи-Хеллмана на эллиптических кривых [19], были представлены в 2006 году, и их популярность
для TLS растет. Этот набор данных включает сообщения обмена ключами сервера Диффи-Хеллмана, а
также открытые ключи и подписи с серверов, использующих ECDSA.
• Мы также выполнили сканирование SSH-серверов в Интернете. Наборы шифров на эллиптических кривых
для SSH были представлены в 2009 году, и они также становятся все более распространенными по мере
расширения поддержки программного обеспечения. Этот набор данных включает сообщения обмена
ключами сервера Диффи-Хеллмана на эллиптической кривой, общедоступные ключи хоста на эллиптической
кривой и подписи ECDSA.

• Наконец, мы собрали информацию о сертификатах, включая открытые ключи из


общедоступной базы данных облегченного протокола доступа к каталогам (LDAP) для
карты гражданина Австрии. Австрийский электронный идентификатор содержит
открытые ключи для шифрования и цифровых подписей, а с 2009 г. предлагаются
подписи ECDSA.

Наши основные результаты можно классифицировать следующим образом.

Развертывание.Криптография на эллиптических кривых далеко не поддерживается в качестве


стандартной опции в большинстве криптографических развертываний. Несмотря на то, что три
кривые NIST были стандартизированы для 128-битного уровня безопасности или выше,
наименьший размер кривой, secp256r1, используется чаще всего. Похоже, что многие серверы
предпочитают кривые, определенные меньшим полям.
Слабые ключи.Мы наблюдали значительное количество не связанных между собой пользователей,
совместно использующих открытые (и, следовательно, закрытые) ключи как в TLS, так и в SSH. Некоторые
из этих случаев были связаны с развертыванием виртуальных машин, которые явно дублировали ключи в
разных экземплярах; другие мы смогли приписать ключам по умолчанию или низкоэнтропийным ключам,
сгенерированным встроенными устройствами, такими как сетевой брандмауэр.

Уязвимые подписи.ECDSA, как и DSA, обладает тем свойством, что плохая случайность,
используемая во время генерации подписи, может поставить под угрозу ключ долгосрочной
подписи. Мы обнаружили несколько случаев плохой случайности подписи, используемой в
биткойнах, что может позволить (и позволило) злоумышленникам украсть деньги у этих
клиентов. По-видимому, существуют различные причины плохой случайности, в том числе
тестовые значения для редко используемых реализаций и, что наиболее заметно, ошибка
Android Java, обнаруженная ранее в этом году (см. [35] для обсуждения этой ошибки в
Android и связанных реализациях Java). .

2 предварительных

В этом разделе кратко обсуждаются стандартизированные эллиптические кривые, которые в основном


используются на практике. Он также исправляет нотацию для пар открытого ключа и эллиптической
кривой и вводит основные понятия для создания ключа и цифровых подписей в настройке эллиптической
кривой.

Эллиптические кривые, используемые на практике.Во-первых, мы кратко повторим


стандартизированные эллиптические кривые, которые чаще всего используются в реальных
приложениях. Все эти кривые даны в их краткой форме Вейерштрасса.Е:у2знак равноИкс3+топор+б
и определены над конечным полемФп, кудар >3 простое иа, беФп. Учитывая такую кривую Е,
криптографическая группа, используемая в протоколах, представляет собой большую подгруппу
простого порядка группыЕ(Фп) изФп-рациональные точки наЕ. Группа рациональных
точек состоит из всех решений (х, у)еФ2 пк уравнению кривой вместе с
точка в бесконечности, нейтральный элемент. КоличествоФп-рациональных точек
обозначается #Е(Фп) и простой порядок подгруппын. Неподвижную образующую
циклической подгруппы обычно называют базовой точкой и обозначаютграммеЕ(Фп).
В стандарте FIPS 186-4 [50] NIST рекомендует пять эллиптических кривых для использования в
алгоритме цифровой подписи на основе эллиптических кривых, предназначенном для пяти различных
уровней безопасности. Каждая кривая определяется над простым полем, определяемым обобщенным
простым числом Мерсенна. Такие простые числа допускают быстрое сокращение на основе работы
Солинаса [46]. Все кривые имеют одинаковый коэффициентазнак равно−3, предположительно выбранных
из соображений эффективности, и все их групповые порядки простые, а это означает, чтонзнак равноЕ(Фп
). Пять рекомендуемых простых чисел

п192знак равно2192−264−1, п224знак равно2224−296+1,


п256знак равно2256−2224+2192+296−1, п384знак равно2384−2128−296+232−1, п521знак
равно2521−1.

В стандарте эти кривые называются P-192. П-224, П-256, П-384 и П-521, но на


практике они также фигурируют какнистп192, нистп224и т. д. Эти кривые
наряду с другими также рекомендованы Certicom в стандартах эффективной
криптографии SEC2 [15], в которых кривые названысекп192р1, секп224р1,
секп256р1, секп384р1, секп521р1.Но иногда используются и другие названия,
например П-192 и П-256.премьер192v1а такжепремьер256v1в OpenSSL.
Для 256-битных простых чисел в дополнение к кривой NIST, определенной наФп256,SEC2 также
предлагает кривую с именемsecp256k1определяется надФпкудапзнак равно2256−232−
977. Эта кривая используется в Биткойне. Он имеет 256-битный простой порядок.
Интересно, что этот выбор отличается от сделанного в FIPS 186-4 тем, что коэффициенты
кривой азнак равно0 ибзнак равно7. Это означает, чтоsecp256k1имеетДж-инвариант 0 и,
таким образом, обладает очень специальной структурой. Кривая сДж-инвариант 0 имеет
эффективно вычисляемые эндоморфизмы, которые можно использовать для ускорения
реализации, например, используя разложение GLV для скалярного умножения [25]. Так как
дляsecp256k1п≡1 (mod 6), существует примитивный корень 6-й степени из единицыζеФпи
соответствующий автоморфизм кривойψ:Е→Э,(х, у)7→(ζx,−y). Эта карта позволяет быстро
вычислить определенные множители любой точки.пеЕ(Фп), а именноψ(пзнак равноλп для
целого числаλсλ6≡1 (модн). Но эффективные эндоморфизмы не только ускоряют скалярное
умножение, они также ускоряют ро-алгоритм Полларда [41] для вычисления дискретных
логарифмов [23]. Группа автоморфизмовЕимеет порядок 6 и генерируется картойψвыше.
Напротив, эллиптическая кривая сДж- инвариант, отличный от 0 и 1728, имеет только
группу автоморфизмов порядка 2, s√Учтите, что ускорение в ро-алгоритме Полларда
является постоянным коэффициентом до
2 по такой кривой.
Еще одним следствием большей группы автоморфизмов является существование шести
поворотов (включая саму кривую и стандартный квадратичный поворот). Реализация с
использованиемИкс-координатная арифметика (такая как формулы в [11]) должна обращать
внимание на безопасность кривой (см. [2, 3]). Это означает, что его квадратичный поворот должен
иметь достаточно большой простой делитель, чтобы задача дискретного логарифмирования на
повороте была достаточно сложной. Это предотвращает атаку с использованием
недействительной кривой, при которой злоумышленник получает множители с секретными
скалярами точки на квадратичном повороте, например, путем внедрения ошибки [24].
Квадратичный поворотsecp256k1 имеет 220-битный простой множитель и, таким образом, может
считаться защищенным от перекручивания (например, как в [5]). Реализация без лестницы
(использующая какИкс- а такжеу-координаты) может быть скомпрометирован атакой с
использованием недействительной кривой, если реализация не проверяет, удовлетворяет ли
точка правильному уравнению кривой [7]. Это может привести к более серьезному нападению на
secp256k14поскольку злоумышленник может получить скалярные множители с секретными
скалярами точки на любой кривой надФпс коэффициентомазнак равно0, т.е. на любом изsecp256k1'
с поворотами. Наибольшие простые делители групповых порядков оставшихся четырех поворотов
имеют размер 133, 188, 135 и 161 бит соответственно, но есть несколько других меньших простых
делителей, которые предлагают больше вариантов для атаки по недопустимой кривой.

Эллиптические пары открытых ключей.Учитывая набор параметров домена, который включает в


себя выбор простого базового поляп, эллиптическая криваяЭ/Фп, и базовая точка граммпорядкан
наЕ, пара ключей эллиптической кривой (д, Q) состоит из закрытого ключаг,

4Эта недопустимая кривая атака наsecp256k1было упомянуто использование инъекции ошибок


ранее, например, Пауло С.Л.М. Баррето (@pbarreto): «Другими словами: имея 13 ошибок и
хороший компьютер, можно взломать secp256k1 (и Биткойн) за 1 минуту», 21 октября
2013 г., 22:20, Твитнуть.
который представляет собой случайно выбранное ненулевое целое число по модулю группового порядкан
, и открытый ключВопросзнак равнодГ,г- кратное базовой точкеграмм. Таким образом, точкаВопрос—
случайно выбранная точка в группе, сгенерированнойграмм.

Обмен ключами эллиптической кривой.Существует несколько различных стандартизированных


протоколов обмена ключами (см. [48, 16]), расширяющих базовый протокол Диффи-Хеллмана на
эллиптических кривых, который работает следующим образом. Чтобы договориться об общем ключе,
Алиса и Боб по отдельности генерируют пары ключей (га,Qа) а также (гб,Qб). Затем они обмениваются
открытыми ключами.Вопросаа такжеВопросб, так что каждый может вычислить точкупзнак равногаВопрос
бзнак равногбВопросаиспользуя их соответствующие закрытые ключи. Общий секретный ключ получен из
пключевой функцией вывода, обычно применяемой к ееИкс-координата.

Цифровые подписи на эллиптических кривых.Алгоритм цифровой подписи на эллиптических


кривых (ECDSA) был стандартизирован в FIPS 186-4 [50]. Подписавшая сторона генерирует пару
ключей (д, Q), состоящий из закрытого ключа подписиги открытый ключ проверки Вопросзнак
равнодГ. Чтобы подписать сообщением, подписывающая сторона сначала выбирает случайное
целое число для каждого сообщенияктакой, что 1≤к≤п-1, вычисляет точку (Икс1, у1знак равнокг,
трансформирует Икс1в целое число и вычисляетрзнак равноИкс1модн. Сообщениемхэшируется в
битовую строку длиной не более битовой длинын, который затем преобразуется в целое числое.
Подписьмэто пара(р, с) целых чисел по модулюн, куда сзнак равнок−1(е+доктор) модн. Обратите
внимание, чтора такжесдолжен быть отличен от 0, ик не должен раскрываться и должен быть
секретом для каждого сообщения, что означает, что его нельзя использовать более чем для одного
сообщения.
Важно, чтобы секрет каждого сообщениякне раскрывается, так как в противном случае
секретный ключ подписигможет быть вычисленог≡р−1(кс - е) (модн) потому что ра такжес
указаны в подписи иеможет быть вычислено из подписанного сообщения. Даже если
известны только несколько последовательных битов секретов сообщений для
определенного количества подписей, можно вычислить закрытый ключ (см. [30]). Кроме
того, если одно и то же значение длякиспользуется для подписи двух разных сообщенийм1
а такжем2используя тот же ключ подписиги поставить подписи(р, с1) а также (р, с2),
тогдакможно легко вычислить какк≡(с2−с1)−1(е1−е2) (модн), что затем позволяет
восстановить секретный ключ.
Одним из решений предотвращения генерации предсказуемых или повторяющихся одноразовых номеров
является детерминированное создание одноразовых номеров из закрытого ключа и сообщения [42].

3 применения эллиптических кривых

В этом разделе мы рассмотрим развертывание криптографии на основе эллиптических кривых в реальном мире и
предоставим статистику по использованию.

Биткойн.Криптовалюта Биткойн представляет собой распределенную одноранговую


цифровую валюту, которая позволяет «отправлять онлайн-платежи напрямую от одной
стороны к другой, минуя финансовое учреждение» [38]. (Общедоступная) цепочка блоков
Биткойн — это журнал всех когда-либо выполненных транзакций. Каждый блок в этом
журнале содержит хэш SHA-256 [49] предыдущего блока, тем самым связывая блоки вместе,
начиная с так называемого блока генезиса. В биткойнах закрытый ключ ECDSA обычно
служит учетной записью пользователя. Передача права собственности
биткойнов от пользователяАпользователюБреализуется путем прикрепления цифровой
подписи (с использованиемАзакрытый ключ пользователя) хэша предыдущей транзакции и
информация об открытом ключе пользователяБв конце новой транзакции. Подпись может
быть проверена с помощью пользователяАоткрытый ключ из предыдущей транзакции.
Другие вопросы, такие как предотвращение двойных расходов, обсуждаются в исходном
документе [38].
Криптографические подписи, используемые в Биткойне, являются подписями
ECDSA и используют кривуюsecp256k1 (см. раздел 2). Учитывая открытый ключ ECDSA
(возможно, сжатый)К, биткойн-адрес генерируется с использованием
криптографических хеш-функций SHA-256 и RIPEMD-160 [21]. Открытый ключ дважды
хешируется: HASH160 = RIPEMD-160(SHA-256(К)). Биткойн-адрес вычисляется
непосредственно из этого значения HASH160 (где‖обозначает конкатенацию) как

base58 (0x00‖HASH160‖ бША-256(ША-256(0x00‖ХЭШ160))/2224с),

где base58 — это схема преобразования двоичного кода в текст.


Участвуя в одноранговой сети Биткойн, мы загрузили цепочку блоков Биткойн до
номера блока 252 450 (все транзакции до середины августа 2013 года) в формате
Berkeley DB [39]. Мы извлекли 22 159 078 транзакций в виде обычного текста: в
результате был получен один файл размером 26 ГБ. В нашем наборе данных у нас есть
46 254 121 действительный открытый ключ, содержащий точку эллиптической кривой
на кривой, и 15 291 112 из этих точек уникальны. Имеется 6 608 556 уникальных точек,
представленных в сжатом (только x-координата) формате и 8 682 692 уникальных
точки в несжатом формате (мы нашли 136 точек, которые встречаются как в сжатых,
так и в несжатых открытых ключах). Поскольку трудно сказать, связано ли повторное
использование адреса с тем, что один и тот же пользователь повторно использует
свой ключ в биткойне (см., например, [43, 36] о конфиденциальности и анонимности в
биткойне),
В настоящее время (январь 2014 г.) в обращении находится более 12,2 млн биткойнов с
оценочной стоимостью более 10 млрд долларов США. Биткойн анализировался ранее в различных
условиях (например, [1, 45]), но мы выполняем, насколько нам известно, первую асимметричную
криптографическую проверку «вменяемости»; см. раздел 4.1.

Безопасная оболочка (SSH).Криптография на основе эллиптических кривых может использоваться


в трех местах протокола SSH. В SSH-2 сеансовые ключи согласовываются с использованием обмена
ключами Диффи-Хеллмана. RFC 5656 [47] определяет эфемерный метод обмена ключами Диффи-
Хеллмана на эллиптической кривой, используемый в SSH, после SEC1 [16]. У каждого сервера есть
ключ хоста, который позволяет серверу аутентифицировать себя для клиента. Сервер отправляет
свой ключ хоста клиенту во время обмена ключами, и пользователь проверяет, соответствует ли
отпечаток ключа их сохраненному значению. Затем сервер аутентифицирует себя, подписывая
стенограмму обмена ключами. Этот ключ хоста может быть открытым ключом ECDSA [47]. Наконец,
клиенты могут использовать открытые ключи ECDSA для аутентификации клиентов.

Мы исследовали состояние развертывания эллиптической кривой на стороне сервера для SSH,


просканировав все общедоступное пространство IPv4 в октябре 2013 года на наличие ключей хоста SSH,
значений Диффи-Хеллмана для сервера и значений подписи. Мы также собрали список наборов шифров
для обмена ключами и проверки подлинности, предлагаемых каждым сервером. Мы использовали
ZMap [22], быстрый сканер портов в Интернете, для сканирования хостов с открытым
портом 22 и попытки рукопожатия протокола SSH с адресами, принимающими
соединения на порту 22.
Чтобы сосредоточиться на значениях эллиптической кривой, наш клиент предложил только наборы
шифров эллиптической кривой. Это привело к тому, что мы обнаружили несколько реализаций, которые
давали неожиданные ответы на наше SSH-рукопожатие, не соответствующее стандартам: серверы,
которые предоставляли открытые ключи RSA или DSA первого порядка, или серверы, которые
предоставляли пустые ключи.

Из 12 114 534 хостов, на которых мы успешно собрали набор наборов


шифров, 1 249 273 (10,3%) поддерживали набор шифров ECDSA для ключа хоста.
Из них 1 247 741 (99,9%) поддержалиecdsa-sha2-nistp256,74 поддерживаетсяecdsa-
sha2-nistp384,и 1458 (0,1%) поддержалиecdsa-sha2-nistp521.1 674 700 хостов
(13,8%) поддерживали ту или иную форму обмена ключами ECDH. Из них 1 672
458 (99,8%) поддержали комплектыecdh-sha2-nistp256, ecdh-sha2-nistp384, ecdh-
sha2-nistp521в порядке повышения безопасности, а 25 поддержали их в обратном
порядке. Мы успешно собрали 1 245 051 открытый ключ P-256, 73 P-384 и 1436
P-521. Кроме того, 458 689 серверов ответили открытым ключом DSA, 29 648
ответили открытым ключом RSA, а 7 935 ответили пустым ключом хоста, несмотря
на то, что наш клиент заявлял только о поддержке ECDSA. Среди хостов,
ответственных за эти ответы, были несколько видов маршрутизаторов и
встроенных устройств, в том числе от Huawei и Mikrotik.
Безопасность транспортного уровня (TLS).В TLS эллиптические кривые могут возникать в
нескольких местах протокола. RFC 4492 [9] определяет наборы шифров на основе эллиптических
кривых для TLS. Все наборы шифров, указанные в этом RFC, используют обмен ключами Диффи-
Хеллмана на эллиптических кривых (ECDH). Ключи ECDH могут быть либо долгосрочными (в этом
случае они повторно используются для разных обменов ключами), либо эфемерными (в этом
случае они генерируются повторно для каждого обмена ключами). Сертификаты TLS также
содержат открытый ключ, который сервер использует для аутентификации. при обмене ключами
ECDH этот открытый ключ может быть либо ECDSA, либо RSA.
Поддержка ECC была добавлена в TLS [9] посредством дополнительного набора
наборов шифров и трех расширений в приветственных сообщениях клиента и сервера.
Наборы шифров указывают на поддержку определенного выбора алгоритмов обмена
ключами, проверки личности, шифрования и проверки подлинности сообщений. Например,
набор шифровTLS ECDHE RSA С AES 128 CBC SHAиспользует эфемерный ECDH для обмена
ключами, подписанный ключом RSA для проверки личности, и использует AES-128 [18] в
режиме CBC для шифрования и хеш-функцию SHA-1 в HMAC для аутентификации
сообщений. Кроме того, если требуется набор шифров, включающий ECC, клиент должен
включить набор поддерживаемых эллиптических кривых в расширение TLS в своемклиент
приветсообщение.
В отличие от SSH, сервер TLS не отправляет свои полные предпочтения наборов шифров или
кривых, которые он поддерживает. Вместо этого клиент отправляет свой список поддерживаемых
наборов шифров и эллиптических кривых, а сервер либо отвечает одним набором шифров из
этого списка, либо закрывает соединение, если он не поддерживает какие-либо общие наборы
шифров с клиентом. Если для пакета требуется ECC, сервер также включает только один тип
кривой вместе с ключом или подписью. Это делает обучение
какие кривые сервак поддерживает сложнее; клиент должен использовать несколько соединений
TLS, чтобы предложить различный набор кривых, чтобы узнать список поддерживаемых сервером
наборов.
В октябре 2013 года мы использовали ZMap [22] для сканирования адресного пространства IPv4 на порту
443, и использовал программу, управляемую событиями, для отправки специально
созданногоклиент привет сообщение каждому хосту с открытым портом. Мы предложили 38
наборов шифров ECDH и ECDHE и 28 различных эллиптических кривых. Из 30,2 миллиона
хостов с открытым портом 443 2,2 миллиона (7,2%) поддерживали ту или иную форму ECDH и
предоставляли открытый ключ ECC вместе с информацией о том, какую кривую он
использует. Затем мы снова подключились к этим хостам, исключив их известный
поддерживаемый тип кривой из нашего списка.клиент привет's список кривых. Мы
повторяли этот процесс до тех пор, пока у нас не был пустой список кривых, сервер
отключился с ошибкой или сервер представил кривую, которую им не предлагали
(нарушение протокола). Этот процесс позволил нам изучить поддержку каждого сервера по
нашим 28 кривым. Мы обнаружили, что наиболее часто поддерживаемый тип кривой на 2,2
миллионах хостов с поддержкой ECC былсекп256р1,поддерживается 98% хостов. Кривые
secp384r1а также secp521r1были поддержаны 80% и 17% соответственно, а остальные
кривые поддержали менее 3% хостов каждая. Это говорит о том, что большинство хостов
предпочли более низкие затраты на вычисления и пропускную способность повышенной
безопасности. Мы отмечаем, что мы не можем вывести упорядоченное предпочтение
кривых для серверов TLS, как мы можем в SSH, потому что серверы TLS просто выбирают
первую поддерживаемую кривую из клиентского (упорядоченного) списка.

Австрийский электронный идентификатор.Физические смарт-карты все чаще используются для


аутентификации пользователей. Эти смарт-карты содержат криптографические аппаратные модули,
которые выполняют криптографические вычисления; чаще всего эти карты содержат закрытые ключи для
шифрования и подписи. Криптография на основе эллиптических кривых является привлекательным
вариантом для таких типов развертывания из-за меньшего размера ключа и вычислительной сложности
по сравнению с RSA или большими группами простого порядка.
Национальные карты электронного удостоверения личности Австрии содержат открытый ключ RSA
или ECDSA и могут использоваться для предоставления юридически обязывающих цифровых подписей.
Мы собрали 828 911 сертификатов карты гражданина из базы данных LDAP.ldap.a-trust.at в январе 2013
года. Каждый сертификат содержал открытый ключ и подпись RSA от центра сертификации. 477 985 (58%)
сертификатов содержали открытый ключ эллиптической кривой, и 477 785 сертификатов были правильно
проанализированы с использованием OpenSSL. Из них 253 047 использовали кривую P-192, а 224 738
использовали кривую P-256.

4 Криптографическая проверка работоспособности

Существует долгая история практических проблем в криптографии, связанных с


недостаточной случайностью. Самый печально известный пример в недавней истории —
уязвимость Debian OpenSSL [51]: изменение кода 2006 года предотвратило включение
любой энтропии в пул энтропии OpenSSL, так что состояние пула зависело только от
идентификатора процесса и архитектуры. хост-машины. Фиксированное количество
криптографических ключей, одноразовых номеров или других случайных значений
заданного размера могут быть сгенерированы этими реализациями. Проблема была
обнаружена в 2008 году.

В 2012 году две разные группы исследователей независимо показали, что


значительное количество ключей RSA (не считая ключей, пострадавших из-за
ошибки Debian OpenSSL) небезопасны из-за недостаточной случайности [33, 28].
В последнем документе также были рассмотрены ключи и подписи хоста DSA SSH
простого порядка, и было обнаружено, что значительное количество ключей
хоста SSH может быть скомпрометировано из-за плохой случайности во время
генерации подписи. Большинство уязвимых ключей были связаны с плохой
энтропией, доступной при первой загрузке на встроенных и автономных
устройствах с ограниченными ресурсами, таких как маршрутизаторы. В 2013 году
в другом документе было показано, что ряд ключей RSA, полученных из
национальной базы данных цифровых сертификатов гражданина Тайваня, могут
быть учтены [4] из-за неисправного аппаратного генератора случайных чисел на
криптографических смарт-картах.

Генерация ключей.Открытый ключ эллиптической кривой представляет собой точку


Вопросзнак равнодГкоторый кратен генераторуграммза 1≤д < п. Плохая случайность
может проявляться в повторяющихся значенияхг, и, таким образом, повторяющиеся
открытые ключи, наблюдаемые в дикой природе. В отличие от RSA, где плохие
генераторы случайных чисел и ошибки привели к различным модулям RSA, которые
могут быть факторизованы с использованием алгоритма наибольшего общего
делителя, когда они имеют ровно один общий простой делитель, открытый ключ
эллиптической кривой, по-видимому, не имеет аналогичного свойства. Нам
неизвестны какие-либо подобные математические свойства одних только открытых
ключей, которые могут привести к полной компрометации закрытых ключей, и они
вряд ли существуют, поскольку дискретные логарифмы обладают сильными
хардкорными свойствами [10, 31]. Мы проверили наличие этих проблем путем поиска
коллизий точек эллиптических кривых, представленных в открытых ключах. Однако
на практике нередки случаи, когда один и тот же открытый ключ встречается
несколько раз:

Повторяющиеся секреты подписи каждого сообщения.Подписи ECDSA рандомизированы: каждая


подпись состоит из двух значений (р, с): Значениерполучен из эфемерного открытого ключакг
генерируется с использованием случайного секрета для каждого сообщенияки значение подписис
это зависит отк. Для безопасности ECDSA важно, чтобы подписавшие использовали
непредсказуемые и разные значения длякдля каждой подписи, поскольку предсказуемые или
повторяющиеся значения позволяют злоумышленнику эффективно вычислить долгосрочный
закрытый ключ из одного или двух значений подписи, как описано в разделе 2. В широко
известном сбое в системе безопасности игровая консоль Sony PlayStation 3 использовала
постоянное значение для подписей, сгенерированных с использованием их ключа подписи кода
ECDSA, что позволяет хакерам вычислить секретный ключ подписи кода [14].

Мы проверили наличие этих проблем, проанализировав каждую подпись и проверив


конфликтующие значения эфемерного открытого ключа.
4.1 Биткойн

Неожиданные, недопустимые и известные слабые значения.Мы проверили открытые


ключи, соответствующие бесконечно удаленной точке, точки, не лежащие на кривой, и
«открытые ключи», которые, возможно, не имеют соответствующих закрытых ключей.
Кроме того, мы сгенерировали большой список точек эллиптической кривой, для которых
известен закрытый ключ. Это реализуется путем умножения генератора кривой, указанного
в стандарте, на различные целые числа.сиз разных наборов в надежде, что плохая энтропия
могла породить эти скаляры. Мы вычислили скалярное умножение эллиптической кривойсг
для этих различных значений скаляраси сохранилИкс- координата этой результирующей
точки в базе данных (путем ограниченияИкс-coordinate мы представляем обе точки±сг). Мы
проверили эти самостоятельно сгенерированные точки в этой базе данных со всеми
точками эллиптических кривых, извлеченными из открытых ключей и подписей ECDSA,
чтобы проверить, обнаруживаем ли мы коллизии: если они есть, мы можем вычислить
закрытый ключ. Мы рассмотрели три разных множества в условияхsecp256k1 кривая
(используемая в биткойнах) и кривая NIST P-256. Первый набор содержит маленькие целые
числая: где 100≤я≤106. Второй набор содержит 256 (битовых) скаляров.
малого веса Хэмминга: мы использовали целые числа веса Хэмминга единица (256знак равно256
() () 1
скаляры), два (256знак
2 равно32 640 скаляров), и три (256знак равно2
3 763 520 скаляров). Третий
набор содержит уязвимые ключи Debian OpenSSL. Мы сгенерировали набор скаляров,
созданных сломанной реализацией Debian OpenSSL, запущенной на 64-битной реализации
архитектуры с прямым порядком следования байтов. Для кривой Биткойн мы расширили
первый набор, также приняв во внимание скалярыiλтакое, что скалярное умножение
соответствуетiλPзнак равноψ(IP) (см. раздел 2).
Мы обнаружили, что на практике использовались два значения из набора малых целых
чисел: биткойн-адреса, соответствующие секретному ключу 1 и 2. Для секретного ключа 1
использовались оба адреса, полученные из сжатой и распакованной публичной точки, в то
время как для в секретном скаляре 2 использовался только адрес распакованной точки. На
практике появилось одно значение из набора весов Хэмминга one, адрес которого
соответствует распакованному открытому ключу 268грамм. Все эти три адреса в настоящее
время имеют нулевой баланс.
Повторяющиеся секреты для каждого сообщения.Мы извлекли из подписей 47 093 121 точку
эллиптической кривой и проверили их правильность: т. е. точки находятся на кривой
secp256k1 (см. раздел 2). Мы также искали повторяющиеся одноразовые номера в подписи и
обнаружили, что 158 уникальных открытых ключей использовали одни и те же одноразовые
номера подписи.рзначение более чем в одной подписи, что позволяет вычислить закрытые
ключи этих пользователей. Мы обнаружили, что общий остаток средств на всех 158 счетах
невелик: всего 0,00031217 BTC, что меньше комиссии за транзакцию, необходимой для их
получения. Однако мы находим тот единственный адрес,
1HKywxiL4JziqXrzLKhmB6a74ma6kxbSDj,кажется, украл биткойны с 10 из этих адресов. Этот
аккаунт совершил 11 транзакций в период с марта по октябрь 2013 года. Каждая транзакция
содержала входные данные с адресов, которые дублировали одноразовые номера подписи
и фигурируют в нашем списке. Эти транзакции принесли этому счету более 59 биткойнов
(примерно 48 000 долларов США).
Чтобы понять первопричины повторяющихся одноразовых номеров подписи, мы
построили граф транзакций, начиная с уязвимых адресов и добавляя ребра.
Рис. 1. Визуализация транзакций между биткойн-адресами, которые дублируют одноразовые номера
подписи (красный), и адресами, отстоящими на один (желтый) и два (синий) перехода в графе транзакций.
Уникальный шаблон на графиках предполагает, что несколько различных реализаций или шаблонов
использования могут быть виноваты в генерации повторяющихся одноразовых номеров, которые
раскрывают закрытые ключи пользователей.

на другие адреса, указывающие, отправляли ли они или получали биткойны друг


другу. Затем мы создали ребра из этих адресов второго уровня, завершив граф на 2
градуса от исходных уязвимых ключей. Это привело к пяти различным связанным
компонентам, причем самый большой связанный компонент содержал 1649 адресов.
На рис. 1 показаны второй и третий по величине связные графы. Уникальные
шаблоны этих двух графиков предполагают, что существует несколько наборов
уникальных пользователей или реализаций, создающих эти типы сбоев.
Нам удалось идентифицировать три ключа, принадлежащих Bitcoincard [8], встроенному устройству,
которое действует как автономный биткойн-клиент. Мы также обнаружили несколько учетных записей
Blockchain.info, которые дублировали одноразовые номера из-за ошибки в генераторе случайных чисел
Javascriptclient, который не был правильно заполнен [27]. Затем эти средства были впоследствии
переведены на тот же адрес, указанный выше. В некоторых случаях повторение одноразового номера
может быть преднамеренным: существует схема временных меток для Биткойн, которая преднамеренно
пропускает закрытый ключ транзакции, преднамеренно используя один и тот же случайный одноразовый
номер [17]. Если эта схема будет реализована и протестирована, то это может объяснить очень маленькие
транзакции, подписанные с дублированными одноразовыми номерами.

Нерасходуемые биткойны.Можно перевести биткойны на счет, для которого (скорее всего)


не существует соответствующей пары криптографических ключей. Эти биткойны навсегда
остаются на этих счетах и, по сути, изымаются из обращения. Это может привести к
дефляции: увеличению стоимости других (расходуемых) биткойнов. Мы исследуем нижнюю
границу количества «нерасходуемых» биткойнов. Поскольку значения HASH160 и биткойн-
адреса (которые непосредственно получены из этого значения HASH160) являются
неотъемлемой частью цепочки блоков биткойнов (то есть истории транзакций), люди
использовали «интересные» недопустимые значения для открытого ключа ECDSA или
использовали значение HASH160 для встраивания сообщения. Такие транзакции по адресам
без соответствующей пары криптографических ключей возможны.
HASH160 Биткойн-адрес баланс в BTC
0000000000000000000000000000000000000000 1111111111111111111114oLvT2 2.94896715
0000000000000000000000000000000000000001 11111111111111111111BZbvjr 0.01000000
0000000000000000000000000000000000000002 11111111111111111111HeBAGj 0.00000001
0000000000000000000000000000000000000003 11111111111111111111QekFQw 0.00000001
0000000000000000000000000000000000000004 11111111111111111111UpYBrS 0.00000001
0000000000000000000000000000000000000005 11111111111111111111g4hiWR 0.00000001
0000000000000000000000000000000000000006 11111111111111111111jGyPM8 0.00000001
0000000000000000000000000000000000000007 11111111111111111111o9FmEC 0.00000001
0000000000000000000000000000000000000008 11111111111111111111ufYVpS 0.00000001
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 1GZQKjsC97yasxRj1wtYf5rC61AxpR1zmr 0.00012000
ffffffffffffffffffffffffffffffffffffffff 1QLbz7JHiBTspS962RLKV8GndWFwi5j6Qr 0.01000005
151 различных значений ASCII HASH160 1.32340175

публичный действительный указать на


Биткойн-адрес баланс в BTC
ключ кодирование изгиб
∅ 5 5 1HT7xU2Ngenf7D4yocz2SAcnNLW7rK8d4E 68.80080003
00 1FYMZEHnszCHKTBdFZ2DLrUuk3dGwYKQxh 2.08000002
01. 2.8.0 5 5 13VmALKHkCdSN1JULkP6RqW3LcbpWvgryV 0.00010000
0401. 2.6.0 5 16QaFeudRUt8NYy2yzjm3BMvG4xBbAsBFM 0.01000000
Таблица 1: Сводка интересных значений HASH160 и открытого ключа, используемых в цепочке
блоков Биткойн, с соответствующим адресом Биткойн и балансом. Скорее всего, эти адреса не
имеют действительного закрытого ключа, в результате чего остаток на счете нельзя потратить.
Точки в обозначении 01.2.8.0 представляют 128 нулей (всего в ключе 130 нулей). Мы обнаружили,
что эти адреса содержат в общей сложности 75 BTC, которые невозможно потратить.

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

Интересные значения HASH160.Поскольку для генерации биткойн-адреса не требуется


криптографический ключ, а требуется только значение HASH160, наша первая идея состояла в том,
чтобы проверить адреса, которые имеют значение HASH160, которое представляет собой
небольшое целое число.я, где 0≤я <100. Мы обнаружили, что все первые девять значений
существуют и имеют ненулевой баланс. Это побудило нас искать повторяющиеся шаблоны, когда
HASH160 отображается в шестнадцатеричном формате. Все эти 16 возможностей существуют, и три
из них имеют ненулевой баланс; см. Таблицу 1.
Люди иногда использовали значения HASH160 для встраивания строки в кодировке
ASCII в одно или несколько значений HASH160 внутри транзакции. ASCII кодирует 128
специальных символов (97 печатных и 33 непечатных). Вероятность того, что открытый
ключ ECDSA приведет к шестнадцатеричной записи HASH160, содержащей:
только символы ASCII - 2−20(где мы предполагаем, что используемые криптографические
хеш-функции выводят однородные случайные данные). Наш набор данных содержит 53 019
716 значений HASH160 (16 526 211 уникальных). Следовательно, мы ожидаем найти
примерно 16 действительных биткойн-адресов со значением HASH160, содержащим только
символы ASCII. В нашем наборе данных мы нашли 248 значений HASH160 только для ASCII
(180 уникальных). Из них 20 уникальных адресов потратили свои деньги; т.е. они
соответствуют действительному биткойн-адресу. Это соответствует нашей оценке 16. Из
остальных 160 уникальных адресов 137 имеют ненулевой баланс. При проверке этих
значений становится ясно, что люди вставляли различные сообщения в историю
транзакций Биткойн (сообщения варьируются от сообщения с днем рождения до дани).
Обычно в этих транзакциях используется лишь небольшое количество биткойнов.
Подробности см. в Таблице 1.
Интересные открытые ключи ECDSA.Следуя тем же рассуждениям, что и в настройке HASH160,
можно использовать «интересные» значения для самого открытого ключа. Прежде чем мы
наметим наш поиск таких значений, давайте вспомним формат открытых ключей ECDSA, как
указано в [16], где мы предполагаем, что ключи представлены в их шестнадцатеричном значении
(это настройка, используемая в биткойне). Точкапзнак равнох, у) можно представить следующим
образом, гдепзнак равно2256−232−977 — это простое число, используемое в биткойнах.

• Еслипточка в бесконечности, то она представлена одним байтом00.


• Аннесжатыйточка начинается с байта04затем 256-битныйИкс- и 256-битныйу
-координата точки (04‖Икс‖у). Отсюда 2гжурнал2(п)/8е+1 = 65 байт
используются для представления точки.
• Точкасжатыйсначала вычислив бит четностибпринадлежащийу-координировать какб
знак равноуmod 2) + 2 и преобразовать это в байтовое значение (б∈ {02,03}). гжурнал2(п
)/8е+1 = 33-байтовая сжатая точка записывается какб‖Икс.

Подобно поиску HASH160, мы начали с поиска точек, которые кодируют небольшое


целочисленное значение. Мы сгенерировали все биткойн-адреса, соответствующие
открытым ключам со значениями первых 256 целых чисел.я(0≤я <256) и различные
значения бита четности. Мы использовали один байт, содержащийя, 33-байтовое значение
б‖0.6.0.0‖я,б∈ {00,02,03}и 65-байтовое значениеб‖01.2.4.0‖я, за б∈ {00,04}. Мы нашли три
адреса с ненулевым балансом: однобайтовый 00,и 65-байтовыйб‖01.2.4.0‖язаязнак равно00а
такжеб∈ {00,04}. Эта первая точка — это точка в бесконечности, которая является правильно
закодированной и действительной точкой на кривой. Обратите внимание, однако, что это
значение явно запрещено в качестве открытого ключа [16], поскольку оно может
встречаться только для закрытого ключа.гзнак равно0, что недопустимо. Кажется, что 65-
байтовые значения пытаются закодировать точку в бесконечности: в случае, когдабзнак
равно00кодировка недействительна, а в случаебзнак равно04кодировка верная, но точка (х,
у) = (0,0) не находится на кривой.
При поиске других значений мы также пробовали пустой открытый ключ (∅). Этот адрес содержит
значительное количество биткойнов (более 68 BTC). Мы подозреваем, что деньги были переведены на
этот счет из-за программных ошибок. Эти результаты включены в Таблицу 1. В общей сложности мы
обнаружили, что не менее 75 BTC (более 61 000 долларов США) были переведены на счета, которые
(скорее всего) не имеют действительного соответствующего закрытого ключа ECDSA. Обратите внимание,
что это строго нижняя граница количества биткойнов, которые невозможно потратить, поскольку мы не
утверждаем, что этот список является полным.
4.2 Безопасная оболочка (SSH)

Дублирование открытых ключей.Сканирование SSH в августе 2013 года собрало 1 353 151 действительный
открытый ключ на эллиптической кривой, из которых 854 949 (63%) являются уникальными. В данных
сканирования за октябрь 2013 г. было 1 246 560 действительных открытых ключей эллиптической кривой,
из которых 848 218 (68%) являются уникальными. Мы кластеризовали данные по открытому ключу. Многие
из наиболее часто повторяющихся ключей получены от провайдеров облачного хостинга. Для этих типов
хостов повторяющиеся ключи хоста могут быть связаны либо с общей инфраструктурой SSH, доступной
через несколько IP-адресов, и в этом случае повторяющиеся ключи не будут уязвимостью, либо из-за
ошибок во время развертывания виртуальной машины, которые инициализируют несколько виртуальных
машин для разных клиентов из моментального снимка, который уже содержит пару ключей хоста SSH.
Похоже, что оба случая представлены в нашем наборе данных. В июле 2013 г. компания Digital Ocean
выпустила рекомендации по безопасности [20], в которых рекомендуется, чтобы клиенты повторно
генерировали ключи хоста SSH из-за повторяющихся ключей, развернутых на моментальных снимках
виртуальных машин; мы нашли 5 614 хостов, которые обслуживали открытый ключ, отпечаток которого
указан в руководстве по установке Digital Ocean.
Мы также смогли определить несколько типов сетевых устройств, которые, по-видимому, несут ответственность за повторяющиеся ключи хоста либо из-за ключей

по умолчанию, присутствующих в оборудовании, либо из-за плохой энтропии при загрузке. К ним относятся Juniper Web Device Manager, Juni FemtoAP и беспроводной

контроллер ZTE. Мы смогли приписать повторяющиеся ключи этим реализациям, потому что эти устройства обслуживали страницы входа через HTTP или HTTPS, которые

идентифицировали производителя и торговую марку. Нам не удалось легко дать объяснение большинству повторяющихся ключей, так как (в отличие от результатов,

представленных в [28]) многие из кластеров повторяющихся ключей не имели почти ничего общего: разные версии SSH и операционные системы, разные открытые порты,

разные результаты с использованием идентификации хоста nmap, разный контент, обслуживаемый через HTTP и HTTPS, и блоки IP, принадлежащие множеству различных

хостинг-провайдеров или домашних/небольших коммерческих интернет-провайдеров. Мы можем предположить, что некоторые из них могут быть образами ВМ, но во

многих случаях у нас нет никакого объяснения. Мы можем исключить слабые ключи Debian в качестве объяснения для этих хостов, потому что ошибка Debian была

зарегистрирована и исправлена в 2008 году, в то время как OpenSSH (который почти всегда указывается в строках клиентской версии для результатов эллиптической

кривой) представил поддержку криптографии на эллиптической кривой. в 2011 году. Мы проверили повторяющиеся одноразовые номера подписи и не нашли ни одного.

Мы также проверили совпадение с набором ключей TLS, которые мы собрали, и ничего не нашли. Мы можем исключить слабые ключи Debian в качестве объяснения для

этих хостов, потому что ошибка Debian была зарегистрирована и исправлена в 2008 году, в то время как OpenSSH (который почти всегда указывается в строках клиентской

версии для результатов эллиптической кривой) представил поддержку криптографии на эллиптической кривой. в 2011 году. Мы проверили повторяющиеся одноразовые

номера подписи и не нашли ни одного. Мы также проверили совпадение с набором ключей TLS, которые мы собрали, и ничего не нашли. Мы можем исключить слабые

ключи Debian в качестве объяснения для этих хостов, потому что ошибка Debian была зарегистрирована и исправлена в 2008 году, в то время как OpenSSH (который почти

всегда указывается в строках клиентской версии для результатов эллиптической кривой) представил поддержку криптографии на эллиптической кривой. в 2011 году. Мы

проверили повторяющиеся одноразовые номера подписи и не нашли ни одного. Мы также проверили совпадение с набором ключей TLS, которые мы собрали, и ничего не

нашли.

4.3 Безопасность транспортного уровня (TLS)

Дублирование открытых ключей.Хотя мы собрали в общей сложности более 5,4 миллиона открытых
ключей из обменов ключами ECDH и ECDHE, только 5,2 миллиона из них были уникальными. Как отмечено
в [12], поведение OpenSSL по умолчанию заключается в использовании эфемерного статического ECDH
(пара ключей является эфемерной для каждого экземпляра приложения и не обязательно для каждого
экземпляра рукопожатия), что может объяснить некоторые наблюдаемые дубликаты ключей. Мы нашли
120 900 различных ключей, которые были представлены более чем одним IP-адресом, причем наиболее
распространенный дублированный ключ был представлен более чем 2 000 хостами. Многие из этих
дубликатов ключей, по-видимому, обслуживаются из одного
или небольшой набор подсетей и, по-видимому, обслуживают веб-страницы с одинаковой конфигурацией
для различных URL-адресов, что позволяет предположить, что они являются частью одного общего
хостинга. Мы также обнаружили один случай использования ключа по умолчанию на устройстве,
проданном разным потребителям. Мы нашли около 1 831 устройства Netasq с одинаковыми секп256р1
открытый ключ для обмена ключами ECDHE. Каждое устройство также должно иметь один и тот же
закрытый ключ, что позволяет злоумышленнику, купившему или взломавшему одно устройство, пассивно
расшифровывать трафик на другие устройства.

Дублирование случайных серверов.Мы также были удивлены, обнаружив, что несколько хостов
дублировали 32-байтовый случайный одноразовый номер, используемый в приветственном
сообщении сервера. Мы обнаружили 20 различных одноразовых номеров, которые
использовались более одного раза, 19 из которых повторно использовались более чем одним IP-
адресом. Самый повторяющийся серверный случай повторялся 1541 раз и представлял собой
просто строку ASCII из 32 символов «f». Все эти устройства представляют собой монитор мощности
ИБП, который, судя по представленному сертификату, передает свою реализацию SSL на
аутсорсинг компании Ingrasys. Однако нам не удалось успешно установить какие-либо сеансы TLS с
этими устройствами ни с помощью браузера, ни с помощью OpenSSL.
Очевидно, что для серверов, которые всегда дублируют случайный сервер, существует проблема с
реализацией, которую необходимо исправить. Однако для серверов, которые лишь изредка производят
один и тот же случайный сервер, это действительно вызывает больше беспокойства. Требуется
дополнительное исследование, чтобы найти основную причину этих коллизий и определить,
распространяется ли проблема на криптографические ключи.

4.4 Австрийский электронный идентификатор

В этом наборе данных мы не обнаружили каких-либо аномалий с ключами ECDSA. Из 477 985
открытых ключей эллиптической кривой, которые мы извлекли из базы данных сертификатов
Austrian Citizen Card, 24 126 ключей появляются несколько раз. Однако во всех случаях, кроме 5961,
субъекты сертификатов были равными. Из неравных испытуемых все, кроме 70, имели
одинаковые поля «CN». Все эти оставшиеся сертификаты с идентичными открытыми ключами,
выданными неравным именам, по-видимому, были связаны либо с незначительной кодировкой
символов, либо с различиями в пунктуации, либо с изменением имен.

5. Выводы

Мы изучаем применение криптографии на эллиптических кривых (ECC) на практике,


исследуя ее использование в биткойнах, SSH, TLS и карте гражданина Австрии. Спустя
более десяти лет после его первой стандартизации мы видим, что этот вариант
криптографии с открытым ключом набирает популярность. Хотя ECC все еще далеко от
доминирующего выбора для криптографии, в 2013 году наблюдается значительное
распространение.
Наши проверки криптографической работоспособности этих наборов данных подтвердили, что, как и
ожидалось, ECC не застрахован от недостаточной энтропии и программных ошибок. Мы обнаружили
много случаев повторяющихся открытых ключей SSH и TLS, некоторые из которых, похоже, принадлежат
разным владельцам. Для набора данных Биткойн существует множество подписей.
совместное использование эфемерных одноразовых номеров, что позволяет злоумышленникам
вычислять соответствующие закрытые ключи и красть монеты. Мы надеемся, что наша работа
побудит исследователей и разработчиков продолжать усердно выявлять и отслеживать такие типы
проблем реализации, что в конечном итоге повысит безопасность криптографических протоколов
и библиотек, от которых мы зависим.

Благодарности.Мы благодарим Яапа В. Боса за ценные обсуждения финансового


рынка, Энди Моделла за поддержку в сканировании TLS, Сару Мейкледжон за то, что
она поделилась своими знаниями о биткойнах, и Фелипе Волоха за указание на
существование закрытых ключей 1 и 2 в биткойнах. Мы благодарим группу Microsoft
Security Vulnerability Research за их помощь в ответственном раскрытии уязвимостей,
которые мы обнаружили, для пострадавших компаний.

использованная литература

1. Барбер С., Бойен X., Ши Э., Узун Э. Горько к лучшему — как сделать биткойн лучшей
валютой. В AD Керомитис, редактор,Финансовая криптография, том 7397 изLNCS,
страницы 399–414. Спрингер, 2012.
2. Диджей Бернштейн. Программная реализация NIST P-224.http://cr.yp.to/
talks.html#2001.10.29,2001.
3. Диджей Бернштейн. Curve25519: Новые рекорды скорости Диффи-Хеллмана. У М. Юнга,
Ю. Додис, А. Киайяс и Т. Малкин, редакторы,Криптография с открытым ключом — PKC
2006, том 3958 изLNCS, страницы 207–228. Спрингер, 2006.
4. Д.Дж. Бернштейн, Ю.-А. Чанг, К.-М. Ченг, Л.-П. Чоу, Н. Хенингер, Т. Ланге и Н. ван
Сомерен. Факторинг ключей RSA с сертифицированных смарт-карт: Coppersmith в дикой
природе. К. Сако и П. Саркар, редакторы,АЗИАКРИПТ, том 8270 г.LNCS, страницы 341–
360. Спрингер, 2013.
5. Д.Дж. Бернштейн и Т. Ланге. Safecurves: выбор безопасных кривых для эллиптической кривой
криптография.http://safecurves.cr.yp.to,по состоянию на 31 октября 2013 г.
6. DJ Bernstein и T. Lange (редакторы). eBACS: Сравнительный анализ
криптографических систем ECRYPT.http://bench.cr.yp.to,Октябрь 2013.
7. И. Биль, Б. Мейер, В. Мюллер. Дифференциальные атаки на криптосистемы с
эллиптическими кривыми. В М. Белларе, редактор,КРИПТО, том 1880 г.LNCS, страницы
131–146. Спрингер, 2000.
8. биткойнкард.орг. Образец сделки. http://bitcoincard.org/blog/?page=
post&blog=bitcoincard_blog&post_id=sample_yransaction,2012.
9. С. Блейк-Уилсон, Н. Болярд, В. Гупта, К. Хоук и Б. Меллер. Наборы шифров криптографии на
эллиптических кривых (ECC) для безопасности транспортного уровня (TLS). RFC 4492, 2006 г.

10. Д. Бонэ и И. Шпарлински. О непредсказуемости битов схемы Диффи–Хеллмана на


эллиптической кривой. Ин Дж. Килиан, редактор,КРИПТО, том 2139 изLNCS,
страницы 201–212. Спрингер, 2001.
11. Э. Брайер, М. Джой и Т.Э.Д. Вин. Эллиптические кривые Вейерстры и атаки боковых
каналов. ВКриптография с открытым ключом PKC 2002, том 2274 LNCS, страницы 335–
345. Спрингер, 2002.
12. Б. Б. Брамли, М. Барбоза, Д. Пейдж и Ф. Веркаутерен. Практическая реализация и
устранение атаки программных ошибок, связанных с ECC. В О. Дункельман, редактор,
КТ-РСА, том 7178 изLNCS, страницы 171–186. Спрингер, 2012.
13. Б. Б. Брамли и Р. М. Хакала. Атаки по шаблону кэш-тайминга. Ин М. Мацуи,
редактор,АЗИАКРИПТ, том 5912 изLNCS, страницы 667–684. Спрингер, 2009.
14. «Втулка», HM Cantero, S. Boessenkool и S. Peter. Эпический провал PS3.http://
events.ccc.de/congress/2010/Fahrplan/attachments/
1780_27c3_console_hacking_2010.pdf,2010.
15. Сертиком Исследования. Стандарты эффективной криптографии 2: Рекомендуемые параметры
домена эллиптической кривой. Стандарт SEC2, Сертиком, 2000 г.
16. Сертиком Исследования. Стандарты эффективной криптографии 1: Криптография на основе
эллиптических кривых. Стандарт SEC1, Сертиком, 2009 г.
17. Дж. Кларк и А. Эссекс. CommitCoin: Обязательства по углеродному датированию с биткойнами -
(короткая статья). В AD Керомитис, редактор,Финансовая криптография, том 7397 изLNCS,
страницы 390–398. Спрингер, 2012.
18. Дж. Деймен и В. Риймен.Дизайн Rijndael: AES — расширенный стандарт
шифрования. Спрингер, 2002.
19. Диффи В. и Хеллман М.Е. Новые направления в криптографии.IEEE Transactions по
теории информации, 22(6):644–654, 1976.
20. Цифровой океан. Избегайте дублирования ключей хоста SSH.https://
www.digitalocean.com/blog_posts/avoid-duplicate-ssh-host-keys,2013.
21. Х. Доббертин, А. Босселарс и Б. Пренел. RIPEMD-160: усиленная версия RIPEMD.
В Д. Голлманн, редактор,ФСЕ, том 1039 изLNCS, страницы 71–82. Спрингер,
1996.
22. З. Дурумерик, Э. Вустроу и Дж. А. Халдерман. ZMap: Быстрое сканирование всего Интернета и его
приложения для обеспечения безопасности. ВСимпозиум по безопасности USENIX, Август 2013.
23. И. М. Дуурсма, П. Годри и Ф. Морейн. Ускорение вычисления дискретного
логарифма на кривых с автоморфизмами. В К.-Ю. Лам, Э. Окамото и К. Син,
редакторы,АЗИАКРИПТ, том 1716 г.LNCS, страницы 103–121. Спрингер, 1999.
24. П. Фуке, Р. Лерсье, Д. Реал, Ф. Валетт. Атака сбоев на реализации лестницы
Монтгомери на эллиптической кривой. ВФДТК, страницы 92–98, 2008 г.
25. Галлант Р.П., Ламберт Р.Дж., Ванстон С.А. Более быстрое умножение точек на
эллиптических кривых с эффективными эндоморфизмами. Ин Дж. Килиан, редактор,
КРИПТО, том 2139 изLNCS, страницы 190–200. Спрингер, 2001.
26. М. Георгиев, С. Айенгар, С. Джана, Р. Анубхай, Д. Боне и В. Шматиков. Самый
опасный код в мире: Проверка SSL-сертификатов в небраузерном ПО. В редакциях
Т. Ю., Г. Данезиса и В. Д. Глигора,Конференция ACM по компьютерной и
коммуникационной безопасности, страницы 38–49. АКМ, 2012.
27. Д. Гилсон. Blockchain.info возвращает деньги жертвам кражи биткойнов. http://
www.coindesk.com/blockchain-info-issues-refunds-to-bitcointheft-victims/,август
2013 г.
28. Н. Хенингер, З. Дюрумерик, Э. Вустроу и Дж. А. Халдерман. Майнинг ваших Ps и Qs:
ВБезопасность USENIX
Обнаружение распространенных слабых ключей в сетевых устройствах.
Симпозиум, август 2012 г.
29. А. Холлоси, Г. Карлингер, Т. Рёсслер, М. Центер и др. Die österreichische
бургеркарте. http://www.buergerkarte.at/konzept/securitylayer/
спецификация/20080220/,2008.
30. Н. Хаугрейв-Грэм и Н.П. Смарт. Решетчатые атаки на схемы цифровой
подписи.Дес. Коды Криптография, 23(3):283–290, 2001.
31. Д. Джетчев и Р. Венкатесан. Битовая безопасность секретных ключей Диффи-Хеллмана на
эллиптических кривых. В Д. Вагнер, редактор,КРИПТО, том 5157 изLNCS, страницы 75–92.
Спрингер, 2008 г.
32. Н. Коблиц. Криптосистемы на эллиптических кривых. Математика вычислений,
48(177):203–209, 1987.
33. А. К. Ленстра, Дж. П. Хьюз, М. Ожье, Дж. В. Бос, Т. Клейнджунг и К. Вахтер. Открытые
ключи. Р. Сафави-Наини и Р. Канетти, редакторы,КРИПТО, том 7417 изLNCS,
страницы 626–642. Спрингер, 2012.
34. Ленстра А.К., Верхёл Э.Р. Выбор размеров криптографических ключей.Журнал
криптологии, 14(4):255–293, 2001.
35. К. Михаэлис, К. Мейер и Дж. Швенк. Случайно не удалось! Состояние случайности в
текущих реализациях Java. В Э. Доусон, редактор,КТ-РСА, том 7779 из LNCS,
страницы 129–144. Спрингер, 2013.
36. И. Майерс, К. Гарман, М. Грин, А.Д. Рубин. Zerocoin: анонимно распространяемые электронные деньги
из биткойнов. ВСимпозиум IEEE по безопасности и конфиденциальности, страницы 397–411.
Компьютерное общество IEEE, 2013 г.
37. Миллер В.С. Использование эллиптических кривых в криптографии. В HC Williams, редактор,
КРИПТО, том 218 изLNCS, страницы 417–426. Спрингер, 1986 год.
38. С. Накамото. Биткойн: одноранговая электронная кассовая система.http://биткойн.
орг/биткойн.pdf,2009.
39. Олсон М.А., Бостик К., Зельцер М.И. Беркли БД. ВЕжегодная техническая
конференция USENIX, трек FREENIX, страницы 183–191. ЮСЕНИКС, 1999.
40. Освик Д.А., Шамир А., Тромер Э. Атаки на кэш и меры противодействия:
случай с AES. В Д. Пойнтшеваль, редактор,КТ-РСА, объем 3860 г.LNCS, стр. 1–
20. Спрингер, 2006.
41. Дж. М. Поллард. Методы Монте-Карло для вычисления индекса (мод.п).Математика
вычислений, 32(143):918–924, 1978.
42. Т. Порнин. Детерминированное использование алгоритма цифровой подписи (DSA) и
алгоритма цифровой подписи на основе эллиптических кривых (ECDSA). RFC 6979, 2013 г.
43. Ф. Рейд и М. Харриган. Анализ анонимности в системе биткойн. В Соцком/
ПАССАТ, страницы 1318–1326. ИИЭР, 2011.
44. Р.Л. Ривест, А. Шамир и Л. Адлеман. Способ получения цифровых подписей и
криптосистемы с открытым ключом.Коммуникации ACM, 21:120–126, 1978.
45. Д. Рон и А. Шамир. Количественный анализ полного графа транзакций биткойнов.
В А.-Р. Садеги, редактор,Финансовая криптография, том 7859 изLNCS, стр. 6–24.
Спрингер, 2013.
46. Дж. А. Солинас. Обобщенные числа Мерсенна. Технический отчет CORR 99–39, Центр
прикладных криптографических исследований, Университет Ватерлоо, 1999 г.
47. Д. Стебила и Дж. Грин. Интеграция алгоритма эллиптической кривой в безопасный транспортный
уровень оболочки. RFC 5656, 2009 г.
48. Министерство торговли США/Национальный институт стандартов и технологий.
Рекомендации по схемам создания парных ключей с использованием криптографии с
дискретным логарифмом. Специальная публикация 800-56A, 2007 г.http://csrc.nist.gov/
publications/nistpubs/800-56A/SP800-56A_Revision1_Mar08-2007.pdf.
49. Министерство торговли США/Национальный институт стандартов и
технологий. Стандарт безопасного хеширования (SHS). FIPS-180-4, 2012 г.
http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf.
50. Министерство торговли США/Национальный институт стандартов и
технологий. Стандарт цифровой подписи (DSS). FIPS-186-4, 2013 г.http://
nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf.
51. С. Йилек, Э. Рескорла, Х. Шахам, Б. Энрайт и С. Сэвидж. Когда закрытые ключи
общедоступны: результат уязвимости Debian OpenSSL 2008 года. В А. Фельдманн и
Л. Мати, редакторы,Конференция по измерению Интернета, стр. 15–27. АКМ, 2009.

Вам также может понравиться