Prüfen Sie Ihr Zertifikat und seinen Zeitstempel
Bestätigen Sie die Echtheit jedes Bernstein-Blockchain-Zertifikats selbst. Sie müssen dabei keinem Server vertrauen.
Prüfung ohne Vertrauensvorschuss
Unser Prüfwerkzeug ist so gebaut, dass Sie uns nie vertrauen müssen. Alles läuft in Ihrem Browser.
100 % im Browser
Ihre Dateien verlassen nie Ihr Gerät. Hashwerte und Prüfung werden lokal in Ihrem Browser berechnet.
Nachweis aus der Blockchain
Zertifikate werden gegen die unveränderliche Bitcoin-Blockchain geprüft – ganz ohne Vertrauen in einen Server.
Funktioniert offline
Für höchste Sicherheit trennen Sie die Internetverbindung, bevor Sie vertrauliche Dateien laden.
Offene Prüfung
Jeder kann Zertifikate unabhängig mit gängigen Kryptografie-Werkzeugen nachrechnen.
Was Sie prüfen können
Mit unserem Prüfwerkzeug weisen Sie sowohl die Existenz von Dateien als auch Ihre Inhaberschaft am Zertifikat nach.
Existenz nachweisen
Laden Sie Dateien hoch und prüfen Sie, ob sie zu dem in der Bitcoin-Blockchain registrierten Fingerabdruck des Zertifikats passen.
Inhaberschaft nachweisen
Geben Sie Ihre privaten Schlüssel ein und belegen Sie kryptografisch, dass das Zertifikat Ihnen gehört.
Signaturen erzeugen
Erstellen Sie kryptografische Signaturen, um Ihre Inhaberschaft gegenüber Dritten wie Gerichten oder Investoren zu belegen.
Nachweis weitergeben
Exportieren Sie die Prüfdaten, die jeder unabhängig nachvollziehen kann.
So läuft die Prüfung ab
Unsere Zertifikate beruhen auf kryptografischen Standardverfahren, die jeder nachrechnen kann.
SHA-256-Hashwerte
Dateien werden mit demselben Algorithmus gehasht wie Bitcoin. Der Fingerabdruck ist eine eindeutige Kennung genau dieser Dateien.
Verankerung in Bitcoin
Der Fingerabdruck wird in eine Bitcoin-Transaktion eingebettet. So entsteht ein unveränderlicher Zeitstempel im sichersten Register der Welt.
Qualifizierte Zeitstempel
Zusätzliche Zeitstempel staatlich anerkannter Stellen in der EU und in China schaffen rechtliche Anerkennung.
Abgleich des Fingerabdrucks
Laden Sie Ihre Originaldateien hoch. Stimmt der berechnete Fingerabdruck mit dem Blockchain-Eintrag überein, ist die Existenz belegt.
Das Bernstein-Registrierungsprotokoll
Wie Bernstein aus Ihren Dateien ein Blockchain-Zertifikat macht.
Mit Bernstein erstellen Sie für jedes digitale Werk einen überprüfbaren Nachweis von Existenz und Inhaberschaft. Sobald Sie Dateien in ein Projekt laden, bildet Bernstein einen kryptografischen Fingerabdruck und schreibt ihn in die Bitcoin-Blockchain.
Ein Projekt kann mehrere Dateien umfassen und sich über die Zeit weiterentwickeln. Jede zertifizierte Version erzeugt einen neuen Blockchain-Eintrag und ergänzt den lückenlosen Prüfpfad Ihres geistigen Eigentums.
Jedes Bernstein-Zertifikat entspricht einer Bitcoin-Transaktion mit drei zentralen Eigenschaften:
Drei kryptografische Schlüssel
Owner Key
Aus Ihrem Konto abgeleitet. Belegt, wem das Zertifikat gehört. Der zugehörige öffentliche Schlüssel steht auf Ihrem Zertifikats-PDF.
Data Key
Aus dem SHA-256-Hashwert Ihrer Projektdateien abgeleitet. Belegt, welche Dateien das Zertifikat umfasst.
Bernstein Key
Der Plattformschlüssel von Bernstein, der die Transaktion mitzeichnet. Der zugehörige öffentliche Schlüssel steht auf Ihrem Zertifikats-PDF.
Ablauf der Registrierung
Ihre Dateien werden einzeln mit SHA-256 gehasht und anschließend zu einem einzigen Projekt-Fingerabdruck zusammengefasst.
Der Projekt-Fingerabdruck wird in einen privaten Bitcoin-Schlüssel umgewandelt, aus dem der öffentliche Data Key abgeleitet wird.
Data Key, Owner Key und Bernstein Key ergeben zusammen eine 3-von-3-MultiSig-Bitcoin-Adresse.
Eine Bitcoin-Transaktion überweist einen Betrag an diese MultiSig-Adresse und schreibt das Zertifikat dauerhaft in die Blockchain.
Die entstehende Bitcoin-Adresse kodiert alle drei Schlüssel – und belegt damit, wer wann was besaß. Wer die Originaldateien und die öffentlichen Schlüssel hat, kann die Adresse selbst nachbilden und gegen die Blockchain abgleichen.
Prüfung von Hand
Sie brauchen nicht einmal unsere Werkzeuge. Mit den folgenden Schritten prüfen Sie ein Bernstein-Zertifikat unabhängig gegen die Bitcoin-Blockchain – allein mit gängiger kryptografischer Open-Source-Software.
Was Sie dafür brauchen
- Alle Projektdateien und die Cover-Datei des Projekts (aus der Bernstein-App herunterladbar)
- Die Transaktions-ID, die auf dem Zertifikats-PDF von Bernstein steht
- Den Owner Public Key und den Bernstein Public Key, ebenfalls auf dem Zertifikats-PDF
- Grundkenntnisse im Umgang mit einem Terminal
Berechnen Sie den SHA-256-Hashwert jeder einzelnen Datei des Projekts. Dafür gibt es zahlreiche Werkzeuge. Unter Linux oder macOS führen Sie im Terminal folgenden Befehl aus:
Terminal-Befehl:
shasum -a 256 yourfile.pdfSie können auch Online-Dienste nutzen, etwa SHA256 Online Checksum.
SHA-256 ist ein Standardalgorithmus – er liefert unabhängig vom verwendeten Werkzeug immer dasselbe Ergebnis.
Hashen Sie unbedingt auch die Cover-Datei des Projekts. Das ist eine Textdatei mit Projekttitel und Beschreibung, die Sie in der Bernstein-App herunterladen können.
Die Hashwerte zu einem einzigen Projekt-Fingerabdruck zusammenführen:
- Alle einzelnen Hashwerte alphabetisch sortieren
- Sie zu einer einzigen Zeichenkette aneinanderhängen
- Den SHA-256-Hashwert dieser Zeichenkette berechnen
Das Ergebnis ist Ihr Projekt-Fingerabdruck. Sie können ihn mit dem Fingerabdruck abgleichen, den die Bernstein-App zu Ihrem Projekt anzeigt.
Damit sich der Projekt-Hashwert als Bitcoin-Schlüssel nutzen lässt, müssen Sie ihn vom HEX-Format in das WIF-Format (Wallet Import Format) umwandeln. Für diese Umwandlung stellen wir ein Python-Skript bereit.
Installieren Sie zunächst das benötigte Python-Paket:
pip install base58Speichern Sie das folgende Python-Skript als hex2wif.py:
import sys, hashlib, base58
def hex_to_wif(hex_key):
extended = "80" + hex_key + "01"
first_sha = hashlib.sha256(bytes.fromhex(extended)).digest()
second_sha = hashlib.sha256(first_sha).digest()
checksum = second_sha[:4].hex()
return base58.b58encode(bytes.fromhex(extended + checksum)).decode()
if __name__ == "__main__":
if len(sys.argv) != 2:
print("Usage: python hex2wif.py <your-project-hash-hex>")
sys.exit(1)
print(hex_to_wif(sys.argv[1]))
Führen Sie das Skript anschließend mit Ihrem Projekt-Hashwert aus:
python hex2wif.py <your-project-hash-hex>Das Skript gibt den zugehörigen Schlüssel im WIF-Format aus. Das Ergebnis können Sie in der Bernstein-App überprüfen, indem Sie auf das Schlüsselsymbol neben dem Blockchain-Zertifikat Ihres Projekts klicken.
In diesem Schritt leiten Sie aus dem WIF-Schlüssel aus Schritt 2 den komprimierten öffentlichen Schlüssel ab. Das ist eine kryptografische Standardoperation von Bitcoin.
Dafür können Sie dieses Online-Werkzeug nutzen: Bitcoin Key Compression Tool
Fügen Sie den WIF-Schlüssel aus Schritt 2 ein; das Werkzeug gibt den zugehörigen komprimierten öffentlichen Schlüssel aus. Das ist der Data Public Key – einer der drei Schlüssel, aus denen die Zertifikatsadresse entsteht.
Sobald Sie den Data Public Key aus Ihren Dateien abgeleitet haben, verbinden Sie ihn mit dem Owner Public Key und dem Bernstein Public Key – beide stehen auf dem Zertifikats-PDF – zur 3-von-3-MultiSig-Bitcoin-Adresse.
Speichern Sie das folgende Ruby-Skript und führen Sie es aus:
require 'digest'
require 'base58'
require 'bech32'
def decode_hex(hex)
[hex].pack('H*')
end
def sha256(data)
Digest::SHA256.digest(data)
end
def hash160(data)
Digest::RipeMD160.digest(sha256(data))
end
def p2sh_multisig(keys)
script = "\x53" # OP_3
keys.sort.each { |k| script += [k.length / 2].pack('C') + decode_hex(k) }
script += "\x53\xae" # OP_3 OP_CHECKMULTISIG
h = hash160(script)
version = "\x05"
payload = version + h
checksum = sha256(sha256(payload))[0..3]
Base58.binary_to_base58(payload + checksum, :bitcoin)
end
def p2wsh_multisig(keys)
script = "\x53"
keys.sort.each { |k| script += [k.length / 2].pack('C') + decode_hex(k) }
script += "\x53\xae"
witness_hash = sha256(script)
Bech32::SegwitAddr.new(hrp: 'bc', ver: 0,
bytes: witness_hash.unpack('C*')).addr
end
puts "Select protocol version:"
puts "1 - Protocol 1 (P2SH)"
puts "2 - Protocol 2 (P2WSH SegWit)"
version = gets.chomp.to_i
keys = []
%w[Data Owner Bernstein].each do |name|
print "Enter #{name} Public Key: "
keys << gets.chomp
end
address = version == 1 ? p2sh_multisig(keys) : p2wsh_multisig(keys)
puts "\nBitcoin Address: #{address}"
Starten Sie das Skript im Terminal:
ruby multisig.rbFolgen Sie den Eingabeaufforderungen: Wählen Sie Ihre Protokollversion und geben Sie danach die drei öffentlichen Schlüssel nacheinander ein. Das Skript gibt die Bitcoin-Adresse aus.
Protokoll 1 (Legacy) erzeugt eine P2SH-Adresse, Protokoll 2 (aktuell) eine SegWit-P2WSH-Adresse. Auf Ihrem Zertifikat steht, welche Protokollversion gilt.
Schlagen Sie zuletzt die Transaktions-ID von Ihrem Zertifikats-PDF in einem beliebigen Blockchain-Explorer nach.
Wir empfehlen Blockstream.info orBlockchair.com.
Suchen Sie die Adresse in der Ausgabeliste der Transaktion und vergleichen Sie sie mit der Adresse aus Schritt 4.
Herzlichen Glückwunsch – Sie haben Existenz und Unversehrtheit der Inhalte Ihres Projekts eigenständig nachgewiesen, ohne sich auf Dritte stützen zu müssen.