2

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

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

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

那么有没有人有任何建议来防止那些具有服务器访问权限的人获取密钥和解密数据?密码加盐是否会有所帮助,或者他们仍然能够很容易地解密数据。

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

4

4 回答 4

0

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

于 2013-08-04T13:57:17.100 回答
0

我想这对于共享主机来说是一种风险。我在我的大部分项目中使用 amazon aws,在我的个人博客中使用 linode。两种解决方案都采用“您是自己的系统管理员”的模型,没有人窥视您的机器。

如果我站在你的立场上,我会使用带有可变密钥的 mcrypt。例如,同一行的用户名字段。这样,为了使数据受到破坏,入侵者需要访问您的数据库和源代码,以弄清楚如何解密数据。到那时,您的问题将比单纯的信息泄漏要糟糕得多。

于 2013-08-04T14:01:18.950 回答
0

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

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

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

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

但是解密数据真的很难。

我希望你能理解我。

干杯:)

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

于 2013-08-04T14:05:34.793 回答
0

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

加密

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

解密

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

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

总是从威胁模型开始。

于 2017-12-28T19:21:06.127 回答