Bitcoin Forum

Local => Español (Spanish) => Topic started by: Narydu on February 07, 2013, 05:24:39 AM



Title: BrainWallet AGAIN
Post by: Narydu on February 07, 2013, 05:24:39 AM
Chicos, como estoy convencido que la brainwallet es la mejor de todas las formas de guardar el dinero a futuro, me pregunto si alguno me puede transmitir o derivar hacia algún thread o conclusión sobre que al hacerla en brainwallet.org no me robarán la clave...


Title: Re: BrainWallet AGAIN
Post by: tbcoin on February 07, 2013, 07:59:38 AM
Creo que la forma mas segura es usar addrgen

https://github.com/weex/addrgen


Solo tienes que descomentar y modificar la frase de la linea 165

https://github.com/weex/addrgen/blob/master/addrgen.py#L165


Title: Re: BrainWallet AGAIN
Post by: dserrano5 on February 07, 2013, 08:05:14 AM
Y comentar la 157 para evitar confusiones ;).


Title: Re: BrainWallet AGAIN
Post by: tbcoin on February 07, 2013, 08:07:56 AM
Y comentar la 157 para evitar confusiones ;).
+1


Title: Re: BrainWallet AGAIN
Post by: nikkus on February 07, 2013, 08:32:24 AM
Chicos, como estoy convencido que la brainwallet es la mejor de todas las formas de guardar el dinero a futuro, me pregunto si alguno me puede transmitir o derivar hacia algún thread o conclusión sobre que al hacerla en brainwallet.org no me robarán la clave...
+1 Totalmente de acuerdo con tu optimismo sobre las brainwallets!!

Juntamente con un colega, haciendo un brainstorm sobre bitcoin, nos salió esa idea:

Imaginate que hay un dinero, una cuantía en btc claro, y que tiene que ser usado por 5 personas, pero resulta q lo tienen que recibir en una cuenta de bitcoin, pero claro, ninguno se fía del otro! Solución? Fácil, crean un brainwallet, cada uno piensa en una contraseña, y sin que los demas vean lo que se teclea, cada uno pone la contraseña justo despues del otro, y siempre en el mismo orden. De ese modo, y con el brain wallet, se va a generar una cartera para recibir ese dinero y los 5 tendrán un trozo de la clave, es decir, no se podrá hacer NADA sin que los 5 esten de acuerdo! ;)


Title: Re: BrainWallet AGAIN
Post by: tbcoin on February 07, 2013, 08:56:35 AM
Chicos, como estoy convencido que la brainwallet es la mejor de todas las formas de guardar el dinero a futuro, me pregunto si alguno me puede transmitir o derivar hacia algún thread o conclusión sobre que al hacerla en brainwallet.org no me robarán la clave...
+1 Totalmente de acuerdo con tu optimismo sobre las brainwallets!!

Juntamente con un colega, haciendo un brainstorm sobre bitcoin, nos salió esa idea:

Imaginate que hay un dinero, una cuantía en btc claro, y que tiene que ser usado por 5 personas, pero resulta q lo tienen que recibir en una cuenta de bitcoin, pero claro, ninguno se fía del otro! Solución? Fácil, crean un brainwallet, cada uno piensa en una contraseña, y sin que los demas vean lo que se teclea, cada uno pone la contraseña justo despues del otro, y siempre en el mismo orden. De ese modo, y con el brain wallet, se va a generar una cartera para recibir ese dinero y los 5 tendrán un trozo de la clave, es decir, no se podrá hacer NADA sin que los 5 esten de acuerdo! ;)

Me gusta la idea :), siempre y cuando todos tengan buena memoria...
Volviendo a brainwallet.org (http://brainwallet.org), esto seria facil de hacer cambiando a type="password" el textbox de la frase.

En cuanto a la seguridad, si resulta engorroso usar addrgen, siempre se puede descargar la web y usarla offline, al igual que con bitaddress.org

https://github.com/brainwallet/brainwallet.github.com
 (https://github.com/brainwallet/brainwallet.github.com)
https://github.com/pointbiz/bitaddress.org (https://github.com/pointbiz/bitaddress.org)


Title: Re: BrainWallet AGAIN
Post by: KikoV79 on February 07, 2013, 09:09:02 AM
Imaginate que hay un dinero, una cuantía en btc claro, y que tiene que ser usado por 5 personas, pero resulta q lo tienen que recibir en una cuenta de bitcoin, pero claro, ninguno se fía del otro! Solución? Fácil, crean un brainwallet, cada uno piensa en una contraseña, y sin que los demas vean lo que se teclea, cada uno pone la contraseña justo despues del otro, y siempre en el mismo orden. De ese modo, y con el brain wallet, se va a generar una cartera para recibir ese dinero y los 5 tendrán un trozo de la clave, es decir, no se podrá hacer NADA sin que los 5 esten de acuerdo! ;)
Y luego muere uno de ellos, o se queda incapacitado, o se va de viaje, y se pierden los BitCoin para siempre... :)


Title: Re: BrainWallet AGAIN
Post by: nikkus on February 07, 2013, 09:20:18 AM
Y luego muere uno de ellos, o se queda incapacitado, o se va de viaje, y se pierden los BitCoin para siempre... :)

Verdad! Es que sé de gente que estaría dispuesta a eso antes de confiar en otros(Ya sabes neuróticos hay en abundancia y en todos los sitios), si conozco a uno que "no se fía" de bitcoin, pq con sus conocimientos básicos de matemáticas(como los míos por ejemplo), no logra entender "esa tal cosa de cifrado", así que como no entiende, no se fía, y otro que cree que todo eso esta destinado únicamente a "robarle" el dinero(que por cierto no tiene), y un largo etc... Ahhh...Si yo contará.....


Title: Re: BrainWallet AGAIN
Post by: davux on February 07, 2013, 03:22:01 PM
Imaginate que hay un dinero, una cuantía en btc claro, y que tiene que ser usado por 5 personas, pero resulta q lo tienen que recibir en una cuenta de bitcoin, pero claro, ninguno se fía del otro! Solución? Fácil, crean un brainwallet, cada uno piensa en una contraseña, y sin que los demas vean lo que se teclea, cada uno pone la contraseña justo despues del otro, y siempre en el mismo orden. De ese modo, y con el brain wallet, se va a generar una cartera para recibir ese dinero y los 5 tendrán un trozo de la clave, es decir, no se podrá hacer NADA sin que los 5 esten de acuerdo! ;)

De hecho el protocolo Bitcoin y más precisamente los scripts (https://en.bitcoin.it/wiki/Script) (enlace en inglés) contenidos en las transacciones permiten hacer eso: puedes dar varias direcciones Bitcoin necesarias para gastar el dinero (AND), o varias direcciones suficientes individualmente (OR), o hasta combinaciones de eso...

Los clientes no presentan una interface para todo eso todavía, pero en el protocolo ya se puede.


Title: Re: BrainWallet AGAIN
Post by: nikkus on February 07, 2013, 04:57:54 PM
De hecho el protocolo Bitcoin y más precisamente los scripts (https://en.bitcoin.it/wiki/Script) (enlace en inglés) contenidos en las transacciones permiten hacer eso: puedes dar varias direcciones Bitcoin necesarias para gastar el dinero (AND), o varias direcciones suficientes individualmente (OR), o hasta combinaciones de eso...

Los clientes no presentan una interface para todo eso todavía, pero en el protocolo ya se puede.

Otro puntazo para el Bitcoin! :P


Title: Re: BrainWallet AGAIN
Post by: Tacticat on February 07, 2013, 08:11:08 PM
Opcionalmente, lo único que necesitas es un calculador de SHA-256. Si tienes linux puedes probar lo siguiente:

echo -n "Esta es mi brainwallet" | shasum -a 256

Esto te dará la clave privada que luego puedes importar a un monedero Bitcoin que luego te dará la dirección pública. Opcionalmente también puedes usar una versión offline de Bitaddress.org y en wallet details te dará la dirección pública de la dirección privada.

Es decir, únicamente necesitas un calculador de SHA256.


Title: Re: BrainWallet AGAIN
Post by: amgomez on February 07, 2013, 08:19:33 PM
Opcionalmente, lo único que necesitas es un calculador de SHA-256. Si tienes linux puedes probar lo siguiente:

echo -n "Esta es mi brainwallet" | shasum -a 256

Esto te dará la clave privada que luego puedes importar a un monedero Bitcoin que luego te dará la dirección pública. Opcionalmente también puedes usar una versión offline de Bitaddress.org y en wallet details te dará la dirección pública de la dirección privada.

Es decir, únicamente necesitas un calculador de SHA256.
¿Qué?¿Cómo?¿Qué?

Repite eso con más detalle, por favor. Antes que cualquier calculadora del internec para brainwallets me fio mucho más de un programa que traiga de serie linux.


Title: Re: BrainWallet AGAIN
Post by: Tacticat on February 07, 2013, 08:36:39 PM
Opcionalmente, lo único que necesitas es un calculador de SHA-256. Si tienes linux puedes probar lo siguiente:

echo -n "Esta es mi brainwallet" | shasum -a 256

Esto te dará la clave privada que luego puedes importar a un monedero Bitcoin que luego te dará la dirección pública. Opcionalmente también puedes usar una versión offline de Bitaddress.org y en wallet details te dará la dirección pública de la dirección privada.

Es decir, únicamente necesitas un calculador de SHA256.
¿Qué?¿Cómo?¿Qué?

Repite eso con más detalle, por favor. Antes que cualquier calculadora del internec para brainwallets me fio mucho más de un programa que traiga de serie linux.

Una brainwallet es una clave privada formada pasando un texto a través de un Hash SHA256. La página web brainwallet.org hace exactamente lo mismo.

Un hash es una función matemática irreversible que identifica de manera única aquello que procese. Es como una huella digital.
Es decir, si yo hago el hash de "Hola, te doy 1 BTC" el resultado será algo parecido a:

"f8d607abf8d5552402bad661643d712b786ad8cd6a2ac993873e562cd4ae44c9"

Esta es la huella digital de la frase anterior. Si yo cambio un sólo bit, letra o dígito de la frase anterior el hash es totalmente distinto. Supongamos que un falsificador cambia la frase y pone "Hola, te doy 1000 BTC" entonces el hash sería:

"1c069b3a1938c07a3f08df1d9781a8848cf2b9716eececdc052e57cbf2fc1bb8"

Como puedes ver es totalmente distinto. Este es principio fundamental que permite la firma digital y las transacciones de Bitcoin.
Además, ningún otro texto dará el mismo hash.

Las propiedades del hash pueden también ser usados para crear claves privadas Bitcoin. Generalmente, cuando se genera una dirección bitcoin suele usarse un número aleatorio. Una brainwallet, sin embargo, toma como fuente una frase de texto.

Sabemos que todas las claves privadas de Bitcoin tienen 256 bits. ¿Cómo convertimos un texto cualquiera en un número único e irrepetible de 256 bits? ¡Usando un hash de 256 bits! En este caso se trata de SHA-256, una función hash muy conocida.

Escribe esto en cualquier terminal linux:

echo -n "Esta es mi clave privada" | shasum -a 256

Aquí estamos usando dos programas. En primer lugar "echo" y el argumento -n reproduce el texto tal y como lo escribimos y lo envía mediante la tubería ( | ) al programa shasum. El programa shasum lo pasa por el hash Sha-256 usando el argumento "-a 256".
Y así obtenemos:

732400c7f6fd900844917005b6a8d7011691fcc96ee9f2009a6796f16f228ad8

Si vas a brainwallet.org y escribes "Esta es mi clave privada" (sin comillas y respetando mayúsculas) obtendrás el mismo resultado.

El resultado es un número que está escrito en hexadecimal y que muchos programas como Blockchain, multibit, electrum o armory aceptan para importar una clave privada. Una vez importes esa clave privada te dirán cual es la dirección pública que le corresponde.


Title: Re: BrainWallet AGAIN
Post by: amgomez on February 07, 2013, 08:47:48 PM
¡Gracias por la explicación tan detallada!

Pero te has quedado en lo mejor, esto es, en como le meto al cliente de bitcoin (uso bitcoin-qt) el sha256 para que me dé la clave pública. ¿Hay alguna forma en el cliente oficial (modo paranoico on) o sólo en los que has comentado?


Title: Re: BrainWallet AGAIN
Post by: Tacticat on February 07, 2013, 08:53:58 PM
¡Gracias por la explicación tan detallada!

Pero te has quedado en lo mejor, esto es, en como le meto al cliente de bitcoin (uso bitcoin-qt) el sha256 para que me dé la clave pública. ¿Hay alguna forma en el cliente oficial (modo paranoico on) o sólo en los que has comentado?

No uso Bitcoin-qt pero aquí está el tutorial acerca de cómo importar claves privadas:

https://en.bitcoin.it/wiki/How_to_import_private_keys_v7%2B

Sin embargo, no sé si acepta el número hexadecimal o tan sólo acepta el formato donde empiezan por 5.
Sinceramente, creo que debería aceptar la clave también en hexadecimal pues muchos otros programas también lo hacen. Pruébalo y me cuentas.

En caso contrario sí necesitarás un programa que convierta el número hexadecimal a una clave que empiece por 5 (wallet import format) y/o te cree la dirección pública. Por suerte son todo matemáticas y se podría hacer en un sencillo script linux fácil de verificar y totalmente transparente.


Title: Re: BrainWallet AGAIN
Post by: amgomez on February 07, 2013, 09:19:09 PM
Supongo que con sustituir el primer dígito por un 5 es suficiente. Al fin y al cabo estamos hablando de un SHA. Solo hay que "acordarse" de hacer esto tras convertir la frase.

Conforme lo escribía me he dado cuenta de que la clave privada en el formato wallet es un poco más compleja (incluye cifras y letras). ¿Alguien sabe que clase de formato es ese?


Title: Re: BrainWallet AGAIN
Post by: amgomez on February 07, 2013, 09:20:38 PM
Me auto respondo: https://en.bitcoin.it/wiki/Wallet_import_format


Title: Re: BrainWallet AGAIN
Post by: dserrano5 on February 07, 2013, 09:53:11 PM
Ojito con el historial de la shell, que guarda todos los comandos en claro, incluyendo:

Code:
$ echo "clave privada" | shasum

y

Code:
$ bitcoind walletpassphrase "clave del wallet"

Para ejecutar cosas como esas de forma segura (usando bash):

- abrir una terminal nueva
- teclear 'unset HISTFILE'
- ejecutar el comando que sea
- cerrar la terminal lo antes posible

Si ya habéis ejecutado algo sin tomar esta precaución del 'unset HISTFILE', debéis editar el .bash_history y borrar a mano los comandos que contengan contraseñas (pero eso no necesariamente hace que tales comandos desaparezcan del disco a bajo nivel).


Title: Re: BrainWallet AGAIN
Post by: LuisCar on February 08, 2013, 01:09:15 AM
La otra opción sencilla es ejecutar los comandos a través de una LiveCD o LiveUSB desconectadas de internet y te garantizas que en cuanto las extraigas del equipo no va a quedar rastro.


Title: Re: BrainWallet AGAIN
Post by: Narydu on February 09, 2013, 11:31:17 AM
Gracias a todos por las explicaciones.
A pesar de las explicacionea que me ayudaron a comprender como funciona, me quedo con una propuesta inicial... Usar la pagina offline (y no volver a conectarla). Dado que si funciona ya que es un client side java, la creen una buena y sencilla alternativa?


Title: Re: BrainWallet AGAIN
Post by: dserrano5 on February 09, 2013, 06:12:47 PM
Usar la pagina offline (y no volver a conectarla). Dado que si funciona ya que es un client side java, la creen una buena y sencilla alternativa?

No sólo es buena y sencilla sino también comúnmente recomendada.

(ojo, no es java sino javascript)


Title: Re: BrainWallet AGAIN
Post by: amgomez on February 10, 2013, 09:05:43 AM
Y os fiais del programa de un tercero para calcular vuestra wallet?

Edit: No me he explicado bien. Me refiero al programa de una página web, por muy "offline" que lo ejecutéis.


Title: Re: BrainWallet AGAIN
Post by: tbcoin on February 10, 2013, 09:39:38 AM
Y os fiais del programa de un tercero para calcular vuestra wallet?

Edit: No me he explicado bien. Me refiero al programa de una página web, por muy "offline" que lo ejecutéis.

El código esta ahi, son proyectos que puedes descargar directamente de github, es tan fiable como confiar en un cliente bitcoin.


Title: Re: BrainWallet AGAIN
Post by: amgomez on February 10, 2013, 10:04:38 AM
Quería decir que, en el peor caso, prefiero usar el addrgen.py frente a brainwallet.org.

El código del addrgen.py es fijo (además es código fuente directamente interpretado por python, no es ni siquiera un ejecutable) y revisable por cualquiera. Brainwallet puede enviarte en cualquier momento un código que no haya revisado nadie.


Title: Re: BrainWallet AGAIN
Post by: dserrano5 on February 10, 2013, 11:23:22 AM
Quería decir que, en el peor caso, prefiero usar el addrgen.py frente a brainwallet.org.

El código del addrgen.py es fijo (además es código fuente directamente interpretado por python, no es ni siquiera un ejecutable) y revisable por cualquiera. Brainwallet puede enviarte en cualquier momento un código que no haya revisado nadie.

brainwallet es código fuente interpretado por un motor de javascript, tampoco es un ejecutable. Y si te lo guardas en tu ordenador, el código también es fijo. No tienes muchas más probabilidades de problemas con una opción que con otra. Lo que tiene addrgen es que es bastante simple (180 líneas), porque simplemente va a lo que va y punto. Brainwallet (y bitaddress, dicho sea de paso) tienen más chicha porque te permiten hacer más cosas.


Title: Re: BrainWallet AGAIN
Post by: maxcarjuzaa on February 10, 2013, 12:30:47 PM
Ojito con el historial de la shell, que guarda todos los comandos en claro, incluyendo:

Code:
$ echo "clave privada" | shasum

y

Code:
$ bitcoind walletpassphrase "clave del wallet"

Para ejecutar cosas como esas de forma segura (usando bash):

- abrir una terminal nueva
- teclear 'unset HISTFILE'
- ejecutar el comando que sea
- cerrar la terminal lo antes posible

Si ya habéis ejecutado algo sin tomar esta precaución del 'unset HISTFILE', debéis editar el .bash_history y borrar a mano los comandos que contengan contraseñas (pero eso no necesariamente hace que tales comandos desaparezcan del disco a bajo nivel).

Para que lo que tecleamos en el shell no quede en el historia lo único que hace falta es agregar un espacio en blanco antes del comado echo.



Title: Re: BrainWallet AGAIN
Post by: tbcoin on February 10, 2013, 01:16:59 PM
Ojito con el historial de la shell, que guarda todos los comandos en claro, incluyendo:

Code:
$ echo "clave privada" | shasum

y

Code:
$ bitcoind walletpassphrase "clave del wallet"

Para ejecutar cosas como esas de forma segura (usando bash):

- abrir una terminal nueva
- teclear 'unset HISTFILE'
- ejecutar el comando que sea
- cerrar la terminal lo antes posible

Si ya habéis ejecutado algo sin tomar esta precaución del 'unset HISTFILE', debéis editar el .bash_history y borrar a mano los comandos que contengan contraseñas (pero eso no necesariamente hace que tales comandos desaparezcan del disco a bajo nivel).

Para que lo que tecleamos en el shell no quede en el historia lo único que hace falta es agregar un espacio en blanco antes del comado echo.



Siempre que este así definido con 'export HISTCONTROL=ignorespace'


Title: Re: BrainWallet AGAIN
Post by: amgomez on February 11, 2013, 11:10:48 AM
Si hilamos fino con brainwallet puedes tener mas problemas. Una discusión análoga ya la tuvieron en el foro ingles, que puede resumirse en que el código de un programa en github (por ejemplo) es revisable por cualquiera, y su análisis además es extensible al resto de usuarios, por lo que no es necesario que tu te molestes en hacerlo. El código javascript que recibes durante una sesión web es revisable por cualquiera, pero su análisis no extensible. La página puede mandar distinto código según qué usuario, por lo que para estar seguro, debes revisar el código tu mismo para esa sesión en particular.

De todas formas, entiendo que todo esto ya empieza a entrar dentro del "cogersela con papel de fumar".  :D


Title: Re: BrainWallet AGAIN
Post by: dserrano5 on February 11, 2013, 02:51:49 PM
De todas formas, entiendo que todo esto ya empieza a entrar dentro del "cogersela con papel de fumar".  :D

En un post anterior tenía algo tecleado acerca de las bibliotecas SSL y el núcleo pero lo borré antes de enviar :P.