Blockchain kurz & gut
By Kai Brünnler
()
About this ebook
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.
Related to Blockchain kurz & gut
Related ebooks
Algorithmen: Grundlagen und Implementierung Rating: 0 out of 5 stars0 ratingsEinstieg ins Machine Learning: Grundlagen, Prinzipien, erste Schritte Rating: 0 out of 5 stars0 ratingsBlockchain: Praktische Anwendungen, Praktisches Verständnis Rating: 0 out of 5 stars0 ratingsNeuronale Netze selbst programmieren: Ein verständlicher Einstieg mit Python Rating: 0 out of 5 stars0 ratingsEigene Spiele programmieren – Python lernen: Der spielerische Weg zur Programmiersprache Rating: 0 out of 5 stars0 ratingsPython programmieren lernen: Der spielerische Einstieg mit Minecraft Rating: 0 out of 5 stars0 ratingsSharePoint Kompendium - Bd. 16 Rating: 0 out of 5 stars0 ratingsMehr Hacking mit Python: Eigene Tools entwickeln für Hacker und Pentester Rating: 0 out of 5 stars0 ratingsWebseiten hacken: Schnelleinstieg inkl. Entwicklung eigener Angriffsscripte Rating: 0 out of 5 stars0 ratingsBlockchain für Manager: So nutzen Sie die revolutionäre Technik für Ihr Business Rating: 0 out of 5 stars0 ratingsC# 10 – kurz & gut Rating: 0 out of 5 stars0 ratingsLinux – kurz & gut: Die wichtigen Befehle Rating: 4 out of 5 stars4/5Deep Learning – Grundlagen und Implementierung: Neuronale Netze mit Python und PyTorch programmieren Rating: 0 out of 5 stars0 ratings.NET-Praxis: Tipps und Tricks zu .NET und Visual Studio Rating: 0 out of 5 stars0 ratingsKryptologie-Kompendium: Mathematik für Anwendungen Band 2 Rating: 0 out of 5 stars0 ratingsC++-Standardbibliothek - kurz & gut Rating: 0 out of 5 stars0 ratingsGitHub – Eine praktische Einführung: Von den ersten Schritten bis zu eigenen GitHub Actions Rating: 0 out of 5 stars0 ratingsLinux Befehlsreferenz: Schnelleinstieg in die Arbeit mit der Konsole, regulären Ausdrücken und Shellscripting Rating: 0 out of 5 stars0 ratingsNichts ist sicher: Tricks und Techniken von Cyberkriminellen verstehen und sich schützen Rating: 5 out of 5 stars5/5Hacken mit Kali-Linux: Schnelleinstieg für Anfänger Rating: 0 out of 5 stars0 ratingsEIGENE Blockchain und Smart Contract's erstellen: Für Anfänger geeignet, Schritt für Schritt Erklärung Rating: 0 out of 5 stars0 ratingsHacken mit Python und Kali-Linux: Entwicklung eigener Hackingtools mit Python unter Kali-Linux Rating: 0 out of 5 stars0 ratingsVue.js kurz & gut Rating: 0 out of 5 stars0 ratingsKids programmieren 3D-Spiele mit JavaScript Rating: 0 out of 5 stars0 ratingsPraxiseinstieg Deep Learning: Mit Python, Caffe, TensorFlow und Spark eigene Deep-Learning-Anwendungen erstellen Rating: 0 out of 5 stars0 ratingsMicrosoft KINECT: Programmierung des Sensorsystems Rating: 0 out of 5 stars0 ratingsBitcoin – kurz & gut Rating: 0 out of 5 stars0 ratingsEinstieg in die Datenanalyse mit SPSS Rating: 0 out of 5 stars0 ratingsTinkercad | Schritt für Schritt: 3D-Objekte (CAD) erstellen, Schaltpläne entwerfen und Programmieren lernen Rating: 0 out of 5 stars0 ratings
Software Development & Engineering For You
Agiles Projektmanagement: Scrum für Einsteiger Rating: 0 out of 5 stars0 ratingsProgrammieren lernen mit Python 3: Schnelleinstieg für Beginner Rating: 0 out of 5 stars0 ratingsSketchnotes in der IT: Abstrakte Themen mit Leichtigkeit visualisieren Rating: 0 out of 5 stars0 ratingsKOMA-Script: Eine Sammlung von Klassen und Paketen für LaTeX 2e Rating: 0 out of 5 stars0 ratings3D-Drucken für Einsteiger: Ohne Frust 3D-Drucker selbst nutzen Rating: 0 out of 5 stars0 ratingsEinstieg in Reguläre Ausdrücke Rating: 0 out of 5 stars0 ratingsDigital Painting Workbook Rating: 0 out of 5 stars0 ratingsProjekt Unicorn: Der Roman. Über Entwickler, Digital Disruption und das Überleben im Datenzeitalter Rating: 0 out of 5 stars0 ratingsProjektmanagement für Anfänger: Grundlagen, -begriffe und Tools Rating: 0 out of 5 stars0 ratingsDesign Thinking für Anfänger: Innovation als Faktor für unternehmerischen Erfolg Rating: 0 out of 5 stars0 ratingsDas große Python3 Workbook: Mit vielen Beispielen und Übungen - Programmieren leicht gemacht! Rating: 4 out of 5 stars4/5Kanban für Anfänger: Grundlegendes über den Einsatz von Kanban in der Industrie und der Softwareentwicklung Rating: 0 out of 5 stars0 ratingsLean Production - Grundlagen: Das Prinzip der schlanken Produktion verstehen und in der Praxis anwenden. Schlank zur Wertschöpfung! Rating: 0 out of 5 stars0 ratings50 Arten, Nein zu sagen: Effektives Stakeholder-Management für Product Owner Rating: 0 out of 5 stars0 ratingsKompaktes Managementwissen: Die Grunstruktur agiler Prozesse Rating: 0 out of 5 stars0 ratingsEinfach Java: Gleich richtig programmieren lernen Rating: 0 out of 5 stars0 ratingsSoftwareentwicklungsprozess: Von der ersten Idee bis zur Installation Rating: 0 out of 5 stars0 ratingsAgiles Coaching als Erfolgsfaktor: Grundlagen des Coachings, um Agile Teams erfolgreich zu managen Rating: 0 out of 5 stars0 ratingsAgile Spiele – kurz & gut: Für Agile Coaches und Scrum Master Rating: 0 out of 5 stars0 ratingsAutomatisiertes Testen: Testautomatisierung mit Geb und ScalaTest Rating: 0 out of 5 stars0 ratingsScrum: Agiles Projektmanagement erfolgreich einsetzen Rating: 4 out of 5 stars4/5Einfach Python: Gleich richtig programmieren lernen Rating: 0 out of 5 stars0 ratingsAgiles Requirements Engineering und Testen Rating: 0 out of 5 stars0 ratingsPrinzipien des Softwaredesigns: Entwurfsstrategien für komplexe Systeme Rating: 0 out of 5 stars0 ratingsAgiliät und Continuous Delivery Rating: 0 out of 5 stars0 ratingsLean Management für Einsteiger: Erfolgsfaktoren für Lean Management – Lean Leadership & Co. als langfristige Erfolgsgaranten Rating: 0 out of 5 stars0 ratingsBessere Softwareentwicklung mit DevOps Rating: 0 out of 5 stars0 ratingsBaukunst für Softwarearchitekten: Was Software mit Architektur zu tun hat Rating: 0 out of 5 stars0 ratingsGrundlagen und Methoden der Wirtschaftsinformatik: Eine anwendungsorientierte Einführung Rating: 0 out of 5 stars0 ratings
Reviews for Blockchain kurz & gut
0 ratings0 reviews
Book preview
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.