Вы потенциально подвергая себя еще пару векторов атак, за что это не что гораздо менее безопасно, чем связывание и использование библиотеки OpenSSL.
Программа и ее аргументы, которые вы используете из popen, могут предоставлять дополнительную информацию через argv, если вы можете указать материал ключа непосредственно в командной строке и сделать это, это будет отображаться через/proc/<pid>/cmdline (и ps/top/и т. д.). Это то, о чем я буду беспокоиться больше всего, если я буду расшифровывать через другой процесс и передать его в другое приложение через трубу. В качестве root они также смогут читать/proc/< pid gt/environ, если вы передадите ключевой материал в приложение через среду, хотя, если они являются корнями, есть всевозможные другие махинации, они могут также сделать, чтобы получить независимо от того, какой метод вы используете openssl (library/binary + pipe).
Есть несколько других вещей, таких как замена двоичного файла openssl на что-то злонамеренное или ввод его ранее в PATH, если вы позволяете popen/shell определять, какой билд использовать openssl использовать, хотя, если они могут сделать это, возможно, они также могут получить провести ключевой материал и зашифрованный текст с помощью более простых средств (или они могут заменить или LD_PRELOAD злокачественную библиотеку openssl, которая аккуратно победит динамически, связывая также с openssl). То же самое касается отслеживания на трубе, они должны запускаться как root или ваш пользователь.
Короче говоря, если вы можете всплывать, не подвергая ничего чувствительного через argv, это не намного безопаснее, чем использование библиотеки OpenSSL. Да, есть еще несколько способов завладеть вашими вещами, но потребовалось бы, чтобы они запускались как пользователь, который в любом случае мог бы завладеть вашим материалом (хотя, возможно, потребуется немного больше усилий) ,
Я бы порекомендовал _not_ делать это по причинам, изложенным в ответе Кэтиля. Возможно, вы могли бы открыть еще один вопрос и описать свои трудности с работой с библиотекой? –
Спасибо за немедленный ответ! Как связать новый вопрос с этим вопросом? Просто ответ, вероятно, закончится обсуждением ОТ. – Matthias
Хорошо, я открыл новый вопрос с дополнительной информацией о предыстории и примерами кода на http://stackoverflow.com/q/4783905/399763 – Matthias