Steemit Crypto Academy, Season 3: Week 2 || Hash y Criptografía.|| TAREA
fuente
Saludos a todos los participantes de la Steemit Crypto Academy, muy particularmente al Prof. @pelon53 responsable de esta interesante clase y didáctica tarea, y también al Prof. @imagen su cercano colaborador.
Antes de pasar al tema hablaremos un poco de lo que se conoce como una función en matemáticas. Una función es una relación o ley de asignación entre los elementos de dos conjuntos, uno de partida que podemos llamar X y otro de llagada que podemos llamar Y. Para poder decir que f es una función tiene que ocurrir que todo elemento x del conjunto de partida se pueda relacionar mediante f con un único elemento de Y.
Si tenemos una función, a los elementos del conjunto de partida, que en una función algorítmica matemática representan nuestros datos de entrada, los llamamos preimágenes, y a los elementos con quienes se relaciona, en esta caso las salidas del algoritmo correspondiente, los llamaremos imágenes. Al ver el gráfico anterior en el diagrama verde, 1 es la preimagen de a, y a es la imagen de 1.
Entre los tipos de funciones notables y que particularmente importan en nuestro estudio están las funciones inyectivas o uno a uno. Para que una función se considere inyectiva se exige que cada vez que tomes dos elementos distintos del conjunto de partida, sus imágenes o salidas también tienen que ser distintas.
También demos un repaso a lo que se entiende por criptografía.
Básicamente, la criptografía se define cómo la técnica o el arte que sirve para tomar una información, colocarla de una manera ilegible para otras personas distintas al destinatario y al remitente, esto basándose en un código por lo general secreto, que a su vez permite devolver la información a su estado original.
Un ejemplo trivial de criptografía, aunque muy fácil de descifrar, sería mandar un mensaje numérico, pero escribiendo sus dígitos en orden inverso al igual que el orden en el que aparecen agrupados. Si quisiera escribir mis claves bancarias, de manera tal que la gente no se diera cuanta cuales son en realidad y estas fueran:
0102 3298 , 0132 2583 podría escribir en un papel un papel : 3852 2310 ,8923 2010 , y solo yo sabría que tengo que leerles al revés, y que cada par de números representan mi calve de compras y el código del banco correspondiente.
Por qué son importantes los conceptos anteriores, pues porque cuando se trabaja con el término hash a este lo definen cómo “una función criptográfica que codifica datos dando como resultado la generación de caracteres alfanuméricos que serán únicos e irrepetibles”@pelon53
En el mundo de las criptomonedas, las funciones hash se ejecutan mediante algoritmos matemáticos computacionales complejos, donde las entradas en su ejecución son las preimágenes de esta función y sus salidas son sus imágenes.
Cuando se está trabajando con un hash, diremos que hay una colisión si existen dos entradas que tiene una misma salida. esto dicho en el lenguaje de la teoría de funciones significa que hay dos preimágenes que tienen la misma imagen, y por lo tanto esta función no es inyectiva.
Cuando esto ocurre, tenemos un serio problema, porque estaríamos perdiendo una de las características fundamentales que debe tener un hash, que es ser “único e irrepetible”
Uno de los motivos por los que se puede presentar este problema, es que por más grande que sea nuestro número posible de salidas en un computador, este siempre representa un número finito., mientras que el número de entradas posibles no necesariamente lo es.
Notemos que si defino mis entradas como “n”, siendo este n un numero natural cualquiera que iría introduciendo en orden ascendente, como este conjunto de números es infinito, tendría infinitas entradas y llegaría un momento en que se acabarían mis posibles hash de salida y tendría que repetir asignaciones.
fuente
Otro ejemplo clásico es cuando tomamos como salida el día de cumpleaños de una persona,(366 fechas a lo sumo) y como entrada a un grupo de por lo menos 57 personas. Está probado estadísticamente que la probabilidad de que dos personas cumplan años el mismo día, es decir , que se produzca una salida repetida, es de más del 99%. A este hecho se le conoce como la paradoja del cumpleaños.
Ahora si paso a responder la primera pregunta de la tarea:
1.- Explique ¿Qué significa la resistencia a la colisión? Y ¿Qué significa resistencia a la preimagen?
Se dice que una función hash “H”. es resistente a las colisiones, si es “difícil” conseguir dos entradas o preimágenes distintas a y b tales que sus salidas o imágenes H(a) y H(b) sean iguales. Es decir que sea difícil conseguir un caso donde se rompa la inyectividad de H que es lo que asegura que sea única e irrepetible. Mientras más difícil sea romper esta inyectividad, esta función hash será más resistente a las colisiones.
Si estamos en un ambiente donde hay por lo menos el mismo número posible de salidas que entradas, esta resistencia dependerá de que el algoritmo esté bien programado. Si hay más entradas que salidas, estas colisiones serán inevitables y la eficiencia del algoritmo se medirá dependiendo de que tanto logra minimizar este fenómeno.
Existen fórmulas y procedimientos de estadística matemática basados en la ya comentada “paradoja del cumpleaños” para determinar el grado de esta resistencia a las colisiones, sin embargo creo que por su complejidad esto se escapa a los intereses y alcances de este curso. Igualmente, cuando se sabe que las colisiones son inevitables, estos algoritmos buscan la forma de manejarlos como hash “sinónimos” pero que provienen de distintos datos.
Por otra parte, un ataque a la preimagen se produce cuando dado un hash ya generado se logra conseguir un dato, entrada o preimagen que tenga ese mismo hash. Esto sí representa un problema mucho más grave. En este caso estaría fallando una de las características irrenunciables de esta herramienta como lo es ser “irreversibles”. Si esta se hiciera efectiva, querría decir que existía la probabilidad de recuperar los datos que se buscaban encriptar a partir de un hash generado.
2.- Use tronscan y etherscan para verificar el hash del último bloque y el hash de esa transacción. Se requiere capture de pantalla para su comprobación.
El siguiente grupo de capturas de imágenes fue tomado de TRONscan
En la siguiente imagen se ve donde se ubica el último bloque con el número 31717241,(recuadro naranja), en rojo está el número de este bloque. Hay que dar click sobre el número rojo para obtener los detalles del bloque.
Ya desplegada esta información el hash pedido está en el recuadro rojo, donde se nos da la opción de copiarlo.
Acá , luego de copiar y pegar tenemos el hash del ultimo bloque
0000000001e3f7790edb4ee127e164c873324f17751b88f530be4e8231e652a2
Procedemos ahora a buscar el hash de la última transacción.
Si bajamos en la misma página donde están los detalles del último bloque vamos a conseguir los detalles de sus transacciones. En la intersección del recuadro rojo con el verde aparece el link para ver el hash pedido.
Al usar el link aparece esta página donde podemos copiar el hash pedido de la última transacción.
hash última transacción
ed0985f97c0a4a26e260596d3788ff3c065038fc13a11e0693c674f86a52feb3
Repetimos ahora el proceso en ETHERscan.
Nota : todas las capturas son tomadas de Ethersan
Entramos a su página principal. En la imagen de abajo se puede observar en el recuadro naranja la columna donde está el último bloque,(12781808), y en el recuadro rojo donde debemos dar click para obtener su información detallada.
Luego de dar click sobre el número en azul señalado, se nos despliega parte de la información del bloque en cuestión pero aún allí no aparece el hash pedido. Demos dar click en el enlace en el recuadro rojo donde dice "click to see more"
Acá sí está el hash buscado,(ver el recuadro rojo).
Hash del útimo bloque
0x1c197494d154f6ebd1d6b6d32e996e897d19cebf284591b99a126249c8cb36a2
Pasemos ahora a buscar el hash de la última transacción en ese bloque.
Si volvemos a la página con la información detallada de nuestro bloque, veremos que hay un apartado señalado en el cuadro naranja , donde se ofrece información sobre las 218 transacciones en él. Si damos click como lo indican en el recuadro rojo, iremos a la página donde se dan datos detallados de cada una de las transacciones en el bloque.
Ya "clickeamos" y podemos ver en el recuadro naranja resaltado en el recuadro rojo, el enlace a los detalles de nuestra transacción buscada
Ya acá podemos ver en el recuadro naranja el hash pedido, donde hay también una opción para copiarlo.
Hash de última transacción
0xee58ea87780e767eaac0cc35cea470e192af499f7806bb82aa27573142382942
3.- Genere el hash usando SHA-256, de la palabra CryptoAcademy y de cryptoacademy. Se requiere capture de pantalla. ¿Observa alguna diferencia entre ambas palabras? Explique.
Primero vamos al página del enlace. Acá nos conseguimos con una interfaz muy sencilla donde basta colocar el texto en el cuadro de diálogo que señalamos en letras azules, para obtener el hash del texto colocado.
Nota: todas las capturas son tomadas de SHA256 Hash Generator
Cómo se nos pidió colocamos el texto "CryptoAcademy".
El texto CryptoAcademy y su hash obtenido se pueden ver en la imagen de arriba en los recuadros verdes, y en el recuadro rojo el cilck que da la opción para copiarlo. La salida final es:
D03CA34B258E6E0FD06B2070DDE61B50BD4EEF6161A8EDAA4A420C9AE1BEB7F9
Ahora colocamos una pequeña modificación del texto inicial,(se cambiaron mayúsculas por minúsculas), es decir , colocamos "cryptoacademy" y se genera el nuevo hash colocado debajo de la siguiente imagen.
Hash obtenido
0592F5DD27DC72E675B2AB9C77487A69FAAF84196597FA052EC099C18EE7C4C5
Cómo era de esperarse, a pesar de que los textos son casi idénticos , los resultados lanzados por el algoritmo son muy diferentes. Esta es una de las características más deseables con respecto a los generadores de hash ya que hace más difícil desencriptar los contenidos, por muy semejantes que sean sus entradas.
4.- En sus propias palabras explique la diferencia entre el hash y la criptografía.
Comencemos por aclarar que la criptografía es un arte, una técnica y una ciencia con miles de años de historia. Desde que se usaba para cifrar mensajes escritos, hasta épocas mas contemporáneas donde se empezó a ejecutar con máquinas como la legendaria "ENIGMA", utilizada por los nazis para enviar sus órdenes de guerra y que fue descifrada por el padre de computación moderna, Alan Turing.
Ahora , con la llegada de la computación la criptografía se ha convertido en un ámbito más común y utilizado por las masas. Es usual ver en nuestros teléfonos aplicaciones como Whatsapp que nos viven recordando que sus mensajes están perfectamente encriptados y nuestra privacidad está garantizada.
Los hash, en el mundo de las criptomonedas, son una secuencia ordenada de caracteres que representan y encubren a un grupo de datos o también esta palabra se asocia con la función criptográfica basada en un algoritmo matemático procesado en una computadora.
*El hash es una tecnología desarrollada apenas a mediados del siglo XX, En las últimas décadas a tomado un papel protagónico en el mundo de las criptomonedas, pero no deja de ser una hija o rama de la criptografía.
*Los hash son secuencias de caracteres o programas computacionales , la criptografía es una ciencia, un arte que se puede desarrollar fuera del ámbito de los ordenadores. Al ser objetos de distinta naturaleza , aunque con fines comunes no son fáciles de comparar.
*Los hash se usan en las plataformas como las blockchains, la criptografía se puede usar hasta para escribir cartas de amor.
*Con los hash se busca que no se pueda recuperar la entrada que lo generó, en la criprografía se pueden dar casos donde, después de algunas condiciones, se desee invertir el proceso y recuperar los datos.
*En los procesos de crear hash , los resultados siempre tienen la misma longitud , con la criptografía este requisito no existe.
*Los hash son complicados, difíciles de entender y manejar , en la criptografía pueden existir métodos criptográficos tan simples, infantiles e hilarantes como hablar en Ka:
le podías soltar a tu amor platónico cuando el valor no te daba para decirlo claro y de frente.
¿Ya lo descifraron?
Gracias por pasar ver y leer.
Espero haya sido de su agrado y sobre todo útil y correcto.
Cualquier observación o corrección será bien recibida y agradecida.
Gracias por participar en Steemit Crypto Academy Season 3:
Espero seguir leyendo tus publicaciones.
👆 Muy buena explicación.
Excelente tarea. Pero esperaba ver tus conclusiones finales del tema.
Recomendaciones:
Nunca deje sin concluir una tarea.Calificación: 9.7
Hola, estimado amigo, excelente trabajo.
Gracias amiga . Somos la misma escuela.