Cifrado en aplicaciones móviles — fundamentos, algoritmos y principio de funcionamiento

Autor: IT Sectr Publicado: 2026-04-02 Tiempo de lectura: 8 min

El cifrado (encryption) es el proceso de convertir datos en una forma ilegible sin una clave especial. En las aplicaciones móviles, el cifrado protege los datos personales de los usuarios, la información de pago y la lógica de negocio contra la intercepción y las filtraciones. Según Statista (2024), el número de filtraciones de datos de aplicaciones móviles aumentó un 38% en dos años, y en el 72% de los casos la causa fue la ausencia o el uso incorrecto del cifrado. Las plataformas móviles modernas proporcionan API integradas para el cifrado, y su uso es un estándar de seguridad obligatorio. Statista, 2024

Puntos clave

  • Cifrado — conversión de datos a un formato ilegible, reversible solo con una clave de descifrado.
  • Cifrado simétrico utiliza una sola clave para cifrar y descifrar — rápido, pero requiere una transmisión segura de la clave.
  • Cifrado asimétrico utiliza un par de claves (pública y privada) — más seguro, pero más lento que el simétrico.
  • AES-256 — el estándar de oro del cifrado simétrico, recomendado por NIST y utilizado en Android y iOS.
  • Cifrado de extremo a extremo garantiza que los datos sean inaccesibles incluso para el servidor — solo el remitente y el destinatario pueden leerlos.

¿Qué es el cifrado en aplicaciones móviles?

El cifrado en el contexto de las aplicaciones móviles es la aplicación de algoritmos criptográficos para proteger los datos almacenados en el dispositivo (data at rest) y los transmitidos a través de la red (data in transit). A nivel de dispositivo, se cifra el almacenamiento local: archivos, bases de datos, SharedPreferences y caché. A nivel de red, el tráfico entre la aplicación y el servidor se cifra mediante los protocolos TLS/HTTPS. El objetivo final es garantizar que, incluso con acceso físico al dispositivo o interceptación del tráfico, un atacante no pueda leer los datos protegidos sin la clave criptográfica.

Por qué es necesario el cifrado en aplicaciones móviles

Los dispositivos móviles son especialmente vulnerables a la pérdida de datos: un teléfono puede perderse, robarse o infectarse con malware fácilmente. Según el Ponemon Institute (2023), el 42% de las empresas afectadas por filtraciones de datos atribuyen los incidentes a dispositivos móviles. Sin cifrado, un atacante puede conectarse al dispositivo por USB, extraer la base de datos SQLite y leer todos los datos almacenados. El cifrado resuelve este problema: incluso si se extrae la base de datos, su contenido permanece cifrado. Además, en EE. UU. y la UE existen leyes (GDPR, CCPA) que exigen el cifrado de datos personales e imponen multas de hasta el 4% de la facturación anual por infracciones. El uso del cifrado no es solo una necesidad técnica, sino también legal para cualquier aplicación móvil que maneje datos de usuarios.

Cifrado simétrico y asimétrico

Todos los algoritmos de cifrado se dividen en dos tipos principales: simétricos (una clave para cifrar y descifrar) y asimétricos (un par de claves — pública y privada). La elección del tipo depende del caso de uso: para cifrar datos locales se suelen usar algoritmos simétricos por su velocidad, y para el intercambio de claves y la autenticación se usan los asimétricos.

CaracterísticaSimétricoAsimétrico
Número de claves1 (secreta)2 (pública + privada)
VelocidadAlta (1–10 GB/s)Baja (1–10 MB/s)
Distribución de clavesProblemática — hay que transmitir la claveSencilla — la clave pública se publica
EjemplosAES, ChaCha20RSA, ECDH, ECIES
Uso en desarrollo móvilCifrado de datos localesIntercambio de claves, firmas digitales

En la práctica, las aplicaciones móviles utilizan cifrado híbrido: con un algoritmo asimétrico (por ejemplo, ECDH) las partes intercambian una clave de sesión, y todos los datos posteriores se cifran con un algoritmo simétrico (AES o ChaCha20). Este enfoque combina la velocidad del cifrado simétrico con la seguridad del intercambio asimétrico de claves. Este método es la base de TLS 1.3, Signal Protocol y Apple iMessage.

Principales algoritmos de cifrado

El desarrollo móvil moderno utiliza varios algoritmos de cifrado estandarizados, cada uno diseñado para tareas específicas con su propio ámbito de aplicación.

  • AES (Advanced Encryption Standard) — cifrado de bloque simétrico certificado por NIST en 2001. Utiliza claves de 128, 192 o 256 bits. El modo recomendado es GCM (Galois/Counter Mode), que proporciona cifrado autenticado. AES-256 se utiliza en Android Keystore, iOS Keychain y todos los protocolos TLS modernos.
  • ChaCha20-Poly1305 — cifrado de flujo simétrico desarrollado por Daniel Bernstein. Proporciona el mismo nivel de seguridad que AES-256, pero funciona más rápido en dispositivos sin aceleración hardware de AES (típico en smartphones Android de gama baja). ChaCha20 se utiliza en TLS 1.3 como alternativa a AES-GCM y es el cifrado principal en Signal Protocol.
  • RSA (Rivest-Shamir-Adleman) — algoritmo asimétrico utilizado para el cifrado de claves y firmas digitales. El tamaño mínimo de clave recomendado es de 2048 bits. RSA es más lento que ECDH, por lo que en las aplicaciones móviles modernas está siendo reemplazado por la criptografía de curva elíptica (ECC).
  • ECDH (Elliptic Curve Diffie-Hellman) — protocolo asimétrico de intercambio de claves basado en curvas elípticas. Proporciona Perfect Forward Secrecy y se utiliza por defecto en TLS 1.3. La curva Curve25519 (X25519) es la más común en aplicaciones móviles.

Cómo el cifrado protege los datos de los usuarios

El cifrado protege los datos en tres escenarios clave: pérdida del dispositivo (cifrado del disco y contenedores de la aplicación), interceptación del tráfico (protocolos de red TLS/HTTPS) y filtración desde el servidor (cifrado de extremo a extremo). Cada escenario requiere su propio enfoque y herramientas.

Datos en reposo y en tránsito

Los datos en reposo — datos en el dispositivo — se cifran mediante Android Keystore e iOS Keychain. En Android a partir de 7.0 se utiliza el cifrado basado en archivos (File-Based Encryption), y las aplicaciones pueden cifrar adicionalmente sus datos mediante EncryptedSharedPreferences y EncryptedFile de la biblioteca AndroidX Security. En iOS, todas las aplicaciones funcionan por defecto con Data Protection API, que cifra los archivos a nivel del sistema de archivos con una clave vinculada al código del dispositivo. Para los datos en tránsito se utiliza TLS 1.2/1.3 con Certificate Pinning obligatorio.

Cifrado de extremo a extremo (End-to-End)

El cifrado de extremo a extremo (E2E) es el nivel más alto de protección de datos, en el que un mensaje se cifra en el dispositivo del remitente y se descifra solo en el dispositivo del destinatario. El servidor de almacenamiento y transmisión no tiene acceso al contenido — solo maneja blobs cifrados. La implementación E2E más conocida para aplicaciones móviles es Signal Protocol, que utiliza el algoritmo Double Ratchet en combinación con X3DH (Extended Triple Diffie-Hellman) para el intercambio inicial de claves. Signal Protocol proporciona Perfect Forward Secrecy y future secrecy: la compromisión de una clave no revela mensajes anteriores ni posteriores. Según un estudio de la Universidad Carnegie Mellon (2023), el cifrado E2E en aplicaciones de mensajería reduce el riesgo de filtración de comunicaciones en un 99.7% en comparación con el cifrado solo TLS. El uso de E2E es obligatorio para aplicaciones de las categorías Health & Fitness y Finance según los requisitos de GDPR y HIPAA. Para implementar E2E en su propio proyecto, se recomienda utilizar la biblioteca Signal Protocol (Java/Swift) o una basada en Olm (Matrix protocol). Al elegir una solución E2E, evalúe la compatibilidad con la plataforma: Signal Protocol requiere soporte para envío asíncrono y almacenamiento de claves en el cliente, lo que complica los escenarios multi-dispositivo — para tales casos, Matrix Protocol con su modelo de salas puede ser una mejor opción.

Implementación del cifrado en aplicaciones móviles

Veamos un ejemplo de cifrado y descifrado de datos en Android utilizando Jetpack Security (AndroidX Security). La biblioteca proporciona EncryptedFile para el cifrado de archivos y EncryptedSharedPreferences para configuraciones.

kotlin
val masterKey = MasterKey.Builder(context)
    .setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
    .build()

val encryptedFile = EncryptedFile.Builder(
    context,
    File(context.filesDir, "secret.dat"),
    masterKey,
    EncryptedFile.FileEncryptionScheme.AES256_GCM_HKDF_4KB
).build()

encryptedFile.openFileOutput(applicationContext).use { outputStream ->
    outputStream.write("Sensitive user data".toByteArray(Charsets.UTF_8))
}

MasterKey se crea utilizando AES256-GCM — el modo de cifrado simétrico más seguro. La clave se almacena en Android Keystore, aislado del proceso principal: incluso si la aplicación se ve comprometida, un atacante no puede extraer la clave. EncryptedFile utiliza el esquema AES-256-GCM con HKDF para la derivación de claves y un tamaño de página de 4KB, lo que proporciona un buen equilibrio entre velocidad y seguridad. Para leer datos, se usa openFileInput con los mismos parámetros: la biblioteca descifra automáticamente los datos al leerlos.

En iOS, una funcionalidad similar se proporciona a través de CryptoKit (Swift) utilizando AES.GCM o ChaChaPoly. La clave se almacena en el Secure Enclave a través de Keychain Services. El principio es el mismo: las claves nunca abandonan el almacenamiento hardware seguro, y los datos se cifran antes de escribirse en el disco. Esta arquitectura cumple con las recomendaciones OWASP MASVS (Mobile Application Security Verification Standard) de nivel L2 para aplicaciones que manejan datos sensibles. En proyectos reales, la combinación de EncryptedSharedPreferences para tokens y EncryptedFile para datos de usuario cubre el 100% de los escenarios de cifrado local. Además, para trabajar con claves recibidas del servidor (por ejemplo, claves de sesión ECDH), se utiliza Android KeyStore con el parámetro purpose = KeyProperties.PURPOSE_ENCRYPT, que garantiza que la clave solo se pueda usar para operaciones criptográficas autorizadas y nunca se exporte del almacenamiento hardware a la RAM en texto plano.

Preguntas frecuentes

¿Qué cifrado se considera el más fiable para aplicaciones móviles?

AES-256 en modo GCM con almacenamiento de clave en almacenamiento hardware (Android Keystore / iOS Keychain) se considera el estándar de oro. Para el tráfico de red — TLS 1.3 con la curva elíptica Curve25519. ChaCha20-Poly1305 se utiliza como alternativa en dispositivos sin AES hardware.

¿En qué se diferencia AES de RSA?

AES es un algoritmo simétrico (una clave), rápido, adecuado para cifrar grandes volúmenes de datos. RSA es asimétrico (un par de claves), lento, se utiliza para el cifrado de claves y firmas, no para datos. En aplicaciones móviles, AES cifra datos, RSA protege claves.

¿Es necesario cifrar todos los datos de la aplicación?

Es necesario cifrar los datos confidenciales: tokens de acceso, contraseñas, información personal, datos de pago, registros médicos. Los datos públicos (imágenes, contenido) pueden no cifrarse, aunque es mejor almacenarlos en un contenedor protegido de la aplicación.

¿Cómo funciona el cifrado de extremo a extremo en dispositivos móviles?

Con el cifrado de extremo a extremo, los datos se cifran en el dispositivo del remitente antes de enviarse y se descifran solo en el dispositivo del destinatario. El servidor solo ve datos cifrados. El protocolo Double Ratchet, implementado en Signal Protocol, es el mecanismo E2E más común en mensajeros móviles.

¿Se puede usar el mismo cifrado para datos en el dispositivo y para la red?

Técnicamente es posible, pero no se recomienda. Para los datos en el dispositivo, use cifrado simétrico (AES-GCM) con una clave del Keystore. Para la red, use TLS 1.3 con un conjunto separado de claves y Certificate Pinning. La separación evita que ambos canales se vean comprometidos si se filtra una clave.

Resumen

  • El cifrado es un elemento de seguridad obligatorio en las aplicaciones móviles, que protege los datos en reposo y en tránsito.
  • AES-256 GCM es el estándar de cifrado simétrico recomendado por NIST para todos los tipos de datos.
  • El cifrado híbrido (ECDH + AES) combina la velocidad del enfoque simétrico con la seguridad del asimétrico.
  • Android Keystore e iOS Keychain son almacenes de claves hardware que aíslan el material criptográfico de la aplicación.
  • Los datos en reposo se cifran mediante EncryptedSharedPreferences y EncryptedFile (Android) o Data Protection API (iOS).
  • Los datos en tránsito se protegen con TLS 1.3, Certificate Pinning y Perfect Forward Secrecy.
  • Recomendación: cifre todos los datos confidenciales mediante Jetpack Security (Android) o CryptoKit (iOS) con claves en almacenamiento hardware.

Desarrollaremos una aplicación móvil llave en mano

IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.

Discutir el proyecto

Lea también