마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

하나의 앱이 매번 서명할 때마다 그 서명정보를 모두 가지고 있는지 알고 싶습니다.

0 추천
안녕하세요. 초보 개발자입니다.

다름이 아니라 서명과 관련하여 단순한 궁금증이 생겨 이렇게 질문을 드립니다.

질문 사항은 다음과 같습니다.

 

1. 하나의 앱을 여러번 서명했을 때 앱은 여러개의 서명값(서명 정보)를 가지고 있는가?

2. 만약 그렇다면 custom permission으로 'android:protectionLevel'로 'signature'를 지정했을 때 여러개의 서명 값 중 하나만 가지고 있어도 되는가?

 

저는 마지막 서명했을 때의 서명값을 가지고 있을것이라 생각하는데(서명을 할 때마다 이전 서명값이 덮어씌워짐.) 앱은 서명을 할 때마다 모든 서명값을 지니고 있다라고 하신 분이 계셔서요. 또한 두번째 지문에 대해서도 얘기가 나왔는데 하나의 앱에서 다른 앱을 호출할 때 처음서명값(개발자 서명값)이 있으면 호출하는 앱이 다른 누군가에 의해 사인되었다 하더라도 초기 서명값은 둘 다 지니고 있어서 호출하는데 문제 없지 않나? 라고 하셨습니다.

그래서 그런 논리라면 다른 누군가가 두 앱을 모두 다운 받은 후 둘 다 자기가 서명해버리면 소용없어 진다고 그것은 아닌것 같다라고 하였는데 말해놓고 저도 헥갈리기 시작하네요.

위의 두 질문에 대해 어떻게 되는지 알고 싶습니다.^^;
滅成地天何 (400 포인트) 님이 2014년 1월 3일 질문
질문의 요지가 무엇인지요???

어플을 호출하는데 개발자 서명이 왜 필요한지???
앱 두개를 커스텀 퍼미션으로 묶고 한쪽에서 호출하면 한쪽에서 실행하는 앱을 만들려 하는데 커스텀퍼미션의 'protectionLevel'을 signature로 두면 같은 서명값을 가지고 있는 앱끼리만 호출할 수 있도록 만들 수 있다고 합니다.
ex) 한쪽에서 broadcastreceiver로 다른앱이 작업하게 한다든지 혹은 다른 앱의 서비스를 호출한다든지..할 때 android:permission에 만든 커스텀 퍼미션을 설정 후 호출.

그걸 테스트하려다가 생긴 궁금증이라서 이렇게 올려봤습니다.^^

1개의 답변

+1 추천
1. 그렇다.

>배열로 가져올수 있음.

 

2. 잘 모르겠다.

>프로텍션 레벨 시그니쳐는 시스템에서만 쓰인다고 하는 답변이 구글을 통해 안펍에 뜨네요. 다만 원본 문서를 보면 워가 맞는말인지 모르겠음.

> 일단 서명만 다시하는 것에 대해 0번차 인증서의 무결성 검증이 실패하면 문제겠지만, 0번차 인증서가 정상이면 정상 판정이 나지 않을까 추측되고, 구글 플레이 서버도 기본적으로 0번 인증서 무결성을 볼것으로 추정되므로 단순 재 서명은 큰 의미가 없을 것으로 추정(해보고 알려주세요).

>모든 서명이 디버그인증서가 아니면서 성공적으로 이루어진 상태라면 패스할 것으로 추정함(당연하겠죠)

> 리팩한다면 이미 기존 인증서가 깨진상태라 중첩 서명 의미는 없다고 보여지며(해보고 알려주세요) 그냥 새로운 apk임
익명사용자 님이 2014년 1월 3일 답변
감사합니다. 많은 도움이 되었습니다. 테스트 후  답변달도록 하겠습니다.^^
...