¿Cómo puedo verificar un Google oficial apk

Con todo el enraizamiento y mods personalizados por ahí para Android, me pone nervioso que algunos de los apks que afirman que son de google son en realidad maliciosos.

Así que al tratar de verificar que he extraído una ANDROID.RSA clave pública y he estado tratando de verificar en línea .. pero cada búsqueda de google resulta métodos de hacer cifrado de clave pública en android y no la forma de verificar reales google apks

Así que mi pregunta básica es:

¿Cómo puedo verificar que un apk de Google es en realidad un apk de Google?

La clave pública RSA que encontré:

Owner: CN=Google NFC, OU=Android, O=Google Inc., L=Mountain View, ST=California, C=US Issuer: CN=Google NFC, OU=Android, O=Google Inc., L=Mountain View, ST=California, C=US Serial number: a8cd17c93da5d990 Valid from: Wed Mar 23 21:06:53 EDT 2011 until: Sun Aug 08 21:06:53 EDT 2038 Certificate fingerprints: MD5: C9:E9:71:21:25:5D:E0:15:6F:3F:5B:24:B1:A8:47:6A SHA1: 82:75:9E:2D:B4:3F:9C:CB:AF:CE:31:3B:C6:74:F3:57:48:FA:BD:7A Signature algorithm name: SHA1withRSA Version: 3 Extensions: #1: ObjectId: 2.5.29.14 Criticality=false SubjectKeyIdentifier [ KeyIdentifier [ 0000: 1C CE CE 0E EA 4D C1 12 1F C7 51 5F 0D 0A 0C 72 .....M....Q_...r 0010: E0 8C C9 6D ...m ] ] #2: ObjectId: 2.5.29.19 Criticality=false BasicConstraints:[ CA:true PathLen:2147483647 ] #3: ObjectId: 2.5.29.35 Criticality=false AuthorityKeyIdentifier [ KeyIdentifier [ 0000: 1C CE CE 0E EA 4D C1 12 1F C7 51 5F 0D 0A 0C 72 .....M....Q_...r 0010: E0 8C C9 6D ...m ] [CN=Google NFC, OU=Android, O=Google Inc., L=Mountain View, ST=California, C=US] SerialNumber: [ a8cd17c9 3da5d990] ] 

Puse esta solución junto mientras que intentaba validar una transferencia directa del APK de Google Wallet para mi Nexus de Verizon Galaxy.

Para verificar una firma de aplicaciones necesita un origen de confianza que tenga alguna versión del apk. Android obliga a las actualizaciones de aplicaciones con el mismo nombre de paquete que firman el mismo certificado, por lo que Google Wallet no puede cambiar su certificado sin crear un nuevo nombre de paquete y exigir que cada usuario vuelva a instalar la aplicación.

  1. Descargar una imagen de fábrica que contiene Google Wallet desde una fuente de confianza

    https://developers.google.com/android/nexus/images#takju

  2. Descargar extractor de imágenes del sistema

    http://andwise.net/?attachment_id=406

  3. Extraer la imagen de fábrica

     tar xzvf takju-jro03c-factory-bf087655.tgz mv takju-jro03c/image-takju-jro03c.zip . 
  4. Extraer la imagen incrustada (archivo zip)

     unzip image-takju-jro03c.zip 
  5. Extraer el extractor de imágenes del sistema (el archivo que descargamos en la parte 2)

     tar xzvf ext4_utils.tar.gz chmod +x simg2img 
  6. Extraer una imagen montable ext4 de la imagen del sistema

     ./simg2img system.img system.image.ext4 
  7. mkdir sys

  8. Monte la imagen ext4 extraída con la nueva carpeta sys / como el punto de montaje

     sudo mount -t ext4 -o loop system.image.ext4 sys/ 
  9. Ver el certificado Wallet.apk

     unzip -p sys/app/Wallet.apk META-INF/CERT.RSA | keytool -printcert 
  10. Compare las huellas dactilares y el número de serie (las copié en cadenas de python y las comparé de esa manera). Encontrar un ataque SHA-1 previo a la imagen requiere aproximadamente 2 ^ 160 conjeturas, por lo que si las huellas dactilares coinciden con las posibilidades de que el APK descargado sea malo son delgados.

También puedes cargar la imagen de fábrica extraída de Wallet.apk en tu teléfono, adb install sys/app/Wallet.apk , luego descargar el nuevo apk en tu teléfono y lanzarlo desde un administrador de archivos para realizar una actualización. Android realizará la validación del certificado para usted.

  • Android BigInteger ArithmeticException
  • Java: ¿Cómo puedo generar PrivateKey de una cadena?
  • El exponente privado de Android KeyStore no se puede extraer
  • Firma de una cadena con una clave privada, firma RSA-SHA1 y md5 en Android
  • SHA256 con firma RSA devuelve salidas diferentes en varios dispositivos Android
  • Diferencia de cifrado asimétrica - Android vs Java
  • Cómo cargar adbkey.pub con Python RSA
  • RSA Encryption: Diferencia entre Java y Android
  • Problemas de subcontratación de encriptación y descifrado RSA
  • Android - ¿Codificar y decodificar RSA con clave privada?
  • Obtener el error java.lang.ArrayIndexOutOfBoundsException: demasiados datos para el bloque RSA
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.