Coincidencia de entropía de contraseña para alfanumérico pero hay caracteres especiales en la contraseña

2

Tengo un problema para descifrar algunos de los fundamentos de las entropías de las contraseñas. A saber: he leído este artículo sobre un tipo que agrupa DKIM de Google ( quizás más notando que las claves son solo 512 bits)

Luego traté de verificar si es realmente 512 o algo más, etc. Finalmente encontré la página de Wikipedia enlace eso me explicaría cómo se calcula la longitud de una clave.

Entonces, usando la tabla que se proporciona allí, calculo la clave de ejemplo: jL/Dw06dEEleG8YQSm0ZmlMVoDzfy2g4cDWA/NceLTocnDRzh3zpfQX91IRnu7qNAaao23+0E0nFT3NnfGuyS7gC7f17vGZQJ2IhsW/xrJ/LQ77ogGf/dbaCLHX016mmSmNXq4oPfsoLwnO8MjnP3kj341mDNf5750WlpNPNrV2e/7ZBImBt8ZxFGMe6fXjQVlzzU2MYE+JOs1bF8KisU1sbi+kzdq8NP8qz+dvdAxbXez/7C57yPXZhkqf8iWO8Hn7y/n2ekcDXE+9bYK5cPiOZY0eUwd1odNRF7FhmuCBIkO6LjF9/373sGIw/6fcJQ7plyhE1ExooM7j9H7FUuw==

344 caracteres de longitud.

Desde la tabla wiki tenemos

Donde,Leslalongituddeunacontraseñaconlacopmlexidaddeseada(entropía)HyNeslacantidaddesímbolosenelconjuntoenelqueestamostrabajando(porejemplo,62encaracteresalfanuméricoso95decaracteresimprimiblesenASCII).

Asíquemipreguntaaquíes:paracomplejidadde2048bits,caracteresalfanuméricosqueobtengo:

L= ~~ 344

donde esta es nuestra longitud de hash, entonces ¿por qué hay / y + y = en la contraseña? ¿Esto se debe a que está codificado con base64 ?

PS

Si intento descodificar esta clave con el conjunto de caracteres base64 y ASCII , obtengo un poco de basura

NI^JmS<h8p5-:4s|}gIOsg|kK{fP'b!oCgu,uJcW~s29HY5{E]A"'mE}xV\ScNVS[3v
?{?=vac~}['\>#cGhtEXf H_?   Ce5(3T

¿Qué estoy haciendo desde aquí? Por lo que sé, ninguna función de hash devuelve caracteres especiales.

    
pregunta Patryk 26.10.2012 - 16:27
fuente

2 respuestas

3

La clave está codificada en Base64.

La codificación

Base64 permite que los datos se almacenen como ASCII, porque la salida de esa codificación solo usa a-z , A-Z , 0-9 , / y . , con = para el relleno. La "basura" que ve es la representación ASCII de los bytes en bruto de la clave.

Por lo tanto, su análisis de entropía está muy cerca de ser correcto, porque el conjunto de caracteres de los datos es 64, no 62. Si hacemos los cálculos, log2(64) es 6, lo que hace que la longitud ideal sea de 2084 bits de entropía 341.333 bytes . Como no puede almacenar 0.333 de un byte, podemos suponer que la longitud ideal de la codificación base64 de cualquier dato con 2084 bits de entropía es de 342 bytes. Ahora note que hay dos caracteres de relleno en el extremo de la cadena base64, lo que significa que la longitud real es en realidad 342 bytes. Como tal, acabamos de probar que la clave tiene una entropía ideal.

    
respondido por el Polynomial 26.10.2012 - 16:46
fuente
2

Codificación Base64 es solo un truco por el cual los bytes arbitrarios se codifican en caracteres que se pueden escribir en todas partes. El "texto" es soportado (por ejemplo, en un registro TXT en el DNS). Tres bytes se convierten en cuatro caracteres. Tiene 344 caracteres, que son 4 * 86, por lo que codifica 3 * 86 bytes, es decir, 258, pero los dos caracteres finales son '=', lo que significa que los dos bytes finales se ignorarán (se agregaron porque la longitud de los datos de origen no era un múltiplo de 3; eso es solo un tipo de relleno).

Entonces, esta es la codificación Base64 de una secuencia de 256 bytes, exactamente. Sucede que la clave DKIM de Google ahora se supone que es una clave RSA de 2048 bits; el componente principal de esa clave es un gran número entero de 2048 bits (es decir, mayor que 2 2047 , menor que 2 2048 ), que, cuando se codifica, tiene un tamaño exactamente 256 bytes Eso es lo que observas, así que está bien.

(Es una clave RSA: un objeto matemático que no debe ser recordado ni escrito por un ser humano. Por lo tanto, no es una contraseña.)

    
respondido por el Thomas Pornin 26.10.2012 - 17:33
fuente

Lea otras preguntas en las etiquetas