验证您的证书
独立确认任何 Bernstein 区块链证书的真实性。无需信任服务器。
零信任验证
我们的验证器设计为您永远不需要信任我们。一切都在您的浏览器中进行。
100% 客户端
您的文件永远不会离开您的设备。所有哈希和验证都在您的浏览器中本地进行。
区块链证明
证书通过不可变的比特币区块链进行验证——无需信任服务器。
离线工作
为了最大安全性,您可以在上传敏感文件之前断开互联网连接。
开放验证
任何人都可以使用标准加密工具独立验证证书。
您可以验证什么
我们的验证器让您能够证明文件的存在性和证书的所有权。
证明存在性
上传文件以验证它们是否与在比特币区块链上注册的证书指纹匹配。
证明所有权
输入您的私钥以加密方式证明您拥有该证书。
生成签名
创建加密签名以向法院或投资者等第三方证明所有权。
分享证明
导出任何人都可以独立验证的验证数据。
验证工作原理
我们的证书使用标准加密技术,任何人都可以验证。
SHA-256 哈希
文件使用与比特币相同的算法进行哈希。指纹是您确切文件的唯一标识符。
比特币锚定
指纹嵌入比特币交易中,在世界上最安全的账本上创建不可变的时间戳。
合格时间戳
来自欧盟和中国政府机构的附加时间戳提供法律认可。
指纹匹配
上传您的原始文件。如果计算出的指纹与区块链记录匹配,则存在性得到证明。
Bernstein 注册协议
了解 Bernstein 如何从您的文件创建区块链证书。
Bernstein 帮助您为任何数字资产创建可验证的存在和所有权证明。当您将文件上传到项目时,Bernstein 会生成加密指纹并将其记录在比特币区块链上。
每个项目可以包含多个文件并随时间演变。您认证的每个版本都会创建一条新的区块链记录,构建您知识产权的完整审计跟踪。
每个 Bernstein 证书对应一笔具有三个关键属性的比特币交易:
三个加密密钥
所有者密钥
源自您的账户。证明谁拥有证书。对应的公钥印刷在您的证书 PDF 上。
数据密钥
源自项目文件的 SHA-256 哈希。证明证书涵盖哪些文件。
Bernstein 密钥
Bernstein 的平台密钥,用于共同签署交易。对应的公钥印刷在您的证书 PDF 上。
注册步骤
您的文件使用 SHA-256 逐个进行哈希处理,然后组合成单一的项目指纹。
项目指纹被转换为比特币私钥,从中派生出公钥(数据密钥)。
数据密钥、所有者密钥和 Bernstein 密钥组合成一个 3-of-3 多重签名比特币地址。
创建一笔比特币交易,将资金发送到该多重签名地址,从而将证书永久记录在区块链上。
生成的比特币地址编码了所有三个密钥——证明谁拥有什么以及何时拥有。任何拥有原始文件和公钥的人都可以独立重建地址并在区块链上验证。
手动验证
您甚至不需要我们的工具。以下是使用标准开源加密软件,针对 Bitcoin 区块链独立验证 Bernstein 证书的步骤。
开始前您需要准备的内容
- 所有项目文件和项目封面文件(可从 Bernstein 应用下载)
- 交易 ID(Transaction ID),显示在 Bernstein 证书 PDF 上
- Owner Public Key 和 Bernstein Public Key,同样可在证书 PDF 上找到
- 基本的计算机终端操作技能
计算项目中包含的每个单独文件的 SHA-256 哈希。有许多软件工具可供使用。在 Linux 或 macOS 上,在终端中运行以下命令:
终端命令:
shasum -a 256 yourfile.pdf您也可以使用在线服务,例如 SHA256 Online Checksum.
SHA-256 是一种标准算法——无论使用哪种工具,结果始终相同。
别忘了对项目封面文件也进行哈希处理。这是一个包含项目标题和描述的文本文件,可从 Bernstein 应用下载。
将哈希合并为单个项目指纹:
- 按字母顺序排列所有单个文件的哈希值
- 将它们连接成一个字符串
- 计算连接字符串的 SHA-256 哈希
结果就是您的项目指纹。您可以在 Bernstein 应用的项目页面中验证该指纹。
要将项目哈希用作 Bitcoin 密钥,您需要将其从 HEX 格式转换为 WIF(Wallet Import Format)。我们提供了一个 Python 脚本来执行此转换。
首先,安装所需的 Python 包:
pip install base58将以下 Python 脚本保存为 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]))
然后使用您的项目哈希运行该脚本:
python hex2wif.py <your-project-hash-hex>脚本将输出对应的 WIF 格式密钥。您可以在 Bernstein 应用中,点击项目中区块链证书旁边的密钥图标来验证结果。
在此步骤中,您需要从第二步获得的 WIF 私钥派生压缩公钥。这是标准的 Bitcoin 加密操作。
您可以使用此在线工具:Bitcoin Key Compression Tool
粘贴第二步中的 WIF 密钥,工具将输出关联的压缩公钥。这就是 Data Public Key——构成证书地址的三个密钥之一。
现在您已经从文件中派生出了 Data Public Key,将其与 Owner Public Key 和 Bernstein Public Key(均可在证书 PDF 上找到)组合,构建 3-of-3 MultiSig Bitcoin 地址。
保存并运行以下 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}"
在终端中运行该脚本:
ruby multisig.rb按照提示操作:选择您的协议版本,然后依次输入三个公钥。脚本将输出 Bitcoin 地址。
协议 1(传统)生成 P2SH 地址。协议 2(当前)生成 SegWit P2WSH 地址。请查看您的证书以确定适用的协议版本。
最后,在任何区块链浏览器上查找您证书 PDF 中的交易 ID。
我们推荐 Blockstream.info orBlockchair.com.
在交易输出列表中找到该地址,并将其与您在第四步中计算的地址进行比较。
恭喜——您已独立证明了项目中所含信息的存在性和完整性,无需依赖任何第三方。