Pregunta

Me gustaría firmar un dispositivo, y tengo 64 bits para almacenar mi firma en el dispositivo Este dispositivo tiene una dirección MAC y algunos otros detalles (unos 30 bytes) que puedo modificar para crear mi firma.

Si es posible, me gustaría que el método sea unidireccional, para poder verificar que la firma sea válida sin saber cómo crear una firma válida. La mayoría de las claves público-privadas tienen esta característica, pero generan firmas de 48 bytes (solo tengo 8 bytes).

La implementación en Python es una ventaja.

Gracias

EDITAR :  Gracias por el consejo a todos. Parece que no hay una forma segura de hacer esto, solo una forma moderadamente inconveniente para los atacantes. Probablemente usaré un hash criptográfico combinado con una mezcla de bits secreta. Esto será tan seguro como cualquier otro enlace en mi (muy débil) 'seguridad'.

¿Fue útil?

Solución

Las funciones hash y las firmas digitales son muy cosas diferentes.

El tamaño de una firma digital depende de la función hash subyacente y la longitud de la clave. Entonces, en teoría, puede crear una implementación RSA que genere firmas de 64 bits, pero esa sería una firma extremadamente débil.

Para longitudes de clave más pequeñas, es posible que desee ver la criptografía de curva elíptica.

EDITAR: Sí, soy un criptógrafo.

EDIT 2: Sin embargo, si solo necesita una función hash, puede ver elf64 o RIPEMD-64 como sugirió Fernando Miguélez.

EDIT 3: Para hacer los cálculos, necesitaría usar claves de 16 bits en ECC para generar firmas de 64 bits, lo cual es muy débil. Para ECC, cualquier cosa menor a 128 bits puede considerarse débil. Para RSA, esto es 1024 bits.

Otros consejos

Básicamente, lo que necesita es una función de hash criptográfica de 64 bits, como Ripemd- 64 o elfo-64. Luego encriptas el hash con un método criptográfico y obtienes una firma de 64 bits. El único problema es, desde el punto de vista de un no-criptoanalista, que 64 bits ofrece una firma mucho más débil que el hash típico de más de 128 bits. No obstante, aún podría ser adecuado para su aplicación.

Puede usar una función de hashing estándar (MD5 SHA1) y solo usar el primero o el último 30 bytes.
El número de bytes que genera una función de hashing es bastante arbitrario: obviamente es una compensación entre el espacio y la unicidad. No hay nada especial sobre la longitud de la firma que usan.

Editar - lo siento, estaba pensando que MD5 devolvió 32bytes- actaulyl devuelve 16bytes pero usualmente se escribe como dígitos 32hex.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top