涉及gpg对称加密的bash脚本的安全性

francescop21

注意这个问题已经讨论了相同的漏洞,但是问题的不同设置(在我的情况下,我不需要存储密码)允许使用不同的解决方案(即,使用文件描述符而不是将密码保存在一个文件,请参见ilkkachu的答案)。

假设我有一个对称加密的文件my_file(使用gpg 1.x),其中存储了一些机密数据,并且我想使用以下脚本对其进行编辑:

read -e -s -p "Enter passphrase: " my_passphrase
gpg --passphrase $my_passphrase --decrypt $my_file | stream_editing_command | gpg --yes --output $my_file --passphrase $my_passphrase --symmetric
unset my_passphrase

stream_editing_command流中替换/追加内容的位置。

我的问题:这样安全吗?变量$my_passphrase和/或解密后的输出是否将以某种方式可见/可访问?如果不安全,应该如何修改脚本?

伊尔卡楚
gpg --passphrase $my_passphrase 

我的问题:这样安全吗?变量$ my_passphrase和/或解密后的输出是否将以某种方式可见/可访问?

不,这不是真正安全的方法。ps与所有其他正在运行的进程的命令行一样,该密码短语将在的输出中可见数据本身将不可见,其他用户无法访问该管道。

手册页gpg有这样说--passphrase

--passphrase string    

使用字符串作为密码。仅在仅提供一个密码短语的情况下才能使用此功能。显然,这在多用户系统上具有非常可疑的安全性。如果可以避免,请不要使用此选项。

当然,如果您在系统上没有其他用户并且信任您的服务没有受到损害,那么应该没有人关注进程列表。

但是在任何情况下,您都可以使用--passphrase-fd并让外壳将密码短语重定向到程序。使用here字符串:

#!/bin/bash
gpg --passphrase-fd 3 3<<< "$my_passphrase" --decrypt "$my_file" |
    stream_editing_command |
    gpg --yes --output "$my_file" --passphrase-fd 3 3<<< "$my_passphrase" --symmetric

请注意,这仅在第二个gpg在获取完整输入之前没有截断输出文件的情况下才有效。否则,第一个文件gpg可能无法在被截断之前读取文件。


为避免使用命令行,您还可以将密码存储在文件中,然后使用--passphrase-file但是,然后您需要谨慎设置文件的访问权限,然后再删除它,并为其选择合适的位置,以便密码短语实际上不会存储在持久性存储中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

加密算法首选项的安全性排序顺序:对于GPG

来自分类Dev

PHP调用系统vs Bash脚本的安全性

来自分类Dev

RSA:私钥安全性?(ssh / gpg)

来自分类Dev

加密分区的安全性如何?

来自分类Dev

加密分区的安全性如何?

来自分类Dev

Encfs加密文件的安全性如何

来自分类Dev

加密密码安全性

来自分类Dev

连接到SSL加密网站的安全性如何?

来自分类Dev

加密的LUKS文件系统的安全性如何?

来自分类Dev

Laravel的加密和解密助手的安全性如何?

来自分类Dev

加密的LUKS文件系统的安全性如何?

来自分类Dev

Firefox发送端到端加密的安全性如何?

来自分类Dev

SandForce SSD加密-安全性和支持

来自分类Dev

生成 AES 加密密钥的安全性

来自分类Dev

GPG更改对称加密密码

来自分类Dev

如何使用gpg对称加密文件?

来自分类Dev

除磁盘加密外还使用家庭加密是否可以提高安全性?

来自分类Dev

Teamviewer的安全性?

来自分类Dev

CLASSPATH安全性

来自分类Dev

PHP:openssl_random_pseudo_bytes()和加密安全性与极端随机性

来自分类Dev

PHP:openssl_random_pseudo_bytes()和加密安全性与极端随机性

来自分类Dev

使用GPG对称加密时,如何解决“警告:消息未受到完整性保护”?

来自分类Dev

安全性:将加密密钥保存在web.config或代码中

来自分类Dev

Node.js和Mongodb安全性+源代码的加密选项

来自分类Dev

其他人安装的加密(dm-crypt&LUKS)Ubuntu 12.04的安全性?

来自分类Dev

virtualenv上的pip安装请求[安全性]无法建立用于加密和cffi的轮子

来自分类Dev

使用同一密钥在重新加密的Bitlocker驱动器上的数据安全性?

来自分类Dev

如何在没有 symfony 安全性的情况下加密用户密码

来自分类Dev

GPG-具有TWOFISH对称加密的最大密钥大小

Related 相关文章

  1. 1

    加密算法首选项的安全性排序顺序:对于GPG

  2. 2

    PHP调用系统vs Bash脚本的安全性

  3. 3

    RSA:私钥安全性?(ssh / gpg)

  4. 4

    加密分区的安全性如何?

  5. 5

    加密分区的安全性如何?

  6. 6

    Encfs加密文件的安全性如何

  7. 7

    加密密码安全性

  8. 8

    连接到SSL加密网站的安全性如何?

  9. 9

    加密的LUKS文件系统的安全性如何?

  10. 10

    Laravel的加密和解密助手的安全性如何?

  11. 11

    加密的LUKS文件系统的安全性如何?

  12. 12

    Firefox发送端到端加密的安全性如何?

  13. 13

    SandForce SSD加密-安全性和支持

  14. 14

    生成 AES 加密密钥的安全性

  15. 15

    GPG更改对称加密密码

  16. 16

    如何使用gpg对称加密文件?

  17. 17

    除磁盘加密外还使用家庭加密是否可以提高安全性?

  18. 18

    Teamviewer的安全性?

  19. 19

    CLASSPATH安全性

  20. 20

    PHP:openssl_random_pseudo_bytes()和加密安全性与极端随机性

  21. 21

    PHP:openssl_random_pseudo_bytes()和加密安全性与极端随机性

  22. 22

    使用GPG对称加密时,如何解决“警告:消息未受到完整性保护”?

  23. 23

    安全性:将加密密钥保存在web.config或代码中

  24. 24

    Node.js和Mongodb安全性+源代码的加密选项

  25. 25

    其他人安装的加密(dm-crypt&LUKS)Ubuntu 12.04的安全性?

  26. 26

    virtualenv上的pip安装请求[安全性]无法建立用于加密和cffi的轮子

  27. 27

    使用同一密钥在重新加密的Bitlocker驱动器上的数据安全性?

  28. 28

    如何在没有 symfony 安全性的情况下加密用户密码

  29. 29

    GPG-具有TWOFISH对称加密的最大密钥大小

热门标签

归档