証明書を検証
Bernsteinブロックチェーン証明書の真正性を独立して確認。サーバーへの信頼は不要です。
ゼロトラスト検証
当社のバリデーターは、お客様が私たちを信頼する必要がないように設計されています。すべてはブラウザ内で行われます。
100%クライアントサイド
ファイルはデバイスから離れません。すべてのハッシュ化と検証はブラウザ内でローカルに行われます。
ブロックチェーン証明
証明書は不変のビットコインブロックチェーンに対して検証されます。サーバーへの信頼は不要です。
オフラインでも動作
最大限のセキュリティのため、機密ファイルをアップロードする前にインターネット接続を切断できます。
オープン検証
標準的な暗号化ツールを使用して、誰でも証明書を独立して検証できます。
検証できること
当社のバリデーターでは、ファイルの存在と証明書の所有権の両方を証明できます。
存在を証明
ファイルをアップロードして、ビットコインブロックチェーンに登録された証明書のフィンガープリントと一致することを検証します。
所有権を証明
秘密鍵を入力して、証明書を所有していることを暗号学的に証明します。
署名を生成
裁判所や投資家などの第三者に所有権を証明するための暗号署名を作成します。
証明を共有
誰でも独立して検証できる検証データをエクスポートします。
検証の仕組み
当社の証明書は、誰でも検証できる標準的な暗号化技術を使用しています。
SHA-256ハッシュ
ファイルはビットコインと同じアルゴリズムを使用してハッシュ化されます。フィンガープリントはあなたの正確なファイルの一意の識別子です。
ビットコインアンカリング
フィンガープリントはビットコイン取引に埋め込まれ、世界で最も安全な台帳に不変のタイムスタンプを作成します。
適格タイムスタンプ
EUと中国の政府機関からの追加タイムスタンプが法的認知を提供します。
フィンガープリント照合
元のファイルをアップロードします。計算されたフィンガープリントがブロックチェーン記録と一致すれば、存在が証明されます。
Bernstein登録プロトコル
Bernsteinがファイルからブロックチェーン証明書を作成する仕組みを理解する。
Bernsteinは、あらゆるデジタル資産の存在と所有権の検証可能な証明を作成するお手伝いをします。プロジェクトにファイルをアップロードすると、Bernsteinは暗号フィンガープリントを生成し、Bitcoinブロックチェーンに記録します。
各プロジェクトは複数のファイルを含み、時間とともに進化できます。認証する各バージョンは新しいブロックチェーンレコードを作成し、知的財産の完全な監査証跡を構築します。
各Bernstein証明書は、3つの主要な特性を持つBitcoinトランザクションに対応します:
3つの暗号鍵
所有者鍵
アカウントから派生。証明書の所有者を証明します。対応する公開鍵は証明書PDFに印刷されています。
データ鍵
プロジェクトファイルのSHA-256ハッシュから派生。証明書がカバーするファイルを証明します。
Bernstein鍵
トランザクションを共同署名するBernsteinのプラットフォーム鍵。対応する公開鍵は証明書PDFに印刷されています。
登録ステップ
ファイルは個別にSHA-256でハッシュされ、単一のプロジェクトフィンガープリントに結合されます。
プロジェクトフィンガープリントはBitcoin秘密鍵に変換され、そこから公開鍵(データ鍵)が派生されます。
データ鍵、所有者鍵、Bernstein鍵が3-of-3マルチシグBitcoinアドレスに結合されます。
このマルチシグアドレスに資金を送るBitcoinトランザクションが作成され、証明書がブロックチェーンに永久に記録されます。
結果として得られるBitcoinアドレスは3つの鍵すべてをエンコードし、誰が何をいつ所有していたかを証明します。元のファイルと公開鍵を持つ誰でも、独立してアドレスを再構築しブロックチェーンで検証できます。
手動検証
当社のツールさえ必要ありません。標準的なオープンソースの暗号ソフトウェアを使用して、Bernstein証明書をBitcoinブロックチェーンに対して独立して検証する手順をご紹介します。
開始前に必要なもの
- すべてのプロジェクトファイルとプロジェクトカバーファイル(Bernsteinアプリからダウンロード可能)
- Bernstein証明書PDFに表示されているトランザクションID
- 証明書PDFに記載されているOwner Public KeyとBernstein Public Key
- コンピュータのターミナルを操作する基本的なスキル
プロジェクトに含まれる各ファイルのSHA-256ハッシュを計算します。利用できるソフトウェアユーティリティは多数あります。LinuxまたはmacOSでは、ターミナルで以下のコマンドを実行してください:
ターミナルコマンド:
shasum -a 256 yourfile.pdf以下のようなオンラインサービスも利用できます:SHA256 Online Checksum.
SHA-256は標準的なアルゴリズムであり、どのツールを使用しても常に同じ結果が得られます。
プロジェクトカバーファイルのハッシュも忘れずに計算してください。これはプロジェクトのタイトルと説明を含むテキストファイルで、Bernsteinアプリからダウンロードできます。
ハッシュを1つのプロジェクトフィンガープリントに統合:
- 個々のファイルハッシュをすべてアルファベット順にソート
- 1つの文字列に連結
- 連結した文字列の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アプリでプロジェクト内のブロックチェーン証明書の横にある鍵アイコンをクリックして結果を確認できます。
このステップでは、ステップ2で取得したWIF秘密鍵から圧縮公開鍵を導出する必要があります。これはBitcoinの標準的な暗号操作です。
以下のオンラインツールを利用できます:Bitcoin Key Compression Tool
ステップ2で取得したWIF鍵を貼り付けると、対応する圧縮公開鍵が出力されます。これがData Public Keyであり、証明書アドレスを構成する3つの鍵の1つです。
ファイルから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プロンプトに従い、プロトコルバージョンを選択してから3つの公開鍵を順番に入力してください。スクリプトがBitcoinアドレスを出力します。
プロトコル1(レガシー)はP2SHアドレスを生成します。プロトコル2(現行)はSegWit P2WSHアドレスを生成します。どちらのプロトコルバージョンが適用されるかは証明書をご確認ください。
最後に、証明書PDFに記載されているトランザクションIDを任意のブロックチェーンエクスプローラーで検索します。
推奨:Blockstream.info orBlockchair.com.
トランザクション出力の一覧からアドレスを見つけ、ステップ4で計算したアドレスと比較してください。
おめでとうございます。第三者に依存することなく、プロジェクトに含まれる情報の存在と完全性を独立して証明できました。