Modelo de seguridad

Exactamente qué cifra Aevumex, cómo funcionan las claves, qué datos sí ve nuestro servidor, qué no podemos hacer y dónde termina la promesa zero-knowledge. Escrito para que lo compruebes, no para convencerte.

Última actualización: 19 de septiembre de 2026 · válido para la versión 0.1.4 de la app y posteriores

Este documento describe con honestidad qué hace la app con tus datos. Está pensado para quien no quiere creerse «zero-knowledge» solo porque lo digamos nosotros. Allí donde algo es un límite o un punto abierto, se dice.

En un párrafo

Tu caja fuerte (cada moneda, lingote, precio de compra, justificante y nota) se cifra en tu dispositivo con una clave que solo existe en tu dispositivo y que se deriva de tu frase de recuperación. Nuestro servidor guarda únicamente bloques cifrados y no puede leerlos. Lo que el servidor sí ve en texto claro: tu dirección de correo electrónico, el número de posiciones de la caja fuerte, tus alertas de precio y todo lo que publicas en el mercado o escribes en un chat. No hay rastreo, ni red publicitaria, ni informes de fallos. Tampoco hay, por ahora, una auditoría independiente.

Qué está cifrado

  • Cada posición de la caja fuerte como un único bloque: metal, peso y ley, cantidad, precio, fecha y hora de compra, notas, números de serie, lugar de almacenamiento, datos de venta y la lista de justificantes. De una posición, el servidor solo ve el bloque cifrado, un número de versión y marcas de tiempo.
  • Los justificantes de compra (fotos) se guardan como archivos cifrados por separado, en local y, cuando has iniciado sesión, en un almacenamiento privado en el servidor. Nunca como una foto legible.
  • La caché local de tu dispositivo (precios, preferencias, la última caja fuerte cargada) vive en una base de datos cifrada cuya clave está en el llavero del sistema operativo.

Cómo funcionan las claves

  1. Al crear tu caja fuerte, la app genera una frase de recuperación de 12 palabras (BIP39, 128 bits de aleatoriedad). La frase no se guarda en ningún sitio; solo la tienes tú.
  2. A partir de la frase se calcula una semilla según el estándar BIP39 (PBKDF2) y, de ella, con HKDF-SHA256, la clave maestra de 256 bits. La misma frase da siempre la misma clave, así que solo con la frase recuperas todo en un dispositivo nuevo.
  3. La clave maestra está en tu dispositivo, en el llavero de iOS o el Keystore de Android, marcada como «solo este dispositivo» (no se incluye en las copias de seguridad) y, si activas la biometría, solo se libera tras Face ID, Touch ID o una huella dactilar. En Android solo cuenta la clase biométrica más fuerte; el desbloqueo facial más débil se rechaza en lugar de degradarse en silencio.
  4. Tu PIN (de 6 a 8 cifras) solo desbloquea la app. Se almacena como hash Argon2id y no forma parte del cifrado: quien entre en el servidor no gana nada con el PIN, y quien adivine el PIN sigue sin tener la clave.
  5. Cada posición se cifra con AES-256-GCM, con un nonce único y con el identificador de la posición y el de tu cuenta como datos autenticados adicionales. Un bloque de una cuenta no puede colocarse bajo otra cuenta u otra posición sin que el descifrado falle.
  6. La clave nunca sale de tu dispositivo. La app no tiene ninguna función para enviárnosla, y el servidor no tiene ninguna tabla donde guardarla.

Qué sí ve el servidor

Zero-knowledge se aplica a la caja fuerte. Otras funciones solo funcionan si el servidor sabe algo. Esta es la lista completa.

DatoVisible para nosotrosPor qué
Dirección de correo electrónico, momentos de inicio de sesión, si inicias sesión con Apple o con GoogleSíCuenta e inicio de sesión
Número de posiciones de la caja fuerte, cuándo se crearon o modificaron, tamaño de cada bloque cifradoSí (solo metadatos)Sincronización y el límite de cinco posiciones de la versión gratuita
Contenido de las posiciones de la caja fuerte y de los justificantesNoCifrado en el dispositivo
Alertas de precio: metal, precio umbral, direcciónSí, en texto claroEl servidor comprueba cada minuto si se ha alcanzado un umbral y envía la notificación push. Una alerta de cartera (por ejemplo, «avísame a los 10.000 €») se convierte en tu dispositivo en un único precio umbral; el servidor ve ese precio y el metal, no lo que posees
Mercado: anuncios, ofertas, mensajes de chat, valoraciones, denuncias, bloqueos, búsquedas guardadasSí, en texto claroA propósito: denunciar y bloquear, la moderación y las obligaciones frente a las tiendas de aplicaciones no funcionan sobre contenido cifrado. No pongas nunca en un anuncio o en un chat nada que no quisieras contarnos
El token push de tu dispositivo y el idioma de la appSíEnviar notificaciones en tu idioma
Estado de la suscripción (Pro o no), identificador de transacción de Apple o GoogleSí, a través de RevenueCatDesbloquear las funciones Pro. No vemos datos de pago
Título de un anuncio para el que pides una ilustración de IASí, reenviado a Google GeminiSolo en el mercado; las posiciones de la caja fuerte nunca reciben una imagen generada en el servidor
Estadísticas de uso, identificadores del dispositivo, informes de fallos, identificadores publicitariosNoLa app no contiene ningún SDK de analítica, publicidad ni informes de fallos

Los precios, el histórico y las noticias se obtienen de las mismas tablas públicas que usa esta web; esas peticiones no llevan ningún dato sobre lo que posees.

Qué no podemos hacer

  • Leer tu caja fuerte, ni siquiera si lo pides tú, un heredero o una autoridad. Solo podemos entregar bloques cifrados.
  • Recuperar tu frase de recuperación o restablecer tu PIN. Perder la frase y el dispositivo significa perder la caja fuerte. Por eso la app te pide que apuntes la frase antes de que haya nada en la caja fuerte.
  • Restaurar una posición que borraste una vez sincronizado el borrado.

Dónde termina la promesa

Estos son los límites que necesitas conocer para valorar la promesa en su justa medida.

  • Confías en el código de la app. La app descifra tu caja fuerte en tu dispositivo, así que el código que distribuimos también podría abusar de ello. Esto vale para cualquier app con cifrado en el dispositivo. Qué hacemos al respecto: tu caja fuerte solo se descifra en tu propio dispositivo y la clave nunca lo abandona, así que ni siquiera una actualización maliciosa podría recuperar nada de nuestros servidores. Qué falta: actualizaciones over-the-air firmadas, y compilaciones reproducibles para que pudieras comprobar por ti mismo que el binario coincide con el código fuente. En iOS eso no es viable en la práctica.. En iOS eso no es viable en la práctica.
  • Los metadatos revelan algo. A partir del número de posiciones y de los umbrales de las alertas de precio, alguien con acceso a la base de datos podría deducir que posees metales preciosos y, aproximadamente, qué metal pesa más. Ni cuánto, ni qué monedas.
  • Tu dispositivo es la frontera. Un dispositivo desbloqueado en malas manos, una grabación de pantalla, malware en un dispositivo con jailbreak o root, o alguien que lee tu frase de recuperación por encima de tu hombro: contra eso el cifrado no protege. La app se bloquea automáticamente pasado el tiempo que elijas y oculta los importes si se lo pides.
  • Sin auditoría independiente. La lógica de claves está aislada y completamente probada, pero todavía no la ha revisado un tercero. Por eso nunca decimos que la app está «auditada» ni «verificada». Cuando ocurra, el informe estará en esta página.
  • Piezas estándar, nada de criptografía casera. AES-GCM, HKDF, Argon2 y BIP39 vienen de las bibliotecas noble y scure, que a su vez han sido auditadas. No hemos inventado ningún algoritmo.

Servidor e infraestructura

El backend funciona en Supabase (PostgreSQL, región EU-West, Irlanda) con seguridad a nivel de fila (row-level security): cada tabla tiene reglas que obligan a que una cuenta solo pueda leer y escribir sus propias filas, y límites como «cinco posiciones gratis» se aplican en la base de datos, no solo en la app. Los precios vienen de metals.dev; esa clave de API vive solo en el servidor. Esta web lee los precios con una clave pública de solo lectura y no pone cookies.

Comunicar una vulnerabilidad

¿Has encontrado algo de lo anterior que no es cierto, o una fuga? Escribe a support@aevumex.com (también figura en security.txt). Confirmamos la recepción en cinco días laborables, te mantenemos informado y no emprendemos acciones legales contra quien informe de buena fe, no acceda a datos de otras personas y nos dé tiempo para corregirlo. Todavía no hay programa de recompensas.

Cambios en este documento

  • 19 de septiembre de 2026: primera versión. Publicado security.txt.
  • 21 de septiembre de 2026: se retira la afirmación sobre las actualizaciones over-the-air firmadas. La medida estaba configurada pero nunca llegó a estar activa en una app publicada: ninguna actualización se firmó y ninguna versión instalada verifica firmas. Lo que aquí figuraba no era cierto y se ha eliminado.