Proteccion de Datos - ISPC-WEB-2025/TodoStock-AppMovil GitHub Wiki

⚖️ Aspectos Legales, Protección de Datos Personales y Derecho de Arrepentimiento

Responsable: Octavio Arnaudo (#TK105 - Sprint 2)
Consumo de textos en cliente Android: #TK52
Integración de Auditoría Backend: #TK51


📑 1. Introducción, Marco Normativo y Estándares de Ciberseguridad

En el marco del desarrollo de TodoStock Mobile, este documento establece las bases legales, políticas de privacidad, términos de uso y mecanismos de arrepentimiento/baja del servicio.

Las normas, leyes y estándares citados a continuación han sido rigurosamente validados y alineados con el programa de contenidos de la cátedra de Ciberseguridad y Legislación:

1.1. Marco Legal de Protección de Datos Personales

  1. Ley N° 25.326 de Protección de Datos Personales (República Argentina):
    • Regula la protección integral de los datos personales asentados en archivos, registros, bancos de datos o medios técnicos.
    • Otorga a los titulares los Derechos ARCO (Acceso, Rectificación, Cancelación y Oposición).
    • Órgano de Control: Agencia de Acceso a la Información Pública (AAIP).
  2. Reglamento General de Protección de Datos (RGPD / GDPR - UE 2016/679):
    • Aplica los principios de Privacy by Design (Privacidad desde el Diseño) y Privacy by Default (Privacidad por Defecto).
    • Principios de Minimización de Datos (recolectar únicamente lo estrictamente necesario) y Derecho a la Supresión / Anonimización (Right to be Forgotten).
  3. Ley N° 24.240 de Defensa del Consumidor y Resolución SCI N° 272/2020:
    • Establece la obligación de incorporar el Botón de Arrepentimiento / Opción de Revocación y Baja en interfaces digitales y aplicaciones móviles.
    • Permite la revocación rápida del servicio o baja de cuenta mediante una opción visible y directa.
  4. Ley N° 26.388 de Delitos Informáticos (Código Penal Argentino):
    • Tipifica el acceso indebido a sistemas informáticos, la alteración no autorizada de datos y el fraude informático.

1.2. Estándares y Buenas Prácticas de Ciberseguridad

  • ISO/IEC 27001 (SGSI - Sistema de Gestión de Seguridad de la Información):
    • Define los requisitos para establecer y mantener un SGSI. Aplica directamente en el control de acceso a PII, confidencialidad de la base de datos de inventario y cumplimiento legal/regulatorio (Anexo A.5 / A.18).
  • OWASP Top 10 & OWASP Mobile Top 10:
    • M1 / A07 (Autenticación y Credenciales): Implementación de reglas de contraseña robusta (mínimo 9 caracteres con letras, números y caracteres especiales) y hashing unidireccional en servidor.
    • M2 (Almacenamiento Inseguro de Datos): Gestión aislada de sesión y tokens JWT mediante SesionManager (SharedPreferences).
    • M3 / A02 (Comunicaciones Inseguras): Uso exclusivo de HTTPS con cifrado TLS 1.2+ para prevenir ataques de intercepción.
  • Cloud Security Alliance (CSA):
    • Directrices de seguridad y gobierno de datos para el backend alojado en infraestructura Cloud (https://todostock.alwaysdata.net/api/), asegurando aislamiento multitenant, minimización de PII y anonimización irreversible en la nube.
  • IEEE 802.11i / IEEE 802.1X:
    • Estándares de seguridad de red e infraestructura inalámbrica (WLAN / WPA2 / WPA3) que resguardan la transmisión de paquetes desde dispositivos móviles corporativos hacia el servidor.

📜 2. Textos Legales Incorporados a la App Móvil

Los textos completos fueron redactados en formato plano y en recursos de cadenas para ser consumidos directamente por la tarea #TK52 en la aplicación Android:

  • Términos y Condiciones: Ubicados en app/src/main/res/raw/terminos_y_condiciones.txt.
  • Política de Privacidad: Ubicada en app/src/main/res/raw/politica_de_privacidad.txt.
  • Recursos XML: Ubicados en app/src/main/res/values/strings_legal.xml.

2.1. Puntos Clave de los Términos y Condiciones

  • Aceptación Explícita: Se controla mediante casilla de verificación (CheckBox) obligatoria en la pantalla de Registro.
  • Formulario de Registro: Requiere Nombre completo, Email, DNI, Fecha de nacimiento y Contraseña.
  • Estado Pendiente: Todo usuario registrado ingresa en estado PENDIENTE_APROBACION hasta que un Administrador le asigne su rol (Administrador o Empleado).
  • Regla de Contraseña: Mínimo 9 caracteres con letras, números y al menos un carácter especial.

2.2. Puntos Clave de la Política de Privacidad

  • Cifrado de datos en tránsito: Cifrado obligatorio vía HTTPS / TLS 1.2+ (OWASP M3).
  • Cifrado en reposo: Contraseñas hasheadas en backend y almacenamiento seguro de tokens JWT con EncryptedSharedPreferences en Android (OWASP M2 / ISO 27001).
  • Derechos ARCO: Garantía de acceso gratuito a datos personales cada 6 meses (Art. 14 Ley 25.326) y canal de rectificación o supresión (Art. 16 Ley 25.326).

🔴 3. Adaptación del Botón de Arrepentimiento ("Darme de baja")

Para cumplir con la Resolución SCI N° 272/2020 y la Ley 24.240 adaptada al entorno móvil de TodoStock:

3.1. Ubicación y Flujo en la App

  1. El usuario accede a la opción "Darme de baja (Arrepentimiento)" desde el Menú Principal o la pantalla de Perfil.
  2. Se despliega un diálogo modal de confirmación informando el alcance de la baja y anonimización de datos.
  3. Tras la confirmación del usuario, la aplicación envía una solicitud al endpoint del backend.
[ Menú Principal / Perfil ] ──▶ Botón "Darme de baja"
                                          │
                                          ▼
                         [ Diálogo Modal de Confirmación ]
                                          │
                        (Confirmar) ──────┴────── (Cancelar)
                             │                       │
                             ▼                       ▼
                    [ POST /api/usuarios/me/baja/ ]   [ Ocultar Diálogo ]
                             │
                             ▼
              [ Desactivar Cuenta + Anonimizar Datos + Log Audit ]
                             │
                             ▼
                    [ Cerrar Sesión & Toast ]

3.2. Tratamiento Técnico de Datos: Desactivación, Eliminación y Anonimización

Para preservar la integridad referencial de los registros históricos de movimientos de inventario sin violar la Ley 25.326 ni los estándares ISO 27001 / CSA:

  1. Desactivación (activo = False): La cuenta queda inhabilitada para iniciar sesión.
  2. Anonimización Irreversible de Datos Personales: Se sobrescriben los campos identificables del usuario en la base de datos:
    • nombre ➔ "Usuario Anonimizado"
    • email ➔ "baja_anonima_<id>@todostock.deleted"
    • dni ➔ 0
    • fecha_nacimiento ➔ NULL
  3. Registro en Bitácora de Auditoría (#TK51): Se registra la acción en la tabla de auditoría con fecha, hora, evento "BAJA_USUARIO_ARREPENTIMIENTO" e ID de usuario anonimizado.

⚖️ 4. Matriz Auditada de Protección de Datos Personales y Auditoría Backend

📋 4.1 Matriz de Derechos ARCO y Mecanismos de Ejercicio

Derecho ARCO Concepto Normativo (Ley 25.326) Implementación en App Android Endpoint Backend Django (Backend/) PR Integración
Acceso Consultar datos personales almacenados PerfilActivity GET /api/usuarios/me/ PR #180
Rectificación Modificar datos incorrectos o desactualizados EditarPerfilActivity PATCH /api/usuarios/me/ PR #180
Cancelación Solicitar la baja y eliminación/anonimización BajaDeCuenta en Perfil POST /api/usuarios/desactivar/ PR #195
Oposición Revocar consentimiento de uso de información TerminosActivity POST /api/usuarios/desactivar/ PR #180, PR #217

🛡️ 4.2 Trazabilidad de Auditoría y Modelo LogAuditoria (Backend/usuarios/models.py)

En alineación con el ADR-0009 (desacople de auditoría) y la tarea #TK51:

  • Cada baja voluntaria o cambio crítico de perfil ejecutado en la aplicación móvil desencadena la creación de una instancia LogAuditoria en MySQL con los campos: usuario_id, ip_origen, accion_realizada, timestamp_utc y detalles_json.
  • La auditoría backend garantiza irrefutabilidad sin violar los principios de minimización de datos del RGPD.