La creación de las claves se basa en ECDSA:
ECDSA - Wikipedia, la enciclopedia libre
Como verás, aqui se habla de números que cumplan la funcion de curva elíptica, en bitcoin se utilizan claves de 256 bits, pero las claves privadas son un conjunto de letras y numeros, esto es así porque la clave se codifica en base58, para acortar la ristra de numeros y para que sea más amigable a la escritura manual. Basicamente queda un conjunto de 33 y 34 numeros y letras mayusculas y minusculas, esa es la representación en base58.
Por tanto no cualquier conjunto de valores cumple para ser una clave privada válida.
Así, como lo hacen los brainwallets para convertir una frase o palabra en una clave privada válida?
Pues muy sencillo, se utiliza una función de resumen que genere a partir de una entrada un resumen siempre de un tamaño de 256 bits. Se os courre alguna?
Efectivamente, los brainwallets añaden una capa de tras*formación, generan un hash de 256 bits mediante SHA256 y utilizan este hash como clave privada. Asi no hace falta recordar nuestra clave privada de 256 o 33 caracteres y numeros en base 58.
No hace falta decir que esta solución es menos segura, si el atacante sabe que utilizamos una brain wallet, y nuestra contraseña no es muy segura.
Podeis bajaros el software para crear brain wallets de la pagina:
Brainwallet - JavaScript Client-Side Bitcoin Address Generator