Pages:
Author

Topic: BrainWallet AGAIN (Read 2055 times)

legendary
Activity: 1974
Merit: 1029
February 11, 2013, 09:51:49 AM
#29
De todas formas, entiendo que todo esto ya empieza a entrar dentro del "cogersela con papel de fumar".  Cheesy

En un post anterior tenía algo tecleado acerca de las bibliotecas SSL y el núcleo pero lo borré antes de enviar Tongue.
hero member
Activity: 727
Merit: 500
February 11, 2013, 06:10:48 AM
#28
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".  Cheesy
legendary
Activity: 1022
Merit: 1000
February 10, 2013, 08:16:59 AM
#27
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'
full member
Activity: 188
Merit: 100
February 10, 2013, 07:30:47 AM
#26
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.

legendary
Activity: 1974
Merit: 1029
February 10, 2013, 06:23:22 AM
#25
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.
hero member
Activity: 727
Merit: 500
February 10, 2013, 05:04:38 AM
#24
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.
legendary
Activity: 1022
Merit: 1000
February 10, 2013, 04:39:38 AM
#23
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.
hero member
Activity: 727
Merit: 500
February 10, 2013, 04:05:43 AM
#22
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.
legendary
Activity: 1974
Merit: 1029
February 09, 2013, 01:12:47 PM
#21
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)
donator
Activity: 743
Merit: 510
February 09, 2013, 06:31:17 AM
#20
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?
legendary
Activity: 1820
Merit: 1017
February 07, 2013, 08:09:15 PM
#19
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.
legendary
Activity: 1974
Merit: 1029
February 07, 2013, 04:53:11 PM
#18
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).
hero member
Activity: 727
Merit: 500
February 07, 2013, 04:20:38 PM
#17
hero member
Activity: 727
Merit: 500
February 07, 2013, 04:19:09 PM
#16
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?
full member
Activity: 210
Merit: 100
February 07, 2013, 03:53:58 PM
#15
¡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.
hero member
Activity: 727
Merit: 500
February 07, 2013, 03:47:48 PM
#14
¡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?
full member
Activity: 210
Merit: 100
February 07, 2013, 03:36:39 PM
#13
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.
hero member
Activity: 727
Merit: 500
February 07, 2013, 03:19:33 PM
#12
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.
full member
Activity: 210
Merit: 100
February 07, 2013, 03:11:08 PM
#11
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.
legendary
Activity: 1522
Merit: 1005
February 07, 2013, 11:57:54 AM
#10
De hecho el protocolo Bitcoin y más precisamente los scripts (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! Tongue
Pages:
Jump to: