Estoy tratando de entender el concepto detrás de la aleatorización de direcciones (ASLR). Estoy leyendo el artículo relacionado de wikipedia que dice:
Security is increased by increasing the search space. Thus,
address space randomization is more effective when more
entropy is present in the random offsets. Entropy is increased
by either raising the amount of virtual memory area space over
which the randomization occurs or reducing the period over which
the randomization occurs. The period is typically implemented as
small as possible, so most systems must increase VMA
space randomization.
Tengo problemas para entender el concepto de entropy
relacionado con la aleatorización. Puedo entender el hecho de que si un atacante tiene que intentar adivinar direcciones desde un espacio de direcciones más grande, entonces la seguridad se mejora. Pero luego, en varios artículos en línea, sigo viendo la frase n bits of entropy
para la aleatorización XYZ. ¿Qué significa n bits of entropy
? También en el artículo de Wikipedia, utiliza variables como entropy bits of stack top (Es)
.
También, ¿por qué significa el artículo cuando dice que entropy is increased ... reducing the period over which the randomization occurs
?
Mi entendimiento:
Estoy pensando que n bits of entropy
significa en efecto cuánto espacio de búsqueda necesita explorar un atacante. Entonces, para una máquina de 32 bits, puede haber 2^32
de direcciones posibles, por lo que lo ideal sería que la entropía fuera de 32 bits. Pero leí que, en casos reales, los sistemas solo pueden ofrecer 16 bits de entropía. Entonces, ¿eso significa que el atacante solo debe explorar 2^16
address?
Si eso es cierto, entonces del artículo de wikipedia (centrándose solo en la pila para hacerlo simple):
N bit de entropía = Es - As = bits de entropía de la parte superior de la pila: bits atacados por intento de entropía de pila
¿Aquí significa la parte 2 ^ 32 que mencioné anteriormente? ¿Y qué hay de As?