iOS 安全性:Web 服务器和文件系统
iOS Security: Web server and File system
我看过关于安全的苹果开发者视频,他们提到使用 ssl https 证书和钥匙串来处理安全问题。
我的 iOS 应用程序将允许访问敏感的付费文件。所以黑客不应该访问这些文件。我将在应用程序购买中使用,以便用户可以购买这些文件。
1) 我的第一个问题是:我应该在苹果服务器上托管我的文件(托管内容),苹果与客户端的通信是否足够安全,或者我应该使用证书和 ssl 身份验证实现我自己的服务器代码。
2) 我想知道或了解如何在我的台式机上使用私钥加密文件,然后将其上传到我的服务器上。当我的 iOS 应用程序要求时,传递 public 密钥和加密文件并将 public 密钥保存在钥匙串中以供进一步使用。我想要这个功能,以便将文件保存在磁盘上,而没有任何人可以通过越狱或其他黑客手段访问它。
3) public 和私钥应该使用什么以及使用什么类型的加密。目前我发现 AES 看起来不错,但有更好的方法吗?证书本身能否用于加密数据或传递密钥?
4) 联系哪个证书颁发机构以获得最安全的证书。
提前致谢...
编辑:
实现的主要目的是下载 pdf,应用程序外的用户不应访问 pdf。
1) 我决定使用来自 CA 和 https 的根证书来传输内容,以避免 MINM。
2) 在应用端,我将生成 public 私钥对。
3) 将私钥保存在钥匙串中。
4) 发送 Public 密钥到服务器。
5) 服务器将使用 MAIN-AES-Key 加密 pdf。
6) MAIN-AES-Key 将使用应用程序发送的 Public 密钥进行加密。
7) Encrypted-pdf 和 Encrypted-MAIN-AES-Key 将被发送到应用程序。
8) 加密的 pdf 将使用安全写入选项保存到磁盘,以防万一。
9) Encrypted-MAIN-AES-Key 将保存在钥匙串中。
10) 解密pdf:应用程序生成的私钥将用于解密加密的MAIN-AES-Key,MAIN-AES-KEY将用于解密pdf。
11) 最终将信任 Apple-KeyChain 以确保私钥安全。
解决方案过于复杂。越复杂,越不安全,因为潜力越大 errors/over-sights.
- 使用带有 CA 签名证书的 https
- 为了避免 MITM 在应用端固定证书
- 无需进一步加密通过 https 发送的数据
- 加密设备上的文件并保存:
- 从随机字节创建加密
- 将密钥保存在钥匙串中
- 从随机字节创建一个 iv
- 将 iv 添加到加密缓冲区的开头
- 使用AES、CBC模式和PKS7填充将数据加密到iv
之后的缓冲区中
- 将数据保存到应用程序文件区域的文件中,可能在 Documents 或 Library 目录下
- 解密设备上的文件并使用:
- 从钥匙串中获取钥匙
- 读取加密数据文件
- 从数据开头获取iv
- 解密刚刚经过 iv 的数据
- 不要忽略服务器
- 使用双因素身份验证。
- 用盐适当地散列任何密码
- 使用良好的用户身份验证
对于应用程序数据加密,考虑使用 RNCryptor 而不是自己编写加密部分。
我看过关于安全的苹果开发者视频,他们提到使用 ssl https 证书和钥匙串来处理安全问题。
我的 iOS 应用程序将允许访问敏感的付费文件。所以黑客不应该访问这些文件。我将在应用程序购买中使用,以便用户可以购买这些文件。
1) 我的第一个问题是:我应该在苹果服务器上托管我的文件(托管内容),苹果与客户端的通信是否足够安全,或者我应该使用证书和 ssl 身份验证实现我自己的服务器代码。
2) 我想知道或了解如何在我的台式机上使用私钥加密文件,然后将其上传到我的服务器上。当我的 iOS 应用程序要求时,传递 public 密钥和加密文件并将 public 密钥保存在钥匙串中以供进一步使用。我想要这个功能,以便将文件保存在磁盘上,而没有任何人可以通过越狱或其他黑客手段访问它。
3) public 和私钥应该使用什么以及使用什么类型的加密。目前我发现 AES 看起来不错,但有更好的方法吗?证书本身能否用于加密数据或传递密钥?
4) 联系哪个证书颁发机构以获得最安全的证书。
提前致谢...
编辑: 实现的主要目的是下载 pdf,应用程序外的用户不应访问 pdf。
1) 我决定使用来自 CA 和 https 的根证书来传输内容,以避免 MINM。
2) 在应用端,我将生成 public 私钥对。
3) 将私钥保存在钥匙串中。
4) 发送 Public 密钥到服务器。
5) 服务器将使用 MAIN-AES-Key 加密 pdf。
6) MAIN-AES-Key 将使用应用程序发送的 Public 密钥进行加密。
7) Encrypted-pdf 和 Encrypted-MAIN-AES-Key 将被发送到应用程序。
8) 加密的 pdf 将使用安全写入选项保存到磁盘,以防万一。
9) Encrypted-MAIN-AES-Key 将保存在钥匙串中。
10) 解密pdf:应用程序生成的私钥将用于解密加密的MAIN-AES-Key,MAIN-AES-KEY将用于解密pdf。
11) 最终将信任 Apple-KeyChain 以确保私钥安全。
解决方案过于复杂。越复杂,越不安全,因为潜力越大 errors/over-sights.
- 使用带有 CA 签名证书的 https
- 为了避免 MITM 在应用端固定证书
- 无需进一步加密通过 https 发送的数据
- 加密设备上的文件并保存:
- 从随机字节创建加密
- 将密钥保存在钥匙串中
- 从随机字节创建一个 iv
- 将 iv 添加到加密缓冲区的开头
- 使用AES、CBC模式和PKS7填充将数据加密到iv 之后的缓冲区中
- 将数据保存到应用程序文件区域的文件中,可能在 Documents 或 Library 目录下
- 解密设备上的文件并使用:
- 从钥匙串中获取钥匙
- 读取加密数据文件
- 从数据开头获取iv
- 解密刚刚经过 iv 的数据
- 不要忽略服务器
- 使用双因素身份验证。
- 用盐适当地散列任何密码
- 使用良好的用户身份验证
对于应用程序数据加密,考虑使用 RNCryptor 而不是自己编写加密部分。