Complejidad
La “complejidad” en el mecanismo de prueba de trabajo se refiere al nivel de esfuerzo computacional requerido por un cliente para resolver el desafío presentado por el servidor. La complejidad se controla ajustando el valor máximo del número aleatorio generado por el servidor durante la creación del desafío.
El ajuste de la complejidad sirve como medida para equilibrar la seguridad contra el abuso automatizado/spam y la experiencia del usuario. Al controlar el rango del número generado aleatoriamente, el sistema ajusta la dificultad de la tarea computacional requerida por el cliente.
Adjust the number of iterations and test the computational complexity on your device.
Ajuste de complejidad
La complejidad puede ajustarse modificando los valores mínimo y máximo del número secreto generado aleatoriamente en el servidor. Un valor máximo más bajo crea un desafío menos complejo, que requiere menos iteraciones computacionales para que el cliente encuentre una solución coincidente. Por el contrario, un valor máximo más alto aumenta la complejidad, exigiendo más recursos computacionales y tiempo por parte del cliente.
Benchmarks de Rendimiento
Estos benchmarks ilustran el tiempo requerido para que diferentes dispositivos resuelvan un desafío ALTCHA. La tabla a continuación muestra el número de cálculos (operaciones) que cada dispositivo puede realizar por segundo y el tiempo correspondiente para resolver un desafío con una complejidad de 100,000. Un mayor número de operaciones por segundo indica un mejor rendimiento.
Dispositivo | Rendimiento | Tiempo para Resolver |
---|---|---|
MacBook Pro M3-Pro (2023) | 3 ops/s | 0,33 seg |
iPhone 12 mini (2020) | 1,2 ops/s | 0,83 seg |
AWS EC2 (c6a.xlarge) | 1 ops/s | 1 seg |
Samsung Galaxy A14 (2023) | 0,4 ops/s | 2,5 seg |
AWS Lambda (1GB) | 0,12 ops/s | 8 seg |
Consideraciones
-
Impacto en el rendimiento
Una mayor complejidad puede aumentar significativamente la carga computacional en los dispositivos de los clientes, lo que puede afectar la experiencia del usuario.
-
Dispositivos de gama baja frente a dispositivos de alta gama
Lo que tarda menos de un segundo en un iPhone nuevo, podría tardar 30 segundos en un teléfono Android de gama baja. Realiza pruebas con dispositivos físicos típicos de tus usuarios.
-
Compensaciones de seguridad
Una menor complejidad podría reducir la seguridad contra ataques automatizados, pero puede mejorar la accesibilidad para los usuarios.
Prácticas recomendadas
-
Complejidad dinámica
Implementa un sistema dinámico que adapte la complejidad en función de la carga del servidor o del comportamiento del usuario, garantizando un equilibrio entre seguridad y usabilidad.
-
Pruebas y optimización
Realiza pruebas exhaustivas para determinar un nivel de complejidad óptimo que prevenga el abuso sin sobrecargar excesivamente a los usuarios legítimos.