¿Es posible la autenticación del navegador tipo clave RSA?

2

Veo que la autenticación basada en contraseña no está de acuerdo hoy en día y que Internet se está moviendo hacia la autenticación basada en claves RSA.

A raíz de ese hecho, me pregunto si habría un beneficio real en generalizar su uso para sitios web regulares. Veo el uso de la siguiente manera, y es exactamente el mismo que normalmente se esperaría:

  1. Al registrarse en un recurso web, el navegador del usuario genera el par público-privado, así como el alcance que está dispuesto a dar a esta clave (no a root/admin de forma predeterminada)
  2. El navegador encripta la clave privada, y el Usuario comunica la clave pública al recurso web

Para todas las demás solicitudes, el usuario inicia sesión automáticamente gracias a la clave privada almacenada en el navegador. Tenga en cuenta que el usuario podría (también debería) iniciar sesión (registrarse) con un perfil federado, y solo este método proporcionaría el alcance similar a root/admin . Este usuario root podrá revocar pares de claves si están comprometidos.

¿No resolvería el problema de 'N contraseñas para N sitios web' al que todos se enfrentan, ya que solo existe una contraseña de administrador (que no se conoce por el recurso web)?

Sí, tengo ganas de reinventar la rueda, y si esto es tan obvio, ¿por qué nadie parece usarla?

    
pregunta dgan 16.08.2018 - 15:12
fuente

2 respuestas

3

Tu intuición es correcta! Hay dos protocolos que conozco que utilizan criptografía de clave pública como forma de iniciar sesión en sitios web. (tampoco son en realidad SSH)

certificados de cliente TLS

Todos estamos familiarizados con TLS (el ícono del candado verde en la barra del navegador). Normalmente tiene dos propósitos:

  1. Cifre el tráfico entre usted y el servidor.
  2. Demuestre que el servidor es quien dicen ser.

Al hacer clic en el candado verde, también puede ver el certificado del servidor para el sitio al que está conectado actualmente.

Resulta que TLS también admite un modo llamado "autenticación mutua" en el que, además del servidor que proporciona un certificado para demostrar su identidad, usted (el usuario) también lo hace.

Parahaceresto,necesitaobteneruncertificadopersonal(generalmenteemitidoporelsitiowebencuestión)eimportartantoelcertificadocomolaclaveprivadacorrespondienteasunavegador(generalmenteatravésdeunarchivo.p12).Cuandoseconecteaunsitiolorequiera,veráunaventanaemergentecomoesta:

LlaveUSBFIDOUniversal2ndFactor(U2F)(pienseenYubikey)

EstaeslatecnologíaenlaqueconectasundispositivocriptográficoUSBatucomputadorayunsitiowebsecomunicaconeldispositivoparaautenticarte.Estotieneventajasydesventajasencomparaciónconloscertificadosdecliente,peroungranprofesionalesquelaclaveprivadasealmacenaenhardwarecriptográfico,porloqueinclusoalguienconaccesodeadministradorasucomputadoraportátilnopuedehacerunacopiadesuclave.

De wikipedia :

  

Universal 2nd Factor (U2F) es un estándar de autenticación abierto que fortalece y simplifica la autenticación de dos factores (2FA) utilizando dispositivos USB o NFC especializados basados en tecnología de seguridad similar a la de las tarjetas inteligentes.

     

Las claves de seguridad U2F son compatibles con Google Chrome desde la versión 38 y Opera desde la versión 40. Las claves de seguridad U2F se pueden usar como un método adicional de verificación en dos pasos en servicios en línea compatibles con el protocolo U2F, como Google, Dropbox, GitHub , GitLab, Bitbucket, Nextcloud, Facebook y otros.

    
respondido por el Mike Ounsworth 16.08.2018 - 15:51
fuente
1

¿Existe algo cercano a las claves públicas ssh para HTTP? Sí, se denomina certificados de cliente y se utiliza cuando realmente se requiere una autenticación segura. En los países europeos, un certificado de tarjeta inteligente debe otorgar el mismo valor legal que un documento firmado, siempre que se pueda establecer que la clave privada siempre ha estado bajo el control exclusivo de su propietario y que el certificado se entregó a la persona adecuada

¿Por qué no se usa ampliamente? Cerca de un problema de huevo y gallina. Como pocos clientes tienen certificados, no sirve de nada implementarlo en servidores de sitio y aplicaciones web. Y como pocos servidores lo aceptan, no sirve de nada que un cliente compre un certificado. Y la implementación no es tan trivial, porque la autenticación se produce en los primeros pasos del protocolo SSL, antes de que alguna solicitud haya llegado al servidor real, sin hablar de las posibles pesadillas para los sistemas proxy y CDN.

Las cosas podrían cambiar fácilmente si el gobierno de EE. UU. o los países europeos decidieran que cada ciudadano debería tener un certificado en su tarjeta de identificación. Entonces el mercado para la implementación del lado del servidor crecería dramáticamente, pero hasta que ...

Además, la autenticación 2FA es mucho más simple que los certificados (desde la perspectiva del servidor) y generalmente se considera lo suficientemente segura para las necesidades de seguridad estándar. Así que todavía hay una razón para no adoptar ampliamente los certificados de clientes.

    
respondido por el Serge Ballesta 16.08.2018 - 15:56
fuente

Lea otras preguntas en las etiquetas