gpt4 book ai didi

ios - 在将客户端应用程序上的数据发送到服务器之前对其进行加密

转载 作者:行者123 更新时间:2023-12-01 15:53:26 25 4
gpt4 key购买 nike

我正在尝试创建一个应用程序,该应用程序将加密所有用户输入数据,然后将其发送到将存储在 sql 数据库中的服务器。这个想法是数据库中的数据始终是加密的,并且只能在客户端应用程序上解密,所以我正在考虑在客户端应用程序上创建和存储私钥。第二个要求是所有应用程序都可以解密服务器数据库上写入的数据,所以我假设所有应用程序都应该共享相同的私钥。

我的问题是:

  • 如何在我的项目中存储私钥以确保其安全:我正在考虑对其进行混淆,然后将其存储到钥匙串(keychain)中,但是据我了解,混淆和钥匙串(keychain)都不是很安全。我的担心的是我的所有应用程序实例是否都使用相同的私钥黑客只需越狱他就可以轻松访问我的数据自己的电话。如果我动态生成它,那么所有应用程序都将拥有不同的私钥,并且无法以可读的方式共享数据表格
  • 实现这一目标有哪些最佳做法,如果钥匙串(keychain)不安全,是否有其他地方或方法可以做到这一点,如果有不是我会使用钥匙串(keychain),但至少我想解决问题项目中的硬编码 key ,以便可以将其保存在钥匙串(keychain)中第一次运行

编辑

只是为了澄清一点

假设我们有类似云服务的东西,每个云都可以加入许多设备。当其中一个设备更改某些资源时,所有设备都会与其云同步。该云以包含有关拥有设备的用户的一些个人数据的配置文件表示。我希望所有加入云(C1)的设备都可以看到(读取)与该云关联的个人数据,我不希望某些数据库管理员可以读取该数据。所以我想在客户端加密数据,在客户端解密。

简而言之,加密不是出于传输目的,因为我使用 ssl,它只是为了符合新的 GDPR 关于个人数据安全的规定。

编辑 1

经过一番调查,我发现了一种叫做“客户端加密”的东西。它完全符合我的需求,数据在客户端加密,发送到存储在数据库中的服务器,然后再次在客户端解密。但我似乎无法找到一种方法来处理在我的项目中对私钥进行硬编码的需要。为了将它保存到钥匙串(keychain),我必须从某个地方加载它,如果我生成它,那么其他客户端将不会拥有相同的 key 并且它无法解密数据。那么有人可以帮助我吗,我是从错误的角度看待这个问题吗?

最佳答案

假设使用 TLS,根据您的问题,我们可以概述您提出的以下要求:

  • 存储在服务器上的所有信息都必须以这样一种方式进行加密,以免服务器泄露不会泄露任何数据。

  • 给定“云”中的所有客户端都可以访问该云中的所有数据。

  • 丢失客户端设备不会从云端泄露任何信息。

然后我们可以像这样概述一个 E2E 方案:

  1. 首次创建用户时,在客户端生成公钥/私钥并将公钥传输到服务器。使用从用户密码生成的对称 key 加密客户端的私钥。因此,任何需要此私钥的操作也需要用户密码,以防止设备被盗。

  2. 当用户希望创建一个“云组”时,为该组生成一个对称 key ,并用用户公钥对其进行加密。将此 key 存储在客户端设备上,并使用用户公钥加密。

  3. 当用户想将另一个用户添加到他们的“云组”中时,用新用户的公钥加密组对称 key 并传输。

  4. “云组”内的通信和存储使用组对称 key 。

请注意,在此方案中:

  • 服务器无法解密任何数据,因为组对称 key 只有在由特定用户公钥加密时才会接触服务器。

  • 使用他们的私钥总是需要用户密码,因此设备被盗不会将任何信息暴露给小偷。

  • “云组”的所有用户都可以使用简单的对称算法相互通信。

关于ios - 在将客户端应用程序上的数据发送到服务器之前对其进行加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47556488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com