No describe el modelo de ataque (es decir, qué tipo de cosas puede querer lograr un atacante), por lo que tengo que hacer algunas conjeturas aquí ...
Lo primero que debes tener en cuenta es que estás cifrando el "Nombre del sitio", que también envías en texto claro, por lo que debes asumir que cualquier atacante que observe un mensaje en tránsito conoce el "Nombre del sitio". También cifra la hora actual, que es información pública (el atacante también tiene un reloj). El cifrado está destinado a transformar algunos datos de una manera que mantiene las cosas confidenciales, pero aquí la entrada a la función de cifrado es solo datos públicos. Por lo tanto, está utilizando un sistema de cifrado para algo que no sea para lo que fue diseñado, y eso es una preocupación.
Tal como lo describe, lo que parece estar buscando es una forma de autenticar un mensaje cronometrado: desea que la máquina B se asegure de que cualquier software que se ejecute en la máquina A produzca deliberadamente un blob determinado, que incluya la fecha y hora de producción . Esto requiere un Código de autenticación de mensaje , no cifrado. El MAC habitual es HMAC que utiliza una función de hash subyacente (en caso de duda, elija SHA-256); con PHP, vea la función hash_hmac()
. Es posible hacer un MAC a partir de un sistema de encriptación, pero es algo complicado y no hay una razón a priori para creer que mcrypt_encrypt()
hace algo que es un buen MAC; no es que sepa cómo romperlo, pero es mejor usar una herramienta que haya sido específicamente diseñada y estudiada para ser un buen MAC, y eso es HMAC. Así que desea que el mensaje de A contenga el Nombre del sitio, el tiempo de producción del mensaje y un MAC calculado sobre el Nombre del sitio y el tiempo de producción del mensaje, con $key
como clave.
Por supuesto, nada impide que un atacante reproduzca un mensaje existente, lo que puede o no ser un problema para usted, dependiendo de qué hace la máquina B cuando recibe una "solicitud válida". Como nota al margen, depender de la hora actual tiene algunos problemas prácticos, ya que hay muchos usuarios que están muy contentos con el sistema apagado por unos pocos años (trabajo en el campo de firmas digitales y Los certificados X.509, que tienen fechas de validez, y un reloj del sistema sin configurar es la razón número 1 de la falla).