¿Cuál es el algoritmo utilizado para cifrar el archivo wallet.dat?
Puede encontrar una explicación detallada en el LÉAME de la aplicación: https://github.com/bitcoin/bitcoin/blob/6b8a5ab622e5c9386c872036646bf94da983b190/doc/README
En breve:
La respuesta de Pieter cubre los detalles técnicos, así que no repetiré nada de eso. Agregaría que los usuarios deben recordar que el punto más débil en la billetera Bitcoin-core o cualquier sistema de encriptación criptográficamente fuerte es la frase de contraseña. El sistema convierte una frase de contraseña en una clave AES-256 y esa clave derivada de la contraseña se usa para cifrar una clave de billetera maestra generada aleatoriamente. La clave maestra de la billetera no puede ser forzada por fuerza bruta, salvo un PRNG comprometido o defectuoso; sin embargo, los atacantes pueden intentar forzar la frase de contraseña por fuerza bruta.
El cliente agrega intentos de fortalecerse contra este ataque mediante el uso de una sal (número aleatorio) y múltiples rondas de hashing. La sal evita un ataque de cálculo previo, ya que la misma frase de contraseña con diferentes sales producirá claves diferentes. El uso de varias rondas de hash ralentiza los ataques de fuerza bruta porque el atacante también necesitará realizar varias rondas en cada intento de frase de contraseña.
El cliente utiliza el endurecimiento dinámico de claves. Esto significa que la cantidad de rondas varía según la potencia computacional del cliente (para mantener el tiempo de encriptación o desencriptación por debajo de 1 segundo). Cuanta más potencia informática tenga su hardware, más rondas realizará y más difícil será forzar la contraseña. Cuando cambie su frase de contraseña, el cliente ajustará la cantidad de rondas dinámicas en función de la potencia informática de su hardware actual. Al actualizar su contraseña periódicamente, puede asegurarse de que la clave derivada de la contraseña cumpla con la ley de Moore.
El endurecimiento de la clave mediante el uso de sal y el estiramiento de la clave solo puede llegar hasta cierto punto. Si su contraseña es "p@ssw0rd!" o alguna otra contraseña conocida de uso común, seguirá siendo trivial forzar la billetera por fuerza bruta. Para ilustrar por qué, supongamos que el atacante tiene hardware que puede intentar 100 millones de hashes por segundo y su billetera está usando 100,000 rondas de hashing. Esto significa que el hardware de los atacantes (100 millones de hashes) puede intentar 1000 contraseñas por segundo. Entonces, la billetera ralentiza al atacante, pero si la contraseña es débil, no puede ralentizarlo lo suficiente. Hay listas de contraseñas previamente comprometidas/robadas/hackeadas disponibles públicamente con decenas de millones de contraseñas. Sin estirar la clave, un atacante podría intentar todas las contraseñas conocidas posibles en menos de un segundo. El estiramiento de teclas lo ralentiza a unas pocas horas. Por otro lado, digamos que su contraseña era desconocida y lo suficientemente fuerte como para que con un solo hash, en promedio, tomaría un día para la fuerza bruta. Con 100.000 rondas que aumenta el tiempo a siglos.
elpiachu
Muerte e impuestos