Бенчмаркинг симметричной и асимметричной криптографии - PullRequest
1 голос
/ 27 сентября 2011

Для обеспечения целостности потока байтов концептуально можно использовать либо симметричную криптографию (например, HMAC с SHA-1), либо асимметричную криптографию (например, цифровую подпись с RSA).Здравый смысл заключается в том, что асимметричная криптография намного дороже, чем использование симметричной криптографии.Однако я хотел бы иметь жесткие числа и хотел бы знать, существуют ли наборы тестов для существующих библиотек шифрования (например, openssl), чтобы получить некоторые результаты измерений для алгоритмов симметричной и асимметричной криптографии.Цифры, которые я получаю из встроенного приложения "openssl speed", к сожалению, нельзя сравнивать друг с другом.

Возможно, кто-то уже реализовал для этой цели небольшой набор тестов?

СпасибоМартин

Ответы [ 2 ]

2 голосов
/ 28 сентября 2011

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

Подводя итог, можно сказать, что для достаточно длинного потока данных цифровая подпись и HMAC будут иметь одинаковую стоимость ЦП. Разница в скорости не будет заметна (сложная часть в конце цифровой подписи стоит дороже, чем HMAC, но простой ПК все равно сможет сделать это менее чем за миллисекунду).

Хеш-функция сама по себе может иметь значение, по крайней мере, если вы можете получить данных с высокой пропускной способностью. На обычном ПК можно рассчитывать на хэширование данных со скоростью до 300 МБ / с с SHA-1, но «только» 150 МБ / с с SHA-256. С другой стороны, хороший механический жесткий диск или гигабитный Ethernet вряд ли превысят скорость чтения 100 МБ / с, поэтому SHA-256 не станет здесь узким местом.

2 голосов
/ 28 сентября 2011

Я не думаю, что эталонный тест здесь полезен, потому что две вещи, которые вы сравниваете, созданы для разных вариантов использования.HMAC разработан для ситуаций, в которых у вас есть общий секрет, который вы можете использовать для аутентификации сообщения, тогда как подписи предназначены для ситуаций, когда у вас нет общего секрета, но вы хотите, чтобы кто-либо с вашим открытым ключом мог проверитьВаша подпись.Есть очень немного ситуаций, в которых любой из примитивов был бы одинаково уместным, и когда он есть, вероятно, есть явный фаворит в плане безопасности, а не из соображений производительности.

Довольно просто продемонстрировать, что HMAC работаетоднако, чтобы быть более быстрым: для подписания сообщения сначала необходимо его хэшировать, затем вычислять сигнатуру по хешу, в то время как вычисление HMAC требует сначала его хеширования, а затем вычислять HMAC (который представляет собой всего лишь два дополнительных одноблочных вычисления хеша).По той же причине, однако, для любого разумного предположения относительно длины сообщения и скорости ваших криптографических примитивов, разница в скорости будет пренебрежимо мала, так как большая часть затрат распределяется между обеими операциями.

Короче говоря, вы не должны выбирать структуру своей криптосистемы, основываясь на незначительных различиях в производительности.

...