Распад больших данных для шифрования RSA - PullRequest
5 голосов
/ 11 марта 2011

Недавно мы углубились в использование OpenSSL, чтобы помочь зашифровать / расшифровать некоторые имеющиеся у нас данные. У каждого «клиента» будет пара открытых / закрытых ключей и сертификат X509, выданный им местным центром сертификации. Сейчас я изучаю шифрование / дешифрование данных с помощью этой пары ключей.

Все, что я посмотрел в шоу, использует методы RSA_public_encrypt и RSA_private_decrypt для шифрования RSA. Но количество данных, которые я могу зашифровать за один раз, ограничено RSA_size(rsa) - 41 для типа заполнения RSA_PKCS1_OAEP_PADDING. Поэтому мой вопрос заключается в том, как зашифровать большие объемы данных, придерживаясь нашей схемы RSA (без статических ключевых фраз и т. Д.). Я думал о том, чтобы разбить данные на куски и затем зашифровать их, но похоже, что это побеждает точку заполнения.

Любая помощь будет оценена.

Ответы [ 2 ]

6 голосов
/ 11 марта 2011

Даже если вы нарушите данные, вы обнаружите, что скорость слишком низкая. Правильный метод -

  1. Генерация случайного ключа для симметричного алгоритма
  2. шифрование данных с использованием симметричного алгоритма и случайного ключа
  3. зашифруйте случайный ключ с помощью вашего открытого ключа и сохраните его в зашифрованном виде рядом (или перед) данными.
1 голос
/ 11 марта 2011

Вам следует использовать такой стандарт, как CMS (основа поддержки S / MIME в вашем почтовом клиенте) или PGP. Существуют библиотеки для обоих этих стандартов практически для каждой платформы.

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

Однако эти стандарты идут дальше, надежно обрабатывая вещи, о которых вы, возможно, еще не думали, например, шифрование данных для нескольких получателей, присоединение метаданных к зашифрованному контенту и т. Д. Вы также получаете совместимость с другим программным обеспечением. Например, если вы используете S / MIME, вы можете использовать для расшифровки практически любой почтовый клиент на любой платформе. Фактически, в зависимости от ваших требований к интеграции, вам может не потребоваться писать какое-либо программное обеспечение самостоятельно.

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

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