Hardware wallet por menos de 15€ - Guía DIY
19-ago-2024 21:06
#31
| Correcto, por unos centimos más, la de 16 MB debería de ir más fluida, aunque vamos... no es algo que sea "perceptible" digamos |
01-sep-2024 16:16
#34
|
Actualizado el hilo, y en el post de la web: https://hideyourkeys.io/cheap-hardwa...eptember-2024/ Ya la semana pasada probé con otro shur que me contactó y en teoría funciona. Si has comprado un ttgo t-display de estos ultimos que han puesto de oferta en aliexpress, a 5€, ten en cuenta que algunos vienen con el chip antiguo (yo probé uno de prueba). Por lo que tendrás que poner el secure boot v1 y no v2, por lo demás, totalmente funcional. Además en el chip antiguo, para encenderlo, tienes que pulsar el botón lateral. Si es el chip nuevo con enchufarlo se enciende |
02-sep-2024 11:56
#35
|
Actualizado el hilo, y en el post de la web:
https://hideyourkeys.io/cheap-hardwa...eptember-2024/ Ya la semana pasada probé con otro shur que me contactó y en teoría funciona. Si has comprado un ttgo t-display de estos ultimos que han puesto de oferta en aliexpress, a 5€, ten en cuenta que algunos vienen con el chip antiguo (yo probé uno de prueba). Por lo que tendrás que poner el secure boot v1 y no v2, por lo demás, totalmente funcional. Además en el chip antiguo, para encenderlo, tienes que pulsar el botón lateral. Si es el chip nuevo con enchufarlo se enciende Hola shur, pues justo, Estaba viendo esta a 3,45 €, la verdad que tirada de precio... En la foto se ve que es la v1.1. entiendo por lo que dices que la unica diferencia es la de tener que encenderla manualmente no? https://es.aliexpress.com/item/10050...Cquery_from%3A Me sale ese precio con cuenta nueva. Por cierto sabes de alguna empresa o vendedor en Madrid que haga carcasas para estos aparatos? He visto en Aliexpress la tipica negra de Lilygo, pero por tirar por algo más pintón. gracias shur. |
02-sep-2024 12:30
#36
|
ahora cuesta algo más de 60 pavos. Sí que quizás da más seguridad comprarlo ya hecho, pero cuando te lo montas y ves que el resultado es el mismo... De todas formas, por tener una segunda wallet (las claves no se queda en el dispositivo) con fondos separados, tener una backup por si se te rompe la original o incluso para el tema de probar el multisig o usar el OTP, merece la pena... Esta semana hay placas por 5-10 euros y la carcasa por 1 euro más... |
03-sep-2024 09:51
#37
|
Hola shur, pues justo,
Estaba viendo esta a 3,45 €, la verdad que tirada de precio... En la foto se ve que es la v1.1. entiendo por lo que dices que la unica diferencia es la de tener que encenderla manualmente no? https://es.aliexpress.com/item/10050...Cquery_from%3A Me sale ese precio con cuenta nueva. Por cierto sabes de alguna empresa o vendedor en Madrid que haga carcasas para estos aparatos? He visto en Aliexpress la tipica negra de Lilygo, pero por tirar por algo más pintón. gracias shur. Correcto, hay que encenderla manualmente, pero te confirmo que funciona (he flasheado 3 la ultima semana) Respecto a empresas que lo hagan, lo mas barato que vas a sacar es en aliexpress. Yo las hago en la web, estaba pensando en vender las carcasas sueltas, porque quedan en un tamaño bastante reducido digamos (a mi me cabe hasta en la cartera en HW), son impresas en 3D pero yo estoy bastante satisfecho con el resultado. El problema es que el envio aun siendo a España, es dificil ser competitivo en precio frente a aliexpress. Pero si quieres escribeme a ver que buscas y a ver si se me ocurre algo. Puedes bichear en la web: hideyourkeys.io Aunque estamos actualizando productos, los nuevos modelos estan en ETSY (por eso hay varios en sold out en la web, pero esta semana se actualizará): https://hideyourkeys.etsy.com |
10-feb-2025 17:40
#38
|
Gran aporte, gracias! Si encuentro la placa y caja a buen precio igual me animo a montarla por cacharrear. Se puede setear en una T-Display-S3 ESP32-S3? |
10-feb-2025 18:27
#39
|
Trezor tiene eso y un tío en Youtube lo hackeo porque el pin se guardaba en una memoria normal y era accesible durante unos milisegundos al encender el trezor.
Aún así creo que el OP está dando una solución más bien casera, algo entre guardarla en un pendrive (no por favor) y comprar una wallet de +50 euros. A mí me parece mucho lío, prefiero una wallet fácil de usar. |
10-feb-2025 18:32
#40
| Safepal es la que uso más a menudo, es muy cómoda de usar, intuitiva y "barata" |
10-feb-2025 18:38
#41
|
recomiendas una wallet fria? la idea es holdear con algunas cripto pero con otras no tanto. Gracias shur. |
10-feb-2025 18:52
#42
|
Piensa en la hardware wallet como comprar una llave con la que te regalan una caja fuerte. Los fondos están a salvo salvo que tengas acceso a la llave (el pin de la hardware wallet y acceso físico a ella) Con esa llave puedes acceder a tus fondos, es decir, firmar transacciones. En una Hot wallet, no tienes llave ni caja fuerte, como si tuvieras los billetes en el bolsillo y cualquiera te puede birlar en el metro o en un barrio chungo simplemente metiendo la mano en tu bolsillo (ponte que te meten un virus en el móvil o en el pc). Sobre tu respuesta, pues piensa a partir de que cantidad te jodería que te hackeasen. 500€ quizá compense ya gastarse 50€ en mantener esos 500€ o más a salvo, no crees? |
11-feb-2025 16:08
#45
|
En teoria si, va mejor la pantalla más grande, creo que puse alguna nota en el manual de la web, echale un vistazo porque habia algun paso diferente. Pero te confirmo que funciona, yo lo he flasheado |
22-jul-2025 18:42
#47
| Hola shur, la pagina de flash de Github de Blockstream no se actualiza no? quiero decir la ultima version a la que llego desde este flasheo es la 1.0.31 |
23-jul-2025 11:25
#48
|
Esta tarde le echo un vistazo, me suena que van por alguna más, luego te digo |
23-jul-2025 11:56
#49
|
Bueno shures, como ya sabeis en la mayoría de mis hilos intento hacer guias o tutoriales para hacer más asequible el mundo de Bitcoin o las criptomonedas, como guardar tus claves de forma segura, etc...
Hoy os pongo una guia sobre como tener un hardware wallet por menos de 15€, totalmente funcional y facil de usar, nada aparatoso ni cutre. El proceso es bastante accesible. Solo necesitarás una placa de desarrollo Arduino fácilmente disponible y, siguiendo las instrucciones paso a paso , podrás crear tu propio dispositivo con éxito. La placa propuesta es una TTGO t-display, el dispositivo cuesta menos de 15€ en aliexpress, pero con ofertas se puede conseguir incluso por menos de 10€ (o 5€ en aliexpress si eres nuevo usuario). Valdría la version de 4MB, yo he usado la CH9102F, pero entiendo que valdrian ambas, la TELEC tambien. Vale, con esta plaquita, y nada más, vamos a flashear el software de la Blockstream JADE, es una cartera BITCOIN ONLY, pero para mi es una de mis favoritas. Habría opcion de ponerle camara y batería, pero para reducir al minimo el coste y complejidad, en esta guia la vamos a usar sin camara ni batería, como si fuera un ledger Nano S. Es importante destacar que el software que impulsa este hardware wallet (el JADE) es de código abierto, lo que te permite instalarlo en cualquier dispositivo que cumpla con los criterios de compatibilidad necesarios. Como recomendación específica, el TTGO T-display se presenta como una excelente elección, ofreciendo un equilibrio óptimo entre rendimiento y practicidad para este propósito. Flasheo y Firma del Software: 1. Configurar el Entorno: Accede a la página de GitHub de Blockstream Jade: https://github.com/Blockstream/Jade. Recomiendo utilizar sistemas basados en Linux, pero también es posible con Windows o macOS. Se recomienda Linux debido a problemas previos con el generador de números aleatorios de Windows. Asegúrate de tener instalados git y python. (si no, corre los siguiente: sudo apt install git python3-pip python3-venv) Ejecuta los siguientes comandos en la terminal mkdir esp (si no tenemos la carpeta creada) Despues: cd ~/esp git clone -b v5.2.2 --recursive https://github.com/espressif/esp-idf.git cd ~/esp/esp-idf ./install.sh esp32 Y finalmente, para las variables de entorno: . $HOME/esp/esp-idf/export.sh 2. Compilar el Firmware: Clona el repositorio de Jade y navega al directorio creado. git clone --recursive https://github.com/Blockstream/Jade.git $HOME/jade Asegúrate de conocer el dispositivo que estás utilizando y configura el archivo sdkconfig.defaults en consecuencia. Para ello, en la carpeta de JADE que se nos ha descargado, en la subcarpeta configs, tenemos que encontrar el archivo de configuracion del TTGO display: Necesitamos este archivo: Lo cogemos y lo copiamos a la carpeta raíz anterior, y borramos el archivo sdkconfig.defaults, y este lo renombramos como sdkconfig.defaults (si prefieres no borrar el anterior, puedes renombrarlo y llamarlo "_old" o algo asi) Conecta tu dispositivo y ejecuta: cd $HOME/jade (vamos al repositorio que acabamos de descargar) sudo apt install cmake (por si hace falta despues, aunque lo normal es tenerlo instalado en linux) Y por ultimo: idf.py flash monitor El firmware se flasheará, y ya tenemos el dispositivo operativo. Podemos conectarlo a Sparrow, Electrum, o Blockstream Green (yo suelo usar sparrow, pero para este proceso mejor hacer todo en Green). Funciona como un ledger nano S, tiene 2 botones, navegas por las opciones con uno u otro, y aceptas con los 2 a la vez. Como veis, no aparece como un JADE normal, sale con la etiqueta en rojo de DEV. En teoría, así se puede usar, lo que pasa es que no tiene Secure Boot, es decir, que cualquiera puede coger y flashear encima otro firmware, o ponerte algun firmware modificado (esto sería partiendo de la base de que te robasen el dispositivo, supieran lo que es, y supieran hacer esto que comento). Aún asi es mejor ponerle el Secure Boot, desconozco si hay formas de hackearlo remotamente sin tenerlo, no soy consciente de ninguna, pero mejor curarse en salud. 3. Usar el Software como un Dispositivo Original, con Secure Boot: Lo primero es modificar el archivo sdkconfig.defaults según las indicaciones para no ser reconocido como un dispositivo de desarrollo. Aqui pongo todos los pasos, pero al final pongo todo entero, asi que os podeis saltar la modificacion 1 a 1, lo pongo para que sea entendible: ---------------------------- Añadimos esta primera linea: CONFIG_LOG_DEFAULT_LEVEL_NONE=y Borramos el Debug Mode: Si queremos quitar el bluetooth (se podria usar, pero al no tener bateria, para mi es un sin sentido), hariamos: Añadimos estas lineas: CONFIG_APP_NO_BLOBS=y CONFIG_MBEDTLS_ECP_RESTARTABLE=y CONFIG_MBEDTLS_CMAC_C=y Y borramos estas: CONFIG_BT_ENABLED=y CONFIG_BT_NIMBLE_ENABLED=y CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y CONFIG_BT_NIMBLE_MAX_CONNECTIONS=1 # CONFIG_BT_NIMBLE_ROLE_CENTRAL is not set # CONFIG_BT_NIMBLE_ROLE_BROADCASTER is not set # CONFIG_BT_NIMBLE_ROLE_OBSERVER is not set CONFIG_BT_NIMBLE_NVS_PERSIST=y # CONFIG_BT_NIMBLE_SM_LEGACY is not set CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="j" CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=11 CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=517 CONFIG_BTDM_CTRL_BLE_MAX_CONN=1 # CONFIG_BTDM_CTRL_FULL_SCAN_SUPPORTED is not set Ahora para añadir el Secure Boot. Añadimos estas lineas: CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE=y CONFIG_SECURE_DISABLE_ROM_DL_MODE=y CONFIG_SECURE_BOOT_SIGNING_KEY=<PATH_TO_YOUR_SIGNI NG_KEY> CONFIG_SECURE_BOOT=y CONFIG_SECURE_FLASH_ENC_ENABLED=y CONFIG_SECURE_FLASH_ENCRYPTION_MODE_RELEASE=y CONFIG_ESP32_REV_MIN_3=y Y eliminamos esta: CONFIG_EFUSE_VIRTUAL=y y ojo que puede que de serie venga con esta ya puesta, pero en REV_1, hay que borrarla para poder hacer secureboot v2, sino nos saldrá solo V1. CONFIG_ESP32_REV_MIN_3=y En el PATH_TO_YOUR_SIGNING_KEY, hay que poner la ruta de nuestra firma, que no tenemos aun, va a ser un archivo que vamos a poner en la misma carpeta de jade, en mi caso lo voy a llamar hideyourkeys-v2, segun hagamos secureboot v1 o v2, pero preferiblemente el 2, por lo que pongo: CONFIG_SECURE_BOOT_SIGNING_KEY="hideyourkeys-v2.pem" Guardamos y cerramos el archivo. ----------------------------- Si lo preferis, es mas facil que renombreis todo el sdkconfig.defaults con lo siguiente, y el archivo sdkconfig lo borrais CONFIG_APP_NO_BLOBS=y CONFIG_MBEDTLS_ECP_RESTARTABLE=y CONFIG_MBEDTLS_CMAC_C=y CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE=y CONFIG_SECURE_DISABLE_ROM_DL_MODE=y CONFIG_SECURE_BOOT_SIGNING_KEY="hideyourkeys-v2.pem" CONFIG_SECURE_BOOT=y CONFIG_SECURE_FLASH_ENC_ENABLED=y CONFIG_SECURE_FLASH_ENCRYPTION_MODE_RELEASE=y CONFIG_ESP32_REV_MIN_3=y CONFIG_LOG_DEFAULT_LEVEL_NONE=y CONFIG_BOOTLOADER_LOG_LEVEL_NONE=y # CONFIG_BOOTLOADER_WDT_ENABLE is not set CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE=y CONFIG_BOOTLOADER_APP_ANTI_ROLLBACK=y # CONFIG_APP_COMPILE_TIME_DATE is not set CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR=y CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y CONFIG_PARTITION_TABLE_CUSTOM=y CONFIG_PARTITION_TABLE_OFFSET=0x9000 CONFIG_BOARD_TYPE_TTGO_TDISPLAY=y CONFIG_COMPILER_OPTIMIZATION_SIZE=y CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT=y CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=y CONFIG_COMPILER_WARN_WRITE_STRINGS=y # CONFIG_ADC_CAL_EFUSE_TP_ENABLE is not set # CONFIG_ADC_CAL_EFUSE_VREF_ENABLE is not set # CONFIG_ADC_CAL_LUT_ENABLE is not set CONFIG_UART_ISR_IN_IRAM=y CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE=y # CONFIG_ESP_ERR_TO_NAME_LOOKUP is not set # CONFIG_ETH_USE_ESP32_EMAC is not set # CONFIG_ETH_USE_SPI_ETHERNET is not set # CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS is not set # CONFIG_HTTPD_ERR_RESP_NO_DELAY is not set CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO=y CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=y CONFIG_ESP_MAIN_TASK_STACK_SIZE=12288 CONFIG_ESP_CONSOLE_NONE=y # CONFIG_ESP_TASK_WDT_INIT is not set # CONFIG_ESP_DEBUG_OCDAWARE is not set # CONFIG_ESP32_WIFI_SW_COEXIST_ENABLE is not set CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=2 CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=0 CONFIG_ESP32_WIFI_STATIC_TX_BUFFER=y CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM=6 # CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED is not set # CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED is not set # CONFIG_ESP32_WIFI_NVS_ENABLED is not set CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=6 # CONFIG_ESP32_WIFI_IRAM_OPT is not set # CONFIG_ESP32_WIFI_RX_IRAM_OPT is not set # CONFIG_FATFS_PER_FILE_CACHE is not set CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3 CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2560 # CONFIG_FREERTOS_INTERRUPT_BACKTRACE is not set # CONFIG_LOG_COLORS is not set # CONFIG_LWIP_DHCPS is not set # CONFIG_LWIP_IPV6 is not set # CONFIG_LWIP_NETIF_LOOPBACK is not set # CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN is not set # CONFIG_MBEDTLS_CERTIFICATE_BUNDLE is not set # CONFIG_MBEDTLS_HARDWARE_MPI is not set # CONFIG_MBEDTLS_HAVE_TIME is not set # CONFIG_MBEDTLS_SSL_RENEGOTIATION is not set # CONFIG_MBEDTLS_SSL_ALPN is not set # CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS is not set # CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS is not set # CONFIG_MBEDTLS_PEM_PARSE_C is not set # CONFIG_MBEDTLS_PEM_WRITE_C is not set # CONFIG_MBEDTLS_X509_CRL_PARSE_C is not set # CONFIG_MBEDTLS_X509_CSR_PARSE_C is not set # CONFIG_MQTT_PROTOCOL_311 is not set # CONFIG_MQTT_TRANSPORT_SSL is not set CONFIG_NEWLIB_NANO_FORMAT=y CONFIG_SPI_FLASH_VERIFY_WRITE=y CONFIG_SPIFFS_MAX_PARTITIONS=1 # CONFIG_SPIFFS_CACHE is not set # CONFIG_SPIFFS_PAGE_CHECK is not set CONFIG_SPIFFS_GC_MAX_RUNS=1 # CONFIG_SPIFFS_USE_MAGIC is not set # CONFIG_SPIFFS_USE_MTIME is not set # CONFIG_WS_TRANSPORT is not set # CONFIG_UNITY_ENABLE_FLOAT is not set # CONFIG_UNITY_ENABLE_DOUBLE is not set # CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER is not set # CONFIG_VFS_SUPPORT_IO is not set # CONFIG_OV7670_SUPPORT is not set # CONFIG_OV7725_SUPPORT is not set # CONFIG_NT99141_SUPPORT is not set # CONFIG_OV2640_SUPPORT is not set # CONFIG_OV3660_SUPPORT is not set # CONFIG_OV5640_SUPPORT is not set # CONFIG_GC2145_SUPPORT is not set # CONFIG_GC032A_SUPPORT is not set # CONFIG_GC0308_SUPPORT is not set # CONFIG_BF3005_SUPPORT is not set # CONFIG_BF20A6_SUPPORT is not set # CONFIG_SC030IOT_SUPPORT is not set CONFIG_SCCB_CLK_FREQ=200000 -------------- Vuelta al terminal, estando en cd $HOME/jade Ejecutamos lo siguiente (aqui le pones el nombre que tu quieras al archivo .pem, yo he puesto el de antes): espsecure.py generate_signing_key --version 2 ~/jade/hideyourkeys-v2.pem Si lo hacemos con v1, seria: espsecure.py generate_signing_key --version 1 ~/jade/hideyourkeys-v1.pem Y nos creará una clave con ese nombre. Aqui es donde esta el "problema" de usar windows y su generador de numeros aleatorios, que seguramente esta clave sea "malilla", pero mejor eso, que no tener secure boot. Además de que estamos considerando casos de ser el objetivo de un hacker experimentado. DISCLAIMER: Guarda bien este archivo de llave, ya que si lo pierdes, no podrás re-flashear el dispositivo Después si queréis hacerlo paso por paso, podeis hacer los siguientes pasos, los incluyo solo como informacion, realmente si has copiado ya el archivo de sdkconfig.defaults, ya estan todas estas opciones por defecto. Si corres el siguiente comando verás todo marcado. ---------------------------------- Seria correr este comando: idf.py menuconfig Nos saldrá este menu: Para V2 (recomendable): Ponemos en Security Features, las opciones de Secure Boot en Version 2, enable flash encruption on boot, y check flash encruption enabled on app startup Para V1 (por si teneis otra placa que no soporta V2), ponemos lo mismo mientras se pueda. Si has puesto V2, saltate esta parte. Nos vamos a security settings, y le damos a Enable hardware secure boot in bootloader, y tambien al flash encryption on boot: Elegimos la version, aunque para este dispositivo deja la v1, si dejase la v2 mejor, pero ambos son una capa de seguridad: ----------------------------- Ahora ya, habiendo configurado el secure boot V1 o V2, guardamos. Le damos ESC, ESC, y luego Q para guardar. Con el dispositivo conectado, corremos el siguiente comando: idf.py bootloader Se completará, y nos saldrá este mensaje, pero muy importante, hay que correr el comando flash que ha generado: /home/xxx/.espressif/python_env/idf5.1_py3.10_env/bin/python ../esp/esp-idf/components/esptool_py/esptool/esptool.py -p (PORT) -b 460800 --before default_reset --after hard_reset --chip esp32 write_flash --flash_mode dio --flash_size 2MB --flash_freq 40m 0x1000 build/bootloader/bootloader.bin IMPORTANTE: Segun el dispositivo que sea, puede no sacarte ese prompt, y que salga directamente en el build, me he encontrado alguna placa ESP32 (no la de lilygo) que tenía el secure boot v1, si pasa esto, no permite el flash y te dice que tienes que usar secure boot v1, cambiando el archivo sdkconfig. NOTA: En algunos casos, si no te sale el prompt para flashear el bootloader, puedes correr el siguiente comando tambien: idf.py bootloader bootloader-flash Lo corremos borrando lo del port y baud rate, marcado en negrita. /home/xxx/.espressif/python_env/idf5.1_py3.10_env/bin/python ../esp/esp-idf/components/esptool_py/esptool/esptool.py -p (PORT) -b 460800 --before default_reset --after hard_reset --chip esp32 write_flash --flash_mode dio --flash_size 2MB --flash_freq 40m 0x1000 build/bootloader/bootloader.bin Ahora muy importante no desconectar el dispositivo hasta que finalice el proceso, corremos el siguiente comando. idf.py build Si todo ha ido bien, nos dirá que el build es correcto, y que ejecutemos un comando (pero te sugiere 2, hay que hacer el primero, lo marcado en negrita cambia segun tu pc). /home/xxx/.espressif/python_env/idf5.1_py3.10_env/bin/python ../esp/esp-idf/components/esptool_py/esptool/esptool.py -p (PORT) -b 460800 --before default_reset --after no_reset --chip esp32 write_flash --flash_mode dio --flash_size 4MB --flash_freq 40m 0x9000 build/partition_table/partition-table.bin 0xe000 build/ota_data_initial.bin 0x10000 build/jade.bin or run ‘idf.py -p (PORT) flash Ejecutamos este (lo pongo repetido), hay que borrar lo de port y baud rate, lo marco en negrita. Se podria ejecutar el otro comando también, el corto, si te sabes el puerto: /home/xxx/.espressif/python_env/idf5.1_py3.10_env/bin/python ../esp/esp-idf/components/esptool_py/esptool/esptool.py -p (PORT) -b 460800 --before default_reset --after no_reset --chip esp32 write_flash --flash_mode dio --flash_size 4MB --flash_freq 40m 0x9000 build/partition_table/partition-table.bin 0xe000 build/ota_data_initial.bin 0x10000 build/jade.bin Con esto se flashea el firmware firmado: El dispositivo se quedará en el Bootloader, ejecutamos el siguiente comando para reiniciarlo, MUY IMPORTANTE DEJARLO ACABAR, NO DESCONECTES EL DISPOSITIVO, se puede brickear: idf.py monitor El dispositivo se reiniciará (puede tardar unos minutos), y ya no sale como dispositivo de desarrollo en las diferentes carteras: Y el dispositivo aqui ya FUNCIONA PERFECTAMENTE, y tiene el mismo nivel de seguridad que un Blockstream JADE normal. ------------ ------------------------ Y si quiero actualizar el firmware? Ejecuta lo siguiente cd $HOME/jade git pull (para tener la ultima información) idf.py build python jade_ota.py --noagent Y te saltará una notificación como en un JADE normal. --------------------------- En windows, el proceso es muy similar, pero voy a poner las cosas que son diferentes. Hay que instalarse el framework de ESPRESSIF: https://docs.espressif.com/projects/...ows-setup.html Aqui el link del instalador https://dl.espressif.com/dl/esp-idf/?idf=4.4 Los comandos son practicamente los mismos, pero tenemos que trabajar en la powershell de ESP: Accedemos al directorio: Después podemos copiar el archivo sdkconfig y hacer las modificaciones correspondientes en la carpeta. Para flashear la version de desarrollo, corremos el mismo comando: idf.py flash monitor Si queremos hacer el secure boot directamente, son los mismos pasos. Voy a generar una clave con Secure Boot V2 para este ejemplo. En el caso de que nos salga algun error de python, hay que asegurarse de que la aplicacion de python3 esté en la carpeta de espressif. Se puede duplicar la de python y renombrarla a python3 (luego añado una captura). espsecure.py generate_signing_key --version 2 hideyourkeys-v2.pem Cambiamos el archivo sdkconfig de la misma forma, apuntando a nuestro archivo hideyourkeys-v2, en mi caso. Despues corremos los mismos comandos que antes: idf.py bootloader idf.py build En el caso de que nos salga algun error de python, hay que asegurarse de que la aplicacion de python3 esté en la carpeta de espressif. Se puede duplicar la de python y renombrarla a python3: Despues de darle a build y a bootloader, nos repetirá los comandos que he comentado antes, reescribimos el primero de ellos, flahseamos primero el bootloader y luego el del build borrando el puerto y el baud rate. Finalmente ejecutamos el comando idf.py monitor Para reiniciar el dispositivo. MUY IMPORTANTE DEJARLO TERMINAR, PUEDE TARDAR UNOS MINUTOS. -------------- Factory reset Si queremos resetear el dispositivo, para ponerle otra wallet. Cuando lo conectemos, y salga el logo de blockstream JADE, pulsa ambos botones, y te dará la opcion de hacer un factory reset. --------------------------------------------------- Bueno no está mal toda esta chapa, pero la placa asi suelta es muy cutre no? En efecto, pero hay muchas cajas en aliexpress, entre 4 y 8€ hay muchas opciones: Luego si tienes una impresora 3D, hay modelos por internet, buscando por ttgo t-display case. Finalmente, yo los fabrico también, aunque no es el core de la web ( https://hideyourkeys.io/ ) Para que compareis de tamaño con un Nano S, es más ancho, y con 1 o 2 mm más de grosor. ------------------------------ Dudas o problemas, o correo o MP. Si interesa el tema igual me animo a hacerlo con camara y batería, para la funcion AirGap, pero realmente, en este rango de precios me parece imbatible. Espero vuestro feedback shurs. DESVENTAJAS: Es tedioso, hay que cacharrear, pero parece más de lo que es, siguiendo los pasos en menos de 5 minutos esta todo hecho. No tienes la funcionalidad de camara de la Blockstream Jade original, ni tienes bateria, funciona como un ledger nano S, solo enchufado. Actualizarlo es más tedioso que el original (aunque son 4 comandos). Es cierto que no es algo imprescindible, de hecho con los ledgers a veces se recomienda hasta no actualizarlo no vaya a ser que metan alguna cagada, tipo "guarda tu semilla en la nube". Con la ultima version va bastante bien. La blockstream JADE no tiene secure element, es decir, un chip para evitar hackeos si se tiene el dispositivo fisico. Si bien como ha comentado un shur en un post, trezor tiene este elemento y ha sido hackeado. La solucion de blockstream es la de un pin ciego con sus servidores, no es lo mismo, pero es una solucion muy interesante (ademas de que tenemos el SecureBoot con esta guia): https://help.blockstream.com/hc/en-u...otection-work- VENTAJAS: Es MUY barato, no hay opcion mas barata diria, y muy compacto, y no es nada cutre con su funda o carcasa. Es una muy buena cartera bitcoin only ---------------------------- La gran duda, y el secure element? Bueno, como algunos sabreis, la Blockstream Jade NO tiene un secure element, pero tiene una variante alternativa, que está bastante bien pensada teniendo en cuenta la filosofía del dispositivo. Se explica aqui, la fuente original: https://help.blockstream.com/hc/en-u...otection-work- Aqui tambien hay informacion: https://help.blockstream.com/hc/en-u...15884462476953 Lo resumo en español: Durante el proceso de inicialización de Jade, se te pide hacer generar PIN único. Este PIN se utiliza en combinación con un oráculo ciego gestionado por Blockstream en sus servidores para cifrar las claves del Jade. Por lo tanto, para hackearse, necesitas - El PIN generado por ti - Las claves del JADE - El PIN del oraculo Cada vez que desbloqueas el Jade, se te pide que metas tu PIN. La aplicación de la wallet del PC o movil (por ejemplo, Blockstream Green) establece entonces un canal cifrado con el oráculo ciego, lo que permitirá que el secreto del servidor se envíe a Jade, descifrando así las claves del Jade y permitiéndote gastar bitcoin. El JADE como tal NO se comunica con el servidor del oraculo del PIN ciego. Proceso de Cifrado: Durante la inicialización, Jade solicita al usuario que elija un PIN único. Este PIN se utiliza junto con un oráculo de PIN ciego para cifrar el material clave de Jade. La aplicación compañera que conectas a tu Jade (blockstream green, sparrow, electurm...) luego pasa mensajes entre Jade y el oráculo de PIN, pero es ciega a los datos comunicados ya que están cifrados. Jade en sí no se comunica con el oráculo de PIN ciego. Para evitar ataques físicos en un Jade robado para extraer/robar monedas, la semilla se cifra con claves aleatorias divididas entre el dispositivo Jade y un oráculo de bloqueo. Para describir este proceso con más detalle: una vez que se elige el PIN, ocurre un intercambio efímero de claves Diffie-Hellman de curva elíptica (ECDH) con el oráculo remoto. Un intercambio de claves ECDH permite que dos entidades separadas sin conocimiento previo entre ellas generen un secreto compartido sobre canales públicos inseguros. Utilizando una clave pública conocida del oráculo de PIN ciego, ocurre un intercambio de claves ECDH y el canal de comunicación puede estar completamente cifrado. Una vez que se establece el canal cifrado, Jade y el oráculo remoto trabajan juntos para crear una clave AES256. Al crear una nueva frase de recuperación de billetera, la entropía se recopila del pool (el pool se refiere a los generadores de entropia que tiene la JADE, que puede ser alguno de estos sensores: temperatura, imagenes, estado de la bateria... aqui la info: https://help.blockstream.com/hc/en-u.../9640569620761) y la clave resultante se utiliza para cifrar la frase de recuperación usando la clave AES256. Estos datos solo pueden descifrarse cuando el usuario ingresa el PIN correcto en Jade y establece una conexión con el oráculo remoto, mediada por la wallet que estes usando (por ejemplo, Blockstream Green). Dado que el oráculo solo tiene una parte de la clave AES256, está ciego a cualquiera de las claves de tu billetera y al PIN utilizado en Jade. Todos los datos en reposo están cifrados en el oráculo. Entonces, la clave recién cifrada se almacena en el Jade y está protegida por Secure Boot y el flash encryption (medidas de seguridad del propio dispositivo). Secure Boot es una tecnología que evita que se ejecute en tu Jade firmware de arranque no firmado, como una imagen de firmware comprometida por un atacante. Asegura que solo se utilice el firmware que tienes la intención de ejecutar para arrancar el dispositivo (de ahi que hayamos metido el secure boot en la guia). Tu Blockstream Jade ahora tiene una frase de recuperación fuertemente cifrada. Un atacante necesitaría comprometer tanto el encriptado local en Jade como el oráculo de PIN remoto para acceder a la frase de recuperación. Como veis, según Blockstream, su servidor ciego es verdaderamente ciego, no sabe nada sobre ti ni sobre los datos de tu wallet, y se puede acceder a través de TOR. Ni siquiera conoce tu PIN real. No obstante, si no te fias de blockstream (bien hecho, aunque creo que es de los que tienen las cosas mas claras), puedes hacer que tu Jade apunte a un servidor tuyo (estuve investigando como hacerlo, pero no lo he hecho yo mismo, los servidores que tengo con maquinas virtuales prefiero no tocarlos mucho, que van justitos, pero puede que en algun momento me ponga, los pasos vienen aqui: https://help.blockstream.com/hc/en-u...l-blind-oracle ) Importante: El Jade solo se desbloquea con éxito si se ingresa el PIN correcto. Para evitar ataques de fuerza bruta, el oráculo y Jade eliminarán tus claves si se ingresa el PIN incorrecto tres veces (esto es cierto porque lo he probado esta mañana básicamente, con una de las carteras DIY que tengo). En este punto, si pones el pin mal 3 veces, deberás restaurar el Jade con tu frase de recuperación. Entonces en mi opinion, sobre la cual obviamente puedo equivocarme, si te roban un Blockstream JADE, o un dispositivo DIY como el del tutorial. La persona que vaya a hackearlo debe de tener unas habilidades nada despreciables, debe ser un hacker MUY experimentado. En cualquier caso, para curarme en salud, si me robasen el hardware wallet, o bien si lo tengo en un multisig, lo sustituyo por otro. O si no me creo una cartera con otro dispositivo, meto las claves privadas de la cartera robada, que obviamente las guardo en otro sitio, y envio los fondos a la nueva cartera. Me parecería altamente improbable que con estas capas de seguridad, te lo hackeasen en términos de horas. Salvo que se supieran tu PIN (y passphrase si tienes). |
27-jul-2025 12:04
#52
|
Es una hardware signer, lo que quiere decir que no guarda la semilla en el dispositivo, pero puedes leerla desde in QR en segundos. En la página oficial tienes todo detallado, video tutoriales y lista de piezas. https://seedsigner.com/ |
28-jul-2025 00:09
#53
|
Viendo el github parece que van por la 1.0.33, tendría que ver si van a la vez que en la original, entiendo que si |