Verifica il tuo certificato e la sua data certa
Conferma in autonomia l'autenticità di qualsiasi certificato blockchain Bernstein. Non devi fidarti di nessun server.
Verifica zero-trust
Il nostro validatore è progettato perché tu non debba mai fidarti di noi. Tutto avviene nel tuo browser.
100% lato client
I tuoi file non lasciano mai il tuo dispositivo. Tutto l'hashing e la verifica avvengono localmente nel tuo browser.
Prova blockchain
I certificati si verificano sulla blockchain Bitcoin, che è immutabile, senza dover riporre fiducia in un server.
Funziona offline
Per la massima sicurezza, puoi disconnetterti da internet prima di caricare file sensibili.
Verifica aperta
Chiunque può verificare i certificati in autonomia, con strumenti crittografici standard.
Cosa puoi verificare
Con il nostro validatore dimostri sia l'esistenza dei file sia la titolarità dei certificati.
Dimostra l'esistenza
Carica i file per verificare che corrispondano all'impronta del certificato registrata sulla blockchain Bitcoin.
Dimostra la titolarità
Inserisci le tue chiavi private per dimostrare crittograficamente di essere titolare del certificato.
Genera firme
Crea firme crittografiche per dimostrare la titolarità a terzi, come giudici o investitori.
Condividi la prova
Esporta i dati di verifica, che chiunque può validare in autonomia.
Come funziona la verifica
I nostri certificati utilizzano tecniche crittografiche standard verificabili da chiunque.
Hashing SHA-256
I file vengono hashati utilizzando lo stesso algoritmo di Bitcoin. L'impronta è un identificatore unico per i tuoi file esatti.
Ancoraggio Bitcoin
L'impronta viene incorporata in una transazione Bitcoin e produce una marca temporale immutabile sul registro più sicuro al mondo.
Marche temporali qualificate
Le marche temporali aggiuntive delle autorità pubbliche di UE e Cina aggiungono riconoscimento legale.
Corrispondenza dell'impronta
Carica i tuoi file originali. Se l'impronta calcolata coincide con la registrazione sulla blockchain, l'esistenza è provata.
Il protocollo di registrazione Bernstein
Come Bernstein trasforma i tuoi file in certificati blockchain.
Con Bernstein costruisci una prova verificabile di esistenza e titolarità per qualsiasi asset digitale. Quando carichi file in un progetto, Bernstein ne genera l'impronta crittografica e la registra sulla blockchain Bitcoin.
Ogni progetto può contenere più file ed evolvere nel tempo. Ogni versione che certifichi crea una nuova registrazione sulla blockchain e costruisce una traccia verificabile completa della tua proprietà intellettuale.
Ogni certificato Bernstein corrisponde a una transazione Bitcoin con tre proprietà chiave:
Tre chiavi crittografiche
Chiave del proprietario
Derivata dal tuo account. Prova chi è titolare del certificato. La chiave pubblica corrispondente è stampata sul tuo certificato PDF.
Chiave dati
Derivata dall'hash SHA-256 dei file del progetto. Prova quali file sono coperti dal certificato.
Chiave Bernstein
La chiave della piattaforma Bernstein, che co-firma la transazione. La chiave pubblica corrispondente è stampata sul tuo certificato PDF.
Fasi di registrazione
I tuoi file vengono sottoposti individualmente a hash SHA-256, poi combinati in un'unica impronta di progetto.
L'impronta del progetto viene convertita in una chiave privata Bitcoin, dalla quale si deriva una chiave pubblica (la Chiave Dati).
La Chiave Dati, la Chiave del Proprietario e la Chiave Bernstein vengono combinate in un indirizzo Bitcoin MultiSig 3-di-3.
Viene creata una transazione Bitcoin che invia fondi a questo indirizzo MultiSig, registrando permanentemente il certificato sulla blockchain.
L'indirizzo Bitcoin che ne risulta codifica tutte e tre le chiavi e prova chi era titolare di che cosa, e quando. Chiunque disponga dei file originali e delle chiavi pubbliche può ricostruire l'indirizzo in autonomia e riscontrarlo sulla blockchain.
Verifica manuale
I nostri strumenti non ti servono nemmeno. Ecco i passaggi per verificare in autonomia un certificato Bernstein sulla blockchain Bitcoin, usando software crittografico open source standard.
Cosa ti serve prima di iniziare
- Tutti i file del progetto e il file di copertina del progetto (scaricabile dall'app Bernstein)
- Il Transaction ID, visualizzato sul certificato Bernstein in PDF
- La Owner Public Key e la Bernstein Public Key, anch'esse presenti sul certificato PDF
- Competenze di base per utilizzare un terminale del computer
Calcola l'hash SHA-256 di ogni singolo file incluso nel progetto. Esistono numerosi strumenti software che puoi utilizzare. Su Linux o macOS, esegui il seguente comando nel terminale:
Comando terminale:
shasum -a 256 yourfile.pdfPuoi anche utilizzare servizi online come SHA256 Online Checksum.
SHA-256 è un algoritmo standard: produrrà sempre lo stesso risultato indipendentemente dallo strumento utilizzato.
Non dimenticare di calcolare anche l'hash del file di copertina del progetto. Si tratta di un file di testo contenente il titolo e la descrizione del progetto, scaricabile dall'app Bernstein.
Combina gli hash in un'unica impronta del progetto:
- Ordina alfabeticamente tutti gli hash dei singoli file
- Concatenali in un'unica stringa
- Calcola l'hash SHA-256 della stringa concatenata
Il risultato è l'impronta del tuo progetto. Puoi verificarla confrontandola con l'impronta mostrata nell'app Bernstein sotto il tuo progetto.
Per utilizzare l'hash del progetto come chiave Bitcoin, devi convertirlo dal formato HEX al formato WIF (Wallet Import Format). Forniamo uno script Python per questa conversione.
Per prima cosa, installa il pacchetto Python necessario:
pip install base58Salva il seguente script Python come 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]))
Quindi esegui lo script con l'hash del tuo progetto:
python hex2wif.py <your-project-hash-hex>Lo script restituirà la chiave corrispondente in formato WIF. Puoi verificare il risultato nell'app Bernstein cliccando sull'icona della chiave accanto al certificato blockchain nel tuo progetto.
In questo passaggio, devi derivare la chiave pubblica compressa dalla chiave privata WIF ottenuta nel Passo 2. Si tratta di un'operazione crittografica Bitcoin standard.
Puoi utilizzare questo strumento online: Bitcoin Key Compression Tool
Incolla la chiave WIF dal Passo 2 e lo strumento restituirà la chiave pubblica compressa associata. Questa è la Data Public Key, una delle tre chiavi che compongono l'indirizzo del certificato.
Ora che hai derivato la Data Public Key dai tuoi file, combinala con la Owner Public Key e la Bernstein Public Key (entrambe presenti sul certificato PDF) per costruire l'indirizzo Bitcoin MultiSig 3-di-3.
Salva ed esegui il seguente script 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}"
Esegui lo script dal terminale:
ruby multisig.rbSegui le istruzioni: seleziona la versione del protocollo, poi inserisci le tre chiavi pubbliche una dopo l'altra. Lo script restituirà l'indirizzo Bitcoin.
Il Protocollo 1 (legacy) genera un indirizzo P2SH. Il Protocollo 2 (attuale) genera un indirizzo SegWit P2WSH. Controlla il tuo certificato per determinare quale versione del protocollo si applica.
Infine, cerca il Transaction ID dal tuo certificato PDF su qualsiasi blockchain explorer.
Consigliamo Blockstream.info orBlockchair.com.
Trova l'indirizzo nell'elenco degli output della transazione e confrontalo con l'indirizzo che hai calcolato nel Passo 4.
Congratulazioni: hai dimostrato in modo indipendente l'esistenza e l'integrità delle informazioni incluse nel tuo progetto, senza affidarti a terze parti.