Confidencialidade, Integridade e Dispoñibilidade
- Confidencialidade, Integridade, Dispoñibilidade e Non Repudio
- Seguridade Física e Seguridade Lóxica
- Vulnerabilidades, Ameazas e Ataques
1. Principios Básicos da Seguridade Informática
1.2. Integridade
A Integridade se refire a garantía de que a información elaborada polo emisor chega sin ningún cambio ao receptor.
Para ofrecer esta garantía habitualmente se recurre a sistemas de cifrado de dirección única, na que a partir da información se xenera un identificador único (hash) que pode ser comprobado na recepción contra a información recibida.
Este tipo de sistemas se empregan de xeito extensivo na instalación de software ou nos sistemas de control de integridade establecidos para a información almacenada.
1.2.1. Os HASH
Un hash é un proceso mediante o cal unha entrada de datos, de lonxitude arbitraria, é transformada mediante unha función nunha cadea de caracteres de lonxitude fixa, que se denomina valor hash, código hash ou simplemente hash. Esta transformación é irreversible, o que significa que non se pode reconstruír a entrada orixinal a partir do hash resultante. As funcións hash son fundamentais en moitos ámbitos da informática, sobre todo en seguridade, criptografía, bases de datos e estruturas de datos como as táboas hash.
Características principais dos HASH
- Determinismo: A mesma entrada sempre xerará o mesmo valor hash.
- Irreversibilidade: Non é posible calcular a entrada orixinal a partir do hash, o que o fai útil para seguridade.
- Lonxitude fixa: A saída dunha función hash sempre ten unha lonxitude fixa, independentemente do tamaño da entrada. Por exemplo, o algoritmo SHA-256 sempre produce un valor hash de 256 bits (32 bytes).
- Difusión (Avalancha): Un pequeno cambio na entrada produce un cambio drástico no valor hash.
- Non colisións: Idealmente, non debería ser posible que dúas entradas diferentes xeren o mesmo hash. Cando isto ocorre, chámaselle colisión.
Uso habitual dos HASH
- Integridade de datos:
- Os hashes utilízanse para comprobar se os datos foron alterados. Por exemplo, cando se descarga un ficheiro de Internet, moitas veces publícase o seu hash para que o usuario poida calcular o hash do ficheiro descargado e comparalo co publicado. Se coinciden, os datos non foron alterados.
- Autenticación e contrasinais:
- En lugar de almacenar contrasinais en texto plano nunha base de datos, almacénanse os seus hashes. Cando un usuario introduce o seu contrasinal, a aplicación calcula o hash dese contrasinal e compárao co que está almacenado. Deste modo, mesmo se a base de datos é comprometida, os contrasinais non serán facilmente accesibles.
- Criptografía:
- En criptografía, as funcións hash criptográficas úsanse para xerar sinaturas dixitais, que permiten verificar a autenticidade e a integridade dunha mensaxe ou documento.
- Táboas hash:
- As táboas hash son estruturas de datos que permiten buscar información rapidamente. Un hash calcúlase para cada elemento e o valor resultante utilízase como un índice nunha táboa ou array, facilitando así a localización rápida dun elemento.
- Blockchain:
- Nunha blockchain, os hashes utilízanse para ligar os bloques entre si e garantir a integridade dos datos. Cada bloque contén o hash do bloque anterior, o que fai case imposible alterar os datos dunha blockchain sen ser detectado.
Tipos de HASH
Funcións hash criptográficas: Estas funcións están deseñadas para ser seguras e difíciles de inverter ou provocar colisións, polo que son amplamente usadas en criptografía e seguridade. Algúns exemplos son:
- MD5 (Message Digest 5): Unha función hash popular nos anos 90, que produce un hash de 128 bits (16 bytes). Actualmente considérase insegura debido ás colisións coñecidas.
- SHA-1 (Secure Hash Algorithm 1): Función que produce un hash de 160 bits. Foi amplamente utilizada pero tamén se demostrou insegura, polo que a súa utilización está a ser substituída.
- SHA-2 (incluíndo SHA-256, SHA-512, etc.): Versións máis seguras que producen valores hash máis longos (256 bits ou 512 bits). SHA-256 é amplamente utilizado en criptografía, por exemplo, en blockchain.
- SHA-3: Unha versión mellorada e máis moderna da familia SHA, que ofrece maior seguridade e flexibilidade.
Funcións hash non criptográficas: Estas funcións están deseñadas para ser rápidas e eficientes, pero non para aplicacións que requiren seguridade, xa que non teñen as mesmas propiedades criptográficas. Úsanse en estruturas de datos como táboas hash, algoritmos de busca e indexación. Exemplos:
- MurmurHash: Función hash rápida deseñada para uso xeral, con boas propiedades de difusión e eficiencia.
- CRC32 (Cyclic Redundancy Check): Un hash utilizado para verificar a integridade de datos en transmisións, pero non criptográficamente seguro.
- FNV (Fowler-Noll-Vo): Unha función hash sinxela e rápida deseñada para táboas hash.
Funcións hash para contrasinais: Estas funcións están deseñadas especificamente para almacenar contrasinais de maneira segura. O obxectivo principal é protexer contrasinais en caso de que se comprometan as bases de datos, polo que inclúen técnicas para dificultar ataques de forza bruta
- bcrypt: Unha función hash que inclúe un factor de traballo para aumentar a dificultade de cálculo do hash, facéndoo resistente aos ataques de forza bruta.
- scrypt: Deseñada para ser difícil de acelerar mediante hardware especializado, e polo tanto, máis segura contra ataques masivos.
- Argon2: Unha das funcións hash máis modernas e seguras para contrasinais, gañadora do concurso de contrasinais de 2015.