Medir claves, resúmenes y entropía en la unidad que usa la criptografía
La criptografía se enuncia en bits y se guarda en bytes. Una norma bautiza el algoritmo con su parámetro de seguridad —AES-256, SHA-512, Ed25519— mientras que el material de clave que reposa en tu gestor de secretos, en tu búfer o en una ranura del HSM se mide en bytes. Equivocarse en esa traducción no es un detalle estético: pasar una contraseña de 32 caracteres donde se esperaba una clave aleatoria de 32 bytes destruye en silencio casi toda la fuerza por la que se eligió el algoritmo.
bits = bytes × 8. Así, un secreto de 32 bytes son 32 × 8 = 256 bits: exactamente la clave que espera AES-256 y exactamente la longitud del resumen que emite SHA-256.Los bits son la unidad de la fuerza de seguridad, porque la fuerza depende de cuántos valores distintos tendría que recorrer un atacante. Los bytes son la unidad del almacenamiento y el transporte. Casi toda revisión de gestión de claves acaba saltando de una a otra, normalmente mientras se lee la firma de una biblioteca que pone keyLen sin decir en qué unidad.
Claves simétricas
Claves asimétricas
Entropía de un secreto
Comprobar la longitud de una clave antes de publicarla
Mide el material en bruto, no su codificación
Toma la longitud en bytes del secreto ya descodificado. Base64 lo infla en torno a un tercio y el hexadecimal lo duplica, así que una cadena Base64 de 44 caracteres y una hexadecimal de 64 describen los mismos 32 bytes en bruto.
Escríbelo en el campo de bytes
La cifra en bits aparece mientras escribes, así que puedes recorrer 16, 24 y 32 bytes y ver cómo caen las fronteras de AES-128, AES-192 y AES-256. Vale tanto la coma como el punto para el decimal, y los espacios se ignoran.
Copia el valor a tu especificación o a la incidencia
Cada campo lleva su propio botón de copiar y devuelve el número pelado, sin unidad: cómodo cuando la cifra va a un modelo de amenazas, a un manual de rotación de claves o a una constante de configuración.
Invierte la operación para dimensionar un búfer
Intercambia las unidades cuando una norma te da bits y necesitas la reserva en bytes: un resumen de 384 bits que se convierte en un arreglo de 48 bytes, por ejemplo. Los menús con buscador también llegan a los kilobytes si estás midiendo un paquete de certificados en vez de una sola clave.
Longitudes de clave y de resumen: algoritmo, bits y bytes lado a lado
Esta es la consulta que casi todo el mundo busca de verdad cuando una biblioteca rechaza su material de clave. Fíjate en cómo la fila de RSA rompe el patrón de las demás: su longitud en bytes es grande y su fuerza de seguridad no.
| Algoritmo o valor | Longitud declarada (bits) | Almacenamiento en bruto (bytes) | Caracteres hexadecimales |
|---|---|---|---|
| Clave AES-128 | 128 | 16 B | 32 |
| Clave AES-256 | 256 | 32 B | 64 |
| Resumen SHA-1 | 160 | 20 B | 40 |
| Resumen SHA-256 | 256 | 32 B | 64 |
| Resumen SHA-512 | 512 | 64 B | 128 |
| UUID (versión 4) | 128 | 16 B | 32 |
| Semilla privada Ed25519 | 256 | 32 B | 64 |
| Módulo RSA-2048 | 2 048 | 256 B | 512 |
Un UUID de versión 4 es la mejor ilustración de longitud frente a fuerza: ocupa 128 bits, pero seis de ellos son marcadores fijos de versión y variante, con lo que quedan 122 bits de azar real.
Ambos campos editables durante una revisión
Introduce una cifra en cualquiera de los lados y el otro se actualiza de inmediato, así que una revisión de diseño puede ir de «el RFC dice 384 bits» a «nuestro búfer es de 48 bytes» sin volver a teclear nada.
Los valores grandes siguen siendo legibles
Los millares se separan con un espacio y las cifras muy grandes pasan a notación científica, lo que ayuda cuando estás expresando un almacén de claves entero y no una sola clave.
Sirve más allá de un único secreto
Los menús de unidades con buscador de ambos lados cubren también kilobytes y megabytes, así que la misma página vale para un paquete de claves, una lista de revocación o un almacén exportado.
Los valores nunca salen del navegador
Toda la aritmética ocurre localmente una vez cargada la página, así que las longitudes tomadas de un inventario de claves real no se envían a ningún servidor.
Preguntas sobre el tamaño de las claves
¿Por qué una clave AES-256 ocupa solo 32 bytes?
El 256 del nombre es la longitud de la clave en bits, y 256 ÷ 8 = 32 bytes. La clave es material aleatorio puro, sin cabecera, suma de verificación ni codificación, así que no se desperdicia nada. Si una biblioteca pide 32 bytes y le entregas una contraseña de 32 caracteres, la longitud coincide pero lo impredecible no: para reparar eso existen las funciones de derivación de clave con sal y muchas iteraciones.
Una clave RSA-2048 tiene 2 048 bits, ¿por qué el archivo pesa varios kilobytes?
La cifra de 2 048 bits describe solo el módulo, que son 256 bytes. Un archivo de clave privada guarda además los dos primos, el exponente privado y los parámetros del TRC, envueltos en una estructura ASN.1 y luego blindados en Base64 para el formato PEM: cada paso añade bytes. Un archivo de clave pública es mucho más pequeño porque solo lleva el módulo y un exponente muy corto.
¿Cuántos bits de entropía tiene realmente una frase de contraseña?
La entropía depende de cómo se generó la frase, no de lo larga que sea. Palabras extraídas de forma uniforme de una lista de 7 776 aportan unos 12,9 bits cada una, así que una frase de cinco palabras vale unos 64 bits por mucho que ocupe treinta y tantos bytes en disco. Una frase de la misma longitud en bytes inventada por una persona vale muchísimo menos, porque las elecciones nunca fueron uniformes.
¿Un UUID de 128 bits basta como azar para un testigo de sesión?
Un UUID de versión 4 son 16 bytes, de los cuales cuatro bits codifican la versión y dos la variante, con lo que quedan 122 bits aleatorios. Es de sobra frente a un ataque por adivinación, pero solo si salió de un generador criptográficamente seguro, cosa que muchas implementaciones de UUID no prometen. Los UUID de versión 1 son aún peores, porque incrustan una marca de tiempo y una dirección MAC. Para testigos, genera directamente 32 bytes aleatorios.
¿Por qué las salidas de las funciones hash siempre se describen en bits y no en bytes?
Porque el número de bits es lo que determina la resistencia a colisiones: un resumen de n bits da en torno a n / 2 bits de resistencia según la cota del cumpleaños, de modo que SHA-256 ofrece unos 128 bits frente a colisiones. Llamarlo «un hash de 32 bytes» escondería esa relación. El mismo razonamiento vale cuando truncas un resumen para obtener una huella corta: cuánto conviene conservar se discute en bits.
Aún no hay comentarios. ¡Sé el primero en comentar!