Implementacion de Algoritmos de Criptografia Semana 3
Implementacion de Algoritmos de Criptografia Semana 3
Implementacion de Algoritmos de Criptografia Semana 3
SEMANA 3
DOCENTE
JUNLIO 28 DE 2024
1. Explique cómo se utilizan los algoritmos de hash en el ámbito de la
criptografía.
Estas son algunas de las funciones hash criptográficas más comunes, son SHA2, SHA3 o
Blake2, producen compendios de entre 256 y 512 bits.
Entre las muchas y diferentes formas de crear hashes, el algoritmo SHA2-256 es uno de los
más usados gracias a su equilibrio entre seguridad y velocidad, es un algoritmo muy eficiente
y tiene una alta resistencia a colisiones, algo muy importante para mantener la seguridad de
este algoritmo de hash. Para que un algoritmo hash sea seguro, no se deben conocer colisiones.
Por ejemplo, el método de verificar los Bitcoins está basado en SHA2-256.
El rendimiento de estos depende de varios factores, entre ellos el tamaño de los datos de
entrada, el algoritmo que utilizamos y la capacidad de procesamiento que tenga el hardware
empleado. Cuanto más complejos sean los algoritmos hash, mayor impacto tendrán en el
rendimiento.
Como decimos, uno de los factores más importantes es la velocidad a la cual el sistema es
capaz de realizar el cálculo del hash. Estos deben ser lo suficientemente rápidos como para no
originar un cuello de botella, tanto en las aplicaciones como en los sistemas que se emplean.
La gran mayoría de estos algoritmos, están especialmente diseñados para poder ser rápidos y
eficientes. Pero, aun así, pueden afectar al rendimiento en muchas situaciones diferentes.
Los datos de entrada también son importantes, ya que cuanto mayor sea el conjunto que se
debe procesar, más tiempo tardará en realizar todo el cálculo del hash. Esto en muchas
ocasiones puede ser un gran problema, debido a que cada vez las aplicaciones y sistemas
deben lidiar con mayores cantidades de datos en tiempo real. Como la tan conocida minería de
criptomonedas, donde los hashes se calculan de forma constante. En cuanto a la memoria,
también se deben cumplir unos requisitos. Por lo general los algoritmos más complejos
pueden requerir cantidades de memoria mayores para poder ser procesados en caché. Lo cual
aumenta el coste del hardware de forma considerable, ya que muchas veces es necesario para
adaptarse a los requerimientos de un sistema (lopez, 2024).
Determinismo: un algoritmo hash debe ser determinista, lo que significa que siempre
le brinda una salida de tamaño idéntico, independientemente del tamaño de la entrada
con la que comenzó, esto significa que, si está codificando una sola oración, la salida
resultante debe ser del mismo tamaño que la que obtendría al codificar un libro
completo.
Resistencia previa a la imagen: la idea en este punto, es que un algoritmo hash fuerte
es uno que es resistente a la imagen previa, lo que significa que no es factible invertir
un valor hash para recuperar el mensaje de texto sin formato de entrada original, por lo
tanto, el concepto de hash es irreversible, tiene funciones unidireccionales.
Resistencia a la colisión: una colisión ocurre cuando dos objetos chocan. Bueno, este
concepto se traslada a la criptografía con valores hash, si dos muestras únicas de datos
de entrada dan como resultado resultados idénticos, se conoce como colisión. Esta es
una mala noticia y significa que el algoritmo que está utilizando para codificar los
datos no funciona y, por lo tanto, es inseguro, básicamente, la preocupación aquí es
que alguien podría crear un archivo malicioso con un valor hash artificial que coincida
con un archivo genuino (seguro) y hacerlo pasar por real porque la firma coincidiría,
por lo tanto, un algoritmo hash bueno y confiable es aquel que es resistente a estas
colisiones.
Efecto de avalancha: lo que esto significa es que cualquier cambio realizado en una
entrada, sin importar cuán pequeño sea, dará como resultado un cambio masivo en la
salida, esencialmente, un pequeño cambio (como agregar una coma) se convierte en
algo mucho más grande, de ahí el término » efecto avalancha «.
Velocidad hash: los algoritmos hash deben funcionar a una velocidad razonable, en
muchas situaciones, los algoritmos hash deberían calcular los valores hash
rápidamente, esto se considera una propiedad ideal de una función hash criptográfica,
sin embargo, esta propiedad es un poco más subjetiva. Verás, más rápido no siempre
es mejor porque la velocidad debe depender de cómo se utilizará el algoritmo hash, a
veces, lo que se desea es un algoritmo hash más rápido, y otras veces es mejor usar
uno más lento que tome más tiempo para ejecutarse, el primero es mejor para las
conexiones a sitios web y el segundo es mejor para el hash de contraseñas.
El tamaño: uno de los primeros aspectos que hay que tener en cuenta que cada uno de
los hashes criptográficos que se lanzan por cada función tienen la misma longitud, es
decir, siempre tienen el mismo tamaño. En caso de ser más largo su código, lo cierto
es que será más complejo y de ahí se entiende que su nivel de seguridad sea superior.
¿Reversible o no?: otra de las propiedades importantes de las funciones hash es que
no son reversibles. Esto quiere decir que aunque se pueda conocer el hash de un
documento en particular, no se podrán conocer los datos a partir del hash en sí. Por
esto mismo, uno de los usos de estas funciones pasa por guardar contraseñas.
Determinismo: la función hash debe generar siempre un valor hash de longitud fija
y corta independientemente de la longitud de las diferentes entradas.
No legible: el hashing transforma los valores originales en valores hash, que no se
pueden leer directamente. No debe haber forma de descifrar el valor hash en el
sentido clásico y generar el texto o cadena original a partir de él.
Seguridad contra colisiones de valores: no se debe asignar el mismo valor hash a
diferentes entradas. Si dos valores originales reciben el mismo valor hash, hay una
colisión. Los valores hash distintivos y únicos reducen los puntos de ataque y
aumentan la seguridad. Sin embargo, dependiendo de la aplicación, puntualmente se
puede buscar una colisión.
Continuidad o no continuidad: en principio, los valores hash ofrecen mayor
seguridad si son no-continuos, es decir, si diferentes conjuntos de datos originales
reciben valores hash lo más diferentes posible. El uso de valores hash continuos, por
otro lado, es preferible cuando el hashing se utiliza para gestionar conjuntos de datos
y entradas similares.
Velocidad: el hashing no solo permite una mayor seguridad, sino también un acceso
más rápido a las bases de datos (IONOS, 2023).
De acuerdo a esto y la funcionalidad del hashing quedan especialmente claras con la ayuda
de varios casos de uso y áreas de aplicación. Las áreas típicas de aplicación son:
Creación de tablas hash
“Encriptación” de datos importantes
Búsqueda de duplicados
Sumas de comprobación y firmas digitales
Búsqueda de datos similares
Sistemas de autenticación
Caching
las bases de datos de clientes suelen incluir información importante como nombres, datos
de contacto o direcciones. Si hay que buscar información específica en una base de datos,
una búsqueda regular llevaría mucho tiempo. Esto se debe a que habría que escanear toda la
base de datos en busca de los valores buscados. Sin embargo, mediante el hashing se
pueden formar bloques de datos con una posición y dirección específica en la base de datos.
Así, durante el proceso de búsqueda, el ordenador salta inmediatamente a la posición a la
cual se puede dirigir el valor hash asociado en una tabla hash.
las firmas digitales pueden utilizarse para comprobar si los mensajes, las descargas o
incluso las páginas web son seguras. Para ello, los remitentes generan valores hash a partir
de los mensajes o proporcionan un valor hash al descargar un programa. Los destinatarios,
a su vez, también generan un valor hash con la misma función hash. Este se compara con el
valor hash suministrado, normalmente encriptado. Un claro ejemplo de ello es el
cifrado SSL y TLS de Internet. En este caso, el servidor web envía el llamado certificado de
servidor al navegador. El hashing genera una clave de sesión a partir del certificado, que el
servidor recibe, descifra y confirma. Tras la autenticación, se produce el tráfico de datos
HTTPS. El SFTP funciona de forma similar.