PHP纯文本加密 - 保持密钥安全

问题描述 投票:2回答:4

在典型的Web场景中,网站用户将出现,使用网站,填写表单,并将数据传输到服务器以存储在数据库中。现在让我们说我们需要确保他们的地址被加密,因为它是绝密的,只有访问网站后端的人应该能够看到该地址是什么 - 这很容易实现吗?我们只存储一个加密密钥服务器端,用于生成加密数据,将数据存储在数据库中,我们只需再次使用密钥对其进行解密。

现在假设托管公司的某个人要浏览您服务器上的文件 - 他们可以非常轻松地访问此加密密钥,然后使用它来解密他们想要的任何数据,因为数据库中的所有地址都已使用相同的方式加密键!

我只是试图用新的安全模型覆盖每个基础,并且在“不信任任何人”策略中,我正在寻找阻止托管公司获取数据的方法。

那么有没有人有任何建议,以防止有服务器访问权限的人获取密钥和解密数据?密码腌制会以任何方式提供帮助,还是他们仍然可以很容易地解密数据。

我想不出解决这个问题的办法。有没有人有任何建议来解决这个特殊问题?

php security encryption key
4个回答
0
投票

在浏览器中加密和解密发送给主机的所有内容。使用在客户端上输入的密码短语进行加密,并且永远不会将密码短语发送到主机。在Host-proof Hosting有一个更全面的描述


0
投票

我想在共享主机方面存在风险。我在我的大部分项目中使用amazon aws,在我的个人博客中使用linode。这两种解决方案都在“你是你自己的系统管理员”的模型中,没有人偷看你的机器。

如果我在你的鞋子里,我会使用带有可变键的mcrypt。例如,同一行的用户名字段。这样,对于要泄露的数据,入侵者需要访问您的数据库和源代码,以找出如何解密数据。那时你的问题远比单纯的信息泄漏更糟糕。


0
投票

大多数托管公司都可以访问所有数据库和文件,这些数据库和文件非常糟糕。

几年前,我做了一些加密和解密的实验。

最好的方法是拥有个人服务器,但这并不便宜。

示例RC4加密需要密钥数据的密钥。现在棘手的部分是使该密钥也使用BASE 64,ATOM 128等其他加密进行加密。这不会使其100%安全

但解密数据真的很难。

我希望你能理解我。

干杯:)

顺便说一下,没有100%的安全数据。


0
投票

如果您不需要能够在线解密数据,这是公钥加密的理想情况。特别是密封API。例如,使用libsodium(PHP 7.2):

Encryption

$store_me = sodium_crypto_box_seal($plaintext, $box_publickey);
sodium_memzero($plaintext);

Decryption

$plaintext = sodium_crypto_box_seal_open($stored_msg, $box_keypair);

但是,如果您确实需要能够解密来自网络服务器的数据,那么访问网络服务器的任何人都可以窃取密钥并解密您的数据。没有密码算法可以阻止某些人使用密钥解密消息。

始终以threat model开头。

© www.soinside.com 2019 - 2024. All rights reserved.