Hace un tiempo leí la respuesta canónica de nuestra ursine overlord en relación con las CA y sus claves privadas (raíz) .
Más recientemente, me topé con la pregunta sobre cómo administrar claves de firma de código para iOS y Android.
Básicamente, como seguimiento, tuve que preguntarme:
¿Cómo las grandes empresas (como Apple, Microsoft, Google, Intel, ...) protegen sus valiosas claves de firma de código?
En particular, esta pregunta se puede dividir en: ¿Cómo aseguran estas compañías que solo se firmen las construcciones válidas (es decir, la administración de acceso) y qué hacen físicamente para proteger las claves privadas? En particular, la comparación de las medidas de seguridad que utilizan las entidades emisoras de certificados raíz y el uso de las empresas puede ser interesante.
Esta pregunta también está motivada por mi anterior " ¿Cómo protegen las compañías grandes su código fuente? ", donde Tengo interesantes , respuestas inesperadas como " simplemente usan repositorios privados de GitHub ". En particular, se puede sospechar que la máquina de compilación solo tiene una clave de software que firma todas las compilaciones que produce y espero aclarar esto (entre el aprendizaje de las protecciones reales).
En cuanto a "por qué", proteger las claves es importante:
- Si las claves de Apple se perdieran (¿en silencio?) cualquiera podría firmar compilaciones o aplicaciones de iOS o Mac OS X, lo que socavaría una gran parte de las medidas de seguridad de Apple.
- Si las claves de Microsoft se filtraran, el mismo fiasco de la aplicación para Apple se mantendría y, además, los atacantes podrían estar en posición de enviar actualizaciones maliciosas de Windows a las máquinas específicas.
- Si las claves de Intel se filtraran, sería posible firmar las actualizaciones del código del procesador Intel y firmar un software SGX arbitrario que permita la implementación profunda de malware en un sistema objetivo que es imposible deshacerse sin cambiar el hardware.
- Si se filtraran las claves de Google, se podrían falsificar arbitrariamente aplicaciones de Google (posiblemente el escenario de ataque más débil de lo que se da)
Como de costumbre, no quiero respuestas que digan "es ilegal robar / abusar de tales claves", ya que la ley puede no ser una forma efectiva de detener a las agencias que pueden simplemente declarar su violación de la ley como "máximo secreto" o dejar de hacerlo. Criminales que de todos modos no se preocupan por la ley.
Además, quiero aclarar rápidamente por qué descarto la "revocación" como solución: a) Esto no siempre es posible, especialmente para los fabricantes de hardware, si la clave pública está realmente codificada (por razones de seguridad) en el hardware b) El daño a la imagen de la empresa sería gigantesco si tuvieran que revocar una clave. Por lo tanto, aunque la revocación puede funcionar en algunas circunstancias (por ejemplo, para los desarrolladores de aplicaciones pequeñas), no es una buena opción para las empresas más grandes.