
Quan parlem d’autocustòdia i de protegir els nostres bitcoins, entenem que la seed amb la que generem les nostres claus privades ha d’estar completament aïllada i desada en un lloc segur. Les solucions més conegudes en el mercat per resoldre aquesta problemàtica són les hardware o cold wallets.
Aquestes fortaleses impenetrables semblen perfectes per aquesta tasca; aïllades d’internet, amb contrasenya perquè ningú no autoritzat pugui utilitzar-les, amb un xip de seguretat per evitar atacs físics, etc. És a dir, armades fins a les dents per evitar cap mena de fuita d’informació. Al cap i a la fi, les tasques que realitzen són crítiques quan parlem de la gestió de criptomonedes.
Sembla impossible realitzar un atac en aquests dispositius si l’accés a ells es troba completament restringit. Però… i si de la mateixa manera que l’exercit d’Agamèmnon s’infiltrà a Troia amb el ja conegut cavall de fusta, l’atacant aconseguís accés a la hardware wallet sense assabentar a l’usuari?
El cas Dark Skippy
Fa uns anys Lloyd Fournier, Nick Farrow i Robin Linus van trobar una vulnerabilitat que afecta als dispositius de signatura probabilística per tal d’exfiltrar claus privades d’una manera secreta mitjançant les signatures que realitzen. A aquest descobriment el van anomenar Dark Skippy i s’aprofita del valor aleatori de la signatura, que en principi hauria de generar-se de manera determinista (RFC 6979), per introduir informació secreta únicament coneguda per l’atacant dins la signatura.
L’atac que aconseguien cometre, és un atac de canal encobert mitjançant el nonce de les signatures probabilístiques. Gràcies a la modificació del microprogramari del dispositiu es pot modificar la manera que es formen les signatures per tal de generar un valor aleatori predicible mitjançant la seed. Aquesta informació secreta, en realitzar una transacció a una xarxa pública, e.g. la blockchain, l’atacant és capaç d’identificar la transacció i amb una mica d’esforç trobar les dades crítiques exfiltrades.

Figura 1. Representació gràfica de l’atac Dark Skippy
Exemple pràctic: atac de cadena de subministrament
Ara bé, alguns estareu pensant, “Domènec, aquí n’hi ha una incongruència, ens has comentat que les hardware wallets es troben aïllades, amb contrasenya i que són molt segures, com algú podria fer aquesta modificació en el firmware del dispositiu”. Teniu raó, aquests atacs són realment complicats de dur a terme, així i tot, existeixen mètodes extremadament sofisticats que poden resultar exitosos.
Per exemple, imagineu-vos un clàssic atac de cadena de subministrament: Una fàbrica on es generen milers i milers de dispositius d’aquest tipus, un dia, els gerents de l’empresa fan càlculs i estimen que els diners que es desen en els seus dispositius tripliquen el guany anual de l’empresa. Senten a dir que existeixen aquests tipus d’atacs i decideixen dur-ho a terme, modifiquen el microprogramari, posen a distribució els dispositius maliciosos i esperen durant uns mesos. Passa el temps i els usuaris comencen a realitzar transaccions, d’altra banda, els “atacants” comencen a monitorar la blockchain, a poc a poc van aconseguint seeds i arriba un moment en el qual decideixen que ja és suficient, com tenen les claus privades comencen a realitzar moviments amb els diners dels usuaris. En aquest moment, l’Alice que va comprar fa pocs mesos un dispositiu de l’empresa, revisa la seva hot-wallet on pot veure els moviments realitzats sobre els seus bitcoins, s’adona que s’han fet moviments a direccions que no coneix i sense la seva participació i que la seva bitlletera es troba completament buida i com no, es posa les mans al cap.
Com ensenya l’anterior cas, l’Alice va realitzar un parell de transaccions amb el dispositiu maliciós i no es va assabentar de l’atac fins que ja era tard. Això és pel fet que aquests tipus d’atacs són molt difícils de detectar, el dispositiu funciona correctament i realitza signatures vàlides i segures a vista de qualsevol persona a excepció de l’atacant, que pot solucionant el problema de l’algorisme discret amb un cert nivell de complicació, recuperar part de la seed.
Una proposta de solució: Anti‑Exfil
Ara bé, no tot és desastrós. Andrew Poelstra i Jonas Nick van fer una proposta per prevenir que la generació del nonce únicament depengués del hardware wallet. La seva proposta es basa a prevenir aquests tipus d’atacs mitjançant la compartició de secrets entre la hot wallet i cold wallet. Principalment, el seu funcionament obliga als dos participants a comprometre’s a secrets compartits i que el valor aleatori de la signatura sigui generat en part per aquests secrets, d’aquesta manera quan se signi la transacció, el hot wallet pugui validar que s’ha generat de forma correcta i l’usuari pot assegurar-se que el hardware wallet genera el valor de manera aleatòria.

Figura 2. Esquema del protocol Anti‑Exfil.
Actualment, aquesta solució és implementada per les bitlleteres Jade i Bitbox. Ambdues implementen el seu propi sistema d’Anti-Exfil i, per tant, desafortunadament únicament es pot validar que el procés és lliure de canals encoberts si s’utilitza la hot wallet implementada per cada empresa respectivament.
Tot i això, aquesta solució presenta una problemàtica d’usabilitat. Com es pot veure en la Figura 2, és un protocol de dues passes. Això a la pràctica és imperceptible si els dispositius es troben connectats físicament mitjançant un cable. Per desgràcia, si els dispositius són “air-gapped” no quedaria més remei que realitzar dues vegades l’intercanvi d’informació (mitjançant QR normalment) per tal de fer funcionar el protocol.
Aquesta proposta, tot i efectiva, no és pràctica en dispositius lliure de cables, per tant, trobem un forat d’investigació on ens plantegem: Seria possible la creació d’un protocol amb un únic pas? Així doncs, en el grup Discrypt continuarems investigant i provant noves idees fins a trobar una solució realment pràctica i segura.
Stay tuned, we might have some fresh news to share sooner rather than later!
