김보안의 블로깅
  • 🏠 Home
  • 📚 Project
    • Blockchain
      • 🎦 PickMe
      • 🎦 IoTC
      • 🎦 Blackchain
      • 📃 Gemology
      • 🎦 PickMe
      • 🎦 PickMe
    • AI
      • 👋 A.I. Dream Reader
      • 🎦 A.I. Dream Reader
    • Security
      • 🎦 SNAC
    • Education
      • 🎦 Smart Lecture
  • 🤸‍♂ Hobby
    • Music
      • Violin
      • Guitar
      • Piano
      • Drum
    • Flower
      • Flower Certificate
    • Sport
      • Ski
      • Skateboard
      • Golf
      • Boxing

2016년 6월 1일 수요일

Android Signing Verify( CERT.RSA, CERT.SF, MANIFEST.MF mean )

 SecureKim     오후 11:41     android, apk, app, cert.rsa, cert.sf, manifest.mf, Security, signing, verify     No comments   



안드로이드를 보면 'Apk Signing' 이라는 말이 많이 나옵니다.

그리고 누구나 마켓에 앱을 올리기 위해 앱을 사이닝 합니다.

하지만 플랫폼이 어떤식으로 검증하는지는

실제로 잘 모르는 분들이 많습니다. 저 또한 안드로이드 보안 한다면서

대강만 알고 있었기에 이번에 제대로 정리합니다.


Apk Signing 을 하면 META-INF 폴더안에 3가지 파일이 생기는데,

CERT.RSA, CERT.SF, MANIFEST.MF 파일입니다.


먼저 MANIFEST.MF 파일을 보면 다음과 같은 구조로 되어있습니다.


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

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

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


아시다시피 각 파일에 대한 해시값이 계산되어 기록되어있습니다.


CERT.SF 파일은 다음과 같은 구조로 되어있습니다.


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

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

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


가장 윗 부분에는 MANIFEST.MF 에 대한 해시값이,
나머지는 MANIFEST.MF 에 기록되어있는 Name, SHA 값, \r\n 값까지 포함해서 3줄을 
해시한 값입니다.



CERT.RSA 에는 공개키와 주체 등이 적혀있고

동일한 앱 이름인데 다른 사이닝 키를 사용하면 충돌합니다.

여기까지는 대부분 아시는 부분입니다.



그런데 위 내용만 안다면 다음과 같은 의문이 생기게 됩니다.

해커가 hack.png 파일을 해시해서 MANIFEST.MF 와 CERT.SF 에 각각 계산해 넣고,

CERT.RSA를 그대로 둔다면....



네. 당연히 막히는데 이유는 다음과 같습니다.


CERT.SF 를 키스토어 개인키로 암호화 한 시그니쳐가 CERT.RSA에 기록되기 때문입니다.


그래서 안드로이드 플랫폼에서는 공개키로 CERT.RSA에 기록된 시그니쳐를 복호화 하고,

실제 CERT.SF 와 비교하는 방식으로 앱 검증을 하게 됩니다. 


이런 내용이 상세히 기록되어있는 블로그는 거의 없고.. 
그냥 앱을 사이닝해서 검증한다는식으로 얼버무리거나
'CERT.SF 내부의 암호화된 값들을 공개키를 이용하여 복호화 하고' 
같은 말도안되는 정보가 많아서 기록으로 남깁니다.




  • Share This:  
  •  Facebook
  •  Twitter
  •  Stumble
  •  Digg
이메일로 전송BlogThis!X에 공유Facebook에서 공유
최근 게시물 이전 게시물 홈

0 개의 댓글:

댓글 쓰기

페이지

  • 홈
  • Hobby

Categories

  • AI
  • AWS
  • Blockchain
  • Hardware
  • Javascript
  • Node.js
  • Plasma
  • Security
  • Study
  • Video
  • android
  • mysql
  • review
  • windows

Popular Posts

  • 다빈치리졸브로 영상의 음성 보정 (잡음 노이즈 없애기)
      잡음 없애는 방법 1. 음악 쪽 들어가서 음악에서 소스 우클릭 - Normalize Audio Levels 2. 우측의 Mixer에서 Dynamics 더블클릭, Effects아래 +누르고 Metering에 Meter 그럼 아래처럼 나오는데  Gat...
  • 블루투스 BLE 보안 모드와 보안 레벨 (BLE SECURITY MODE and SECURITY LEVEL)
      BLE에서 무슨 모드와 무슨 레벨을 사용해야 가장 안전할까? (글 맨 밑에 답 있음) 블루투스는 워낙 표준이 다양하고 버전따라서 달라서 다들 다른 이야기를 하는 것 같다. BLE와 BT는 전혀 별개의 표준인데 같은거라고 이야기하는 사람도 있고 특히...
  • 회사 프록시와 인증서에 고통받는 그대를 위한 글 (Bash, Gradle, Python, wget, nodejs(npm), apt-get, cURL, git, yarn, androidStudio)
    대기업에 입사하면 장단점이 있는데, 단점 중에 하나가 회사에서 프록시를 사용하여 트래픽 감시를 하므로 프록시 설정을 해주어야 한다는 점 입니다. 특히, 회사에서는 https 트래픽도 감시를 하므로 인증서도 설정해 주어야 합니다. 그런데 문...

Blog Archive

  • ►  2024 (2)
    • ►  11월 (2)
  • ►  2023 (2)
    • ►  10월 (1)
    • ►  1월 (1)
  • ►  2022 (10)
    • ►  12월 (1)
    • ►  11월 (3)
    • ►  9월 (1)
    • ►  8월 (1)
    • ►  6월 (2)
    • ►  3월 (2)
  • ►  2021 (9)
    • ►  12월 (3)
    • ►  11월 (1)
    • ►  6월 (1)
    • ►  5월 (2)
    • ►  4월 (2)
  • ►  2020 (12)
    • ►  10월 (1)
    • ►  9월 (2)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (5)
    • ►  4월 (1)
    • ►  2월 (1)
  • ►  2019 (14)
    • ►  10월 (2)
    • ►  7월 (1)
    • ►  3월 (4)
    • ►  2월 (2)
    • ►  1월 (5)
  • ►  2018 (14)
    • ►  12월 (2)
    • ►  11월 (4)
    • ►  10월 (1)
    • ►  8월 (2)
    • ►  5월 (4)
    • ►  1월 (1)
  • ►  2017 (12)
    • ►  10월 (2)
    • ►  9월 (9)
    • ►  5월 (1)
  • ▼  2016 (8)
    • ►  10월 (2)
    • ►  8월 (1)
    • ▼  6월 (1)
      • Android Signing Verify( CERT.RSA, CERT.SF, MANIFES...
    • ►  1월 (4)
  • ►  2015 (6)
    • ►  12월 (3)
    • ►  10월 (1)
    • ►  6월 (1)
    • ►  5월 (1)
  • ►  2014 (10)
    • ►  11월 (1)
    • ►  9월 (1)
    • ►  7월 (1)
    • ►  6월 (1)
    • ►  5월 (3)
    • ►  4월 (1)
    • ►  3월 (2)
  • ►  2013 (28)
    • ►  12월 (3)
    • ►  11월 (6)
    • ►  10월 (6)
    • ►  9월 (6)
    • ►  8월 (1)
    • ►  7월 (3)
    • ►  6월 (3)

구독

글
Atom
글
댓글
Atom
댓글

로드 중입니다...

각오

직접 해보지 않은 것은 포스팅 하지 않겠습니다.

Copyright © 김보안의 블로깅 | Powered by Blogger
Design by Hardeep Asrani | Blogger Theme by NewBloggerThemes.com | Distributed By Gooyaabi Templates