Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于在服务器上存储Openssl密码的安全选项(Linux、Python、CherryPy)_Python_Linux_Security_Passwords_Openssl - Fatal编程技术网

用于在服务器上存储Openssl密码的安全选项(Linux、Python、CherryPy)

用于在服务器上存储Openssl密码的安全选项(Linux、Python、CherryPy),python,linux,security,passwords,openssl,Python,Linux,Security,Passwords,Openssl,我已经实现了一个HTTP服务器CherryPy和Python,它从Android客户端接收加密文件。我正在使用OpenSSL对上传的文件进行解密。目前,我正在使用openssl-enc-pass文件:password.txt-in-encryptedfile-out-decryptedfile在服务器端执行解密。正如您所见,openssl使用的密码存储在一个纯文本文件password.txt中 是否有更安全的方法来存储此OpenSSL密码 谢谢 将其传递给更高的FD,并在命令行中使用该FD。注意

我已经实现了一个HTTP服务器CherryPy和Python,它从Android客户端接收加密文件。我正在使用OpenSSL对上传的文件进行解密。目前,我正在使用openssl-enc-pass文件:password.txt-in-encryptedfile-out-decryptedfile在服务器端执行解密。正如您所见,openssl使用的密码存储在一个纯文本文件password.txt中

是否有更安全的方法来存储此OpenSSL密码


谢谢

将其传递给更高的FD,并在命令行中使用该FD。注意,在进程运行之前,需要使用preexec_fn参数来设置FD

subprocess.Popen(['openssl', ..., 'file:/dev/fd/12', ...], ...,
  preexec_fn=passtofd12(password), ...)

出于用户隐私和其他原因,服务器通常不存储密码。通常,用户选择一个密码,该密码作为某种哈希存储在服务器上

然后,用户通过检查存储的哈希值与基于用户输入提供的哈希值来验证web应用程序。客户机经过身份验证后,将提供一个会话标识符,以允许使用服务器资源。在此期间,用户可以上传文件。假设托管服务器安全可靠且没有其他问题,则服务器上的文件加密应该是不必要的

在这种情况下,身份验证机制不清楚,造成危险的威胁也不清楚,上传文件的生命周期也不清楚

服务器似乎正在接收一个加密文件,外加某种类型的密码。密码保护是在传输阶段考虑的,还是作为服务器上的存储?HTTPS协议可以帮助防范与文件/数据传输有关的威胁。正如我从您的描述中看到的,问题似乎是服务器端的存储

一旦服务器单独或使用主密码接收到密码,则对其进行加密可增加另一层安全性,但这种方法并非没有缺点,因为密码短语1需要以明文形式存储在服务器上以访问文件2,或者需要管理员在需要密码的任何处理过程中手动输入-请注意,使用密码加密的任何资源对用户都不可用


虽然我不完全了解正在发生的事情,但最安全的做法是重新设计web应用程序,并仔细考虑设计及其要求。

谢谢。你能解释一下为什么在这种情况下使用文件描述符FD更安全吗?因为你不需要一个临时文件来保存密码;Python进程可以直接将其注入openssl进程。您能为该解决方案添加更多细节吗?我在Android设备上有一个加密文件,我想上传到服务器。文件传输使用HTTP而不是HTTPS完成,因为文件很大,因此脱机加密以节省电池和CPU。客户端可能不知道加密密钥。正如您所说,我可以假设服务器是安全的,并将密钥以明文形式存储在服务器上,或者客户端通过安全连接HTTPS发送密码。服务器可以将SHA1哈希与密码哈希匹配,然后用密码加密文件。@Soumya Simanta:请注意,HTTP连接比HTTPS更容易受到MITM攻击。考虑将文件的消息摘要与HTTPS中的密码一起传输,并在HTTP中传输文件。但是,我会用HTTPS做所有事情。由于两种方法都有相同的操作,因此差异似乎是名义上的。HTTPS可能更快,因为传输和加密都是并行完成的,而不是在通过有线传输之前必须对整个文件进行加密。服务器不必解密也可以节省资源。