Valide seu certificado
Confirme independentemente a autenticidade de qualquer certificado blockchain Bernstein. Sem necessidade de confiar no servidor.
Verificação zero-trust
Nosso validador foi projetado para que você nunca precise confiar em nós. Tudo acontece no seu navegador.
100% no cliente
Seus arquivos nunca saem do seu dispositivo. Todo o hashing e verificação acontece localmente no seu navegador.
Prova blockchain
Certificados são verificados contra a blockchain Bitcoin imutável—sem necessidade de confiar no servidor.
Funciona offline
Para máxima segurança, você pode desconectar da internet antes de carregar arquivos sensíveis.
Verificação aberta
Qualquer pessoa pode verificar certificados independentemente usando ferramentas criptográficas padrão.
O que você pode verificar
Nosso validador permite provar tanto a existência de arquivos quanto a propriedade de certificados.
Provar existência
Carregue arquivos para verificar se correspondem à impressão digital do certificado registrada na blockchain Bitcoin.
Provar propriedade
Insira suas chaves privadas para provar criptograficamente que você possui o certificado.
Gerar assinaturas
Crie assinaturas criptográficas para provar propriedade a terceiros como tribunais ou investidores.
Compartilhar prova
Exporte dados de verificação que qualquer pessoa pode validar independentemente.
Como a verificação funciona
Nossos certificados usam técnicas criptográficas padrão que podem ser verificadas por qualquer pessoa.
Hash SHA-256
Arquivos são hasheados usando o mesmo algoritmo do Bitcoin. A impressão digital é um identificador único para seus arquivos exatos.
Ancoragem Bitcoin
A impressão digital é incorporada em uma transação Bitcoin, criando um carimbo de tempo imutável no livro-razão mais seguro do mundo.
Carimbos de tempo qualificados
Carimbos de tempo adicionais de autoridades governamentais da UE e China fornecem reconhecimento legal.
Correspondência de impressão digital
Carregue seus arquivos originais. Se a impressão digital calculada corresponder ao registro blockchain, a existência está provada.
O protocolo de registro Bernstein
Entendendo como o Bernstein cria certificados blockchain a partir dos seus arquivos.
O Bernstein ajuda-o a criar provas verificáveis de existência e propriedade para qualquer ativo digital. Quando carrega arquivos num projeto, o Bernstein gera uma impressão digital criptográfica e regista-a na blockchain do Bitcoin.
Cada projeto pode conter múltiplos arquivos e evoluir ao longo do tempo. Cada versão que certifica cria um novo registo blockchain, construindo um histórico completo da sua propriedade intelectual.
Cada certificado Bernstein corresponde a uma transação Bitcoin com três propriedades-chave:
Três chaves criptográficas
Chave do proprietário
Derivada da sua conta. Prova quem é o proprietário do certificado. A chave pública correspondente está impressa no seu certificado PDF.
Chave de dados
Derivada do hash SHA-256 dos arquivos do projeto. Prova quais arquivos estão cobertos pelo certificado.
Chave Bernstein
A chave da plataforma Bernstein, que co-assina a transação. A chave pública correspondente está impressa no seu certificado PDF.
Passos do registo
Os seus arquivos são individualmente submetidos a hash SHA-256 e depois combinados numa única impressão digital do projeto.
A impressão digital do projeto é convertida numa chave privada Bitcoin, a partir da qual se deriva uma chave pública (a Chave de Dados).
A Chave de Dados, a Chave do Proprietário e a Chave Bernstein são combinadas num endereço Bitcoin MultiSig 3-de-3.
É criada uma transação Bitcoin enviando fundos para este endereço MultiSig, registando permanentemente o certificado na blockchain.
O endereço Bitcoin resultante codifica as três chaves — provando quem possuía o quê, e quando. Qualquer pessoa com os arquivos originais e as chaves públicas pode reconstruir independentemente o endereço e verificá-lo na blockchain.
Verificação manual
Você nem precisa das nossas ferramentas. Aqui estão os passos para validar independentemente um certificado Bernstein contra a blockchain Bitcoin usando software criptográfico de código aberto padrão.
O que você precisa antes de começar
- Todos os arquivos do projeto e o arquivo de capa do projeto (disponível para download no aplicativo Bernstein)
- O ID da Transação, exibido no certificado PDF da Bernstein
- A Chave Pública do Proprietário e a Chave Pública da Bernstein, também encontradas no certificado PDF
- Habilidades básicas para operar um terminal de computador
Calcule o hash SHA-256 de cada arquivo individual incluído no projeto. Existem muitos utilitários de software que você pode usar. No Linux ou macOS, execute o seguinte comando no seu terminal:
Comando do terminal:
shasum -a 256 yourfile.pdfVocê também pode usar serviços online como SHA256 Online Checksum.
SHA-256 é um algoritmo padrão — ele sempre produzirá o mesmo resultado independentemente da ferramenta que você usar.
Não se esqueça de também gerar o hash do arquivo de capa do projeto. Este é um arquivo de texto contendo o título e a descrição do projeto, que você pode baixar do aplicativo Bernstein.
Combine os hashes em uma única impressão digital do projeto:
- Ordene todos os hashes individuais dos arquivos em ordem alfabética
- Concatene-os em uma única string
- Calcule o hash SHA-256 da string concatenada
O resultado é a impressão digital do seu projeto. Você pode verificá-la comparando com a impressão digital mostrada no aplicativo Bernstein dentro do seu projeto.
Para usar o hash do projeto como uma chave Bitcoin, você precisa convertê-lo do formato HEX para WIF (Wallet Import Format). Fornecemos um script Python para essa conversão.
Primeiro, instale o pacote Python necessário:
pip install base58Salve o seguinte script Python como 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]))
Em seguida, execute o script com o hash do seu projeto:
python hex2wif.py <your-project-hash-hex>O script irá exibir a chave correspondente no formato WIF. Você pode verificar o resultado no aplicativo Bernstein clicando no ícone de chave ao lado do certificado blockchain no seu projeto.
Neste passo, você precisa derivar a chave pública comprimida a partir da chave privada WIF obtida no Passo 2. Esta é uma operação criptográfica padrão do Bitcoin.
Você pode usar esta ferramenta online: Bitcoin Key Compression Tool
Cole a chave WIF do Passo 2 e a ferramenta irá exibir a chave pública comprimida associada. Esta é a Data Public Key — uma das três chaves que compõem o endereço do certificado.
Agora que você derivou a Data Public Key a partir dos seus arquivos, combine-a com a Owner Public Key e a Bernstein Public Key (ambas encontradas no certificado PDF) para construir o endereço Bitcoin MultiSig 3-de-3.
Salve e execute o seguinte 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}"
Execute o script a partir do seu terminal:
ruby multisig.rbSiga as instruções: selecione a versão do seu protocolo e, em seguida, insira as três chaves públicas uma após a outra. O script irá exibir o endereço Bitcoin.
O Protocolo 1 (legado) gera um endereço P2SH. O Protocolo 2 (atual) gera um endereço SegWit P2WSH. Verifique seu certificado para determinar qual versão do protocolo se aplica.
Por fim, pesquise o ID da Transação do seu certificado PDF em qualquer explorador de blockchain.
Recomendamos Blockstream.info orBlockchair.com.
Encontre o endereço na lista de saídas da transação e compare-o com o endereço que você calculou no Passo 4.
Parabéns — você provou independentemente a existência e integridade das informações incluídas no seu projeto, sem depender de nenhum terceiro.