 Je suis Nicolas, co-founder et CTO de Ledger, manufacturer de fines wallets de hardware. Mon talk aujourd'hui est d'avoir un contract smart avec la sécurité de hardware. L'alternative des titres peut être comment construire, comment créer une plate-forme pour créer des wallets de hardware sur différents types de hardware. Pourquoi nous avons besoin de securer les contrats smartphones ? Parce que les contrats smartphones eux-mêmes sont extrêmement securés. Ils se sont emmenés dans l'étheraume vm blockchain. Ils sont securés par le consensus de securer les contrats smartphones. Mais il y a des choses qui peuvent arriver à l'extérieur. Si nous regardons la bonne chose, le premier contract smart peut recevoir des données de sources externes. C'est Petia de Delphi qui, comme vous le savez, est le futur. Certaines personnes ont dit qu'ils ont décidé d'arrêter de faire ça après obtenir un histogramme de la compagnie des données. Mais vous avez l'idée. Si les contrats smartphones ne sont pas trustés, ils peuvent actuer et faire des erreurs. A l'autre hand, les contrats smartphones s'interrogent avec des utilisateurs qui sont en train de prendre des clés. Les utilisateurs génériques ne sont pas extrêmement securés. Comme vous pouvez le voir ici. Donc nous devons s'occuper de la protection de la clés. Ici, nous avons deux outils pour s'occuper. Nous verrons comment la clés de securés peut aider. Quels sont les défis que nous pouvons obtenir contre les égages ? Nous pouvons considérer les contrats malwares. Nous avons donc des contrats malwares, qui sont toujours des clés privés, ou des contrats malwares qui peuvent manipuler les contrats pour justifier des contrats malwares à l'utilisateur. Alors, nous avons des attaques physiques. Nous pouvons avoir des attaques physiques, qui sont extrêmement puissantes. Si les algorithmes ne sont pas bien défis, un attaqueur peut mener, en regardant la consomption de la clés de securés, ou des choses significatives, qui changent avec la clés de securés, qui peuvent récupérer les clés privés, et qui peuvent, en fait, steal des contrats de l'exécution. Ensuite, des attaques physiques, qui nécessitent l'accès à la clés, qui peuvent changer le comportement de la clés de securés, en prenant des attaques de clés de securés. Alors, ici, les gens pensent que la clés de securés va ouvrir quelque chose. La clés de securés est un peu plus complexe. Ça va changer de façon dont le processus se tourne, basically. Donc, c'est toujours extrêmement puissant. Ce n'est pas facile d'y aller, mais si vous avez réussi à clés un item, si vous avez réussi à clé un dispositif physique de la même manière, vous pouvez aussi exprimer les clés. Donc, nous devons considérer tous ces attaques par rapport à la clés de securés. Donc, la clés de securés, ici, fera un environnement isolé pour régler les différentes applications. Donc, nous voulons que la clés de securés nous puissent exécuter les codes, sinon nous ne pouvons pas beaucoup. Nous voulons, idéalement, que la clés de securés soient physiquement résistants. Donc, la clés de securés, sur lesquelles c'est difficile de exprimer les données. Nous voulons aussi que la clés de securés puissent exécuter sur les plateformes. Donc, quand nous voulons exprimer les codes de securés, nous devons pouvoir exprimer à une partie externelle que la plateforme soit healthy, que la plateforme n'a pas été travaillée, et que la clés de securés par rapport à la clés de securés sont par rapport à la même plateforme. Et idéalement, si, dépendant de la plateforme que nous voulons, nous voulons poursuivre les primitives cryptographiques pour protéger les attaques passives que nous avons parlé avant. Donc, quand on considère les codes de securés, les gens ne se sentent pas confortables pour eux parce que les blocs de binary et les codes de securés sont sur les codes de securés. Mais l'idée générale ici est qu'aujourd'hui, nous n'avons pas d'une sorte d'open hardware vraiment disponible. Si vous regardez closely dans les différentes architectures des codes de securés que vous utilisez, vous n'avez jamais faillis sur votre hardware. Je veux dire, au moins, pour tous les computers générales disponibles aujourd'hui. Sur votre CPU, les gens peuvent modifier le micro-code de votre CPU pour la façon dont il s'agisse. Si vous utilisez un STM32 qui est un très commun micro-controller utilisé pour les wallets de hardware, vous ne savez pas vraiment comment le chip s'occupe aussi parce que c'est une partie critique par rapport à la sécurité de la chip. Donc, j'ai pris une approche primatique sur ça. Je pense que securés hardware sont considérés pour être la meilleure classe d'aujourd'hui pour protéger les données. Si c'est disponible et si nous pensons sur les problèmes différents et si nous essayons de limiter eux, c'est toujours safe de l'utiliser et c'est toujours ouvert. C'est toujours ouvert. Et sur un petit point, je veux dire si vous utilisez un CPU Intel aujourd'hui et que vous ne voulez pas utiliser SGX, je voudrais juste vous rappeler que vous utilisez le management d'engines pour les mauvais parts. Vous pouvez aussi l'utiliser pour les bons parts. Une petite, très courte histoire de securés hardware. Donc, l'idée générale ici c'est que securés hardware est plus ouvert dans notre temps. Donc, initialement, tout a commencé avec des cartes smart dans la IT. Les cartes smart n'étaient pas très puissantes et n'étaient pas facile à utiliser. Vous devez acheter un critique spécifique d'utiliser. Vous devez s'occuper d'une chose plus sophisticated dans laquelle vous pouvez vous donner des présents et vous n'avez pas besoin d'un reader. Mais encore, le chip n'était pas très puissant et n'était pas extrêmement ouvert. Et nous avons vu vraiment un nouveau set de securés hardware venant avec des cryptocurrencies parce que les cartes hardware ont été créées pour pouvoir travailler dans un environnement très hostile et les cartes hardware n'étaient pas toujours immédiatement ou les gens n'étaient pas mal. Alors je considère les cartes hardware aujourd'hui comme la prochaine évolution dans les cartes smart parce qu'elles sont vraiment des cartes smart pour un environnement hostile et pour l'internet. Si nous regardons maintenant l'histoire d'un hardware donc pourquoi un hardware securé est plus ouvert un hardware securé est plus sûr. Donc ici initialement si on veut considérer les gênés de la CPU armes introduit une zone de trottoir qui est un set d'applications très légales que vous pouvez utiliser pour basicément créer un système d'opératage qui va isoler les applications et créer un monde normal et un monde securé dans lequel l'application securée peut exécuter sans être interprétée par le système d'opératage Intel a fait des primitives Intel HTX a offert un set d'applications que vous pouvez utiliser pour créer d'applications sans l'opératage du système d'opératage vous-même et un peu plus tard nous avons vu des évolutions d'une zone de trottoir et d'une zone de trottoir avec des components de hardware optimisant des primitives cryptographiques que nous avons parlé avant et un intéressant si vous voulez regarder une zone de trottoir et un accélérateur cryptographique donc ces chips sont extrêmement close de securer les éléments aujourd'hui ils n'ont pas exactement les mêmes properties physiques je veux dire concernant les résistances sur les attaques de hardware et de prouver l'origine mais sinon ils sont extrêmement plus donc maintenant qu'est-ce qu'est-ce qu'on veut établir si nous voulons replier les différents des parts de la wallet dans l'architecture que je vais vous le dire interface. Donc, la interface transaction interviendra avec des données secrètes, ce qui est la cédule de l'utilisateur si on considère qu'il y a des clés et si on considère qu'il y a des clés. Beaucoup d'applications interviendront avec ces clés. Nous n'avons pas besoin d'applications qui interviennent directement avec les secrètes, sinon elles peuvent stiller les secrètes. Et nous voulons isoler les applications de l'un à l'autre. Donc les applications ont besoin de coller la interface de transaction sur un pass qui ne reviendra pas les secrètes et nous allons seulement leur faire un set spécifique des algorithmes. Et plus tard, nous pouvons coller les applications sur plusieurs propriétés. Par exemple, nous pouvons coller les applications sur un pass de derivation HD, ce qui signifie que, ici, si une application est compromissante, le seul pass de derivation que l'on peut coller est le pass spécifique de cette application. Donc ici, je referai à l'article déterministe de l'article qui est utilisé maintenant significatiquement pour Ethereum et qui a été utilisé en Bitcoin pendant longtemps. Mais nous pouvons généraliser le concept pour tout un set de clés. Qu'est-ce qu'on a besoin de la compétence de la interface de transaction et d'un hardware sécuritaire ? Nous devons construire l'isolation d'abord, parce que si nous voulons utiliser plusieurs applications ensemble, nous devons isoler elles et nous devons isoler la partie interviendront avec les données secrètes des applications. Ensuite, nous devons garantir le storage sécuritaire. Nous devons garantir l'implémentation sécuritaire de la primitive cryptographique, en referant aux attaques passives que nous avons parlé de avant. Et ensuite, nous devons provider un moyen pour l'external parti de vérifier que la plateforme est légitimée et que l'application de la plateforme est légitimée. Et par-dessus de cela, parce qu'on est en train d'établir un monde avec des contrats smartphones, nous voulons provider un moyen d'autoriser cette chaine. Donc, typiquement, nous voulons pouvoir prouver et changer que nous sommes en train d'établir l'application correcte sur la plateforme correcte. Et maintenant, nous allons voir comment imprimer ces différentes compétences et différents hardware et les conséquences. Donc, pourquoi nous avons désigné une interface de transaction plutôt que d'établir un set de différentes applications ? Le point est que nous savions le temps de faire ça plutôt que d'établir un certain set de applications. Comme nous l'avons vu avant, une validation formale est assez compliquée, pour ajuster un exemple. Si nous voulons une validation formale de hardware sécuritaire, c'est mieux de le faire sur une interface commune que de dépliquer le travail sur un set d'applications. Donc ici, les parties de droite sont les parties critiques. La interface de transaction est critique. Et tous les étapes que l'application d'autre s'appliquerait, qui sont encore exécutés dans le monde sécuritaire, sont protégées par la interface de transaction. Donc, il ne faut pas prendre trop de temps dans ce cas de validation, parce que la plate-forme va déjà garantir qu'elles ne peuvent pas cliquer grâce aux propriétés d'isolation. Si nous voulons impliquer ça en armes, donc c'est la plus régulière utilisation, qui sera complètement native, nous pouvons utiliser les propriétés native d'armes CPUs pour faire ça. Donc nous pouvons isoler les secrets en utilisant l'unité de mémoire, ou l'unité de protection mémoire. Et quand les calls qui seront prises par l'application à l'interface de transaction peuvent être directement map à les calls de service armes. Donc ici, l'architecture est extrêmement close à la première. Nous sommes juste répliqués tous les calls et toutes les isolations par les propriétés d'armes native, et les applications elles-mêmes sont native. Nous n'avons pas besoin d'un VM quand nous utilisons l'armes, parce que le hardware nous permet de performer l'isolation par itself. Maintenant, nous allons considérer HTX. Alors, HTX est un peu différent. Nous n'avons pas d'axe, nous n'avons pas de travail close à l'armes, nous ne pouvons pas vraiment isoler les enclaves, donc les enclaves en utilisant l'application et l'utilisation d'un HTX de l'un ou l'autre. Nous n'avons pas d'un scheme d'attestation qui peut rassembler sur la chaine. Donc l'attestation d'attestation en HTX est interpropriétaire et nous devons coller un service à l'interse pour garantir que la plateforme soit légitimée. Donc, en ce cas, une simple utilisation que je suggère est d'utiliser un CPU virtuel. Donc ça peut sembler complexe d'utiliser un CPU virtuel, mais thankfully, il y a des choses comme Moxy, qui sont déjà très facile à tester et qui sont déjà presque provenant, je dirais. Donc ça a été utilisé par différents projets dans le space bitcoin. Et pourquoi aurais-nous utilisé ça plutôt que l'AVM ? La plus facile raison est que si nous voulons garantir une portabilité et une facile portabilité entre différents environnements de sécurité, le caractère C est un bon appel. Parce que quand nous voulons travailler en armes, nous aurons une isolation native et ici, nous simulons la isolation native par fonction de l'application virtuelle. Donc, bien sûr, c'est juste une augmentation, je dirais. Cette architecture est complètement fermée pour les commentaires et bien, n'hésitez pas à poursuivre des autres idées. Maintenant, la portabilité secure. Alors, comment allons-nous contrôler la portabilité secure selon les plateformes ? Si nous voulons travailler sur notre propre plateforme nativement, nous n'avons pas de problème parce que nous pouvons juste porter les choses nativement sur la plateforme, si nous voulons travailler sur un host sur lequel nous ne pouvons porter rien, ce qui est un exemple pour enclavés et HTX, nous devons être un peu plus créatives, en ce cas-là. Donc, un moyen de faire ça est que, chaque fois que nous voulons utiliser des données secrètes, nous pouvons l'enclavés par une clé qui est faite par l'application de l'HTX, de l'environnement secure. Nous pouvons l'enclavés sur le host parce que ce n'est pas dangereux, parce que ce bloc est enclavé et ne peut pas être utilisé par le host. Et quand nous voulons l'utiliser, nous allons juste passer le point de vue de l'enclavage. Nous pouvons aussi choisir de l'enclavés sur les données pour différents items. Nous pouvons l'enclavés sur l'interface, nous pouvons l'enclavés sur le device et nous pouvons l'enclavés sur une application spécifique. Donc nous avons tous les types de granularité de la façon dont nous voulons l'enclavés des secrètes de l'application même quand on est en train de l'enclavés. Nous avons encore des problèmes si nous voulons considérer un storage secure sur l'enclavés donc sur lesquels nous ne pouvons l'enclavés nativement. Typiquement, l'enclavés sont une feature critique. Si nous voulons impliquer un compteur de pin et nous n'avons pas l'enclavés sur l'enclavés, ce n'est pas le moment parce que les gens peuvent juste vous mettre le même compteur sur l'enclavés et sur l'enclavés et vous ne pouvez pas le faire. Donc une façon d'enclavés ce limiter c'est d'utiliser les compteurs monotonymes. Les compteurs monotonymes seraient les compteurs que l'on peut seulement aller avant et cela est garantie par hardware. Donc en ce cas, nous allons utiliser le compteur monotonyme, le mettre dans l'enclavés de l'enclavés, l'entraîner, quand nous voulons le changer, et c'est bien parce que ce n'est pas répliqué. Ce n'est pas répliqué selon la condition que nous avons pour l'implémentation de l'enclavés monotonymes sur la plateforme. Donc ici, à nouveau, vous devez considérer toutes les frais quand vous implementez quelque chose, vous devez vérifier typiquement si il y a une condition d'enclavés monotonymes et comment ça devrait travailler. Maintenant, quelque chose d'autre qu'il faut considérer spécifiquement pour STX, c'est-à-dire que vous devez migrer les données de l'enclavés à l'autre. Vous devez considérer si vous voulez lock vos secrets sur vos applications ou lock vos secrets sur vos issures. Alors, sécurité-wise, c'est assez safe parce que si l'application est modifiée, vous devez perdre les secrets. Mais ce n'est pas si bon pour l'enduseur parce que vous devez repersonnaliser tout. Si vous lockz sur l'issue, tout le monde peut updates l'application, mais si vous loosez l'issue de l'issue de l'enclavés, vous devez pouvoir compromiser tous les usages par déployer un enclavés monotonymes. Donc ici, à nouveau, vous devez performer entre sécurité et au-delà de l'application. Maintenant, sur l'implémentation des primitives cryptographiques, vous avez deux choix. Vous pouvez utiliser les primitives cryptographiques par rapport à la plate-forme avec des garanties qu'elles vont s'agir très bien et qu'elles vont résister tous les types d'attaques ou vous pouvez utiliser l'application d'enclavés. L'histoire a provoqué que c'est mieux d'utiliser l'application d'enclavés. Nous avons des questions d'infini et des issues recentes. Donc ici, nous avons de bonnes choix pour imprimer plusieurs primitives cryptographiques. Nous avons Bitcoin, Lipsec, P256K1 et CTAES, donc 4ES. Et nous avons d'autres libraries d'opportunité pour différents types cryptographiques qui ont été testés contre des attaques de la chaîne et qui sont réellement d'utiliser l'application d'un library cryptographique parce qu'il y a beaucoup d'opportunités cryptographiques où ces attaques n'ont pas été considérées. Mais grâce à différents projects cryptographiques, ils ont déjà pris des bons libraries pour nous, donc nous pouvons utiliser ça dans l'enclavés. Maintenant, l'exécution de l'application d'enclavés. Si nous voulons prouver que quelque chose a été joué sur la plateforme de l'application dans un primitive que nous allons coller pour laisser l'application signer un message. Nous pouvons faire ça parce que l'insulation d'enclavés sait quelle application est en train d'intercepter l'application dans le milieu et de travailler avec ça. Donc, par implementer ça, nous avons des choses extrêmement facile de vérifier la chaine parce que c'est juste une signature. Et typiquement, pour l'exemple, vous pouvez vérifier. En STX, la façon qu'on va faire ça, c'est qu'on va aller un peu à l'extérieur. Nous allons coller l'application de l'Intel à un moment parce que c'est nécessaire d'initié la chaine d'enclavés. Et puis, nous allons continuer la chaine d'enclavés d'enclavés. Donc, en fin, nous allons vérifier la chaine d'enclavés. Mais, nous pouvons encore aller à l'extérieur de la plateforme parce que le state d'enclavés peut changer de temps. Typiquement, il y a des bugs ou des exploits que le cas d'aujourd'hui il y a un bug qui va être patché par Intel rapidement. Donc, nous avons un système que nous pouvons vérifier la chaine. Nous devons vérifier la chaine d'enclavés avec tous les systèmes. Donc, nous pouvons d'abord décider de remplir les wallets hardware et de virtualiser les wallets hardware. Mais, pour faire ça, nous avons d'abord besoin d'avoir un displan et d'avoir un displan et d'avoir un displan d'enclavés. Parce que une partie de la chaine d'enclavés n'est pas liée à l'utilisateur en displanant quelque chose de la main du campus et d'un autre dans la Chine.area. Super! Super! Super! CONSEReal! Super! Prenons une själv encouragement de que vous allez faire de la vie plus facile, mais il faut encore avoir deux devises pour travailler correctement. Un autre cas de utilisation, qui est probablement plus utile et plus facile à déployer dans ce cas, c'est d'utiliser une wallet de hardware spécifique. Un wallet de hardware qui s'applique pour des contrats spécifiques, pour des limites ou des quotas que vous voulez imprimer sur le système. C'est facile à déployer, même si vous n'avez pas de l'input. La question est, vous pouvez inquieter pourquoi c'est mieux que les imprimer sur un smart contract qui pourrait faire tout ça par itself. Donc, si vous voulez déployer ça sur un système, c'est un bon moyen de faire surement que votre système n'aura pas besoin de faire quelque chose d'autre, qui est encore un problème critique. Même si un smart contract est en train de forcer des choses, et puis vous pouvez créer des règles plus flexibles. Si vous voulez adapter un smart contract aujourd'hui, vous devez penser à ce point, avant de créer un smart contract, ou vous devez l'emmener et transférer ses fonds. Donc, en faisant ça avec un hardware, ça peut être plus convenient dans de nombreux cas de utilisation. Vous pouvez aussi utiliser le service pour créer des services externes que vous pouvez vérifier. Donc, la source de fonds de fonds de fonds de fonds de fonds de fonds est un exemple, aussi de nos réclosés, de créer une source de fonds de fonds et de vérifier que le fonds de fonds a été créé par une plateforme et, finalement, en parlant de ces architectures, on a un prototype d'implementation que vous pouvez déjà jouer avec. Donc, je prends toutes les suggestions pour cela. Aujourd'hui, il y a une implémentation en travaillant sur l'HGX. Il y aura une en travaillant sur l'armée, bientôt. Donc, c'est un progrès de travail. Juste pour vous connaître, nous n'avons pas encore un moulet de Ethereum disponible, mais vous trouverez toutes les primitives cryptographiques. Et si vous voulez commencer à jouer avec ça et puis demander des questions, je suis là. Let's get the conversation started. Thanks.