2017-01-30 4 views
1

Я использую скрипт python, который использует pycrypto для шифрования файлов с использованием RSA. Я использовал функцию encrypt(data, 2048) во время шифрования.Расшифровать шифрование на основе RSA с использованием Apache NiFi

Теперь я пытаюсь расшифровать этот зашифрованный файл с помощью процессора дешифрования в Apache NiFi, и я не уверен, какие KDF и Encryption Algorithm выбрать.

Я ничего не вижу RSA в окне Configure Processor окна Apache NiFi.

ответ

4

В настоящее время процессор EncryptContent не поддерживает произвольное шифрование RSA. Я бы предложил вам file a Jira с просьбой об этом дополнении (не бойтесь графика, показывающего несоответствие между открытыми & закрытыми, мы в настоящее время находимся на этапе жизненного цикла, когда релиз вышел недавно, и теперь вся обратная связь генерирует новые билеты для следующего выпуска).

Для немедленного решения, у меня есть несколько предложений:

  • Вы можете использовать GPG для шифрования и дешифрования данных, и Nifi обеспечивает поддержку первого класса для GPG дешифрования. Ключ GPG использует базовый ключ DSA/RSA вместе с AES-шифрованием для данных, поэтому это будет фактически тот же процесс (асимметричное шифрование).
  • Вы можете использовать процессор ExecuteScript для запуска небольшого скрипта, который выполняет дешифрование. Процессор поддерживает Ruby, Groovy, Lua, Javascript и Python *. К сожалению, ограничение на Python заключается в том, что Jython не поддерживает родные библиотеки (например, pycrypto). Одним из возможных решений является использование JyNI, который позволяет Jython загружать библиотеки CPython, но я не оценил его в этом контексте. Если вам удобно с Groovy & BouncyCastle или Ruby & OpenSSL, вы можете написать скрипт расшифровки на любом из этих языков только с несколькими строками кода.
  • Если вы действительно хотите использовать код Python, который у вас уже есть, вы можете вызвать его в командной строке через ExecuteProcess или ExecuteStreamCommand.

Один непонятный вопрос - как вы используете RSA для шифрования файлов? RSA с длиной ключа 2048 бит может шифровать только 245 байт. Если вы шифруете файлы, скорее всего, вы захотите использовать гибридную криптосистему, где вы шифруете произвольные данные с помощью произвольно созданного ключа AES, а затем шифруете только этот ключ AES с RSA. Это будет намного быстрее. Это модель, используемая SSL, S/MIME, OpenPGP и т. Д.

+0

Благодарим вас за предложения. Я фактически использую AES_CBC с SHA256 для шифрования моих данных симметрично. Мой скрипт python затем шифрует этот симметричный ключ, используя RSA 'pycrypto''. Итак, с помощью шифрования GPG он будет автоматически шифровать базовые данные с помощью AES, а также использовать PKI снаружи? – summerNight

+0

Да, GPG будет инкапсулировать AES-шифрование данных, подписать шифрованный текст с помощью закрытого ключа отправителя и зашифровать ключ AES с открытым ключом получателей. Похоже, есть библиотека Python для [python-gnupg] (https://github.com/isislovecruft/python-gnupg), которая может сделать это проще для вас на отправляющей стороне. – Andy

+0

Вам известно, как узнать, как расшифровать его с помощью nifi, учитывая, что я могу использовать python-gnupg для генерации зашифрованного файла? – summerNight

Смежные вопросы