Техническое: электронные подписи 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 просто не влезают в формат.

()

Похожие записки:



Далее - мнения и дискуссии

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

Комментарии читателей блога: 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, и размер подписи будет меньше.