stringtranslate.com

colisión de hash

John Smith y Sandra Dee comparten el mismo valor hash de 02, lo que provoca una colisión de hash.

En informática , una colisión de hash o choque de hash [1] es cuando dos datos distintos en una tabla hash comparten el mismo valor hash. El valor hash en este caso se deriva de una función hash que toma una entrada de datos y devuelve una longitud fija de bits. [2]

Aunque los algoritmos hash, especialmente los algoritmos hash criptográficos, se han creado con la intención de ser resistentes a las colisiones , a veces pueden asignar diferentes datos al mismo hash (en virtud del principio del casillero ). Los usuarios malintencionados pueden aprovechar esto para imitar, acceder o alterar datos. [3]

Debido a las posibles aplicaciones negativas de las colisiones hash en la gestión de datos y la seguridad informática (en particular, funciones hash criptográficas ), la prevención de colisiones se ha convertido en un tema importante en la seguridad informática.

Fondo

Las colisiones hash pueden ser inevitables dependiendo de la cantidad de objetos en un conjunto y de si la cadena de bits a la que están asignados tiene o no la longitud suficiente. Cuando hay un conjunto de n objetos, si n es mayor que | R |, que en este caso R es el rango del valor hash, la probabilidad de que haya una colisión hash es 1, lo que significa que está garantizado que ocurrirá. [4]

Otra razón por la que las colisiones de hash son probables en algún momento proviene de la idea de la paradoja del cumpleaños en matemáticas. Este problema analiza la probabilidad de que un conjunto de dos personas elegidas al azar tengan el mismo cumpleaños entre n personas. [5] Esta idea ha dado lugar a lo que se ha denominado el ataque de cumpleaños . La premisa de este ataque es que es difícil encontrar un cumpleaños que coincida específicamente con el suyo o con un cumpleaños específico, pero la probabilidad de encontrar un conjunto de dos personas con cumpleaños coincidentes aumenta enormemente la probabilidad. Los malos actores pueden utilizar este enfoque para que les resulte más sencillo encontrar valores hash que colisionen con cualquier otro valor hash, en lugar de buscar un valor específico. [6]

El impacto de las colisiones depende de la aplicación. Cuando se utilizan funciones hash y huellas dactilares para identificar datos similares, como secuencias de ADN homólogas o archivos de audio similares, las funciones están diseñadas para maximizar la probabilidad de colisión entre datos distintos pero similares, utilizando técnicas como el hash sensible a la localidad . [7] Las sumas de verificación , por otro lado, están diseñadas para minimizar la probabilidad de colisiones entre entradas similares, sin tener en cuenta las colisiones entre entradas muy diferentes. [8] Los casos en los que los malos actores intentan crear o encontrar colisiones de hash se conocen como ataques de colisión. [9]

En la práctica, las aplicaciones relacionadas con la seguridad utilizan algoritmos hash criptográficos, que están diseñados para ser lo suficientemente largos como para que las coincidencias aleatorias sean poco probables, lo suficientemente rápidos como para poder usarse en cualquier lugar y lo suficientemente seguros como para que sea extremadamente difícil encontrar colisiones. [8]

Probabilidad de ocurrencia

Las colisiones hash pueden ocurrir por casualidad y pueden crearse intencionalmente para muchos algoritmos hash. Por lo tanto, la probabilidad de una colisión hash depende del tamaño del algoritmo, la distribución de los valores hash y de si es matemáticamente conocido y computacionalmente factible crear colisiones específicas.

Tenga en cuenta los siguientes algoritmos hash: CRC-32, MD5 y SHA-1. Estos son algoritmos hash comunes con distintos niveles de riesgo de colisión. [10]

CRC-32

CRC-32 plantea el mayor riesgo de colisiones de hash. Por lo general, no se recomienda el uso de esta función hash. Si un centro contuviera 77.163 valores hash, la probabilidad de que se produjera una colisión hash es del 50 %, lo cual es extremadamente alto en comparación con otros métodos. [11]

MD5

MD5 es la más utilizada y, en comparación con las otras dos funciones hash, representa el término medio en términos de riesgo de colisión de hash. Para obtener un 50% de posibilidades de que ocurra una colisión de hash, tendría que haber más de 5,060 millones de registros en el centro. [11]

SHA-1

SHA-1 ofrece el riesgo más bajo de colisiones de hash. Para que una función SHA-1 tenga un 50 % de posibilidades de que se produzca una colisión hash, tendría que haber 1,42 × 10 24 registros en el centro. Tenga en cuenta que la cantidad de registros mencionados en estos ejemplos tendría que estar en el mismo centro. [11]

Tener un centro con una cantidad menor de registros podría disminuir la probabilidad de una colisión hash en todas estas funciones hash, aunque siempre habrá un riesgo menor presente, que es inevitable, a menos que se utilicen técnicas de resolución de colisiones.

Resolución de colisiones

En las tablas hash, dado que las colisiones hash son inevitables, las tablas hash tienen mecanismos para abordarlas, conocidos como resoluciones de colisión. Dos de las estrategias más comunes son el direccionamiento abierto y el encadenamiento separado . La resolución de colisiones consciente del caché es otra estrategia que se ha discutido en el pasado para las tablas hash de cadenas.

John Smith y Sandra Dee están siendo dirigidos a la misma celda. El direccionamiento abierto hará que la tabla hash redirija a Sandra Dee a otra celda.

direccionamiento abierto

En este método, a las celdas de la tabla hash se les asigna uno de tres estados: ocupada, vacía o eliminada. Si se produce una colisión de hash, se sondeará la tabla para mover el registro a una celda alternativa que se indique como vacía. Existen diferentes tipos de sondeo que tienen lugar cuando ocurre una colisión de hash y se implementa este método. Algunos tipos de sondeo son sondeo lineal , hash doble y sondeo cuadrático . [12] El direccionamiento abierto también se conoce como hash cerrado. [13]

Encadenamiento separado

Esta estrategia permite "encadenar" más de un registro a las celdas de una tabla hash. Si dos registros se dirigen a la misma celda, ambos irán a esa celda como una lista vinculada. Esto evita eficazmente que se produzca una colisión de hash, ya que los registros con los mismos valores de hash pueden ir a la misma celda, pero tiene sus desventajas. Hacer un seguimiento de tantas listas es difícil y puede hacer que cualquier herramienta que se utilice se vuelva muy lenta. [12] El encadenamiento separado también se conoce como hash abierto. [14]

Resolución de colisiones consciente del caché

Aunque mucho menos utilizado que los dos anteriores, Askitis y Zobel (2005) propusieron el método de resolución de colisiones consciente de caché en 2005. [15] Es una idea similar a los métodos de encadenamiento separado, aunque técnicamente no involucra las listas encadenadas. . En este caso, en lugar de listas encadenadas, los valores hash se representan en una lista contigua de elementos. Esto es más adecuado para tablas hash de cadenas y aún se desconoce su uso para valores numéricos. [12]

Ver también

Referencias

  1. ^ Thomas, Cormen (2009), Introducción a los algoritmos , MIT Press, p. 253, ISBN 978-0-262-03384-8
  2. ^ Stapko, Timothy (2008), "Seguridad integrada", Seguridad integrada práctica , Elsevier, págs. 83-114, doi :10.1016/b978-075068215-2.50006-9, ISBN 9780750682152, consultado el 8 de diciembre de 2021
  3. ^ Schneier, Bruce . "Criptoanálisis de MD5 y SHA: es hora de un nuevo estándar". Mundo de la informática . Archivado desde el original el 16 de marzo de 2016 . Consultado el 20 de abril de 2016 . Mucho más que algoritmos de cifrado, las funciones hash unidireccionales son los caballos de batalla de la criptografía moderna.
  4. ^ Ciberseguridad y Matemática Aplicada. 2016. doi :10.1016/c2015-0-01807-x. ISBN 9780128044520.
  5. ^ Soltanian, Mohammad Reza Khalifeh (10 de noviembre de 2015). Métodos teóricos y experimentales para defenderse de ataques DDoS. ISBN 978-0-12-805399-7. OCLC  1162249290.
  6. ^ Conrado, Eric; Misenar, Seth; Feldman, Joshua (2016), "Dominio 3: Ingeniería de seguridad (Ingeniería y gestión de seguridad)", Guía de estudio CISSP , Elsevier, págs. 103–217, doi :10.1016/b978-0-12-802437-9.00004-7, ISBN 9780128024379, consultado el 8 de diciembre de 2021
  7. ^ Rajaraman, A.; Ullman, J. (2010). "Minería de conjuntos de datos masivos, capítulo 3".
  8. ^ ab Al-Kuwari, Saif; Davenport, James H.; Bradford, Russell J. (2011). Funciones hash criptográficas: tendencias de diseño recientes y nociones de seguridad. Inscrypt '10.
  9. ^ Esquema, Mike (2012). Hackear aplicaciones web .
  10. ^ Altheide, Cory; Carvey, Harlan (2011). Análisis forense digital con herramientas de código abierto. Elsevier. págs. 1–8. doi :10.1016/b978-1-59749-586-8.00001-7. ISBN 9781597495868. Consultado el 8 de diciembre de 2021 .
  11. ^ abc Linstedt, Daniel; Olschimke, Michael (2016). "Arquitectura de almacén de datos escalable". Creación de un almacén de datos escalable con Data Vault 2.0. Elsevier. págs. 17–32. doi :10.1016/b978-0-12-802510-9.00002-7. ISBN 9780128025109. Consultado el 7 de diciembre de 2021 .
  12. ^ abc Nimbe, Peter; Ofori Frimpong, Samuel; Opoku, Michael (20 de agosto de 2014). "Una estrategia eficiente para la resolución de colisiones en tablas hash". Revista Internacional de Aplicaciones Informáticas . 99 (10): 35–41. Código Bib : 2014IJCA...99j..35N. doi : 10.5120/17411-7990 . ISSN  0975-8887.
  13. ^ Kline, Robert. "Hashing cerrado". CSC241 Estructuras de datos y algoritmos . Universidad de West Chester . Consultado el 6 de abril de 2022 .
  14. ^ "Hashing abierto o encadenamiento separado". Registro 2 2 .
  15. ^ Askitis, Nikolas; Zobel, Justin (2005). Consensos, M.; Navarro, G. (eds.). "Resolución de colisiones consciente de la caché en tablas hash de cadenas" . Simposio internacional sobre procesamiento de cadenas y recuperación de información. Procesamiento de cadenas y recuperación de información SPIRE 2005 . Apuntes de conferencias sobre informática. vol. 3772. Berlín, Heidelberg: Springer Berlín Heidelberg. págs. 91-102. doi :10.1007/11575832_11. ISBN 978-3-540-29740-6.

enlaces externos