【问题标题】:iOS Security: Web server and File systemiOS 安全:Web 服务器和文件系统
【发布时间】:2015-09-18 16:06:48
【问题描述】:

我浏览了苹果开发者关于安全性的视频,他们提到使用 ssl https 证书和钥匙串来处理安全性。

我的 iOS 应用将允许访问敏感的付费文件。所以黑客不应该访问这些文件。我将使用应用内购买,以便用户可以购买这些文件。

1) 我的第一个问题是:我应该在苹果服务器(托管内容)上托管我的文件,苹果与客户端的通信是否足够安全,或者我应该使用证书和 ssl 身份验证实现我自己的服务器代码。

2) 我想知道或了解如何在我的台式机上使用私钥加密文件,然后将其上传到我的服务器上。当我的 iOS 应用程序要求传递公钥和加密文件并将公钥保存在 Keychain 中以供进一步使用时。我想要这个功能,以便将文件保存在磁盘上,而无需任何人通过越狱或其他黑客方式访问它。

3) 应该使用什么作为公钥和私钥以及使用什么类型的加密。目前我遇到过 AES 看起来足够好但是有更好的方法吗?证书本身可以用来加密数据或传递密钥吗?

4) 联系哪个证书颁发机构以获得最安全的证书。

提前谢谢...

编辑: 实现的主要目的是下载 pdf 并且该 pdf 不应该被应用程序之外的用户访问。

1) 我决定使用 CA 和 https 的根证书来传输内容,以避免 MINM。

2) 在应用程序端,我将生成公钥私钥对。

3) 将私钥保存在钥匙串中。

4) 向服务器发送公钥。

5) 服务器将使用 MAIN-AES-Key 加密 pdf。

6) MAIN-AES-Key 将使用应用发送的公钥进行加密。

7) Encrypted-pdf 和 Encrypted-MAIN-AES-Key 将被发送到应用程序。

8) Encrypted-pdf 将使用安全写入选项保存到磁盘,以防万一。

9) Encrypted-MAIN-AES-Key 将保存在钥匙串中。

10) 解密 pdf:应用程序生成的私钥将用于解密 Encrypted MAIN-AES-Key,MAIN-AES-KEY 将用于解密 pdf。

11) 最终将信任 Apple-KeyChain 来保证私钥的安全。

【问题讨论】:

  • 您可能不是指“公钥”,它具有公钥/私钥对的非对称加密的内涵。这种形式一般不用于加密数据。通常,数据使用对称密钥和使用共享密钥的加密算法(例如 AES(高级加密标准))进行加密。如果您使用 https,则整个连接将被加密,传输不需要额外的加密。
  • 所有证书本质上都同样安全,只需转到任何顶级 CA。可能您购买域名的人也提供了证书。
  • 加密就是将该文件保存到磁盘,然后在需要时通过解密来使用它。
  • 您可以使用NSData writeToFile:options:error: 保存它,并使用DataWritingFileProtection* 将文件加密写入磁盘并自动处理密钥。
  • DatawritingFileproctection 需要在手机上设置密码才能更安全。在 https 和证书身份验证之后通过网络发送您之前提到的 sharedKey 并将此密钥保存在钥匙串中并使用它以供进一步使用是否更好。正如你提到的一些对苹果 KeyChain 有信心的地方?你看到这里有缺陷吗?

标签: ios https in-app-purchase ssl-certificate keychain


【解决方案1】:

解决方案过于复杂。越复杂,安全性越低,因为潜在的错误/疏忽越多。

  1. 请使用带有 CA 签名证书的 https
  2. 为避免 MITM 将证书固定在应用端
  3. 无需进一步加密通过 https 发送的数据
  4. 加密设备上的文件并保存:
    • 从随机字节创建加密
    • 将钥匙保存在钥匙串中
    • 从随机字节创建一个 iv
    • 将 iv 添加到加密缓冲区的开头
    • 使用 AES、CBC 模式和 PKS7 填充将数据加密到 iv 之后的缓冲区中
    • 将数据保存到应用文件区域的文件中,可能在 Documents 或 Library 目录下
  5. 解密设备上的文件并使用:
    • 从钥匙串中获取钥匙
    • 读取加密数据文件
    • 从数据的开头获取iv
    • 从 iv 开始解密数据
  6. 不要忽略服务器
    • 使用双重身份验证。
    • 使用盐正确散列任何密码
    • 使用良好的用户身份验证

对于应用数据加密,请考虑使用RNCryptor,而不是自己编写加密部分。

【讨论】:

    猜你喜欢
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-10
    • 1970-01-01
    • 2017-09-06
    • 2013-06-17
    相关资源
    最近更新 更多