Analyse der Verwendung digitaler Signaturen: 10 der 15 wichtigsten Kryptowährungen signieren keine Software

Beim Lesen der neuesten Nachrichten über die erfolgreiche Ersetzung des Codes eines großen Projekts durch die Angreifer stellt sich natürlich die Frage: Wie ist dies überhaupt möglich, wenn der Code signiert wurde? Das Ignorieren der Sicherheitsregeln in der Kryptosphäre ist ein Widerspruch und gleichzeitig eine Tatsache, sodass dieser Artikel nicht zum Träger eines lügnerischen Mannes wird. Ich habe für die Analyse nicht Neulinge ausgewählt, sondern Kryptowährungen von der Spitze des CoinMarketCap-Ratings. Und Sie haben es erraten, nicht umsonst.


Mal sehen, wie es mit der Verwendung digitaler Signaturen in der Hochburg der Fintech-Revolution läuft.


Motivation


Wie Sie höchstwahrscheinlich wissen, kommt es häufig zu Hacks von offiziellen Websites und Github-Profilen von Krypto-Projekten, über die sich bösartiger Code verbreitet. Manchmal werden Brieftaschenadressen ersetzt, in anderen Fällen wird verteilte Software ersetzt. Hacking-Methoden unterscheiden sich: Es gibt einen Angriff auf einen der Netzwerkknoten, die für die Datenübertragung verantwortlich sind, und es wird eine versteckte Ersetzung eines Datenfragments durchgeführt. Das Erkennen einer Parodie ist visuell recht schwierig, was Cyberkriminelle verwenden. Es gibt verschiedene Möglichkeiten, sich gegen einen solchen Angriff zu verteidigen. Die PGP-Signatur gilt als Standard: Veröffentlichung der signierten Verifizierungssummen. Dabei muss der PGP-Schlüssel ordnungsgemäß verteilt werden. Zum Beispiel auf verschiedenen Ressourcen veröffentlicht (vorzugsweise mehr als zwei).


Analyse


Für die Analyse habe ich offizielle Ressourcen verwendet, Links, die ich aus verschiedenen Quellen erhalten habe. Dann begann er Informationen zu sammeln, die sich aus verschiedenen Richtungen bewegten. Die Analyse berücksichtigte die Veröffentlichung sowohl der Anwendersoftware als auch des SDK. Für die Analyse wurden keine Token oder Projekte verwendet, die auf intelligenten Verträgen basieren, sondern nur Kryptowährungen.


Ergebnisse


ProjektErgebnis
Bitcoin-KernVeröffentlichung von Schlüssel und Code in einer Quelle
Ethereum gethVeröffentlichung von Schlüssel und Code in einer Quelle
Ethereum SDKkeine Unterschrift
Paritätkeine Unterschrift
Xrp- -
LitecoinVeröffentlichung von Schlüssel und Code in einer Quelle
Cardano daedaluskeine Unterschrift
Cardanokeine Unterschrift
Stellarunveröffentlichte Schlüssel
Stellar sdknicht signierte Releases, Signatur mit unveröffentlichten Schlüsseln
IOTA IRIkeine Unterschrift
IOTA Geldbörsekeine Unterschrift
Tron Kernkeine Unterschrift
Tron Brieftaschekeine Unterschrift
Neo Guikeine Unterschrift
Neo Clikeine Unterschrift
MoneroVeröffentlichung von Schlüssel und Code in einer Quelle
Dash CoreVeröffentlichung von Schlüssel und Code in einer Quelle
Dash Electrumkeine Unterschrift
NEM Nano Geldbörsekeine Unterschrift
Nem nisunveröffentlichte Schlüssel
Ethereum Klassiker* *
Qtum Kernkeine Unterschrift
Zcashnicht signierte Releases

(*) Ethereum Classic verwendet Software von Drittanbietern und veröffentlicht keine Informationen, um die Veröffentlichung zu bestätigen.


Häufige Fehler


  1. Fehlende Unterschrift als solche ( 15.10. ):
    Es kann sich herausstellen, dass es nicht als ausführbarer Code signiert ist, aber nicht signierte Bibliotheken und Anwendungssoftware wie Brieftaschen sind häufiger.
  2. Unterschrift durch unveröffentlichte Schlüssel ( 2/15 ):
    Der Code wird von mehreren Entwicklern signiert, deren Schlüssel nirgendwo veröffentlicht werden, und dementsprechend sind solche Signaturen nutzlos.
  3. Veröffentlichung von Schlüsseln und Code in einer Quelle ( 5/15 ).
    Ein sehr häufiger Fehler ist die Veröffentlichung von Schlüsseln über einen Link in einer Ressource eines Drittanbieters oder die Erstellung einer einzigen vertrauenswürdigen Quelle in Form einer Site. Um Daten zu ersetzen, reicht es daher aus, nur die Site zu hacken.

Atypische Fehler


Monero bietet an, die Schlüssel im Ordner mit den signierten Daten zu überprüfen. Im Wesentlichen handelt es sich hierbei um einen Schlüsselverteilungsfehler, der zu einem vollständigen Verlust der Zuverlässigkeit führt.


Hinweis!



Gründe


  1. Fehlen einer einheitlichen Strategie . Heutzutage gibt es keine Anleitung, die für die meisten Entwickler geeignet wäre, um die Probleme der Gewährleistung einer garantierten Codebereitstellung auf verschiedenen Plattformen zu lösen. Ein großer Teil der Amateurleistungen.
  2. Veralterung . Wenn Sie sich die wichtigsten Standorte der PGP-Technologie ansehen, haben Sie den Eindruck, dass die Technologie in Vergessenheit gerät:
  3. Mangel an umfassenden Tools zum Veröffentlichen und Überprüfen von Signaturen . Selbst wenn ein Wunsch besteht, stößt der Benutzer auf ernsthafte Hindernisse - viele Benutzer wissen nicht wie und sind nicht bereit, die obligatorische Konsole zur Überprüfung der Signatur zu verwenden. Selbst für Entwickler ist die Verwendung einer Signatur keine triviale Aufgabe.
  4. Veraltetes Schlüsselaustauschprotokoll . Im 21. Jahrhundert, wenn Entwickler sich fast nie persönlich treffen, wird es nicht sehr bequem, einen Schlüsselaustausch auf P2P-Basis zu arrangieren, und es werden Tools für eine schnellere Verteilung und Sperrung von Signaturen benötigt.

Tipps


Die besten Tipps in dieser Situation:


  1. Trennen Sie die Schlüssel nach Aufgaben (dies hilft, das Auslaufen eines Hauptschlüssels oder die Verwendung eines Entwicklerschlüssels zum Signieren einer Version zu vermeiden).
  2. Doppelte Informationen in mehreren Quellen, z. B. auf der offiziellen Website und auf Github (das gleichzeitige Hacken von zwei Ressourcen ist schwieriger als eine).
  3. Generieren Sie eine von Menschen lesbare URL (diese sind leichter zu merken und zu überprüfen).

Bedienungsanleitung


Wenn Sie noch keine PGP-Schlüssel verwenden, empfehle ich dringend, die Signaturüberprüfung in den Workflow aufzunehmen. Auch wenn Sie keine Finanzprojekte entwickeln, ist es besser, diese Fähigkeit zu automatisieren, bevor Sie sie benötigen. Genug aus der Kraft einer Stunde Zeit reicht aus, um zu beginnen, aber das dann empfangene Vergnügen kann nicht gemessen werden.


Verwenden von GPG mit Git
  1. Laden Sie die Schlüsselverwaltungssoftware herunter:
    1. Linux (Keine Installation erforderlich, gpg2 ).
    2. MacOS GPG-Tools .
    3. Windows GPG4Win .
  2. Generieren Sie einen Schlüssel:
     > gpg2 --gen-key 
  3. Wir bekommen den Fingerabdruck des Schlüssels:
     > 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. Fügen Sie den Schlüssel zu git hinzu (siehe Stackoverflow ):
     > git config user.signingkey E5F12C73 
  5. Wir unterschreiben Commits mit dem Zusatz -S-Schalter:
     > git commit -S -m 'Signed commit' 
  6. Exportieren Sie den Schlüssel:


     > 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. Wir kopieren das Ergebnis und fügen es den vertrauenswürdigen Schlüsseln in der Github-, Gitlab- oder Bitbucket-Oberfläche hinzu.

Fazit


Heutzutage leidet die Code-Bereitstellungsinfrastruktur an Kinderkrankheiten: Fragmentierung, Mangel an etablierten Praktiken, Software, die nicht den Realitäten entspricht, und Entwickler selbst großer Projekte, die von Tausenden von Augen geprüft werden, schaffen es, selbst einfache Fehler in Bezug auf die Sicherheit zu machen. Also vertraue, aber überprüfe% username%!

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


All Articles