Estoy deseando desarrollar un servicio web (cliente / servidor clásico) donde el servidor no es de confianza, por lo que se mantiene (criptográficamente) ignorante acerca del contenido / mensajes reales.
Obviamente, si no confías en el servidor, entonces no deberías confiar en ningún cliente que el servidor te entregue. Por lo tanto, nuestro cliente no tendría "partes móviles", es decir, uno compuesto completamente de archivos estáticos (sin PHP / Ruby / lo que sea, sin base de datos), solo un paquete de JS / HTML / CSS que se distribuirá por separado.
Un cliente como este podría ejecutarse localmente en las computadoras de las personas, o como una página de GitHub, o mediante cualquier servidor web. La idea es que más personas sean capaces de extraer un ZIP en su computadora (o usar un FTP simple) de lo que es probable que alguna vez alojen su propio servidor o configuren una base de datos adecuadamente.
No estoy tratando de protegerme contra un objetivo individual, estoy tratando de protegerme contra un solo punto de ataque centralizado, por lo que cada cliente tendría que comprometerse individualmente para obtener los mensajes para un usuario / grupo en particular.
¿Cuáles serían las implicaciones de seguridad / inconvenientes de una configuración como esta?
Aclaración: el método por el cual se obtiene el ZIP del cliente no es el problema que me interesa. Ya existen tecnologías para eso (firmas de clave pública de hashes, etc.). El tema de "Cómo me aseguro de tener una buena copia del cliente" es completamente equivalente a "¿Cómo me aseguro de tener una buena copia de mi navegador / Cygwin / antivirus"? sobre esto, por ejemplo, también podría aplicarse a la instalación de FireFox.
Lo que me interesa es cualquier problema de seguridad con la configuración, asumiendo que una versión verificada del cliente está disponible.
P.S. - Soy consciente de que JavaScript crypto está mal visto ( artículo de ejemplo aquí ). Sin embargo, las críticas parecen ser:
- Confía en obtener un cliente seguro del servidor no confiable
- El código JavaScript no puede estar seguro de que la máquina virtual que lo ejecuta es segura
El # 1 es exactamente lo que estoy tratando de abordar aquí, y para el # 2: si la máquina virtual con JavaScript de su navegador es dudosa, entonces los sitios web todos no son seguros, al igual que los datos de su tarjeta de crédito .