Являются ли данные, проходящие через трубу конфиденциальными?

Я прочитал следующий вопрос ( Shell Script 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 Keyfile?

Командная строка, которую вы предлагаете, является безопасной.

При прочих равных условиях «обычные» анонимные каналы (созданные с помощью системного вызова pipe(2) или знакомый синтаксис оболочки) всегда будут более безопасными, чем именованные, потому что существует меньше способов для чего-то еще вне системы получить либо один из концов трубы. Для обычных анонимных каналов вы можете читать или писать только из канала, если у вас уже есть файловый дескриптор, что означает, что вы должны либо быть процессом, который создал канал, либо должен унаследовать его (прямо или косвенно) из этого процесса или какой-то процесс, у которого файловый дескриптор намеренно отправил его вам через сокет. Для именованных каналов вы можете получить дескриптор файла в трубе, если у вас его нет, открыв его по имени.

В таких операционных системах, как Linux, у которых есть /proc всегда есть возможность, что другой процесс может заглянуть в /proc/pid/fd дескрипторы файла доступа, принадлежащие другому процессу, но это ничто не уникально для труб (любого типа) и в этом отношении они могут заглянуть в другое пространство памяти. «Peeker» должен быть запущен под тем же пользователем, что и субъект или корень, поэтому это не проблема безопасности.