iOS中加密-发送-保存-接收文件

Posted

技术标签:

【中文标题】iOS中加密-发送-保存-接收文件【英文标题】:Encrypt - send - save - receive files in iOS 【发布时间】:2019-03-21 11:01:09 【问题描述】:

我有一个发送文件的 iMessage 应用程序。数据使用 CloudKit 保存在 iCloud 服务器中。一切正常。

现在我想增加一个新的安全级别。我想在将数据发送到 iCloud 之前对其进行加密。

问题是无法使用公钥/私钥对:

在 iMessage 中,扩展程序无法识别用户。 不能在对话参与者之间打开实时会话来交换密钥。

以下选项都不足以确保数据安全:

在应用程序中使用硬编码的密钥加密。 生成一个随机密钥,用它加密数据,并与数据一起保存在 iCloud 服务器中,以便与文件一起下载解密。

iCloud 可能是安全的,但用户的数据可能是个人/敏感数据,所以我想添加一个新的安全层 + 这对我来说是一个有趣的练习。

谁能帮忙找到正确的加密方法?

【问题讨论】:

您可以向发件人索取密码,用于生成密钥,然后将其与对称密钥算法一起使用;那么问题是如果您不信任该频道,您如何将密码传递给另一方。这是公钥/私钥密码学解决的问题;在英国 GCHQ 的 RSA 和 James Ellis & Clifford Cocks(独立)找到解决方案之前,这被认为是一项几乎不可能完成的任务。 @Paulw11 如果发送方和接收方之间实际上存在通道,这将是一个解决方案。但正如解释的那样,我无法识别接收者,因为 ios 不会提供信息。 您不需要识别接收者,您需要某种方式与接收者共享密钥。要么您通过您拥有的唯一通道发送密钥(但您不信任此通道,因此)您需要参与者“带外”交换密钥 @Paulw11 感谢您的回答,问题是在那之间没有渠道,iMessage 就像增强型短信一样,所以如果我想发送密钥,我必须发送一条“真实”消息用户会看到。 是的,这就是我要说的;如果您不信任该频道,则不能纯粹从发件人那里“带内”执行此操作,因为它只是一个 imesssge。它可以工作的唯一方法是发送者要求接收者首先发送他们的公钥。然后发送方可以使用公钥加密文件加密密钥并将其发送给接收方,最后使用加密密钥加密文件并提供文件。 【参考方案1】:

您可以在自定义 MSMessage 的 url 中发送密钥以及 CloudKit 地址。 url 键和地址可以被编码,base-64 格式为 data url,所以只有你的应用知道如何解码。

这样至少有人需要知道如何在获取加密密钥之前解码您的标准网址。

【讨论】:

以上是关于iOS中加密-发送-保存-接收文件的主要内容,如果未能解决你的问题,请参考以下文章

MD5加密在用户注册时和用户登陆时怎么用?还有效验接收的文件时的问题

iOS DES,AES加密

我可以使用哪种加密算法向/从网络服务器发送/接收数据?

php 发送与接收流文件

怎样不接收浏览器的信息以前的文件还能保存

php发送 与接收流文件