Las situaciones principales en las que me he encontrado con applets de Java para fines de autenticación son firmas . Tenga en cuenta que el servidor o el cliente podría ser un atacante; Por lo general, un sitio de banca / bolsa en línea. El usuario puede enviar pedidos de compra y venta, y puede intentar más tarde el incumplimiento de sus pedidos alegando que nunca los envió en primer lugar, y que el banco está tratando de enmarcarlo. En ese momento, el cliente y el banco van a ver a un juez.
En una autenticación de contraseña sobre SSL típica, en el aspecto técnico de las cosas, el banco pierde. De hecho, el banco puede estar razonablemente seguro de que el cliente vino y envió los pedidos; pero no puede probarlo . Para obtener una prueba, se necesita una firma digital : el cliente firma el pedido, con una clave privada que el banco no conoce. Un certificado de cliente para SSL no es suficiente, porque la firma del cliente se encuentra en los elementos de la sesión SSL, no en los datos de la aplicación.
Por lo tanto, algún código personalizado debe ejecutarse en la máquina cliente. Ese código debe ser demostrablemente honesto , ya que el cliente intentará reclamar que cualquier código enviado por el banco podría estar haciendo firmas sin que él lo sepa. Javascript no es suficiente para eso. Pero un applet de Java signed puede hacer el truco: los archivos .jar
se almacenarán en caché en la máquina del cliente, estarán firmados (por lo que el banco no los podrá repudiar), y podrían ser de ingeniería inversa (esto es no es tan difícil para el código de bytes de Java).
Tenga en cuenta que, de manera similar, la firma del applet protege al cliente, ya que cualquier delito grave del propio banco podría ser descubierto de esa manera; la firma hace que los fraudes sean más riesgosos, por lo tanto (probablemente) menos probables.
No estoy afirmando que esto sea lo que hace su ejemplo específico de applet de Java, pero al menos es un escenario en el que los applets de Java tienen beneficios para la seguridad.