Konferenz Blog

Sicherheit der Blockchain

Bitte warten...

                
von Wilfried Kirsch       und    Prof. Dr. Hartmut Pohl

Der Hype um Kryptowährungen wie Bitcoin und Ethereum ist trotz deren Volatilität groß. Die dahinter steckende Technologie Blockchain kann jedoch nicht nur für Kryptowährungen verwendet werden: Auch Smart-Contracts können in ihr ausgeführt werden, welche wiederum etwa für Wahl Systeme, virtuelle Organisationen, Identity-Management und Crowdfunding genutzt werden sollen. Aus diesem Grund ist es Zeit, sich genauer mit der Sicherheit des Konzepts und der Implementierung  der Blockchain sowie ihrer individuellen Implementierung zu beschäftigen.

Inhalt

Das Konzept Blockchain.

Block. 

Chain.

Consensus.

Angriffsszenarien auf die Blockchain.

Angriffe auf Blockchain Implementierungen.

Absichern durch den ‚softScheck Security Testing Process‘

Fazit.

 

Das Konzept Blockchain

Die Blockchain ist eine Verkettung von Blöcken, deren Inhalt von der implementierten Anwendung abhängt. Ein Bitcoin Block enthält beispielsweise eine gewisse Anzahl an Transaktionen. Blöcke können im Nachhinein nicht mehr von einem Teilnehmer dieser Blockchain-Variante unerkannt verändert oder gelöscht werden, was den Clou an der Blockchain ausmacht.

Im Folgenden werden die Bestandteile einer Cryptocoin Blockchain im Detail betrachtet.

Block

Ein Block bündelt eine Reihe digital signierter Transaktionen (z.B. Überweisungen von Geldbeträgen, Kaufverträge für Grundstücke und weitere). Neue Transaktionen werden gesammelt (z.B. 10 Minuten lang) und zu einem Block zusammengefasst.

Abbildung 1: Vereinfachter Aufbau eines Bitcoin Blocks

Mit Hilfe des jeweils zugehörigen öffentlichen Schlüssels kann die Signatur einer jeden Transaktion in einem Block überprüft werden und durch Vergleichen der Block-Hashs wird die Manipulationsfreiheit der Blöcke geprüft. Wird nachträglich eine Transaktion geändert, ändert sich der Hashwert des Blocks. Sollte darüber hinaus die Prüfsumme des geänderten Blocks ebenfalls geändert werden, wird diese Manipulation bei einem Vergleich der Prüfsumme mit der im nachfolgenden Block gespeicherten Prüfsumme erkannt. Die Verkettung der Prüfsummen sorgt dafür, dass die gesamte folgende Kette bei einer Prüfung als ungültig erkannt wird.

Chain

Zu Beginn einer Blockchain wird ein Grundzustand festgelegt. Dieser erste Block wird auch Genesis Block genannt. Danach können neue Blöcke an die Kette angehängt werden. Ein an die Kette angehängter Block muss den Hash des Vorgängers enthalten. Dadurch ist es unmöglich, Blöcke (mit Ausnahme des aktuellen Blocks) zu verändern oder zu löschen. Jedermann ist berechtigt, Transaktionen zu Blöcken zusammenzufassen (Mining).

Es kann passieren, dass zwei Teilnehmer nahezu gleichzeitig einen validen Block berechnen. In diesem Falle wird mit zwei Blockchains weiter gearbeitet. Die längere Kette bleibt bestehen. Transaktionen der alten Kette werden in den Pool der unbestätigten Transaktionen zurückgeführt und im nächsten Block erneut verarbeitet.

Abbildung 2: Die grüne Kette ist länger und daher gültig, die roten Blöcke werden verworfen.

Prinzipiell ist es jedem Teilnehmer möglich, neue Blöcke zu generieren. Um sie an die Kette anhängen zu können, müssen diese allerdings bestimmten Regeln entsprechen und von anderen Netzteilnehmern beglaubigt werden. Wie dies geschieht, regelt der Consensus.

Consensus

Jede Anwendung der Blockchain hat eigene Regeln, die besagen, wie ein Block aufgebaut sein soll und vor allem wie dieser an die Kette angehängt werden kann.

Bitcoin, Ethereum sowie viele andere Cryptocoins verwenden einen auf  Proof of Work (PoW) basierenden Consensus: Es muss ein Hash des Blockes gefunden werden, der mit einer bestimmten Anzahl von Nullen beginnt. Je mehr führende Nullen verlangt werden, desto schwieriger ist es, der Forderung zu entsprechen. Dies wird auch als Difficulty bezeichnet. Die Difficulty wird so angepasst, dass im Mittel alle 10 Minuten ein Block geschürft wird (Mining). Ist die Gesamtrechenleistung des Netzwerkes also hoch, steigt die Difficulty, ist sie niedrig, sinkt sie wieder.

Miner versuchen nun also durch Ändern der Nonce (eine 32 Bit Zahl im Header des Blocks), einen Block zu generieren, dessen Hash die Anforderungen erfüllt. Der Block wird dann durch andere Teilnehmer im Netzwerk geprüft. Ist er valide (korrekte Hashwerte und Syntax), so wird er der Blockchain angehängt und der Miner erhält ein Entgelt (im Falle von Bitcoin 12,5 Bitcoins pro Block).

Neben Proof of Work gibt es noch weitere Consensus Methoden wie Proof of Stake (PoS) oder Proof of Burn (PoB).

Angriffsszenarien auf die Blockchain

Die Sicherheit der Blockchain basiert also auf der Unveränderlichkeit der Blöcke. Ob ein Block geändert wurde, wird durch den nachfolgenden Block detektiert, der einen Hashwert des Vorgängers enthält. Allerdings besitzen Hashwerte nur eine bestimmte Länge. Werden Informationen größerer Länge gehasht, so muss es unweigerlich möglich sein, zweimal den gleichen Hashwert mit unterschiedlichen Eingabewerten zu erzeugen. Ein Angriff, der darauf abzielt, nennt man Kollisionsangriff. Diese können noch in zwei Unterkategorien unterteilt werden:

 

First-Pre-Image Angriff findet zu einem gegebenen Hashwert eine gültige Eingabe, d.h. der Hash kann „zurückgerechnet“ werden.

Second-Pre-Image Angriff findet zu einer gegebenen Eingabe eine zweite Eingabe, die denselben Hash ergibt.

Bitcoin setzt beispielsweise auf SHA-2, Ethereum auf SHA-3. Keine dieser Hashfunktionen wurde bis jetzt gebrochen. Laut BSI Empfehlung sollte SHA-2 dennoch nur bis zum Jahre 2022 genutzt werden. Soll Bitcoin BSI konform sein, so muss es 2022 zu einem Hard Fork (eine neue, nicht zu der alten Kette kompatible Version) kommen.

Ein weiteres Angriffsszenario ist die 51% Attacke. Hält ein Miner oder ein Pool mehr als 50% der Rechenleistung des Netzwerkes, so ist es ihm möglich, Blöcke fortlaufend schneller als alle anderen zu generieren und diese an seine alternative Blockchain anzuhängen, bis diese länger als die originale Kette ist. Dies ermöglicht dem Angreifer Double-Spending (dasselbe Geld mehr als einmal auszugeben) oder das Aussetzen von Bestätigungen anderer Blöcke.
Tatsächlich ist es in der Vergangenheit schon vorgekommen, dass ein großer Pool (GHash) über 50% der Rechenleistung besaß. Bei größeren Kryptowährungen dürfte es allerdings kostenaufwändig sein, diesen Angriff zu fahren. Des Weiteren würde dieser Angriff aufgrund der Verfolgbarkeit der Blockchain sehr schnell offen liegen und der Wert der Währung einstürzen.

Angriffe auf Blockchain Implementierungen

Das Konzept der  Blockchain scheint also gut gesichert zu sein, doch eine auf dem Papier sichere Technologie muss auch sicher implementiert werden. Im Folgenden einige Beispiele von erfolgreichen Angriffen auf Produkte die auf die Blockchain setzen.

Am 19. Juli 2011 wurde die damals größte Bitcoin Tauschbörse Mt. Gox gehackt. Der Hacker stahl Bitcoins im Wert von 8,75 Millionen US Dollar, woraufhin der Wert der Bitcoins kurzfristig auf 1 Cent pro Bitcoin sank.

2014 musste Mt. Gox schließen, da insgesamt über 850.000 Bitcoins fehlten. Knapp 200.000 konnten wieder gefunden werden der Rest fehlt bis heute.

Aber auch bei anderen Kryptowährungen wie Bitcoins größtem Konkurrent Ethereum gibt es Probleme. So zum Beispiel beim DAO Hack der letztendlich zu einem Hard Fork bei Ethereum führte. Bei DAO konnte man durch eingezahltes Geld Stimmrechte erlangen. Man konnte dieses Geld auch wieder zurückbekommen. Durch einen Recursive Call Exploit im Smart Contract der DAO war es allerdings möglich, mehr Geld zurückzufordern als man eingezahlt hat.

Aktuell sind vermehrt Angriffe auf Initial Coin Offerings (ICOs) zu beobachten, eine Art Crowdfunding Methode welche mit Cryptowährungen funktioniert. Ein Anbieter, der Geld für ein Produkt sammeln möchte, erstellt ein ICO. Investoren senden Geld an die dort angegebene Adresse und bekommen dafür im Tausch Features des noch nicht fertigen Produktes. Ändert ein Angreifer den Wert der Zieladresse kurz vor der Auszahlung (Beispielsweise durch eine MySQL Injection) so erreicht das Geld den Angreifer statt den Ersteller des ICOs. So geschehen unter anderem bei dem Startup Coindash.

Absichern durch den ‚softScheck Security Testing Process‘

Wie auf https://magoo.github.io/Blockchain-Graveyard/advice/ gezeigt, sind nahezu alle Lücken, die mit der Blockchain zusammenhängen, keine Fehler der Blockchain selbst, sondern der Implementierung, der Software, die diese nutzt. Um Software sicher zu machen – insbesondere gegen bislang unveröffentlichte Sicherheitslücken (Zero-Day-Vulnerabilities), muss Software von Grund auf sicher entwickelt werden. Hierzu bietet sich der sichere Entwicklungsprozess von softScheck an. Der softScheck Security Testing Process basiert auf der ISO 27034 und enthält 6 Methoden zur Identifizierung von Sicherheitslücken:

  • Security Requirements Analysis
  • Threat Modeling
  • Conformance Testing
  • Static Source Code Analysis
  • Penetration Testing
  • Dynamic Analysis: Fuzzing

Jede dieser Methoden identifiziert andere Klassen von Sicherheitslücken.

Nach Abschluss des Sicherheitsprozesses zertifiziert der TÜV diese Lösung.

Fazit

Die Blockchain löst aktuell Cloud Computing als ‚das große neue Ding im Internet‘ ab. Sie erlaubt sichere und dezentrale Transaktionen. Viele Unternehmen könnten von der Blockchain profitieren. Doch ein sicheres Konzept reicht noch lange nicht aus. Es muss auch sicher implementiert werden! Diese gilt insbesondere bei der Blockchain, welche oft zum Geldtransfer eingesetzt wird, kann eine Sicherheitslücke große Schäden anrichten. Es ist daher äußert wichtig, in Sicherheit zu investieren.

Edit post

5. Kölner IT-Security-Konferenz am 22.11.2019

Jetzt Ticket sichern