¿Dónde debo almacenar una clave privada para una aplicación web?

3

Puede ser un duplicado de " ¿Cómo almacenar una clave RSA privada para una aplicación? "

Así que me pidieron que hiciera una interfaz web en PHP que permita a los visitantes verificar la firma de un archivo utilizando SHA 256 con cifrado RSA y, en un área restringida, los usuarios autorizados pueden crear una firma para los archivos dados. La aplicación se ejecutará sin duda en servicios de alojamiento web compartidos, en Internet (no en una red local). Sé que no hay una forma 100% confiable de almacenar claves privadas, pero ¿cuáles son las principales opciones que tengo para almacenar esa clave privada de la manera más segura?

Nota al margen: Sé que la idea de crear una interfaz web para tal tarea no es segura, y sería mucho más seguro publicar solo la clave pública y permitir que los usuarios finales verifiquen la firma. pero eso es lo que mi cliente quiere absolutamente, así que ...

    
pregunta palra 23.11.2016 - 20:08
fuente

1 respuesta

4

Entonces, salgamos del camino primero, no tiene sentido cifrar la clave. Debido a que para descifrarlo, necesitarás ESA clave, que luego necesitarás almacenar. Se convierte en un problema del huevo y la gallina. En última instancia, necesita algo almacenado en texto claro EN ALGUNA PARTE.

Entonces, ¿dónde? La respuesta tradicional está en un archivo en el sistema de archivos con solo acceso de lectura para el usuario con el que se ejecuta la aplicación. A continuación, se asegura de que solo esta aplicación se ejecute como ese usuario y que sea lo más seguro posible.

Sin embargo, hay otras opciones. Puede utilizar un módulo de seguridad de hardware (HSM) para almacenar la clave. Tienen algunas opciones más sofisticadas para acceder a la clave. Esto es costoso, tanto si se hospeda como si lo hace externamente (y no todos los proveedores de hosting ofrecen HSM dedicados). También puede alojar un sistema de administración de claves, como Hashiko's Vault o KeyWhiz (preferiblemente en otro sistema, solo accesible para este sistema). Estos están diseñados para resolver este problema y también tienen algunas opciones más sofisticadas para acceder a la clave.

Probablemente querrás estar en un host dedicado, sin embargo, los hosts compartidos agregan preocupaciones de seguridad adicionales y capas que harán que no estés seguro de quién tiene acceso a qué.

    
respondido por el crovers 23.11.2016 - 20:52
fuente

Lea otras preguntas en las etiquetas