En mi configuración actual, los clientes están agrupados con la clave pública del servidor. El cliente encripta un nonce y lo envía al servidor que usa su propio nonce y el nonce recibido del cliente para configurar una clave de cifrado simétrica y envía el nonce encriptado + una respuesta encriptada.
Desafortunadamente, esto hace que el servidor esté abierto a ataques DOS deliberados y accidentales.
Como ejemplo de lo último, digamos que un servidor se desactiva y todos los clientes intentan volver a conectarse. Eso significa que 100-1000 (no malintencionados) se conectan / s de diferentes ips.
¿Cuáles son mis opciones además de reducir el tamaño de la clave RSA?
Editar
¿Qué pasa con cualquiera de estas estrategias:
-
Mueva la autenticación a un servidor separado, que distribuye de forma segura las claves de cifrado con fecha de caducidad. Al iniciar sesión en un servidor, el cliente presenta un identificador que el servidor puede usar para recuperar la clave de cifrado que debe usar.
-
Coloque el descifrado RSA en una cola ilimitada con una prioridad de subproceso suficientemente baja. Cuando un cliente inicia sesión, se conectará automáticamente (si hay recursos suficientes) o se pondrá en una cola de inicio de sesión. Hasta que se programe el descifrado, el cliente obtendrá información actualizada sobre qué tan cerca están de completar su inicio de sesión.
-
Coloque el descifrado RSA en una cola en cola limitada con una prioridad de subproceso suficientemente baja. Si la cola está llena, entonces se rechaza la conexión con un mensaje que indica que se alcanzó el límite de la cola de inicio de sesión y que el cliente puede volver a intentarlo más tarde.