X.509 Firmas digitales / flujo de trabajo de cifrado / recomendaciones de la biblioteca?

Mi caso de uso particular es que tengo que acceder a los certificados digitales almacenados en el cliente y usarlos para realizar tareas de firma, verificación, cifrado y descifrado en el lado del cliente y del lado del servidor. Para la última parte, hay muchas muchas soluciones. El punto clave es la capacidad de acceder a los certificados almacenados en el cliente.

Tenga en cuenta que estoy diciendo "certificados almacenados en el cliente" que es deliberadamente vago. No quiero restringir los pensamientos al almacén del sistema, el almacén del usuario, el almacén del navegador, el token criptográfico, el almacén de claves Java, donde sea.

Con los años, he utilizado las siguientes formas. Junto a cada uno de ellos doy los pros y los contras.

CAPICOM / ActiveX. Si bien este fue el más fácil de trabajar, restringe al usuario a IE en Windows. Lo que es peor, ahora está en desuso y funciona solo en 32 bits.Applet de java Esto es multiplataforma y navegador cruzado, pero Java en el navegador no es tan común como a uno le gustaría que fuera y se está desvaneciendo rápidamente (aparentemente Apple lo eliminó recientemente). Por lo tanto, existe la molestia adicional de que el usuario descargue e instale el JRE. Además, los usuarios tienen que realizar la tarea relativamente técnica de configurar las extensiones de criptografía de fuerza ilimitada para que el firmante funcione.

Cosas de las que he oído / pensado pero no he avanzado mucho

La mayoría de las soluciones javascript. Implementan el algoritmo RSA pero no tienen una forma de acceder a los certificados digitales en el almacén de certificados del cliente. La mayoría de ellos generan un nuevo par de claves.Flash / Flex. Flash / flex parecen ser la tecnología más omnipresente del lado del cliente. Ya pueden acceder al hardware del cliente como cámaras y micrófonos. Sería encantador si pudieran acceder a las tiendas de certificados.Alternativas a CAPICOM como se indica en el sitio web de microsoft. Prescribe alternativas a CAPICOM que son principalmente hacer cosas utilizando el marco .NET. Esto es genial para clientes de escritorio. Pero para los "scripts" dicen muy claramente en una "nota importante" que debes escribir tus propios controles ActiveX. Lo que nos lleva de vuelta a la plaza uno.

Lo que estoy buscando es una forma de superar / solucionar el problema principal de obtener acceso a los almacenes de certificados en el cliente. No estoy buscando una discusión sobre el algoritmo RSA o por qué PKI es estúpida o alguna alternativa al cifrado asimétrico o al uso de arquitecturas distintas de las aplicaciones web, o en Apple.

Respuestas a la pregunta(3)

Su respuesta a la pregunta