Estamos trabajando con un proyecto de Raspberry Pi donde la precisión del tiempo es muy importante.
El dinero podría perderse potencialmente si se compromete el reloj.
¿Cómo construirías un módulo de reloj a prueba de manipulaciones?
Estamos trabajando con un proyecto de Raspberry Pi donde la precisión del tiempo es muy importante.
El dinero podría perderse potencialmente si se compromete el reloj.
¿Cómo construirías un módulo de reloj a prueba de manipulaciones?
Mi recomendación sería diseñar un módulo de hardware que genere repetidamente la cantidad de milisegundos (o microsegundos, segundos, o lo que sea) desde que se encendió y la cantidad de veces que se encendió. Si el dispositivo emite repetidamente el tiempo transcurrido desde el inicio y el número de veces que se ha iniciado, y no acepta ninguna entrada de la Raspberry Pi, no habría manera de que nada pudiera alterar el tiempo ya que no habría manera de que el Pi para hacer comunicarse con el dispositivo de ninguna manera. Una alternativa sería que el módulo de hardware se conecte con algún dispositivo separado del Pi y permita que ese dispositivo externo establezca el tiempo. El corte de energía al dispositivo interrumpiría el mantenimiento del tiempo, pero la próxima vez que se encienda el dispositivo se cambiará su cuenta de inicio.
Si uno quiere proteger el dispositivo contra la manipulación física una vez que se haya "iniciado", se podría usar un dispositivo externo para cargar una clave de firma privada en la RAM, y hacer que el dispositivo firme todos sus informes de tiempo. Si después de que la persona que carga la clave privada haya dejado que otra persona intente alterar el dispositivo, sería imposible que alguien que no conoce la clave privada modifique el dispositivo sin perder la clave privada. Tenga en cuenta, sin embargo, que este enfoque agregaría seguridad contra la configuración del tiempo hacia adelante pero no contra la hora hacia atrás, ya que alguien podría capturar la salida de datos de tiempo firmados por el dispositivo y construir un dispositivo falso para reproducir esos datos antiguos. Para la seguridad contra la manipulación física que podría establecer el tiempo hacia adelante o hacia atrás, uno tendría que usar una ruta de comunicación bidireccional y hacer que el dispositivo acepte tokens, combinarlos con sellos de tiempo y firmarlos.
Podría considerar la implementación de Precision Time Protocol (también conocido como IEEE-1588) en su RPi, y utilizar una máquina físicamente segura. como tu reloj maestro.
No sé de antemano si PTP admite firmas cripográficas en sus mensajes para protegerse contra la suplantación de identidad, pero puede agregarlas si no lo hace, o ejecutarla a través de un túnel ssh
.