Какова разница в производительности pki для симметричного шифрования?

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

Я думаю, что я знаю, что PKI намного медленнее и сложнее симметричного шифрования, но я не могу найти числа, чтобы поддержать мои чувства.

Ответ 1

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

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

Ответ 2

На Macbook, работающем под управлением OS X 10.5.5, и сборке OpenSSL, часы с открытым временем AES-128-CBC с частотой 46 000 1024 бит в секунду. Тот же самый блок синхронизирует 1024 бит RSA с 169 сигнатурами в секунду. AES-128-CBC - это алгоритм шифрования блока "учебник", а RSA 1024 - это алгоритм открытого ключа "учебник". Это яблоки-апельсины, но ответ таков: RSA намного медленнее.

Это не значит, что вы не должны использовать шифрование с открытым ключом. Вот реальные причины:

  • Криптографические операции с открытым ключом не предназначены для шифрования необработанных данных. Алгоритмы, такие как Diffie-Hellman и RSA, были разработаны как способ обмена ключами для алгоритмов блочного криптографического анализа. Так, например, вы использовали бы генератор случайных чисел для генерации 128-битного случайного ключа для AES и шифрования этих 16 байтов с помощью RSA.

  • Алгоритмы, подобные RSA, гораздо менее удобны для пользователя, чем AES. С помощью случайного ключа блокировки открытого текста, которые вы передаете AES, будут случайными для всех без ключа. На самом деле это не относится к RSA, что больше, чем AES --- просто математическое уравнение. Таким образом, помимо правильного хранения и управления ключами, вы должны быть очень осторожны с тем, как вы форматируете блоки открытого текста RSA или получаете уязвимости.

  • Открытый ключ не работает без инфраструктуры управления ключами. Если у вас нет схемы проверки открытых ключей, злоумышленники могут заменить свои собственные ключевые пары для реальных, чтобы запускать атаки "человек в середине". Вот почему SSL заставляет вас пройти через rigamarole сертификатов. Блокирующие крипто-алгоритмы, подобные AES, тоже страдают от этой проблемы, но без PKI AES не менее безопасен, чем RSA.

  • Криптографические операции с открытым ключом восприимчивы к большей уязвимости реализации, чем AES. Например, обе стороны транзакции RSA должны согласовывать параметры, которые являются числами, поданными в уравнение RSA. Есть злые ценности, которые атакующие могут заменить, чтобы бесшумно отключить шифрование. То же самое касается Диффи Хеллмана и тем более для Эллиптической кривой. Другим примером является уязвимость подписи RSA Signature Forgery, которая произошла 2 года назад в нескольких реализациях высокого уровня SSL.

  • Использование открытого ключа является доказательством того, что вы делаете что-то "необычное" . Вне обыденности именно то, что вы никогда не хотите быть с криптографией; за исключением алгоритмов, криптографические проекты проверяются и проверяются в течение многих лет, прежде чем они считаются безопасными.

Для наших клиентов, которые хотят использовать криптографию в своих приложениях, мы делаем две рекомендации:

  • Для "данных в состоянии покоя" используйте PGP. В самом деле! PGP был избит более десятилетия и считается безопасным от ошибок глупых ошибок. Существуют открытые и коммерческие варианты.

  • Для "данных в полете" используйте TLS/SSL. Протокол безопасности в мире не лучше понимается и не тестируется лучше, чем TLS; финансовые учреждения во всем мире принимают его в качестве безопасного метода для перемещения наиболее чувствительных данных.

Здесь приличная запись [matasano.com] меня и Нейт Лоусон, профессиональный криптограф, написал несколько лет назад. Он более подробно описывает эти моменты.

Ответ 3

Используйте команду speed OpenSSL для сравнения алгоритмов и убедитесь сами.

[[email protected] ~]$ openssl speed aes-128-cbc
Doing aes-128 cbc for 3s on 16 size blocks: 26126940 aes-128 cbc in 3.00s
Doing aes-128 cbc for 3s on 64 size blocks: 7160075 aes-128 cbc in 3.00s
...
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128 cbc     139343.68k   152748.27k   155215.70k   155745.61k   157196.29k


[[email protected] ~]$ openssl speed rsa2048
Doing 2048 bit private rsa for 10s: 9267 2048 bit private RSA in 9.99s
Doing 2048 bit public rsa for 10s: 299665 2048 bit public RSA in 9.99s
...
                  sign    verify    sign/s verify/s
rsa 2048 bits 0.001078s 0.000033s    927.6  29996.5

Ответ 4

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

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

В прошлый раз, когда я тестировал это, проверяя цепочку из трех или около того сертификатов X.509 [edit to add: и данные, которые они подписывали], занимал часть секунды на ARM, работающем на частоте 100 МГц (в среднем по сравнению с много повторений, очевидно). Я не помню, насколько маленький - не пренебрежимо малый, но хорошо под вторым.

Извините, я не могу вспомнить точные данные, но резюме состоит в том, что, если вы не находитесь в очень ограниченной системе или не выполняете много шифрования (например, если вы хотите принять как можно больше SSL-соединений) Асимметричные методы шифрования, одобренные NIST, быстрые.

Ответ 5

По-видимому, это на 1000 раз хуже. (http://windowsitpro.com/article/articleid/93787/symmetric-vs-asymmetric-ciphers.html). Но если вы действительно не работаете с большим количеством данных, это не имеет значения. Вы можете использовать асимметричное шифрование для обмена симметричным ключом шифрования.

Ответ 6

Возможно, вы можете добавить некоторые сведения о своем проекте, чтобы получить более качественные ответы. Что вы пытаетесь обеспечить? От кого? Если вы сможете объяснить требования своей безопасности, вы получите гораздо лучший ответ. Производительность не означает многого, если механизм шифрования не защищает то, что вы думаете.

Например, сертификаты X509 являются стандартным способом защиты конечных точек клиента/сервера. Брандмауэр PGP можно использовать для защиты файлов лицензий. Для простоты цепочки блоков Cipher с Blowfish (и множество других шифров) просты в использовании в Perl или Java, если вы контролируете обе конечные точки.

Спасибо.

Ответ 7

Да, гибридное шифрование, предлагаемое стандартизированными криптографическими схемами, такими как PGP, TLS и CMS, налагает фиксированную стоимость производительности на каждое сообщение или сеанс. Насколько велико это влияние, зависит от выбранных алгоритмов и операции, о которой вы говорите.

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

Согласно ECC, поскольку одноранговые узлы выполняют одинаковую математическую обработку с ключами одинакового размера, операции более сбалансированы, чем RSA. В интегрированной схеме шифрования может генерироваться эфемерный ключ EC и использоваться в алгоритме согласования ключей; это требует немного дополнительной работы для отправителя сообщения. Согласование ключей ECDH намного, намного медленнее, чем шифрование RSA, но намного быстрее, чем дешифрование RSA.

Что касается относительных чисел, расшифровка с помощью AES может быть в 100 000 раз быстрее, чем расшифровка с использованием RSA. С точки зрения абсолютных чисел, сильно зависящих от аппаратного обеспечения, AES может занять несколько наносекунд на блок, а RSA - миллисекунду или две. И это вызывает вопрос: зачем кому-то когда-либо использовать асимметричные алгоритмы?

Ответ заключается в том, что эти алгоритмы используются вместе для различных целей в гибридных схемах шифрования. Быстрые, симметричные алгоритмы, такие как AES, используются для защиты самого сообщения, а медленные асимметричные алгоритмы, такие как RSA, в свою очередь, используются для защиты ключей, необходимых для симметричных алгоритмов. Это то, что позволяет сторонам, которые ранее никогда не передавали какую-либо секретную информацию, например вам и вашей поисковой системе, безопасно общаться друг с другом.