KR102239398B1 - 재전송 공격을 검출하기 위한 시스템 및 방법 - Google Patents

재전송 공격을 검출하기 위한 시스템 및 방법 Download PDF

Info

Publication number
KR102239398B1
KR102239398B1 KR1020197015102A KR20197015102A KR102239398B1 KR 102239398 B1 KR102239398 B1 KR 102239398B1 KR 1020197015102 A KR1020197015102 A KR 1020197015102A KR 20197015102 A KR20197015102 A KR 20197015102A KR 102239398 B1 KR102239398 B1 KR 102239398B1
Authority
KR
South Korea
Prior art keywords
transaction
timestamp
database
determining
blockchain
Prior art date
Application number
KR1020197015102A
Other languages
English (en)
Other versions
KR20200083931A (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 어드밴스드 뉴 테크놀로지스 씨오., 엘티디.
Publication of KR20200083931A publication Critical patent/KR20200083931A/ko
Application granted granted Critical
Publication of KR102239398B1 publication Critical patent/KR102239398B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/1466Active attacks involving interception, injection, modification, spoofing of data unit addresses, e.g. hijacking, packet injection or TCP sequence number attacks

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
  • Telephonic Communication Services (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

재전송 공격을 검출하기 위한 컴퓨터 구현 방법은, 블록체인에 추가하기 위한 적어도 하나의 후보 트랜잭션을 획득하는 단계; 후보 트랜잭션의 ID가 ID 데이터베이스에 존재하는지를 검증하는 단계로서, ID 데이터베이스는 유효성 확인 범위 내 복수의 ID를 포함하는, 후보 트랜잭션의 ID가 ID 데이터베이스에 존재하는지를 검증하는 단계; 및 ID가 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하는 단계를 포함한다.

Description

재전송 공격을 검출하기 위한 시스템 및 방법
본 출원은 일반적으로 재전송 공격(replay attack)을 검출하기 위한 방법 및 장치에 관한 것이다.
재전송 공격(또한 재생 공격, 무결성 공격, 중간자 공격(man-in-the-middle attack)으로서 알려짐)은 유효한 데이터 전송이 악의적으로 또는 부정하게 반복되거나 또는 지연되는 네트워크 공격의 형태이다. 이것은 노드(예를 들어, 서버)로의 전송의 발신자에 의해 또는 데이터를 가로채고 그리고 데이터를 노드로 재전송하는 상대방에 의해 수행될 수도 있다. 예를 들어, 재전송 공격은 인터넷 프로토콜(Internet Protocol: IP) 패킷 대체에 의한 위장 공격의 일부로서 수행될 수도 있다. 재전송 공격을 설명하는 또 다른 방식은, 상이한 콘텍스트로부터 의도된(또는 원래의 그리고 예상된) 콘텍스트로 메시지의 재전송을 사용하여, 어니스트 노드(들)(honest node)가 프로토콜 실행을 성공적으로 완료하였다고 생각하게 어니스트 노드(들)를 속이는, 보안 프로토콜 상의 공격이다. 예를 들어, 프로토콜은 블록체인 트랜잭션 프로토콜(transaction protocol)일 수도 있다. 블록체인은 동일한 어드레스, 암호화 키, 및 트랜잭션 시스템을 따르는 2개 이상의 하위-체인으로 분기될 수도 있다. 하나의 하위-체인 상의 합법적인 트랜잭션이 재전송 공격에 의해 또 다른 하위-체인에서 악의적으로 반복될 수도 있어서, 전송자에게 손실을 유발한다.
블록체인이 종래의 네트워크에 비해 다양한 이점으로 유리하지만, 그럼에도 불구하고 블록체인은 재전송 공격에 취약하다. 예를 들어, 20개의 이더(ether)를 A로부터 B로 블록체인을 통해 전송하는 트랜잭션이 재전송 공격으로 B에 의해 반복될 수 있어서 A의 잔액을 지속적으로 빼낸다. 따라서, 재전송 공격 검출은 악의적인 블록체인 작업을 막고 그리고 재산을 보호하기 위해 중요하다.
본 출원의 다양한 실시형태는 재전송 공격을 검출하기 위한 시스템, 방법, 및 비일시적 컴퓨터 판독가능 매체를 포함한다.
하나의 양상에 따르면, 재전송 공격을 검출하기 위한 컴퓨터 구현 방법은, 블록체인에 추가하기 위한 적어도 하나의 후보 트랜잭션(candidate transaction)을 획득하는 단계; 후보 트랜잭션의 ID(identification)가 ID 데이터베이스에 존재하는지를 검증하는 단계로서, ID 데이터베이스는 유효성 확인 범위(validation range) 내 복수의 ID를 포함하는, 후보 트랜잭션의 ID가 ID 데이터베이스에 존재하는지를 검증하는 단계; 및 ID가 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하는 단계를 포함한다.
일부 실시형태에서, 획득된 후보 트랜잭션은 타임스탬프를 포함하고; 후보 트랜잭션의 ID가 ID 데이터베이스에 존재하는지를 검증하는 단계는 타임스탬프가 유효성 확인 범위 내에 있는지 그리고 후보 트랜잭션의 ID가 ID 데이터베이스에 존재하는지를 검증하는 것을 포함하고; 그리고 ID가 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하는 단계는 타임스탬프가 유효성 확인 범위 내에 있고 그리고 ID가 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하는 것을 포함한다.
일부 실시형태에서, 후보 트랜잭션은 타임스탬프와 트랜잭션 정보를 포함한다. 적어도 하나의 후보 트랜잭션을 획득한 후 그리고 후보 트랜잭션의 ID가 ID 데이터베이스에 존재하는지를 검증하기 전에, 방법은, 적어도 타임스탬프와 트랜잭션 정보에 기초하여 해시값을 결정하는 단계를 더 포함하고, 해시값은 ID로서 기능한다.
일부 실시형태에서, 후보 트랜잭션은 타임스탬프, 트랜잭션 정보, 및 적어도 타임스탬프와 트랜잭션 정보에 기초하여 결정된 해시값을 포함하고, 해시값은 ID로서 기능한다. 적어도 하나의 후보 트랜잭션을 획득한 후 그리고 후보 트랜잭션의 ID가 ID 데이터베이스에 존재하는지를 검증하기 전에, 방법은, 적어도 타임스탬프와 트랜잭션 정보에 기초하여 해시값을 검증함으로써 ID를 검증하는 단계를 더 포함한다.
일부 실시형태에서, 타임스탬프는 적어도 하나의 후보 트랜잭션을 개시시키는 사용자 단말기에 의해 구성되고; 그리고 블록체인에 추가하기 위한 적어도 하나의 후보 트랜잭션을 획득하는 단계는 후보 트랜잭션을 사용자 단말기로부터 수신하는 것을 포함한다.
일부 실시형태에서, 타임스탬프는 블록체인 노드에 의해 구성되고; 그리고 블록체인에 추가하기 위한 적어도 하나의 후보 트랜잭션을 획득하는 단계는, 적어도 하나의 개시된 트랜잭션을 사용자 단말기로부터 수신하는 것; 및 타임스탬프를 개시된 트랜잭션에 추가하여 적어도 하나의 후보 트랜잭션을 획득하는 것을 포함한다.
일부 실시형태에서, 방법은 타임스탬프가 유효성 확인 범위 내에 있고 그리고 ID가 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, ID를 ID 데이터베이스에 추가하는 단계를 더 포함한다.
일부 실시형태에서, 방법은 타임스탬프가 유효성 확인 범위 내에 있고 그리고 ID가 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 후보 트랜잭션을 후보 트랜잭션을 저장하기 위한 캐시에 추가하는 단계를 더 포함한다.
일부 실시형태에서, 방법은 타임스탬프가 유효성 확인 범위 내에 없다는 결정에 응답하여, 에러 메시지를 후보 트랜잭션을 제출하는 연산 장치로 복귀시키는 단계를 더 포함한다.
일부 실시형태에서, 방법은 ID가 ID 데이터베이스에 존재한다는 결정에 응답하여, 후보 트랜잭션이 재전송 공격과 연관된다고 결정하는 단계를 더 포함한다.
일부 실시형태에서, 방법은 합의 검증을 수행하는 단계를 더 포함하되, 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정된다면 후보 트랜잭션이 합의 검증에 포함된다.
일부 실시형태에서, 방법은 ID 데이터베이스와 하나 이상의 다른 블록체인 노드를 동기화하는 단계; 타임스탬프가 유효성 확인 범위 내에 있는지 그리고 후보 트랜잭션의 ID가 동기화된 ID 데이터베이스에 존재하는지를 검증하는 단계; 타임스탬프가 유효성 확인 범위 내에 있고 그리고 ID가 동기화된 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하는 단계; 및 ID가 동기화된 ID 데이터베이스에 존재한다는 결정에 응답하여, 후보 트랜잭션이 재전송 공격과 연관된다고 결정하는 단계를 더 포함한다.
일부 실시형태에서, 적어도 하나의 후보 트랜잭션을 획득하기 전에, 방법은 ID 데이터베이스를 하나 이상의 다른 블록체인 노드와 동기화하는 단계를 더 포함한다.
일부 실시형태에서, ID 데이터베이스는 유효성 확인 범위에 대응하는 최근의 시간 기간 내 타임스탬프를 가진 트랜잭션의 정보를 포함한다.
일부 실시형태에서, 유효성 확인 범위는 블록체인의 최신의 블록의 또 다른 타임스탬프에 기초하고; 그리고 유효성 확인 범위는 블록체인의 기원 블록에 포함된다.
일부 실시형태에서, 유효성 확인 범위는 타임스탬프가 유효성 확인 범위 내에 있는지의 검증을 수행하는 블록체인 노드의 내부 클록에 기초한다.
또 다른 양상에 따르면, 재전송 공격을 검출하기 위한 시스템은, 하나 이상의 프로세서, 및 하나 이상의 프로세서에 연결되고 그리고 시스템이 동작을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성된 하나 이상의 비일시적 컴퓨터-판독가능 메모리를 포함하되, 동작은, 블록체인에 추가하기 위한 적어도 하나의 후보 트랜잭션을 획득하는 단계; 후보 트랜잭션의 ID가 ID 데이터베이스에 존재하는지를 검증하는 단계로서, ID 데이터베이스는 유효성 확인 범위 내 복수의 ID를 포함하는, 후보 트랜잭션의 ID가 ID 데이터베이스에 존재하는지를 검증하는 단계; 및 ID가 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하는 단계를 포함한다.
또 다른 양상에 따르면, 비일시적 컴퓨터-판독가능 저장 매체는 하나 이상의 프로세서가 동작을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성되고, 동작은, 블록체인에 추가하기 위한 적어도 하나의 후보 트랜잭션을 획득하는 단계; 후보 트랜잭션의 ID가 ID 데이터베이스에 존재하는지를 검증하는 단계로서, ID 데이터베이스는 유효성 확인 범위 내 복수의 ID를 포함하는, 후보 트랜잭션의 ID가 ID 데이터베이스에 존재하는지를 검증하는 단계; 및 ID가 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하는 단계를 포함한다.
제조 부품과 제조 부품의 조합 및 구조의 관련 요소들의 동작과 기능의 방법뿐만 아니라 본 명세서에서 개시하는 시스템, 방법, 및 비일시적 컴퓨터 판독가능 매체의 이러한 기능, 및 기타 기능은, 첨부 도면을 참조하여 다음에 따르는 설명과 청구범위를 고려할 때 더욱 명백해질 것이며, 이들 모두는 본 명세서의 일부를 이루며, 유사한 참조 번호는 다양한 도면에서의 대응 부분을 가리킨다. 그러나, 도면은 예시와 설명을 위한 것일 뿐이며 본 발명을 한정하도록 정의하는 것이 아님을 명확하게 이해해야 한다.
본 기술의 다양한 실시형태의 특정한 특징이 특히 첨부된 청구항에 제시된다. 본 발명의 원리를 이용하는 예시적인 실시형태를 설명하는 다음에 따르는 상세한 설명 및 첨부 도면을 참조함으로써, 본 기술의 특징과 이점을 더 잘 이해할 수 있으며, 도면에서:
도 1은 다양한 실시형태에 따른, 재전송 공격을 검출하기 위한 예시적인 시스템을 예시하는 도면.
도 2는 다양한 실시형태에 따른, 재전송 공격 검출을 채용하는 예시적인 트랜잭션을 예시하는 도면.
도 3은 다양한 실시형태에 따른, 재전송 공격을 검출하기 위한 예시적인 방법의 흐름도.
도 3은 다양한 실시형태에 따른, 재전송 공격을 검출하기 위한 예시적인 방법의 흐름도.
도 4a는 다양한 실시형태에 따른, 재전송 공격을 검출하기 위한 예시적인 방법의 흐름도.
도 4b는 다양한 실시형태에 따른, 재전송 공격을 검출하기 위한 예시적인 방법의 흐름도.
도 5는 다양한 실시형태에 따른, 재전송 공격을 검출하기 위한 예시적인 컴퓨터 시스템의 블록도.
도 6은 다양한 실시형태에 따른, 재전송 공격을 검출하기 위한 예시적인 컴퓨터 시스템의 블록도.
도 7은 본 명세서에 설명된 임의의 실시형태가 구현될 수도 있는 예시적인 컴퓨터 시스템의 블록도.
블록체인은, 네트워크의 다양한 노드(예컨대, 연산 장치)에 의해 동작이 수행되기 때문에, 일반적으로 분산형 원장이라고 하는 비집중형 데이터베이스로 간주될 수도 있다. 임의의 정보가 블록체인에 기입될 수도 있고 그리고 블록체인으로부터 저장 또는 판독될 수도 있다. 노드는 예를 들어, 블록체인 네트워크를 지원하고 그리고 블록체인 네트워크를 원활하게 실행되게 하는 연산 장치 또는 대형 컴퓨터 시스템이다. 각각의 노드는 블록체인의 기능 중 일부 또는 전부를 제공할 수도 있다. 예를 들어, 합의 검증을 제공하는 노드는 합의-참여 노드(또는 합의 노드)로서 지칭될 수도 있다.
다양한 실시형태에서, 합의는 블록체인 노드의 네트워크가 공통으로-수용된 처리 결과를 달성하기 위한 결과의 알고리즘일 수도 있다. 예를 들어, 블록체인 노드는 네트워크 래그에 기인하여 상이한 순서로 트랜잭션을 수신할 수도 있고, 이것의 이슈는 합의에 의해 태클될 수 있다. 하나의 실시예에서, "작업 증명(proof of work)" 합의 시스템 하에서, 블록체인 노드는 보상을 수신하고 그리고 블록체인의 블록을 검증하도록 하드웨어 또는 연산력을 적용하는 마이너의 장치를 포함할 수도 있다. 작업 증명을 생성하는 것은 유효한 작업 증명이 생성되기 전에 다수의 시행착오가 평균적으로 요구되도록 낮은 확률을 가진 랜덤 과정일 수 있다. 비트코인은 해시캐시 작업 증명 시스템을 사용한다. 또 다른 실시예에서, "지분/서비스 증명" 합의 시스템 하에서, 특정한 수준의 투표권을 가진 블록체인 노드는 비합의 노드와는 대조적으로, 트랜잭션 검증의 책임을 맡은 합의/마스터/주요 노드로서 지칭될 수도 있다. 합의 노드는 새로운 블록체인 블록을 생성할 수도 있고 그리고 블록체인을 위한 결정을 내릴 수도 있고, 예를 들어, 블록체인을 위한 서비스 요금을 설정한다. 합의 노드는 대량의 암호통화와 연관될 수도 있고 그리고 상호 동의한 특정한 합의 규칙에 기초하여 새로운 트랜잭션을 검증할 수도 있다. 합의 노드를 결정하기 위한 규칙에 기초하여, 지분/서비스 증명 합의 시스템은 체인-기반 지분/서비스 증명 합의 시스템, 비잔티움 장애 허용(Byzantine Fault Tolerance: BFT) 알고리즘 지분/서비스 증명 합의 시스템 등으로서 구현될 수도 있다. 이 명세서에서, 개시된 또는 또 다른 블록체인 시스템 내 전체 노드(full node), 합의 노드 또는 다른 동등한 노드는 블록체인 노드로서 트랜잭션을 검증할 수 있다. 예를 들어, 블록체인 시스템은 공개 블록체인, 컨소시엄 블록체인, 개인 블록체인 등을 포함할 수도 있다.
미소비 트랜잭션 출력(unspent transaction output: UTXO) 모델과는 다르게, 이더리움(ethereum)은 글로벌 상태로서 각각의 계정의 잔액을 추적하는 계정/잔액 모델(또는 계정 기반 트랜잭션 모델로서 지칭됨)에 기초한다. 트랜잭션에서, 계정의 잔액이 지출 트랜잭션 금액 이상임을 확실히 하도록 계정의 잔액을 체크한다. 이더리움에서 계정/잔액 모델이 작용하는 방법의 실시예가 제공된다:
1. 앨리스는 마이닝을 통해 5개의 이더를 얻는다. 앨리스가 5개의 이더를 가지고 있음을 시스템에 기록한다.
2. 앨리스는 밥에게 1개의 이더를 주려고 하므로, 시스템은 먼저 앨리스의 계정에서 1개의 이더를 공제할 것이고, 이에 따라 앨리스는 이제 4개의 이더를 갖게 된다.
3. 이어서 시스템은 밥의 계정을 1개의 이더만큼 증가시킨다. 시스템은 밥이 처음에 2개의 이더를 가지고 있음을 알고 있으므로, 밥의 잔액은 3개의 이더로 증가한다.
계정/잔액 모델 하에서, 블록체인 노드는 모든 이더 트랜잭션 외에, 각각의 스마트 계약의 최신 상태를 저장한다. 각각의 이더리움 적용에 대해, 네트워크는 계정 논스(account nonce), 각각의 사용자의 잔액, 모든 스마트 계약 코드(예를 들어, 이진 코드), 저장 공간(예를 들어, 해시를 저장하기 위함)을 포함하는, "상태" 또는 현재의 정보를 추적할 수도 있다.
이전의 트랜잭션으로부터 미소비된 양으로서 이용 가능한 잔액을 규정함으로써 재전송 공격 또는 이중-지출을 방지하는 UTXO 모델과는 달리, 종래의 계정/잔액 모델은 재전송 공격을 차단하기 위한 메커니즘으로서 계정 논스를 사용한다. 계정 논스는 재전송 공격을 방지하기 위한 각각의 계정 내 트랜잭션 카운터이다. 둘 다가 계정/잔액 모델에서 존재할 수도 있지만, 계정 논스는 작업 증명 합의 시스템에서 작업 증명 논스와 구별될 수도 있고, 이는 UTXO 모델 하에서 작업 증명 조건을 충족하게 시도하도록 조정될 수 있는 블록 내 무의미 값이다. 계정/잔액 모델(지분/서비스 증명 시스템)을 참조하여 대부분 설명되지만, 개시된 시스템 및 방법은 계정/잔액 모델(예를 들어, 이더리움 시스템) 하의 적용으로 제한되지 않는다.
재전송 공격은 종종 특정한 자산을 이중 지출함으로써 이득을 불법적으로 얻도록 사용된다. 이중 지출을 "성공적"으로 하기 위해서, 악의적인 사용자는 일반적으로 트랜잭션을 한 명의 당사자에게 전송하고, 트랜잭션이 등록되기를 기다리고, 이 제1 트랜잭션으로부터 어느 정도를 대신 수집하고, 높은 가스 가격(이더리움의 연산의 가격)을 가진 또 다른 트랜잭션을 신속하게 전송하고, 그리고 먼저 마이닝된 제2 트랜잭션을 갖고 따라서 제1 트랜잭션을 무효화한다. 제2 트랜잭션은 종종 일부 변화(예를 들어, 시간, 가스 가격, 수신자, 또는 전송자가 구성한 또 다른 매개변수)를 가진 제1 트랜잭션의 복사본이다. 제2 트랜잭션은 제1 트랜잭션의 동일한 ID(예를 들어, 해시)를 사용할 수도 있다. 더 높은 가스 가격이 마이너를 모이게 해서 먼저 제2 트랜잭션을 마이닝할 수도 있기 때문에, 제2 트랜잭션이 실행되는 동안 제1 트랜잭션이 악의적인 사용자가 제1 트랜잭션으로부터 리턴을 유지하게 할 수도 있기 전에 제2 트랜잭션을 마이닝하여, 따라서 이중 지출을 달성한다. 계정 논스의 사용은 이 문제를 제거하도록 의도된다.
이더리움에서 트랜잭션을 이행할 때, 연속 번호는 계정 논스와 동일한 계정의 각각의 트랜잭션에 부착된다. 따라서, 계정 논스는 또한 미리 결정된 계정 어드레스로부터 전송된 트랜잭션의 번호를 나타낼 수도 있다. 계정 논스는 블록체인 네트워크의 노드를 포함하는, 블록체인 네트워크에 의해 유지된다. 각각의 노드는 계정 논스의 값에 따라 엄격한 순서로 특정한 계정으로부터 트랜잭션을 처리할 것이다. 따라서, 계정 논스 값을 정확하게 증분하는 것의 실패는 상이한 유형의 에러를 발생시킬 수 있다. 예를 들어, 최신의 계정 논스가 121이라고 가정하면, 계정 소유자가 121 이하의 계정 논스를 가진 동일한 계정을 위한 새로운 트랜잭션을 전송한다면(계정 논스를 재사용할 시도로), 노드는 이를 거부할 것이다. 동일한 가정 하에서, 계정 소유자가 123 이상의 계정 논스를 가진 새로운 트랜잭션을 전송한다면, 트랜잭션은 이 갭이 좁아질 때까지, 즉, 122의 계정 논스를 가진 트랜잭션이 처리될 때까지 처리되지 않을 것이다.
배경 부분에서 설명된 바와 같이, 재전송 공격 검출은 악의적인 블록체인 동작을 막고 그리고 재산을 보호하기 위해 중요하다. 블록체인이 비집중형 합의 검증을 위해 유리하지만, 그럼에도 불구하고 재전송 공격에 취약하다. 특히, 계정 논스 메커니즘은 특정한 단점 또는 결함을 갖는다. 예를 들어, 트랜잭션을 개시시키기 위해서, 사용자 단말기가 먼저 계정 논스를 블록체인 노드로부터 획득해야 할 수도 있어서, 통신 부담을 블록체인 노드에 추가한다. 또 다른 예를 들면, 계정 논스 메커니즘은 다음과 같이 다수의 상황에 신뢰할 수 없다. 상황 (1)에서, 계정은 제1 트랜잭션 그리고 그 다음에 제2 트랜잭션을 전송하고 둘 다는 동일한 블록체인 노드에 대한 동일한 트랜잭션 요금을 갖는다. 그러나, 블록체인 노드가 무질서한 네트워크 데이터 팩 전송에 기인하여 제1 트랜잭션 전에 제2 트랜잭션을 수신한다면, 블록체인 노드가 제2 트랜잭션 그리고 이어서 제1 트랜잭션을 실행하여, 계정 논스 메커니즘의 미준수에 기인하여 트랜잭션 둘 다의 실행 실패를 유발한다. 상황 (2)에서, 계정은 제1 트랜잭션 그리고 그 다음에 제2 트랜잭션을 동일한 블록체인 노드로 전송하고, 제2 트랜잭션은 더 높은 트랜잭션 요금을 갖는다. 이득을 최대화하기 위해서, 블록체인 노드가 우선적으로 제2 트랜잭션 그리고 이어서 제1 트랜잭션을 실행시키도록 프로그램되어, 계정 논스 메커니즘의 미준수에 기인하여 트랜잭션 둘 다의 실행 실패를 유발할 수도 있다. 상황 (3)에서, 계정은 상이한 트랜잭션을 다양한 사용자 단말기로부터 동시에 전송하지만, 이 트랜잭션은 동일한 계정 논스 값을 가질 것이다. 그 결과, 트랜잭션 중 최대 1개가 성공적으로 처리될 것이다.
적어도 현재의 기술의 결함을 경감시키기 위해서, 위에서 설명한 기술적 문제에 대한 기술적 해결책을 제공하기 위해서, 그리고 컴퓨터 기능을 개선시키기 위해서, 재전송 공격을 검출하기 위한 시스템 및 방법이 개시된다. 아래에 논의된 바와 같이, 다양한 실시형태에서, 타임스탬프 검증과 트랜잭션 ID 검증의 조합이 계정 논스의 사용을 대체하여 강력한 재전송 공격 검출을 달성하도록 사용될 수도 있다. 이에 따라, 악의적인 트랜잭션이 어니스트 트랜잭션으로부터 적시에 식별될 수 있고 그리고 폐기될 수 있다.
도 1은 다양한 실시형태에 따른, 다양한 개시된 단계 및 방법을 수행하기 위한 예시적인 시스템(100)을 도시한다. 도시된 바와 같이, 블록체인 네트워크는 복수의 블록체인 노드(예를 들어, 노드 1, 노드 2, 노드 3, 노드 4, 노드 i, 등)를 포함할 수도 있다. 블록체인 노드는 하나의 블록체인 노드가 또 다른 블록체인 노드와 통신하는 네트워크(예를 들어, 피어-투-피어 네트워크)를 형성할 수도 있다. 도시된 바와 같은 블록체인 노드의 순서와 수는 단지 예시적이고 그리고 예시의 간략함을 위한 것이다. 블록체인 노드는 서버, 컴퓨터, 등에서 구현될 수도 있다. 각각의 블록체인 노드는 TCP/IP와 같은 다양한 유형의 통신 방법을 통해 함께 연결된 하나 이상의 물리적 하드웨어 장치 또는 가상 장치에 대응할 수도 있다. 분류에 따라, 블록체인 노드는 전체 노드, Geth 노드, 합의 노드, 등을 포함할 수도 있다.
다양한 실시형태에서, 사용자 A 및 사용자 B는 블록체인 계약(예를 들어, 스마트 계약)을 수반할 수도 있거나 또는 수반하지 않을 수도 있는, 트랜잭션을 실행시키도록 블록체인 노드를 트리거링하기 위한 랩탑 및 모바일 폰과 같은 대응하는 장치를 사용할 수도 있다. 하나의 실시예에서, 사용자 A는 사용자 A의 계정 내 일부 자산을 사용자 B의 계정으로 이체함으로써 사용자 B와 거래하길 원할 수도 있다. 사용자 A 및 사용자 B는 트랜잭션을 개시시키고, 포워딩하거나 또는 액세스하도록 적절한 블록체인 소프트웨어(예를 들어, 암호화폐 지갑)가 설치된 대응하는 장치, 예컨대, 노드 A 및 노드 B(또한 사용자 단말기로서 지칭됨)를 사용할 수도 있다. 사용자 A의 장치, 예컨대, 노드 A는 수신자 노드로서 지칭된 사용자 B의 장치, 예컨대, 노드 B와의 트랜잭션을 개시시키는 개시자 노드로서 지칭될 수도 있다. 노드 A는 노드 1과의 통신을 통해 블록체인에 액세스할 수도 있고, 그리고 노드 B는 노드 2와의 통신을 통해 블록체인에 액세스할 수도 있다. 노드 A, 노드 B, 또는 유사한 노드가 트랜잭션을 노드 1, 노드 2, 또는 유사한 노드를 통해 블록체인으로 제출하여 트랜잭션을 블록체인에 추가하는 것을 요청할 수도 있다. 블록체인에서 벗어나서, 노드 A 및 노드 B는 통신(예를 들어, 노드 1 및 노드 2를 통하여 진행되는 일없는 정기적인 인터넷 통신)의 다른 채널을 가질 수도 있다. 일부 실시형태에서, 노드 A의 블록체인 소프트웨어는 블록체인 노드 1의 프런트-엔드(front-end)로서 간주될 수도 있고, 그리고 블록체인 노드 1은 블록체인 소프트웨어의 백-엔드(back-end)를 실행시킨다.
도 1의 노드의 각각은 프로세서 및, 노드(예를 들어, 프로세서)가 본 명세서에 설명된 재전송 공격을 검출하기 위한 다양한 동작을 수행하게 하도록 프로세서에 의해 실행 가능한 명령어로 구성된 비일시적 컴퓨터-판독가능 저장 매체를 포함할 수도 있다. 각각의 노드에는 다른 노드 및/또는 다른 장치와 통신하도록 소프트웨어(예를 들어, 트랜잭션 프로그램) 및/또는 하드웨어(예를 들어, 유선 연결부, 무선 연결부)가 설치될 수도 있다. 예를 들어, 사용자 장치, 예컨대, 노드 A 및 노드 B에는 사용자-엔드 소프트웨어, 예컨대, 암호화폐 지갑이 설치될 수도 있고, 그리고 블록체인 노드에는 블록체인 트랜잭션 처리 소프트웨어가 설치될 수도 있다. 노드 하드웨어 및 소프트웨어의 추가의 상세사항이 도 5 내지 도 7을 참조하여 나중에 설명된다.
블록체인 노드는 각각 메모리를 포함할 수도 있거나 또는 메모리에 연결될 수도 있다. 일부 실시형태에서, 메모리는 풀 데이터베이스(pool database)를 저장할 수도 있다. 풀 데이터베이스는 분산형 방식으로 복수의 블록체인 노드에 액세스 가능할 수도 있다. 예를 들어, 풀 데이터베이스는 블록체인 노드의 메모리에 각각 저장될 수도 있다. 풀 데이터베이스는 하나 이상의 사용자 장치, 예컨대, 사용자가 동작시키는 노드 A 및 노드 B에 의해 제출된 복수의 트랜잭션을 저장할 수도 있다. 이더리움 시스템에 대한 일부 실시형태에서, 미확인된 트랜잭션의 트랜잭션 요청을 수신한 후, 수신자 블록체인 노드는 트랜잭션의 일부 예비 검증을 수행할 수도 있다. 예를 들어, 도 1을 참조하면, 노드 1은 트랜잭션을 노드 A로부터 수신한 후 예비 검증을 수행할 수도 있다. 일단 검증된다면, 트랜잭션은 수신자 블록체인 노드의 풀 데이터베이스에 저장될 수도 있고, 풀 데이터베이스는 또한 트랜잭션을 수신자 노드가 행하는 처리를 반복하는 하나 이상의 다른 블록체인 노드(예를 들어, 노드 3, 노드 4)로 포워딩할 수도 있다. 일단 대응하는 풀 데이터베이스 내 트랜잭션이 특정한 수준에 도달한다면, 블록체인 노드는 합의 규칙 또는 또 다른 방법에 따라 대응하는 풀 데이터베이스 내 트랜잭션의 일괄처리(batch)를 각각 검증할 수도 있다. 트랜잭션이 블록체인 계약을 수반한다면, 블록체인 노드는 블록체인 계약을 국부적으로 실행할 수도 있다. 트랜잭션의 일괄처리를 (예를 들어, 합의 규칙에 따라) 성공적으로 검증하는 특정한 블록체인 노드가 트랜잭션을 패킹하여 블록체인의 국부적 복사본에 추가되고 그리고 그 결과를 다른 블록체인 노드에 유포할 수도 있다. 특정한 블록체인 노드는 먼저 성공적인 검증을 완료하고, 검증 특권을 획득하거나, 또는 또 다른 합의 규칙에 기초하여 결정하는 블록체인 노드일 수도 있다. 다른 블록체인 노드는 트랜잭션을 국부적으로 실행시킬 수도 있고, 실행 결과를 서로 (예를 들어, 해시 계산을 수행함으로써) 검증할 수도 있고, 그리고 블록체인의 복사본과 특정한 블록체인 노드를 동기화할 수도 있다. 블록체인의 국부적 복사본을 업데이트함으로써, 블록체인 노드는 이러한 정보를 국부 메모리에 기입할 수도 있다. 검증이 어느 시점에 실패한다면, 트랜잭션은 거부된다.
도 2는 다양한 실시형태에 따른, 재전송 공격 검출을 채용하는 예시적인 트랜잭션을 예시한다.
일부 실시형태에서, 개시자 노드는 어드레스 3df53h의 계정(계정 A)으로부터 어드레스 45wqr1의 계정(계정 B)으로 2개의 이더의 트랜잭션 X를 개시시킬 수도 있다. 트랜잭션 전에, 계정 A가 10개의 이더를 갖고, 계정 B가 1개의 이더를 갖는다. 트랜잭션 X는 개시자 노드(예를 들어, 컴퓨터, 모바일 폰)에 의해 블록체인 노드(예를 들어, 전체 노드)에 제출될 수도 있다. 트랜잭션 X는 타임스탬프, 예를 들어, 트랜잭션 X가 블록체인 노드를 통해 개시자 노드에 의해 제출될 때, 트랜잭션 X가 블록체인 노드에 의해 제출될 때, 또는 트랜잭션 X가 합의 검증을 수행하는 또 다른 블록체인 노드에 의해 수신될 때의 시간과 연관될 수도 있다. 트랜잭션 X는 트랜잭션 X가 검증되고 그리고 블록체인에 추가되기 전에 후보 트랜잭션으로서 지칭될 수도 있다. 블록체인 노드는 후보 트랜잭션 X를 다른 후보 트랜잭션과 함께 풀 데이터베이스에 저장할 수도 있다. 블록체인 노드는 트랜잭션 X의 ID(예를 들어, 해시)를 ID 데이터베이스(예를 들어, 해시 테이블)에 저장할 수도 있다.
일부 실시형태에서, 복수의 블록체인 노드는 합의 규칙에 따라 풀 데이터베이스의 후보 트랜잭션을 검증할 수도 있다. 예를 들어, 블록체인 노드는 전송 계정이 충분한 자금을 갖는지, 전송 당사자와 수신 당사자가 트랜잭션을 서명했는지, 트랜잭션 양이 허용된 범위 내에 있는지, 등을 검증할 수도 있다. 합의 검증에 의해, 블록체인 노드가 블록체인 노드의 ID 데이터베이스를 동기화하여 ID 데이터베이스에 저장된 트랜잭션의 모든 ID를 포함할 수도 있다. 예를 들어, ID 데이터베이스는 각각 트랜잭션을 특정한 최근의 시간 기간 동안 저장할 수도 있다. 재전송 공격 검출에 대해, 블록체인 노드는 후보 트랜잭션의 타임스탬프가 최근의 시간 기간 내에 있는지를 검증할 수도 있고, 만약 그렇다면, 재전송 공격을 위한 ID 데이터베이스에 대항하여 후보 트랜잭션을 차단할 수도 있다.
타임스탬프 검증과 ID 검증은 합의 검증 후 1회 수행될 수도 있거나 또는 합의 검증 전 그리고 합의 검증 후 2회 수행될 수도 있다. 준수가 충족된다면, 블록체인 노드가 검증된 후보 트랜잭션을 새로운 블록에 패킹하여 블록체인에 추가할 수도 있다. 이에 따라, 트랜잭션 X가 블록체인에 추가될 때, 2개의 이더를 이체하는 계정 A의 트랜잭션 X가 승인된다.
도 3은 다양한 실시형태에 따른, 재전송 공격 검출을 위한 예시적인 단계(300)를 예시한다. 단계(300)는 도 1의 시스템(100)의 하나 이상의 컴포넌트(예를 들어, 노드 A, 노드 1, 노드 A와 노드 1의 조합, 노드 2, 노드 i)에 의해 구현될 수도 있다. 아래에 제공된 동작은 예시적인 것으로 의도된다. 구현예에 따르면, 예시적인 단계(300)는 다양한 순서로 또는 동시에 수행되는 부가적인, 더 적은, 또는 대안적인 단계를 포함할 수도 있다.
다양한 실시형태에서, 앞서 설명된 바와 같이, 타임스탬프는 예를 들어, 계정/잔액 모델 하에서 트랜잭션에 추가된다. 하나의 실시예에서, 트랜잭션 개시자 노드(예를 들어, 도 1의 노드 A) 또는 대안적인 사용자 단말기는 블록체인 노드가 유효성 확인(validate)하도록 타임스탬프(예를 들어, 타임스탬프 매개변수)를 미확인된 트랜잭션의 제출에 추가할 수도 있다. 대안적으로, 미확인된 트랜잭션을 수신하는 블록체인 노드(예를 들어, 도 1의 노드)는 타임스탬프를 추가할 수도 있다. 타임스탬프는 다양한 수준으로(예를 들어, 밀리초 수준으로) 정확할 수도 있다. 타임스탬프의 정확도가 증가됨에 따라, 개시된 시스템 및 방법은 단위 시간 내에 하나의 계정에 의해 개시되는 더 많은 트랜잭션을 지원할 수 있다. 예를 들어, 타임스탬프가 0㎳로 정확하다면, 개시된 시스템 및 방법은 재전송 공격으로서 의도되는 것에 들어가지 않으면서, 100개의 상이한 사용자 단말기에 로그 온된 동일한 계정에 의해 개시된 약 100개의 상이한 트랜잭션을 최상으로 지원할 수 있다.
일부 실시형태에서, 유효성 확인 범위는 적어도 계정 논스의 위에서 설명한 단점을 극복하도록 사용될 수도 있다. 유효성 확인 범위는 최근의 트랜잭션이 재전송 공격에 대해 차단되는 시간 윈도우이다. 유효성 확인 범위는, 최신의 블록의 타임스탬프가 블록체인에 보편적으로 수용되기 때문에, 세계 표준과 관련하여, 예를 들어, 블록체인의 최신의 블록의 타임스탬프로부터 시간 기간 내에 규정될 수도 있다. 예를 들어, 블록체인의 최신의 블록은 2018년 6월 8일, 08:42:44 베이징 시간에 추가될 수도 있고, 그리고 유효성 확인 범위는 상기 시간 전 및/또는 후의 2시간일 수도 있다. 합의 검증 전에, 노드의 현지 시간(예를 들어, 내부 클록에 기초함)이 대안적으로 사용될 수 있다. 합의 검증 전 그리고 합의 검증 후, 노드의 내부 클록이 세계 표준과 실질적으로 일치하다면, 노드의 현지 시간이 대안적으로 사용될 수 있다. 유효성 확인 범위는 재전송 공격 검출 효율을 지속시키기에 충분히 길 수도 있고 그리고 데이터 저장 필요조건을 한정하기에 충분히 짧을 수도 있다. 유효성 확인 범위는, 각각의 블록체인 노드가 동일한 유효성 확인 범위에 동의하고 그리고 동일한 유효성 확인 범위를 사용하는 것을 보장하도록 블록체인의 기원 블록(제1 에버 블록)에 포함될 수도 있다. 유효성 확인 범위에 대해, 재전송 공격 검출은 개시자 노드의 시간과 블록체인 노드의 시간 사이의 동기화, 또는 상이한 블록체인 노드 간의 시스템 시간을 필요로 하지 않는다. 또한, 블록체인 노드는 상이한 시간에 동일한 후보 트랜잭션을 검증할 수도 있고 그리고 여전히 동일한 결과를 획득할 수도 있다.
일부 실시형태에서, 후보 트랜잭션을 수신할 때, 블록체인 노드는 유효성 확인 범위에 기초하여 후보 트랜잭션의 타임스탬프를 유효성 확인할 수 있다. 성공적인 타임스탬프 유효성 확인과 재전송 공격의 비검출에 의해, 블록체인 노드는 또한 유효성 확인 범위 내 후보 트랜잭션의 ID를 저장할 수도 있다. 예를 들어, 블록체인 노드는 트랜잭션 해시 테이블 내 유효성 확인된 트랜잭션의 해시를 블록체인 노드의 메모리(예를 들어, 캐시)에 저장할 수도 있다. 캐시 저장은 트랜잭션 해시 테이블로부터 빠른 데이터 문의를 가능하게 할 수 있고, 따라서 전체 트랜잭션 효율을 증가시킨다(예를 들어, 초당 트랜잭션의 수를 증가시킨다). 저장형 해시 테이블은 유효성 확인 범위에 대응하는 가장 최근의 시간 기간(예를 들어, 마지막 2시간) 내의 정보를 저장할 수도 있다. 유효성 확인 범위를 부과함으로써, 블록체인 노드는 더 이상 재전송 공격에 대해 전체 블록체인을 검색하지 않아도 되고, 이는 종종 하드디스크를 검색함으로써 긴 시간이 걸리고 그리고 또한 블록이 블록체인에 연속적으로 추가되는 것을 증가시킨다. 대조적으로, 유효성 확인 범위로부터 수집된 정보에 대응하는 캐시 메모리의 검색은 재전송 공격 검출에 대한 효율을 상당히 개선시킬 수 있다. 단계의 상세 내용이 아래에 설명된다.
단계(301)에서, 블록체인 노드는 검증을 위해 개시자 노드가 제출하고 그리고 블록체인에 추가되는 후보 트랜잭션을 획득할 수도 있다. 단계(302)에서, 블록체인 노드는 트랜잭션 타임스탬프를 유효성 확인할 수도 있다. 유효성 확인이 성공적이라면, 단계(303)가 수행되고, 그리고 블록체인 노드는 후보 트랜잭션의 트랜잭션 해시가 해시 테이블에 존재하는지를 결정한다. 해시 테이블은 모든 트랜잭션의 해시를 유효성 확인 범위에 대응하는 시간 기간 동안 저장할 수도 있다. 후보 트랜잭션의 트랜잭션 해시가 해시 테이블에 이미 있다면, 이것은 후보 트랜잭션이 재전송 공격과 관련될 수도 있고 그리고 유효성 확인이 실패된다는 것을 나타낸다. 그렇지 않으면, 유효성 확인이 단계(304)에서 성공적이고, 그리고 블록체인 노드가 단계(305)에서 트랜잭션 해시를 해시 테이블에 저장한다. 유효성 확인이 단계(302)에서 실패된다면, 단계(306)가 수행되고, 그리고 에러 메시지가 트랜잭션을 제출한 사용자 단말기로 복귀될 수도 있다. 단계(303)에서 결정이 실패된다면, 단계(306)가 수행되고, 그리고 가장 빠른 타임스탬프를 가진 트랜잭션이 인증된 트랜잭션으로서 처리되고, 그리고 모든 나중의 트랜잭션이 잠재적인 재전송 공격으로서 간주되고 그리고 폐기된다. 나중의 트랜잭션의 해시는 또한 해시 테이블로부터 퍼지(purge)될 수도 있다.
일부 실시형태에서, 각각의 노드가 트랜잭션의 마이닝(합의 규칙에 따라 트랜잭션을 검증)을 개시시키는 합의 동의에 대해, 재전송 공격은 다양한 블록체인 노드를 타깃할 수도 있고, 그리고 타깃된 블록체인 노드는 합의 규칙에 따라 트랜잭션의 검증을 수행하기 전에 위험을 검출할 수 없다. 따라서, 블록체인 노드가 합의 규칙에 따라 트랜잭션의 검증을 수행한 후, 블록체인 노드가 해시 테이블의 완전한 정보를 획득하고 그리고 단계(302 내지 305)를 수행하여 재전송 공격을 차단할 수 있다. 따라서, 단계(302 내지 305)는 블록체인 노드가 합의 규칙에 따라 트랜잭션의 검증을 수행한 후 수행될 수도 있다. 그럼에도 불구하고, 단계(302 내지 305)는 블록체인 노드가 합의 규칙에 따라 트랜잭션의 검증을 수행하기 전에 부가적으로 수행될 수도 있다. 트랜잭션의 검증 전에 단계(302 내지 305)를 수행함으로써 잠재적인 재전송 공격을 사전에 제거할 수 있다. 즉, 단계(302 내지 305)는 (1) 합의 규칙에 따라 트랜잭션의 검증 전 그리고 후 또는 (2) 합의 규칙에 따라 트랜잭션의 검증 후 수행될 수도 있다. 1회 또는 2회 수행되든 간에, 단계(302) 및 단계(303)는 결과에 영향을 주는 일없이 임의의 순서로 수행될 수도 있다.
도 4a는 이 명세서의 다양한 실시형태에 따른, 재전송 공격을 검출하기 위한 예시적인 방법(400)의 흐름도를 예시한다. 방법(400)은 도 1의 시스템(100)의 하나 이상의 컴포넌트(예를 들어, 노드 1, 노드 A와 노드 1의 조합, 노드 2, ..., 노드 i)에 의해 구현될 수도 있다. 방법(400)은 하나 이상의 블록체인 노드에 의해 구현될 수도 있다. 방법(400)은 시스템 또는 장치(예를 들어, 컴퓨터, 서버)에 의해 구현될 수도 있다. 시스템 또는 장치는 하나 이상의 프로세서, 및 하나 이상의 프로세서에 연결되고 그리고 시스템 또는 장치(예를 들어, 프로세서)가 방법(400)을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성된 하나 이상의 비일시적 컴퓨터-판독가능 저장 매체(예를 들어, 하나 이상의 메모리)를 포함할 수도 있다. 아래에 제공된 방법(400)의 동작은 예시적인 것으로 의도된다. 구현예에 따르면, 예시적인 방법(400)은 다양한 순서로 또는 동시에 수행되는 부가적인, 더 적은, 또는 대안적인 단계를 포함할 수도 있다.
블록(441)은 블록체인에 추가하기 위한 적어도 하나의 후보 트랜잭션을 획득하는 것을 포함하고, 획득된 후보 트랜잭션은 타임스탬프를 포함한다.
블록(442)은 타임스탬프가 유효성 확인 범위 내에 있는지 그리고 후보 트랜잭션의 ID(예를 들어, 해시값 또는 대안적인 ID)가 ID 데이터베이스(예를 들어, 해시 테이블)에 존재하는지를 검증하는 것을 포함한다.
블록(443)은 타임스탬프가 유효성 확인 범위 내에 있고 그리고 ID가 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하는 것을 포함한다.
아래에 설명되는 방법(450)의 다양한 용어, 실시형태 및 실시예는 방법(400)에 유사하게 적용 가능할 수도 있다.
도 4b는 이 명세서의 다양한 실시형태에 따른, 재전송 공격을 검출하기 위한 예시적인 방법(450)의 흐름도를 예시한다. 방법(450)은 도 1의 시스템(100)의 하나 이상의 컴포넌트(예를 들어, 노드 1, 노드 A와 노드 1의 조합, 노드 2, ..., 노드 i)에 의해 구현될 수도 있다. 방법(450)은 하나 이상의 블록체인 노드에 의해 구현될 수도 있다. 방법(450)은 시스템 또는 장치(예를 들어, 컴퓨터, 서버)에 의해 구현될 수도 있다. 시스템 또는 장치는 하나 이상의 프로세서, 및 하나 이상의 프로세서에 연결되고 그리고 시스템 또는 장치(예를 들어, 프로세서)가 방법(450)을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성된 하나 이상의 비일시적 컴퓨터-판독가능 저장 매체(예를 들어, 하나 이상의 메모리)를 포함할 수도 있다. 아래에 제공된 방법(450)의 동작은 예시적인 것으로 의도된다. 구현예에 따르면, 예시적인 방법(450)은 다양한 순서로 또는 동시에 수행되는 부가적인, 더 적은, 또는 대안적인 단계를 포함할 수도 있다.
블록(451)은 블록체인에 추가하기 위한 적어도 하나의 후보 트랜잭션을 획득하는 것을 포함한다. 획득된 후보 트랜잭션은 타임스탬프를 포함할 수도 있다. 일부 실시형태에서, 블록체인은 계정/잔액 모델(예를 들어, 이더리움 시스템, BFT 시스템, 예컨대, 실질적 비잔티움 장애 허용(Practical Byzantine Fault Tolerance: PBFT) 시스템, 허니배저(HoneyBadger) 또는 해시그래프(Hashgraph) 시스템)에 기초할 수도 있지만, 개시된 시스템은 재전송 공격을 검출하기 위한 계정 논스(존재한다면)의 사용을 대체한다.
일부 실시형태에서, 획득된 후보 트랜잭션은 타임스탬프를 포함한다. 후보 트랜잭션은 타임스탬프, 트랜잭션 정보, 및 적어도 타임스탬프와 트랜잭션 정보에 기초하여 결정된 해시값을 포함하고, 해시값은 ID로서 기능한다. 적어도 하나의 후보 트랜잭션을 획득한 후 그리고 후보 트랜잭션의 ID가 ID 데이터베이스에 존재하는지를 검증하기 전에, 방법은 적어도 타임스탬프와 트랜잭션 정보에 기초하여 해시값을 검증함으로써 ID를 검증하는 것을 더 포함한다. 예를 들어, 후보 트랜잭션은 하나 이상의 매개변수, 예컨대, (트랜잭션 전송자 어드레스)로부터 (트랜잭션 수신자 어드레스)로의 타임스탬프, 값(거래 항목), 데이터(존재한다면 블록체인 계약), 트랜잭션을 위한 지불(예를 들어, 가스 한계, 가스 값), 해시값(트랜잭션의 고유 ID로서 사용되기 위한 해시값), 및/또는 다른 정보(예를 들어, 서명(전송자에 의한 서명 증명))를 포함할 수도 있다. 이러한 매개변수는 집합적으로 트랜잭션 구조 본체로서 지칭될 수도 있다. 타임스탬프(및 서명) 이외의 포함된 매개변수는 트랜잭션 정보로서 지칭될 수도 있다. 해시값은 트랜잭션 정보에 기초하여, 예를 들어, 타임스탬프와 트랜잭션 정보를 입력값으로서 취하는 해시 함수를 통해 (예를 들어, 후보 트랜잭션을 개시시키는 노드, 예컨대, 노드 A에 의해) 결정될 수도 있다. 해시값을 적어도 타임스탬프와 트랜잭션 정보에 기초하여 검증하기 위해서, 후보 트랜잭션을 획득하는 블록체인 노드(예를 들어, 노드 1)가 입력값으로 해시 함수를 재계산하여 해시값을 다시 체크할 수도 있다.
일부 실시형태에서, 후보 트랜잭션은 타임스탬프와 트랜잭션 정보를 포함한다. 적어도 하나의 후보 트랜잭션을 획득한 후 그리고 후보 트랜잭션의 ID가 ID 데이터베이스에 존재하는지를 검증하기 전에, 방법은 적어도 타임스탬프와 트랜잭션 정보에 기초하여 해시값을 결정하는 것을 더 포함하고, 해시값은 ID로서 기능한다. 예를 들어, 후보 트랜잭션은 하나 이상의 매개변수, 예컨대, 타임스탬프, 값, 데이터, 트랜잭션을 위한 지불, 및/또는 다른 정보를 포함할 수도 있다. 타임스탬프 이외의 포함된 매개변수는 트랜잭션 정보로서 지칭될 수도 있다. 해시값은 타임스탬프와 트랜잭션 정보에 기초하여, 예를 들어, 타임스탬프와 트랜잭션 정보를 입력값으로서 취하는 해시 함수를 통해 (예를 들어, 후보 트랜잭션을 수신하는 블록체인 노드, 예컨대, 노드 1에 의해) 결정될 수도 있다.
일부 실시형태에서, 타임스탬프는 적어도 하나의 후보 트랜잭션을 개시시키는 사용자 단말기에 의해 구성되고; 그리고 블록체인을 추가하기 위해 적어도 하나의 후보 트랜잭션을 획득하는 것은 후보 트랜잭션을 사용자 단말기로부터 수신하는 것을 포함한다. 예를 들어, 사용자 단말기는 후보 트랜잭션을 노드 1로 전송하는, 도 1의 노드 A일 수도 있다. 노드 A는 후보 트랜잭션을 노드 1로 전송하기 전에 타임스탬프를 후보 트랜잭션에 추가할 수도 있다.
일부 실시형태에서, 타임스탬프는 블록체인 노드에 의해 구성되고; 그리고 블록체인에 추가하기 위한 적어도 하나의 후보 트랜잭션을 획득하는 것은, 적어도 하나의 개시된 트랜잭션을 사용자 단말기로부터 수신하는 것; 및 타임스탬프를 개시된 트랜잭션에 추가하여 적어도 하나의 후보 트랜잭션을 획득하는 것을 포함한다. 예를 들어, 사용자 단말기는 후보 트랜잭션을 노드 1로 전송하는, 도 1의 노드 A일 수도 있다. 노드 A는 타임스탬프를 후보 트랜잭션에 추가할 수도 없고, 그리고 노드 1은 타임스탬프를 수신된 후보 트랜잭션에 추가할 수도 있다. 후보 트랜잭션을 수신하는 제1 블록체인 노드로서, 노드 1은 내부 클록 또는 대안적인 시간 소스에 기초하여 타임스탬프를 추가할 수도 있다. 일단 다른 블록체인 노드가 후보 트랜잭션을 나중에 수신한다면, 다른 블록체인 노드는 노드 1이 추가한 타임스탬프를 획득할 수도 있다.
블록(452)은 후보 트랜잭션의 ID(예를 들어, 해시값 또는 대안적인 ID)가 ID 데이터베이스(예를 들어, 풀 데이터베이스의 해시 테이블)에 존재하는지를 검증하는 것을 포함하고, ID 데이터베이스는 유효성 확인 범위 내 복수의 ID를 포함한다.
일부 실시형태에서, 후보 트랜잭션의 ID가 ID 데이터베이스에 존재하는지를 검증하는 것은 타임스탬프가 유효성 확인 범위 내에 있는지 그리고 후보 트랜잭션의 ID가 ID 데이터베이스에 존재하는지를 검증하는 것을 포함한다. 타임스탬프의 검증 및 ID의 검증은 임의의 순서로 수행될 수 있다. ID 데이터베이스는 저장 매체에 저장될 수도 있다. ID 데이터베이스는 캐시 메모리에 저장될 수도 있다.
일부 실시형태에서, ID 데이터베이스는 유효성 확인 범위에 대응하는 최근의 시간 기간 내 타임스탬프를 가진 트랜잭션의 정보를 포함한다. 예를 들어, 각각의 블록체인 노드는 블록체인의 최신의 블록의 타임스탬프로부터 2시간 동안 블록체인 노드에 의해 수신된 후보 트랜잭션의 해시를 저장하도록 ID 데이터베이스를 유지할 수도 있다. 블록체인 노드는 저장된 해시를 모으도록 각각의 합의 검증에서 블록체인 노드의 ID 데이터베이스를 동기화할 수도 있다. 각각의 합의 검증 후, 새로운 블록이 블록체인에 추가될 수도 있고, 그리고 블록체인의 최신의 블록의 타임스탬프가 적시에 진행된다. 예를 들어, 블록체인의 최신의 블록은 특정 날짜의 5am에 추가될 수도 있고, 그리고 유효성 확인 범위는 특정 날짜의 5am 내지 7am일 수도 있다. 이어서, 새로운 블록이 7am에 추가된 후, 유효성 확인 범위는 특정 날짜의 7am 내지 9am이 된다. 이에 따라, ID 데이터베이스 내 해시는 유효성 확인 범위 내 해시를 추가하고/추가하거나 유효성 확인 범위 이외의 해시를 제거함으로써 업데이트될 수도 있다. 각각의 해시는 해시가 유효성 확인 범위 이내 또는 이외에 있는지를 결정하도록 대응하는 타임스탬프와 연관될 수도 있다.
일부 실시형태에서, 유효성 확인 범위는 블록체인의 최신의 블록의 또 다른 타임스탬프(예를 들어, 블록체인 네트워크에 의해 보편적으로 동의되는 또 다른 타임스탬프 + 또 다른 타임스탬프로부터 유효성 확인 범위)에 기초하고; 그리고 유효성 확인 범위는 블록체인의 기원 블록에 포함된다.
일부 실시형태에서, 유효성 확인 범위는 타임스탬프가 유효성 확인 범위 내에 있는지의 검증을 수행하는 블록체인 노드의 내부 클록에 기초한다.
블록(453)은 ID가 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하는 것을 포함한다. 일부 실시형태에서, ID가 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하는 것은 타임스탬프가 유효성 확인 범위 내에 있고 그리고 ID가 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하는 것을 포함한다.
일부 실시형태에서, 방법(450)은 타임스탬프가 유효성 확인 범위 내에 있고 그리고 ID가 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, ID를 ID 데이터베이스에 추가하는 것을 더 포함한다.
일부 실시형태에서, 방법(450)은 타임스탬프가 유효성 확인 범위 내에 있고 그리고 ID가 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 후보 트랜잭션을 후보 트랜잭션을 저장하기 위한 캐시에 추가하는 것을 더 포함한다. 예를 들어, 캐시는 풀 데이터베이스일 수도 있다. 캐시는 또한 ID 데이터베이스(예를 들어, 해시 테이블)를 저장할 수도 있다.
일부 실시형태에서, 방법(450)은 타임스탬프가 유효성 확인 범위 내에 없다는 결정에 응답하여, 에러 메시지를 후보 트랜잭션을 제출하는 연산 장치에 복귀시키는 것을 더 포함한다. 후보 트랜잭션은 재전송 공격과 연관될 수도 있거나 또는 연관될 수도 없지만, 그럼에도 불구하고 타임스탬프가 유효성 확인 범위 이외(예를 들어, 현재의 시간으로부터 오래전)에 있기 때문에 무효한 트랜잭션이다. 따라서, 블록체인에 추가하기 위한 후보 트랜잭션이 거부된다.
일부 실시형태에서, 방법(450)은 ID가 ID 데이터베이스에 존재한다는 결정에 응답하여 후보 트랜잭션이 재전송 공격과 연관된다고 결정하는 것을 더 포함한다. 따라서, 블록체인에 추가하기 위한 후보 트랜잭션이 거부된다.
방법(450)은 다양한 블록체인 시스템, 예컨대, 이더리움 시스템, PBFT 시스템, 허니배저 또는 해시그래프 시스템 등에서 구현될 수도 있다. 일부 실시형태에서, 방법은 합의 검증을 수행하는 것을 더 포함하고, 후보 트랜잭션이 재전송 공격과 연관되지 않은 것으로 결정된다면 후보 트랜잭션은 합의 검증에 포함된다. 예를 들어, 이더리움 시스템에서, 타임스탬프 및 ID 검증은 합의 노드가 합의 검증의 라운드를 수행하기 전에 수행될 수도 있다. 임의의 개시된 블록체인 시스템에서, 합의 검증을 수행하는 것은 재전송 공격을 검출할 수도 없고, 그리고 개시된 방법은 재전송 공격 검출을 달성할 수도 있다.
일부 실시형태에서, 방법(450)은 ID 데이터베이스를 하나 이상의 다른 블록체인 노드와 동기화하는 것; 타임스탬프가 유효성 확인 범위 내에 있는지 그리고 후보 트랜잭션의 ID가 동기화된 ID 데이터베이스에 존재하는지를 검증하는 것; 타임스탬프가 유효성 확인 범위 내에 있고 그리고 ID가 동기화된 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하는 것; 및 ID가 동기화된 ID 데이터베이스에 존재한다는 결정에 응답하여, 후보 트랜잭션이 재전송 공격과 연관된다고 결정하는 것을 더 포함한다. 예를 들어, 이더리움 시스템에서, 임의로, 타임스탬프 및 ID 검증은 합의 노드가 합의 검증의 라운드를 수행한 후 다시 수행될 수도 있다. 합의 검증에 의해, ID 데이터베이스 및/또는 풀 데이터베이스는 블록체인 노드 간에 동기화될 수도 있다.
일부 실시형태에서, 적어도 하나의 후보 트랜잭션을 획득하기 전에, 방법(450)은 ID 데이터베이스를 하나 이상의 다른 블록체인 노드와 동기화하는 것을 더 포함한다. 예를 들어, PBFT 시스템에서, 단일의 블록체인 노드(예를 들어, 주요 노드)는 합의 검증을 개시시키는 책임이 있을 수도 있다. 후보 트랜잭션을 수신한 후, 비-주요 블록체인 노드(예를 들어, 백업 노드)는 후보 트랜잭션을 주요 노드로 포워딩할 수도 있다. 주요 노드는 후보 트랜잭션을 수신한 후 그리고 합의 검증이 수행되기 전에 방법(450)을 수행할 수도 있다. 합의 검증이 수행된 후, 비-주요 노드는 후보 트랜잭션의 리스트와 주요 노드를 동기화하여 후보 트랜잭션을 실행할 수도 있다. 따라서, 비-주요 노드는 합의 검증 후 그리고 후보 트랜잭션을 실행하기 전에 방법(450)을 수행할 수도 있거나 또는 수행할 수도 없다.
또 다른 예를 들면, 허니배저 또는 해시그래프 시스템에서, 각각의 블록체인 노드는 수신하는 후보 트랜잭션을 포워딩할 수도 없다. 각각의 블록체인 노드는 수신된 후보 트랜잭션을 위한 합의 검증을 개시시킬 수도 있다. 따라서, 인증된 트랜잭션과 재전송 공격 트랜잭션이 방법(450)을 각각 수행하는 2개의 상이한 블록체인 노드로 각각 전송된다면, 이들은 둘 다 통과될 수도 있다. 재전송 공격을 검출하기 위해서, 합의 검증이 수행된 후, 블록체인 노드는 합의 검증을 통해 후보 트랜잭션을 공유할 수도 있고 그리고 이어서 방법(450)을 다시 수행할 수도 있다. 즉, 허니배저 또는 해시그래프 시스템에서 블록체인 노드는 이들의 ID 데이터베이스 및/또는 이들의 풀 데이터베이스를 동기화할 수도 있고 그리고 방법(450)을 수행할 수도 있다. 합의 검증 후 방법(450)을 수행하는 것에 대해, 블록체인 노드는 새로운 트랜잭션을 블록체인에 (예를 들어, 업데이트된 블록체인을 국부 저장 메모리에 기입함으로써) 추가할 수도 있다.
이와 같이, 개시된 시스템 및 방법이 기존의 기술의 결함을 경감시키거나 극복하여 강력한 재전송 공격 검출을 달성할 수 있다. 계정 논스를 타임스탬프 검증과 ID 검증의 개시된 조합으로 대체함으로써, 사용자 단말기는 더 이상 논스 값에 대해 블록체인 노드를 문의할 필요가 없다. 따라서, 사용자 단말기와 블록체인 노드 간의 통신 비용이 낮춰진다.
상황 (1)에 대해, 계정은 제1 트랜잭션 그리고 그 다음에 제2 트랜잭션(둘 다는 동일한 트랜잭션 요금을 가짐)을 동일한 블록체인 노드로 전송한다. 그러나, 블록체인 노드가 무질서한 네트워크 데이터 팩 전송에 기인하여 제1 트랜잭션 전에 제2 트랜잭션을 수신한다면, 블록체인 노드는 제2 트랜잭션 그리고 이어서 제1 트랜잭션을 실행하여, 계정 논스 메커니즘의 미준수에 기인하여 트랜잭션 둘 다의 실행 실패를 유발할 것이다. 개시된 시스템 및 방법이 계정 논스 메커니즘을 타임스탬프 및/또는 ID 검증으로 대체할 수도 있어서, 동일한 계정으로부터 유효한 트랜잭션이 미리 규정된 순서로 실행되어야 하지 않을 수도 있다. 즉, 동일한 계정으로부터 유효한 트랜잭션을 수신하는 순서는 트랜잭션의 성공적인 실행을 방지하지 않을 것이다.
상황 (2)에 대해, 계정은 제1 트랜잭션 그리고 그 다음에 제2 트랜잭션을 동일한 블록체인 노드로 전송하고, 제2 트랜잭션은 더 높은 트랜잭션 요금을 갖는다. 이득을 최대화하기 위해서, 블록체인 노드가 우선적으로 제2 트랜잭션 그리고 이어서 제1 트랜잭션을 실행하도록 프로그램되어, 계정 논스 메커니즘의 미준수에 기인하여 트랜잭션 둘 다의 실행 실패를 유발할 수도 있다. 개시된 시스템 및 방법은 상황 (1)과 유사하게, 동일한 계정으로부터 유효한 트랜잭션을 수신하는 순서가 트랜잭션의 성공적인 실행을 방지하지 않을 것이기 때문에 이 이슈를 방지할 수 있다.
상황 (3)에서, 계정은 다양한 사용자 단말기로부터 상이한 트랜잭션을 동시에 전송하지만, 이 트랜잭션은 동일한 계정 논스 값을 가질 것이다. 그 결과, 트랜잭션 중 최대 1개가 계정 논스 메커니즘 하에서 성공적으로 처리될 것이다. 개시된 시스템 및 방법은 계정 논스가 드롭되기 때문에, 이 이슈를 방지할 수 있고 그리고 모든 트랜잭션의 성공적인 실행을 허용할 수 있다. 또한, 앞서 논의된 바와 같이, 타임스탬프의 정확도는 새로운 블록이 추가되기 전의 시간과 실질적으로 가깝게 동일한 계정에 의해 개시된 다수의 트랜잭션의 실행을 지원할 수 있다.
또한, 블록체인의 합의 규칙에 따라 후보 트랜잭션을 검증하기 전 그리고 후(또는 직후) 재전송 공격을 차단하는 것은 계정 논스의 검증을 포함하는 원래의 합의 검증의 부담을 감소시킬 수 있다. 유효성 확인 범위의 사용은 검색될 데이터베이스의 크기를 상당히 감소시키고 그리고 전체 블록체인을 검색할 필요성을 제거한다. 따라서, ID 데이터베이스는 매우 효율적이고 그리고 저비용 방식으로 재전송 공격의 차단을 허용한다. 게다가, 타임스탬프와 유효성 확인 범위의 연관성은 트랜잭션 처리의 중단을 유발하는 일없이 임의의 순서로 동일한 계정으로부터 다수의 트랜잭션의 제출을 허용한다. 또한, 이 유효성 확인 범위는 사용자 단말기와 블록체인 노드 간의 동기화의 필요성을 제거하고, 그리고 블록체인 노드는 동일한 검증 결과를 달성하도록 동일한 트랜잭션을 상이한 시간에 검증할 수 있다.
본 명세서에서 설명하는 기술은 하나 이상의 전용 연산 장치에 의해 구현된다. 전용 연산 장치는, 기술을 구현하도록 유선 및/또는 프로그램 로직을 통합하는, 데스크톱 컴퓨터 시스템, 서버 컴퓨터 시스템, 휴대용 컴퓨터 시스템, 핸드헬드 장치, 네트워킹 장치, 또는 다른 임의의 장치 또는 장치들의 조합일 수도 있다. 연산 장치(들)는 일반적으로 운영 체제 소프트웨어에 의해 제어되고 조정된다. 종래의 운영 체제는, 다른 것 중에서, 실행할 컴퓨터 과정을 제어 및 스케줄링하고, 메모리 관리를 수행하고, 파일 시스템, 네트워킹, I/O 서비스를 제공하며, 특히, 그래픽 사용자 인터페이스(graphical user interface: "GUI")와 같은 사용자 인터페이스 기능을 제공한다.
도 5는 다양한 실시형태에 따른, 재전송 공격을 검출하기 위한 예시적인 컴퓨터 시스템(550)의 블록도를 예시한다. 시스템(550)은 도 1의 시스템(100)의 노드 1, 노드 A와 노드 1의 조합, 노드 2, ..., 노드 i 또는 유사한 장치의 예시적인 구현예일 수도 있다. 방법(400)은 컴퓨터 시스템(550)에 의해 구현될 수도 있다. 컴퓨터 시스템(550)은 하나 이상의 프로세서, 및 하나 이상의 프로세서에 연결되고 그리고 시스템 또는 장치(예를 들어, 프로세서)가 방법(400)을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성된 하나 이상의 비일시적 컴퓨터-판독가능 저장 매체(예를 들어, 하나 이상의 메모리)를 포함할 수도 있다. 컴퓨터 시스템(550)은 명령어(예를 들어, 소프트웨어 명령어)에 대응하는 다양한 장치/모듈을 포함할 수도 있다. 일부 실시형태에서, 컴퓨터 시스템(550)은 블록체인에 추가하기 위한 적어도 하나의 후보 트랜잭션을 획득하도록 구성된 제1 획득 모듈(551)(획득된 후보 트랜잭션은 타임스탬프를 포함함); 타임스탬프가 유효성 확인 범위 내에 있는지 그리고 후보 트랜잭션의 ID가 ID 데이터베이스에 존재하는지를 검증하도록 구성된 제1 검증 모듈(552); 및 타임스탬프가 유효성 확인 범위 내에 있고 그리고 ID가 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하도록 구성된 제1 결정 모듈(553)을 포함할 수도 있다.
도 6은 다양한 실시형태에 따른, 재전송 공격을 검출하기 위한 예시적인 컴퓨터 시스템(560)의 블록도를 예시한다. 시스템(560)은 도 1의 시스템(100)의 노드 1, 노드 A와 노드 1의 조합, 노드 2, ..., 노드 i 또는 유사한 장치의 예시적인 구현예일 수도 있다. 방법(450)은 컴퓨터 시스템(560)에 의해 구현될 수도 있다. 컴퓨터 시스템(560)은 하나 이상의 프로세서, 및 하나 이상의 프로세서에 연결되고 그리고 시스템 또는 장치(예를 들어, 프로세서)가 방법(450)을 수행하게 하도록 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성된 하나 이상의 비일시적 컴퓨터-판독가능 저장 매체(예를 들어, 하나 이상의 메모리)를 포함할 수도 있다. 컴퓨터 시스템(560)은 명령어(예를 들어, 소프트웨어 명령어)에 대응하는 다양한 장치/모듈을 포함할 수도 있다. 일부 실시형태에서, 컴퓨터 시스템(560)은 블록체인에 추가하기 위한 적어도 하나의 후보 트랜잭션을 획득하도록 구성된 제2 획득 모듈(561); 후보 트랜잭션의 ID가 ID 데이터베이스에 존재하는지를 검증하도록 구성된 제2 검증 모듈(562)(ID 데이터베이스는 유효성 확인 범위 내의 복수의 ID를 포함함); 및 ID가 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하도록 구성된 제2 결정 모듈(563)을 포함할 수도 있다.
도 7은 본 명세서에 설명된 임의의 실시형태가 구현될 수도 있는 컴퓨터 시스템(700)을 예시하는 블록도이다. 시스템(700)은 본 명세서에 설명된 임의의 노드로 구현될 수도 있고 그리고 재전송 공격을 검출하기 위한 대응하는 단계를 수행하도록 구성될 수도 있다. 컴퓨터 시스템(700)은 정보를 전달하기 위한 버스(702) 또는 다른 통신 메커니즘, 정보를 처리하도록 버스(702)와 연결된 하나 이상의 하드웨어 프로세서(들)(704)를 포함한다. 하드웨어 프로세서(들)(704)는 예를 들어, 하나 이상의 범용 마이크로프로세서일 수도 있다.
컴퓨터 시스템(700)은, 또한, 프로세서(들)(704)에 의해 실행 가능한 정보와 명령어를 저장하도록 버스(702)에 연결된, RAM, 캐시, 및/또는 다른 동적 저장 장치와 같은 메인 메모리(706)를 포함한다. 메인 메모리(706)는, 또한, 프로세서(들)(704)에 의해 실행 가능한 명령어의 실행 동안 임시 변수 또는 다른 중간 정보를 저장하기 위해 사용될 수 있다. 이러한 명령어는, 프로세서(들)(704)가 액세스할 수 있는 저장 매체에 저장되는 경우, 컴퓨터 시스템(700)을 명령어에서 특정된 동작을 수행하도록 맞춤화된 전용 기계로 되게 한다. 컴퓨터 시스템(700)은, 프로세서(들)(704)에 대한 정적 정보와 명령어를 저장하도록 버스(702)에 연결된 ROM(708) 또는 다른 정적 저장 장치를 더 포함한다. 제공되어 정보와 명령어를 저장하도록 자기 디스크, 광 디스크, 또는 USB 섬 드라이브(플래시 드라이브) 등의 저장 장치(710)가 제공되어 버스(702)에 연결된다.
컴퓨터 시스템(700)은, 컴퓨터 시스템과 함께 컴퓨터 시스템(700)을 전용 기계로 되게 하거나 전용 기계로 되도록 프로그래밍하는 맞춤형 유선 로직, 하나 이상의 ASIC 또는 FPGA, 펌웨어, 및/또는 프로그램 로직을 사용하여 본 명세서에서 설명하는 기술을 구현할 수 있다. 일 실시형태에 따르면, 본 명세서에서 설명하는 동작, 방법, 및 프로세스는, 메인 메모리(706)에 포함된 하나 이상의 명령어의 하나 이상의 시퀀스를 실행하는 프로세서(들)(704)에 응답하여 컴퓨터 시스템(700)에 의해 수행된다. 이러한 명령어는, 저장 장치(710) 등의 다른 저장 매체로부터 메인 메모리(706)로 판독될 수 있다. 메인 메모리(706)에 포함된 명령어들의 시퀀스들의 실행은, 프로세서(들)(704)가 본 명세서에서 설명하는 프로세스 단계들을 수행하게 한다. 대체 실시형태에서는, 소프트웨어 명령어 대신 또는 소프트웨어 명령어와 함께 유선 회로를 사용할 수 있다.
메인 메모리(706), ROM(708), 및/또는 저장 장치(710)는 비일시적 저장 매체를 포함할 수 있다. "비일시적 매체"라는 용어 및 이와 유사한 용어는, 본 명세서에서 사용되는 바와 같이, 기계가 특정 방식으로 동작하게 하는 데이터 및/또는 명령어를 저장하는 매체를 가리키며, 매체는 일시적 신호를 배제한다. 이러한 비일시적 매체는 비휘발성 매체 및/또는 휘발성 매체를 포함할 수 있다. 비휘발성 매체는, 예를 들어, 저장 장치(710)와 같은 광학 또는 자기 디스크를 포함한다. 휘발성 매체는 메인 메모리(706)와 같은 동적 메모리를 포함한다. 비일시적 매체의 일반적인 형태는, 예를 들어, 플로피 디스크, 플렉시블 디스크, 하드 디스크, 솔리드 스테이트 드라이브, 자기 테이프, 또는 다른 임의의 자기 데이터 저장 매체, CD-ROM, 다른 임의의 광 데이터 저장 매체, 구멍 패턴이 있는 임의의 물리적 매체, RAM, PROM, EPROM, FLASH-EPROM, NVRAM, 다른 임의의 메모리 칩이나 카트리지, 및 이들의 네트워크화된 버전을 포함한다.
컴퓨터 시스템(700)은, 또한, 버스(702)에 연결된 네트워크 인터페이스(718)를 포함한다. 네트워크 인터페이스(718)는, 하나 이상의 로컬 네트워크에 접속된 하나 이상의 네트워크 링크에 양방향 데이터 통신 연결을 제공한다. 예를 들어, 네트워크 인터페이스(718)는, 종합 정보 통신망(ISDN) 카드, 케이블 모뎀, 위성 모뎀 또는 대응하는 유형의 전화선에 데이터 통신 접속을 제공하는 모뎀일 수 있다. 다른 일례로, 네트워크 인터페이스(718)는, 호환성 LAN(또는 WAN과 통신하기 위한 WAN 구성요소)에 데이터 통신 접속을 제공하기 위한 근거리 통신망(LAN) 카드일 수 있다. 무선 링크도 구현될 수 있다. 이러한 임의의 구현예에서, 네트워크 인터페이스(718)는, 다양한 유형의 정보를 나타내는 디지털 데이터 스트림을 반송하는 전기 신호, 전자기 신호, 또는 광 신호를 전송 및 수신한다.
컴퓨터 시스템(700)은, 네트워크(들), 네트워크 링크, 및 네트워크 인터페이스(718)를 통해 메시지를 전송할 수 있고 프로그램 코드를 포함하는 데이터를 수신할 수 있다. 인터넷 예에서, 서버는, 인터넷, ISP, 로컬 네트워크, 및 네트워크 인터페이스(718)를 통해 애플리케이션 프로그램에 대한 요청 코드를 송신할 수 있다.
수신된 코드는, 수신될 때 및/또는 나중에 실행하도록 저장 장치(710) 또는 다른 비휘발성 저장 장치에 저장될 때 프로세서(들)(704)에 의해 실행될 수 있다.
전술한 섹션들에서 설명한 프로세스, 방법, 및 알고리즘의 각각은, 하나 이상의 컴퓨터 시스템 또는 컴퓨터 하드웨어를 포함하는 컴퓨터 프로세서에 의해 실행되는 코드 모듈로 구체화될 수 있고, 이러한 코드 모듈에 의해 완전히 또는 부분적으로 자동화될 수 있다. 프로세스와 알고리즘은 애플리케이션 특정 회로에서 부분적으로 또는 전체적으로 구현될 수 있다.
전술한 다양한 특징과 프로세스는, 서로 독립적으로 사용될 수 있고, 또는 다양한 방식으로 결합될 수 있다. 모든 가능한 조합과 부조합은 본 명세서의 범위 내에 속한다. 또한, 일부 구현예에서는 소정의 방법 또는 프로세스 블록이 생략될 수 있다. 또한, 본 명세서에서 설명하는 방법과 프로세스는 임의의 특정 시퀀스로 한정되지 않으며, 이에 관련된 블록 또는 상태는 적절한 다른 시퀀스로 수행될 수 있다. 예를 들어, 설명한 블록 또는 상태는 특정하게 개시된 순서와는 다른 순서로 수행될 수 있고, 또는 다수의 블록 또는 상태가 단일 블록 또는 상태로 결합될 수 있다. 예시적인 블록들 또는 상태들은, 직렬, 병렬, 또는 다른 임의의 방식으로 수행될 수 있다. 블록 또는 상태는, 개시된 예시적인 실시형태에 추가되거나 이러한 실시형태로부터 제거될 수 있다. 본 명세서에서 설명하는 예시적인 시스템과 구성요소는 설명과는 다르게 구성될 수 있다. 예를 들어, 개시된 예시적인 실시형태와 비교하여 요소를 추가, 제거, 또는 재배치할 수 있다.
본 명세서에서 설명하는 예시적인 방법의 다양한 동작은 알고리즘에 의해 적어도 부분적으로 수행될 수 있다. 알고리즘은, 메모리(예컨대, 전술한 비일시적 컴퓨터 판독가능 저장 매체)에 저장된 프로그램 코드 또는 명령어로 구성될 수 있다. 이러한 알고리즘은 기계 학습 알고리즘을 포함할 수 있다. 일부 실시형태에서, 기계 학습 알고리즘은, 기능을 수행하도록 컴퓨터를 명시적으로 프로그래밍하지 않을 수도 있지만, 그 기능을 수행하는 예측 모델을 형성하도록 훈련 데이터로부터 학습할 수 있다.
본 명세서에서 설명하는 예시적인 방법들의 다양한 동작은, 관련 동작을 수행하도록 (예컨대, 소프트웨어에 의해) 일시적으로 구성된 또는 영구적으로 구성된 하나 이상의 프로세서에 의해 적어도 부분적으로 수행될 수 있다. 일시적으로 또는 영구적으로 구성되어 있는지 여부에 관계없이, 이러한 프로세서는, 본 명세서에서 설명하는 하나 이상의 동작 또는 기능을 수행하도록 동작하는 프로세서 구현 엔진을 구성할 수 있다.
유사하게, 본 명세서에서 설명하는 방법들은 적어도 부분적으로 프로세서로 구현될 수 있으며, 특정 프로세서 또는 프로세서들은 하드웨어의 일례이다. 예를 들어, 방법의 동작들 중 적어도 일부는 하나 이상의 프로세서 또는 프로세서 구현 엔진에 의해 수행될 수 있다. 또한, 하나 이상의 프로세서는, "클라우드 연산" 환경 또는 "서비스형 소프트웨어"(software as a service: SaaS)에서의 관련 동작의 성능을 지원하도록 또한 동작할 수 있다. 예를 들어, 적어도 일부 동작은 (프로세서를 포함하는 기계의 예로서) 컴퓨터들의 그룹에 의해 수행될 수 있으며, 이들 동작은, 네트워크(예컨대, 인터넷)를 통해 및 하나 이상의 적절한 인터페이스(예컨대, 애플리케이션 프로그램 인터페이스(Application Program Interface: API))를 통해 액세스될 수 있다.
소정의 동작의 성능은, 프로세서들 간에 분산될 수 있어서, 단일 시스템 내에 상주할 뿐만 아니라 다수의 기계에 걸쳐 배치될 수도 있다. 일부 예시적인 실시형태에서, 프로세서 또는 프로세서 구현 엔진은, 단일 지리적 위치에(예컨대, 가정 환경, 사무실 환경, 또는 서버 팜 내) 위치할 수 있다. 다른 예시적인 실시형태에서, 프로세서 또는 프로세서 구현 엔진은 다수의 지리적 위치에 걸쳐 분산될 수 있다.
본 명세서 전체에 걸쳐, 복수의 인스턴스는, 단일 인스턴스로 설명된 구성요소, 동작, 또는 구조를 구현할 수 있다. 하나 이상의 방법의 개별적인 동작이 별개의 동작으로서 도시되고 설명되었지만, 하나 이상의 개별적인 동작은, 동시에 수행될 수 있고, 동작들이 도시된 순서대로 수행될 필요는 없다. 예시적인 구성에서 별개의 구성요소로서 제시된 구조와 기능은 결합된 구조 또는 구성요소로서 구현될 수 있다. 유사하게, 단일 구성요소로서 제시된 구조와 기능은 별개의 구성요소들로서 구현될 수 있다. 이러한 변형, 수정, 추가, 개선, 및 다른 변형, 수정, 추가, 개선은, 본 명세서의 대상 범위 내에 있다.
특정한 예시적인 실시형태를 참조하여 대상의 개요를 설명하였지만, 본 명세서의 실시형태의 더욱 넓은 범위를 벗어나지 않으면서 이들 실시형태에 대한 다양한 수정과 변경을 행할 수 있다. 대상의 이러한 실시형태들은, 본 명세서의 범위를, 사실 하나보다 많은 개시내용이 있지만 임의의 단일 개시내용이나 개념으로 자발적으로 제한하려 하지 않고서 단지 편의상 본 명세서에서 "발명"이라는 용어로 개별적으로 또는 총괄적으로 칭할 수 있다. 상세한 설명은 제한적인 의미로 받아들여서는 안 되며, 다양한 실시형태의 범위는, 이러한 청구항들에 부여되는 균등물의 전체 범위와 함께 청구범위에 의해서만 정의된다.

Claims (45)

  1. 재전송 공격(replay attack)을 검출하기 위한 컴퓨터 구현 방법으로서,
    블록체인에 추가하기 위한 적어도 하나의 트랜잭션(transaction)을 획득하는 단계;
    상기 블록체인에 추가하기 위한 적어도 하나의 후보 트랜잭션(candidate transaction)을 획득하기 위해 타임스탬프를 상기 적어도 하나의 트랜잭션에 추가하는 단계로서, 상기 적어도 하나의 후보 트랜잭션은 상기 타임스탬프 및 트랜잭션 정보를 포함하는, 상기 추가하는 단계;
    적어도 상기 타임스탬프와 상기 트랜잭션 정보에 기초하여 해시값을 결정하는 단계로서, 상기 해시값은 상기 후보 트랜잭션의 ID로 기능하는, 상기 결정하는 단계;
    상기 타임스탬프가 유효성 확인 범위(validation range) 내에 있는지 그리고 상기 후보 트랜잭션의 상기 ID가 ID 데이터베이스에 존재하는지를 검증하는 단계로서, 상기 ID 데이터베이스는 상기 유효성 확인 범위 내 복수의 ID를 포함하는, 상기 검증하는 단계; 및
    상기 타임스탬프가 상기 유효성 확인 범위 내에 있고 그리고 상기 ID가 상기 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 상기 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하는 단계를 포함하는, 재전송 공격을 검출하기 위한 컴퓨터 구현 방법.
  2. 제1항에 있어서,
    상기 타임스탬프가 상기 유효성 확인 범위 내에 있고 그리고 상기 ID가 상기 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 상기 ID를 상기 ID 데이터베이스에 추가하는 단계를 더 포함하는, 재전송 공격을 검출하기 위한 컴퓨터 구현 방법.
  3. 제1항에 있어서,
    상기 타임스탬프가 상기 유효성 확인 범위 내에 있고 그리고 상기 ID가 상기 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 상기 후보 트랜잭션을 상기 후보 트랜잭션을 저장하기 위한 캐시에 추가하는 단계를 더 포함하는, 재전송 공격을 검출하기 위한 컴퓨터 구현 방법.
  4. 제1항에 있어서,
    상기 타임스탬프가 상기 유효성 확인 범위 내에 없다는 결정에 응답하여, 에러 메시지를 상기 후보 트랜잭션을 제출하는 연산 장치로 복귀시키는 단계를 더 포함하는, 재전송 공격을 검출하기 위한 컴퓨터 구현 방법.
  5. 제1항에 있어서,
    상기 ID가 상기 ID 데이터베이스에 존재한다는 결정에 응답하여, 상기 후보 트랜잭션이 상기 재전송 공격과 연관된다고 결정하는 단계를 더 포함하는, 재전송 공격을 검출하기 위한 컴퓨터 구현 방법.
  6. 제1항에 있어서,
    합의 검증을 수행하는 단계를 더 포함하되, 상기 후보 트랜잭션이 상기 재전송 공격과 연관되지 않는다고 결정된다면 상기 후보 트랜잭션이 상기 합의 검증에 포함되는, 재전송 공격을 검출하기 위한 컴퓨터 구현 방법.
  7. 제6항에 있어서,
    상기 ID 데이터베이스와 하나 이상의 블록체인 노드를 동기화하는 단계;
    상기 타임스탬프가 상기 유효성 확인 범위 내에 있는지 그리고 상기 후보 트랜잭션의 상기 ID가 동기화된 ID 데이터베이스에 존재하는지를 검증하는 단계;
    상기 타임스탬프가 상기 유효성 확인 범위 내에 있고 그리고 상기 ID가 상기 동기화된 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 상기 후보 트랜잭션이 상기 재전송 공격과 연관되지 않는다고 결정하는 단계; 및
    상기 ID가 상기 동기화된 ID 데이터베이스에 존재한다는 결정에 응답하여, 상기 후보 트랜잭션이 상기 재전송 공격과 연관된다고 결정하는 단계를 더 포함하는, 재전송 공격을 검출하기 위한 컴퓨터 구현 방법.
  8. 제1항에 있어서, 상기 적어도 하나의 후보 트랜잭션을 획득하는 단계 전에,
    상기 ID 데이터베이스를 하나 이상의 블록체인 노드와 동기화하는 단계를 더 포함하는, 재전송 공격을 검출하기 위한 컴퓨터 구현 방법.
  9. 제1항에 있어서,
    상기 ID 데이터베이스는 상기 유효성 확인 범위에 대응하는 최근의 시간 기간 내 타임스탬프를 가진 트랜잭션의 정보를 포함하는, 재전송 공격을 검출하기 위한 컴퓨터 구현 방법.
  10. 제1항에 있어서,
    상기 유효성 확인 범위는 상기 블록체인의 최신의 블록의 또 다른 타임스탬프에 기초하고; 그리고
    상기 유효성 확인 범위는 상기 블록체인의 기원 블록에 포함되는, 재전송 공격을 검출하기 위한 컴퓨터 구현 방법.
  11. 재전송 공격을 검출하기 위한 시스템으로서, 하나 이상의 프로세서, 및 상기 하나 이상의 프로세서에 연결되고 그리고 상기 시스템이 동작을 수행하게 하도록 상기 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성된 하나 이상의 비일시적 컴퓨터-판독가능 메모리를 포함하되, 상기 동작은,
    블록체인에 추가하기 위한 적어도 하나의 트랜잭션(transaction)을 획득하는 단계;
    상기 블록체인에 추가하기 위한 적어도 하나의 후보 트랜잭션(candidate transaction)을 획득하기 위해 타임스탬프를 상기 적어도 하나의 트랜잭션에 추가하는 단계로서, 상기 적어도 하나의 후보 트랜잭션은 상기 타임스탬프 및 트랜잭션 정보를 포함하는, 상기 추가하는 단계;
    적어도 상기 타임스탬프와 상기 트랜잭션 정보에 기초하여 해시값을 결정하는 단계로서, 상기 해시값은 상기 후보 트랜잭션의 ID로 기능하는, 상기 결정하는 단계;
    상기 타임스탬프가 유효성 확인 범위(validation range) 내에 있는지 그리고 상기 후보 트랜잭션의 상기 ID가 ID 데이터베이스에 존재하는지를 검증하는 단계로서, 상기 ID 데이터베이스는 상기 유효성 확인 범위 내 복수의 ID를 포함하는, 상기 검증하는 단계; 및
    상기 타임스탬프가 상기 유효성 확인 범위 내에 있고 그리고 상기 ID가 상기 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 상기 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하는 단계를 포함하는, 재전송 공격을 검출하기 위한 시스템.
  12. 제11항에 있어서, 상기 동작은,
    상기 타임스탬프가 상기 유효성 확인 범위 내에 있고 그리고 상기 ID가 상기 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 상기 ID를 상기 ID 데이터베이스에 추가하는 단계를 더 포함하는, 재전송 공격을 검출하기 위한 시스템.
  13. 제11항에 있어서, 상기 동작은,
    상기 타임스탬프가 상기 유효성 확인 범위 내에 있고 그리고 상기 ID가 상기 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 상기 후보 트랜잭션을 상기 후보 트랜잭션을 저장하기 위한 캐시에 추가하는 단계를 더 포함하는, 재전송 공격을 검출하기 위한 시스템.
  14. 제11항에 있어서, 상기 동작은,
    상기 타임스탬프가 상기 유효성 확인 범위 내에 없다는 결정에 응답하여, 에러 메시지를 상기 후보 트랜잭션을 제출하는 연산 장치로 복귀시키는 단계를 더 포함하는, 재전송 공격을 검출하기 위한 시스템.
  15. 제11항에 있어서, 상기 동작은,
    상기 ID가 상기 ID 데이터베이스에 존재한다는 결정에 응답하여, 상기 후보 트랜잭션이 상기 재전송 공격과 연관된다고 결정하는 단계를 더 포함하는, 재전송 공격을 검출하기 위한 시스템.
  16. 제11항에 있어서, 상기 동작은,
    합의 검증을 수행하는 단계를 더 포함하되, 상기 후보 트랜잭션이 상기 재전송 공격과 연관되지 않는다고 결정된다면 상기 후보 트랜잭션이 상기 합의 검증에 포함되는, 재전송 공격을 검출하기 위한 시스템.
  17. 제16항에 있어서, 상기 동작은,
    상기 ID 데이터베이스와 하나 이상의 블록체인 노드를 동기화하는 단계;
    상기 타임스탬프가 상기 유효성 확인 범위 내에 있는지 그리고 상기 후보 트랜잭션의 상기 ID가 동기화된 ID 데이터베이스에 존재하는지를 검증하는 단계;
    상기 타임스탬프가 상기 유효성 확인 범위 내에 있고 그리고 상기 ID가 상기 동기화된 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 상기 후보 트랜잭션이 상기 재전송 공격과 연관되지 않는다고 결정하는 단계; 및
    상기 ID가 상기 동기화된 ID 데이터베이스에 존재한다는 결정에 응답하여, 상기 후보 트랜잭션이 상기 재전송 공격과 연관된다고 결정하는 단계를 더 포함하는, 재전송 공격을 검출하기 위한 시스템.
  18. 제11항에 있어서, 상기 적어도 하나의 후보 트랜잭션을 획득하는 단계 전에, 상기 동작은,
    상기 ID 데이터베이스를 하나 이상의 블록체인 노드와 동기화하는 단계를 더 포함하는, 재전송 공격을 검출하기 위한 시스템.
  19. 제11항에 있어서,
    상기 ID 데이터베이스는 상기 유효성 확인 범위에 대응하는 최근의 시간 기간 내 타임스탬프를 가진 트랜잭션의 정보를 포함하는, 재전송 공격을 검출하기 위한 시스템.
  20. 제11항에 있어서,
    상기 유효성 확인 범위는 상기 블록체인의 최신의 블록의 또 다른 타임스탬프에 기초하고; 그리고
    상기 유효성 확인 범위는 상기 블록체인의 기원 블록에 포함되는, 재전송 공격을 검출하기 위한 시스템.
  21. 하나 이상의 프로세서가 동작을 수행하게 하도록 상기 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성된 비일시적 컴퓨터-판독가능 저장 매체로서, 상기 동작은,
    블록체인에 추가하기 위한 적어도 하나의 트랜잭션(transaction)을 획득하는 단계;
    상기 블록체인에 추가하기 위한 적어도 하나의 후보 트랜잭션(candidate transaction)을 획득하기 위해 타임스탬프를 상기 적어도 하나의 트랜잭션에 추가하는 단계로서, 상기 적어도 하나의 후보 트랜잭션은 상기 타임스탬프 및 트랜잭션 정보를 포함하는, 상기 추가하는 단계;
    적어도 상기 타임스탬프와 상기 트랜잭션 정보에 기초하여 해시값을 결정하는 단계로서, 상기 해시값은 상기 후보 트랜잭션의 ID로 기능하는, 상기 결정하는 단계;
    상기 타임스탬프가 유효성 확인 범위(validation range) 내에 있는지 그리고 상기 후보 트랜잭션의 상기 ID가 ID 데이터베이스에 존재하는지를 검증하는 단계로서, 상기 ID 데이터베이스는 상기 유효성 확인 범위 내 복수의 ID를 포함하는, 상기 검증하는 단계; 및
    상기 타임스탬프가 상기 유효성 확인 범위 내에 있고 그리고 상기 ID가 상기 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 상기 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하는 단계를 포함하는, 비일시적 컴퓨터-판독가능 저장 매체.
  22. 제21항에 있어서, 상기 동작은,
    상기 타임스탬프가 상기 유효성 확인 범위 내에 있고 그리고 상기 ID가 상기 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 상기 ID를 상기 ID 데이터베이스에 추가하는 단계를 더 포함하는, 비일시적 컴퓨터-판독가능 저장 매체.
  23. 제21항에 있어서, 상기 동작은,
    상기 타임스탬프가 상기 유효성 확인 범위 내에 있고 그리고 상기 ID가 상기 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 상기 후보 트랜잭션을 상기 후보 트랜잭션을 저장하기 위한 캐시에 추가하는 단계를 더 포함하는, 비일시적 컴퓨터-판독가능 저장 매체.
  24. 제21항에 있어서, 상기 동작은,
    상기 타임스탬프가 상기 유효성 확인 범위 내에 없다는 결정에 응답하여, 에러 메시지를 상기 후보 트랜잭션을 제출하는 연산 장치로 복귀시키는 단계를 더 포함하는, 비일시적 컴퓨터-판독가능 저장 매체.
  25. 제21항에 있어서, 상기 동작은,
    상기 ID가 상기 ID 데이터베이스에 존재한다는 결정에 응답하여, 상기 후보 트랜잭션이 상기 재전송 공격과 연관된다고 결정하는 단계를 더 포함하는, 비일시적 컴퓨터-판독가능 저장 매체.
  26. 제21항에 있어서, 상기 동작은,
    합의 검증을 수행하는 단계를 더 포함하되, 상기 후보 트랜잭션이 상기 재전송 공격과 연관되지 않는다고 결정된다면 상기 후보 트랜잭션이 상기 합의 검증에 포함되는, 비일시적 컴퓨터-판독가능 저장 매체.
  27. 제26항에 있어서, 상기 동작은,
    상기 ID 데이터베이스와 하나 이상의 블록체인 노드를 동기화하는 단계;
    상기 타임스탬프가 상기 유효성 확인 범위 내에 있는지 그리고 상기 후보 트랜잭션의 상기 ID가 동기화된 ID 데이터베이스에 존재하는지를 검증하는 단계;
    상기 타임스탬프가 상기 유효성 확인 범위 내에 있고 그리고 상기 ID가 상기 동기화된 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 상기 후보 트랜잭션이 상기 재전송 공격과 연관되지 않는다고 결정하는 단계; 및
    상기 ID가 상기 동기화된 ID 데이터베이스에 존재한다는 결정에 응답하여, 상기 후보 트랜잭션이 상기 재전송 공격과 연관된다고 결정하는 단계를 더 포함하는, 비일시적 컴퓨터-판독가능 저장 매체.
  28. 제21항에 있어서, 상기 적어도 하나의 후보 트랜잭션을 획득하는 단계 전에, 상기 동작은,
    상기 ID 데이터베이스를 하나 이상의 블록체인 노드와 동기화하는 단계를 더 포함하는, 비일시적 컴퓨터-판독가능 저장 매체.
  29. 제21항에 있어서,
    상기 ID 데이터베이스는 상기 유효성 확인 범위에 대응하는 최근의 시간 기간 내 타임스탬프를 가진 트랜잭션의 정보를 포함하는, 비일시적 컴퓨터-판독가능 저장 매체.
  30. 제21항에 있어서,
    상기 유효성 확인 범위는 상기 블록체인의 최신의 블록의 또 다른 타임스탬프에 기초하고; 그리고
    상기 유효성 확인 범위는 상기 블록체인의 기원 블록에 포함되는, 비일시적 컴퓨터-판독가능 저장 매체.
  31. 재전송 공격(replay attack)을 검출하기 위한 컴퓨터 구현 방법으로서,
    블록체인에 추가하기 위한 적어도 하나의 트랜잭션(transaction)을 사용자 단말기로부터 획득하는 단계;
    상기 블록체인에 추가하기 위한 적어도 하나의 후보 트랜잭션(candidate transaction)을 획득하기 위해 타임스탬프를 상기 적어도 하나의 트랜잭션에 추가하는 단계로서, 상기 후보 트랜잭션은 상기 타임스탬프, 트랜잭션 정보, 및 적어도 상기 타임스탬프와 상기 트랜잭션 정보에 기초하여 결정된 해시값을 포함하고, 상기 해시값은 ID로서 기능하는, 상기 추가하는 단계;
    적어도 상기 타임스탬프와 상기 트랜잭션 정보에 기초하여 상기 해시값을 검증함으로써 상기 ID를 검증하는 단계;
    상기 타임스탬프가 유효성 확인 범위(validation range) 내에 있는지 그리고 상기 후보 트랜잭션의 상기 ID가 ID 데이터베이스에 존재하는지를 검증하는 단계로서, 상기 ID 데이터베이스는 상기 유효성 확인 범위 내 복수의 ID를 포함하는, 상기 검증하는 단계; 및
    상기 타임스탬프가 상기 유효성 확인 범위 내에 있고 그리고 상기 ID가 상기 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 상기 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하는 단계를 포함하는, 재전송 공격을 검출하기 위한 컴퓨터 구현 방법.
  32. 재전송 공격을 검출하기 위한 시스템으로서, 하나 이상의 프로세서, 및 상기 하나 이상의 프로세서에 연결되고 그리고 상기 시스템이 동작을 수행하게 하도록 상기 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성된 하나 이상의 비일시적 컴퓨터-판독가능 메모리를 포함하되, 상기 동작은,
    블록체인에 추가하기 위한 적어도 하나의 트랜잭션(transaction)을 사용자 단말기로부터 획득하는 단계;
    상기 블록체인에 추가하기 위한 적어도 하나의 후보 트랜잭션(candidate transaction)을 획득하기 위해 타임스탬프를 상기 적어도 하나의 트랜잭션에 추가하는 단계로서, 상기 후보 트랜잭션은 상기 타임스탬프, 트랜잭션 정보, 및 적어도 상기 타임스탬프와 상기 트랜잭션 정보에 기초하여 결정된 해시값을 포함하고, 상기 해시값은 ID로서 기능하는, 상기 추가하는 단계;
    적어도 상기 타임스탬프와 상기 트랜잭션 정보에 기초하여 상기 해시값을 검증함으로써 상기 ID를 검증하는 단계;
    상기 타임스탬프가 유효성 확인 범위(validation range) 내에 있는지 그리고 상기 후보 트랜잭션의 상기 ID가 ID 데이터베이스에 존재하는지를 검증하는 단계로서, 상기 ID 데이터베이스는 상기 유효성 확인 범위 내 복수의 ID를 포함하는, 상기 검증하는 단계; 및
    상기 타임스탬프가 상기 유효성 확인 범위 내에 있고 그리고 상기 ID가 상기 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 상기 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하는 단계를 포함하는, 재전송 공격을 검출하기 위한 시스템.
  33. 하나 이상의 프로세서가 동작을 수행하게 하도록 상기 하나 이상의 프로세서에 의해 실행 가능한 명령어로 구성된 비일시적 컴퓨터-판독가능 저장 매체로서, 상기 동작은,
    블록체인에 추가하기 위한 적어도 하나의 트랜잭션(transaction)을 사용자 단말기로부터 획득하는 단계;
    상기 블록체인에 추가하기 위한 적어도 하나의 후보 트랜잭션(candidate transaction)을 획득하기 위해 타임스탬프를 상기 적어도 하나의 트랜잭션에 추가하는 단계로서, 상기 후보 트랜잭션은 상기 타임스탬프, 트랜잭션 정보, 및 적어도 상기 타임스탬프와 상기 트랜잭션 정보에 기초하여 결정된 해시값을 포함하고, 상기 해시값은 ID로서 기능하는, 상기 추가하는 단계;
    적어도 상기 타임스탬프와 상기 트랜잭션 정보에 기초하여 상기 해시값을 검증함으로써 상기 ID를 검증하는 단계;
    상기 타임스탬프가 유효성 확인 범위(validation range) 내에 있는지 그리고 상기 후보 트랜잭션의 상기 ID가 ID 데이터베이스에 존재하는지를 검증하는 단계로서, 상기 ID 데이터베이스는 상기 유효성 확인 범위 내 복수의 ID를 포함하는, 상기 검증하는 단계; 및
    상기 타임스탬프가 상기 유효성 확인 범위 내에 있고 그리고 상기 ID가 상기 ID 데이터베이스에 존재하지 않는다는 결정에 응답하여, 상기 후보 트랜잭션이 재전송 공격과 연관되지 않는다고 결정하는 단계를 포함하는, 비일시적 컴퓨터-판독가능 저장 매체.
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
KR1020197015102A 2018-12-29 2018-12-29 재전송 공격을 검출하기 위한 시스템 및 방법 KR102239398B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2018/125782 WO2019072314A2 (en) 2018-12-29 2018-12-29 SYSTEM AND METHOD FOR ATTACK DETECTION BY REINTEGRATION

Publications (2)

Publication Number Publication Date
KR20200083931A KR20200083931A (ko) 2020-07-09
KR102239398B1 true KR102239398B1 (ko) 2021-04-13

Family

ID=66100039

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020197015102A KR102239398B1 (ko) 2018-12-29 2018-12-29 재전송 공격을 검출하기 위한 시스템 및 방법

Country Status (7)

Country Link
US (1) US11323475B2 (ko)
EP (1) EP3545665B1 (ko)
JP (1) JP6905059B2 (ko)
KR (1) KR102239398B1 (ko)
CN (1) CN110431577B (ko)
PH (1) PH12019501152A1 (ko)
WO (1) WO2019072314A2 (ko)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102239398B1 (ko) 2018-12-29 2021-04-13 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. 재전송 공격을 검출하기 위한 시스템 및 방법
WO2019072312A2 (en) * 2018-12-29 2019-04-18 Alibaba Group Holding Limited SYSTEM AND METHOD FOR DETECTING REJECTION ATTACK
CN110276688B (zh) * 2019-06-14 2024-02-06 深圳前海微众银行股份有限公司 一种区块链中交易处理的方法及装置
CN111108734B (zh) * 2019-06-26 2022-05-31 蚂蚁双链科技(上海)有限公司 基于存储空间互换的改进的防重放设备
CN110349029B (zh) * 2019-07-17 2022-04-15 中国银行股份有限公司 一种基于区块链的交易一致性的处理方法、设备以及***
WO2019228559A2 (en) * 2019-09-02 2019-12-05 Alibaba Group Holding Limited Managing blockchain-based centralized ledger systems
US20210184859A1 (en) * 2019-12-16 2021-06-17 CONCERTvdc, Inc. Validation and certification of digital assets using a blockchain
EP3834157B1 (en) 2020-04-22 2023-09-13 Alipay (Hangzhou) Information Technology Co., Ltd. Managing transaction requests in ledger systems
WO2020143855A2 (en) 2020-04-22 2020-07-16 Alipay (Hangzhou) Information Technology Co., Ltd. Managing transaction requests in ledger systems
CN111656386B (zh) 2020-04-22 2022-05-17 支付宝(杭州)信息技术有限公司 管理账本***中的交易请求
CN112346825A (zh) * 2020-11-11 2021-02-09 湖南智慧政务区块链科技有限公司 一种基于位图算法的区块链事务防重机制
CN112819628B (zh) * 2021-02-01 2024-02-02 网易(杭州)网络有限公司 交易防重放的检测方法及装置、***、电子设备、存储介质
CN112968912B (zh) * 2021-04-01 2023-01-13 上海帆立信息科技有限公司 长链路互联网业务多模式安全验证码方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108764870A (zh) * 2018-05-29 2018-11-06 阿里巴巴集团控股有限公司 基于区块链的交易处理方法及装置、电子设备

Family Cites Families (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8555062B1 (en) * 2001-03-26 2013-10-08 Access Co., Ltd. Protocol to prevent replay attacks on secured wireless transactions
CN101340289B (zh) * 2008-08-19 2011-11-09 北京飞天诚信科技有限公司 防重放攻击方法及其***
US8392709B1 (en) 2009-04-28 2013-03-05 Adobe Systems Incorporated System and method for a single request—single response protocol with mutual replay attack protection
CN102035801B (zh) 2009-09-28 2014-05-14 西门子(中国)有限公司 一种用于防止攻击的方法和装置
US9858401B2 (en) * 2011-08-09 2018-01-02 Biogy, Inc. Securing transactions against cyberattacks
US11824991B2 (en) * 2012-03-05 2023-11-21 Biogy, Inc. Securing transactions with a blockchain network
CN103020671B (zh) * 2012-11-20 2015-08-19 南京邮电大学 一种基于哈希函数的无线射频识别双向认证方法
US20140258110A1 (en) 2013-03-11 2014-09-11 Digimarc Corporation Methods and arrangements for smartphone payments and transactions
US9853949B1 (en) 2013-04-19 2017-12-26 Amazon Technologies, Inc. Secure time service
US20150324789A1 (en) 2014-05-06 2015-11-12 Case Wallet, Inc. Cryptocurrency Virtual Wallet System and Method
US20170185493A1 (en) * 2014-07-15 2017-06-29 Hewlett Packard Enterprise Development Lp Database transaction replay
US10230526B2 (en) 2014-12-31 2019-03-12 William Manning Out-of-band validation of domain name system records
US20160283939A1 (en) 2015-03-25 2016-09-29 Qualcomm Incorporated System and method to prevent loss of bitcoins due to address errors
US11329980B2 (en) * 2015-08-21 2022-05-10 Veridium Ip Limited System and method for biometric protocol standards
US10303887B2 (en) 2015-09-14 2019-05-28 T0.Com, Inc. Data verification methods and systems using a hash tree, such as a time-centric merkle hash tree
US10230756B2 (en) 2015-11-25 2019-03-12 International Business Machines Corporation Resisting replay attacks efficiently in a permissioned and privacy-preserving blockchain network
US10262164B2 (en) 2016-01-15 2019-04-16 Blockchain Asics Llc Cryptographic ASIC including circuitry-encoded transformation function
US9849364B2 (en) * 2016-02-02 2017-12-26 Bao Tran Smart device
US11130042B2 (en) * 2016-02-02 2021-09-28 Bao Tran Smart device
WO2017180382A1 (en) 2016-04-12 2017-10-19 Pcms Holdings, Inc. System and method for data validation in a decentralized sensor network
US10417217B2 (en) 2016-08-05 2019-09-17 Chicago Mercantile Exchange Inc. Systems and methods for blockchain rule synchronization
CN106295401A (zh) 2016-08-13 2017-01-04 深圳市樊溪电子有限公司 一种用于区块链的只读安全文件存储***及其方法
US10733602B2 (en) 2016-09-29 2020-08-04 Microsoft Technology Licensing, Llc. Heartbeats and consensus in verifiable outsourced ledgers
US10769602B2 (en) 2017-01-03 2020-09-08 Soo Hyang KANG System and method for customer initiated payment transaction using customer's mobile device and card
US11233656B2 (en) 2017-02-24 2022-01-25 Nec Corporation Method for mining a block in a decentralized blockchain consensus network
CN113766035B (zh) 2017-03-28 2023-05-23 创新先进技术有限公司 一种业务受理及共识的方法及装置
CN106991607B (zh) * 2017-03-29 2020-04-10 杭州溪塔科技有限公司 一种基于区块链账户模型的无序交易控制方法
WO2018195364A1 (en) * 2017-04-19 2018-10-25 Baton Systems, Inc. Time stamping systems and methods
US20180322489A1 (en) 2017-05-03 2018-11-08 Meredith Altenhofen System and method for restricted transaction processing
CN108881120B (zh) 2017-05-12 2020-12-04 创新先进技术有限公司 一种基于区块链的数据处理方法及设备
US11182380B2 (en) 2017-06-30 2021-11-23 Nchain Licensing Ag Flow control for probabilistic relay in a blockchain network
US10592979B2 (en) 2017-07-26 2020-03-17 International Business Machines Corporation Managing blockchain transactions
KR102042739B1 (ko) 2017-09-22 2019-11-08 서강대학교산학협력단 블록체인을 이용한 메시지 히스토리 기반의 보안 키를 이용하는 통신 장치 및 방법
US11165862B2 (en) 2017-10-24 2021-11-02 0Chain, LLC Systems and methods of blockchain platform for distributed applications
US11057225B2 (en) 2017-12-07 2021-07-06 International Business Machines Corporation Enforcing compute equity models in distributed blockchain
US10833844B2 (en) 2017-12-20 2020-11-10 International Business Machines Corporation Blockchain lifecycle management
US11315110B2 (en) 2017-12-27 2022-04-26 International Business Machines Corporation Private resource discovery and subgroup formation on a blockchain
US11205178B2 (en) 2017-12-28 2021-12-21 International Business Machines Corporation Converting processes into multiple blockchain smart contracts
US11271717B2 (en) 2018-02-21 2022-03-08 Thunder Token Inc. Blockchain consensus methods and systems
US10554412B2 (en) 2018-03-06 2020-02-04 Robust Analytics, Inc. Method and network to implement decentralized validation and authentication mechanisms to prevent ADS-B cyber-attacks
CN108494775B (zh) 2018-03-26 2020-12-15 四川长虹电器股份有限公司 防止利用合法数据或篡改合法数据进行网络攻击的方法
US11531661B2 (en) 2018-03-27 2022-12-20 International Business Machines Corporation Vehicle incident documentation for blockchain
US10833864B2 (en) * 2018-04-13 2020-11-10 International Business Machines Corporation Gaming concensus protocol for blockchain
US11531975B2 (en) 2018-04-13 2022-12-20 International Business Machines Corporation Network node management on a blockchain
US10404454B1 (en) 2018-04-25 2019-09-03 Blockchain Asics Llc Cryptographic ASIC for derivative key hierarchy
CN108805569A (zh) 2018-05-29 2018-11-13 阿里巴巴集团控股有限公司 基于区块链的交易处理方法及装置、电子设备
CN108989043B (zh) 2018-05-31 2021-01-26 中国联合网络通信集团有限公司 区块处理方法、装置及区块链节点
US10972279B2 (en) * 2018-06-07 2021-04-06 International Business Machines Corporation Efficient validation for blockchain
US10171992B1 (en) 2018-06-22 2019-01-01 International Business Machines Corporation Switching mobile service provider using blockchain
US10243748B1 (en) 2018-06-28 2019-03-26 Jonathan Sean Callan Blockchain based digital certificate provisioning of internet of things devices
US11068834B2 (en) 2018-06-29 2021-07-20 Intel Corporation Secure shipment receive apparatus with delegation-chain
US11010728B2 (en) 2018-07-12 2021-05-18 International Business Machines Corporation Timestamping changes to smart-contract state
CN109064171A (zh) 2018-07-26 2018-12-21 杭州秘猿科技有限公司 一种区块链并行交易的方法、装置及电子***
US20200043115A1 (en) 2018-08-02 2020-02-06 Zaius Networks Inc. doing business as (d.b.a.) BIGcontrols Permissioned blockchain ecosystem for economic development incentives
US10764070B2 (en) 2018-08-30 2020-09-01 International Business Machines Corporation High precision timestamps in blockchain
US20200090143A1 (en) 2018-09-14 2020-03-19 Andrea Iervolino System, Method, and Apparatus for Online Content Platform and Related Cryptocurrency
US10805094B2 (en) 2018-10-08 2020-10-13 International Business Machines Corporation Blockchain timestamp agreement
US10608829B1 (en) 2018-10-08 2020-03-31 International Business Machines Corporation Blockchain timestamp agreement
US11769573B2 (en) 2018-10-16 2023-09-26 Netspective Communications Llc Team-based tele-diagnostics blockchain-enabled system
US10681083B2 (en) 2018-12-29 2020-06-09 Alibaba Group Holding Limited System and method for detecting replay attack
US10735464B2 (en) 2018-12-29 2020-08-04 Alibaba Group Holding Limited System and method for detecting replay attack
KR102239398B1 (ko) 2018-12-29 2021-04-13 어드밴스드 뉴 테크놀로지스 씨오., 엘티디. 재전송 공격을 검출하기 위한 시스템 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108764870A (zh) * 2018-05-29 2018-11-06 阿里巴巴集团控股有限公司 基于区块链的交易处理方法及装置、电子设备

Also Published As

Publication number Publication date
JP2020505663A (ja) 2020-02-20
WO2019072314A2 (en) 2019-04-18
US20200296130A1 (en) 2020-09-17
US11323475B2 (en) 2022-05-03
CN110431577B (zh) 2023-08-22
KR20200083931A (ko) 2020-07-09
EP3545665A2 (en) 2019-10-02
EP3545665B1 (en) 2023-05-03
CN110431577A (zh) 2019-11-08
EP3545665A4 (en) 2020-01-22
WO2019072314A3 (en) 2019-10-24
JP6905059B2 (ja) 2021-07-21
PH12019501152A1 (en) 2019-12-11

Similar Documents

Publication Publication Date Title
KR102226258B1 (ko) 재전송 공격을 검출하기 위한 시스템 및 방법
KR102239398B1 (ko) 재전송 공격을 검출하기 위한 시스템 및 방법
US10681083B2 (en) System and method for detecting replay attack
US10735464B2 (en) System and method for detecting replay attack
EP3688929B1 (en) System and method for providing privacy and security protection in blockchain-based private transactions
EP3776208B1 (en) Runtime self-correction for blockchain ledgers
US11038669B2 (en) Systems and methods for blockchains with serial proof of work
US11233656B2 (en) Method for mining a block in a decentralized blockchain consensus network
US10764031B2 (en) Blockchain system for pattern recognition
US10878248B2 (en) Media authentication using distributed ledger
KR20200016238A (ko) 스크립트 기반 블록체인 상호작용
JP2022508247A (ja) 信頼度ベースのコンセンサスを伴う高性能分散型記録システム
EP4332870A1 (en) Transaction data processing method and apparatus, computer device and storage medium
JP2023076628A (ja) 一対の結合ブロックチェーンを構成するバイナリブロックチェーンに関連するコンピュータ実装システム及び方法
WO2022000482A1 (en) System and method for providing privacy and security protection in blockchain-based private transactions
KR102150591B1 (ko) 암호화폐의 거래 기법
KR20210007928A (ko) 암호화폐의 거래 기법
Yuan et al. AME Blockchain: An Architecture Design for Closed-Loop Fluid Economy Token System
US20230138816A1 (en) System and method to reach consensus in a multi-chain iot environment

Legal Events

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