JAR METAINFMANIFEST MF SHA ManifestVersion 1 0 BuiltBy

  • Slides: 9
Download presentation

자바 코드 서명 • JAR 파일 서명 • META-INF/MANIFEST. MF – 파일 이름과 해당

자바 코드 서명 • JAR 파일 서명 • META-INF/MANIFEST. MF – 파일 이름과 해당 파일의 SHA값이 저 장 Manifest-Version: 1. 0 Built-By: Generated-by-ADT Created-By: Android Gradle 3. 2. 1 Name: Android. Manifest. xml SHA-256 -Digest: w. Jz. Xn. Nps. Us. H 5 DFi. Uv. SOI 6 hj 2 cj/y 2 g+Oc 8 Nb. WVdk 5 YA= Name: classes. dex SHA-256 -Digest: BWii 2 EGQqbk. FNNs 7+8 Mv 0 Cz 18 k. AKg 1 Ic. Tg 7 q. Z 47 H/i 4= … Openssl을 이용하여 Android. Manifest. xml의 SHA-256을 확인 $ openssl sha 256 -binary Android. Manifest. xml | openssl base 64 w. Jz. Xn. Nps. Us. H 5 DFi. Uv. SOI 6 hj 2 cj/y 2 g+Oc 8 Nb. WVdk 5 YA=

자바 코드 서명 • META-INF/CERT. SF – MANIFEST. MF에 대한 SHA • MANIFEST. MF

자바 코드 서명 • META-INF/CERT. SF – MANIFEST. MF에 대한 SHA • MANIFEST. MF 파일 전체와 파일 별 SHA값 부분에 대해 SHA를 저장 Signature-Version: 1. 0 Created-By: 1. 0 (Android) SHA-256 -Digest-Manifest: N 2 a. M/6 q. BUuagh. TC 5 F 0 z 72 Cd. NC 6 NE 1 cx. DEqgf. NF 94 ka. M= X-Android-APK-Signed: 2 Name: Android. Manifest. xml SHA-256 -Digest: q 6 JIVI 6/tkw+v. D 8 Nw 1 Gxm. Auvu+/Astd. DOaa. Ds. Xtq. Ia 8= MANIFEST. MF 의 일부분 $ openssl sha 256 -binary META-INF/MANIFEST. MF | openssl base 64 N 2 a. M/6 q. BUuagh. TC 5 F 0 z 72 Cd. NC 6 NE 1 cx. DEqgf. NF 94 ka. M= $ echo -en "Name: Android. Manifest. xmlrn. SHA-256 -Digest: w. Jz. Xn. Nps. Us. H 5 DFi. Uv. SOI 6 hj 2 cj/y 2 g+Oc 8 Nb. WVdk 5 YA=rn" | openssl sha 256 -binary | openssl base 64 q 6 JIVI 6/tkw+v. D 8 Nw 1 Gxm. Auvu+/Astd. DOaa. Ds. Xtq. Ia 8=

자바 코드 서명 • META-INF/CERT. RSA • CERT. SF 파일의 SHA-256 -Digest-Manifest를 RSA 알고리즘의

자바 코드 서명 • META-INF/CERT. RSA • CERT. SF 파일의 SHA-256 -Digest-Manifest를 RSA 알고리즘의 private key로 암호화한 결과를 CMS 형식으로 저장한 것 • Public key가 저장되어 있음 • CMS = Cryptographic Message Syntax • 서명 검증하기 • CERT. RSA내의 public key를 이용하여 CERT. RSA에 저장된 Digest를 복호화 하고 CERT. SF의 값과 비교하여 검증함 $ jarsigner -verify app-debug. apk jar verified.

자바 코드 서명 • 서명하기 $ jarsigner -keystore debug. keystore -sigalg SHA 256 with.

자바 코드 서명 • 서명하기 $ jarsigner -keystore debug. keystore -sigalg SHA 256 with. RSA -digestalg SHA 1 app-debug. apk androiddebugkey Enter Passphrase for keystore: android jar signed. Warning: The signer's certificate is self-signed.