Soy un desarrollador de software que trabaja con dispositivos de hardware que se implementan en el campo. De vez en cuando, necesitaría actualizar el firmware del hardware (actualizaciones, parches, etc.)
Estoy pensando en ahora, implementar un canal seguro para actualizar este firmware y realizar algunas comprobaciones por parte del hardware antes de aceptar este firmware.
Tengo un conocimiento básico sobre los protocolos de intercambio de claves, cifrados cifrados, etc., y eso es todo. No necesariamente sé cómo aplicarlos en el mundo real, así que esperaba poder obtener ayuda aquí.
La actualización del firmware se realizará a través de un software personalizado que se ejecuta en la PC escrita por mí, a través de TCP / IP.
Mis objetivos principales son
- evita que el firmware se filtre al público ya que contiene nuestra IP.
- evita que el hardware ejecute otros firmwares que no sean el firmware publicado por mí.
Lo que sí sé, en un punto de vista de alto nivel es
- Para cifrar (con una clave secreta compartida predefinida) el firmware en el software de la PC, y enviarlo por otro firmware.
- Una vez que el firmware recibe estos datos encriptados, los descifra con la clave secreta compartida predefinida y realiza la actualización
Mis preguntas son:
- ¿Es seguro definir una clave secreta compartida en este aspecto?
- ¿Existe una solución de "pan y mantequilla" para cumplir mis requisitos?