¿Una cadena aleatoria personalizada haría lo que quiero?

1

Upfront, por favor pase por alto mi ingenuidad. Tengo una aplicación de servicio que habla con una api web. Solo quiero que el servicio hable con la web api, nada más. Significa que necesito asegurarlo y trato de entender por qué debo usar un certificado de cliente en lugar de una cadena / clave compartida aleatoria lo suficientemente larga.

La forma en que lo pienso es; Vivo en una casa y uso una llave para abrir la puerta de mi casa. Hice una copia de la llave y se la entregué a un miembro de la familia para que también pueda abrir la puerta principal. Ahora, volviendo al escenario digital, si creo una clave / cadena aleatoria, permito solo aquellos que pasan esa clave con solicitudes a mi api web, y obtengo mi aplicación de servicio para incluir esa clave en todas las solicitudes a la api web, ¿verdad? ¿Logro mi objetivo de solo permitir que la aplicación de servicio acceda a mi api web? ¿Por qué necesitaría las complejidades adicionales de crear e instalar un certificado de cliente?

Gracias

    
pregunta Steve 22.04.2017 - 10:13
fuente

1 respuesta

1

Al contrario de darle una clave de hardware a algún miembro de la familia, la cadena aleatoria que usted propone son solo datos y podría copiarse fácilmente sin previo aviso. Y si bien puede sentir que el transporte de la llave de hardware en el bolsillo es suficiente protección, la situación es diferente con datos solo como la clave.

Aún así, si protege su clave de datos bien, podría ser lo suficientemente seguro en su entorno, aunque se desconocen los requisitos de seguridad exactos de este entorno. Proteger la clave significa al menos usar HTTPS para que nadie entre el cliente y el servidor pueda olfatear la clave.

Pero incluso con HTTPS es suficiente que uno de los sistemas que tienen la clave se vea comprometido. En este caso, la clave puede simplemente ser copiada y mal utilizada porque todos los sistemas usan la misma clave. Suponiendo que el uso indebido de esta clave compartida se note en la única opción posible, es revocar esta clave compartida única, lo que significa que se debe distribuir una nueva clave compartida a todos los sistemas. En este caso, ya sería una mejora si usara una clave diferente para cada sistema, ya que el impacto del uso indebido es limitado y solo necesita revocar y actualizar la clave para un solo cliente. Este esquema de tener una clave diferente para cada cliente podría simplificarse utilizando certificados de clientes con su propia autoridad de certificación y simplemente confiando en cualquier certificado emitido por esta autoridad.

Los certificados de cliente también tienen la ventaja de que podrían contar con una copia de seguridad del hardware mediante una tarjeta inteligente o similar. De esta manera, un atacante necesita tener acceso físico al sistema para robar la clave. No es suficiente comprometer el sistema desde el control remoto, pero es posible que se haga un mal uso de la clave existente si no se requiere una interacción local para usarla (es decir, siempre en una tarjeta inteligente sin PIN). E incluso si el atacante logra obtener acceso físico a la clave de hardware, probablemente no podrá copiarla con costos aceptables, por lo que se notará la pérdida de la clave y se podría revocar el acceso a la clave.

    
respondido por el Steffen Ullrich 22.04.2017 - 10:31
fuente

Lea otras preguntas en las etiquetas