Archiv der Kategorie: Open Source

Shamir’s Secret Sharing

If someone needs a SSS implementation in PHP which is compatible to Ian Coleman’s „Shamir Secret Sharing Scheme“ – feel free to use https://github.com/chris2286266/sss.

801f451fdf31c4294a23a9b64d8c6dd9bbdb751b6068b6ffd5bd5a32004f6ebc220860efda065977f254567f5c6066484f5c004342165992a3b00ab13ffe3c32c3fad256ed12f8f55e52949308b4f2cec4c9d698d71a3498bcf3ad49cc4fda350af20df5ddd757cb29e84e63445f30a3e0e9d29f357d5ba65f702f96bebda3d21f7

802e44a7e3097d079459cbe33e17c341d37c4bcbd6a46dbbac1d7c835e7c8764e0532ebebb1ef15c87ace1bbb0bbfda25c6d5886acd562ded8410632afd52d275831427b6fb90bfbefa1f674ed51e4bbd19b8b3c5f15e4b6f5f3b3b5be97d794af89090e39f34e27bdb6a5debcda6887e7ab92fcc0dd053afcf3282912d411bdb04

803101b83c38b92ede7a6255739bae9868a73ed0b6ccdb4479a026b15e33e9d8c25b4e516118a82b75f8b7c4ecdb9bea133158c5eec33b4c7bf10c83902b11159bcb902d82abf30eb1f362e7e5e5167515525da4880fd02e49001efc72d80da1a57b04fbe42419ec945eebbdf885583405d242b3f6105c9ca413014faac9b48fab6

8049113a26bb5f0dffaa20fadf26b1ee233731d7051a5bf005e2efba3486922e703e830fbe857b255348c45464495e18a558a37dc81e65219fa6066649fba805ec879e7c4e622a9315d173d24e806da9a0c2be2b8b3a8d553e957745322a87a1b3b5af1a2c337b1fe6435b0fd863848f4fb2d0159c83cb3caeebcff3e9905eff527

80565425f98a9b24b589894c92aadc3798ec44cc6572ed0fd05fb58834c9fc925236e3e064832252a11c922b38293850ea04a33e8a083cb33c160cd7760594372f7d4c2aa370d2664b83e74146349f67640b68b35c20b9cd8266da0cfe655d94b947a2eff1e42cd4cfab156c9c3cb43cadcb005aaa4e929af60be695518dfbcd495

Automatische Notarisierung von Software Artefakten

Git‑basierte Workflows liefern lückenlose Versionsnachverfolgung, automatisierte Qualitätsprüfungen und reproduzierbare Builds. Durch die Verknüpfung von Branch‑Strategien, CI/CD‑Pipelines und Toolchains wird der gesamte Entwicklungs‑ bis Release‑Prozess effizienter und zuverlässiger.

Um die Integrität von erzeugten Artefakten sicherzustellen und im Anlassfall eindeutig beweisen zu können, bietet sich die Blockchain-Technologie an.

Im Build‑Schritt wird für jedes Artefakt ein eindeutiger Hashwert erzeugt und mittels eines kryptografischen Schlüsselpaares in eine Blockchain geschrieben. Der private Schlüssel signiert den Eintrag, der öffentliche Schlüssel ermöglicht die Rückverfolgung des Erstellers. Die dezentrale, unveränderbare Struktur der Blockchain garantiert dauerhafte Integrität, fälschungssicheren Zeitstempel und transparente Herkunftsnachweise – ohne manuelles Eingreifen kann die Notarisierung direkt in Build‑Skripte eingebunden werden.

Das Verfahren wird bereits in Österreich über die Austrian Public Service Blockchain (APSB) vom Gesundheitsministerium für eHDSI‑Projekte sowie in der Private‑Sector‑Blockchain (PSBC) von Unternehmen genutzt. Es kombiniert Unveränderbarkeit und Dezentralität mit einem asymmetrischen Kryptosystem und eignet sich besonders dort, wo Integrität, Nachvollziehbarkeit und zeitliche Dokumentation von Artefakten entscheidend sind.

Aufruf des Notarisierungs-APIs

Automatischer Aufruf des Notarisierungs-APIs nach Build Success im Build-Job

Proof in der Blockchain (TimeStamp/Blocktime, Hashwert und Metadaten)

Verifikation über Web-GUI – am Beispiel https://daten-zertifizierung.at

PDF Version incl. erweiterteter Beschreibung: Notarisierung-SW-Artefakte_v03.pdf

Update 3.8.2026: Danke an Google Notebook für die Erstellung dieses Podcasts 😉

Die Scripts zur Integration in Git-basierte Umgebungen werden demnächst als Open Source veröffentlicht.

Enjoy …

DocNoS-API-StarterKit

DocNoS API StarterKit (de)

Der von der „AustriaPro“ und der „Blockchain Initiative Austria“ gemeinsam entwickelte Demonstrator „docnos3-testclient“ , mit dem Notarisierungen von Dokumenten auf der „Private Sector Blockchain“ und der „Austrian Public Service Blockchain“ erstellt und verifiziert werden können, wurde in eine neue Form gebracht und (auf mehrfachen Wunsch hin) nicht nur in PHP, sondern nun auch in Python und Java als „DocNoS-API-StarterKit“ publiziert.

Der Code ist publiziert unter: https://github.com/austriapro/blockchain/tree/master/DocNoS-API-StarterKit

DocNoS API StarterKit (en)

The „docnos3-testclient“ demonstrator, jointly developed by „AustriaPro“ and the „Blockchain Initiative Austria“ , which can be used to create and verify notarizations of documents on the „Private Sector Blockchain“ and the „Austrian Public Service Blockchain“ has been redesigned and (by popular request) published not only in PHP, but now also in Python and Java as the „DocNoS API Starter Kit.“

The code is published at: https://github.com/austriapro/blockchain/tree/master/DocNoS-API-StarterKit

MultiChain Tools erweitert

Auf mehrfachen Wunsch habe ich die beiden Blockchain-Tools „Multichain GUI“ und „MultiChain-API-PHP“ erweitert.

Das Multichain GUI, ein Web-GUI für MultiChain Blockchains wurde mit einer integrierten Access Control versehen, mit der das GUI selbst aber auch die „mc-info“ Funktion, die z.B. für Monitoring verwendet werden kann, mit unterschiedlichen Credentials (Username, Passwort) abgesichert werden können. Weiters wurden die Seiten „info“ und „help“ hinzugefügt.

Weitere Infos und Download: https://github.com/baumann-at/MultiChain-GUI

Beim MultiChain API (eine PHP Klasse, die Aufrufe an das Multichain REST-API kapselt) gab es kleinere Erweiterungen, die die Versionen des Nodes und Protokols bereitstellen. Weiters habe ich Beispiel-Code dazu bereitgestellt.

Weitere Infos und Download: https://github.com/baumann-at/MultiChain-API-PHP

Enjoy …

Fermat Faktorisierung

Letztlich von Klaus Schmeh in seiner Crypto Kolumne daran erinnert worden, habe ich mich dann abends hingesetzt und die Faktorisierungsmethode von Fermat implementiert:

https://github.com/chris2286266/fermat-factorizer

Ich weiss, es gibt schon einige Implementierungen, wollte aber trotzdem eine eigene machen 😉

Recht interessant fand ich, dass n=630548215070129547156718332495889632234434145411971275888376987603260225252787926135276738944105689100036295535868141424386536403649578707699128189491432138631900590774729214990015369102760964884776344849717811484309528915040117952098061886881
bereits nach der ersten Iteration „geknackt“ ist …

 

Multichain GUI verfügbar

Das Multichain GUI ist ein einfaches Web GUI für MuiltiChain basierte Blockchains. Mit ihm kann man ein oder mehrere Blockchain Instanzen administrieren, Daten anzeigen und eintragen etc.

Ich habe die Originalversion von Coin Science (MultiChain Web Demo) geforkt und mit einigen erweiterten bzw neuen Features ausgestattet.

Die bestehende Funktionen (abhängig von den verfügbaren Berechtigungen auf der jeweiligen Blockchain Instanz) sind:

  • Anzeigen des Status eines Blockchain Nodes und der verbundenen Nodes
  • Vergeben von „Labels“, d.h. Bezeichnungen für Adressen
  • Anzeigen und Setzen von Berechtigungen für Adressen
  • Erstellen, Bearbeiten und Versenden von Assets
  • Erstellen von Streams
  • Daten in Streams publizieren (Files, JSON-Format oder Textformat)
  • Anzeigen von Stream Items incl. Auswahl pro Key oder Publisher

Neue bzw. geänderete Funktionen:

  • Die Konfiguration wurde abgesichert und erweitert.
  • Zu den verbundenen Nodes werden mehr Details angezeigt.
  • Ein (einfacher) Blockexplorer wurde integriert, um eine Liste aller Blöcke sowie Details zu jedem Block anzuzeigen.
  • Ein Monitoring Endpoint wurde eingebaut, um Multichain Blockchainnodes komfortabel überwachen zu können.

Beispiel: Detailansicht eines Blockes im Blockexplorer

Die Voraussetzungen für den Einsatz sind: Ein Webserver mit PHP und curl. Das Multichain GUI ist auf Gitub verfügbar.

Enjoy 😉

WKO Datenzertifizierung – jetzt in Echtbetrieb

Seit Mitte November 2019 ist das Blockchain-Service Datenzertifizierung in Echtbetrieb. Damit können beliebige elektronische Dokumente (also alle Dateitypen) „digital zertifiziert“ werden. Dabei wird von dem betreffenden Dokument ein digitaler Fingerabdruck errechnet (der sog. Hashwert) und gemeinsam mit einem Zeitstempel in einer Blockchain gesichert d.h. unmanipulierbar protokolliert.

Wenn zu einem späteren Zeitpunkt bewiesen werden soll, dass das elektronische Dokument bereits früher (also zum Zeitpunkt der Zertifizierung) exakt so vorgelegen ist und nicht verändert wurde, kann dies bestätigt werden, z.B. indem der Fingerabdruck erneut errechnet und in der Blockchain der entsprechende Eintrag gesucht wird.

Die dabei verwendete Blockchain nennt sich „Austrian Public Service Blockchain“ und wird von Institutionen aus dem öffentlichen Bereich gemeinsam betrieben. Die darunterliegende Technologie ist „MultiChain“ eine verbreitete OpenSource Blockchain Plattform. Das System ist als sog. „Konsortium-Chain“ aufgebaut, d.h. es erfordert KEIN energieintensives „Proof-Of-Work“ Verfahren zum Verarbeiten der Transaktionen und zur Erstellung neuer Blöcke!

Weitere Details dazu beschreibt die WKO auf der Seite „Blockchain-Service Datenzertifizierung“.

Die „Kreativwirtschaft Austria“ hat als eine der ersten Organisationen das WKO Service Datenzertifizierung aufgenommen und empfiehlt ihren Mitgliedern ihren kreativen Content (Grafikdesign, Texte, Pläne, Fotos, Software usw.) damit zu schützen, etwa um den Zeitpunkt der Urheberschaft belegen zu können.

Im Kreativwirtschaftsdepot wurde dazu der interessante Artikel „Für dich und dein Urheberrecht!“ veröffentlicht.

Weitere Usecases – etwa aus dem Bildungsbereich – werden gerade entwickelt und umgesetzt. Auch ein (etwas abgewandeltes) Blockchain-System für die Nutzung durch Unternehmen bzw. andere nicht-öffentliche Institutionen ist gerade im Entstehen. Es bleibt also spannend!


Ich freue mich, dass ich im Rahmen dieses Projektes meine Expertise in unterschiedlichen Bereichen (Systemdesign, Blockchainprogrammierung, Entwurf von Spezifikationen, Implementierung von APIs usw.) einbringen konnte.

Hacktoberfest 2017

Ja! Heute habe ich es endlich bekommen … das Hacktoberfest – T-Shirt!

My Hacktoberfest Shirt 😉

Aber … der Reihe nach:

Irgendwann im Herbst letztes Jahr fragte mich mein lieber Kollege M. (ja, derselbe wie beim Thema NodeRED & Blockchain – aber das ist eine andere Geschichte), ob ich auch beim Hacktoberfest 2017 mitmachen würde.

Man müsse zwischen 1. und 31. Oktober 2017 mindestens 4 Pull-Requests bei Github machen. 4 Pull-Requests in einem Monat? Natürlich gar kein Problem!

In Summe gab es ca. 31.000 Github-User, die knappe 240.000 Pull-Requests in ca. 64.000 Repositories anlegten. Natürlich waren sehr viele Repositories dabei, die extra für den Contest angelegt wurden (z.B. https://github.com/AliceWonderland/hacktoberfest), aber immerhin …

Eine sehr coole Idee, Opensource populärer zu machen, finde ich. Danke an DigitalOcean und Github dafür. Und natürlich auch für’s T-Shirt 😉

Freue mich schon auf Oktober 2018!

MQTT, Node-RED & Blockchain

Und noch eine Kopplung eines IoT Systems mit einer Blockchain …

Ich hoffe, es wird nicht langweilig. Aber mein lieber Kollege M. wollte es unbedingt sehen: „Zeig mir doch, wie man mit Node-RED in die Blockchain schreiben kann, aber getriggert über MQTT, wenn’s geht.“

Also gut:

Die zu protokollierenden Daten werden über einen MQTT Publisher an einen MQTT Broker gesendet. Ich verwende hier als Broker das (Opensource) System von Mosquitto.org.

MQTT & Node-RED & Blockchain – Übersicht

In Node-RED sorgt ein simpler Flow dafür, dass die Daten, die über den MQTT Subscriber eintreffen, nach einer Umformatierung der Json-Datenstruktur über WebSockets an den IoT-Interface Node gesendet werden.

Node-RED – Blockchain – Flow

Der Interface Node (auch bereits beim IoT-Demo und beim Alexa Demo verwendet) nimmt die Daten entgegen und …

Node-RED – Blockchain – Interface Node

… protokolliert sie dann in der Blockchain. Hier verwende ich natürlich wieder meinen Favoriten, die Multichain!

Multichain-Stream „DeviceLog“, der die von Node-RED und den anderen Demos eingetragenen Daten beinhaltet.

Aja … der MQTT Publisher: Da gibt es mehrere Möglichkeiten. Um es schnell und einfach zu machen, habe ich ein fertiges Beispiel genommen (https://github.com/CloudMQTT/python-mqtt-example/) und (in den Zeilen 58 und 60) den Url und das Topic entsprechend angepasst.

Und das war es auch schon …

LG an Kollegen M. 😉

Blockchain – Internet of Things

In einem Proof of Concept wird hier gezeigt, wie ich eine bidirektionale Kopplung einer Blockchain mit dem „Internet of Things“ (d.h. mit IoT-Devices) implementiert habe.

Von Blockchain Nodes können „Assets“ an IoT-Devices gesendet werden, welche dann entsprechend reagieren. Ein „Asset“ kann als „Wert“ (ähnlich einer Währung) gesehen werden, auf dessen Basis das IoT-Device eine Aktion durchführt, z.B. ein bestimmte Leistung für eine bestimmte Zeit erbringt.

Unabhängig davon kann das IoT-Device bei bestimmten Ereignissen (z.B. Sensorinputs) entsprechende Daten in der Blockchain protokollieren lassen.

Die Blockchain Technologie sorgt in diesem Aufbau also einerseits für die dezentrale Übermittlung der Daten zwischen den Systemteilnehmern (peer to peer), andererseits für die unveränderliche Protokollierung aller entsprechenden Aktionen (Steuerbefehl, Antwort darauf) und zusätzlicher Ereignisse (Sensoren).

In diesem Setup wird eine „permissioned Blockchain“ verwendet, d.h. es sind nur bekannte (authentifizierte) Systemteilnehmer zugelassen.

Systemaufbau

Blockchain – IoT Kopplung – Übersicht

Blockchain

Als Blockchain-Technologie wird eine entsprechend konfigurierte Installation von „Multichain“ eingesetzt, die seit Kurzem als Version 1.0 gelaunched wurde. Das System muss aus (mindestens) zwei Nodes bestehen, hier als Seednode und IoT-Interface Node bezeichnet. Ein Echtsystem besteht natürlich aus mehreren weiteren Nodes.

Seednode

Der Seednode ist der „erste“ Node der hier verwendeten Blockchain und stellt u.a. die initialen Konfigurationsdaten zur Verfügung. Der Node kann über ein Web-GUI angesprochen werden:

MultiChain Web-GUI – Anzeige der Nodes

Damit können die Aktionen komfortabler als über die Commandline erledigt werden: Senden der Assets und Beauskunften der Streams.

IoT-Interface Node

Auf diesem Node läuft ein Script, welches bei definierten Ereignissen in der Blockchain (z.B. Empfang von Assets) aufgerufen wird, mit dem IoT-Device per WebSockets kommuniziert und Rückmeldungen von diesem in „Streams“ in der Blockchain protokolliert.

Seednode: Senden von Assets an den Interface-Node

Unabhängig davon kann das IoT-Device weitere Daten an den Interface Node senden, der die entsprechenden Einträge in den Blockchain Streams erzeugt.

IoT-Device

Der Demoaufbau verwendet als IoT Device einen Rasperry Pi 3B. Auf diesem läuft ein WebSocket-Client, welcher mit dem Interface Node kommuniziert und die Steuerungsaufgabe ausführt, wie das Schalten der Aktoren (z.B. Lampe für die gewünschte Zeitdauer) und das Einlesen der Sensoren.

Rasperry Pi 3 mit Sense Hat als IoT Device

Stream „DeviceLog“ – Protokollierung von Meldungen des IoT Devices

In einem nächsten Schritt soll – in Zusammenarbeit mit DI Uwe Schimon von der IVM GmbH – das System um Smart Contracts auf Basis Ethereum erweitert werden.

Stay tuned!