我的Delphi 2010应用程序(目前正在开发中)加密用户的文件并将它们上传到 EC2,然后再上传到 S3。用户可以使用安全网站下载他们的文件(有点像保管箱,但在不同的环境、市场、使用等中......)
我使用 RSA 加密。我让我的用户能够选择是使用自己的私钥(在本地生成)还是使用共享密钥(位于云端)
在处理文件下载时,我发现了 4 种必须正确处理的可能性:
如果用户使用他/她自己的私有加密密钥:
一种。从 Delphi / Client 下载:下载后文件在用户机器上解密
湾。从网站/PHP 下载:不可能(直接),除非我让用户可以下载一个小实用程序,该实用程序允许他/她在本地提供他/她的私钥并在下载后解密文件。
优点/缺点: 安全,但不直截了当/限制性太强,而且无法在手机上进行(?)
用户选择使用我的共享私有加密密钥(位于云端)
一种。从 Delphi / 客户端下载:文件首先通过 EC2 上的 PHP 解密(然后提供给用户),在这种情况下,如果许多用户正在下载文件(不太可能)或被解密的文件太大,下载过程可能会变得非常慢.
湾。从网站/PHP 下载:同 (a)
优点/缺点: 直截了当/只是工作,但可能会导致巨大的 CPU 使用率,下载时不可接受的延迟(尤其是如果有问题的文件大小很大)。
我的两部分问题是:
1)是否有更好的策略来处理这种情况?和
2)如果您想让您的用户能够在私有和共享加密密钥之间进行选择,您会怎么做(在加密策略/处理下载方面)?
PS。我正在使用 Delphi 2010(客户端)和在 EC2 实例上运行的 PHP 5.3 正在运行最新的标准 Amazon Linux 2012 构建
编辑流量总是加密的,所以只有 HTTPS!
编辑 2我正在使用 GPG 进行加密/解密