我阅读了以下问题(Shell Script mktemp,创建临时命名管道的最佳方法是什么?)但我想知道是否最好使用临时命名管道在程序之间传输敏感数据而不是未命名/匿名 shell管道?
具体来说,我对这种方法是否感兴趣(来自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
Run Code Online (Sandbox Code Playgroud)
在哪些情况下可以劫持 Luks 密钥文件?
您建议的命令行是安全的。
在所有其他条件相同的情况下,“普通”匿名管道(使用pipe(2)
系统调用或 shell 熟悉的|
语法创建)总是比命名管道更安全,因为系统外的其他东西获得其中任何一个的方法更少管的末端。对于普通的匿名管道,如果您已经拥有管道的文件描述符,则只能从管道读取或写入,这意味着您必须是创建管道的进程,或者必须(直接或间接)继承它来自该进程,或者某个具有文件描述符的进程故意通过套接字将其发送给您。对于命名管道,如果您还没有通过按名称打开管道的文件描述符,则可以获取该管道的文件描述符。
在像 Linux 这样的操作系统上,/proc
总是有可能另一个进程可以窥视/proc/pid/fd
属于不同进程的访问文件描述符,但这并不是管道(任何类型)独有的,就此而言,它们可以窥视另一个进程的内存空间也是如此。“窥视者”必须在与主题或 root 相同的用户下运行,因此这不是安全问题。