ios cocoa touch静态库的单独沙盒

ios cocoa touch静态库的单独沙盒,ios,security,cocoa-touch,static-libraries,sandbox,Ios,Security,Cocoa Touch,Static Libraries,Sandbox,我想创建一个静态库,它将执行一些安全敏感的操作。使用我的静态库的其他应用程序不能访问静态库的数据,这对我来说很重要 实际上,重要的是,我保存在磁盘中的数据和运行时保存在内存中的数据都不能通过主机应用程序访问。所以我的问题是,我如何为静态库提供一个单独的沙箱,以便宿主应用程序无法访问这些信息 我知道有些安全敏感库有.a文件,我想知道它们是如何为应用程序提供安全性的。以下是指向paypaliOS SDK的链接: 更新 根据下面的开发者链接,我们可以在授权文件中使用沙盒键来启用沙盒。 它说iOS应用

我想创建一个静态库,它将执行一些安全敏感的操作。使用我的静态库的其他应用程序不能访问静态库的数据,这对我来说很重要

实际上,重要的是,我保存在磁盘中的数据和运行时保存在内存中的数据都不能通过主机应用程序访问。所以我的问题是,我如何为静态库提供一个单独的沙箱,以便宿主应用程序无法访问这些信息

我知道有些安全敏感库有
.a
文件,我想知道它们是如何为应用程序提供安全性的。以下是指向
paypal
iOS SDK的链接:

更新

根据下面的开发者链接,我们可以在授权文件中使用沙盒键来启用沙盒。 它说iOS应用程序默认是沙盒。 但是iOS静态库呢?它们是否也用沙盒包装?如果没有,我们如何对其进行沙箱处理

更新

在Android操作系统中,当您开发项目库时,您可以在该项目的
清单中定义一个标记,以强制Android操作系统将库代码运行到单独的进程中(通过这种方式,主机进程无法访问库进程的运行时内存)。因此,我认为我们也应该在iOS上为这种行为提供一个同等的选项

更新


请注意,我们希望即使在运行时也能保护主机应用程序中的数据。通过反射访问UI元素的数据是一个大问题。假设有人在Paypal SDK中输入卡片数据,主机可以通过反射访问输入的数据。然后,宿主应用程序的开发人员可以访问所有卡信息及其身份验证数据,并将其用于自己的用途。

库和框架属于宿主应用程序。尤其是静态库的代码包含在应用程序的二进制文件中,并且没有分离。您也不能为库创建单独的沙盒


静态库可以通过使用对称密钥加密磁盘上的文件来保护其数据。但是攻击者可能会从您的lib中提取密钥并解密数据。

那么,paypal和其他共享文件的金融公司如何向第三方开发者提供所需的安全性呢?我不知道。我认为他们使用经验证的方法(例如TSL/HTTPS)与服务器通信,并将私有数据放入密钥链。我知道他们没有自己的沙箱。链接静态库就像向应用程序添加.o文件。(注意:您可以使用名为
ar
(1)的工具创建静态库,这是存档的缩写形式)。请注意,我们希望重新保护主机应用程序中的数据。如果我们将数据保存在密钥链中,主机应用程序也可以访问它——当然,主要问题不在这里,因为我们可以通过来自服务器的安全密钥对它们进行加密。主要问题是主机何时可以访问用户在第三个库UI中输入的内容。假设有人在Paypal SDK中输入其卡数据,主机可以通过反射访问输入的数据。我了解您的使用情况,但您无法针对主机应用程序保护数据,因为主机应用程序和库之间没有分离。iOS安全Enclave是否有用,我不理解你的评论,请你详细说明一下好吗?iOS安全飞地可以为你生成一个安全的密钥对,其中的私有部分永远不能离开安全飞地,但我认为,这对你的情况有帮助还不清楚。你可以将你的库包装在一个单独的应用程序中(当然是沙盒),并在你的应用程序和库应用程序之间使用a进行通信。请注意,有一些限制,你可能不得不假装做一个允许的后台活动。@JoshSanford我不想做任何后台操作,我只是想找到一种方法,当用户按下主机应用程序中的按钮并打开我的库的viewcontroller时,主机应用程序无法访问我的库在运行时保存的数据。一种方法是告诉操作系统在单独的操作系统进程(与应用程序主进程分离)中运行我的库数据。