私は次の質問を読んだ(シェルスクリプトmktemp、一時的な名前付きパイプを作成する最良の方法は何ですか?)しかし、プログラム間で機密データを転送するために一時的な名前付きパイプを使用することが、名前付き/匿名シェルパイプを使用するよりも良いかどうか疑問に思います。
特に私はこのタイプのアプローチに興味があります。http://blog.kdecherf.com/2012/11/06/mount-a-luks-partition-with-a-password-protected-gpg-encrypted-key-using-systemd/)は安全です:
# Open the encrypted block device
gpg --batch --decrypt $key_file 2>/dev/null | sudo $CRYPTSETUP -d - luksOpen $mount_device $key >& /dev/null || exit 3
どのような状況でLuksキーファイルをハイジャックできますか?
ベストアンサー1
提案したコマンドラインは安全です。
他のすべての条件が同じ場合、「一般的な」匿名パイプ(システムpipe(2)
コールまたはシェルの使い慣れた|
構文を使用して生成されます)は、名前付きパイプよりも安全です。これは、システム外の他の項目がパイプの端に到達する方法が少ないためです。通常の匿名パイプを使用すると、パイプのファイル記述子をすでに所有している場合にのみ、パイプから読み書きできます。つまり、パイプを作成したプロセスであるか、そのパイプからパイプを(直接または間接的に)継承する必要があることを意味します。プロセスまたはファイル記述子を持つ一部のプロセスは、意図的にソケットを介してそれを送信します。名前付きパイプの場合、パイプのファイル記述子がまだない場合は、名前で開いてパイプのファイル記述子を取得できます。
Linuxなどのオペレーティングシステムでは、他の/proc
プロセスが他のプロセスに属するアクセスされたファイル記述子を垣間見る可能性が常にありますが、/proc/pid/fd
これはパイプ(すべてのタイプ)に固有ではなく、その時点まで垣間見ることができます。空間もそう。 Peeperはテーマまたはルートと同じユーザーとして実行する必要があるため、これはセキュリティ上の問題ではありません。