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中加密-发送-保存-接收文件的主要内容,如果未能解决你的问题,请参考以下文章