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
- 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).
- 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).
- 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.
- 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
HTTPScon cifradoTLS 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.
- Directrices de seguridad y gobierno de datos para el backend alojado en infraestructura Cloud (
- 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_APROBACIONhasta 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
EncryptedSharedPreferencesen 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
- El usuario accede a la opción "Darme de baja (Arrepentimiento)" desde el Menú Principal o la pantalla de Perfil.
- Se despliega un diálogo modal de confirmación informando el alcance de la baja y anonimización de datos.
- 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:
- Desactivación (
activo = False): La cuenta queda inhabilitada para iniciar sesión. - 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➔0fecha_nacimiento➔NULL
- 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
LogAuditoriaen MySQL con los campos:usuario_id,ip_origen,accion_realizada,timestamp_utcydetalles_json. - La auditoría backend garantiza irrefutabilidad sin violar los principios de minimización de datos del RGPD.