2016-11-14 5 views
2

보안에 민감한 일부 작업을 수행 할 정적 라이브러리를 만들고 싶습니다. 내 정적 라이브러리를 사용하는 다른 응용 프로그램이 정적 라이브러리의 데이터에 액세스 할 수 없다는 것이 중요합니다.ios 코코아 터치 정적 라이브러리 용 별도 샌드 박스

실제로 디스크에 저장 한 데이터와 런타임에 메모리에 저장 한 데이터 모두 호스트 응용 프로그램을 통해 액세스 할 수없는 것이 중요합니다. 그래서 내 질문은 어떻게 호스트 애플 리케이션이 정보에 액세스 할 수없는 정적 라이브러리에 별도의 샌드 박스를 제공 할 수 있습니다.

.a 개의 파일을 가지고있는 보안에 민감한 라이브러리가 있으며 해당 응용 프로그램에 보안을 제공하는 방법이 궁금합니다.

개발자 링크 아래에 따르면, 우리는 모래 권투 수 있도록 자격 파일에서 모래 복싱 키를 사용할 수 있습니다

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

업데이트 : 여기 paypal 아이폰 OS SDK에 대한 링크입니다. iOS 앱은 기본적으로 샌드 박스 처리됩니다. 하지만 iOS 정적 라이브러리는 어떻게됩니까? 그들이 모래 상자에 넣어 졌는지 도요? 아니라면 어떻게 샌드 박스로 만들 수 있습니까?

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

업데이트 안드로이드 OS에서

프로젝트 라이브러리를 개발할 때 당신이 별도의 프로세스로 라이브러리 코드를 실행하는 안드로이드 OS를 강제로이 프로젝트의 manifest의 태그를 정의 할 수 있습니다 (그런데 호스트 프로세스는 라이브러리 프로세스의 런타임 메모리에 액세스 할 수 없습니다. 그래서 우리는 iOS에서도이 동작에 대해 동일한 옵션을 사용해야한다고 생각합니다.

업데이트

우리는 데이터도 런타임에 호스트 응용 프로그램을 전년도 보호하려는 것을 알하시기 바랍니다. 큰 문제 중 하나는 리플렉션을 통해 UI 요소의 데이터에 액세스하는 것입니다. 누군가가 페이팔 SDK에 카드 데이터를 입력하고 있으며 호스트가 리플렉션을 통해 입력 된 데이터에 액세스 할 수 있다고 가정합니다. 그런 다음 호스트 응용 프로그램 개발자는 모든 카드 정보와 인증 데이터에 액세스하여이를 사용하기 위해 사용할 수 있습니다.

+0

iOS Security Enclave는 어떤 용도로 사용합니까? [article] (https://blog.trailofbits.com/2016/06/28/start-using-the-secure-enclave-crypto-api/), [guide] (https://www.apple.com/ business/docs/iOS_Security_Guide.pdf) –

+0

귀하의 의견을 이해할 수 없으므로 자세히 알려주십시오. –

+0

iOS Security Enclave는 사적인 부분이 보안 영토를 떠날 수없는 보안 키 쌍을 생성 할 수 있지만,이를 통해 생각할 때 상황에 도움이되는 것은 분명하지 않습니다. 라이브러리를 별도의 응용 프로그램에 랩핑 할 수 있습니다 (물론 샌드 박스가 될 수 있음). [custom URL scheme] (https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter- AppCommunication/Inter-AppCommunication.html # // apple_ref/doc/uid/TP40007072-CH6-SW1)을 사용하여 앱과 라이브러리 앱간에 통신 할 수 있습니다. –

답변

1

라이브러리 및 프레임 워크는 호스팅 앱에 속합니다. 특히 정적 lib의 코드는 앱의 바이너리에 포함되어 있으며 분리되지 않습니다. lib 용 별도의 샌드 박스도 만들 수 없습니다.

정적 lib는 디스크의 파일을 대칭 키로 암호화하여 데이터를 보호 할 수 있습니다. 하지만 공격자가 lib에서 키를 추출하여 데이터를 해독 할 수 있습니다.

+0

그래서 제 3의 개발자에게 .a 파일을 공유하는 페이팔 및 기타 금융 회사가 필요한 보안을 제공하는 방법은 무엇입니까? –

+0

잘 모르겠습니다. 나는 서버와의 통신을 위해 검증 된 방법 (예 : TSL/HTTPS)을 사용하고 개인 데이터를 키 체인에 저장한다고 생각합니다. 나는 그들 자신의 샌드 박스가 없다는 것을 안다. 정적 라이브러리를 연결하는 것은 응용 프로그램에 .o 파일을 추가하는 것과 같습니다. (주 :'ar' (1)이라고하는 도구로 정적 라이브러리를 만들고, _archive_의 약식). – clemens

+0

우리는 데이터를 다시 보호하기를 원합니다. 키 체인에 데이터를 저장하면 호스트 응용 프로그램도 액세스 할 수 있습니다. 물론 서버의 보안 키를 통해 암호화 할 수 있기 때문에 주요 문제는 여기에 없습니다. 주요 문제는 호스트가 세 번째 라이브러리 UI에 사용자가 입력 한 내용에 액세스 할 수있는 경우입니다. 누군가가 페이팔 SDK에 카드 데이터를 입력하고 있으며 호스트가 리플렉션을 통해 입력 된 데이터에 액세스 할 수 있다고 가정합니다. –