¿No es esto lo mismo que usar una autoridad de certificación?

3

Tomado de Wikipedia , este es el pretexto de mi pregunta:

  

Una autoridad de certificación (CA) es una organización que almacena pública   Las llaves y sus propietarios y todas las partes en una comunicación confían en este   Organización (y conoce su clave pública). Cuando el navegador web del usuario   recibe la clave pública de www.bank.example también recibe una   firma digital de la clave (con algo más de información, en un   denominado certificado X.509). El navegador ya posee al público.   clave de la CA y, en consecuencia, puede verificar la firma, confíe en la   certificado y la clave pública en él: desde www.bank.example utiliza un   clave pública que certifica la autoridad de certificación, una falsificación   www.bank.example solo puede utilizar la misma clave pública. Desde lo falso   www.bank.example no conoce la clave privada correspondiente,   no se puede crear la firma necesaria para verificar su autenticidad.

Recibo que las autoridades de certificación ayudan a frustrar los ataques de intermediarios, pero no entiendo el punto de gastar dinero para usar el certificado de una autoridad de certificación si los navegadores simplemente codifican las claves públicas de la AC para validarlo fuera de HTTPS comunicaciones que parecen depender en cierta medida del navegador porque ... asumiendo que uso el cifrado RSA con SHA1 y OAEP en mi servidor, ¿no es tan seguro si :

  • Generar un par de claves públicas y privadas secundarias
  • Mantenga la clave secundaria en secreto, escríbala en algún lugar y guárdela dentro de una bóveda
  • Firmar siempre la clave pública principal de mi servidor con la clave privada secundaria
  • Codifique la clave pública secundaria en mis aplicaciones cliente
  • ¿Usar mi clave pública secundaria para verificar si el servidor es el servidor que dicen que está verificando que la clave pública que me emiten está firmada con mi clave privada secundaria?

Estoy pensando en usar este modelo a través de un servidor de socket TCP donde puedo especificar mi propio protocolo y esencialmente ser mi propio "navegador" ...

Esencialmente, ¿esto es todo lo que hay detrás de una CA? Eso es bastante triste ... honestamente, se siente como una estafa para ganar dinero cuando puedes convertirte en tu propio CA. Quiero decir, si la CA está comprometida, los navegadores necesitan parches, las claves se vuelven a emitir, etc. Si la aplicación de mi cliente se ve comprometida, no necesito esperar mientras el agujero está cerrado, puedo expulsar rápidamente una nueva red pública / privada par de claves y envíe la clave pública de mi pseudo-CA a las aplicaciones cliente.

    
pregunta Alexandru 04.07.2014 - 01:58
fuente

2 respuestas

4

Lo que estás describiendo se llama fijación de certificados; Básicamente, ignora todo el proceso de CA y simplemente le da a la aplicación de usuario un certificado de confianza. En realidad, se recomienda ampliamente para aplicaciones que no son de navegador (por ejemplo, aplicaciones móviles) por la razón exacta que mencionó: si confía en una CA y se cae, tiene un problema bastante profundo, mientras que es relativamente fácil solucionarlo rápidamente. Fijación del certificado empujando un nuevo certificado. O mejor aún, puedes tener dos certificados en tu aplicación y rotarlos si uno falla, luego presiona un nuevo certificado en la próxima actualización.

Por supuesto, los fabricantes de navegadores web no pueden acumular y verificar una colección de certificados de todos, por lo que eligen confiar en unos pocos servidores centralizados que luego verifican a todos los demás, y esto es principalmente exitoso para mantener a los usuarios fuera de problemas. Es por eso que el sistema de CA existe.

Debería aclarar que aún confía en un tercero: es solo un tercero diferente que no le cobra por el privilegio. Por ejemplo, si estamos hablando de una aplicación de iOS, la aplicación está firmada por la App Store. Eso es lo que impide que un atacante cambie su certificado codificado por otro certificado.

    
respondido por el Neil Fitzgerald 04.07.2014 - 02:28
fuente
2

Lo que pretende hacer al firmar su clave principal con una clave secundaria es esencialmente usar su propia CA. En teoría, una entidad de certificación es un tercero en el que el participante confía en que verifica la identidad de su interlocutor para verificar esta identidad de manera confiable. En la práctica, en el contexto web, esta decisión sobre cuáles CAs son confiables no la toma el propio usuario final, sino el proveedor del navegador que incluye el certificado raíz de las CA (aunque algunos usuarios toman sus propias decisiones modificando esta lista predeterminada). En su configuración, usted controla qué son los emisores confiables, porque controla el software de sus usuarios finales. Ni siquiera necesita otro protocolo, solo puede usar certificados x509 y configurar que solo su propia CA sea de confianza.

    
respondido por el Drunix 04.07.2014 - 07:45
fuente

Lea otras preguntas en las etiquetas