2016-11-14 76 views
2

我想創建一個靜態庫,將執行一些安全敏感的操作。對我來說,使用我的靜態庫的其他應用程序無法訪問靜態庫的數據對我很重要。獨立沙箱爲ios可可觸摸靜態庫

實際上,保存在磁盤和運行時內存中的數據無法通過主機應用訪問是非常重要的。所以我的問題是,如何爲靜態庫提供單獨的沙箱,以便主機應用程序無法訪問這些信息。

有一些安全敏感的庫,我知道有.a文件,我想知道他們如何爲他們的應用程序提供安全性。這裏是一個鏈接paypal的iOS SDK:

https://github.com/paypal/PayPal-iOS-SDK

更新

根據下面鏈接開發商,我們可以使用沙拳擊關鍵在授權文件,使沙拳。它說,默認情況下iOS應用程序是沙盒。 但是iOS靜態庫呢?他們是否也是沙盒?如果不是,我們如何才能沙箱呢?

https://developer.apple.com/library/content/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/AboutEntitlements.html

更新

在Android操作系統,當你正在開發一個項目庫,你可以定義在這個項目給力Android操作系統運行庫的代碼到單獨的進程的manifest標籤(順便說一下,主機進程無法訪問庫進程的運行時內存)。所以我認爲我們在iOS上也應該有這種行爲的等效選項。

更新

請注意,我們要保護,即使在運行時的數據agains主機應用程序。關於通過反射訪問UI元素的數據的一個重大問題。假設有人在Paypal SDK中輸入其卡數據,並且主機可以通過反射訪問輸入的數據。然後,主機應用程序的開發人員可以訪問所有卡信息及其身份驗證數據,並將其用於他們的使用。

+0

iOS安全區將有什麼用處? [文章](https://blog.trailofbits.com/2016/06/28/start-using-the-secure-enclave-crypto-api/),[指南](https://www.apple.com/ business/docs/iOS_Security_Guide.pdf) –

+0

我不明白您的意見,請您指定更多? –

+0

iOS安全區可以爲您生成一個安全密鑰對,私密部分永遠不會離開安全區,但正如我認爲的那樣,目前尚不清楚這對您的情況會有所幫助。你可以將你的庫包裝在一個單獨的應用程序中,當然這個應用程序會被沙盒化,並使用[自定義URL方案](https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter- AppCommunication/Inter-AppCommunication.html#// apple_ref/doc/uid/TP40007072-CH6-SW1)用於您的應用和圖書館應用之間的通信。 –

回答

1

庫和框架屬於託管應用程序。特別是靜態庫的代碼包含在應用程序的二進制文件中,並且沒有分離。你也不能爲一個庫創建一個單獨的沙箱。

您的靜態庫可以通過使用對稱密鑰加密其磁盤上的文件來保護其數據。但攻擊者可能會從您的lib中提取密鑰並可能解密數據。

+0

那麼,如何貝寶和其他金融公司分享.a文件給第三方開發商提供所需的安全性? –

+0

我不知道。我認爲他們使用經過驗證的方法(例如TSL/HTTPS)與服務器進行通信,並將私人數據放入鑰匙串中。我知道他們沒有自己的沙箱。鏈接靜態庫就像添加.o文件到應用程序。 (注意:您可以使用稱爲'ar'(1)的工具創建靜態庫,_archive_的簡寫形式)。 – clemens

+0

請注意,我們希望保護主機應用程序的數據。如果我們將數據保存在鑰匙串中,主機應用程序也可以訪問它 - 當然,主要問題不在這裏,因爲我們可以通過服務器上的安全密鑰對它們進行加密。主要問題是主機何時可以訪問用戶在第三個庫UI中輸入的內容。假設有人在Paypal SDK中輸入其卡數據,並且主機可以通過反射訪問輸入的數據。 –