KR101795697B1 - 진품 관리를 위하여 제품별 주소 및 인덱스를 생성하고 위조품을 검출하는 방법 및 서버 - Google Patents

진품 관리를 위하여 제품별 주소 및 인덱스를 생성하고 위조품을 검출하는 방법 및 서버 Download PDF

Info

Publication number
KR101795697B1
KR101795697B1 KR1020160040458A KR20160040458A KR101795697B1 KR 101795697 B1 KR101795697 B1 KR 101795697B1 KR 1020160040458 A KR1020160040458 A KR 1020160040458A KR 20160040458 A KR20160040458 A KR 20160040458A KR 101795697 B1 KR101795697 B1 KR 101795697B1
Authority
KR
South Korea
Prior art keywords
product
index
unique address
server
generate
Prior art date
Application number
KR1020160040458A
Other languages
English (en)
Other versions
KR20170112817A (ko
Inventor
송주한
홍재우
어준선
Original Assignee
주식회사 코인플러그
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 코인플러그 filed Critical 주식회사 코인플러그
Priority to KR1020160040458A priority Critical patent/KR101795697B1/ko
Publication of KR20170112817A publication Critical patent/KR20170112817A/ko
Application granted granted Critical
Publication of KR101795697B1 publication Critical patent/KR101795697B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/08Logistics, e.g. warehousing, loading or distribution; Inventory or stock management
    • G06Q10/087Inventory or stock management, e.g. order filling, procurement or balancing against orders
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F17/30
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/04Payment circuits
    • G06Q20/06Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme
    • G06Q20/065Private payment circuits, e.g. involving electronic currency used among participants of a common payment scheme using e-cash
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/382Payment protocols; Details thereof insuring higher security of transaction
    • G06Q20/3827Use of message hashing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • G06Q30/0601Electronic shopping [e-shopping]

Landscapes

  • Business, Economics & Management (AREA)
  • Engineering & Computer Science (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Development Economics (AREA)
  • Computer Security & Cryptography (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Operations Research (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

본 발명의 일 태양에 따르면, 진품 관리를 위하여 제품별 주소 및 인덱스를 생성하는 방법에 있어서, (a) 서버가, seed로부터 master public key를 생성하거나 생성하도록 지원하는 단계, (b) 상기 서버가, 상기 master public key를 이용하여 적어도 하나의 HD index(Hierarchical Deterministic Index)를 생성하거나 생성하도록 지원하는 단계, 및 (c) 상기 서버가, 상기 master public key를 이용하여 상기 생성된 적어도 하나의 HD index에 대응되는 고유주소를 생성하거나 생성하도록 지원하는 단계를 포함하는 방법이 제공된다.

Description

진품 관리를 위하여 제품별 주소 및 인덱스를 생성하고 위조품을 검출하는 방법 및 서버{METHOD AND SERVER FOR GENERATING ADDRESS AND INDEX BY PRODUCT AND DETECTING COUNTERFEIT PRODUCTS IN ORDER TO MANAGE GENUINE PRODUCTS}
본 발명은, 진품 관리를 위하여 제품별 주소 및 인덱스를 생성하고 위조품을 검출하는 방법 및 서버에 관한 것으로, 좀더 상세하게는, seed로부터 master public key를 생성하거나 생성하도록 지원하고, 상기 master public key를 이용하여 적어도 하나의 HD index(Hierarchical Deterministic Index)를 생성하거나 생성하도록 지원하며, 상기 master public key를 이용하여 상기 생성된 적어도 하나의 HD index에 대응되는 고유주소를 생성하거나 생성하도록 지원하는 “제품별 주소 및 인덱스 생성 프로세스”를 수행하고, 제품에 표시된 식별코드가 단말에 의해 스캔되어 HD index 및 고유주소가 전달되면, master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되는지 검증하거나 검증하도록 지원하고, 상기 master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되지 않으면, 상기 제품이 가품인 것으로 판정하고, 상기 master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되면, 상기 제품이 진품인 것으로 판정하는 “위조품 검출 프로세스”를 수행하는, 제품별 주소 및 인덱스를 생성하고 위조품을 검출하는 방법 및 서버에 관한 것이다.
위조품이 범람하면서 진품과 가품을 식별할 수 있는 다양한 기술 방안이 제공되고 있다. 그 중에서도 제품에 전자태그를 붙여 제품을 유통시키고 인식장치를 통해 상기 전자태그를 인식하여 유통되는 제품의 진품여부와 유통이력 등을 확인할 수 있는 기술이 존재한다.
이러한 기술에서는 전자태그 상에 제품이 진품인지 여부가 기록되어 있으므로 전자태그를 인식할 수만 있다면 어떤 장치를 통해서라도 제품의 진품여부를 확인할 수 있다는 특징이 있다. 그런데, 이러한 전자태그 정보는 누구라도 쉽게 생성할 수 있으므로 제품의 진품 여부를 정확히 보증할 수 없다는 단점이 있다.
이에 발명자는 서비스 제공자가 특정 키를 이용하여 제품별로 고유주소와 인덱스를 생성하여 이를 전자태그에 입력하여 제품에 부여하고, 제품의 전자태그가 읽혀지는 경우, 상기 특정 키를 이용하여 고유주소와 인덱스 관계를 검증함으로써 제품의 진품 여부를 판단할 수 있는 위조품 검출 시스템을 개발하기에 이르렀다.
KR 10-1249828 B1
본 발명은 상술한 문제점들을 모두 해결하는 것을 그 목적으로 한다.
또한, 본 발명은 특정한 권한을 부여받은 서비스 제공자만이 제품에 대한 진품 인증 정보를 생성할 수 있고 이에 대한 검증을 할 수 있으므로 제품의 진품 여부를 정확히 보증할 수 있는 위조품 검출 시스템을 제공하는 것을 다른 목적으로 한다.
또한, 본 발명은 서비스 제공자가 특정 키를 이용하여 제품별로 고유주소와 인덱스를 생성하여 이를 전자태그에 입력하여 제품에 부여한 후, 제품의 전자태그가 읽혀지는 경우, 상기 특정 키를 이용하여 고유주소와 인덱스 관계를 검증함으로써 제품의 진품 여부를 판단할 수 있는 위조품 검출 시스템을 제공하는 것을 또 다른 목적으로 한다.
또한, 본 발명은 가상화폐(가령, 비트코인)의 블록체인을 이용하여 신뢰도 높게 제품의 사용 여부를 파악할 수 있는 것을 또 다른 목적으로 한다.
상기 목적을 달성하기 위한 본 발명의 대표적인 구성은 다음과 같다.
본 발명의 일 태양에 따르면, 진품 관리를 위하여 제품별 주소 및 인덱스를 생성하는 방법에 있어서, (a) 서버가, seed로부터 master public key를 생성하거나 생성하도록 지원하는 단계, (b) 상기 서버가, 상기 master public key를 이용하여 적어도 하나의 HD index(Hierarchical Deterministic Index)를 생성하거나 생성하도록 지원하는 단계, 및 (c) 상기 서버가, 상기 master public key를 이용하여 상기 생성된 적어도 하나의 HD index에 대응되는 고유주소를 생성하거나 생성하도록 지원하는 단계를 포함하는 방법이 제공된다.
본 발명의 다른 태양에 따르면, 진품 관리를 위하여 위조품을 검출하는 방법에 있어서, (a) 제품에 표시된 식별코드가 단말에 의해 스캔되어 HD index 및 고유주소가 전달되면, 서버가, master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되는지 검증하거나 검증하도록 지원하는 단계, 및 (b) 상기 master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되지 않으면, 상기 서버가, 상기 제품이 가품인 것으로 판정하고, 상기 master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되면, 상기 제품이 진품인 것으로 판정하는 단계를 포함하는 방법이 제공된다.
본 발명의 또 다른 태양에 따르면, 진품 관리를 위하여 제품별 주소 및 인덱스를 생성하는 서버에 있어서, 통신부, 및 seed로부터 master public key를 생성하거나 생성하도록 지원하고, 상기 master public key를 이용하여 적어도 하나의 HD index(Hierarchical Deterministic Index)를 생성하거나 생성하도록 지원하며, 상기 master public key를 이용하여 상기 생성된 적어도 하나의 HD index에 대응되는 고유주소를 생성하거나 생성하도록 지원하는 프로세서를 포함하는 서버가 제공된다.
본 발명의 또 다른 태양에 따르면, 진품 관리를 위하여 위조품을 검출하는 서버에 있어서, 제품에 표시된 식별코드가 단말에 의해 스캔되면 상기 단말로부터 HD index 및 고유주소를 수신하는 통신부, 및 master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되는지 검증하거나 검증하도록 지원하고, 상기 master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되지 않으면, 상기 제품이 가품인 것으로 판정하고, 상기 master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되면, 상기 제품이 진품인 것으로 판정하는 프로세서를 포함하는 서버가 제공된다.
이 외에도, 본 발명을 구현하기 위한 다른 방법, 장치 및 상기 방법을 실행하기 위한 컴퓨터 프로그램을 기록하기 위한 컴퓨터 판독 가능한 기록 매체가 더 제공된다.
본 발명에 의하면, 다음과 같은 효과가 있다.
또한, 본 발명은 특정한 권한을 부여받은 서비스 제공자만이 제품에 대한 진품 인증 정보를 생성할 수 있고 이에 대한 검증을 할 수 있으므로 제품의 진품 여부를 정확히 보증할 수 있는 효과가 있다.
또한, 본 발명은 서비스 제공자가 특정 키를 이용하여 제품별로 고유주소와 인덱스를 생성하여 이를 전자태그에 입력하여 제품에 부여한 후, 제품의 전자태그가 읽혀지는 경우, 상기 특정 키를 이용하여 고유주소와 인덱스 관계를 검증함으로써 제품의 진품 여부를 판단할 수 있는 효과가 있다.
또한, 본 발명은 가상화폐(가령, 비트코인)의 블록체인을 이용하여 신뢰도 높게 제품의 사용 여부를 파악할 수 있는 효과가 있다.
도 1은 본 발명의 일 실시예에 따른 제품별 주소 및 인덱스를 생성하는 서버의 구성을 도시한 블록도이다.
도 2는 본 발명의 일 실시예에 따른 제품의 진품 여부를 확인하는 과정을 도시한 시퀀스 다이어그램이다.
도 3은 본 발명의 일 실시예에 따른 제품의 사용 여부 관련 데이터를 기록하는 서버의 구성을 도시한 블록도이다.
도 4 및 5는 본 발명의 일 실시예에 따라 생성된 머클 트리의 예를 도시한 도면이다.
후술하는 본 발명에 대한 상세한 설명은, 본 발명이 실시될 수 있는 특정 실시예를 예시로서 도시하는 첨부 도면을 참조한다. 이들 실시예는 당업자가 본 발명을 실시할 수 있기에 충분하도록 상세히 설명된다. 본 발명의 다양한 실시예는 서로 다르지만 상호 배타적일 필요는 없음이 이해되어야 한다. 예를 들어, 여기에 기재되어 있는 특정 형상, 구조 및 특성은 일 실시예에 관련하여 본 발명의 정신 및 범위를 벗어나지 않으면서 다른 실시예로 구현될 수 있다. 또한, 각각의 개시된 실시예 내의 개별 구성요소의 위치 또는 배치는 본 발명의 정신 및 범위를 벗어나지 않으면서 변경될 수 있음이 이해되어야 한다. 따라서, 후술하는 상세한 설명은 한정적인 의미로서 취하려는 것이 아니며, 본 발명의 범위는, 적절하게 설명된다면, 그 청구항들이 주장하는 것과 균등한 모든 범위와 더불어 첨부된 청구항에 의해서만 한정된다. 도면에서 유사한 참조부호는 여러 측면에 걸쳐서 동일하거나 유사한 기능을 지칭한다.
각 실시예에 대한 설명에 앞서 본 명세서에서 사용되는 표현식을 다음과 같이 정의한다. ':' 의 왼쪽은 표현식을 나타내며 오른쪽은 표현식의 정의를 나타낸다.
<표현식 정의>
Hash(Y): triple sha256 of Y
HD: Hierarchical Deterministic
도 1은 본 발명의 일 실시예에 따른 제품별 주소 및 인덱스를 생성하는 서버의 구성을 도시한 블록도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 제품별 주소 및 인덱스를 생성하는 서버(100)는 통신부(110) 및 프로세서(120)를 포함한다.
통신부(110)는, 외부 장치 또는 내부 모듈 간 통신을 수행하는 구성이다. 특히 통신부(110)는 후술하는 것처럼 프로세서(120)에 의해 생성된 HD index와 고유주소를 외부 장치로 제공할 수 있다. 통신부(110)는 다양한 통신 기술로 구현될 수 있다. 즉, 와이파이(WIFI), WCDMA(Wideband CDMA), HSDPA(High Speed Downlink Packet Access), HSUPA(High Speed Uplink Packet Access), HSPA(High Speed Packet Access), 모바일 와이맥스(Mobile WiMAX), 와이브로(WiBro), LTE(Long Term Evolution), 블루투스(bluetooth), 적외선 통신(IrDA, infrared data association), NFC(Near Field Communication), 지그비(Zigbee), 무선랜 기술 등이 적용될 수 있다. 또한, 인터넷과 연결되어 서비스를 제공하는 경우 인터넷에서 정보전송을 위한 표준 프로토콜인 TCP/IP를 따를 수 있다.
프로세서(120)는, 결정적 키 생성법(deterministic key generation)을 이용하여 seed로부터 키를 생성하거나 생성하도록 지원할 수 있다. 즉, 프로세서(120)는, seed로부터 master public key를 생성하거나 생성하도록 지원할 수 있다. 구체적으로, 프로세서(120)는, seed로부터 master private key를 생성하거나 생성하도록 지원하고, 상기 생성된 master private key로부터 master public key를 생성하거나 생성하도록 지원할 수 있다. 이렇게 프로세서(120)는 single seed로부터 master private key와 master public key를 생성하거나 생성하도록 지원할 수 있다. 상기 seed는 512bit의 single seed일 수도 있으나 복수의 seed일 수도 있으며 복수의 seed인 경우 각 seed별로 별도의 master public key 생성이 이루어질 수 있다.
그리고, 프로세서(120)는, 상기 master public key를 이용하여 적어도 하나의 HD index(Hierarchical Deterministic Index)를 생성하거나 생성하도록 지원할 수 있다. 상기 적어도 하나의 HD index는, 제조사 정보를 나타내는 제1 child index 및 제품 정보를 나타내는 제2 child index 및 중 적어도 일부를 포함할 수 있다. HD index는 HD path라는 용어로도 사용된다.
프로세서(120)는 master public key를 이용하여 제조사별로 child index를 부여할 수 있다. child index는 0부터 231-1까지 20억 개가 부여될 수 있다. 예를 들면, 회사 0의 HD path는 M/0으로 나타내며, 회사 n의 HD path는 M/n으로 나타낼 수 있다. 유사하게 회사 0의 제품 0의 HD path는 M/0/0이며, 회사 a의 제품 b의 HD path는 M/a/b로 나타낼 수 있고, 회사 A의 제품 B의 3번째 제품의 고유주소를 나타내는 HD path는 M/A/B/3로 표시할 수 있다.
또한, 프로세서(120)는 상기 master public key를 이용하여 상기 생성된 적어도 하나의 HD index에 대응되는 고유주소를 생성하거나 생성하도록 지원할 수 있다.
통신부(110)는 생성된 HD index 및 고유주소를 외부 장치에 제공할 수 있고, QR코드와 같은 식별 코드에 포함하여 제공할 수도 있다. 다만, 반드시 HD index 및 고유주소가 외부 장치에 제공되어야 하는 것은 아니고, 서버(100)가 관리만 하면서 외부 장치에서 식별코드가 스캔되었을 때, 내부에 저장된 HD index 및 고유주소를 독출하여 참조만할 수도 있을 것이다.
한편, 제품이 일회용품이 아니고 소프트웨어와 같이 multiple copy에 대한 license가 존재할 수 있는 경우, 동일한 제품코드에 대해서 multiple copy에 대한 license를 설정할 수도 있다. 이 경우 상기 고유주소에 대하여 copy license를 소정의 회수만큼(이를 테면 k회) 설정할 수 있다. 프로세서(120)는 상기 고유주소를 생성하거나 생성하도록 지원함에 있어서, 상기 고유주소로 소정 액수의 가상 화폐를 입금하는 transaction을 상기 k회까지 생성하여 데이터베이스로 전송 가능하도록 설정할 수 있다.
이상과 같은 방법을 통해 HD index와 고유주소가 생성되면, HD index와 고유주소가 포함된 식별코드가 제품에 부착되어 유통된다. 이러한 식별코드를 통해 후술하는 방법으로 제품의 진품 여부 및 사용 여부를 확인할 수 있게 된다.
이하에서는 도 2를 더 참조로 하여 제품의 진품 여부를 확인하는 기술을 설명한다.
도 2는 본 발명의 일 실시예에 따른 제품의 진품 여부를 확인하는 과정을 도시한 시퀀스 다이어그램이다.
제품의 진품 여부를 확인하는 서버는 전술한 서버(100)와 별도의 서버(100)일 수도 있으나, 설명의 편의를 위해 동일한 서버(100)인 것으로 상정하여 설명한다.
우선, 통신부(110)는 제품에 표시된 식별코드가 단말(300)에 의해 스캔되면 상기 단말(300)로부터 HD index 및 고유주소를 수신하여 진품 확인 요청을 수신한다(S205). 단말(300)은 스마트폰과 같은 휴대 단말이 될 수도 있고, 식별코드 리더기가 될 수도 있다. 통신부(110)는 단말(300)로부터 HD index 및 고유주소를 수신할 수 있으나 이와 달리, 읽혀진 식별코드 자체를 수신하여 프로세서(120)가 이를 판독하여 HD index 및 고유주소를 추출하는 것도 물론 가능할 것이다.
프로세서(120)는 master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되는지 검증하거나 검증하도록 지원한다(S210).
상기 master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되지 않으면(S215-1), 프로세서(120)는, 상기 제품이 가품인 것으로 판정하고 상응하는 응답을 출력할 수 있다(S220). 반면, 상기 master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되면(S215-2), 프로세서(120)는 상기 제품이 진품인 것으로 판정할 수 있다.
제품이 진품으로 판정된 경우, 즉, master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력된 경우, 프로세서(120)는, 데이터베이스(200)에서 상기 고유주소 상의 balance를 확인할 수 있다(S220, S225). 여기서, 데이터베이스(200)는 가상화폐의 블록체인일 수 있다.
(i) 상기 balance가 0이면(S230-2), 프로세서(120)는, 상기 제품을 아직 사용되지 않은 제품으로 판단하고, 상기 고유주소로 소정 액수의 가상 화폐를 입금하는 transaction을 생성하여 상기 데이터베이스(200)로 전송할 수 있다. 반면, (ii) 상기 balance가 0이 아니면(S230-1), 프로세서(120)는 상기 제품을 이미 사용된 제품으로 판단하고, 상응하는 응답을 출력할 수 있다(S250).
한편, 도 2의 S205 단계에 도시된 것처럼 제품에 표시된 식별코드 스캔시 상기 제품과 관련된 소정의 정보(info)가 더 획득될 수도 있는데, 이 경우, 상기 프로세서(120)는, 상기 고유주소에 상기 제품과 관련된 소정의 정보의 해쉬값(Hash(info))을 기록하는 것을 상기 transaction에 포함시켜 상기 transaction을 생성할 수 있다.
상기 제품과 관련된 소정의 정보는, 상기 제품 사용 시각 정보(예를 들어, timestamp), 상기 제품 사용 위치 정보(예를 들어, GPS location), 상기 제품 사용 장치 정보(예를 들어, device ID) 중 적어도 일부를 포함할 수 있다.
한편, 상기 (ii)에서 상기 balance가 0이 아니고, op_return이 존재하는 경우에 한해, 프로세서(120)가, 상기 제품을 이미 사용된 제품으로 판단할 수도 있다.
또한, 상기 balance가 0인 경우, 상기 제품에 표시된 식별코드가 스캔되는 외에 특정 입력이 있는 경우에 한해, 상기 transaction을 생성하여 상기 데이터베이스(200)로 전송하는 동작이 이루어질 수도 있다. 상기 특정 입력은 상기 제품에 대한 구매 확인 입력일 수 있다. 이러한 구성은 식별코드가 제품의 포장 외부에 부착되어 있어서 제품 정보 확인을 위해 단순히 식별코드를 태그하는 것만으로는 제품의 사용 상태에 아무런 영향을 미쳐서는 안되는 경우 의미가 있을 수 있다. 이 경우에는 최종적으로 구매목적으로 식별코드를 태그하는 경우에만 사용 기록이 될 필요가 있으므로 구매 확인 입력이 있는 경우에 한해 transaction을 생성하여 상기 데이터베이스(200)로 전송할 수 있는 것이다.
한편, 전술한 것처럼 동일한 고유주소에 대하여 multiple copy license가 허용된 경우, 상기 balance가 0이 아니라고 하더라도, 상기 balance가 소정의 값 미만이면, 프로세서(120)는, 상기 고유주소로 상기 소정 액수의 가상 화폐를 입금하는 transaction을 생성하여 데이터베이스(200)로 전송할 수 있다. multiple copy license가 허용된 경우에는 동일 제품에 대해서도 복수 회의 사용을 허용해야 할 필요가 있기 때문이다.
한편, 전술한 프로세서(120)는 통신부(110) 및 다른 구성요소 간의 데이터의 흐름을 제어하는 기능을 수행한다. 즉, 프로세서(120)는 서버(100)의 각 구성요소 간의 데이터의 흐름을 제어함으로써, 통신부(110) 및 다른 구성요소에서 각각 고유 기능을 수행하도록 제어한다.
프로세서(120)는 MPU(Micro Processing Unit) 또는 CPU(Central Processing Unit), 캐쉬 메모리(Cache Memory), 데이터 버스(Data Bus) 등의 하드웨어 구성을 포함할 수 있다. 또한, 운영체제, 특정 목적을 수행하는 어플리케이션의 소프트웨어 구성을 더 포함할 수도 있다.
한편, 제품 사용 정보를 갱신할 필요가 있는 모든 경우에 데이터베이스(200)에 접근하여 기록을 하는 것은 비효율적일 수 있다. 특히, transaction 요청이 많아졌을 때, 서비스 제공의 bottle neck 현상이 발생될 수 있고, 매번 transaction fee를 지불해야 하므로 서비스 운영에 많은 비용이 들 수 있는 우려가 있다.
이하에서는 위/변조가 불가능하고 실시간으로 제품 사용 관련 데이터를 기록할 수 있는 장점을 살리면서도 서비스 요청이 몰릴 경우에도 빠른 서비스 속도를 보장하고 비용도 절감할 수 있는 제품 사용 관련 데이터를 기록하는 시스템을 설명한다. 이러한 시스템은 전술한 실시예와 달리 서버(100')에 의해 관리되는 별도의 데이터 구조를 이용한다. 이하에서 설명하는 서버(100')는 전술한 서버(100)와 동일한 장치로 구성될 수도 있으나, 설명의 편의를 위해 별도의 장치인 것으로 설명한다.
도 3은 본 발명의 일 실시예에 따른 제품의 사용 여부 관련 데이터를 기록하는 서버의 구성을 도시한 블록도이다.
도 3을 참조하면, 본 발명의 일 실시예에 따른 제품의 사용 여부 관련 데이터를 기록하는 서버(100')는 통신부(110'), 프로세서(120')를 포함한다. 전술한 서버(100)와 기능상 중복되는 설명은 생략한다.
통신부(110')는 제품에 표시된 식별코드가 단말에 의해 스캔되면, 상기 단말로부터 HD index 및 고유주소를 수신한다.
프로세서(120')는 전술한 프로세서(120)와 마찬가지로, (1) master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되는지 검증하거나 검증하도록 지원하고, (2) 상기 master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되면, 상기 제품을 진품인 것으로 판정할 수 있다. 그리고, 제1 데이터베이스(130')에서 상기 HD index 또는 상기 고유주소에 대응되는 제품 사용 정보를 확인하며, (3) 상기 확인 결과 상기 제품이 아직 사용되지 않은 것으로 판단되고, 소정의 조건이 만족되면, (i) 상기 제품 사용 정보를 상기 제품이 사용되었음을 나타내도록 설정하고 상기 제품 사용 정보의 해쉬값 및 상기 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 대표 해쉬값 또는 (ii) 상기 대표 해쉬값을 가공한 값을 제2 데이터베이스(200')에 등록하거나 등록하도록 지원할 수 있다.
여기서, 제품 사용 정보는 제품 사용 여부를 나타내는 정보로서, 상기 고유주소로 전송된 가상화폐 정보, 제품 사용 시각 정보, 제품 사용 위치 정보, 제품 사용 장치 정보 중 적어도 일부를 포함할 수 있다.
또한, 제1 데이터베이스(130')는 상기 서버(100')에 의해 생성 및 관리되며 가상화폐(가령, 비트코인)의 블록체인 시스템과 동일 또는 유사한 시스템에 의해 운용되는 프라이빗 블록체인이고, 상기 제2 데이터베이스(200')는 가상화폐의 퍼블릭 블록체인일 수 있다. 그러나, 이와 달리, 제1 데이터베이스(130')와 제2 데이터베이스(200')는 동일한 데이터베이스로서 양자 모두 프라이빗 블록체인 또는 퍼블릭 블록체인으로 구성될 수도 있다. 또한, 제1 데이터베이스(130')는 단지 상기 제품의 사용 여부 정보를 관리하는 상기 서버(100') 내부의 데이터베이스로 구성될 수도 있다.
한편, 상기 확인 결과 상기 제품이 아직 사용되지 않은 것으로 판단되면, 상기 프로세서(120')는, 상기 제품 사용 정보를 상기 제품이 사용되었음을 나타내도록 설정하고 상기 새롭게 설정된 제품 사용 정보를 상기 제1 데이터베이스(130')에 등록하거나 등록하도록 지원할 수 있다.
한편, 상기 (3)은 상기 제품에 표시된 식별코드가 스캔되는 외에 특정 입력이 있는 경우에 한해 수행될 수 있다. 이때, 특정 입력은 상기 제품에 대한 구매 확인 입력일 수 있다.
또한, 전술한 것처럼 고유주소에 대하여 multi copy license가 허용된 경우, 상기 (3)에서 상기 확인 결과 상기 제품이 사용된 것으로 판단되는 경우라도 상기 제품 사용 정보가 상기 multi copy license 조건 내에서 추가 license가 가능한 상태이고 상기 소정의 조건(앵커링 조건)이 만족되면, 상기 프로세서(120')가, (i) 상기 제품 사용 정보의 해쉬값 및 상기 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 대표 해쉬값 또는 (ii) 상기 대표 해쉬값을 가공한 값을 상기 제2 데이터베이스(200')에 등록하거나 등록하도록 지원할 수 있다. 전술한 것처럼 multiple copy license가 허용된 경우에는 동일 제품에 대해서도 복수 회의 사용을 허용해야 할 필요가 있기 때문이다.
제품 사용 정보의 해쉬값과 적어도 하나의 이웃 해쉬값의 연산은 다양한 함수에 의해 수행될 수 있다. 제품 사용 정보의 해쉬값을 input 이라고 나타내고, 적어도 하나의 이웃 해쉬값을 x1, x2, …, xn이라고 나타낼 때, 대표 해쉬값 t는 다음 수학식과 같이 나타낼 수 있다.
<수학식>
t = hash(function(input, x1, x2, …, xn))
이때 서버(100')는 상기 제품 사용 정보의 해쉬값과 상기 적어도 하나의 이웃 해쉬값을 소정의 데이터 구조로 저장하여 관리할 수 있다. 여기서, 데이터 구조는 다양할 수 있는데, 일 예로 머클 트리(merkle tree) 구조가 될 수도 있다. 이 경우, 상기 제품 사용 정보의 해쉬값과 적어도 하나의 이웃 해쉬값의 연산은 머클 트리(merkle tree)를 통해 이루어질 수 있다.
즉, 프로세서(120')는 상기 제품 사용 정보의 해쉬값이 특정 리프 노드에 할당된 머클 트리(merkle tree)를 생성하거나 생성하도록 지원할 수 있고, 상기 소정의 조건이 만족되면, 상기 상기 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 다른 리프 노드에 할당된 해쉬값을 연산하여 생성되는 상기 대표 해쉬값 또는 상기 대표 해쉬값을 가공한 값을 제2 데이터베이스(200')에 등록하거나 등록하도록 지원할 수 있다.
좀더 구체적으로 설명하면, (x1) 프로세서(120')는, (i) 상기 제품 사용 정보의 해쉬값과 (ii) 상기 제품 사용 정보의 해쉬값이 할당된 노드의 형제 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원하고, 상기 연산값에 대한 해쉬값을 상기 노드의 부모 노드에 할당하거나 할당하도록 지원할 수 있다. (x2) 만일, 상기 부모 노드가 상기 머클 트리의 루트 노드이면, 상기 부모 노드에 할당된 해쉬값이 상기 대표 해쉬값이 된다. (x3) 반면, 상기 부모 노드가 상기 머클 트리의 루트 노드가 아니면, 프로세서(120')는, 상기 부모 노드에 할당된 해쉬값을 상기 제품 사용 정보의 해쉬값으로 하여 상기 (x1) 내지 (x3)를 반복하여 수행한다.
그리고, 프로세서(120')는 최종적으로 머클 트리의 루트 노드에 할당된 해쉬값을 대표 해쉬값으로서 제2 데이터베이스(200')에 등록하거나 등록하도록 지원한다. 이때, 대표 해쉬값을 가공한 값이 등록될 수도 있다. 예를 들어, 대표 해쉬값에 hex 연산이 수행된 결과값이 등록될 수 있다.
한편, 상기 서버(100')가 상기 제품 사용 정보의 해쉬값과 상기 적어도 하나의 이웃 해쉬값을 소정의 제1 데이터 구조로 저장하고, 이후 상기 제1 데이터 구조와 동일한 형태의 제2 데이터구조를 저장하여 관리하는 경우, 상기 제1 데이터 구조와 상기 제2 데이터 구조는 체인 형태로 연결될 수 있다.
특히, 상술한 예에서와 같이 상기 제1 데이터 구조 및 상기 제2 데이터 구조가 머클 트리인 경우, 상기 제1 데이터 구조의 루트값 또는 상기 루트값의 해쉬값이 상기 제2 데이터 구조의 첫번째 리프 노드에 할당될 수 있다.
또한, 제2 데이터 구조를 생성할 때는 제1 데이터 구조에 대한 검증이 이루어짐으로써 데이터 integrity가 좀더 보장될 수 있다. 제2 데이터 구조의 검증에 대해서는 후술하기로 한다.
또한, 체인 형태로 연결된 적어도 하나의 머클 트리 중 첫번째 머클 트리의 경우, 상기 첫번째 머클 트리의 첫번째 리프 노드에는 텍스트, 숫자, 또는 기호로 이루어진 소정의 메시지 데이터의 해쉬값 또는 이를 가공한 값이 할당될 수 있다. 예를 들어, 머클 트리 생성시 서버(100')에 의해 최초로 부여된 입력 메시지의 해쉬값이 할당될 수 있다.
도 4 및 5는 본 발명의 일 실시예에 따라 생성된 머클 트리의 예를 도시한 도면이다.
도 4에서는 리프 노드의 개수가 4(22)개인 머클 트리가 도시된다. 도시된 머클 트리는 첫번째 머클 트리이기 때문에(tree_id=0), 첫번째 리프 노드인 h1 노드에는 소정의 메시지 데이터 “Coinplug 2016-01-01”의 해쉬값(triplesha256digest(coinplug_unique_message))이 할당되었음을 알 수 있다. 제품 사용 정보에 대한 등록 요청이 있는 경우, 프로세서(120')는 현재 구성 중인 머클 트리의 가장 마지막 리프 노드의 다음 리프 노드를 생성하여 제품 사용 정보의 해쉬값 또는 제품 사용 정보의 해쉬값을 가공한 값을 할당하거나 할당하도록 지원한다. 예를 들어, 도 4의 머클 트리에서 이전 단계에서 두번째 리프 노드인 h1 노드까지 값 할당이 완료된 경우, 다음 리프 노드인 h2 노드를 생성하여 제품 사용 정보의 해쉬값 또는 제품 사용 정보의 해쉬값을 가공한 값(triplesha256digest(input2))을 할당할 수 있다. 또한, 프로세서(120')는 (i) 제품 사용 정보의 해쉬값과 (ii) 상기 제품 사용 정보의 해쉬값이 할당된 세번째 리프 노드인 h2 노드의 형제 노드인 h3 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원할 수 있다. 상기 연산값에 대한 해쉬값은 h2 노드와 h3 노드의 부모 노드(h23 노드)에 할당된다. 부모 노드(h23 노드)가 머클 트리의 루트 노드가 아니므로 프로세서(120')는 상기 h23 노드에 할당된 해쉬값을 상기 제품 사용 정보의 해쉬값으로 하여 상기 과정을 반복하여 수행할 수 있다. 즉, h23 노드에 할당된 해쉬값을 제품 사용 정보의 해쉬값으로 하고, h23 노드에 할당된 해쉬값과 h01 노드에 할당된 해쉬값을 연산하여 h23 노드와 h01 노드의 부모 노드(h0123 노드)에 할당할 수 있다. 이때, h0123 노드가 머클 트리의 루트 노드이므로 프로세서(120')는, h0123 노드에 할당된 해쉬값을 가공한 값(hex(h{node_index}))을 제2 데이터베이스(200')에 등록하거나 등록하도록 지원할 수 있다.
한편, 전술한 소정의 조건이란, (i) 소정의 개수만큼의 제품 사용 정보가 획득되는 조건, (ii) 소정 시간이 경과하는 조건, (iii) 블록 체인에서 블록이 생성되는 조건, (iv) 서비스 특성에 대한 조건 중 적어도 하나를 포함할 수 있다.
예를 들어, 프로세서(120')는 소정 시간 단위로 전술한 머클 트리의 루트값을 생성할 수 있다(상기 (ii) 조건). 이 경우 프로세서(120')는 소정의 시간이 경과되면 그때까지의 입력값을 이용하여 머클 트리를 생성하고 머클 트리의 루트값을 제2 데이터베이스(200')에 등록하거나 등록하도록 지원할 수 있다.
그런데, 이 경우에는 소정 시간이 경과하였음에도 머클 트리의 제품 사용 정보의 해쉬값이 할당된 노드의 형제 노드에 값이 할당되지 않을 수 있다. 이처럼 소정의 조건이 만족되었음에도 상기 제품 사용 정보의 해쉬값이 할당된 노드의 형제 노드에 해쉬값이 할당되어 있지 않은 경우, 프로세서(120')는, 상기 형제 노드에 소정의 해쉬값을 할당하거나 할당하도록 지원하여 전술한 방식으로 머클 트리의 루트값이 산출되도록 할 수 있다. 예를 들어, 프로세서(120')는 상기 제품 사용 정보의 해쉬값을 복제하여 상기 형제 노드에 할당하거나 할당하도록 지원할 수 있다.
상기 서비스 특성이란, 제품 사용 정보 등록(변경) 요청을 한 사용자(회사)가 지급한 비용 정보, 제품 사용 정보 등록이 이루어지는 시간대 정보, 제품 사용 정보 등록 서비스가 이루어지는 지역 정보, 제품 사용 정보 등록 요청을 한 회사 타입 정보 중 적어도 일부가 될 수 있다. 다만, 여기서 기재한 것에 한정할 것은 아니고, 통상적으로 인정되는 차등적 서비스가 제공될 수 있는 다양한 조건 정보를 포함한다.
한편, 새로운 머클 트리 생성이 시작되고, 제품 사용 정보의 획득이 없는 상태에서 상기 소정의 조건이 만족되면, 상기 프로세서(120')는, 소정의 메시지 데이터가 첫번째 리프 노드와 두번째 리프 노드에 할당된 머클 트리를 생성하거나 생성하도록 지원하고, 상기 머클 트리의 루트값 또는 이를 가공한 값을 제2 데이터베이스(200')에 등록하거나 등록하도록 지원할 수 있다. 이 경우에는 리프 노드 2개짜리 머클 트리가 생성될 수 있는 것이다.
한편, 전술한 것처럼 서버(100')가 상기 제품 사용 정보의 해쉬값과 상기 적어도 하나의 이웃 해쉬값을 소정의 제1 데이터 구조로 저장하고, 이후 상기 제1 데이터 구조와 동일한 형태의 제2 데이터구조를 저장하여 관리하는 경우, 상기 제1 데이터 구조와 상기 제2 데이터 구조는 체인 형태로 연결될 수 있다. 특히, 상기 제1 데이터 구조 및 상기 제2 데이터 구조가 머클 트리인 경우, 상기 제1 데이터 구조의 루트값 또는 상기 루트값의 해쉬값이 상기 제2 데이터 구조의 첫번째 리프 노드에 할당될 수 있다.
도 5는 본 발명의 일 실시예에 따라 상기 제2 데이터 구조로서 생성된 머클 트리를 도시한 도면이다.
도 5를 참조하면, 도 4의 머클 트리(tree_id=0)의 루트값(hex(h0123))이 새로운 머클 트리의 첫번째 리프 노드(h4 노드)에 할당되었음을 알 수 있다(triplesha256digest(input4)). 본 발명은 이와 같이 트랜잭션 발생시 생성되는 복수의 데이터 구조를 연결함으로써 중간에 데이터가 변조가 발생되는 경우라도 쉽게 트래킹이 가능하여 데이터 integrity를 향상시키는 장점을 가진다.
한편, 전술한 적어도 하나의 이웃 해쉬값은 동일 또는 다른 제조사에 의해 제조된 다른 제품에 관한 제품 사용 정보에 대한 해쉬값일 수 있다.
다음으로, 전술한 데이터 구조를 이용하여 등록된 제품 사용 정보를 검증하는 과정을 설명한다.
기존에 제1 제품 사용 정보의 해쉬값과 소정 조건 하에 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성되는 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값이 데이터베이스(상술한 제1 데이터베이스(130') 또는 제2 데이터베이스(200')일 수 있다.)에 등록되어 있는 상태에서, 통신부(110')를 통해 상기 제품 사용 정보와 관련된 검증 요청이 획득되면, 프로세서(120')는, 상기 검증 요청에 포함된 입력 데이터를 사용하여 생성된 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값이 상기 데이터베이스에 등록된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, 상기 제품 사용 정보와 관련된 검증이 이루어진 것으로 판단하거나 판단하도록 지원할 수 있다.
여기서, 제2 대표 해쉬값은, 제2 제품 사용 정보의 해쉬값 및 상기 제2 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 이웃 해쉬값을 연산함으로써 생성될 수 있다.
이때, 상기 검증 요청에 포함된 입력 데이터는, 상기 제품 사용 정보 또는 상기 제품 사용 정보 등록 당시 발급된 ID 중 어느 하나를 포함할 수 있다.
입력 데이터에 상기 제품 사용 정보 등록 당시 발급된 ID가 포함되는 경우 기존에 생성된 머클 트리에서 상기 ID에 대응되는 리프 노드에 할당된 값이 상기 제2 제품 사용 정보의 해쉬값으로 설정될 수 있다. 도 4 및 5에 도시된 예에서, 상기 ID는 unique ID일 수 있다.
제2 제품 사용 정보의 해쉬값에 대해서는 전술한 제1 제품 사용 정보의 해쉬값에 대한 설명이 동일하게 적용될 수 있다. 즉, 제2 제품 사용 정보의 해쉬값과 적어도 하나의 이웃 해쉬값의 연산은 다양한 함수에 의해 수행될 수 있다. 이에 대해서는 전술하였으므로 설명을 생략한다.
이 경우, 상기 제2 제품 사용 정보의 해쉬값과 적어도 하나의 이웃 해쉬값의 연산은 머클 트리(merkle tree)를 통해 이루어질 수 있다. 상기 제품 사용 정보와 관련된 검증 요청이 획득되면, 프로세서(120')는, 상기 입력 데이터와 관련된 머클 트리 정보 및 리프 노드 정보를 식별할 수 있다.
그리고, 상기 제2 대표 해쉬값은, 상기 제2 제품 사용 정보의 해쉬값이 특정 리프 노드에 할당된 머클 트리(merkle tree)에서 상기 제2 제품 사용 정보의 해쉬값 및 상기 제2 제품 사용 정보의 해쉬값과 매칭되는 적어도 하나의 다른 리프 노드에 할당된 해쉬값을 연산하여 생성될 수 있다.
프로세서(120')는, 상기 식별된 머클 트리 정보에 대응되는 상기 소정의 transaction ID를 참조할 수 있다. 이 경우, 프로세서(120')는, 상기 제품 사용 정보와 관련된 검증 요청이 획득되면, 상기 제품 사용 정보와 관련된 소정의 transaction ID를 참조하고, 상기 transaction ID를 사용하여 상기 데이터베이스로부터 OP 메시지를 획득하거나 획득하도록 지원할 수 있다. 또한, 상기 검증 요청에 포함된 입력 데이터를 사용하여 생성된 상기 제2 대표 해쉬값 또는 상기 제2 대표 해쉬값을 가공한 값이 상기 OP 메시지에 포함된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, 상기 제품 사용 정보와 관련된 검증이 이루어진 것으로 판단하거나 판단하도록 지원할 수 있다.
한편, 상기 소정의 transaction ID는 입력 데이터에 포함되어 제공될 수도 있다. 즉, 사용자는 검증 요청시 전술한 (i) 상기 제품 사용 정보, (ii) 제품 사용 정보 등록 당시 발급된 ID 중 어느 하나와 함께 transaction ID를 서버(100')에 전달할 수도 있다.
검증 연산과정에서 프로세서(120')는 새로운 머클 트리를 생성하거나 생성하도록 지원할 수 있는데, 여기에는 전술한 제품 사용 정보 등록(또는 변경) 과정에서 생성된 머클 트리가 이용될 수 있다. 즉, 프로세서(120')는 (y1) (i) 상기 제2 제품 사용 정보의 해쉬값과 (ii) 기존에 생성된 머클 트리에서 상기 제2 제품 사용 정보의 해쉬값이 할당된 노드의 형제 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원하고, 상기 연산값에 대한 해쉬값을 새로운 머클 트리에서 상기 노드의 부모 노드에 할당하거나 할당하도록 지원할 수 있다. 또한, (y2) 상기 부모 노드가 상기 새로운 머클 트리의 루트 노드이면, 상기 부모 노드에 할당된 해쉬값을 상기 제2 대표 해쉬값으로서 상기 OP 메시지에 포함된 값과 비교하거나 비교하도록 지원하고, (y3) 상기 부모 노드가 상기 새로운 머클 트리의 루트 노드가 아니면, 상기 부모 노드에 할당된 해쉬값을 상기 제2 제품 사용 정보의 해쉬값으로 하여 상기 (y1) 내지 (y3)를 반복하여 수행할 수 있다.
프로세서(120')는, 최종적으로 생성된 머클 트리의 루트값 또는 이를 가공한 값이 상기 OP 메시지에 포함된 상기 제1 대표 해쉬값 또는 상기 제1 대표 해쉬값을 가공한 값과 대응되면, 상기 제품 사용 정보와 관련된 검증이 이루어진 것으로 판단하거나 판단하도록 지원할 수 있다.
이처럼 본 발명은 제품 사용 정보 등록 단계에서 nm(=N)개의 리프 노드를 가지는 머클 트리가 생성이 되면, 머클 트리의 높이(lognN=m)만큼의 연산만을 수행함으로써 제품 사용 정보의 검증을 수행할 수 있어 빠르게 transaction의 integrity 확인이 가능하게 된다.
한편, 프로세서(120')는 입력 데이터를 획득하는 경우, 입력 데이터와 관련된 시간 정보를 참조로 하여 상기 입력 데이터와 관련된 머클 트리 정보 및 리프 노드 정보 중 적어도 하나를 식별할 수도 있다.
한편, 상기 제품에 대한 copy license가 k 회 허용된 경우, 프로세서(120')는 상기 제품 사용 정보와 관련된 검증을 수행함에 있어서, 소정 액수의 가상 화폐를 입금하는 transaction이 상기 k회 이하인지 여부를 검증할 수 있다.
이하에서는 도 4에 도시된 구체적인 예를 들어 검증 과정을 설명한다.
다시 도 4를 참조하면, input 2에 대한 검증 요청이 있는 경우, 프로세서(120')는 입력 데이터 정보를 참조로 하여 기존에 생성된 머클 트리와 리프 노드 정보를 식별하고, 식별된 머클 트리 정보(tree_id = 0)에 대응되는 소정의 transaction ID를 데이터베이스에 전송하여 데이터베이스로부터 OP 메시지를 획득한다. 그리고, 프로세서(120')는 input 2를 이용하여 새로운 머클 트리를 생성하거나 생성하도록 지원할 수 있다. input 2의 해쉬값(triplesha256digest(input2))이 h2 노드에 할당되어 있으므로 프로세서(120')는 h2 노드에 할당된 해쉬값과 기존에 생성된 머클 트리에서 h2 노드의 형제 노드인 h3 노드에 할당된 해쉬값을 연산하거나 연산하도록 지원할 수 있다. 상기 연산값에 대한 해쉬값은 h2 노드와 h3 노드의 부모 노드인 h23 노드에 할당된다. h23 노드가 새로운 머클 트리의 루트 노드가 아니므로 프로세서(120')는 상기 h23 노드에 할당된 해쉬값을 상기 제2 제품 사용 정보의 해쉬값으로 하여 상기 과정을 반복하여 수행할 수 있다. 즉, h23 노드에 할당된 해쉬값을 제2 제품 사용 정보의 해쉬값으로 하고, h23 노드에 할당된 해쉬값과 기존에 생성된 머클 트리에서 h01 노드에 할당된 해쉬값을 연산하여 h23 노드와 h01 노드의 부모 노드인 h0123 노드에 할당할 수 있다. 이때, h0123 노드가 머클 트리의 루트 노드이므로 프로세서(120')는, h0123 노드에 할당된 해쉬값을 가공한 값(hex(h{node_index}))을 상기 OP 메시지에 포함된 값과 비교하거나 비교하도록 지원할 수 있다.
한편, 전술한 프로세서(120')는 통신부(110') 및 다른 구성요소 간의 데이터의 흐름을 제어하는 기능을 수행한다. 즉, 프로세서(120')는 서버(100')의 각 구성요소 간의 데이터의 흐름을 제어함으로써, 통신부(110') 및 다른 구성요소에서 각각 고유 기능을 수행하도록 제어한다.
프로세서(120')는 MPU(Micro Processing Unit) 또는 CPU(Central Processing Unit), 캐쉬 메모리(Cache Memory), 데이터 버스(Data Bus) 등의 하드웨어 구성을 포함할 수 있다. 또한, 운영체제, 특정 목적을 수행하는 어플리케이션의 소프트웨어 구성을 더 포함할 수도 있다.
또한, 이상 설명된 본 발명에 따른 실시예들은 다양한 컴퓨터 구성요소를 통하여 수행될 수 있는 프로그램 명령어의 형태로 구현되어 컴퓨터 판독 가능한 기록 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능한 기록 매체는 프로그램 명령어, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 컴퓨터 판독 가능한 기록 매체에 기록되는 프로그램 명령어는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 분야의 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능한 기록 매체의 예에는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 ROM, RAM, 플래시 메모리 등과 같은 프로그램 명령어를 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령어의 예에는, 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드도 포함된다. 상기 하드웨어 장치는 본 발명에 따른 처리를 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상에서 본 발명이 구체적인 구성요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나, 이는 본 발명의 보다 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명이 상기 실시예들에 한정되는 것은 아니며, 본 발명이 속하는 기술분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형을 꾀할 수 있다.
따라서, 본 발명의 사상은 상기 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등하게 또는 등가적으로 변형된 모든 것들은 본 발명의 사상의 범주에 속한다고 할 것이다.
100, 100' : 서버
110, 110' : 통신부
120, 120' : 프로세서
130' : 제1 데이터베이스
200' : 제2 데이터베이스
300 : 단말

Claims (28)

  1. 진품 관리를 위하여 제품별 주소 및 인덱스를 생성하는 방법에 있어서,
    (a) 서버가, 결정적 키 생성법을 이용하여 랜덤값(random value)인 seed로부터 master public key를 생성하거나 생성하도록 지원하는 단계,
    (b) 상기 서버가, 상기 master public key를 이용하여 적어도 하나의 HD index(Hierarchical Deterministic Index)를 생성하거나 생성하도록 지원하는 단계, 및
    (c) 상기 서버가, 상기 master public key를 이용하여 상기 생성된 적어도 하나의 HD index에 대응되는 고유주소를 생성하거나 생성하도록 지원하는 단계를 포함하되,
    상기 (c) 단계에서,
    상기 고유주소에 대하여 copy license가 k 회 허용된 경우, 상기 고유주소를 생성하거나 생성하도록 지원함에 있어서, 상기 고유주소로 소정 액수의 가상 화폐를 입금하는 transaction을 상기 k회까지 생성하여 데이터베이스로 전송 가능하도록 설정하는 것을 특징으로 하는 방법.
  2. 제1항에 있어서,
    상기 적어도 하나의 HD index는, 제조사 정보를 나타내는 제1 child index 및 제품 정보를 나타내는 제2 child index 및 중 적어도 일부를 포함하는 것을 특징으로 하는 방법.
  3. 제1항에 있어서,
    (d) 상기 서버가, 상기 생성된 HD index 및 고유주소를 제공하는 단계를 더 포함하는 것을 특징으로 하는 방법.
  4. 제3항에 있어서,
    상기 (d) 단계는,
    상기 서버가, 상기 생성된 HD index 및 상기 생성된 고유주소를 식별 코드에 포함하여 제공하는 것을 특징으로 하는 방법.
  5. 제1항에 있어서,
    상기 (a) 단계에서,
    상기 서버는, 상기 결정적 키 생성법을 이용하여 상기 seed로부터 master private key를 생성하거나 생성하도록 지원하고, 상기 생성된 master private key로부터 상기 master public key를 생성하거나 생성하도록 지원하는 것을 특징으로 하는 방법.
  6. 삭제
  7. 진품 관리를 위하여 위조품을 검출하는 방법에 있어서,
    (a) 제품에 표시된 식별코드가 단말에 의해 스캔되어 HD index 및 고유주소가 전달되면, 서버가, 결정적 키 생성법에 의하여 랜덤값(random value)인 seed로부터 생성된 master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되는지 검증하거나 검증하도록 지원하는 단계,
    (b) 상기 master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되지 않으면, 상기 서버가, 상기 제품이 가품인 것으로 판정하고, 상기 master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되면, 상기 제품이 진품인 것으로 판정하는 단계,
    (c) 상기 master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되면, 상기 서버는, 데이터베이스에서 상기 고유주소 상의 balance를 확인하는 단계, 및
    (d) (i) 상기 balance가 0이면, 상기 서버는, 상기 제품을 아직 사용되지 않은 제품으로 판단하고, 상기 고유주소로 소정 액수의 가상 화폐를 입금하는 transaction을 생성하여 상기 데이터베이스로 전송하고, (ii) 상기 balance가 0이 아니면, 상기 제품을 이미 사용된 제품으로 판단하는 단계
    를 포함하되,
    상기 (a) 단계에서,
    상기 제품에 표시된 식별코드 스캔시 상기 제품과 관련된 소정의 정보가 더 획득되면,
    상기 (d) 단계의 (i)에서,
    상기 서버는, 상기 고유주소에 상기 제품과 관련된 소정의 정보의 해쉬값을 기록하는 것을 상기 transaction에 포함시켜 상기 transaction을 생성하는 것을 특징으로 하는 방법.
  8. 삭제
  9. 제7항에 있어서,
    상기 balance가 0인 경우, 상기 제품에 표시된 식별코드가 스캔되는 외에 특정 입력이 있는 경우에 한해, 상기 transaction을 생성하여 상기 데이터베이스로 전송하는 동작이 이루어지는 것을 특징으로 하는 방법.
  10. 제9항에 있어서,
    상기 특정 입력은 상기 제품에 대한 구매 확인 입력인 것을 특징으로 하는 방법.
  11. 제7항에 있어서,
    상기 (d) 단계에서,
    동일한 고유주소에 대하여 multiple copy license가 허용된 경우, 상기 balance가 0이 아니라고 하더라도, 상기 balance가 소정의 값 미만이면, 상기 서버는, 상기 고유주소로 상기 소정 액수의 가상 화폐를 입금하는 transaction을 생성하여 상기 데이터베이스로 전송하는 것을 특징으로 하는 방법.
  12. 삭제
  13. 제7항에 있어서
    상기 제품과 관련된 소정의 정보는, 상기 제품 사용 시각 정보, 상기 제품 사용 위치 정보, 상기 제품 사용 장치 정보 중 적어도 일부를 포함하는 것을 특징으로 하는 방법.
  14. 제7항에 있어서,
    상기 (ii)에서 상기 balance가 0이 아니고, op_return이 존재하는 경우, 상기 서버가, 상기 제품을 이미 사용된 제품으로 판단하는 것을 특징으로 하는 방법.
  15. 진품 관리를 위하여 제품별 주소 및 인덱스를 생성하는 서버에 있어서,
    통신부; 및
    결정적 키 생성법을 이용하여 랜덤값(random value)인 seed로부터 master public key를 생성하거나 생성하도록 지원하고, 상기 master public key를 이용하여 적어도 하나의 HD index(Hierarchical Deterministic Index)를 생성하거나 생성하도록 지원하며, 상기 master public key를 이용하여 상기 생성된 적어도 하나의 HD index에 대응되는 고유주소를 생성하거나 생성하도록 지원하는 프로세서를 포함하되,
    상기 프로세서는,
    상기 고유주소에 대하여 copy license가 k 회 허용된 경우, 상기 고유주소를 생성하거나 생성하도록 지원함에 있어서, 상기 고유주소로 소정 액수의 가상 화폐를 입금하는 transaction을 상기 k회까지 생성하여 데이터베이스로 전송 가능하도록 설정하는 것을 특징으로 하는 서버.
  16. 제15항에 있어서,
    상기 적어도 하나의 HD index는, 제조사 정보를 나타내는 제1 child index 및 제품 정보를 나타내는 제2 child index 및 중 적어도 일부를 포함하는 것을 특징으로 하는 서버.
  17. 제15항에 있어서,
    상기 통신부는,
    상기 생성된 HD index 및 고유주소를 제공하는 것을 특징으로 하는 서버.
  18. 제17항에 있어서,
    상기 통신부는,
    상기 생성된 HD index 및 상기 생성된 고유주소를 식별 코드에 포함하여 제공하는 것을 특징으로 하는 서버.
  19. 제15항에 있어서,
    상기 프로세서는,
    상기 결정적 키 생성법을 이용하여 상기 seed로부터 master private key를 생성하거나 생성하도록 지원하고, 상기 생성된 master private key로부터 상기 master public key를 생성하거나 생성하도록 지원하는 것을 특징으로 하는 서버.
  20. 삭제
  21. 진품 관리를 위하여 위조품을 검출하는 서버에 있어서,
    제품에 표시된 식별코드가 단말에 의해 스캔되면 상기 단말로부터 HD index 및 고유주소를 수신하는 통신부, 및
    결정적 키 생성법에 의하여 랜덤값(random value)인 seed로부터 생성된 master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되는지 검증하거나 검증하도록 지원하고, 상기 master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되지 않으면, 상기 제품이 가품인 것으로 판정하고, 상기 master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되면, 상기 제품이 진품인 것으로 판정하는 프로세서를 포함하되,
    상기 프로세서는,
    상기 master public key를 이용하여 상기 HD index로부터 상기 고유주소가 출력되면, 데이터베이스에서 상기 고유주소 상의 balance를 확인하고,
    (i) 상기 balance가 0이면, 상기 제품을 아직 사용되지 않은 제품으로 판단하고, 상기 고유주소로 소정 액수의 가상 화폐를 입금하는 transaction을 생성하여 상기 데이터베이스로 전송하고, (ii) 상기 balance가 0이 아니면, 상기 제품을 이미 사용된 제품으로 판단하며,
    상기 제품에 표시된 식별코드 스캔시 상기 제품과 관련된 소정의 정보가 더 획득되면,
    상기 (i)에서,
    상기 프로세서는, 상기 고유주소에 상기 제품과 관련된 소정의 정보의 해쉬값을 기록하는 것을 상기 transaction에 포함시켜 상기 transaction을 생성하는 것을 특징으로 하는 서버.
  22. 삭제
  23. 제21항에 있어서,
    상기 balance가 0인 경우, 상기 제품에 표시된 식별코드가 스캔되는 외에 특정 입력이 있는 경우에 한해, 상기 transaction을 생성하여 상기 데이터베이스로 전송하는 동작이 이루어지는 것을 특징으로 하는 서버.
  24. 제23항에 있어서,
    상기 특정 입력은 상기 제품에 대한 구매 확인 입력인 것을 특징으로 하는 서버.
  25. 제21항에 있어서,
    동일한 고유주소에 대하여 multiple copy license가 허용된 경우, 상기 balance가 0이 아니라고 하더라도, 상기 balance가 소정의 값 미만이면, 상기 프로세서는, 상기 고유주소로 상기 소정 액수의 가상 화폐를 입금하는 transaction을 생성하여 상기 데이터베이스로 전송하는 것을 특징으로 하는 서버.
  26. 삭제
  27. 제21항에 있어서
    상기 제품과 관련된 소정의 정보는, 상기 제품 사용 시각 정보, 상기 제품 사용 위치 정보, 상기 제품 사용 장치 정보 중 적어도 일부를 포함하는 것을 특징으로 하는 서버.
  28. 제21항에 있어서,
    상기 (ii)에서 상기 balance가 0이 아니고, op_return이 존재하는 경우, 상기 프로세서가, 상기 제품을 이미 사용된 제품으로 판단하는 것을 특징으로 하는 서버.
KR1020160040458A 2016-04-01 2016-04-01 진품 관리를 위하여 제품별 주소 및 인덱스를 생성하고 위조품을 검출하는 방법 및 서버 KR101795697B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020160040458A KR101795697B1 (ko) 2016-04-01 2016-04-01 진품 관리를 위하여 제품별 주소 및 인덱스를 생성하고 위조품을 검출하는 방법 및 서버

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020160040458A KR101795697B1 (ko) 2016-04-01 2016-04-01 진품 관리를 위하여 제품별 주소 및 인덱스를 생성하고 위조품을 검출하는 방법 및 서버

Publications (2)

Publication Number Publication Date
KR20170112817A KR20170112817A (ko) 2017-10-12
KR101795697B1 true KR101795697B1 (ko) 2017-11-09

Family

ID=60141118

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160040458A KR101795697B1 (ko) 2016-04-01 2016-04-01 진품 관리를 위하여 제품별 주소 및 인덱스를 생성하고 위조품을 검출하는 방법 및 서버

Country Status (1)

Country Link
KR (1) KR101795697B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101937188B1 (ko) * 2018-02-06 2019-04-09 주식회사 코인플러그 블록체인 기반의 머클트리를 이용한 정보 관리 방법, 이를 이용한 서버 및 단말
KR20200069192A (ko) * 2018-12-06 2020-06-16 애니팬 주식회사 Qr 코드 및 블록체인 네트워크를 이용한 위조방지 시스템 및 그 방법
KR102482969B1 (ko) 2022-04-07 2022-12-29 주식회사 페이커즈 인공지능 기반 온라인 위조상품 단속 시스템 및 방법

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101954304B1 (ko) * 2017-11-02 2019-05-23 한국조폐공사 블록체인 기반의 담배 추적 방법 및 이를 이용한 담배 추적 서버
KR102199051B1 (ko) * 2019-02-21 2021-01-06 박대훈 아트포스터 판매시스템 및 그 방법

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101249828B1 (ko) 2012-07-20 2013-04-03 주식회사 비즈씨앤에스 진품확인 서비스 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101249828B1 (ko) 2012-07-20 2013-04-03 주식회사 비즈씨앤에스 진품확인 서비스 시스템

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101937188B1 (ko) * 2018-02-06 2019-04-09 주식회사 코인플러그 블록체인 기반의 머클트리를 이용한 정보 관리 방법, 이를 이용한 서버 및 단말
KR20200069192A (ko) * 2018-12-06 2020-06-16 애니팬 주식회사 Qr 코드 및 블록체인 네트워크를 이용한 위조방지 시스템 및 그 방법
KR102319744B1 (ko) * 2018-12-06 2021-11-01 애니팬 주식회사 Qr 코드 및 블록체인 네트워크를 이용한 위조방지 시스템 및 그 방법
KR102482969B1 (ko) 2022-04-07 2022-12-29 주식회사 페이커즈 인공지능 기반 온라인 위조상품 단속 시스템 및 방법
KR20230144455A (ko) 2022-04-07 2023-10-16 주식회사 페이커즈 인공지능 기반 온라인 위조상품 단속 시스템 및 방법

Also Published As

Publication number Publication date
KR20170112817A (ko) 2017-10-12

Similar Documents

Publication Publication Date Title
KR101862856B1 (ko) 진품 관리를 위하여 제품의 사용 관련 데이터를 기록하고 검증하는 방법 및 서버
KR101795697B1 (ko) 진품 관리를 위하여 제품별 주소 및 인덱스를 생성하고 위조품을 검출하는 방법 및 서버
US11669832B2 (en) Blockchain-implemented method and system for access control on remote internet-enabled resources
CN109981679B (zh) 在区块链网络中执行事务的方法和装置
CN109040029B (zh) 在区块链中执行事务的方法和装置
US10235538B2 (en) Method and server for providing notary service for file and verifying file recorded by notary service
WO2020124317A1 (en) Multi-access edge computing node with distributed ledger
US20200074424A1 (en) Systems and methods for parallel verification of blockchain transactions
US20160358267A1 (en) Machine/article/composition/process state(s) for tracking philanthropic and/or other efforts
KR20180014534A (ko) 블록체인 기반 트랜잭션 검증 시스템 및 그 방법
US20120324229A1 (en) System and method for generating keyless digital multi-signatures
KR101798119B1 (ko) 주주명부를 등록하고 주식 소유권 이전을 기록하고 등록된 주주명부 파일을 검증하는 방법 및 서버
CN110543488B (zh) 一种验证节点更新方法、装置及设备
US20140181007A1 (en) Trademark reservation system
CN112003940B (zh) 基于区块链和在线业务的支付网络状态处理方法及服务器
CN112381543A (zh) 多重签名交易方法、设备和存储介质
KR20130135143A (ko) 시리즈 데이터의 보호장치
CN109255709A (zh) 一种基于区块链的结账方法及其***
CN108924185A (zh) 接口生成方法及装置
CN111327565B (zh) 区块链出块方法和***
CN106548043A (zh) 一种应用程序的授权方法、安装方法、安装端及***
CN112132576B (zh) 基于区块链通信的支付信息处理方法及区块链信息平台
CN112181599B (zh) 模型训练方法、装置及存储介质
KR101829731B1 (ko) 주주명부를 등록하고 주식 소유권 이전을 기록하는 방법 및 서버
KR101841929B1 (ko) 머클트리 구조를 사용하여, 문서를 오프라인으로 발행하며 발행된 오프라인 문서에 대한 인증을 수행하는 방법 및 이를 이용한 서버

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant