Android — Firma y proceso de publicación 04

CrhystamiL
3 min readDec 2, 2019

Una vez que el desarrollo ha sido exitoso, el próximo paso es publicar y compartirlo con otros. Sin embargo las aplicaciones no puede compartirse y publicarse en una tienda sin antes ser firmada. La firma criptografía sirve como una marca verificable del desarrollador de la aplicación.

Proceso de firmado.

Durante el desarrollo las aplicaciones son firmadas con un certificado auto generado. Este certificado es inseguro y es solo para depuración. La mayoría de las tiendas no aceptan este tipo de certificados, por lo tanto se necesita un certificado con características mas seguras. Cuando una aplicación se instala en un dispositivo el Package Manager se asegura que se haya firmado con el certificado correspondiente.

Esquemas de Firmado para APK

Android admite 3 esquemas de firma de aplicaciones.

  • APK signature Scheme v3 (v3 scheme)
  • APK signature Scheme v2 (v2 scheme)
  • JAR Signing (v1 scheme)

Para la compatibilidad con versiones antiguas de android, la plataforma ignora las firmas v2 y verifica solo las firmas v1.

Para mayor información visita la documentación oficial de android.

Generar tu propio certificado

Android utiliza certificados públicos/privados para firmar aplicaciones (APK). Los certificados contienen información de quien lo genero, estos son únicos y no se pueden volver a generar.

Notar que cuando se pierde un certificado, este no se puede recuperar por lo que resulta imposible actualizar las aplicaciones firmadas con ese certificado.

Con el comando keytool generaremos un par de certificados RSA con longitud 2048 bits y un tiempo de vencimiento 7300 dias = 20 años. Los certificados generados se almacenan en el archivo mykey.jks.

$ keytool -genkey -alias MyDomain -keyalg RSA -keysize 2048 -validity 7300 -keystore MykeyStore.jks -storepass MyPassword

Firmando una aplicación

El objetivo del proceso de firma es asociar la aplicación con el certificado del desarrollador. El desarrollador firma la aplicación y calcula un hash del archivo APK, para que terceros puedan verificar la autenticidad de la aplicación.

Para firmar las aplicaciones se puede usar el comando apksigner proporcionado por el SDK de android. Para versiones inferiores de la API 24.0.2 puede usar jarsigner que es parte del Java JDK.

Firmar una aplicación con apksigner
Firmar una aplicación con jarsigner

Proceso de publicación

Es posible publicar tu aplicación en cualquier tienda, esto es posible porque android es un ecosistema abierto. GooglePlay la tienda mas conocida, confiable y popular, como la tienda de amazon. Si los usuarios desean instalar aplicaciones no confiables, el usuario debe permitirlo explícitamente en la configuración de seguridad del dispositivo.

Para la publicación de una aplicación, Google administra y protege la firma que se utiliza para firmar la app, y la usara para firmar los APK que se distribuyan. Para saber mas puede ver la documentación.

--

--

CrhystamiL

CEH, CyberSecurity Researcher,Ethical Hacker, GNU/Linux Lover.