ITSAppUsesNonExemptEncryption: ¿lo necesitas y qué valor pones?
Toda build de iOS se topa con una pregunta de control de exportación de Estados Unidos, y nada en Xcode te avisa de que viene. Aparece como un estado «Missing Compliance» que bloquea TestFlight y frena tu envío. Esta página responde a las dos únicas preguntas que importan: si de verdad lo necesitas y qué valor hace que deje de preguntártelo en cada build.
Última revisión: 24 de julio de 2026.
Qué está preguntando realmente App Store Connect
Las apps distribuidas por la App Store se consideran legalmente «exportadas» desde Estados Unidos, así que caen bajo las Export Administration Regulations (EAR). Cuando tu build usa cifrado, App Store Connect tiene que saber si es del tipo corriente (exento) o del que exige papeleo (no exento). Ese es todo el significado de la pregunta.
El truco: hoy casi todas las apps usan cifrado, porque cualquier llamada HTTPS lo hace. Así que «¿tu app usa cifrado?» es casi siempre que sí; pero la respuesta que te desbloquea va de si ese cifrado está exento, y para la inmensa mayoría de las apps lo está.
Árbol de decisión: ¿usas cifrado no exento?
Recórrelo en orden. El primero que encaje decide tu respuesta.
- ¿Tu app no usa cifrado alguno, o ninguno más allá del que aporta iOS? → Exenta. Responde NO (ITSAppUsesNonExemptEncryption = false).
- ¿Todo tu cifrado se limita a HTTPS/TLS o a las APIs criptográficas estándar que Apple incluye en iOS/macOS (CryptoKit, Keychain, Secure Enclave, etc.)? → Exenta. Responde NO. Esto cubre a la abrumadora mayoría de las apps.
- ¿Usas el cifrado solo para autenticación —hashear contraseñas, firmar tokens— y no para cifrar contenido de usuario? → Exenta. Responde NO.
- ¿Distribuyes TU PROPIO algoritmo de cifrado, o usas criptografía para proteger datos de usuario más allá de lo anterior (por ejemplo, un esquema extremo a extremo propio, un cifrado a medida, archivos cifrados con tu propia gestión de claves)? → Potencialmente no exenta. Responde SÍ y completa la autoclasificación (más abajo).
Reutilizar criptografía estándar a través de tu propio envoltorio de conveniencia no la vuelve no exenta: lo que cuenta es el algoritmo subyacente, no que lo hayas envuelto. Inventar o incrustar un algoritmo no estándar es lo que te empuja a la categoría no exenta.
Las dos formas de responder, y por qué gana el plist
Hay exactamente dos sitios donde responder a esto. No son equivalentes: uno te lo pregunta en cada versión, el otro responde una vez y se queda respondido.
| Dónde | Cada cuánto pregunta | Mejor para |
|---|---|---|
| El aviso de App Store Connect | En cada build. Cada subida a TestFlight o a la App Store muestra «Missing Compliance» hasta que vuelves a pasar por las preguntas. | Casos puntuales, o cuando no puedes publicar un binario nuevo ahora mismo. |
| ITSAppUsesNonExemptEncryption en el Info.plist | Nunca más. El valor viaja dentro del binario; App Store Connect lo lee y se salta la pregunta para esa build y para todas las futuras que lleven la clave. | Cualquier app que no distribuya cifrado propio: ponlo una vez y olvídate. |
El fragmento exacto del plist
Añade esto al Info.plist del target de tu app (o desde la pestaña Info / un xcconfig). Es un booleano:
<key>ITSAppUsesNonExemptEncryption</key> <false/>
Después haz Clean Build Folder (⇧⌘K), archiva de nuevo y sube. Ponerlo a false solo es correcto si tu app está exenta según el árbol de arriba: es una declaración legal, no un botón de silencio. Un matiz: una build que ya esté en App Store Connect no recogerá la clave de forma retroactiva. Responde a mano la pregunta de esa build para desbloquearla ahora, y publica la clave en tu próximo archivo para que no vuelva a preguntar.
Cuándo necesitas de verdad la exención o la autoclasificación
Si encajó el paso 4 del árbol —distribuyes cifrado no estándar o propio—, responder SÍ no es el final. Asumes obligaciones reales bajo las EAR:
- Autoclasificación: determina el ECCN de tu app (normalmente 5D002) y confirma que cumple para la License Exception ENC según EAR §740.17.
- Informe anual de autoclasificación: para la mayoría de apps de cifrado de mercado masivo tienes que enviar un informe por correo al BIS y al coordinador de solicitudes de cifrado ENC/NSA una vez al año (el informe de fin de año).
- CCATS: algunos productos necesitan una clasificación formal (CCATS) del Bureau of Industry and Security antes de cumplir los requisitos; App Store Connect te pedirá entonces esa autorización.
- Documentación en App Store Connect: aportas la base de tu exención o los datos de CCATS/ERN en la sección de cifrado, versión a versión, salvo que hayas facilitado un código de cumplimiento.
Esto es realmente raro en apps de consumo. Si usas CryptoKit, Keychain, TLS y nada exótico, estás exento y nada de esto te aplica: responde NO y sigue adelante.
¿No sabes si tu criptografía está exenta? Apple enlaza al Bureau of Industry and Security de EE. UU.; la prueba práctica es «¿he implementado un algoritmo de cifrado, o solo llamo al de Apple / uso HTTPS?». Lo segundo está exento.
El fallo habitual: que la clave no esté
La forma más frecuente en que esto muerde no es un valor equivocado, es la ausencia de valor. Con la clave ausente:
- Cada build de TestFlight cae en «Missing Compliance» y tus testers no pueden instalarla hasta que respondas la pregunta en App Store Connect: las invitaciones sencillamente no llegan.
- Una build enviada a la App Store no avanza a revisión hasta resolver el cumplimiento, así que se queda parada mientras crees que está en cola.
- Como el aviso vuelve en cada subida, un pipeline de CI/CD que envía builds automáticamente se bloquea en cada ejecución: el clásico «¿por qué está atascado TestFlight?».
La solución es la misma de arriba: pon ITSAppUsesNonExemptEncryption una vez en el Info.plist (si estás exento) para que ninguna build vuelva a entrar en estado Missing Compliance.
Preguntas frecuentes
Mi app solo hace llamadas HTTPS. ¿Está exenta?
Sí. HTTPS/TLS y la criptografía estándar integrada en iOS son cifrado exento. Pon ITSAppUsesNonExemptEncryption a NO. Es el caso de la gran mayoría de las apps.
¿Poner la clave a NO despeja TestFlight y la App Store a la vez?
Sí: el mismo valor del Info.plist satisface la pregunta de control de exportación para la distribución en TestFlight y en la App Store a la vez, así que decides una vez en lugar de por canal.
He puesto la clave pero App Store Connect sigue mostrando Missing Compliance. ¿Por qué?
Una build que ya se había subido antes de añadir la clave no la recoge retroactivamente. Responde a mano la pregunta de esa build en App Store Connect para desbloquearla y publica la clave en tu próximo archivo: las builds futuras no preguntarán.
¿Responder NO es alguna vez la decisión equivocada?
Sí, si de verdad distribuyes cifrado no exento: un algoritmo propio o criptografía que protege datos de usuario más allá de HTTPS o del cifrado del sistema. Entonces debes responder SÍ y completar la autoclasificación (ECCN, License Exception ENC y posiblemente el informe anual o un CCATS). Es una declaración legal, así que responde con la verdad.
¿Qué es el informe anual o de fin de año sobre cifrado?
Para apps de mercado masivo que usan cifrado no exento bajo la License Exception ENC, la normativa estadounidense exige un informe anual de autoclasificación enviado por correo al BIS y al coordinador ENC. Las apps exentas (solo HTTPS) no lo presentan.
Relacionado: Manifiesto de privacidad de Apple (PrivacyInfo.xcprivacy) · Checklist de envío a la App Store
Fuentes
Analiza tu build antes de enviar
Pasa tu .ipa o .apk por App Review Checker y detecta estos problemas en segundos.
Analizar una app