¿Es posible usar pares de claves OpenPGP / SSH para autenticarse con una aplicación web de manera segura para reemplazar a los tradicionales?
autenticación basada en contraseña?
Sí. Es bastante posible.
Si es posible, ¿cómo serán los pasos de autenticación? ¿Existe tal vez una buena implementación de esta idea para lenguajes y plataformas populares como Ruby, .NET, Java o Python?
Vea mi respuesta para la siguiente pregunta.
Si no es posible, ¿cuáles son las razones? ¿Existe tal vez una restricción en los navegadores web que acceden al llavero GPG o la clave SSH?
archivo?
El procesamiento de claves SSH y OpenPGP en una aplicación web es posible con bibliotecas de terceros (especialmente bibliotecas C o Java debido a su rica ecología), pero se perdería el aprovechamiento de la solución existente más común: SSL / TLS.
La mejor opción sería que los usuarios generen un certificado de cliente X509 firmado por su servidor para autenticarse, ya que entonces su aplicación web simplemente puede confiar en el contenedor web (Catalina Tomcat, ApacheD, IIS, etc.) para realizar un cifrado sin problemas y autenticación para su aplicación.
Bajo el capó, las claves OpenPGP tienen los mismos exponentes RSA que un certificado X509, por lo que las herramientas como openssl
pueden convertir claves GPG / PGP en certificados * X509 autofirmados; lo mismo para claves SSH .
* OpenPGP web-of-trust califica como 'autofirmado' desde el punto de vista de X509 porque X509v3 no puede tener una cadena de confianza con múltiples raíces, hasta donde he podido determinar.