【发布时间】: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。可能您购买域名的人也提供了证书。
-
加密就是将该文件保存到磁盘,然后在需要时通过解密来使用它。
-
您可以使用
NSDatawriteToFile:options:error:保存它,并使用DataWritingFileProtection*将文件加密写入磁盘并自动处理密钥。 -
DatawritingFileproctection 需要在手机上设置密码才能更安全。在 https 和证书身份验证之后通过网络发送您之前提到的 sharedKey 并将此密钥保存在钥匙串中并使用它以供进一步使用是否更好。正如你提到的一些对苹果 KeyChain 有信心的地方?你看到这里有缺陷吗?
标签: ios https in-app-purchase ssl-certificate keychain