あなたが潜在的にそれはないということを超えて、より多くの攻撃ベクトルのカップルに自分をさらすしていますOpenSSLライブラリとのリンクやOpenSSLライブラリを使用するよりもはるかに安全です。
popenから実行しているプログラムとその引数は、コマンドラインで直接キー材料を指定できれば、/ proc/<pid>で公開されます。/cmdline(およびps/top/etc)。これは、別のプロセスを介して復号化し、パイプを介して別のアプリケーションに渡す場合、私が最も心配することです。 root権限を持っていれば、環境に合わせて鍵素材を渡すと、/ proc/< pid & gt/environも読めるようになります。ルートになっていれば、他のすべてのこともできます。 openssl(ライブラリ/バイナリ+パイプ)を使う方法に関係なく、あなたのものを保持してください。
opensslバイナリを悪意のあるものに置き換えるか、popen/shellにpops/shellに使用させるopensslバイナリを決定させる場合は、PATHに先に注入するなど、いくつかの方法があります。 key-materialとciphertextをより簡単な手段で保持することができます(あるいは、opensslに対する動的なリンクもきちんと無効になる、悪意のあるopensslライブラリを置き換えるかLD_PRELOADすることができます)。同じことがパイプ上のスヌーピングのために行われ、ルートまたはユーザーとして実行する必要があります。
つまり、argvで敏感なものを公開することなくポップできれば、OpenSSLライブラリを使用するよりもはるかに安全です。はい、あなたのものを手に入れる方法はいくつかありますが、とにかくあなたのものを掴むことができるユーザーとして実行する必要があります(おそらくもう少し努力する必要があります) 。
私は、Kjetilの答えに記載されている理由で_not_を行うことをお勧めします。おそらく、あなたは別の質問を開いて、図書館で働くことの困難を記述することができますか? –
すぐにお返事ありがとうございます!新しい質問をこのスレッドにリンクするにはどうすればよいですか?単に答えるだけで、おそらくOTの議論に終わるでしょう。 – Matthias
さて、私はより多くの背景情報とコードサンプルで新しい質問を開きました。http://stackoverflow.com/q/4783905/399763 – Matthias