Verificatie

Valideer uw certificaat

Bevestig onafhankelijk de authenticiteit van elk Bernstein blockchain-certificaat. Geen serververtrouwen vereist.

Zero-trust verificatie

Onze validator is zo ontworpen dat u ons nooit hoeft te vertrouwen. Alles gebeurt in uw browser.

100% clientzijdig

Uw bestanden verlaten nooit uw apparaat. Alle hashing en verificatie vindt lokaal plaats in uw browser.

Blockchain-bewijs

Certificaten worden geverifieerd tegen de onveranderlijke Bitcoin-blockchain - geen serververtrouwen vereist.

Werkt offline

Voor maximale beveiliging kunt u de internetverbinding verbreken voordat u gevoelige bestanden uploadt.

Open verificatie

Iedereen kan certificaten onafhankelijk verifiëren met standaard cryptografische tools.

Mogelijkheden

Wat u kunt verifiëren

Onze validator laat u zowel het bestaan van bestanden als eigendom van certificaten bewijzen.

01

Bewijs bestaan

Upload bestanden om te verifiëren dat ze overeenkomen met de vingerafdruk van het certificaat die op de Bitcoin-blockchain is geregistreerd.

02

Bewijs eigendom

Voer uw privésleutels in om cryptografisch te bewijzen dat u eigenaar bent van het certificaat.

03

Genereer handtekeningen

Maak cryptografische handtekeningen om eigendom te bewijzen aan derden zoals rechtbanken of investeerders.

04

Deel bewijs

Exporteer verificatiegegevens die iedereen onafhankelijk kan valideren.

Technisch

Hoe verificatie werkt

Onze certificaten gebruiken standaard cryptografische technieken die door iedereen kunnen worden geverifieerd.

SHA-256 hashing

Bestanden worden gehasht met hetzelfde algoritme als Bitcoin. De vingerafdruk is een unieke identificatie van uw exacte bestanden.

Bitcoin-verankering

De vingerafdruk wordt ingebed in een Bitcoin-transactie, waarmee een onveranderlijk tijdstempel wordt gecreëerd op 's werelds veiligste register.

Gekwalificeerde tijdstempels

Aanvullende tijdstempels van EU- en Chinese overheidsautoriteiten bieden juridische erkenning.

Vingerafdrukmatching

Upload uw originele bestanden. Als de berekende vingerafdruk overeenkomt met het blockchain-record, is het bestaan bewezen.

Protocol

Het Bernstein-registratieprotocol

Begrijp hoe Bernstein blockchain-certificaten maakt van uw bestanden.

Bernstein helpt u verifieerbaar bewijs van bestaan en eigendom te creëren voor elk digitaal activum. Wanneer u bestanden uploadt naar een project, genereert Bernstein een cryptografische vingerafdruk en registreert deze op de Bitcoin-blockchain.

Elk project kan meerdere bestanden bevatten en zich in de tijd ontwikkelen. Elke versie die u certificeert, creëert een nieuw blockchain-record, waarmee een volledig auditspoor van uw intellectueel eigendom wordt opgebouwd.

Elk Bernstein-certificaat komt overeen met een Bitcoin-transactie met drie belangrijke eigenschappen:

  • Openbaar - zichtbaar voor iedereen op het Bitcoin-netwerk
  • Getijdstempeld - verankerd aan een specifiek blok met een precieze datum en tijd
  • Onveranderlijk - kan niet worden gewijzigd of verwijderd na bevestiging

Drie cryptografische sleutels

Eigenaarsleutel

Afgeleid van uw account. Bewijst wie eigenaar is van het certificaat. De bijbehorende publieke sleutel staat op uw certificaat-PDF.

Gegevenssleutel

Afgeleid van de SHA-256 hash van uw projectbestanden. Bewijst welke bestanden onder het certificaat vallen.

Bernstein-sleutel

Bernsteins platformsleutel, die de transactie medeondertekent. De bijbehorende publieke sleutel staat op uw certificaat-PDF.

Registratiestappen

01

Uw bestanden worden individueel gehasht met SHA-256 en vervolgens gecombineerd tot één projectvingerafdruk.

02

De projectvingerafdruk wordt omgezet in een Bitcoin-privésleutel, waaruit een publieke sleutel (de gegevenssleutel) wordt afgeleid.

03

De gegevenssleutel, eigenaarsleutel en Bernstein-sleutel worden gecombineerd tot een 3-van-3 MultiSig Bitcoin-adres.

04

Er wordt een Bitcoin-transactie aangemaakt die fondsen naar dit MultiSig-adres stuurt, waarmee het certificaat permanent op de blockchain wordt vastgelegd.

Het resulterende Bitcoin-adres codeert alle drie de sleutels - en bewijst wie wat bezat, en wanneer. Iedereen met de originele bestanden en de publieke sleutels kan het adres onafhankelijk reconstrueren en verifiëren tegen de blockchain.

Geavanceerd

Handmatige verificatie

U hebt onze tools niet eens nodig. Volg deze stappen om een Bernstein-certificaat onafhankelijk te valideren tegen de Bitcoin-blockchain met standaard open-source cryptografische software.

Wat u nodig hebt om te beginnen
  • Alle projectbestanden en het projectomslagbestand (te downloaden vanuit de Bernstein-app)
  • De transactie-ID, weergegeven op de Bernstein-certificaat-PDF
  • De publieke eigenaarsleutel en publieke Bernstein-sleutel, ook te vinden op de certificaat-PDF
  • Basiskennis van het gebruik van een computerterminal

Bereken de SHA-256 hash van elk individueel bestand in het project. Er zijn veel hulpprogramma's hiervoor. Op Linux of macOS voert u het volgende commando uit in uw terminal:

Terminalcommando:

shasum -a 256 yourfile.pdf

U kunt ook online diensten gebruiken zoals SHA256 Online Checksum.

SHA-256 is een standaardalgoritme - het levert altijd hetzelfde resultaat op, ongeacht het gebruikte hulpprogramma.

Vergeet niet ook het projectomslagbestand te hashen. Dit is een tekstbestand met de projecttitel en -beschrijving, te downloaden vanuit de Bernstein-app.

Combineer de hashes tot één projectvingerafdruk:
  1. Sorteer alle individuele hashes alfabetisch
  2. Voeg ze samen tot één tekenreeks
  3. Bereken de SHA-256 hash van de samengevoegde tekenreeks

Het resultaat is uw projectvingerafdruk. U kunt deze verifiëren tegen de vingerafdruk die wordt weergegeven in de Bernstein-app onder uw project.

Om de projecthash als Bitcoin-sleutel te gebruiken, moet u deze converteren van HEX-formaat naar WIF (Wallet Import Format). We bieden een Python-script voor deze conversie.

Begin met het installeren van het benodigde Python-pakket:

pip install base58

Sla het volgende Python-script op 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]))

Voer vervolgens het script uit met uw projecthash:

python hex2wif.py <your-project-hash-hex>

Het script geeft de bijbehorende sleutel in WIF-formaat uit. U kunt het resultaat verifiëren in de Bernstein-app door op het sleutelpictogram naast het blockchain-certificaat in uw project te klikken.

In deze stap moet u de gecomprimeerde publieke sleutel afleiden uit de WIF-privésleutel die u in stap 2 hebt verkregen. Dit is een standaard Bitcoin-cryptografische bewerking.

U kunt deze online tool gebruiken: Bitcoin Key Compression Tool

Plak de WIF-sleutel uit stap 2 en de tool toont de bijbehorende gecomprimeerde publieke sleutel. Dit is de publieke gegevenssleutel - een van de drie sleutels waaruit het certificaatadres bestaat.

Nu u de publieke gegevenssleutel hebt afgeleid uit uw bestanden, combineert u deze met de publieke eigenaarsleutel en de publieke Bernstein-sleutel - beide te vinden op de certificaat-PDF - om het 3-van-3 MultiSig Bitcoin-adres te construeren.

Sla het volgende Ruby-script op en voer het uit:

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}"

Voer het script uit vanuit uw terminal:

ruby multisig.rb

Volg de instructies: selecteer uw protocolversie en voer vervolgens de drie publieke sleutels één voor één in. Het script geeft het Bitcoin-adres uit.

Protocol 1 (verouderd) genereert een P2SH-adres. Protocol 2 (huidig) genereert een SegWit P2WSH-adres. Controleer uw certificaat om te bepalen welke protocolversie van toepassing is.

Zoek ten slotte de transactie-ID van uw certificaat-PDF op in een blockchain-verkenner.

Wij raden aan: Blockstream.info orBlockchair.com.

Zoek het adres in de uitvoerlijst van de transactie en vergelijk het met het adres dat u in stap 4 hebt berekend.

Als de adressen overeenkomen, is de verificatie geslaagd!

Gefeliciteerd - u hebt onafhankelijk het bestaan en de integriteit bewezen van de informatie in uw project, zonder afhankelijk te zijn van een derde partij.

Klaar om te verifiëren?

Voer uw certificaat-ID in om de authenticiteit onafhankelijk te valideren.