¿Cómo compartir una clave de cifrado entre diferentes aplicaciones PHP?

6

Estoy trabajando con la biblioteca de cifrado de php para proporcionar integración entre dos aplicaciones diferentes. Por un lado, tengo una aplicación corporativa que contiene todos los datos de los usuarios. Esta aplicación servirá algunos datos confidenciales a través de una API.

En el otro lado, la otra aplicación solicitará algunos datos, consumiendo la API. En este punto, la API está utilizando cifrado autenticado para mantener los datos seguros.

La pregunta con la biblioteca de cifrado de PHP es: la clave de cifrado es una clave aleatoria. Necesito mantener esa clave porque la otra aplicación debe descifrar los datos.

Ejemplo:

Para cifrar:

$key = Crypto::createNewRandomKey();

$message = "mymessage";

$ciphertext = Crypto::encrypt($message, $key);

Para descifrar:

$decrypted = Crypto::decrypt($ciphertext, $key);

¿Cuál es la mejor manera de compartir la clave o mantener la misma clave entre diferentes aplicaciones?

    
pregunta Hugo Dias 10.05.2016 - 21:33
fuente

1 respuesta

4

Como se recomienda @schroeder, debe compartir la clave entre las aplicaciones / servidores utilizando la infraestructura de clave pública (PKI). No se recomienda que implementes esto tú mismo.

Hay un gran artículo llamado Eligiendo el derecho Biblioteca de criptografía para su proyecto PHP . Vale la pena echarle un vistazo. Recomienda las siguientes bibliotecas:

  • Halite
  • Libsodium (según lo recomendado por @NSSec)
  • cifrado PHP
  • Phpseclib (RSA! Only)

Otros a considerar:

  • EasyRSA (¡No PKCS # 1v1.5!)
  • phpseclib

También, dado que hay aplicaciones corporativas involucradas, tenga una estrategia para la administración de claves en los servidores respectivos (es decir, procesos y políticas de administración de claves, uso de un Módulo de seguridad de hardware (HSM), etc.). También puede consultar Guía para asegurar la clave pública Infraestructura .

¡Buena suerte con tu proyecto!

    
respondido por el eTo-san 17.05.2016 - 19:32
fuente

Lea otras preguntas en las etiquetas