He leído un montón sobre cómo se debe usar bcrypt o PBKDF2 como un buen punto intermedio entre la carga de trabajo optimizable y el tiempo aceptable para hacer inviables los ataques de fuerza bruta y colisión.
¿Qué sucede si el sistema no es un sistema informático de uso común, estándar, de uso general?
Trabajo con un sistema integrado, que se ejecuta en una CPU de 200MHZ ARM y más del 90% del tiempo de la CPU se dedica a realizar el trabajo real que está realizando el sistema, continuamente. Todo lo demás es secundario, lento y conservador en términos de memoria, tiempo de CPU y demás.
Actualmente, el acceso al control remoto está protegido por una respuesta de desafío bruta basada en md5; el dispositivo genera una cadena aleatoria y la envía al cliente, el cliente envía md5 (contraseña + cadena). Esto es para detener a los chiquillos y a los aficionados demasiado curiosos, pero soy consciente de que esta seguridad es bastante patética.
Con mucho gusto agregaría algo mejor, excepto que realmente no puedo ahorrar mucho RAM, tiempo de CPU o incluso espacio en disco para soluciones sofisticadas y prefiero un cliente válido para poder ingresar dentro de un tiempo razonable. Además, se utilizará el mismo protocolo para autenticar estos dispositivos que se comunican entre sí, por lo que las restricciones deben aplicarse a todos los sistemas de autentificación.
¿Cómo resolver razonablemente esto? ¿Alguno de los algoritmos y métodos que permitirían una seguridad razonable, asumiendo la restricción de que no debe imponer una penalización de rendimiento de más del 1%?