인증서 검증
Bernstein 블록체인 인증서의 진위를 독립적으로 확인하세요. 서버 신뢰가 필요 없습니다.
제로 트러스트 검증
당사의 검증기는 당신이 우리를 신뢰할 필요가 없도록 설계되었습니다. 모든 것이 브라우저에서 일어납니다.
100% 클라이언트 측
파일이 장치를 떠나지 않습니다. 모든 해싱 및 검증은 브라우저에서 로컬로 수행됩니다.
블록체인 증명
인증서는 불변의 비트코인 블록체인에 대해 검증됩니다—서버 신뢰가 필요 없습니다.
오프라인 작동
최대 보안을 위해 민감한 파일을 업로드하기 전에 인터넷 연결을 끊을 수 있습니다.
개방형 검증
누구나 표준 암호화 도구를 사용하여 인증서를 독립적으로 검증할 수 있습니다.
검증할 수 있는 것
당사의 검증기를 통해 파일의 존재와 인증서 소유권을 모두 증명할 수 있습니다.
존재 증명
파일을 업로드하여 비트코인 블록체인에 등록된 인증서의 지문과 일치하는지 확인합니다.
소유권 증명
개인 키를 입력하여 인증서의 소유권을 암호학적으로 증명합니다.
서명 생성
법원이나 투자자와 같은 제3자에게 소유권을 증명하기 위한 암호화 서명을 생성합니다.
증명 공유
누구나 독립적으로 검증할 수 있는 검증 데이터를 내보냅니다.
검증 작동 방식
당사의 인증서는 누구나 검증할 수 있는 표준 암호화 기술을 사용합니다.
SHA-256 해싱
파일은 비트코인과 동일한 알고리즘을 사용하여 해시됩니다. 지문은 정확한 파일의 고유 식별자입니다.
비트코인 앵커링
지문은 비트코인 트랜잭션에 포함되어 세계에서 가장 안전한 원장에 불변의 타임스탬프를 생성합니다.
공인 타임스탬프
EU 및 중국 정부 기관의 추가 타임스탬프가 법적 인정을 제공합니다.
지문 매칭
원본 파일을 업로드하세요. 계산된 지문이 블록체인 기록과 일치하면 존재가 증명됩니다.
Bernstein 등록 프로토콜
Bernstein이 파일로부터 블록체인 인증서를 생성하는 방식을 이해합니다.
Bernstein은 모든 디지털 자산에 대한 검증 가능한 존재 및 소유권 증명을 생성하도록 도와줍니다. 프로젝트에 파일을 업로드하면 Bernstein이 암호화 지문을 생성하고 비트코인 블록체인에 기록합니다.
각 프로젝트는 여러 파일을 포함할 수 있으며 시간이 지남에 따라 발전할 수 있습니다. 인증하는 각 버전은 새로운 블록체인 기록을 생성하여 지적 재산의 완전한 감사 추적을 구축합니다.
각 Bernstein 인증서는 세 가지 주요 속성을 가진 비트코인 거래에 해당합니다:
세 가지 암호화 키
소유자 키
계정에서 파생됩니다. 인증서 소유자를 증명합니다. 해당 공개 키는 인증서 PDF에 인쇄되어 있습니다.
데이터 키
프로젝트 파일의 SHA-256 해시에서 파생됩니다. 인증서가 포함하는 파일을 증명합니다.
Bernstein 키
거래를 공동 서명하는 Bernstein의 플랫폼 키입니다. 해당 공개 키는 인증서 PDF에 인쇄되어 있습니다.
등록 단계
파일은 개별적으로 SHA-256으로 해시된 다음 단일 프로젝트 지문으로 결합됩니다.
프로젝트 지문은 비트코인 개인 키로 변환되고, 이로부터 공개 키(데이터 키)가 파생됩니다.
데이터 키, 소유자 키, Bernstein 키가 3-of-3 멀티시그 비트코인 주소로 결합됩니다.
이 멀티시그 주소로 자금을 보내는 비트코인 거래가 생성되어 인증서가 블록체인에 영구적으로 기록됩니다.
결과 비트코인 주소는 세 개의 키를 모두 인코딩하여 누가 무엇을 언제 소유했는지 증명합니다. 원본 파일과 공개 키를 가진 누구나 독립적으로 주소를 재구성하고 블록체인에서 검증할 수 있습니다.
수동 검증
당사 도구 없이도 가능합니다. 표준 오픈소스 암호화 소프트웨어를 사용하여 Bernstein 인증서를 Bitcoin 블록체인에 대해 독립적으로 검증하는 방법을 안내합니다.
시작하기 전에 필요한 것
- 모든 프로젝트 파일과 프로젝트 커버 파일(Bernstein 앱에서 다운로드 가능)
- Bernstein 인증서 PDF에 표시된 트랜잭션 ID
- 인증서 PDF에 기재된 소유자 공개키와 Bernstein 공개키
- 컴퓨터 터미널을 조작하는 기본적인 능력
프로젝트에 포함된 각 개별 파일의 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 앱에서 프로젝트의 블록체인 인증서 옆에 있는 키 아이콘을 클릭하여 결과를 확인할 수 있습니다.
이 단계에서는 2단계에서 얻은 WIF 개인키로부터 압축 공개키를 도출해야 합니다. 이것은 표준 Bitcoin 암호화 연산입니다.
다음 온라인 도구를 사용할 수 있습니다: Bitcoin Key Compression Tool
2단계에서 얻은 WIF 키를 붙여넣으면 도구가 관련 압축 공개키를 출력합니다. 이것이 Data Public Key로, 인증서 주소를 구성하는 세 개의 키 중 하나입니다.
파일로부터 Data Public Key를 도출했으므로, 이를 인증서 PDF에 있는 소유자 공개키 및 Bernstein 공개키와 결합하여 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.
트랜잭션 출력 목록에서 주소를 찾아 4단계에서 계산한 주소와 비교하세요.
축하합니다—제3자에 의존하지 않고 프로젝트에 포함된 정보의 존재와 무결성을 독립적으로 증명했습니다.