Prüfung

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

100 % im Browser

Ihre Dateien verlassen nie Ihr Gerät. Hashwerte und Prüfung werden lokal in Ihrem Browser berechnet.

Nachweis aus der Blockchain

Nachweis aus der Blockchain

Zertifikate werden gegen die unveränderliche Bitcoin-Blockchain geprüft – ganz ohne Vertrauen in einen Server.

Funktioniert offline

Funktioniert offline

Für höchste Sicherheit trennen Sie die Internetverbindung, bevor Sie vertrauliche Dateien laden.

Offene Prüfung

Offene Prüfung

Jeder kann Zertifikate unabhängig mit gängigen Kryptografie-Werkzeugen nachrechnen.

Funktionen

Was Sie prüfen können

Mit unserem Prüfwerkzeug weisen Sie sowohl die Existenz von Dateien als auch Ihre Inhaberschaft am Zertifikat nach.

01

Existenz nachweisen

Laden Sie Dateien hoch und prüfen Sie, ob sie zu dem in der Bitcoin-Blockchain registrierten Fingerabdruck des Zertifikats passen.

02

Inhaberschaft nachweisen

Geben Sie Ihre privaten Schlüssel ein und belegen Sie kryptografisch, dass das Zertifikat Ihnen gehört.

03

Signaturen erzeugen

Erstellen Sie kryptografische Signaturen, um Ihre Inhaberschaft gegenüber Dritten wie Gerichten oder Investoren zu belegen.

04

Nachweis weitergeben

Exportieren Sie die Prüfdaten, die jeder unabhängig nachvollziehen kann.

Technik

So läuft die Prüfung ab

Unsere Zertifikate beruhen auf kryptografischen Standardverfahren, die jeder nachrechnen kann.

SHA-256-Hashwerte

SHA-256-Hashwerte

Dateien werden mit demselben Algorithmus gehasht wie Bitcoin. Der Fingerabdruck ist eine eindeutige Kennung genau dieser Dateien.

Verankerung in Bitcoin

Verankerung in Bitcoin

Der Fingerabdruck wird in eine Bitcoin-Transaktion eingebettet. So entsteht ein unveränderlicher Zeitstempel im sichersten Register der Welt.

Qualifizierte & vertrauenswürdige Zeitstempel

Qualifizierte & vertrauenswürdige Zeitstempel

In den Scale- und Enterprise-Tarifen sorgen qualifizierte EU-Zeitstempel und vertrauenswürdige Zeitstempel aus China für eine unabhängige Datierung. Für den EU-Zeitstempel gilt in der gesamten EU die gesetzliche Vermutung der Richtigkeit.

Abgleich des Fingerabdrucks

Abgleich des Fingerabdrucks

Laden Sie Ihre Originaldateien hoch. Stimmt der berechnete Fingerabdruck mit dem Blockchain-Eintrag überein, ist die Existenz belegt.

Protokoll

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:

  • Öffentlich – für jeden im Bitcoin-Netzwerk einsehbar
  • Mit Zeitstempel – verankert in einem bestimmten Block mit genauem Datum und genauer Uhrzeit
  • Unveränderlich – nach der Bestätigung weder änderbar noch löschbar

Drei kryptografische Schlüssel

Owner Key

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

Data Key

Aus dem SHA-256-Hashwert Ihrer Projektdateien abgeleitet. Belegt, welche Dateien das Zertifikat umfasst.

Bernstein Key

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

01

Ihre Dateien werden einzeln mit SHA-256 gehasht und anschließend zu einem einzigen Projekt-Fingerabdruck zusammengefasst.

02

Der Projekt-Fingerabdruck wird in einen privaten Bitcoin-Schlüssel umgewandelt, aus dem der öffentliche Data Key abgeleitet wird.

03

Data Key, Owner Key und Bernstein Key ergeben zusammen eine 3-von-3-MultiSig-Bitcoin-Adresse.

04

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.

Für Fortgeschrittene

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.pdf

Nutzen Sie lieber ein Werkzeug auf Ihrem eigenen Computer als einen Online-Dienst: Ihre Dateien müssen Ihr Gerät nie verlassen.

SHA-256 ist ein Standardalgorithmus – er liefert unabhängig vom verwendeten Werkzeug immer dasselbe Ergebnis.

Hashen Sie unbedingt auch die Cover-Datei des Projekts: eine Textdatei namens „Cover - <Version ID>.txt“ mit Projekttitel, Beschreibung, Projekt-ID und Versions-ID. Die Bernstein-App exportiert sie für jede zertifizierte Version.

Die Hashwerte zu einem einzigen Projekt-Fingerabdruck zusammenführen:
  1. Alle einzelnen Hashwerte alphabetisch sortieren
  2. Sie zu einer einzigen Zeichenkette aneinanderhängen
  3. Den SHA-256-Hashwert dieser Zeichenkette berechnen

Oder erledigen Sie alles mit einem einzigen Terminal-Befehl (Protokoll 2):

shasum -a 256 "Cover - <Version ID>.txt" file1.pdf file2.png | cut -d' ' -f1 | LC_ALL=C sort | tr -d '\n' | shasum -a 256

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 base58

Speichern 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.

Installieren Sie die beiden Python-Pakete, die das Skript benötigt:

pip install base58 ecdsa

Speichern Sie dieses Python-Skript als wif2pub.py und führen Sie es mit dem WIF-Schlüssel aus Schritt 2 aus. Es läuft offline auf Ihrem Computer:

import sys, base58
from ecdsa import SECP256k1, SigningKey

raw = base58.b58decode_check(sys.argv[1])
assert raw[0] == 0x80 and len(raw) == 34 and raw[33] == 0x01, "not a compressed mainnet WIF key"
key = SigningKey.from_string(raw[1:33], curve=SECP256k1).get_verifying_key()
print(key.to_string("compressed").hex())
python wif2pub.py <your-wif-key>

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.

Installieren Sie die beiden Ruby-Gems, die das Skript benötigt:

gem install base58 bech32

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::RMD160.digest(sha256(data))
end

# The 3-of-3 redeem script, keys in Bernstein's fixed order: owner, data, Bernstein. Do NOT sort them.
def redeem_script(keys)
  script = "\x53".b # OP_3
  keys.each { |k| script << [k.length / 2].pack('C') << decode_hex(k) }
  script << "\x53\xae".b # OP_3 OP_CHECKMULTISIG
end

# Legacy P2SH - addresses starting with 3
def p2sh_multisig(keys)
  payload = "\x05".b + hash160(redeem_script(keys))
  checksum = sha256(sha256(payload))[0..3]
  Base58.binary_to_base58(payload + checksum, :bitcoin)
end

# P2WSH (SegWit) - addresses starting with bc1q
def p2wsh_multisig(keys)
  segwit = Bech32::SegwitAddr.new
  segwit.hrp = 'bc'
  segwit.ver = 0
  segwit.prog = sha256(redeem_script(keys)).unpack('C*')
  segwit.addr
end

puts "Select the address type printed on your certificate:"
puts "1 - P2SH (legacy, address starts with 3)"
puts "2 - P2WSH (SegWit, address starts with bc1q)"
version = gets.chomp.to_i

keys = []
%w[Owner Data 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.rb

Folgen Sie den Eingabeaufforderungen: Wählen Sie den Adresstyp, der auf Ihrem Zertifikat steht, und geben Sie dann den Owner Public Key, den Data Public Key und den Bernstein Public Key in genau dieser Reihenfolge ein. Sortieren Sie die Schlüssel nicht: Eine andere Reihenfolge ergibt eine andere Adresse. Das Skript gibt die Bitcoin-Adresse aus.

Der Adresstyp ist unabhängig vom Fingerabdruck-Protokoll. Zertifikate seit August 2018 verwenden eine SegWit-P2WSH-Adresse (beginnt mit bc1q), ältere eine klassische P2SH-Adresse (beginnt mit 3).

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.

Stimmen die Adressen überein, ist die Prüfung erfolgreich!

Herzlichen Glückwunsch – Sie haben Existenz und Unversehrtheit der Inhalte Ihres Projekts eigenständig nachgewiesen, ohne sich auf Dritte stützen zu müssen.

Bereit zur Prüfung?

Geben Sie Ihre Zertifikats-ID ein und prüfen Sie die Echtheit unabhängig.