¿Por qué no se puede modificar un certificado digital autofirmado (X.509)?

3

No tengo experiencia en la firma de código, pero estaba pensando en esto: como saben, existen varias herramientas para la generación de certificados digitales autofirmados (como makecert desde Windows u OpenSSL). Ahora, sería genial si un desarrollador de malware pudiera firmar el código de su malware de una CA de confianza. Solo puede firmarlo de dos maneras:

  1. Paga a una CA de confianza para generar un certificado con el cual firmará su malware;
  2. Crea un certificado autofirmado donde, por razones obvias, la autoridad que otorga el certificado es igual al nombre del sujeto

En particular, el segundo punto tiene que ver con mi pregunta: si se conoce el algoritmo para generar un certificado digital , podría escribir mi propio generador de certificados para firmar mi solicitud, donde el Emisor es un nombre de CA bien conocido; luego agrego el certificado recién generado en Trusted Root Certificate Authority (en el sistema operativo Windows). Ahora, cuando alguien abre la aplicación, el certificado se instala en el TRCA y luego se inicia el malware. El malware se firma con el certificado que se acaba de agregar y parece que proviene de una fuente bien conocida debido al nombre de la AC. Sé que, si pudiera ser posible, la CA y todas las cosas de la criptografía no existirían y sería muy sencillo generar un certificado por mi cuenta donde el liberador es una CA. Entonces mi pregunta es: ¿por qué no hay manera de generar un certificado autofirmado donde el Emisor sea diferente del Asunto?

    
pregunta Angelo 09.07.2013 - 14:51
fuente

3 respuestas

3

Sí, puede hacer un certificado autofirmado con el nombre del sujeto que desee. Es fácil de hacer con herramientas gratuitas. Obtener un certificado de firma con un nombre de sujeto falso firmado por un emisor confiable es otra historia: toman la verificación de identidad bastante en serio.

Otra cosa que no es fácil (de hecho se supone que es imposible) es averiguar la clave privada de la CA legítima. Entonces, si estás simulando una CA, lo más probable es que termines formando un nuevo par de claves pública / privada y firmando eso. Cualquier entidad que explícitamente confíe en una clave pública específica NO confiará en su CA falsa (es cierto para el almacén de certificados de MS).

Lo que no puede hacer - fácilmente - es modificar el Almacén de certificados de confianza en una computadora a la que aún no tiene acceso. Esta no es una operación que esté disponible en la mayoría de los navegadores web; requiere al menos acceso de nivel de usuario, aunque algunos sistemas operativos pueden restringirse aún más al acceso de nivel de administrador. En esencia, para extender el reino de la confianza, usted mismo debe ser confiable.

Lo que plantea la pregunta: si ha tenido acceso en este nivel a una máquina, ¿por qué molestarse en firmar el malware? Solo instálalo y ahórrate el dolor de cabeza de hacer firmas de código.

Hay, sin embargo, dos ataques muy interesantes en esta área:

  • Ingeniería social : en muchos casos, cuando un usuario está navegando, el navegador le preguntará cuando se encuentre una CA desconocida: se le pide al usuario que confíe explícitamente en el firmante, y Si el usuario tiene la capacidad, existe la opción de instalar el certificado de CA como una CA de confianza. Entonces ... hay muchas formas de configurar un sitio para aconsejarle al usuario que confíe en usted.

  • Si no está validado correctamente, tiene un problema : el famoso es FLAME , que utilizó un certificado de firma de Microsoft falso. No se validó correctamente y muchos servidores, de hecho, cargaron malware.

No es el ataque más fácil: realmente tienes que conocer un producto y cómo está haciendo la validación de certificados para que algo como esto se lleve a cabo, pero un diseño / implementación incorrecto puede llevar a fallas, por lo que se trata principalmente de cuánto tiempo puede pasar el atacante. encuentra el agujero.

    
respondido por el bethlakshmi 09.07.2013 - 15:51
fuente
1

Esto es por definición. Un certificado autofirmado está firmado por el propio sujeto. Esto significa que un certificado autofirmado se define al tener la misma entrada que el emisor y el asunto.

Cuando solicita un certificado en el que el emisor es diferente al sujeto, por definición no es un certificado autofirmado.

También debe saber que no puede falsificar al emisor ya que el certificado está firmado por el emisor y eso significa que necesita la clave privada del emisor.

    
respondido por el Uwe Plonus 09.07.2013 - 15:18
fuente
0

No hay nada que le impida decir que es alguien que desea en un certificado autofirmado. Lo que lo mantiene seguro es la firma misma. Verisign no se identifica por el texto que está firmado por Verisign. Se identifica como Verisign porque las computadoras de los usuarios vienen con un Certificado de Raíz confiable para Verisign que se usa para verificar la firma que Verisign coloca en los certificados que firman. El texto está ahí para ayudar a buscar el certificado en el cliente para que se pueda verificar la firma.

Entonces, en su caso en el que dice "Yo soy verisign" y lo firma usted mismo, un cliente que intenta validar la firma va y busca su copia confiable del certificado de Verisign (porque así se identifica al firmante). para validar la firma y la validación de la firma falla porque no tiene la clave privada de Verisign.

    
respondido por el AJ Henderson 09.07.2013 - 17:15
fuente

Lea otras preguntas en las etiquetas