¿Cómo protegen las grandes empresas sus claves privadas (firma de código)?

14

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.

    
pregunta SEJPM 07.03.2016 - 13:15
fuente

2 respuestas

2

Muchos procesos se pueden llamar "firma de código", desde la publicación de un archivo tar con un hash pgp firmado y arriba.

Para el tipo de compañía grande que mencionas, en última instancia, los HSM (más de uno, obviamente, en caso de que un centro de datos sea superado por zombies o algo así) están involucrados. La parte difícil no es donde se almacenan las claves reales, sino todo el proceso de Ingeniería de la versión que garantiza que los binarios firmados enviados realmente provienen del código fuente en los repositorios.

    
respondido por el JayEye 23.04.2016 - 20:43
fuente
0

Se diferencia mucho. Algunas formas en que lo he visto son. Teclas suaves en estaciones de trabajo de desarrollo, no tan seguras. Tarjetas inteligentes encerradas en cajas fuertes, seguras pero engorrosas. Servidor central de firma de código, con hsm para protección de claves privadas, bastante seguro y auditable.

El foro CA / Browser, que crea especificaciones a las que deben cumplir todas las CA públicas, ha publicado pautas para las CA que emiten certificados de firma de código. Es un recurso valioso en este contexto IMHO. enlace (No tengo ninguna afiliación con esta especificación, pero es importante para los certificados de firma de código público)

La protección de clave privada de la clave del suscriptor (firma de código) no se detalla, pero se describe en la sección 10.3.2.

    
respondido por el primetomas 13.03.2016 - 19:33
fuente

Lea otras preguntas en las etiquetas