티스토리 뷰

META-INF
안드로이드  android apk 내의 Manifest 파일 관련
apk signing 관련 


android app 을 만드는 과정에서 보통 signing 이라는 과정을 거친다. 이 signing 은 내가 만들었소 하고 표시하는 과정이다. 그러면 이 표시가 되어 있는 녀석을 보고 android system 에서 signing 이 누구것인가에 따라 실행을 해도 되는지 여부나 어느정도의 권한까지 허락해야 하는지를 판단하는 것이다.

이 signing 을 거치면 META-INF 라는 폴더가 생기고, 그 안에 signing 과 관련된 파일들을 넣게 된다. 보통 이 파일들이 아래 보이는 것 처럼
  • CERT.RSA
  • CERT.SF
  • MANIFEST.MF

이다.



참고로 이 apk 도 jar 의 format 을 그대로 가져오고 있다. 그렇기 때문에 아래의 내용은 jar 문서를 보고 적어놓은 것이지만, apk 의 내용과도 별로 다를 것이 없다.

Manifest File
MANIFEST.MF 의 내용을 확인 해 보자.


Manifest-Version: 1.0
Created-By: 1.0 (Android SignApk)

Name: res/drawable-hdpi-v4/note_btn_02_p.9.png
SHA1-Digest: 9N951JbaBqMwJu6neE80ZxknAaA=

Name: res/drawable-hdpi-v4/popup_mean_top.png
SHA1-Digest: aKuzkBMBNNlmgMu9Kfcl7CVk2Ec=

...


이런 모양을 띠고 있다.
여기서 Manifest-Version 이나 Created-By 은 보기만 해도 이해가 갈터이니 넘어가고 Name 을 살펴보자.

이 Name 들을 보면 apk 가 가지고 있는 file 들을 보여준다는 것을 쉽게 알 수 있을 것이다. 근데 그 밑에 있는 Digest 가 무엇인지는 쉽지가 않다. 밑에 있는 Digest 는 signing 할 때 Name 에 써져 있는 file 내용에 대한 hash 값이거나, ecoded 된 값으로 되어 있다. 그렇기 때문에 이 digest 의 내용은 file 의 내용이 수정되어 지면, 같이 수정되어 져야 한다.


Signiture File
그럼 이제 CERT.SF 를 보자 .SF 는 signiture file 을 뜻한다. 이 signature file 을 열어보면,

Signature-Version: 1.0
Created-By: 1.0 (Android SignApk)
SHA1-Digest-Manifest: 7xpSMheWj+9cc+YiEZUoa52CaZc=

Name: res/drawable-hdpi-v4/note_btn_02_p.9.png
SHA1-Digest: 5tNwzpVMTwTTh82YDhYYPnI7Ljc=

Name: res/drawable-hdpi-v4/popup_mean_top.png
SHA1-Digest: 5l/YxPScJe4eaks0aiKJHIwKrK4=

... 


Manifest 파일과 매우 비슷하게 생겼다. 하지만 Digest 안에 있는 값은 다르다. 이 signature file 에 있는 Digest 값은 Manifest 에 있는 값을 가지고 만들어진 값이다. 같은 name 에 해당하는 manifest 의 녀석들을 가지고 계산해서 나온 값인데, 아마 Manifest 의 digest 값을 가지고 했을 것으로 추측한다.(귀찮아서 테스트는..ㅜ.ㅜ)


Signature Block File
그리고 마지막으로 CERT.RSA 가 있다. 이 CERT.RSA를 signature block file 이라고 부르는데 보통 뒤에 확장자를 signature block file 을 만들때 사용한 algorithm 이름으로 한다.

이 signature block file 은 다음 2개의 요소를 갖는다.
  • sign 한 사람(signer)의 private 키로 만들어진 JAR file 에 대한 digital signature(전자서명)
  • sign 한 사람의 public key 를 포함한 인증서(certificate) - signed JAR file 이 누구에 의해 sign 된 것인지를 알고 싶은 사람에 의해 이용된다.(verify)

참고로 이 signature block file 은 다른 2 file 들과는 다르게 text 로 되어있지 않다.

여하튼 좀 더 자세한 이야기는 아래 link 를 참조하자. 여기서는 간략하게 소개하느라 아귀가 맞지 않는 부분이 있을 듯 하다. 영어라 좀 힘들지만 이해를 쉽게 하려면아래 링크를 추천한다.




Other Reference

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함