secure rainbow online hashing example cryptographic chart security hash cryptography

security - rainbow - ¿Cómo crear un hash/key de tiempo limitado?



sha-256 algorithm (1)

Estoy intentando crear una clave de tiempo limitado para usar en una de mis aplicaciones. La clave se usa para desbloquear ciertos bits de funcionalidad en una aplicación.

Mi pensamiento hasta ahora es

para generar: hash criptográfico los diversos bits de información que necesito + fecha de generación de la clave

para validar: hash criptográfico los diversos bits de información que necesito + fecha ahora

si toda la información es la misma y la fecha es la misma, obtengo el mismo valor

Pero,

esto significa que la clave solo funcionará en una fecha determinada. Lo que quiero es una clave que sea válida para las próximas 24 horas (o que extienda esto, algunos días / semana / mes).

Puedo extender el período, pero siempre existe la posibilidad de generar la clave justo antes de que expire el período, como el último día del mes para una clave de un mes.

En primer lugar, ¿es esta una forma aceptable de proceder? Si es así, ¿cómo lo hago?

Soy consciente de que "devanar" el reloj de vuelta vencerá al sistema, pero todavía estoy interesado en obtener algunas opiniones

He leído Cómo puedo generar una clave o contraseña de tiempo limitado sin almacenar datos, que es un problema similar.


Puede hacer que la fecha de caducidad forme parte del token y autenticar todos los datos con un MAC como HMAC:

token = data ":" expiration ":" HMAC(key, data ":" expiration)

Para validar el token, todo lo que necesita es comparar el dato de caducidad especificado y regenerar el MAC para los datos proporcionados con la clave secreta.

Si alguno de los parámetros proporcionados fue manipulado, el MAC será diferente ya que uno necesita la clave secreta para generar un MAC auténtico.