Una solución
Abordar solo el problema relacionado con el almacenamiento seguro de credenciales. Siempre existe un riesgo, ya que la clave de descifrado todavía tendrá que almacenarse en algún lugar.
Por ejemplo, podría usar OpenSSL para cifrar una cadena de texto y luego tenerlo almacenado en la base de datos en el servidor "inseguro". Tendrías que usar un método de cifrado reversible para esto también.
Tal tarea podría lograrse con un simple script PHP:
openssl_encrypt(PLAINTEXT, ENCRYPTION_METHOD, KEY, OPENSSL_OPTIONS, INITIALIZATION_VECTOR)
Así en contexto, por ejemplo. (Asegúrese de que también agrega 16 bytes de relleno antes del cifrado y elimine 16 bytes de relleno en el descifrado; esto puede eliminarse especificando opciones específicas de OpenSSL; sin embargo, para mayor facilidad, solo puede agregar y eliminar el relleno. Además, esto también puede actuar como cierto grado de ofuscación, en cierta medida, en este ejemplo, se han usado 16 '=' caracteres. Esto también puede depender en gran medida de cómo esté configurada su instalación de OpenSSL; . Llámelo un toque de 'sal' si lo haría ...)
openssl_encrypt("================username:password", "aes-128-cbc", "StRoNGeNcrYptIOnKey", 0, "16ByteIV--Random")
Ejecutar lo anterior produciría algo similar a:
+VUYZEh3FII7HRvJ8Qm8glERsgfsSKG9tE8Zyr2EJLL+9VaF7+41q/MeL8R1++L1
A continuación, puede ejecutar el descifrado posterior:
openssl_decrypt("+VUYZEh3FII7HRvJ8Qm8glERsgfsSKG9tE8Zyr2EJLL+9VaF7+41q/MeL8R1++L1", "aes-128-cbc", "StRoNGeNcrYptIOnKey", 0, "16ByteIV--Random");
Produciendo:
================username:password
Hay una gran variedad de algoritmos de cifrado que se pueden usar. También hay un artículo en PHP.net que muestra cómo se puede lograr esto, y también incluye Linux Ejemplos de CLI, si desea hacer esto también a través de scripts de bash.
TENER EN CUENTA
Aún tendrá que mantener una copia de texto simple de la clave de cifrado en su dispositivo si se trata de un proceso automatizado, que puede no ser ideal, ni sería recomendable. No hay nada que le impida utilizar este enfoque y almacenar los datos cifrados en su servidor externo, sin embargo, tómese un momento para sopesar las implicaciones de seguridad de almacenar una contraseña en texto sin formato en un servidor.
Si te sientes neurótico
Incluso podría cifrar las credenciales una vez con un algoritmo y luego volver a cifrar el texto cifrado con otro algoritmo completamente diferente.
Depende de usted, depende de la seguridad de los datos y de la cantidad de tiempo de CPU / justificación / etc que desee dedicar a esto.
Relato corto
Necesita una solución de cifrado reversible si desea poder recuperar texto sin formato de texto cifrado y viceversa.