Firma digital de Android

Para garantizar una comunicación fiable se deben resolver dos problemas: en primer lugar, es necesario confirmar que la fuente del mensaje es efectivamente la persona indicada; en segundo lugar, es necesario garantizar que la información no sea manipulada; por un tercero durante el proceso de transmisión Incluso si ha sido manipulado, puede ser detectado.

La firma digital se creó para resolver estos dos problemas. Es una aplicación específica de la tecnología de cifrado asimétrico y la tecnología de resumen digital mencionadas anteriormente.

Para el remitente del mensaje, primero se debe generar un par de claves pública y privada y la clave pública se debe entregar al destinatario del mensaje.

Si el remitente del mensaje quiere enviar algún día un mensaje al destinatario del mensaje, además del mensaje original, el mensaje enviado también debe incluir otro mensaje. Este mensaje se genera mediante los siguientes dos pasos:

1) Extraer el resumen del mensaje original que se enviará

2) Cifrar el resumen de información extraído con su propia clave privada; .

El mensaje obtenido a través de estos dos pasos es la llamada firma digital de la información original.

Para el destinatario de la información, la información que recibe contendrá dos partes, una es el contenido del mensaje original y la otra es la firma digital adjunta. Verificará la autenticidad del mensaje mediante los siguientes tres pasos:

1) Extraer el resumen del mensaje de la parte del mensaje original. Tenga en cuenta que el algoritmo de resumen del mensaje utilizado aquí debe ser coherente con el utilizado por el remitente.

2) Utilice la clave pública obtenida previamente para descifrar la firma digital adjunta;

3) Compare los dos mensajes obtenidos en los dos primeros pasos para ver si son consistentes. Si son consistentes significa que el mensaje efectivamente fue enviado por el remitente esperado y el contenido no ha sido manipulado por el contrario, si son inconsistentes significa que algo salió mal durante el proceso de transmisión y el mensaje no puede ser; confiable.

A través de esta tecnología de firma digital, el problema de la comunicación confiable puede resolverse efectivamente. Si el mensaje original es manipulado durante la transmisión, entonces el resumen extraído del mensaje manipulado en el receptor del mensaje definitivamente será diferente del original. Además, dado que el manipulador no tiene la clave privada del remitente del mensaje, incluso si puede recalcular el resumen del mensaje manipulado, no puede falsificar una firma digital.

En resumen, una firma digital es en realidad una cadena digital que solo puede ser generada por el remitente de la información y no puede ser falsificada por otros. Esta cadena digital también es una verificación efectiva de la autenticidad de la misma. información enviada por el remitente de la información que lo acredite.

Muchas veces no existe un canal de información para comunicar la clave pública con antelación. Entonces, ¿cómo garantizar la seguridad y confiabilidad de la clave pública? Esto se soluciona mediante certificados digitales.

El denominado certificado digital incluye generalmente los siguientes contenidos:

La autoridad emisora ​​del certificado (Emisor)

El período de validez del certificado (Validity )

Clave pública del remitente del mensaje

Propietario del certificado (Asunto)

· Huella dactilar y algoritmo de huella dactilar

Firma digital

Descomprima Android Después de firmar el apk, habrá una carpeta META-INF con tres archivos aquí:

MANIFEST.MF

Revise todas las entradas una por una. one Si es un directorio, omítalo. Si es un archivo, use el algoritmo de resumen de mensajes SHA1 (o SHA256) para extraer el resumen del archivo, codificarlo en BASE64 y escribirlo en un bloque en el MANIFEST. Archivo MF como valor del atributo "SHA1-Digest". Este bloque tiene un atributo "Nombre" cuyo valor es la ruta del archivo en el paquete apk.

CERT.SF

1》Calcule el valor SHA1 general de este archivo MANIFEST.MF, luego codifíquelo con BASE64 y regístrelo en el bloque de atributos principal CERT.SF (en encabezado del archivo) Bajo el valor del atributo "SHA1-Digest-Manifest"

2》Calcule el SHA1 de cada bloque en el archivo MANIFEST.MF uno por uno, y después de la codificación BASE64, regístrelo en el bloque del mismo nombre en CERT.SF , el nombre del atributo es "SHA1-Digest

CERT.RSA

El archivo CERT.SF generado previamente se utilizará para calcular la firma usando la clave privada, y luego se escribirá la firma y la clave pública. El certificado digital de la información se escribe en CERT.RSA y se guarda en un archivo que cumple con el formato PKCS7. cambia cualquier archivo en el paquete apk y luego instala la verificación en el apk. En este momento, la información de resumen del archivo modificado es diferente de la información de verificación de MANIFEST.MF, por lo que la verificación falla y el programa no se puede instalar correctamente. /p>

En segundo lugar, si calcula el nuevo resumen en consecuencia para el valor del archivo modificado y luego cambia el valor del atributo correspondiente en el archivo MANIFEST.MF, definitivamente será diferente del valor de resumen calculado en el CERT. SF y la verificación seguirá fallando.

Finalmente, si aún no se da por vencido, continúe con el cálculo si cambia el valor de resumen de MANIFEST.MF en consecuencia y cambia el valor en CERT. SF, entonces el valor de la firma digital debe ser diferente del registrado en el archivo CERT.RSA, o fallará.

¿Puedes continuar falsificando firmas digitales? ¿Imposible, porque no hay firmas privadas? clave correspondiente al certificado digital

Por lo tanto, si la aplicación reempaquetada se va a instalar en un dispositivo Android, se debe volver a firmar

.