Depuis que le BTC s'est "démocratisé" un postulat s'est répandu sur la toile : le porte-monnaie papier n'est pas pratique à créer, il est contraignant en ce qui concerne la sauvegarde et la sécurisation de la clé privée, il est compliqué à utiliser, et finalement sa clé privée peut être piratée au moment de son utilisation.
Hors je soutiens fermement depuis longtemps que le portefeuille papier est la meilleure solution pour stocker et utiliser ses bitcoins. Cette affirmation fait l'objet d'un débat dans mon entourage, et ainsi que sur les forums lorsque j'interviens dans ce sens. Dernier exemple :
https://cryptofr.com/topic/14085/hello-la-meute#10 >> "
Oui mais non , perso j’ai du mal à parler sécurité ET smarphone".
Là je vais tenter de démontrer que l'utilisation d'un porte-monnaie papier pour payer est sans risque et sans danger pour l'utilisateur. Et je suis à l'écoute de tout commentaire positif qui m'expliquerais que je fais fausse route, où que j'ai complètement tort, ou qu'il faut nuancer mes propos. Je veux parler de ceux que tiens dans mon tutoriel pour débutant.
D'abord je voudrais planter le décor pour éviter de s'éparpiller. Je pense qu'il y a 4 aspects à considérer dans ce contexte de porte-monnaie papier :
1- La création du porte-monnaie (on est d'accord qu'il s'agit de créer une paire de clés, n'est ce pas ?)
2- La conservation de la clé privée
3- L'utilisation de la clé, pour "payer" (donc transférer vers un autre porte-monnaie).
4- L'exposition de la clé aux réseaux, ou aux malwares, avant, pendant et après son utilisation.
Chaque point fait l'objet d'un débat. Donc pour éviter de se disperser je ne vais discuter que des points 3 et 4. Cela suppose que j'ai déjà la clé privée sous forme de QR Code et de texte. Celle ci est stockée sous ces 2 formes dans mon smartphone, ou dans mon PC. J'ai également imprimé le QR Code pour pouvoir le scanner avec le smartphone.
Là il y a un point particulier à savoir : la clé privée est encodée en BIP38. Pour ceux qui ne savent pas : un mot de passe, que j'ai choisi, est nécessaire au moment de l'utilisation. Cela peut être un code numérique, une date de naissance, une phrase, etc. C'est similaire au code PIN de la CB, utilisé pour payer un commerçant ou retirer à un DAB. Par conséquent si je me fais chaparder ma clé privée, alors, sans ce code secret, le voleur ne pourra pas l'utiliser.
D'autre part j'ai installé Mycelium sur mon smartphone. Même si c'est un bon produit, je ne m'en sers pas de portefeuille électronique avec ses clés et toutes ses options. En fait il reste vide, et je n'y importe aucune clé. Mycelium communique avec le réseau bitcoin au moyen de la connexion 4G ou WiFi du smartphone, et il ne va me servir que d'outil de transfert.
Le déroulement d'un paiement est très simple :
- je scanne le QR Code de la clé privée
- je saisie le code secret qui permet de décoder la clé privée
- je vérifie que le montant disponible du porte-monnaie papier est celui que je connais
- je saisie le montant à payer
- je scanne le QR Code de la clé publique du destinataire
- je valide et je ferme l'application.
Ensuite je peux aller voir dans la blockchain que le destinataire a bien reçu le montant attendu, et que le contenu de mon porte-monnaie papier a bien été débité de ce montant, aux "fees" près.
Là j'explique en général aux débutants que s'ils savent utiliser leur CB pour payer ou retirer des sous, alors il devrait savoir payer de la façon que je viens d'expliquer. Dans mon entourage des utilisateurs procèdent de la sorte et se sont vite habitué, c'est devenu une opération banale pour eux. Ils ont compris finalement que c'est très simple et très rapide.
Mais là les non-débutants me parlent de sécurité, d'intrusion, de malwares, de réseaux piratés ou surveillés, de smartphones vérolés, de "on ne sait jamais", de principe de précaution, etc. Bref, j'ai droit à une foule d'arguments qui dégoutterait n'importe quel quidam de faire ses courses sur internet tellement le risque est grand de se faire voler ses sous. Ce n'est plus de la vigilance, ça devient de la paranoïa.
Je ne suis plus programmeur, je ne connais pas la programmation sur Androïd, mais je prétends connaître suffisamment cet aspect de l'informatique pour avoir pratiqué pendant plus de 15 ans la programmation temps réelle, ainsi que la programmation objet (Windows, C++, MFC pour ceux qui connaissent). Je comprends donc aisément comment ça se goupille dans les processus mis en œuvre.
Partant de là, j'invente une histoire métaphorique, et utopique, pour tenter de démontrer que pour pirater la clé privée au moment de son utilisation ce n'est probablement pas si évident. Voilà l'histoire, avec son analogie :
Je suis chez moi et je dois me rendre dans un lieu dont je ne connais que sa position GPS, je dois y récupérer un sac de lingots d'or.
- Je rentre dans mon garage et dans ma voiture [
Je prends mon smartphone et je lance Mycelium].
- Un intrus est présent dans ma voiture, caché à l'arrière [
Aïe, un malware. Dans Androïd ou dans Mycelium !?]
- Je rentre les coordonnées dans le GPS [
Je scanne la clé privée codée]
- L'intrus, sans se montrer, mémorise ces coordonnés, mais il ne sait pas quoi en faire, il a besoin de l'adresse. [
La clé est visible mais utilisable que par moi. Le malware a quand même intercepté l'appareil photo]
- Le GPS me demande un code pour être utilisé [
Je saisie le code secret BIP38]
- L'intrus enregistre ce code
[Le malware a intercepté le clavier de Mycelium, ce qui veut dire que Mycelium est corrompu, il a été remplacé par un clone]
- Le GPS calcule le trajet [
Mycelium décode la clé privée]
- L'intrus voit le trajet affiché [
Le malware / Mycelium cloné enregistre la clé privée en clair]
- J'attache ma ceinture [
Je vérifie que tout va bien, le montant, destinataire, fees...]
- Pendant ce cours instant l'intrus change la route du GPS [
Le malware change l'adresse de destination]
- Je démarre et me laisse guider [
La transaction est envoyée sur le réseau, à la mauvaise adresse]
- Je m'arrête un instant, j'ai l'impression d'être dans la mauvaise direction. L'intrus descend de la voiture [
Je vérifie dans la blockchain et je me rends compte que l'adresse de destination n'est pas correcte. Mais que s'est-il passé ?]
- Le temps que je reprenne mes esprits je corrige mon trajet, mais l'intrus s'est rendu au point de rendez vous pour dérober le sac de lingots d'or [
Je vérifie mon porte-monnaie papier et je constate qu'il a été vidé !]
Quelle est la probabilité pour qu'un intrus exécute les opérations suivantes :
- Être au courant de l'opération
- Rentrer dans mon domicile, se cacher dans la voiture
- Espionner le GPS avant le départ
- Modifier le GPS
- Trouver un moyen de stopper le véhicule
- Et se rendre au plus vite sur le lieu du trésor.
Tout cela sans se faire repérer (C'est James Bond ou Tom Cruise)
....c'est la même probabilité que celle qui consiste à :
- Installer un malware dans le système Androïd. Un méchant malware qui permet d'installer ou de remplacer une application, et/ou de modifier son code ! Cela à l'insu de l'utilisateur.
- Modifier et/ou remplacer Mycelium.
- En plus du fonctionnement normal, ce clone de Mycelium doit être capable de détourner l'attention de l'utilisateur, et surtout il doit mémoriser la clé privée de façon à l'utiliser très vite pour vider le porte-monnaie papier.
D'autre part le malware ne peut pas être une appli, car Androïd ne permet pas de modifier ou remplacer une appli par une autre appli. Il doit pénétrer dans le cœur d'Androïd pour s'accaparer des droits de gestion du système.
Et finalement je rappelle une chose : la clé privée, une fois décryptée, ne se promène pas n'importe où. Elle reste cantonnée dans l'espace mémoire volatile alloué par Androïd pour Mycelium. Elle sert à 2 choses :
1- Régénérer la clé publique pour aller consulter le montant disponible dans la blockchain.
2- Crypter la transaction qui sera envoyée sur le réseau.
Après l'envoie, la clé privée n'est plus disponible dans la mémoire. Si on veut l'utiliser de nouveau il faut recommencer l'opération depuis le début.
Voilà, est ce que cela démontre que payer avec son smartphone en utilisant une clé privée est sans risque ?
Bien sûr que le risque zéro n'existe pas. Si on pense cela il ne faut pas utiliser son smartphone pour toute opération financière : bitcoin, CB, consultation de comptes, achat sur internet, etc. Ni d'ailleurs son PC qui est exposé également aux mêmes risques de piratage.
Alors, vos avis ? J'aimerais bien qu'un expert en sécurité me réponde.... ;-)