Книги: "Создание сайтов" - "Доменные войны". Защита информации: техническое описание TLS, тестовый сервер TLS 1.3. Ресурсы: LaTeX
Техническое: электронные подписи RSA и ECDSA
Криптография на эллиптических кривых постепенно и тихонько вытесняет криптосистему RSA. Вот один из примеров, показывающий, когда “эллиптическая криптография” удобнее. Требуется сконструировать компактное устройство, смарт-карту, или, скажем, некий электронный “токен”, для использования в составе системы многофакторной авторизации. Устройство должно передавать в текстовом виде ответ на запрос, подписанный электронной подписью. Почему в текстовом? Потому что ответ передаётся по каналу, принимающему только текст (например, это веб-форма). Почему требуется подписывать? Для того, чтобы сервер мог проверить подлинность переданных данных. Передавать подпись в текстовом виде – несложно: используем кодирование Base64. Сравним две криптосистемы. Я взял проверочный текстовый файл и вычислил две подписи, используя OpenSSL (openssl dgst), – RSA и ECDSA.
Вот содержимое файла:
“Это тестовый файл, который содержит текст, используемый в качестве наполнения для тестового файла, в который этот текст входит.”
Подписи вычислялись не от самого файла, понятно, а от значения SHA-384, но, тем не менее – привожу для сравнения.
Вот закодированная в Base64 подпись RSA, ключ 2048 бит (это нижний предел высокой надёжности, по нынешним рекомендациям):
KO+1dEhOcqAsRM1TlaYoMDMoyxGPOIyVA88I6O4wk3RScLMlZs/sZ1fpoxVtHsRj
mSxG/oZfUmHP0L343eGwJBIa/jxXQj+swdTB7HccFetL4jfcKF0RlQjxZ4+zYRBK
9RJgU+YOlfNdV1g5bufNxb1K1ijWmM3i+di0giJji/b9lqrgg6E8XQJds+VVTUmt
bsk0slEtSG0DfWDLOentY/sEs3fzOdDMtvrxkzMFJr9X3UTGmK+Kr+9lCdooZn40
PSyRubv3PFJ48XyefGxmwIGbP904Yv2mq3MebzTBM5RZzkY9iHHN7cULAGzBRe3a
4DzFofoXWZeyZrg7xeKsTQ==
А вот результат ECDSA (с кривой secp384r1, стойкость операций на которой значительно превышает RSA с 2048-битным ключом):
MGUCMHBU6IxujyMSi4a7TroEr1iFAVspSawVqnhQzZG3YBpzVYAOtCvUGy2/3qvA
4SCp1AIxAJqdDMkmMyJBd5ptrK9ap+35NDoQTM2gT6N2aDFiWAERjxc/vbd2eL8q
TwRZwRRfYA==
Если у вас микроконтроллер, имеющий весьма ограниченную память, да ещё и небольшое поле данных для передачи подписи (как в нашем случае), то выигрыш от использования эллиптических кривых виден невооружённым глазом – подписи RSA просто не влезают в формат.
()
Похожие записки:
- TLS 1.3 - RFC 8446
- Статья про TLS 1.3
- Техническое: доступность dxdt.ru
- Деанонимизация данных анализа ДНК
- Скрытое голосовое управление устройствами
- ESNI (зашифрованное поле SNI) и системы анализа трафика
- "Ключи на клиенте" и протокол Диффи-Хеллмана
- Шифр "Кузнечик" на языке Go: ассемблер и оптимизация
- Постквантовая криптография: программа NIST
- Шифры АНБ Speck и Simon в ISO
- Скрытое управление пограничными маршрутизаторами
- TLS 1.3: тестовый сервер
- Подмена DNS-трафика в сетях LTE
- Обновление tls13.1d.pw (экспериментальный сервер TLS 1.3)
- Обновление описания TLS
- Domain Fronting, AWS и блокировки с обходом
- ESNI - зашифрованное поле SNI
Комментарии читателей блога: 2
1. 5th August 2015, 17:37 // Читатель Z.T. написал:
1. покажите количество подписей в секунду, это важней. ed25519 еще быстрей.
2. почему 384? AES-128, SHA2-256 или SHA3-256 с P-256 должно быть достаточно. RSA-2048 это только 112 бит надежности.
2. 5th August 2015, 21:55 // Александр Венедюхин ответил:
> покажите количество подписей в секунду, это важней. ed25519 еще быстрей.
Да, ECDSA ещё и быстрее. Но скорость не всегда так важна.
> почему 384?
Я просто взял заведомо длинный вариант, в противовес максимально “короткому” варианту RSA. Конечно, достаточно P-256, и размер подписи будет меньше.