Comment transformer nos smartphones en portefeuilles matériels quotidiens

Zippie démarre sur Sony Xperia X

TL; DR: Les services basés sur les crypto-monnaies et les chaînes de blocs doivent être faciles et sûrs à utiliser pour être adoptés par les masses - l'impression et le stockage de portefeuilles en papier ne vont tout simplement pas le couper. En utilisant le partage secret de Shamir et l’isolement d’Android, Zippie vise à intégrer les technologies de crypto-monnaie et décentralisées en transformant nos smartphones en portefeuilles matériels que nous contrôlons au quotidien.

Nous avons tous été là. Essayer de stocker nos clés privées dans un endroit sûr afin que les pirates ne puissent pas voler nos précieuses crypto-monnaies, pour nous rendre compte que nous préférerions manger une brique plutôt que de récupérer nos portefeuilles matériels ou nos clés USB au sous-sol et de les connecter à nos ordinateurs chaque fois que nous le voulons faire une transaction.

L'utilisation d'un service de garde tel qu'un échange pour stocker notre crypto n'est pas une option. L’objectif principal de la décentralisation est de redonner le pouvoir aux gens afin que nous puissions gérer notre propre vie numérique: argent, données et identité.

Bien que personne n'ait résolu le problème de la clé privée et trouvé l'équilibre parfait entre rendre les transactions de crypto-monnaie à la fois simples et sûres (vous contrôlez votre propre clé privée de manière sécurisée), nous voulons l'essayer.

Fractionner la clé, décentraliser le risque

Chez Zippie, notre objectif est de proposer des services basés sur la blockchain aux masses en les rendant accessibles et faciles à utiliser pour tous, dans le respect des objectifs fondamentaux de la décentralisation.

Et quel pourrait être un point d'entrée plus facile à bloquer pour des milliards de personnes que leurs smartphones?

Au départ, Zippie transforme nos smartphones en portefeuilles matériels adaptés à un usage quotidien. Le logiciel Zippie crée un compartiment isolé pour les appareils Android qui est à la fois facile à utiliser et entièrement contrôlé par l'utilisateur.

Pour ce faire, nous utilisons le partage secret de Shamir pour décentraliser la gestion des clés privées. Le partage secret de Shamir nous permet de scinder un secret en N morceaux de sorte que M sur N morceaux soient nécessaires pour reconstruire le secret.

Par souci de simplicité, lorsque nous parlons de votre clé dans ce qui suit, nous entendons en fait votre mnémonique, qui peut, grâce à un algorithme, être dérivée de manière déterministe en quantités infinies de clés privées.

De même, il est entendu dans cet article qu'une clé privée a une clé publique correspondante facilement générée; et que si vous avez la clé privée, vous pouvez déchiffrer les données chiffrées avec la clé publique correspondante et inversement.

Chaque appareil inscrit dans une identité Zippie stocke trois données:

  1. une clé privée de l'appareil
  2. une clé privée d’authentification de périphérique, celle-ci et les précédentes sont idéalement stockées dans la puce de sécurité du périphérique.
  3. un morceau de votre clé (un morceau sur deux; deux morceaux nécessaires au réassemblage de la clé), chiffré contre la clé publique du périphérique
Zippie utilise le partage secret de Shamir pour diviser un secret

Comme vous pouvez le constater, un appareil Zippie inscrit ne stocke pas la clé entière.

Cependant, lorsque le périphérique doit obtenir un accès bref à votre clé pour pouvoir signer des transactions, que se passe-t-il ensuite?

L'autre partie de votre clé, chiffrée avec la clé publique de votre appareil, est stockée dans un service en ligne (initialement hébergé par Zippie, mais tout le monde peut en exécuter un avec la même API). Ce service en ligne a quatre objectifs fondamentaux:

  • Si vous prouvez de manière cryptographique que vous êtes le détenteur d’une clé privée d’authentification de périphérique, cela vous donnera l’autre partie de votre clé.
  • Si vous apportez la preuve cryptographique que vous êtes le détenteur d’un appareil qui a révoqué la clé privée, il sera impossible pour la clé privée d’authentification de l’appareil d’accéder à nouveau à l’autre partie de votre clé; un peu comme vous bloquez votre carte de crédit
  • Rendre possible le stockage de l’autre partie de votre clé et spécifier les clés publiques pouvant effectuer l’authentification et celles pouvant demander la révocation
  • Il fera de son mieux pour supprimer complètement l’autre partie de la clé à la demande

Comme vous l'avez probablement remarqué, aucune clé de révocation n'est stockée sur le périphérique. Avant de plonger plus loin dans ceci; Voici quelques informations de base sur les mnémoniques et l’algorithme utilisé pour dériver les clés.

En général, votre mnémonique est cuite dans une graine qui est ensuite traitée de manière à vous permettre de générer les mêmes clés privées et publiques lorsque vous fournissez le même "chemin de dérivation".

En utilisant le même mnémonique, vous pouvez générer plusieurs sources en fournissant essentiellement un élément de données supplémentaire. Vous pouvez donc imaginer que sans cet élément supplémentaire, vous générez des clés que vous utilisez pour les petits paiements quotidiens; mais en utilisant un mot de passe comme élément supplémentaire, les clés générées seraient celles qui contiendraient vos économies. Ou vous pourriez avoir un troisième mot de passe «de contrainte» qui génère des clés qui détiennent des droits sur de l’argent que vous seriez prêt à donner aux criminels ou au gouvernement sous la contrainte.

Alors, que faites-vous lorsque votre appareil Zippie est perdu ou volé?

Semblable à la façon dont vous le feriez avec un compte Google ou un identifiant Apple, vous pourrez utiliser un autre de vos appareils déjà connecté et désactiver le périphérique en question, ce qui le forcerait effectivement à se déconnecter et à se déconnecter. rendre impossible l'accès à vos données.

Comme la mnémonique est un élément commun des périphériques capables de s’authentifier avec leur clé d’authentification de périphérique particulière, d’obtenir, de décrypter et de combiner les deux éléments de la mnémonique, cela semble être un bon point de départ.

Cela signifie que si vous avez accès à votre clé sur un périphérique, vous pouvez générer la clé privée de révocation de périphérique en fournissant le code mnémonique et un élément de données supplémentaire (le nom du périphérique). et envoyez la demande de révocation au service en ligne.

Comment récupérez-vous alors si vous n'avez pas d'autre appareil connecté?

Nous utilisons activement IPFS dans la solution Zippie. En résumé, IPFS permet de récupérer une donnée particulière en fournissant le hachage des données; créer un réseau à contenu adressé dans la pratique.

Notre idée actuelle est que dans la boîte pour appareils, nous fournissions une étiquette NFC, sous la forme d'un porte-clés, que nous suggérons à l'utilisateur de Zippie de placer, par exemple, sur leur trousseau de clés.

Porte-clés NFC. Autour de 0.10 USD

Ce qui sera écrit sur la balise NFC doit tenir dans environ 144 octets - la puce NFC la moins chère disponible. Il se trouve que:

https://gateway.ipfs.io/ipfs/QmSOME_IPFS_HASH#32_BYTES_ENCODED

correspond exactement à 144 octets.

Lorsque l'utilisateur numérise la balise NFC sur un nouveau périphérique, le périphérique récupère le IPFS_HASH en question (mis en miroir par les services choisis par l'utilisateur).

La page IPFS_HASH constitue une expérience de navigation complète avec un blob chiffré incorporé, déchiffrable avec la clé 256 bits fournie après le # dans l'URL. Cela signifie que l'hôte de la page IPFS_HASH ne peut pas accéder au contenu du blob crypté.

Ce que contient le blob est à peu près identique à ce qui serait stocké sur un périphérique Zippie, mais accéder aux clés privées pour l’authentification et le déchiffrement nécessite une authentification à plusieurs facteurs (reconnaissance faciale, authentification de courrier électronique, etc.) qui vous remet des pièces. des clés privées en cas de succès. Exiger cela signifie que posséder simplement les données de balise NFC ne suffit pas. Ensuite, vous pourrez accéder à votre identité Zippie complète et révoquer l’accès à un appareil.

Nous étudions également des moyens de stocker un "porte-clé" virtuel dans des services cloud existants, tels que votre messagerie ou votre stockage en nuage.

Même Android ne peut pas accéder à votre portefeuille

Issus de Nokia et de Jolla / Sailfish OS, nous sommes plutôt familiarisés avec les systèmes d’exploitation mobiles et les smartphones en général. Sachant à quel point les systèmes d'exploitation gourmands en données tels qu'Android peuvent être, nous pensons qu'il ne suffit pas de créer une simple application de portefeuille pour que vos transactions et vos données personnelles ne soient conservées qu'entre vous et le destinataire. Le portefeuille doit être ancré plus profondément dans votre smartphone.

Lorsque vous utilisez Zippie, vous pouvez imaginer que votre smartphone dispose d’un conteneur isolé sur lequel vous êtes le seul à avoir le contrôle total - même le système d’exploitation du téléphone tel que Android ne peut y accéder sans votre permission. Dans le même temps, accéder à ce conteneur est aussi simple que toute autre application ou widget de votre téléphone.

Curieux de voir comment cela fonctionne? Surveillez nos prochains articles sur notre blog technique.

Pendant ce temps, rejoignez la discussion dans notre télégramme et soyez le premier à être informé de notre vente de jetons qui débutera bientôt.