0

我有一个关于数据加密的问题。我的问题是我在哪里加密数据,为什么?

注册

我目前在应用程序/游戏中加密数据并将数据发送到服务器以添加或更新到数据库。

登录

我要求服务器向我发送有关用户名的数据,包括密码。所以我收到加密的密码和用户名,然后解密密码,看看它是否与玩家输入的内容相符。

我的顾虑

我担心有人可能会拦截发送出去的内容并将其与他们输入的密码进行比较。

我对解决方案的想法是也加密服务器上的数据,但这只有在服务器/数据库被黑客入侵时才有用。

我找不到任何真正针对我的问题的东西。我找到了有关如何加密数据的文章,但没有发现任何风险和安全漏洞。

我还想知道与此相关的标准是什么以及不同方法的风险。

编辑:我担心我想多了,但觉得问起来会更安全。

我没有提供我使用的加密数据的方法,因为我不知道这是否会带来安全风险。

4

2 回答 2

0

如果数据非常敏感,您可以使用在线备份方式(如 Mozy、Carbonite 等),如果丢失密码或私钥,您将丢失数据。

如果不是那么敏感,您只需为所有帐户数据使用主密码,并允许他们重置密码。在服务器上,您只存储一个随机盐和加盐+散列的密码,在通信期间您只发送盐。客户端对其进行哈希处理,您只需比较哈希值,因此永远不会传输原始密码。无论哪种方式,如果他们入侵了您的服务器,他们也可能会获得主密码,除非您每次都必须插入它来启动应用程序。如果它与数据库服务器在物理上是分开的,那么至少在加密的情况下,违反这一点或硬盘驱动器丢失不会暴露你。

如果您担心流量嗅探和哈希重用,如果有人非常想要该帐户,这是一种可能性,您有两个很好的解决方案:更好的可能是使用 SSL 连接,这完全消除了任何暴露的可能性,但可能需要如果您扩展到多台服务器,则需要相当多的资金和设置。否则,您可以创建一个穷人的 Diffie-Hellman,如下所示:使用盐,发送另一个一次性使用密钥;客户端首先用盐对他们的密码进行哈希处理,然后用密钥对结果进行哈希处理并发送它。在服务器端,您将密钥保存在内存或数据库中,一旦它们通过身份验证,您就会忘记密钥。

但是,您永远无法通过加密来防御键盘记录器和 rootkit。这需要其他安全模型,例如让用户通过短信确认新客户端或 IP 登录。

于 2012-10-24T21:15:01.783 回答
0

http://www.jcryption.org/

您可以使用 jCryption 和 OpenSSL 库,jCryption 是用于加密的出色 javascript 库,您可以在客户端加密数据并将其发送到服务器,在服务器调用 openssl 库进行解密/加密,jCryption 现在与 OpenSSL 完全兼容

于 2013-11-30T06:05:22.533 回答