Área de Tecnologías de la Información
Programa Académico de Infraestructura de Redes Digitales
Materia: Ciberseguridad
Título: Controles de Integridad
Profesor(a): Ricardo Estrada Malacara
Alumno(a): Porras Noriega Fátima Abigail
Grupo: IRD-501
León, Guanajuato. 25 de marzo de 2020
CAPÍTULO 5: EL ARTE DE GARANTIZAR LA INTEGRIDAD INTRODUCCIÓN En el capítulo 5, el arte de garantizar la integridad se analiza el arte de la integridad que se utiliza para garantizar al usuario que nada ni nadie pueda modificar su información durante su ciclo de vida. En el siguiente ensayo, lograremos darnos cuenta de qué manera la integridad puede beneficiar en una organización. Es importante definir que la integridad garantiza, como ya se mencionó, que no se alteren los datos y que éstos sean confiables y reales. Como sabemos, la integridad, junto con la confidencialidad y la disponibilidad, es una de las políticas de seguridad de la información dentro de una organización, la cual es de gran importancia porque es un elemento fundamental al momento de hacer uso de algún sistema que almacene, transmita o procese datos. CONTROLES DE INTEGRIDAD DE DATOS Algoritmos de hash ¿Qué es el hash? El hash es una operación criptográfica que genera identificadores únicos a partir de una información dada. El hash verifica la autenticación y garantiza la integridad de los datos, además de protegerlos tomando el mensaje y generando una representación de longitud fija que es llamada “valor hash”. Un aspecto importante para tomar en cuenta es la manera en que el hash funciona. Cuando el hash se realiza con un algoritmo especifico, siempre será el mismo y, cada vez que se cambien los datos, el valor del hash también cambiará, entonces se puede decir que el hash es fácil de computar mas no de revertir. Algunas de las propiedades del hash son la longitud del hash ya que su entrada puede ser de cualquier tamaño; la salida tiene una longitud fija; tiene una sola dirección y es irreversible; y aunque se tengan dos entradas distintas, es poco probable que den resultados de hash diferentes. Existen algoritmos de hash que ayudan a generar identificadores que aseguran que un usuario o un error de comunicación no modifique los datos por accidente:
1. Algoritmo de hash simple (checksum de 8 bits): Este algoritmo convierte el mensaje en números binarios y luego organiza la cadena de estos números en fragmentos de 8 bits, de los cuales, se van añadiendo los valores. El último paso es el complemento de 2, el cual consiste en convertir los valores a su valor opuesto y al final sumarle uno. Es decir, un cero se convierte en uno y viceversa y al final se agrega un 1, generando 8 bits. También existen algoritmos de hash modernos, los más populares son: 1. Algoritmo de compendio del mensaje 5 (MD5): Cisco define: “MD5 es una secuencia compleja de operaciones binarias simples realizadas en los datos de entrada para generar un compendio del mensaje con hash de 128 bits.” Es decir, es un algoritmo criptográfico de 128 bits que proporciona un código asociado a un archivo, esto permite comprobar que éste no se haya modificado respecto al original. 2. Algoritmos de hash seguro (SHA): Cisco define: “Los algoritmos SHA-2 son los algoritmos de hash seguro que incluyen el uso en otros algoritmos y protocolos criptográficos, que protegen la información confidencial sin clasificar”. SHA tiene cuatro funciones de hash adicionales, que son: SHA224 (224 bits), SHA-256 (256 bits), SHA-384 (383 bits) y SHA-512 (512 bits). En otras palabras el SHA-2 es un hash de cifrado que ayuda a encriptar los mensajes asegurando que los datos no hayan sido modificados. Archivos y medios digitales de hash: La integridad garantiza que los datos no estén alterados y estén completos al momento de adquirirlos ya sea al descargar un archivo de internet o buscar información en medios digitales. Para verificar la integridad de todos los archivos existen herramientas/softwares que ayudan al usuario a realizar una comparación del archivo original con el obtenido. Otra de las maneras es en el campo de informática forense digital, que utiliza el hash para verificar todos los medios digitales que contienen archivos. Hash de contraseñas: Como mencioné anteriormente, los algoritmos de hash pueden convertir los datos que sea, en un hash de longitud fija, incluyendo las contraseñas, ya que, repitiendo lo que dije, un hash no se puede invertir para
conocer el valor original porque si se cambia un dato del archivo, el valor del hash cambia. Entonces para las contraseñas funciona bien por eso, el sistema almacena el hash de la contraseña en una base de datos y al momento en que el usuario quiere ingresar, el sistema compara el hash almacenado, con la contraseña introducida, entonces, al comprobar que sean iguales, el sistema puede dar acceso. Algunas aplicaciones que le podemos dar a los algoritmos de hash pueden ser por ejemplo, al proporcionar una prueba de autenticidad al momento de tener una clave secreta (en IPsec o autenticación del protocolo de routing); proporcionar respuestas de una dirección o en los protocolos de autenticación; proporcionar pruebas de verificación de la integridad de los mensajes (en contratos con firma digital o en los certificados PKI, como en los navegadores). El desciframiento de hashes es un tema importante para considerar porque para descifrar un hash, se debe adivinar la contraseña. Los dos principales ataques son el de diccionario que utiliza un archivo que contiene palabras, frases y contraseñas comunes, comparando los hashes del archivo con los de la contraseña y si uno de estos hashes coincide, el atacante puede conocer un grupo de contraseñas potencialmente buenas; el otro ataque es el de fuerza bruta, el cual intenta cada combinación posible de caracteres hasta una longitud determinada hasta que el método descubre la contraseña, es por eso que se recomienda que las contraseñas sean largas para así lograr que el tiempo del ataque se prolongue. Técnica de <<salting>> ¿Qué es el <<salting>>? Es una técnica que permite que el hash de la contraseña sea más seguro, esto es muy funcional ya que, al momento de tener la misma información, el resultado de hash será el mismo, lo cual provocaría que, al dos usuarios tener la misma contraseña, tendrían también el mismo hash. Entonces, lo que el salting hace es darle un <<salt>> al hash, es decir, una cadena aleatoria de caracteres o una entrada adicional a la contraseña, dando un resultado de hash distinto para cada contraseña.
El <<salting>> funciona como prevención de ataques porque evita un ataque de diccionario y hace imposible descifrar un hash usando las tablas de búsqueda (almacenan los hashes de las contraseñas en un diccionario junto a la contraseña correspondiente, esta estructura de datos, procesa cientos de búsquedas de hash por segundo); y también las tablas de arcoíris (sacrifican la velocidad de descifrado de hash para que las tablas de búsquedas sean más pequeñas, es decir, que almacenen las soluciones para más hashes en la misma cantidad de espacio). Otra técnica para prevenir ataques es el alargamiento de claves que hace que el hash funcione lento y que el hardware no pueda calcular tantos hashes por segundo. ¿Cómo se implementa el <<salting>>? Para generar un <<salt>> la mejor opción es un generador criptográficamente seguro de números pseudoaleatorios (CSPRNG), ya que genera un número altamente aleatorio, haciéndolo criptográficamente muy seguro. La forma correcta de implementarlo es la siguiente: El salt debe ser único para cada contraseña; nunca se debe reutilizar un salt; la longitud del salt debe coincidir con la extensión del resultado de la función de hash; y finalmente siempre realizar el hash en el servidor en una aplicación web. HMAC ¿Qué es un HMAC? Un HMAC es un código de autenticación de mensaje (MAC) que se basa en una función de hash. Lo que hace es “concatenar” la clave y el mensaje y juntarlos, utiliza un algoritmo especifico que combina una función de hash criptográfica con una clave secreta que sólo el emisor y el receptor conocen y sólo estos pueden calcular el compendio de una función de HMAC. ¿Cómo funciona el HMAC? HMAC funciona para asegurarse de la no alteración de un mensaje en tránsito, además de proporcionar una manera en la que el receptor pueda verificar el origen del mensaje. Es decir, cuando se introducen los datos (mensaje y clave), el algoritmo de hash calcula el HMAC y el receptor puede obtener huellas digitales autenticadas anexadas al mensaje. Si el HMAC generado coincide con el HMAC enviado, entonces se ha verificado la integridad y la autenticidad. Si no coinciden, se descarta el mensaje.
Los HMAC tienen varias aplicaciones de uso: puede ser para autenticar a un usuario web, enviando un identificador de clave privada y un HMAC. El servidor busca esta clave y crea un HMAC y estos dos deben coincidir. Otra aplicación es en las VPN que utilizan IPsec ya que dependen de HMAC para autenticar el origen de cada paquete y proporcionan verificación de la integridad de los datos. Otro tema importante por mencionar es el de las firmas digitales, estas prueban autoría de los contenidos de algún archivo. Cuando un documento digital está sin protección, es muy fácil de alterar, entonces la firma determina si alguien puede modificar dicho documento, validando la autenticidad y la integridad del mensaje. Además garantiza que el emisor firma el mensaje para que, en caso de que sea malicioso, se pueda comprobar su origen. Las maneras en que más se ve el uso de una firma digital es por ejemplo en la firma de código, que se utiliza para verificar la integridad de los archivos ejecutables descargados de un sitio web; otra manera es en los certificados digitales, que se utilizan para verificar la identidad de una organización para autenticar el sitio web y establecer una conexión cifrada para intercambiar datos confidenciales. Las firmas digitales utilizan tres algoritmos que generan y verifican firmas digitales: DSA (crea firmas digitales y no se extiende más allá de la firma del mensaje), RSA (cubre la firma y también cifra el contenido del mensaje), y finalmente ECDSA (utiliza tamaños de clave más pequeños para la misma seguridad y requiere menos computo que RSA). Por otra parte, los certificados digitales, permiten a los usuarios intercambiar información de manera segura a través de internet, autentificando y verificando que los usuarios que envían un mensaje sean quienes dicen ser, además proporcionan confidencialidad para el receptor que cifran una repuesta. Una autoridad de certificación emite certificados digitales que autentican la identidad de las organizaciones y de los usuarios, además firman mensajes para asegurarse de que nadie los haya manipulado. Finalmente, la integridad de la base de datos es un tema de gran importancia, porque como bien sabemos una base de datos proporciona una forma eficiente de almacenar, recuperar y analizar datos. Entonces, la integridad de datos se refiere
a la precisión y confiabilidad de los datos que son almacenados en una base de datos. Deben tenerse en cuenta cuatro restricciones en la integridad de datos: La primera es la integridad de la entidad (todas las filas tienen un id llamado clave principal); la segunda es la integridad de dominio (todos los datos almacenados en una columna deber seguir el mismo formato); la tercera es la integridad referencial (las relaciones entre tablas deben permanecer congruentes); y la última es la integridad definida por el usuario (un conjunto de reglas definidas por el usuario que no pertenece a las demás categorías). Otro aspecto que es importante tomar en cuenta son los controles del ingreso de los datos; el ingreso de datos implicar introducir datos en un sistema y por medio de un conjunto de comandos, se garantiza que estos datos que se introducen sean datos correctos. Por otra parte, las reglas de validación verifican que los datos se incluyan en los parámetros definidos por el diseñador de la base de datos. Éstas ayudan a garantizar la integridad y coherencia de los datos. Los criterios utilizados son: el tamaño, el formato, la coherencia, el rango y el dígito de control. La validación del tipo de datos verifica que un usuario que ingresa datos concuerde con el tipo de caracteres esperados. Uno de los aspectos mas delicados debido a que es vulnerables, es controlar el proceso de la entrada de datos porque en algunos ataques se insertan datos malformados y esto puede hacer que la aplicación divulgue demasiada información al atacante. Y finalmente, la detección de anomalías es la identificación de patrones en los datos que no se ajustan al comportamiento esperado y funciona como una protección importante en la detección de fraudes. La integridad de la entidad es una regla de integridad, la cual afirma que cada tabla debe tener una clave primaria y que la columna de ésta debe ser única y no nula. Esta regla permite la organización adecuada de los datos. Otro concepto importante es la integridad referencial que es la clave externa que hace referencia a una clave principal en una segunda tabla y determina la relación entre sistemas o tablas de llenado. Esta regla mantiene la integridad de las claves externas. Finalmente, la integridad del dominio garantiza que todos los elementos de datos de una columna se incluyan en un conjunto definido de valores válidos, tan simple como elegir el tipo de datos, longitud y formato correcto para una columna.
CONCLUSIONES •
El arte de garantizar la integridad se utiliza dentro de las organizaciones para garantizar que nada ni nadie pueda alterar los datos que se estén manejando.
•
En cuanto a los tipos de controles de integridad, fue muy interesante conocer los algoritmos de hash porque así pude conocer distintas maneras de encriptar mensajes y sobre todo porque pude ver la relación que tienen con el tema de la criptografía.
•
Con base en los distintos tipos de algoritmos, puedo concluir que al querer utilizar un algoritmo de hash, es más recomendable utilizar SHA-256 o superior ya que son los más seguros actualmente y debido a las fallas que se han encontrado en SHA-1 y MD5 es preferible evitar estos últimos dos.
•
Por otra parte, la técnica de <<salting>> me gustó mucho porque considero que refuerzas lo aprendido en los algoritmos de hash, ya que, como se mencionó, el salting lo que hace es darle más fuerza a este resultado de hash en los archivos aún cuando dos usuarios pudieran tener exactamente la misma información.
•
El HMAC fue un tema que me resultó un poco difícil de entender, o de comprender qué cosas lo hacían diferente de los otros dos. Pero lo que me pareció interesante fue el hecho de que la clave y el mensaje, se concatenen y tanto el emisor como el receptor sean los únicos en conocer estos datos.
•
También pude ver que es de gran importancia la utilización de firmas y certificados digitales ya que así podemos verificar que un mensaje o documento sea autentico, además de que por ejemplo, las firmas digitales pueden funcionar como una alternativa a HMAC.
•
Finalmente, aprendí que el hecho de tener un sistema de integridad de datos bien controlado y bien definidos nos puede permitir aumentar la estabilidad y rendimiento en las bases de datos de las organizaciones, siendo esto importante en virtud de que tanto la información del cliente como de la organización, es el elemento más valioso para las empresas y al que más se le debe tener cuidado.