2013-11-27 3 views
0

동일한 릴리스 엔지니어링 키로 서명 된 응용 프로그램 B가 시작한 활동/서비스가 있습니다. diff 인증서로 서명 된 다른 앱이 앱 A 기능에 액세스 할 수 없도록하기 위해 서명 권한 확인을 추가했습니다.서명 키가 다른 두 응용 프로그램의 응용 프로그램 실행/서비스

이제 삼성 기기에 설치하려면 삼성 특정 키로 서명해야하는 삼성 앱 C (앱 C = 앱 B + 삼성 API)를 만들어야했습니다. 이제 앱 C는 서명 인증서가 일치하지 않으므로 앱 A와 통신 할 수 없습니다. 보안 조치는 다음과 같은 식으로 내게 불쾌감을주었습니다. D

앱 B에서 앱 B와 함께 언급 할 수있는 방법이 있습니까? 앱 C 만 삼성 키로 서명하여 통신 할 수 있습니까?

Samsung 4.0 SDK는 삼성 키로 앱에 서명 할 필요가없는 ELM을 도입했습니다. 하지만 내 고객은 Android 3.0 이후부터 Samsung 3.0 SDK를 지원하고 싶어합니다.

EDIT : - 또한 앱 B는 앱 B 또는 앱 C에 브로드 캐스트를 사용하여 회신합니다. 다시는이 앱 만 방송을 수신하고 다른 수신은 수신하지 않기를 바랍니다. 이것은 좀 더 어려운 일로 보인다.

이 문제를 해결하는 방법에 대한 아이디어가 있으십니까?

+0

왜 앱 A와 앱 B가 처음에 있습니까? 왜 이것이 단지 하나의 앱이 아닌가? – CommonsWare

+0

App A는 Opensource 코드에서 파생 되었기 때문에 그래서 나는 그것을 opensource 인 별도의 응용 프로그램으로 만들기로했습니다. –

+0

그건별로 의미가 없습니다. 10 억 개의 서명 키가있는 10 억 개의 App A가있을 수 있습니다. App B는 App C를 제외하고는 그 대부분과 상호 운용 될 수 없습니다. 다시 묻습니다. 왜 App A와 App B가 처음에 있습니까? 왜 이것이 단지 하나의 앱이 아닌가? – CommonsWare

답변

1

첫 번째로, 고소를당한 경우 판사와 배심원의 방식대로 오픈 소스 라이선스를 해석 할 수도 있고하지 않을 수도 있으므로 자격을 갖춘 변호사를 보유 할 것을 권장합니다.

그 밖에도 앱 A의 Binder.getCallingUid()이 IPC 시나리오의 App B/C의 UID를 반환하는지 확인할 수 있습니다.

  • 사람 : 만약 그렇다면, 당신은이 응용 프로그램은, 다음 그러나

    C.

    앱의 마법의 서명 키 있는지 확인하기 위해 공개 서명 키를 확인되고 있는지 확인하려면 PackageManager을 사용할 수 있습니다 앱 A에 대한 소스를 가진 사람이 앱 A를 수정하여이를 제거 할 수 있습니다.

  • App C의 공개 서명 키는 이론적으로는 문제가되지 않아야합니다 (특히 앱 C를 다운로드하여 직접 검토하는 경우).

  • 나는 활동에서 getCallingUid()을 결코 시도하지 않았다.

my book's GitHub repository에 관련된 도서 샘플을 찾을 수 있습니다. 필자는 역방향 시나리오 (App B/C가 App A가 있어야하고 일부 수정 된 버전이 아닌지 확인)에 대해 염려하는 경향이 있습니다. 따라서 샘플은 약간 반영되지만 경향이 있습니다. 일부 정비사를위한 코드.

+0

감사합니다. 나는 귀하의 게시물에 대한 자세한 내용을 검토 할 것입니다. 역방향 시나리오도 다루는 것이 중요합니다. 업데이트가 곧 올 것입니다. –

+0

App B 및 App C에 App이 포함되어있는 경우 예제와 같이 원시 형식의 공개 서명 키가있는 경우 그들이 실행하고자하는 Intent가 유효한 App A에서 왔는지 여부를 확인할 수 있습니다. 이것에 문제가 있습니까? 또한 질문을 하나 더 추가하기 위해 편집했습니다. –

+0

@ AlokKulkarni : "이것에 문제가 있습니까?" - 앱 B와 C는이 수표를 제거하도록 수정할 수 있습니다. "또 하나의 질문을 덧붙이 기 위해 질문을 편집했다"- 당신이'BroadcastReceiver'의'onReceive()'에서'getCallingUid()'를 시도해 볼 수 있습니다. – CommonsWare