Weryfikacja

Zweryfikuj swoj certyfikat

Niezaleznie potwierdz autentycznosc kazdego certyfikatu blockchain Bernstein. Nie wymaga zaufania do serwera.

Weryfikacja zero-trust

Nasz walidator jest zaprojektowany tak, abys nigdy nie musial nam ufac. Wszystko odbywa sie w Twojej przegladarce.

100% po stronie klienta

Twoje pliki nigdy nie opuszczaja Twojego urzadzenia. Cale hashowanie i weryfikacja odbywaja sie lokalnie w Twojej przegladarce.

Dowod blockchain

Certyfikaty sa weryfikowane wobec niezmiennego lancucha bloków Bitcoin - nie wymaga zaufania do serwera.

Dziala offline

Dla maksymalnego bezpieczenstwa mozesz odlaczyc sie od internetu przed przeslaniem wrażliwych plików.

Otwarta weryfikacja

Kazdy moze niezaleznie zweryfikowac certyfikaty za pomoca standardowych narzedzi kryptograficznych.

Mozliwosci

Co mozesz zweryfikowac

Nasz walidator pozwala udowodnic zarówno istnienie plików, jak i wlasnosc certyfikatów.

01

Udowodnij istnienie

Przeslij pliki, aby zweryfikowac, ze odpowiadaja odciskowi palca certyfikatu zarejestrowanemu w lancuchu bloków Bitcoin.

02

Udowodnij wlasnosc

Wprowadz swoje klucze prywatne, aby kryptograficznie udowodnic, ze jestes wlascicielem certyfikatu.

03

Generuj podpisy

Twórz podpisy kryptograficzne, aby udowodnic wlasnosc stronom trzecim, takim jak sady lub inwestorzy.

04

Udostepnij dowód

Eksportuj dane weryfikacyjne, które kazdy moze niezaleznie zwalidowac.

Techniczne

Jak dziala weryfikacja

Nasze certyfikaty wykorzystuja standardowe techniki kryptograficzne, które moga byc zweryfikowane przez kazdego.

Hashowanie SHA-256

Pliki sa hashowane tym samym algorytmem co Bitcoin. Odcisk palca jest unikalnym identyfikatorem Twoich dokladnych plików.

Zakotwiczenie w Bitcoin

Odcisk palca jest osadzany w transakcji Bitcoin, tworzac niezmienny znacznik czasu w najbezpieczniejszym rejestrze na swiecie.

Kwalifikowane znaczniki czasu

Dodatkowe znaczniki czasu od organów rzadowych UE i Chin zapewniaja uznanie prawne.

Dopasowanie odcisków palca

Przeslij oryginalne pliki. Jesli obliczony odcisk palca odpowiada rekordowi w lancuchu bloków, istnienie zostalo udowodnione.

Protokól

Protokól rejestracji Bernstein

Dowiedz sie, jak Bernstein tworzy certyfikaty blockchain z Twoich plików.

Bernstein pomaga tworzyc weryfikowalne dowody istnienia i wlasnosci dla kazdego zasobu cyfrowego. Gdy przesylasz pliki do projektu, Bernstein generuje kryptograficzny odcisk palca i rejestruje go w lancuchu bloków Bitcoin.

Kazdy projekt moze zawierac wiele plików i rozwijac sie w czasie. Kazda certyfikowana wersja tworzy nowy rekord w lancuchu bloków, budujac pelny slad audytu Twojej wlasnosci intelektualnej.

Kazdy certyfikat Bernstein odpowiada transakcji Bitcoin o trzech kluczowych wlasciwosciach:

  • Publiczna - widoczna dla kazdego w sieci Bitcoin
  • Oznaczona znacznikiem czasu - zakotwiczona w konkretnym bloku z dokladna data i godzina
  • Niezmienna - nie moze byc zmieniona ani usunieta po potwierdzeniu

Trzy klucze kryptograficzne

Klucz wlasciciela

Wyprowadzony z Twojego konta. Dowodzi, kto jest wlascicielem certyfikatu. Odpowiadajacy klucz publiczny znajduje sie na PDF certyfikatu.

Klucz danych

Wyprowadzony z hasha SHA-256 plików projektu. Dowodzi, które pliki sa objete certyfikatem.

Klucz Bernstein

Klucz platformy Bernstein, który wspólpodpisuje transakcje. Odpowiadajacy klucz publiczny znajduje sie na PDF certyfikatu.

Kroki rejestracji

01

Twoje pliki sa indywidualnie hashowane algorytmem SHA-256, a nastepnie laczone w jeden odcisk palca projektu.

02

Odcisk palca projektu jest konwertowany na klucz prywatny Bitcoin, z którego wyprowadzany jest klucz publiczny (klucz danych).

03

Klucz danych, klucz wlasciciela i klucz Bernstein sa laczone w adres Bitcoin 3-z-3 MultiSig.

04

Tworzona jest transakcja Bitcoin wyslajaca srodki na ten adres MultiSig, co trwale rejestruje certyfikat w lancuchu bloków.

Wynikowy adres Bitcoin koduje wszystkie trzy klucze - dowodzac kto co posiadal i kiedy. Kazdy, kto posiada oryginalne pliki i klucze publiczne, moze niezaleznie odtworzyc adres i zweryfikowac go wobec lancucha bloków.

Zaawansowane

Reczna weryfikacja

Nie potrzebujesz nawet naszych narzedzi. Wykonaj te kroki, aby niezaleznie zwalidowac certyfikat Bernstein wobec lancucha bloków Bitcoin za pomoca standardowego oprogramowania kryptograficznego open-source.

Co jest potrzebne na poczatek
  • Wszystkie pliki projektu i plik okladki projektu (do pobrania z aplikacji Bernstein)
  • Identyfikator transakcji widoczny na PDF certyfikatu Bernstein
  • Publiczny klucz wlasciciela i publiczny klucz Bernstein, równiez na PDF certyfikatu
  • Podstawowa znajomosc korzystania z terminala komputerowego

Oblicz hash SHA-256 kazdego pojedynczego pliku w projekcie. Istnieje wiele narzedzi do tego celu. Na Linuksie lub macOS wykonaj nastepujace polecenie w terminalu:

Polecenie terminala:

shasum -a 256 yourfile.pdf

Mozesz równiez uzyc uslug online, takich jak SHA256 Online Checksum.

SHA-256 to standardowy algorytm - zawsze daje ten sam wynik, niezaleznie od uzytego narzedzia.

Pamietaj, aby zahashowac równiez plik okladki projektu. Jest to plik tekstowy z tytulem i opisem projektu, do pobrania z aplikacji Bernstein.

Polacz hashe w jeden odcisk palca projektu:
  1. Posortuj wszystkie indywidualne hashe alfabetycznie
  2. Polacz je w jeden ciag znakowy
  3. Oblicz hash SHA-256 polaczonego ciagu

Wynik to Twój odcisk palca projektu. Mozesz go zweryfikowac wobec odcisku palca wyswietlanego w aplikacji Bernstein w Twoim projekcie.

Aby uzyc hasha projektu jako klucza Bitcoin, musisz go przekonwertowac z formatu HEX na WIF (Wallet Import Format). Udostepniamy skrypt Python do tej konwersji.

Zacznij od zainstalowania wymaganego pakietu Python:

pip install base58

Zapisz nastepujacy skrypt Python jako 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]))

Nastepnie uruchom skrypt z hashem projektu:

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

Skrypt wyswietli odpowiadajacy klucz w formacie WIF. Mozesz zweryfikowac wynik w aplikacji Bernstein, klikajac ikone klucza obok certyfikatu blockchain w Twoim projekcie.

W tym kroku musisz wyprowadzic skompresowany klucz publiczny z klucza prywatnego WIF uzyskanego w kroku 2. Jest to standardowa operacja kryptograficzna Bitcoin.

Mozesz uzyc tego narzedzia online: Bitcoin Key Compression Tool

Wklej klucz WIF z kroku 2, a narzedzie pokaze odpowiadajacy skompresowany klucz publiczny. To jest publiczny klucz danych - jeden z trzech kluczy tworzacych adres certyfikatu.

Teraz, gdy wyprowadziles publiczny klucz danych z plików, polacz go z publicznym kluczem wlasciciela i publicznym kluczem Bernstein - oba znajduja sie na PDF certyfikatu - aby skonstruowac adres Bitcoin 3-z-3 MultiSig.

Zapisz i uruchom nastepujacy skrypt Ruby:

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

Uruchom skrypt z terminala:

ruby multisig.rb

Postepuj zgodnie z instrukcjami: wybierz wersje protokolu, a nastepnie wprowadz trzy klucze publiczne po kolei. Skrypt wyswietli adres Bitcoin.

Protokól 1 (przestarzaly) generuje adres P2SH. Protokól 2 (aktualny) generuje adres SegWit P2WSH. Sprawdz certyfikat, aby okreslic, która wersja protokolu ma zastosowanie.

Na koniec wyszukaj identyfikator transakcji z PDF certyfikatu w eksploratorze lancucha bloków.

Zalecamy: Blockstream.info orBlockchair.com.

Znajdz adres na liscie wyjsc transakcji i porównaj go z adresem obliczonym w kroku 4.

Jesli adresy sie zgadzaja, weryfikacja przebiegla pomyslnie!

Gratulacje - niezaleznie udowodniles istnienie i integralnosc informacji w Twoim projekcie, bez polegania na zadnej stronie trzeciej.

Gotowy do weryfikacji?

Wprowadz identyfikator certyfikatu, aby niezaleznie zwalidowac jego autentycznosc.