jueves, 16 de junio de 2022

ALGORITMO SHA 256 EXPLICADO PARA PRINCIPIANTES

 

Cada día aparecen nuevos programas maliciosos. El Instituto AV-TEST informa de “más de 450.000 nuevos programas maliciosos (malware) y aplicaciones potencialmente no deseadas (PUA/Potentially Unwanted Program)” cada día. Debido al aumento de la actividad de los programas maliciosos en línea en los últimos años, es crucial proteger tus datos en todo momento.

El algoritmo SHA 256 es una poderosa herramienta en tu caja de herramientas de seguridad que ayuda a garantizar la integridad y la autenticación de los datos.

Para entender mejor esta función de hash, vamos a explorar el algoritmo SHA 256 más a fondo.

¿QUÉ ES EL ALGORITMO SHA 256?

SHA-256, que significa algoritmo de hash seguro 256 (Secure Hash Algorithm 256), es un algoritmo (o función) de hash criptográfico que se utiliza para la verificación de la integridad de mensajes, archivos y datos. Forma parte de la familia de funciones hash SHA-2 y utiliza una clave de 256 bits para tomar un dato y convertirlo en una nueva cadena de datos irreconocible de longitud fija. Esta cadena de caracteres y números aleatorios, llamada valor hash, también tiene un tamaño de 256 bits.

Una ilustración general básica de cómo funciona el hashing

SHA 256 es el estándar de la industria utilizado por el gobierno federal de Estados Unidos y muchas otras organizaciones a nivel mundial. Pero, ¿qué hace en un sentido más básico?

Consideremos el siguiente ejemplo. Digamos que escribes el mensaje “Buenos días” y le aplicas una función hash SHA-256. Tendrá el siguiente aspecto:

21AEBC48383652046150C3663A57B1CB5BF957B5ECE024DEB9CBC087478CDF80

Ahora, digamos que decides hacer lo mismo con un mensaje similar, “Buenos días!” El resultado será una cadena de caracteres hexadecimales totalmente diferente y de la misma longitud.

7CAE235C0A8C43AD87AFB5C76AAFEE3750B4ED1DDC0656E41AB40FE3341A4BBD

El siguiente gráfico muestra los valores hash SHA-256 de dos textos que difieren en un carácter:

Ejemplo de valores hash en SHA 256

El ejemplo de la sección muestra que la adición de un signo de exclamación cambia todo el compendio hash resultante.

Como puedes ver, cuando se añade un solo carácter al mensaje, el valor hash cambia completamente. El número de caracteres en los valores hash sigue siendo el mismo, independientemente del número de caracteres en el texto original. Esto ayuda a ocultar el tamaño de los datos de entrada originales, ya que no importa lo grande o pequeña que sea la entrada -una sola palabra o un libro entero- dará como resultado un valor hash de la misma longitud.



Ejemplo

Supongamos que quieres enviar el mensaje “Buenos días” a un amigo, pero te preocupa que alguien intente cambiar el mensaje antes de que llegue a tu amigo. Si le proporcionas a tu amigo el valor hash y especificas el algoritmo que has utilizado para crearlo, tu amigo puede generar el hash en su extremo y ver si coincide. Si coincide, sabrá que tu mensaje es auténtico y que no ha sido alterado desde que lo enviaste.

HISTORIA DE LOS ALGORITMOS HASHING SHA

Los algoritmos hash seguros (SHA, Secure Hash Algorithms) fueron diseñados por la Agencia de Seguridad Nacional (NSA, National Security Agency). El gobierno de Estados Unidos patentó el algoritmo y luego lo liberó bajo una licencia libre de derechos para que cualquiera pudiera utilizarlo gratuitamente. Los algoritmos de hashing se utilizan como funciones unidireccionales, lo que significa que están diseñados para ser procesados de una manera, pero son demasiado engorrosos para la ingeniería inversa.

El algoritmo SHA-0 apareció por primera vez en 1993. Le siguió el SHA-1 en 1995 y, aunque ha sido descifrado, el SHA-1 sigue utilizándose en la actualidad. La familia SHA-2, de la que forma parte SHA 256, se lanzó en 2001 e incluye seis funciones hash:

  1. SHA 224

  2. SHA 256

  3. SHA 384

  4. SHA 512

  5. SHA 512/224

  6. SHA 512/256


Familia de algoritmos criptográficos SHA-2

Cada miembro de la familia contiene un conjunto de algoritmos hash criptográficos que convierten los datos en un valor hash único. En el caso de SHA 256, el valor hash es de 256 bits (igual a 32 bytes). Las seis funciones hash tienen diferentes números de rondas y utilizan diferentes cantidades de desplazamiento y constantes aditivas (más sobre esto en un momento).

GUÍA RÁPIDA DE LA TERMINOLOGÍA DE SHA 256

Para entender correctamente SHA 256, necesitamos comprender los términos de la definición anterior. Así que, aquí vamos:

RONDAS

Anteriormente, mencionamos que una de las diferencias entre los seis algoritmos SHA-2 es el número de rondas en cada uno. Una ronda es un conjunto de funciones que se llevan a cabo repetidamente en el algoritmo para codificar los datos de forma irreconocible. Hay 64 rondas en el algoritmo SHA 256.

CANTIDAD DE DESPLAZAMIENTO

La cantidad de desplazamiento es un método fijo utilizado para barajar los bits. En SHA 256, los bloques se dividen en ocho segmentos de 32 bits cada uno. Estos ocho trozos se desplazan de una manera específica que revuelve y aleatoriza los datos.

CONSTANTES ADITIVAS

Los valores que se añaden a los bloques se denominan constantes aditivas. En SHA 256, hay 64 constantes que se añaden a los bloques. Estos números son las raíces cúbicas de los primeros 64 números primos. Este paso utiliza los primeros 32 bits de los números fraccionarios. Esas 64 constantes son las siguientes:


428a2f98

71374491

b5c0fbcf

e9b5dba5

3956c25b

59f111f1

923f82a4

ab1c5ed5

d807aa98

12835b01

243185be

550c7dc3

72be5d74

80deb1fe

9bdc06a7

c19bf174

e49b69c1

efbe4786

0fc19dc6

240ca1cc

2de92c6f

4a7484aa

5cb0a9dc

76F988da

983e5152

a831c66d

b00327c8

bf597fc7

c6e00bf3

d5a79147

06ca6351

14292967

27b70a85

2e1b2138

4d2c6dfc

53380d13

650a7354

766a0abb

81c2c92e

92722c85

a2bfe8a1

a81a664b

c24b8b70

c76c51a3

d192e819

d6990624

f40e3585

106aa070

19a4c116

1e376c08

2748774c

34b0bcb5

391c0cb3

4ed8aa4a

5b9cca4f

682e6ff3

748f82ee

78a5636f

84c87814

8cc70208

90befffa

a4506ceb

bef9a3f7

c67178f2

¿DÓNDE SE UTILIZA SHA 256?

Podemos utilizar SHA 256 en situaciones en las que necesitamos lo siguiente

PROTEGER LA INTEGRIDAD DE LOS DATOS

Cuando nos comunicamos en línea, asumimos que la respuesta proviene de la persona que creemos que es. ¿Qué tan cierta es esa suposición? Pues bien, si la comunicación no está suficientemente cifrada, un ciberdelincuente puede interceptarla fácilmente y hacerse pasar por la otra parte.

SHA 256 garantiza la integridad de los datos para que ambas partes puedan estar seguras de que la comunicación procede realmente de la persona que creen que es. El dispositivo receptor crea un hash del mensaje original y lo compara con el valor hash enviado por el remitente. Si ambos valores hash son iguales, el mensaje no ha sido manipulado durante el tránsito.

VERIFICACIÓN DE FIRMAS DIGITALES

Una firma digital es una forma de firmar documentos digitales, código o software que es verificable por el destinatario o los usuarios. De esta manera, saben si has creado o firmado el documento o archivo, o si el elemento en cuestión ha sido creado o alterado por otra persona.

Una firma digital se crea aplicando un hash al archivo y luego utilizando un algoritmo de encriptación para cifrarlo mediante claves privadas y públicas. La clave privada se utiliza cuando el propietario de la firma firma el documento; la clave pública la utiliza el destinatario para descifrar el mensaje en su extremo.

Pero todo esto no significaría nada sin la verificación, que es donde entra SHA-256. El hashing garantiza que la firma digital no ha sido alterada desde que se firmó. El sistema del destinatario ejecuta el algoritmo hash en su extremo y utiliza la clave pública para descifrar el mensaje. Si coincide, sabe que los datos no han sido alterados y son auténticos.

Verificación de las transacciones de la cadena de bloques
Quizás te sorprenda saber que SHA-256 también se utiliza en algunas aplicaciones populares de cadenas de bloques, sobre todo en la criptomoneda Bitcoin. Las cabeceras de los bloques son parte integral de las cadenas de bloques, ya que ayudan a “encadenar” un bloque de transacciones con el siguiente en un orden específico. El hash SHA-256 ayuda a garantizar que ningún bloque anterior se modifique sin alterar la cabecera del nuevo bloque.

EJEMPLOS DE USO DE SHA 256

SHA 256 es uno de los algoritmos más fiables para la autenticación y la verificación de la integridad de los mensajes. Se utiliza con muchos protocolos y procesos de autenticación y cifrado diferentes, entre ellos:


Uso de algoritmo SHA 256 en la cadena de bloques

  • SSL/TLS– Secure socket layer (SSL) y transport layer security (TLS) son protocolos de encriptación que mantienen la integridad y confidencialidad de los datos mientras están en tránsito.

  • SSH– El protocolo Secure Shell (SSH) crea un canal seguro entre dos dispositivos para la transferencia de datos.

  • IPsec– La seguridad del protocolo de Internet (IPsec) es un conjunto de protocolos diseñados para asegurar la transferencia de datos a través de diferentes redes IP.

  • PGP– Pretty good privacy (PGP) es un algoritmo de cifrado utilizado para firmar, cifrar y descifrar correos electrónicos, archivos, directorios o una partición de disco.

  • S/MIME– Secure/multipurpose internet mail extensions (S/MIME) es un algoritmo para asegurar la integridad y confidencialidad de los correos electrónicos.

  • Blockchain– En una cadena de bloques, los valores hash anteriores se utilizan para calcular el valor hash del bloque actual.

¿ES SEGURO SHA 256?

¿Es posible descifrar el algoritmo SHA 256? Claro, si se dispone de recursos y tiempo prácticamente ilimitados. Pero en realidad, no, nadie lo ha hecho hasta ahora. Por eso la red Bitcoin, considerada una de las más seguras del mundo, utiliza SHA 256. También por eso los certificados TLS utilizan SHA 256 para validar su integridad. La siguiente captura de pantalla muestra el certificado TLS de nuestro sitio web:


Certificado de conexión segura con SHA 256

Cuando se utiliza el estándar SHA 256 en un algoritmo, se puede conseguir que se verifique mediante el Programa de Validación de Módulos Criptográficos (CMCP, Cryptographic Module Validation Program) del Instituto Nacional de Estándares y Tecnología (NIST, National Institute of Standards and Technology) y el Establecimiento de Seguridad de las Comunicaciones (CSE, Communication Security Establishment). Por ley, ciertas aplicaciones de algunos gobiernos están obligadas a tener esta verificación oficial.

¿CÓMO FUNCIONA EL ALGORITMO SHA 256?

SHA 256 es muy complejo, por lo que no vamos a entrar en demasiados detalles aquí. Sin embargo, podemos entenderlo desde una perspectiva amplia. FIPS-180 describe los algoritmos SHA como algo que implica dos etapas esenciales:

  • Preprocesamiento– Aquí se rellena el mensaje, se divide en bloques más pequeños y se establecen los valores de inicialización.

  • Cálculo del hash– Este proceso implica una serie de operaciones que dan como resultado una serie de valores hash. El compendio de hash de 256 bits resultante que obtenemos al final se genera mediante el cálculo de estos diversos valores hash.

SHA 256 sigue los pasos que se indican a continuación:

  1. En primer lugar, los datos se convierten en binarios. El código binario utiliza 0s y 1s para almacenar la información. Por ejemplo, la letra “a” se escribe como “01000001” en este lenguaje informático básico.

  2. Los datos binarios se dividen en bloques de 512 bits. Si el bloque es menor de 512, se ampliará a ese tamaño añadiendo bits de “relleno”. Si es mayor, se dividirá en bloques de 512 bits. (Si el último bloque no es exactamente de 512 bits, se añade relleno al último bloque para que sea de 512 bits).

  3. El mensaje se divide además en bloques más pequeños de 32 bits cada uno.

  4. Se realizan sesenta y cuatro iteraciones (rondas) de funciones de compresión, en las que los valores hash generados anteriormente se giran siguiendo un patrón específico y se añaden datos adicionales.

  5. Se crean nuevos valores hash a partir del resultado de las operaciones anteriores.

  6. En la última ronda, se produce un valor hash final de 256 bits – este resumen hash es el producto final de SHA 256.

REFLEXIONES FINALES SOBRE EL ALGORITMO SHA 256

Aunque en este artículo no hemos entrado en el meollo de cómo funciona el algoritmo SHA 256, ahora deberías entender que SHA 256 es una función muy útil. SHA 256 convierte los datos en valores hash de longitud fija, prácticamente irreversibles, y se utiliza principalmente para verificar la autenticidad de los datos.

Como hemos mencionado antes, nadie ha sido capaz de crackear SHA 256 hasta la fecha, y se utiliza en algunas de las redes más seguras del mundo. Un día, SHA 256 podría romperse, pero por el momento, podemos confiar en él para mantener nuestros datos seguros.



No hay comentarios:

Publicar un comentario