Por: Por Julio Francisco Naranjo Figueroa – Maestría en Ciberseguridad- Ingeniero Civil Informático
La era digital ha permitido a las empresas almacenar y procesar grandes cantidades de datos a velocidades sin precedentes, sin embargo, con estas ventajas vienen también los desafíos en términos de garantizar los atributos mínimos de control en la seguridad de la información para la integridad, confidencialidad y disponibilidad de datos a lo largo de todo el ciclo de vida de los desarrollos tecnológicos, en este artículo nos centraremos en el aseguramiento de la integridad,que es la que garantiza que la información almacenada y procesada sea exacta, completa y consistente, por otro lado también revisaremos la trazabilidad queasegura el seguimiento de cualquier cambio o transformación de datos para ser rastreado desde su origen, permitiendo que el proceso pueda ser auditado o supervisado.
Los principios descritos serán el foco del artículo, que buscará la forma de asegurar los datos en el desarrollo de insumos necesarios para la digitalización como scripts, querys o automatizaciones que alimentan reportes, dashboard o soportan decisiones de negocio. Estos insumos cada vez más son concebidos directamente por áreas de negocio, quedando fuera de un gobierno centralizado.
A la digitalización desarrollada directamente por las áreas de negocio le llamaremos digitalización distribuida y esta comienza cuando éstas unidades o equipos obtienen datos de múltiples fuentes de información normalizadas en sistemas de repositorio de datos como los data lakes o en reportes masivos de sistemas comerciales o de apoyo de las empresas, para luego intervenir, agrupar o modificar por medio de scripts, querys u automatizaciones con el objetivo de ser consumidos por reportes o dashboard, transformando la manera en que las empresas operan, permitiéndoles digitalizar procesos y acelerar la toma de decisiones a una velocidad mucho mayor en lugar a que si lo solicitarán en un proyecto de desarrollo tradicional a las áreas de tecnología de las empresas, aportando en eficiencia y oportunidad a los procesos de negocio. Sin embargo, con esta transformación, no siempre se asegura la integridad y la trazabilidad al no contar con un gobierno centralizado o un método general que las asegure.
En este artículo, intentaremos responder la siguiente pregunta: ¿Es posible desarrollar un método estándar que permita dotar de Integridad y Trazabilidad a los insumos que soportan el desarrollo de la digitalización distribuida de áreas de negocio?
Antecedentes
La digitalización de las áreas de negocio es cada vez más común y necesaria en todas las organizaciones, están cambiando el paradigma de la clásica centralización sobre las áreas de Tecnología en la gestión de proyectos de desarrollos tecnológicos producto de la avalancha de nuevas tecnologías cada vez más al alcance de profesionales que no necesariamente son programadores o pertenecientes a las áreas de TI, representado un aumento de la demanda de digitalizaciones como pequeñas automatizaciones, reportes, o script con modificaciones de datos para la toma de decisiones, lo que da origen al fenómeno de la digitalización distribuida.
Este fenómeno se refiere al proceso por el cual unidades de negocio dentro de una organización toman la iniciativa de desarrollar e implementar soluciones digitales de manera independiente, sin la intervención o supervisión de los equipos tradicionales de TI. Esto se ve impulsado por múltiples factores que disminuyen las barreras técnicas de entrada a este tipo de soluciones como por ejemplo la actual disponibilidad de tecnologías de desarrollo accesibles para las áreas de negocio y el deseo de responder más rápidamente a las demandas del mercado (Time to Market), o el aumento de la Inteligencia Artificial como guía técnica de programación que permite la creación de esto pequeños desarrollos como insumos necesarios para la digitalización. Este nuevo fenómeno trae consigo nuevos riesgos, especialmente en lo que respecta a la integridad de datos y trazabilidad de las transformaciones o cambios que sufran los insumos que soportan este tipo de soluciones para la digitalización. Los insumos para la digitalización pueden ser scripts, reportes, querys que suelen desarrollarse de manera rápida y descentralizada por las áreas de negocio, lo que genera una potencial falta de gobierno de los cambios o transformaciones que sufran, poniendo en peligro la calidad final de la digitalización, limitando la escalabilidad al no asegurar la integridad.
Esta situación introduce desafíos importantes en la seguridad, control de calidad y específicamente en la Integridad y Trazabilidad, ya que las soluciones podrían desarrollarse sin una supervisión o enfoque en la seguridad de la información, lo que puede derivar en la exposición a riesgos que no han sido gestionados o mitigados.
El siguiente esquema, demuestra la problemática:
Figura 1
En la Figura 1a se describe el proceso actual que realizan las áreas de negocio por su cuenta al desarrollar digitalizaciones en 5 pasos, siendo el punto de partida las fuentes de información de sistemas normalizados, para continuas con la agrupación modificación o alteración de datos y el finalizando con la publicación o consumo de datos en reportes o dashboard
En un estudio de Harvard Business School realizado en el 2022 sobre la siguiente pregunta ¿Dónde se encuentra su empresa en su viaje digital y hacia dónde quiere ir?, se entrevistaron en mesas redondas con 175 altos ejecutivos de todo el mundo y una encuesta a más de 1.500 altos ejecutivos de más de 90 países ayudaron a formar una imagen de la empresa digitalmente madura de la actualidad, en el punto 7 donde se habla de la ética y gobernanza de la gestión de datos, extracto lo siguiente:
Sólo el 18% de los participantes de la encuesta consideró que la gobernanza ética es fundamental para el éxito. Sin embargo, ese 18% también estaba significativamente más avanzado y maduro en el proceso de transformación digital que aquellos que indicaron lo contrario.
Como podemos ver la mayoría de las organizaciones prioriza el resultado lo más rápido posible en las iniciativas de digitalización de las áreas de negocio o digitalización, dejando para un capítulo posterior el aseguramiento de la seguridad y la gobernanza afectando la integridad y trazabilidad de la implementación o despliegue y todas las transformaciones de los insumos relacionados.
¿Cuáles son los Riesgos de no aplicar estas técnicas o métodos en el aseguramiento de la Integridad y Trazabilidad?
Los riesgos se pueden presentar en todo tipo de soluciones de digitalización distribuida de las áreas de negocio como por ejemplo en un simple script, archivo o un gran sistema de toma de decisiones en tiempo real representado en uno o varios dashboards operativos.
En general los riesgos en este caso aplican de forma transversal, independiente del tipo de digitalización experimentada, para este articulo los resumiré y distribuiré en 4 grandes grupos para un mejor entendimiento:
1-. Pérdida de Datos Sensibles: La falta de control sobre la integridad y trazabilidad puede llevar a la pérdida irreversible de información valiosa al no contar con el respectivo control de versiones de los insumos (programa, script o archivo).
2-. Fraude y Manipulación: Sin mecanismos de trazabilidad, los datos pueden ser manipulados sin dejar rastro ante todo tipo de transformaciones o modificaciones en las estructuras de datos relacionados, posibilitando la intervención no autorizada de registros de datos que puedan terminar en un fraude o en algún tipo de ciberataque desde el exterior (internet)
3-. Incumplimientos Regulatorios: En el caso de tramitar datos personales, el incumplimiento de normativas de protección de datos puede resultar en sanciones severas, considerando que no se puede cautelar de forma efectiva las posibles alteraciones o modificaciones de datos pudiendo ser personales o sensibles.
4-. Impacto Reputacional: La confianza es fundamental para establecer una sana relación con los clientes y partes interesadas. Al no asegurar la integridad y trazabilidad de los datos se podría derivar en alguna alteración no autorizada de estos, dañando dicha confianza y ocasionando un impacto reputacional de la empresa ante clientes y partes interesadas.
Propuesta
Para asegurar la integridad y trazabilidad de las transformaciones o cambios de los insumos propongo utilizar tecnologías o funcionalidades que hoy son utilizadas con otros propósitos en Ciberseguridad, como por ejemplo la gestión de contraseñas en Windows, las redes blockchain, firmas digitales en notarías. Todas estas soluciones utilizan una función criptográfica llamada HASH para realizar un resumen incorruptible de los archivos o cadenas de texto.
Un hash es una función criptográfica, también es conocida como técnica hashing y comenzó a desarrollarse en la década de 1950 y 1960, con la evolución de las computadoras y la necesidad de métodos eficientes para almacenar y recuperar datos, dicha función transforma cualquier tipo de dato, archivo o documento en una cadena finita única de caracteres alfanuméricos de longitud fija, conocida como hash. A diferencia de la encriptación, que es reversible, el hash es unidireccional: una vez que un dato es convertido en un hash, no se puede revertir al valor original de manera directa. Esta cadena única hash sirve como una huella digital del contenido original, ya que cualquier pequeña modificación en el archivo o documento resultará en un hash completamente diferente. Esta propiedad hace que el hash sea una herramienta esencial para asegurar la integridad de los datos, permitiendo verificar que no han sido alterados de manera inadvertida o malintencionada. Además, al utilizar el hash como un identificador de versiones, se puede implementar un sistema de versionado seguro, como también permite rastrear y auditar cambios a lo largo del tiempo, proporcionando una trazabilidad completa y confiable de la evolución de los datos.
Aquí hay una imagen, cortesía de Wikimedia Commons, que ilustra este concepto, para aquellos que prefieren el aprendizaje visual:
Para verificar y asegurar la Integridad de datos, junto con la gestión de versiones para insumos de soporte a la digitalización propongo usar las técnicas de hashing a lo largo del tiempo. Cada vez que un documento, script o archivo se modifican, se genera un nuevo hash que puede compararse con versiones anteriores. Si los hashes coinciden, se garantiza que no ha habido alteraciones; si no coinciden, se puede identificar la versión en la que ocurrió el cambio o alteración.
Este mecanismo de gestión de versiones con hashing se puede implementar con algún sistema de control de versiones Open Source (código libre) o pagado. Estos son utilizados comúnmente por los equipos de desarrollo de sistemas para cautelar la evolución de los códigos fuentes o programas, en este artículo se presentan las 3 siguientes alternativas:
1-. Git o Github: Es un sistema de control de versiones, donde cada commit (cambio) se identifica con un hash único. Esto permite a los usuarios rastrear y revertir cambios si es necesario, asegurando la integridad del proyecto.
2-. Mercurial: Es un sistema de control de versiones distribuido, similar a Git, que también utiliza hashes en cada commit (cambio) para identificar y rastrear cambios en los códigos fuentes, es conocido por ser fácil de usar y rápido, lo que lo hacen adecuado para proyectos de cualquier tamaño.
3-. Fossil: es un sistema de control de versiones distribuido que incluye además seguimiento de bugs, un wiki y un servidor web embebido. Al igual que Git, Fossil utiliza hashes SHA-1 para identificar de manera única cada cambio en el proyecto, los hashes en Fossil aseguran la integridad del historial de versiones y permiten revertir cambios cuando sea necesario, proporcionando una completa trazabilidad.
Para maximizar la integridad y la trazabilidad, el hashing se le puede sumar alguna herramienta que ofrezca un flujo de trabajo de aprobaciones, al incorporar estos flujos a cualquier modificación que se requiera de un script, documento o archivo, donde no solo se puede registrar el respectivo hash, sino que también la aprobación de la persona que cumpla el rol de responsable, conocido también como control owner de la modificación o cambio relacionado antes de ser considerada como definitivo o productivo el cambio.
Por ejemplo, se puede utilizar una herramienta de gestión de aprobaciones como Azure Devops, Bitbucket, Gitlab o TeamCitys que pueden combinarse con el método hashing para garantizando que cualquier cambio sea rastreable y auditable. Esto asegura no solo que se mantenga la integridad de datos, sino que también la trazabilidad de todas las transformaciones y aprobaciones, creando un entorno de control y flujo de trabajo seguro como se adjunta imagen del modelo propuesto:
Figura 2
Como vemos en los 7 pasos del modelo propuesto (figura 2) que es puramente una referencial, se puede hacer cargo de una solución lo suficientemente estándar para aplicar en las áreas de negocio, y se pueden desplegar de distintas formas o arquitecturas, como por ejemplo se puede hacer participar a las áreas de TI de las empresas u organizaciones en la recepción y resguardo de los logs con el fin de asegurar la segregación de funciones y resguardo de las modificaciones. Así mismo como muestra la figura podría ser implementado utilizando múltiples herramientas que cumplan las mismas funciones, integrando el HASH para la gestión de versiones junto con el flujo de aprobaciones.
Conclusión
Las unidades de negocio de las empresas continuarán desarrollando insumos como scripts, reportes, automatizaciones como soporte de la digitalización como dashboard o reportes y lo seguirán realizando de forma distribuida con el fin de ser cada vez más competitivas o digitales en la toma de decisiones. También podemos concluir que este desarrollo distribuido se genera producto de múltiples factores, esto se ve impulsado por múltiples factores como por ejemplo la actual disponibilidad de tecnologías de desarrollo accesibles para las áreas de negocio, el deseo de responder más rápidamente a las demandas del mercado (Time to Market), o el aumento de la Inteligencia Artificial como guía técnica de programación que permite la creación de esto pequeños desarrollos como insumos necesarios para la digitalización.
Así mismo, podemos ver a lo largo del artículo una tremenda oportunidad de crecimiento y transformación digital en esta digitalización distribuida de las áreas de negocio para asegurar la Integridad y Trazabilidad, dado que no siempre es posible asegurar los datos en el desarrollo de insumos, siendo una etapa previa a las soluciones de digitalización. Por este motivo propongo utilizar un método verificable que asegure la integridad y trazabilidad del insumo con el uso de la técnica de hash o hashing, que permita desarrollar firmas digitales para los insumos relacionados aplicando una gestión de versiones para los scripts, archivos y querys que soportan la digitalización distribuida
Junto a lo anterior propongo que se combine con herramientas que permitan crear flujos de aprobaciones, autorizaciones y bloqueos de estas versiones de insumos que permita aplicar una segregación de funciones entre los desarrolladores y los evaluadores de riesgo de los cambios o transformaciones que sufran los insumos, a cargo de la línea jerarquizada de supervisión sobre los desarrolladores de las unidades de negocio, permitiendo generar gobierno supervisado por áreas de TI al generar un registro de inventario de datos transformados e insumos como scripts, querys y otros. Dentro del ámbito productivo propongo que sean los equipos de Seguridad o de TI los encargados de la interacción con los ambientes productivos por medio de usuarios definidos para tales efectos como usuarios de sistema, que permita una supervisión de las actividades de estos.
Entendido todo este contexto y de acuerdo con mi análisis descrito a lo largo del artículo, puedo concluir y responder de forma afirmativa a la pregunta sobre la posibilidad de implementar un modelo o técnica que asegure la integridad y trazabilidad, proponiendo un método concreto para enfrentar este desafío de la integridad y trazabilidad con el uso de técnicas de resumen de cifrado (hash), utilizadas para otros fines que ahora podemos utilizar para este.
Glosario
Hash: Es un valor único generado a partir de datos de entrada mediante una función hash, utilizado para verificar la integridad de la información.
Hashing: Proceso de transformar datos de cualquier tamaño en una cadena fija de caracteres mediante una función hash para asegurar su integridad.
Data Lake: Repositorio de almacenamiento que permite almacenar grandes volúmenes de datos en su formato original, estructurados y no estructurados.
Blockchain: Tecnología de registro distribuido que garantiza la integridad y seguridad de transacciones mediante bloques enlazados criptográficamente.
Wiki: Plataforma colaborativa donde los usuarios pueden crear, modificar y enlazar contenido de forma sencilla, facilitando la documentación compartida.
Dashboard: Interfaz visual que muestra información clave y métricas en tiempo real para facilitar la toma de decisiones en un solo lugar.
Script: Conjunto de instrucciones o código que se ejecuta automáticamente para realizar tareas específicas en un sistema o aplicación.
Queryes: Instrucciones utilizadas para buscar, recuperar o manipular datos en bases de datos, comúnmente escritas en lenguajes como SQL.
Archivo: Unidad de almacenamiento de datos en sistemas informáticos que puede contener texto, imágenes, videos, o cualquier tipo de información digital.
Cifrado: Proceso de transformar datos en un formato codificado para proteger la información y evitar el acceso no autorizado.
Control Owner: Persona o rol responsable de la implementación, mantenimiento y efectividad de un control de seguridad o proceso.
SHA1: Algoritmo de hashing criptográfico que genera un resumen de 160 bits a partir de datos de entrada; ya no se considera seguro para aplicaciones críticas.
Open Source: Software cuyo código fuente es accesible, modificable y distribuible por cualquier persona, promoviendo la colaboración y transparencia.
Wikimedia Commons: Repositorio en línea de medios libres como imágenes, videos y sonidos que pueden ser utilizados y compartidos libremente.
Bibliografía
1-. Estudio de Harvard Business School https://hbswk.hbs.edu/item/leading-in-the-digital-era-a-new-roadmap-for-success
Anexo 1
En ejemplo les comparto un código en Python con la función hash para una cadena de caracteres demostrando el uso del hash para verificar alteraciones o transformaciones por más mínimas que parezcan:
import hashlib
def hash_data(data):
# Codificar los datos a bytes
data_bytes = data.encode(‘utf-8’)
# Crear el hash SHA-256
sha256_hash = hashlib.sha256(data_bytes).hexdigest()
return sha256_hash
# Ejemplo de uso
datos = «Ejemplo de datos para hashing»
hash_resultado = hash_data(datos)
print(f»Hash de los datos: {hash_resultado}»)
Salida del código para el Hash (1):
0a1253cbc3c43bb6efff2d18568699f3ef5508dd34c2298679830e0e378078ad
Este hash es la representación de la cadena de texto «Ejemplo de datos para hashing» utilizando un algoritmo SHA-256. Si ahora realizamos un mínimo cambio como agregar solo una letra “s” obtendremos un Hash distinto:
import hashlib
def hash_data(data):
# Codificar los datos a bytes
data_bytes = data.encode(‘utf-8’)
# Crear el hash SHA-256
sha256_hash = hashlib.sha256(data_bytes).hexdigest()
return sha256_hash
# Ejemplo de uso
datos = «Ejemplos de datos para hashing»
hash_resultado = hash_data(datos)
print(f»Hash de los datos: {hash_resultado}»)
Salida del código para el Hash (2):
472a863962da5fe19a0c97f07eec47a4b179367370599d06b1dd4fc074333b17
Con esto podemos comprobar los hashes son diferentes, lo que comprueba que no son iguales
Anexo 2
En el esquema se puede visualizar como el método propuesto, es posible utilizarlo con múltiples aplicaciones o herramientas con el mismo resultado.