Verificação

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.

Capacidades

O que você pode verificar

Nosso validador permite provar tanto a existência de arquivos quanto a propriedade de certificados.

01

Provar existência

Carregue arquivos para verificar se correspondem à impressão digital do certificado registrada na blockchain Bitcoin.

02

Provar propriedade

Insira suas chaves privadas para provar criptograficamente que você possui o certificado.

03

Gerar assinaturas

Crie assinaturas criptográficas para provar propriedade a terceiros como tribunais ou investidores.

04

Compartilhar prova

Exporte dados de verificação que qualquer pessoa pode validar independentemente.

Técnico

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.

Protocolo

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:

  • Pública — visível para qualquer pessoa na rede Bitcoin
  • Com marca temporal — ancorada a um bloco específico com data e hora precisas
  • Imutável — não pode ser alterada ou eliminada depois de confirmada

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

01

Os seus arquivos são individualmente submetidos a hash SHA-256 e depois combinados numa única impressão digital do projeto.

02

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

03

A Chave de Dados, a Chave do Proprietário e a Chave Bernstein são combinadas num endereço Bitcoin MultiSig 3-de-3.

04

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

Avançado

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

Você 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:
  1. Ordene todos os hashes individuais dos arquivos em ordem alfabética
  2. Concatene-os em uma única string
  3. 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 base58

Salve 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.rb

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

Se os endereços corresponderem, a verificação foi bem-sucedida!

Parabéns — você provou independentemente a existência e integridade das informações incluídas no seu projeto, sem depender de nenhum terceiro.

Pronto para verificar?

Insira o ID do seu certificado para validar independentemente sua autenticidade.