No es posible recuperar la clave ... asumiendo que la clave tiene suficiente entropía.
Esto es lo que el atacante puede hacer. Si el atacante tiene una conjetura en la clave, el atacante puede verificar si su conjetura es correcta. Esto significa que si el atacante puede reducir la lista de posibilidades de la clave a una lista lo suficientemente corta, el atacante simplemente puede probar todas las posibilidades en esa lista y ver cuál es la correcta, y el atacante eventualmente descubrirá el valor correcto de la lista. llave. Esta estrategia de ataque se conoce como búsqueda de fuerza bruta o búsqueda de teclas exhaustiva. Resulta que este es esencialmente el único ataque que puede hacer un atacante; con SHA1-HMAC, un atacante no puede hacer nada mejor que esta estrategia de ataque.
Por lo tanto, su trabajo como defensor es asegurarse de que la cantidad de posibilidades para la clave sea lo suficientemente grande como para que la búsqueda de fuerza bruta no tenga éxito. Idealmente, habría al menos 2 posibilidades 128 para la clave, todas igualmente probables. Por ejemplo, puede generar la clave leyendo 128 bits de /dev/urandom
. Si así es como seleccionas la clave, entonces no habrá forma de que un atacante la recupere.
Por otro lado, si haces un trabajo horrible como defensor de elegir la clave, entonces un atacante podría recuperar la clave. Por ejemplo, suponga que decide que su clave será un número aleatorio de 4 dígitos. Bueno, entonces solo hay 10,000 posibilidades para la clave, por lo que un atacante puede probarlas todas e identificar cuál es la correcta. El proceso de prueba y error tomará solo milisegundos, por lo tanto, si así es como seleccionó su clave, las cosas serían totalmente inseguras, y el atacante podría recuperar la clave. Si elige un número aleatorio de 10 dígitos como su clave, entonces hay 10 valores 10 posibles de la clave, que aún no son suficientes: un atacante podría probar todos esos valores posibles en meras horas. Entonces, no hagas eso. O, si usa el número de teléfono o el SSN de alguien como la clave, nuevamente, un atacante podrá recuperar la clave (simplemente probando todas las posibilidades). Entonces, tampoco hagas eso.
En resumen: elija su clave con 128 bits de aleatoriedad de criptografía. Entonces, no será posible que un atacante recupere la clave.