Blockchain kurz & gut
Von Kai Brünnler
()
Über dieses E-Book
Nach einer kurzen Erläuterung der kryptografischen Grundlagen wird in diesem Buch deshalb der Aufbau eines Blockchainbasierten Protokolls von Grund auf nachvollzogen. Ausgehend von einem Protokoll, das jeder kennt, der schon einmal E-Banking benutzt hat, werden Schritt für Schritt Probleme aufgezeigt und gelöst und dabei neue Protokolle entwickelt – bis hin zu einer Blockchain.
Abschließend werden mit dem gewonnenen Verständnis Anwendungsfälle von Blockchains identifiziert und auch ausgeschlossen. Sie lernen ausgewählte Blockchain-Anwendungen wie z.B. Zeitstempel für Dokumente, fälschungssichere Logs und verifizierbare Zufallszahlen kennen.
Ähnlich wie Blockchain kurz & gut
Ähnliche E-Books
Blockchain für Manager: So nutzen Sie die revolutionäre Technik für Ihr Business Bewertung: 0 von 5 Sternen0 BewertungenAlgorithmen: Grundlagen und Implementierung Bewertung: 0 von 5 Sternen0 BewertungenBlockchain: Praktische Anwendungen, Praktisches Verständnis Bewertung: 0 von 5 Sternen0 BewertungenNeuronale Netze selbst programmieren: Ein verständlicher Einstieg mit Python Bewertung: 0 von 5 Sternen0 BewertungenEIGENE Blockchain und Smart Contract's erstellen: Für Anfänger geeignet, Schritt für Schritt Erklärung Bewertung: 0 von 5 Sternen0 BewertungenSharePoint Kompendium - Bd. 16 Bewertung: 0 von 5 Sternen0 BewertungenDeep Learning – Grundlagen und Implementierung: Neuronale Netze mit Python und PyTorch programmieren Bewertung: 0 von 5 Sternen0 BewertungenWebseiten hacken: Schnelleinstieg inkl. Entwicklung eigener Angriffsscripte Bewertung: 0 von 5 Sternen0 BewertungenC# 10 – kurz & gut Bewertung: 0 von 5 Sternen0 BewertungenKryptologie-Kompendium: Mathematik für Anwendungen Band 2 Bewertung: 0 von 5 Sternen0 BewertungenPraxiseinstieg Deep Learning: Mit Python, Caffe, TensorFlow und Spark eigene Deep-Learning-Anwendungen erstellen Bewertung: 0 von 5 Sternen0 BewertungenNichts ist sicher: Tricks und Techniken von Cyberkriminellen verstehen und sich schützen Bewertung: 5 von 5 Sternen5/5Linux Befehlsreferenz: Schnelleinstieg in die Arbeit mit der Konsole, regulären Ausdrücken und Shellscripting Bewertung: 0 von 5 Sternen0 BewertungenDie Zukunft ist dezentral: Wie die Blockchain Unternehmen und den Finanzsektor auf den Kopf stellen wird. Bewertung: 0 von 5 Sternen0 BewertungenLinux – kurz & gut: Die wichtigen Befehle Bewertung: 4 von 5 Sternen4/5Hacken mit Kali-Linux: Schnelleinstieg für Anfänger Bewertung: 0 von 5 Sternen0 BewertungenPython programmieren lernen: Der spielerische Einstieg mit Minecraft Bewertung: 0 von 5 Sternen0 BewertungenHacken mit Python und Kali-Linux: Entwicklung eigener Hackingtools mit Python unter Kali-Linux Bewertung: 0 von 5 Sternen0 BewertungenBootstrap kurz & gut Bewertung: 0 von 5 Sternen0 BewertungenVue.js kurz & gut Bewertung: 0 von 5 Sternen0 Bewertungen.NET-Praxis: Tipps und Tricks zu .NET und Visual Studio Bewertung: 0 von 5 Sternen0 BewertungenBitcoin & Co: Kryptowährungen einfach erklärt Bewertung: 0 von 5 Sternen0 BewertungenMehr Hacking mit Python: Eigene Tools entwickeln für Hacker und Pentester Bewertung: 0 von 5 Sternen0 BewertungenEigene Spiele programmieren – Python lernen: Der spielerische Weg zur Programmiersprache Bewertung: 0 von 5 Sternen0 BewertungenBitcoins verwahren und vererben: Ein praktischer Ratgeber Bewertung: 0 von 5 Sternen0 BewertungenEinstieg ins Machine Learning: Grundlagen, Prinzipien, erste Schritte Bewertung: 0 von 5 Sternen0 BewertungenIch Hacker – Du Script-Kiddy: Hacking und Cracking Bewertung: 0 von 5 Sternen0 BewertungenDer Blockchain-Faktor: Wie die Blockchain unsere Gesellschaft verändern wird Bewertung: 0 von 5 Sternen0 Bewertungen
Softwareentwicklung & -technik für Sie
Ebenen in Adobe Photoshop CC und Photoshop Elements - Gewusst wie Bewertung: 0 von 5 Sternen0 BewertungenAgile Spiele – kurz & gut: Für Agile Coaches und Scrum Master Bewertung: 0 von 5 Sternen0 BewertungenSketchnotes in der IT: Abstrakte Themen mit Leichtigkeit visualisieren Bewertung: 0 von 5 Sternen0 BewertungenScrum: Agiles Projektmanagement und Scrum erfolgreich anwenden Bewertung: 0 von 5 Sternen0 BewertungenSoftwarearchitektur für Dummies Bewertung: 0 von 5 Sternen0 BewertungenKnigge für Softwarearchitekten. Reloaded Bewertung: 0 von 5 Sternen0 BewertungenKompaktes Managementwissen: Die Grunstruktur agiler Prozesse Bewertung: 0 von 5 Sternen0 BewertungenUML @ Classroom: Eine Einführung in die objektorientierte Modellierung Bewertung: 0 von 5 Sternen0 BewertungenKOMA-Script: Eine Sammlung von Klassen und Paketen für LaTeX 2e Bewertung: 0 von 5 Sternen0 BewertungenEinfach Java: Gleich richtig programmieren lernen Bewertung: 0 von 5 Sternen0 Bewertungen3D-Drucken für Einsteiger: Ohne Frust 3D-Drucker selbst nutzen Bewertung: 0 von 5 Sternen0 BewertungenDigital Paintbook Volume 3 Bewertung: 5 von 5 Sternen5/5Weniger schlecht Projekte managen: Ohne Krise zum Projekterfolg Bewertung: 0 von 5 Sternen0 BewertungenDigital Painting Workbook Bewertung: 0 von 5 Sternen0 BewertungenQualität in IT-Architekturen: Management Bewertung: 0 von 5 Sternen0 BewertungenKanban für Anfänger: Grundlegendes über den Einsatz von Kanban in der Industrie und der Softwareentwicklung Bewertung: 0 von 5 Sternen0 BewertungenChange Management für Anfänger: Veränderungsprozesse Verstehen und Aktiv Gestalten Bewertung: 1 von 5 Sternen1/5Agiles Requirements Engineering und Testen Bewertung: 0 von 5 Sternen0 BewertungenProgrammieren lernen mit Python 3: Schnelleinstieg für Beginner Bewertung: 0 von 5 Sternen0 BewertungenZertifizierung für Softwarearchitekten: Ihr Weg zur iSAQB-CPSA-F-Prüfung Bewertung: 0 von 5 Sternen0 BewertungenEinfach Python: Gleich richtig programmieren lernen Bewertung: 0 von 5 Sternen0 BewertungenLean Production - Grundlagen: Das Prinzip der schlanken Produktion verstehen und in der Praxis anwenden. Schlank zur Wertschöpfung! Bewertung: 0 von 5 Sternen0 BewertungenProjektmanagement für Anfänger: Grundlagen, -begriffe und Tools Bewertung: 0 von 5 Sternen0 BewertungenAgiles Produktmanagement mit Scrum: Erfolgreich als Product Owner arbeiten Bewertung: 3 von 5 Sternen3/5Einstieg in Reguläre Ausdrücke Bewertung: 0 von 5 Sternen0 BewertungenScrum: Agiles Projektmanagement erfolgreich einsetzen Bewertung: 4 von 5 Sternen4/5Prinzipien des Softwaredesigns: Entwurfsstrategien für komplexe Systeme Bewertung: 0 von 5 Sternen0 BewertungenAgiles Projektmanagement: Scrum für Einsteiger Bewertung: 0 von 5 Sternen0 BewertungenIT Wissensmanagement: Theorie und Praxis Bewertung: 0 von 5 Sternen0 Bewertungen
Rezensionen für Blockchain kurz & gut
0 Bewertungen0 Rezensionen
Buchvorschau
Blockchain kurz & gut - Kai Brünnler
…
KAPITEL 1
Grundlagen
Blockchains setzen zwei kryptografische Grundbausteine voraus, die wir am Anfang dieses Kapitels kennenlernen: kryptografische Hashfunktionen und digitale Signaturen. Beide sind verhältnismäßig einfach und gut erforscht. Leser mit entsprechendem Vorwissen sind eingeladen, die entsprechenden Abschnitte zu überspringen.
Dann werden wir sehen, wie man auf das berühmte Double-Spending-Problem stößt, wenn man versucht, mithilfe digitaler Signaturen digitales Bargeld zu schaffen. Das Double-Spending-Problem besteht darin, dass ein dezentrales Netzwerk bei zwei widersprüchlichen Transaktionen nicht ohne Weiteres zu einem Konsens darüber kommen kann, welche der beiden Transaktionen gelten soll. Die Blockchain ist in erster Linie eine Lösung dieses Problems.
Danach betrachten wir digitale Zeitstempel oder Timestamping. Zeitstempel sind zum einen eine gute Illustration der Sicherheitseigenschaften von Hashfunktionen und digitalen Signaturen. Zum anderen ist eine Blockchain im Kern eben eine dezentrale Timestamping-Methode: Wenn das Netzwerk die zeitliche Reihenfolge der beiden widersprüchlichen Transaktionen kennen würde, dann könnte es einfach die erste gelten lassen und die zweite verwerfen. Dann wäre das Double-Spending-Problem gelöst.
Dieser dezentrale Timestamping-Mechanismus beruht auf einem weiteren kryptografischen Konzept: Proof-of-Work. Proof-of-Work ist integraler Bestandteil einer Blockchain und bezeichnet eine Methode, mit der man beweisen kann, dass man eine bestimmte Rechenarbeit geleistet hat.
Proof-of-Work wurde schon vor der Erfindung einer Blockchain genutzt, zum Beispiel im sogenannten Hashcash-Protokoll, das dazu dient, Spam zu bekämpfen. Eine Einführung von Proof-of-Work beendet das Kapitel zu den kryptografischen Grundlagen.
Hashfunktionen
Eine Hashfunktion bildet eine Bitfolge beliebiger Länge auf eine Bitfolge fester Länge ab und ist effizient berechenbar.
Eine vielfach verwendete Hashfunktion ist SHA-256. Eine Implementation finden wir zum Beispiel in der Python-Standardbibliothek.
$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type help
, copyright
, credits
or license
for more
information.
>>>
>>> import hashlib
>>> print(hashlib.sha256(bSatoshi Nakamoto
).hexdigest())
a0dc65ffca799873cbea0ac274015b9526505daaaed385155425f7337704883e
>>>
Im gegebenen Beispiel wird der Hash der zugrunde liegenden Bitfolge des Strings Satoshi Nakamoto berechnet. Die Funktion sha256() gibt ein Objekt zurück, das den 256-bittigen binären Ausgabewert der Hashfunktion enthält. Auf diesem wird dann die Funktion hexdigest() aufgerufen, die diesen Ausgabewert in Hexadezimaldarstellung zurückgibt.
Änderungen am Eingabewert führen mit an Sicherheit grenzender Wahrscheinlichkeit zu Änderungen am Ausgabewert. Wenn wir zum Beispiel das letzte Zeichen unseres Eingabestrings ändern, erhalten wir einen völlig anderen Hashwert:
>>> print(hashlib.sha256(bSatoshi Nakamot0
).hexdigest())
73d607aab917435d5e79857769996c95027d4e42172698e0776e1295e285730e
Eine mögliche Anwendung von Hashfunktionen ist das Erkennen von Übertragungsfehlern. Alice hat wenig Platz auf ihrem Laptop, sie will deshalb eine große Datei auf dem Server von Bob speichern und sie lokal löschen. Bevor sie die Datei auf den Server von Bob hochlädt, berechnet sie den Hashwert der Datei und speichert ihn lokal. So kann sie bei späterem Herunterladen der Datei erkennen, ob es zu Übertragungsfehlern gekommen ist: Alice berechnet den Hash der heruntergeladenen Datei und vergleicht ihn mit ihrem lokal gespeicherten Hash. Wenn beide gleich sind, kann Alice davon ausgehen, dass die Datei korrekt übertragen wurde.
Kryptografische Hashfunktionen. Eine kryptografische Hashfunktion ist eine Hashfunktion, die gewisse Sicherheitseigenschaften hat. Die beiden wichtigsten typischerweise geforderten Sicherheitseigenschaften sind die Einwegfunktionseigenschaft (englisch: preimage-resistance) und die Kollisionsresistenz (englisch: collisionresistance). Die Hashfunktion SHA-256 ist eine Einwegfunktion und auch kollisionsresistent.
Diese Definition lässt offen, was mit »praktisch unmöglich« gemeint ist. Eine mathematisch exakte Definition ist für unsere Zwecke zu aufwendig, aber wir bemerken Folgendes:
Es ist nicht unmöglich, einen Eingabewert zu finden, der auf einen gegebenen Ausgabewert abgebildet wird. Eingabewerte sind Bitfolgen. Wir können also wie folgt alle Eingabewerte aufzählen:
(leere Bitfolge), 0, 1, 00, 01, 10, 11, 000, … und so weiter.
Für jeden Eingabewert berechnen wir dabei seinen Hash und vergleichen diesen mit dem gegebenen Ausgabewert. Auf diese Weise finden wir mit Sicherheit irgendwann den passenden Eingabewert.
Aber wie praktikabel ist diese Methode? Für jeden Versuch liegt die Wahrscheinlichkeit, den richtigen Ausgabewert zu treffen, bei 2–256 ≈ 10–77. Selbst wenn eine GPU¹ 10¹⁰ Hashwerte pro Sekunde berechnet und alle 10¹⁰ GPUs der Welt 100 Jahre lang rechnen (rund 10¹⁰ Sekunden), ist die Wahrscheinlichkeit, dass sie diesen Ausgabewert treffen, immer noch praktisch gleich null (10–47).
»Praktisch unmöglich« in der obigen Definition heißt nun, dass kein wesentlich besseres Verfahren zum Finden eines passenden Eingabewerts bekannt ist als das soeben beschriebene.
Sofern Alice in unserem Beispiel eine Einwegfunktion benutzt, um den lokal gespeicherten Hashwert zu berechnen, kann sie sicher sein, dass niemand aus dem Hashwert den Dateiinhalt rekonstruieren kann. Wenn also zum Beispiel Charlie durch Zugriff auf Alice’ Laptop Kenntnis dieses Hashwerts erlangt, kann Alice sicher sein, dass der Dateiinhalt trotzdem vor ihm geheim bleibt.