Analyse de l'utilisation des signatures numériques: 10 des 15 principales crypto-monnaies ne signent pas de logiciel

En lisant les derniĂšres nouvelles sur le remplacement rĂ©ussi par les attaquants du code d'un grand projet, la question se pose naturellement: comment est-ce encore possible si le code a Ă©tĂ© signĂ©!? Ignorer les rĂšgles de sĂ©curitĂ© dans la cryptosphĂšre est un oxymore et, en mĂȘme temps, un fait, donc, pour que cet article ne se transforme pas en porteur d'un homme menteur, j'ai sĂ©lectionnĂ© pour l'analyse non pas les dĂ©butants, mais les crypto-monnaies en haut de la cote CoinMarketCap. Et, vous l'avez devinĂ©, pas en vain.


Voyons comment les choses se passent avec l'utilisation des signatures numériques dans le bastion de la révolution fintech.


La motivation


Comme vous le savez probablement, les hacks de sites officiels et les profils github de projets de cryptographie se produisent assez souvent Ă  travers lesquels le code malveillant se propage. Parfois, les adresses de portefeuille sont remplacĂ©es, dans d'autres cas, le logiciel distribuĂ© est remplacĂ©. Les mĂ©thodes de piratage diffĂšrent: il y a une attaque sur l'un des nƓuds de rĂ©seau responsables de la livraison des donnĂ©es et une substitution cachĂ©e d'un fragment de donnĂ©es est effectuĂ©e. DĂ©tecter une usurpation est visuellement assez difficile, ce que les cybercriminels utilisent. Il existe plusieurs façons de se dĂ©fendre contre une telle attaque. La signature PGP est considĂ©rĂ©e comme standard: publication des sommes de vĂ©rification signĂ©es. Ce faisant, la clĂ© PGP doit ĂȘtre correctement distribuĂ©e. Par exemple, publiĂ© sur diverses ressources (de prĂ©fĂ©rence plus de deux).


Analyse


Pour l'analyse, j'ai utilisé des ressources officielles, des liens vers lesquels j'ai reçu de diverses sources. Puis il a commencé à collecter des informations provenant de différentes directions. L'analyse a pris en compte la publication du logiciel utilisateur et du SDK. Pour l'analyse, des jetons ou des projets basés sur des contrats intelligents n'ont pas été pris, seules les crypto-monnaies.


Résultats


ProjetRésultat
Noyau Bitcoinpublication de la clé et du code dans une seule source
Ethereum gethpublication de la clé et du code dans une seule source
SDK Ethereumpas de signature
La paritépas de signature
Xrp-
Litecoinpublication de la clé et du code dans une seule source
Cardano daedaluspas de signature
Cardanopas de signature
Stellaireclés non publiées
Stellar sdkcommuniqués non signés, signature avec clés non publiées
IOTA IRIpas de signature
Portefeuille IOTApas de signature
Tron corepas de signature
Portefeuille Tronpas de signature
Neo guipas de signature
Neo clipas de signature
Moneropublication de la clé et du code dans une seule source
Dash corepublication de la clé et du code dans une seule source
Dash Electrumpas de signature
Portefeuille NEM Nanopas de signature
Nem nisclés non publiées
Ethereum classique*
Noyau Qtumpas de signature
Zcashversions non signées

(*) Ethereum Classic utilise un logiciel tiers et ne publie pas d'informations pour confirmer la publication.


Erreurs courantes


  1. Absence de signature en tant que telle ( 10/15 ):
    Il peut s'avérer non signé en tant que code exécutable, mais les bibliothÚques non signées et les logiciels d'application tels que les portefeuilles sont plus courants.
  2. Signature par clés non publiées ( 2/15 ):
    Le code est signé par plusieurs développeurs dont les clés ne sont publiées nulle part, et de telles signatures sont donc inutiles.
  3. Publication des clés et du code dans une seule source ( 5/15 ).
    Une erreur trÚs courante est la publication de clés via un lien sur une ressource tierce, ou la création d'une seule source de confiance sous la forme d'un site. Ainsi, pour remplacer des données, il suffit de pirater uniquement le site.

Erreurs atypiques


Monero propose de regarder les clés du dossier contenant les données signées. Il s'agit essentiellement d'une erreur de distribution clé, qui entraßne une perte totale de fiabilité.


Remarque!



Raisons


  1. Absence de stratégie unifiée . Aujourd'hui, aucune instruction ne conviendrait à la plupart des développeurs pour résoudre les problÚmes de garantie de livraison de code sur différentes plates-formes. Une grande proportion de performances amateurs.
  2. Obsolescence . Si vous regardez les principaux sites de la technologie PGP, vous avez l'impression que la technologie est dans l'oubli:
  3. Manque d'outils complets pour publier et vĂ©rifier les signatures . MĂȘme s'il y a un dĂ©sir, l'utilisateur rencontrera de sĂ©rieux obstacles sur le chemin - de nombreux utilisateurs ne savent pas comment et ne sont pas prĂȘts Ă  utiliser la console obligatoire pour vĂ©rifier la signature. MĂȘme pour les dĂ©veloppeurs, l'utilisation d'une signature n'est pas une tĂąche triviale.
  4. Protocole d'échange de clés obsolÚte . Au 21e siÚcle, lorsque les développeurs ne se rencontrent presque jamais en personne, organiser un échange de clés sur une base p2p devient peu pratique et des outils sont nécessaires pour accélérer la distribution et la révocation des signatures.

Astuces


Les meilleurs conseils dans cette situation:


  1. Séparez les clés par tùche (cela aidera à éviter les fuites d'une clé principale ou l'utilisation d'une clé de développeur pour signer une version).
  2. Dupliquer des informations dans plusieurs sources, par exemple sur le site officiel et sur Github (pirater deux ressources en mĂȘme temps est plus difficile qu'une).
  3. Générez une URL lisible par l'homme (elles sont plus faciles à mémoriser et à vérifier).

Manuel d'instructions


Si vous n'utilisez pas encore de clĂ©s PGP, je vous recommande fortement d'inclure la vĂ©rification de signature dans le flux de travail, mĂȘme si vous ne dĂ©veloppez pas de projets financiers, il est prĂ©fĂ©rable d'amener cette compĂ©tence Ă  l'automatisme avant d'en avoir besoin. Il suffit de la force d'une heure pour commencer, mais le plaisir reçu alors ne peut pas ĂȘtre mesurĂ©.


Utiliser GPG avec Git
  1. Téléchargez le logiciel de gestion des clés:
    1. Linux (Aucune installation requise, utilisez gpg2 ).
    2. Outils MacOS GPG .
    3. Windows GPG4Win .
  2. Générez une clé:
     > gpg2 --gen-key 
  3. Nous obtenons l'empreinte de la clé:
     > gpg2 --fingerprint user@localhost gpg: checking the trustdb gpg: marginals needed: 3 completes needed: 1 trust model: pgp gpg: depth: 0 valid: 2 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 2u gpg: next trustdb check due at 2020-07-01 pub rsa2048 2018-07-02 [SC] [expires: 2020-07-01] E5F1 2C73 045F 1E85 302D A9D5 269E 7C5E B852 68BB uid [ultimate] User <user@localhost> sub rsa2048 2018-07-02 [E] [expires: 2020-07-01] 
  4. Ajoutez la clé de git (voir stackoverflow ):
     > git config user.signingkey E5F12C73 
  5. Nous signons des commits avec l'ajout du commutateur -S:
     > git commit -S -m 'Signed commit' 
  6. Exportez la clé:


     > gpg2 --armor --export user@localhost -----BEGIN PGP PUBLIC KEY BLOCK----- mQENBFs6VDsBCADzd5F4jaJr7Dzp11+h5CmnRNHGSTWOMQe+TSXljR351BCF9hS6 VrIizaPCVkLW/ATsqdf6vZEApvbQplwHecFPwMpFhusTOILk7lsuXm8w5CscqgBo KiZdSBa9bpWmFrSsPgD8/2VMlQdh+3uChOKapsLo7cHKXNuWX8b1L30twNwgavMc Sel/3clO7Bwp9cFftyktsM/HtSUu1oaE//dibS60HzwmscPHsIIoYsfUSCEOj08f DwK2vLbPilYKyE7fONJpXCSPk5pfDnNxzdFWylNBTQL8benhCtSyfabbtHmeywe+ VWfRAGf/BRjjb7meAMX5vO6qh1l4FfHVo7irABEBAAG0FVJ1bWtpbiA8c3BhbUBy dW1rLmluPokBVAQTAQgAPhYhBOXxLHMEXx6FMC2p1SaefF64Umi7BQJbOlQ7AhsD BQkDwmcABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJECaefF64Umi7e4kIALs2 0wbQ0g5557cIbN/eXeK+DsyZFyp3D95RoOnLgWiDknVBluRyPY1QFkjKgNNepMNr 7TM1eNev1CcSDLkuUxlLMrDH9AsAIVWFl7v1+/npJuHkazylU2DgssWICF0yKgWZ tzOQUEDwX7xwIJ3g5v44Lymq0hPi56FVv+rq15hkNsqIOyjDQNVGROUURyO/+vUP khOa2ryjWCpdBzoRNxSyVMlyoABLHwTfXDkCFHV9T7bOa/o0GqILOZ7wCBN9tT5C 38ellwu/HTCtmzZsWvl3a6g8JcunB9yV3RZFQgUDvLEjiVoY2qqn/SWgcl6QR2Ro aEwTKk/p3PU1Foz7mEC5AQ0EWzpUOwEIAPbKGT/xzJ9JvXhMyoOGQZNWkqyXKtV4 zVdfdjxkWMrsMD/C2K1CQ5HPafTM9G/kATGCAmoFPCdLwrc9QqOw3H8PNxnph3Ca irvp0ICj6KDiuCCuptJYICzllKriyLhUDyFkb7GPpRgHpKJZMVCkRbDEau3jcJEx jsdUnjf3gDpEnkuV1pwSxGFxTV3vHNQBqGbFG8mjVkfZSnB++e+tyKPhC5X0QFue K2AlHbnj0/uXZ9wYfRTOJsbW6myR0k1edo7Y5P93fhpW49wwaMTe2Q9p+m6zRguf 8vC9sGUB/eGD9+6OwtIZJ6ZlUa8/MYUBr9er/z+hl7ApdpibChCb8lUAEQEAAYkB PAQYAQgAJhYhBOXxLHMEXx6FMC2p1SaefF64Umi7BQJbOlQ7AhsMBQkDwmcAAAoJ ECaefF64Umi7e3UIAO9ixyXaKmsfWVB11tYPHP+9Xo2s0RRanNMyqAcp1se3jQBZ Z7gfr7DBFBFPU0KeOibWXysMz54hXImxDgYQPKFznzKB5463DiZt8pYjxdphX4/j m6ccw1GnpImRJHpu3mMPSItd/QDqEl87KqSw+IojaLDid3QeL0uRzi2k5/Jwz6ru QMCwdKIMBDPw936YOsfHjQx1RTY9NC59cW1i0lU813By1J80hd24aIJH5vVyYI/I suz153mZUZ+dmN0F6wfnuqNzeCfJRoHKh45ABDD3cRQ2kE76UQ4Kr0xb0G512yUO WJFT8ff3EWn1FulR7bmprA4HHACyx/otL7P777E= =zi5u -----END PGP PUBLIC KEY BLOCK----- 

  7. Nous copions le résultat et l'ajoutons aux clés de confiance dans l'interface Github, Gitlab ou Bitbucket.

Conclusion


Aujourd'hui, l'infrastructure de livraison de code souffre de maladies infantiles: fragmentation, manque de pratiques bien Ă©tablies, logiciels qui ne rĂ©pondent pas aux rĂ©alitĂ©s, et les dĂ©veloppeurs de projets mĂȘme volumineux sous la surveillance de milliers d'yeux parviennent Ă  commettre des erreurs encore plus simples en matiĂšre de sĂ©curitĂ©. Alors faites confiance, mais vĂ©rifiez% username%!

Source: https://habr.com/ru/post/fr415989/


All Articles