KR101463678B1 - 신뢰되지 않는 컴퓨팅 노드들에 의해 수행된 작업의 검증 - Google Patents

신뢰되지 않는 컴퓨팅 노드들에 의해 수행된 작업의 검증 Download PDF

Info

Publication number
KR101463678B1
KR101463678B1 KR1020127032839A KR20127032839A KR101463678B1 KR 101463678 B1 KR101463678 B1 KR 101463678B1 KR 1020127032839 A KR1020127032839 A KR 1020127032839A KR 20127032839 A KR20127032839 A KR 20127032839A KR 101463678 B1 KR101463678 B1 KR 101463678B1
Authority
KR
South Korea
Prior art keywords
untrusted computing
computation
untrusted
computing node
results
Prior art date
Application number
KR1020127032839A
Other languages
English (en)
Other versions
KR20130021405A (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 KR20130021405A publication Critical patent/KR20130021405A/ko
Application granted granted Critical
Publication of KR101463678B1 publication Critical patent/KR101463678B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Hardware Redundancy (AREA)
  • Storage Device Security (AREA)

Abstract

신뢰되지 않는 컴퓨팅 노드들에 의해 수행된 작업을 검증하는 기법이 제공된다. 중앙 컴퓨팅 시스템은 적어도 부분적으로 제 1 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 제 1 계산을 결정한다. 중앙 컴퓨팅 시스템은 또한 제 1 계산에 적용되는 변환 함수를 결정한다. 중앙 컴퓨팅 시스템은 변환 함수를 비밀로 유지하면서, 제 1 신뢰되지 않는 컴퓨팅 노드에 제 1 계산을 할당하고, 제 2 신뢰되지 않는 컴퓨팅 노드에 제 2 계산을 할당한다. 중앙 컴퓨팅 시스템은 제 1 계산에 대한 제 1 결과를 수신하고 제 2 계산에 대한 제 2 결과를 수신한다. 중앙 컴퓨팅 시스템은 제 1 및 제 2 결과들을 분석하여 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들에 의해 수행되는 작업을 검증한다.

Description

신뢰되지 않는 컴퓨팅 노드들에 의해 수행된 작업의 검증{VERIFYING WORK PERFORMED BY UNTRUSTED COMPUTING NODES}
다수의 컴퓨팅 노드들에 걸쳐서 광범위 계산들을 분배하는 것은 더욱 더 인기를 얻고 있다. 이러한 광범위 계산들은 이와 달리 단일 컴퓨팅 시스템 또는 적은 수의 컴퓨팅 시스템들의 프로세싱 리소스들을 넘어설 수도 있는 복잡한 문제가 해결될 수 있게 한다. 일반적으로, 중앙 컴퓨팅 시스템은 각각의 컴퓨팅 노드에 광범위 계산의 일부분을 제공한다. 이어서, 컴퓨팅 노드들은 그들이 할당받은 부분들을 수행하고, 중앙 컴퓨팅 시스템에 그 결과들을 리턴한다. 그 후, 중앙 컴퓨팅 시스템은 광범위 계산에 대한 전체 솔루션을 결정하도록 컴퓨팅 노드들로부터의 다양한 결과들을 프로세싱할 수도 있다.
하나의 일반적인 접근방안은 광범위 계산의 일부분들을 일반 대중으로부터 선택된 자원자들에게 분배하는 것이다. 자원자들은 그들의 컴퓨터들이 분산형 시스템의 컴퓨팅 노드들로서 작용하게 한다. 따라서, 중앙 컴퓨팅 시스템은 수행할 광범위 계산의 일부분을 자원자들의 컴퓨팅 노드들의 각각에 제공한다. 이 접근방법은 노드들이 자원자들에 의해 사용되지 않을 때 또는 자원자들이 그들의 컴퓨팅 노드들의 충분한 프로세싱 리소스들을 이용하지 않을 때 컴퓨팅 노드들의 프로세싱 리소스들의 이용을 허용한다.
대중으로부터의 자원자들은 이용이 프로세싱 리소스들에 대한 저비용 액세스를 제공하지만, 여러 가지 단점들이 존재한다. 먼저, 광범위 계산의 부분들을 수행하고 있는 컴퓨팅 노드들은 그들이 자원자 노드들이므로 중앙 컴퓨팅 시스템의 관점으로부터 볼 때 신뢰되지 않는다. 따라서, 컴퓨팅 노드는 해결될 문제의 프로그램 코드에 버그들, 사용자 에러, 외부 데이터의 잘못된 구성, 또는 다른 유사한 환경들을 도입한 결과로서 실수를 할 수 있다. 대안으로, 컴퓨팅 노드는 할당된 계산에 위조 (false) 솔루션들을 제공함으로써 또는 다른 컴퓨팅 노드로부터 결과들을 스틸링 (steal) 하고 그 후에 그 결과들을 자신의 결과들로서 제공함으로써 사기 (fraud) 를 시도할 수 있다.
일부 시스템들은 그러한 사기를 방지하기 위한 시도로 암호화 및 디지털 서명들과 같은 보안 측정들을 제공한다. 그러나, 이러한 측정들은 특정 종류의 에러 또는 정교한 사기를 검출할 수 없다. 예를 들어, 반대파가 프로세스에서의 계산을 인터럽트할 수 있고, 일부 값들을 변경할 수 있고, 종래의 암호화 및 디지털 서명들이 검출될 수 없도록 하는 방식으로 계산이 계속되게 할 수 있다.
여기에 개시되는 예시적인 실시형태는 중앙 컴퓨팅 시스템에 커플링된 2 개 이상의 신뢰되지 않는 컴퓨팅 노드들에 의해 수행되는 작업을 중앙 컴퓨팅 시스템이 검증하게 하는 방법 및 컴퓨터 프로그램 제품에 관한 것이다. 중앙 컴퓨팅 시스템은, 적어도 부분적으로 제 1 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 제 1 계산을 결정한다. 중앙 컴퓨팅 시스템은 또한 제 1 계산에 적용되어 적어도 부분적으로 제 2 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 동등한 제 2 계산을 생성하도록 하는 변환 함수를 결정한다. 중앙 컴퓨팅 시스템은 변환 함수를 비밀로 유지하면서 제 1 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 제 1 계산 및 제 2 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 제 2 계산을 할당한다. 중앙 컴퓨팅 시스템은 제 1 신뢰되지 않는 컴퓨팅 노드로부터 제 1 계산에 대한 제 1 결과를 수신하고, 제 2 신뢰되지 않는 컴퓨팅 노드로부터 제 2 계산에 대한 제 2 결과를 수신한다. 중앙 컴퓨팅 시스템은 제 1 및 제 2 결과들을 분석하여, 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들에 의해 수행되는 작업을 검증하게 한다.
여기에 개시되는 예시적인 실시형태는 컴퓨팅 시스템에 관한 것이다. 컴퓨팅 시스템은 프로세서, 데이터베이스, 계산 생성 모듈, 변환 함수 모듈, 수신 모듈 및 분석 모듈을 포함한다. 계산 생성 모듈은 제 1 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 제 1 계산을 생성한다. 변환 함수 모듈은 제 1 계산에 적용되어 동등한 제 2 계산을 생성하도록 하는 변환 함수를 생성하거나 획득한다. 제 2 계산은 제 2 신뢰되지 않는 컴퓨팅 노드에 의해 수행될 것이다. 할당 노드는 변환 함수를 비밀로 유지하면서, 제 1 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 제 1 계산을 할당하고 제 2 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 제 2 계산을 할당한다. 수신 모듈은 제 1 신뢰되지 않는 컴퓨팅 노드로부터 제 1 계산에 대한 제 1 결과를 수신하고 제 2 신뢰되지 않는 컴퓨팅 노드로부터 제 2 계산에 대한 결과를 수신한다. 분석 모듈은 제 1 및 제 2 결과들을 분석하여 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들에 의해 수행되는 작업을 검증하게 한다.
전술한 개요는 예시적인 것에 불과하며, 임의의 방식으로 제한하고자 하는 것이 아니다. 전술된 예시적인 양태들, 실시형태들, 및 특징들에 더하여, 추가의 양태들, 실시형태들, 및 특징들은 도면 및 다음의 상세한 설명을 참조하면 명백해질 것이다.
도 1 은 분산형 컴퓨팅 시스템의 예시적인 실시형태의 개략도이다.
도 2 는 도 1 의 분산형 컴퓨팅 시스템의 중앙 컴퓨팅 시스템의 예시적인 실시형태이다.
도 3 은 신뢰되지 않는 컴퓨팅 노드들에 의해 수행되는 작업을 검증하기 위한 방법의 예시적인 실시형태의 흐름도이다.
도 4 는 신뢰되지 않는 컴퓨팅 노드들에 의해 수행되는 작업을 검증하기 위한 방법의 대안의 실시형태의 흐름도이다.
도 5 는 본 개시물에 따른, 신뢰되지 않는 컴퓨팅 노드들에 의해 수행되는 작업을 검증하기 위한 예시적인 컴퓨팅 디바이스를 도시한다.
다음의 상세한 설명에서는, 그의 일부를 형성하는 첨부한 도면이 참조된다. 도면에서, 콘텍스트가 다르게 지시하고 있지 않다면, 유사한 기호들은 일반적으로 유사한 콤포넌트들을 식별한다. 상세한 설명, 도면 및 청구범위에서 설명되는 예시적인 실시형태들은 제한하고자 하는 것이 아니다. 다른 실시형태들이 이용될 수도 있고, 여기에서 제시되는 주제의 사상 또는 범주로부터 벗어나지 않는 다른 변경들이 이루어질 수도 있다. 여기에서 일반적으로 설명되는 바와 같이, 그리고 도면에 예시된 바와 같이, 본 개시물의 양태들은, 매우 다양한 여러 가지 구성들로 배열되고, 치환되고, 결합되고, 분할되고, 설계될 수 있으며, 그러한 구성들이 모두가 여기에서 명백히 고려된다는 것은 용이하게 이해될 것이다.
여기에 개시된 실시형태들은 분산형 컴퓨팅 시스템에 관한 것이다. 분산형 컴퓨팅 시스템은, 중앙 컴퓨팅 시스템에 동작 가능하게 커플링된 2 개 이상의 신뢰되지 않는 컴퓨팅 노드들을 포함한다. 중앙 컴퓨팅 시스템은 2 개 이상의 신뢰되지 않는 컴퓨팅 노드들의 프로세싱 리소스들을 이용하여, 일반적으로 다량의 프로세싱 리소스들을 요구하는 광범위하고 복잡한 계산들을 수행하는 데 도움을 준다.
2 개 이상의 신뢰되지 않는 컴퓨팅 노드들은 계산의 적어도 일부분을 수행할 수 있는 프로세싱 리소스들을 갖는 임의의 타입의 컴퓨팅 시스템일 수도 있다. 실례들은, 데스크톱 컴퓨터들, 랩톱 컴퓨터들, 모바일 폰들, 및 PDA들을 포함하지만, 이들로 국한되지 않는다. 2 개 이상의 신뢰되지 않는 컴퓨팅 노드들은 중앙 컴퓨팅 시스템의 관점으로부터 볼 때 신뢰되지 않는데, 이는 중앙 컴퓨팅 시스템이 컴퓨팅 노드들의 수행 전반에 대해 직접적인 제어를 갖지 않기 때문이다.
따라서, 여기에 개시된 실시형태들은 2 개 이상의 신뢰되지 않는 컴퓨팅 노드들에 의해 수행되는 작업을 검증하도록 하는 중앙 컴퓨팅 시스템용 메커니즘을 제공한다. 여기에 개시된 실시형태들은 위조자들 (fakers) 또는 프리로더들 (freeloaders) 인 신뢰되지 않는 컴퓨팅 노드들에 대해 방어한다. 위조자는 할당된 작업을 하는 척하지만 실제로는 하고 있지 않은 노드이며, 프리로더는 자체 또는 다른 노드에 의해 이전에 수행된 작업을 복제하고자 한다. 반달 (vandal) 은 불량한 결과들을 완전한 계산에 주입하고자 하는 일종의 위조자이다. 따라서, 위조자들 및 프리로더들은 중앙 컴퓨팅 시스템에 사기성의 무효 정보를 제공할 수도 있다.
또한, 여기에 개시된 실시형태들은 2 개 이상의 신뢰되지 않은 컴퓨팅 노드들에 의한 결탁 (collusion) 을 방어한다. 더 상세히 설명되는 바와 같이, 신뢰되지 않는 컴퓨팅 노드들에 의해 수행되는 상이하지만 동등한 계산들을 제공함으로써, 함께 작업하여 사기성 무효 정보를 제공하도록 하는 2 개의 노드들이 감소한다.
실시형태에 따르면, 중앙 컴퓨팅 시스템은 신뢰되지 않는 컴퓨팅 노드들이 수행하는 것을 도울 제 1 계산을 결정한다. 일반적으로, 제 1 계산은 제 1 신뢰되지 않는 컴퓨팅 노드에 의해 수행된다. 제 1 계산은 계산 콤포넌트들로 분할될 수도 있으며, 신뢰되지 않는 컴퓨팅 노드에 의해 각각의 서브세트가 수행된다.
결탁, 프리로딩 또는 위조에 대비하기 위해, 중앙 컴퓨팅 시스템은 또한 제 1 계산에 적용되는 변환 함수를 결정하여 동등한 제 2 계산을 생성할 수도 있다. 변환 함수는 제 1 계산과 동등한 제 2 계산을 만드는 임의의 기능이다. 따라서, 동등한 계산은, 변환 함수가 제거될 때, 제 1 계산과 실질적으로 동일한 것이다. 변환 함수들의 실례들과 함께, 더 상세한 사항이 아래에서 제공될 것이다. 일반적으로, 동등한 제 2 계산은 제 2 신뢰되지 않는 컴퓨팅 노드에 의해 수행된다. 변환 함수는 다수의 변환 함수 콤포넌트들을 포함하는 변환 공간으로부터 선택될 수도 있다.
중앙 컴퓨팅 시스템은 그 후에 제 1 계산을 제 1 신뢰되지 않는 컴퓨팅 노드에 할당하고 제 2 계산을 제 2 신뢰되지 않는 컴퓨팅 노드에 할당하여, 양측 계산들이 수행될 수도 있게 할 수도 있다. 사기 또는 결탁을 감시 (guard) 하기 위해, 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들은 랜덤하게 선택되고 할당될 수도 있다. 또한, 동등한 제 2 계산을 생성하는 데 이용되는 변환 함수는 추가의 안전대책으로서 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들로부터 비밀로 유지된다.
일단 신뢰되지 않는 컴퓨팅 노드들에 의해 계산들이 수행되었으면, 제 1 계산에 대한 제 1 결과가 제 1 신뢰되지 않는 컴퓨팅 노드로부터 수신될 수도 있다. 제 2 계산에 대한 제 2 결과는 또한 제 2 신뢰되지 않는 컴퓨팅 노드로부터 수신될 수도 있다.
제 1 및 제 2 결과들은 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들에 의해 수행되는 작업을 검증하기 위해 분석될 수도 있다. 즉, 결과들의 분석은, 노드들 중 하나 또는 양측 모두가 프리로더인지 또는 위조자인지를 결정하거나, 2 개의 노드들이 사기성 무효한 결과들을 제공하도록 결탁했는지를 결정하는 것을 돕는다. 분석은 제 2 결과로부터 변환 함수를 제거할 수도 있고, 그 후에 제 1 결과와 제 2 결과를 비교할 수도 있다. 제 2 결과로부터 변환을 제거하는 것은 일반적으로 변환 함수의 역 (inverse) 을 제 2 결과에 적용함으로써 수행된다는 것이 인지될 것이다. 제 2 결과에 대한 변환의 역의 이러한 응용은, 아래에서 더 상세히 설명되는 바와 같이, 이 2개의 결과들을 실질적으로 동일하게 만들기 때문에, 결과들이 유효하다면, 결과들은 일반적으로 동일하고, 결과들 중 하나 또는 양측 모두가 무효하다면, 결과들은 일반적으로 상이하다. 사기에 대한 추가 안전대책들로서, 신뢰되지 않는 컴퓨팅 노드들의 이력 신뢰성 (historical trustworthiness) 은 이력 데이터의 데이터베이스를 참고함으로써 분석될 수도 있다. 또한, 하나 이상의 확률 기능들은 결과들에 적용되어 그 결과들이 유효한지를 결정하도록 할 수도 있다.
본 개시물의 각각의 양태들의 여러 예시적인 실시형태들이 첨부한 도면을 참조하여 예시로 하기에 제공된다. 도 1 은 중앙 컴퓨팅 시스템 (110) 및 다수의 신뢰되지 않는 컴퓨팅 노드들 (130, 140, 150, 160) 을 포함한 분산형 컴퓨팅 시스템 (100) 의 예시적인 실시형태의 개략도이다. 도 1 은 또한 임의의 추가적인 수의 신뢰되지 않는 컴퓨팅 노드들 (170)(생략 부호들로 도시됨) 이 분산형 컴퓨팅 시스템 (100) 에 포함될 수도 있음을 예시한다. 당업자는, 도 1 에 도시된 것과는 상이한 수의 신뢰되지 않는 컴퓨팅 노드들이 존재할 수도 있음을 인지할 것이다. 많은 실시형태들에서, 수천 또는 심지어 수백만의 신뢰되지 않는 컴퓨팅 노드들이 존재할 수도 있다.
중앙 컴퓨팅 시스템 (110) 은 네트워크 (120) 에 의해 신뢰되지 않는 컴퓨팅 노드들 (130, 140, 150, 160, 170) 에 커플링될 수도 있다. 도 1 에 도시된 바와 같이, 중앙 컴퓨팅 시스템 (110) 및 신뢰되지 않는 컴퓨팅 노드들 (130, 140, 150, 160, 170) 은 네트워크 (120) 를 통해 서로에게 양방향으로 통신할 수도 있다. 네트워크 (120) 는 중앙 컴퓨팅 시스템 (110) 또는 신뢰되지 않는 컴퓨팅 노드들 (130, 140, 150, 160, 170) 과 호환 가능한 임의의 네트워크일 수도 있으며, 예를 들어 위성 네트워크들, 802.11 네트워크들, 개인 컴퓨터 네트워크들 (예컨대, LAN, WAN), 무선 네트워크들 (예컨대, 블루투스, WiFi), 셀룰러 네트워크들, 전화 네트워크들 (예컨대, 일반 전화선 또는 PSTN), 데이터 네트워크들, 인터넷 등 또는 이들의 임의의 조합을 포함할 수도 있다.
일 예시적인 실시형태에서, 중앙 컴퓨팅 시스템 (110) 은, 신뢰되지 않는 컴퓨팅 노드들 (130, 140, 150, 160, 170) 에 의해 적어도 부분적으로 수행되는 광범위하고 일반적으로는 복잡한 계산을 생성한다. 하기에서 더 상세히 설명되는 바와 같이, 중앙 컴퓨팅 시스템 (110) 은 제 1 계산을 생성할 수도 있으며, 그 후에 신뢰되지 않는 컴퓨팅 노드들 (130, 140, 150, 160, 170) 중 일부가 수행하는 제 1 계산의 일부분을, 네트워크 (120) 를 통해 제공할 수도 있다. 중앙 컴퓨팅 시스템 (110) 은 또한 신뢰되지 않는 컴퓨팅 노드들 (130, 140, 150, 160, 170) 중 일부가 수행하는 비밀의 변환 함수에 기초하여 동등한 제 2 계산을 생성할 수도 있다.
신뢰되지 않는 컴퓨팅 노드들 (130, 140, 150, 160) 은 각각 프로세싱 리소스들 (135, 145, 155, 165) 을 포함한다. 프로세싱 리소스들 (135, 145, 155, 165) 은 프로세서, 및 컴퓨팅 노드들 (130, 140, 150, 160) 이 제 1 또는 제 2 계산 또는 그 계산들의 일부분을 수행하게 하는 임의의 다른 컴퓨터 하드웨어 및/또는 소프트웨어를 나타낸다. 신뢰되지 않는 컴퓨팅 노드들 (170) 중 임의의 노드도 또한 프로세서, 및 제 1 또는 제 2 계산들을 수행하는 다른 프로세싱 리소스들을 포함한다는 것에 주목한다.
도 2 는 중앙 컴퓨팅 시스템 (110) 의 예시적인 실시형태 및 분산형 컴퓨팅 시스템 (100) 의 더 상세한 도면을 예시한다. 도 2 에서, 네트워크 (120) 는 이 도면의 추가적인 특징들이 더 명백히 보일 수도 있도록 생략되어 있다. 도시된 바와 같이, 중앙 컴퓨팅 시스템 (110) 은 다양한 동작 모듈들 및 데이터베이스들을 포함하며, 이들은 더 상세히 설명될 것이다. 여기에 개시된 실시형태들로부터 주의를 돌리지 않도록 하기 위해, 커플링된 것으로 도시되지는 않았지만, 중앙 컴퓨팅 시스템 (110) 의 다양한 동작 모듈들 및 데이터베이스들은 정황 여건에 따라 컴퓨터 버스, 다른 배선, 또는 무선 접속과 같은 임의의 합당한 수단에 의해 서로에게 커플링될 수도 있다는 것이 이해될 것이다.
도시된 바와 같이, 중앙 컴퓨팅 시스템 (110) 은 프로세서 (210) 를 포함한다. 프로세서 (210) 는 임의의 합당한 프로세서일 수도 있으며, 동작 시, 중앙 컴퓨팅 시스템 (110) 이 다양한 동작들을 수행하게 한다. 일부 실시형태들에서, 프로세서 (210) 는 중앙 컴퓨팅 시스템 (110) 의 다양한 동작 모듈들에 의해 액세스되어, 모듈들의 프로세싱 리소스들을 제공할 수도 있다. 다른 실시형태들에서, 동작 모듈들은 대안의 프로세서에 대한 액세스를 가질 수도 있다.
중앙 컴퓨팅 시스템 (110) 은 또한 데이터베이스 (220) 를 포함할 수도 있다. 데이터베이스 (220) 는 임의의 타입의 합당한 비휘발성 또는 휘발성 메모리일 수도 있다. 일 예시적인 실시형태에서, 데이터베이스 (220) 는 이력 (225) 을 포함할 수도 있다. 이력 (225) 은 신뢰되지 않는 컴퓨팅 노드들 (130, 140, 150, 160, 170) 에 의해 중앙 컴퓨팅 시스템 (110) 에 제공된 과거의 결과들을 포함할 수도 있다. 이력 (125) 은 중앙 컴퓨팅 시스템 (170) 에 의해, 신뢰되지 않는 컴퓨팅 노드들 (130, 140, 150, 160, 170) 의 신뢰성을 결정하는 데 이용될 수도 있으며, 이는 하기에서 더 상세히 설명될 것이다. 데이터베이스 (220) 가 중앙 컴퓨팅 시스템 (110) 내에 포함되어 있는 것으로 도시되어 있지만, 일부 실시형태들에서, 데이터베이스 (220) 는 중앙 컴퓨팅 시스템 (110) 에 액세스 가능하면서 중앙 컴퓨팅 시스템 (110) 의 외부에 있을 수도 있다.
계산 생성 모듈 (230) 이 또한 중앙 컴퓨팅 시스템 (110) 에 포함된다. 계산 생성 모듈 (230) 은 신뢰되지 않는 컴퓨팅 노드들 (130, 140, 150, 160, 170) 중 하나 이상의 컴퓨팅 노드들과 같은 하나 이상의 신뢰되지 않는 컴퓨팅 노드들에 의해 수행되는 제 1 계산 (280) 을 생성할 수도 있다. 제 1 계산 (280) 은 중앙 컴퓨팅 시스템 (110) 이 바라는 임의의 계산으로서, 신뢰되지 않는 컴퓨팅 노드들 (130, 140, 150, 160, 170) 이 수행에 도움이 되기를 바라는 임의의 계산일 수도 있다. 일부 예시적인 실시형태들에서, 제 1 계산 (280) 은 하나 또는 적은 수의 신뢰되지 않는 컴퓨팅 노드들 (130, 140, 150, 160, 170) 에 의해 해결될 수 있는 단일 문제일 수도 있다. 그러나, 일반적으로, 제 1 계산 (280) 은, 계산을 위해 여러 부분들로 분할되고 다수의 신뢰되지 않는 컴퓨팅 노드들 (130, 140, 150, 160, 170) 에게 분산되는 광범위하고 복잡한 문제이다. 예를 들어, 제 1 계산 (280) 은, 제 1 계산 콤포넌트들 (280a, 280b) 및 잠재적으로 도 2 에서 생략 기호들로 예시된 바와 같은 임의의 수의 추가적인 제 1 계산 콤포넌트들 (280c) 로 분할될 수도 있다.
중앙 컴퓨팅 시스템 (110) 은 변환 함수 모듈 (240) 을 포함한다. 일 실시형태에서, 변환 함수 모듈 (240) 은 변환 함수 (245) 를 생성할 수도 있다. 변환 함수 (245) 를, 변환 함수 (245) 가 제 1 계산 (280) 에 적용될 때, 제 1 계산 (280) 과 동등한 제 2 계산 (290) 이 생성되도록 하는 방식으로 제 1 계산 (280) 과 관련되는 것이 일반적이다. 따라서, 변환 함수 (245) 를 제 1 계산 (280) 과 연관된 문제 타입에 기초하여 선택되는 것이 일반적이다. 변환 함수 (245) 를 변환 자체 및 변환 함수의 역을 포함한다는 것이 인지될 것이다.
다른 실시형태에서, 변환 함수 모듈 (240) 은 중앙 컴퓨팅 시스템 (110) 의 사용자로부터 또는 다른 컴퓨팅 시스템으로부터 변환 함수를 획득할 수도 있다. 이러한 실시형태들에서, 사용자 또는 다른 컴퓨팅 시스템은 변환 함수 모듈 (240) 에 변환 함수를 공급할 수도 있다. 대안으로, 사용자 또는 다른 컴퓨팅 시스템은, 변환 함수 모듈 (240) 로 하여금, 사용될 수도 있는 다양한 변환 함수들을 포함하는 일부 변환 템플릿들을 선택, 검증 또는 조절하게 할 수도 있다. 따라서, 변환 함수 모듈 (240) 은 변환 함수를 생성할 수도 있고, 또는 그것은 사용자 또는 다른 컴퓨팅 시스템으로부터 변환 함수를 획득할 수도 있다는 것이 인지될 것이다. 예를 들어, 제 1 계산 (280) 은, 각각의 디멘전이 복잡하거나, 거의 연속적이거나, 또는 그와 달리 매우 가변적인 경우의 공간 해석을 다루는 문제와 연관된다는 것을 가정한다. 이러한 제 1 계산 (280) 은 선형 변환 함수 (245) 를 제안한다. 예를 들어, X 는 3D 형상들의 세트이고, 제 1 계산 (280) 은 X 에서의 형상들의 총 볼륨을 계산하는 것이라 하자. 그러면, 변환 함수 (245) 가 선형 변환들의 공간으로부터 선택될 수 있다.
설명된 바와 같이, 변환 함수 (245) 를 제 1 계산 (280) 에 적용하는 것은, 제 1 계산 (280) 과 동등한 제 2 계산 (290) 을 생성한다. 전술된 바와 같이, 동등한 문제 또는 계산은, 변환 함수 (245) 가 제거될 때, 실질적으로 제 1 문제 또는 계산과 동일한 것이다. 간단한 선형 변환이 이 점을 나타내기 위해 이용될 수도 있다. 예를 들어, 제 1 계산 (280) 이 1 + 1 의 단순한 수식이었음을 가정한다. 또한, 변환 함수 (245) 가 f(x) = x * 100 의 선형 변환이었음을 가정한다. 수식 1 + 1 에 적용될 때, 100 + 100 의 동등한 제 2 계산 (290) 이 생성될 것이다. 용이하게 알 수 있는 바와 같이, 1 + 1 의 결과는 2 이고, 100 + 100 의 결과는 200 이다. 결과 200 의 선형 변환의 역을 적용하는 것은 제 2 계산 (290) 에 2 의 결과를 제공할 것이며, 이것은 실질적으로 제 1 계산 (280) 의 결과 2 와 동일하다. 설명의 용이성을 위해 간단한 수식 및 간단한 선형 변환이 사용되었지만, 더 복합한 변환들이 더 복잡한 문제들에 대해 이용될 수도 있다는 것이 인지될 것이다. 전술된 바와 같이, 제 1 계산 (280) 의 타입은 동등한 제 2 계산 (290) 을 생성하는 데 이용될 수도 있는 변환 함수 (245) 의 타입을 나타내는 것이 일반적이다.
일 예시적인 실시형태에서, 변환 함수 (245) 를 다수의 변환 함수 콤포넌트들 (245a, 245b) 및 잠재적으로 도 2에서 생략 기호들로 예시된 바와 같은 임의의 수의 추가적인 변환 함수 콤포넌트들 (245c) 로 분할될 수도 있는 변환 공간일 수도 있다. 이러한 실시형태들에서, 변환 함수 콤포넌트들 (245a, 245b, 245c) 중 어느 하나의 콤포넌트가 제 1 계산 (280) 에 적용되어, 동등한 제 2 계산 (290) 을 생성하도록 할 수도 있다.
제 1 계산 (280) 이 다수의 제 1 계산 콤포넌트들 (280a, 280b, 280c) 로 분할되는 그들 실시형태들에서, 변환 함수 콤포넌트들 (245a, 245b, 245c) 중 어느 하나의 콤포넌트가 특정 제 1 계산 서브세트 (280a, 280b, 280c) 에 적용되어 제 2 계산 (290) 을 생성하도록 할 수도 있다. 예를 들어, 변환 함수 서브세트 (245b) 가 제 1 계산 서브세트 (280a) 에 적용되어 동등한 제 2 계산 (290) 을 생성하도록 할 수도 있다. 이후, 변환 함수 서브세트 (245b) 가 제 1 계산 서브세트 (280b) 에 적용되어 동등한 제 2 계산 (290) 을 생성하도록 할 수도 있다. 또한, 이후, 변환 함수 서브세트 (245a) 는 제 1 계산 서브세트 (280a) 에 적용되어 동등한 제 2 계산 (290) 을 생성할 수도 있다. 따라서, 변환 함수 공간의 변환 함수 콤포넌트들 (245a, 245b, 245c) 중 어느 하나의 콤포넌트가, 동등한 제 2 계산 (290) 을 생성하는 데 이용될 수도 있다.
중앙 컴퓨팅 시스템 (100) 은 할당 모듈 (250) 을 더 포함한다. 할당 모듈 (250) 은 제 1 계산 (180) 및 제 2 계산 (290) 을 수행하도록, 신뢰되지 않는 컴퓨팅 노드들 (130, 140, 150, 160, 170) 중 2 개를 랜덤하게 할당할 수도 있다. 2 개의 신뢰되지 않는 컴퓨팅 노드들, 이 경우에는 신뢰되지 않는 컴퓨팅 노드들 (130, 140) 을 랜덤하게 선택하거나 할당함으로써, 2 개의 신뢰되지 않는 컴퓨팅 노드들이 서로 결탁하거나 또는 다른 컴퓨팅 노드로부터의 하나의 컴퓨팅 노드 스틸링 (steal) 결과들을 갖는 기회들이 감소한다.
예시된 실시형태에서, 신뢰되지 않는 컴퓨팅 노드 (130) 는 할당 모듈 (250) 에 의해 랜덤하게 할당되어 제 1 계산 (280) 을 수행한다. 제 1 계산 (280) 은, 전체 계산이든 또는 더 크고 더 복잡한 계산의 서브세트이든, 도 2 에 예시된 바와 같이 신뢰되지 않는 컴퓨팅 노드 (130) 에 제공될 수도 있다. 그 후, 신뢰되지 않는 컴퓨팅 노드 (130) 는 프로세싱 리소스들 (135) 을 이용하여 적어도 부분적으로 제 1 계산 (280) 을 수행할 수도 있다.
할당 모듈 (250) 은 신뢰되지 않는 컴퓨팅 노드 (140) 를 랜덤하게 할당하여 동등한 제 2 계산 (290) 을 수행하도록 할 수도 있다. 제 2 계산 (290) 은, 도 2 에 예시된 바와 같이, 신뢰되지 않는 컴퓨팅 노드 (140) 에 제공될 수도 있다. 그 후, 신뢰되지 않는 컴퓨팅 노드 (140) 는 프로세싱 리소스들 (145) 을 이용하여 적어도 부분적으로 제 2 계산 (290) 을 수행할 수도 있다.
추가적인 안전대책으로서, 변환 함수 (245) 를 신뢰되지 않는 컴퓨팅 노드들 (130, 140) 로부터 비밀로 유지될 수도 있다. 인지되는 바와 같이, 신뢰되지 않는 컴퓨팅 노드들 중 어느 하나 (130 또는 140) 가 변환 함수 (245) 를 알고 있다면, 그것은, 신뢰되지 않는 컴퓨팅 노드들 (130 또는 145) 중 어느 하나 또는 양측 모두가, 제 1 계산 (280) 및 제 2 계산 (290) 에 대한 솔루션이 어떤 것이어야 하는지를 추측하고자 하는 것을 더 용이하게 할 것이다. 변환 함수 (245) 를 비밀로 유지함으로써, 신뢰되지 않는 컴퓨팅 노드들 (130 또는 140) 에 의해 유효한 결과들이 리턴될 수도 있는 기회들이 감소한다.
제 1 계산 (280) 이 전술된 바와 같이 다수의 제 1 계산 콤포넌트들 (280a, 280b, 280c) 로 분할되는 그들 실시형태들에서, 할당 모듈 (250) 은 신뢰되지 않는 제 1 계산 콤포넌트들 (280a, 280b, 280c) 중 컴퓨팅 노드 (130) 와 같은 랜덤하게 선택된 신뢰되지 않는 컴퓨팅 노드에 할당할 콤포넌트를 랜덤하게 선택할 수도 있다. 마찬가지로, 변환 함수 (245) 가 다수의 변환 함수 콤포넌트들 (245a, 245b, 245c) 을 갖는 변환 공간인 그들 실시형태들에서, 할당 모듈 (250) 또는 변환 함수 모듈 (240) 은 변환 함수 콤포넌트들 (245a, 245b, 245c) 중 동등한 제 2 계산 (290) 을 생성하는 데 이용되는 하나의 콤포넌트를 랜덤하게 선택할 수도 있다. 제 1 계산 서브세트 (280a, 280b 또는 280c) 및 변환 함수 서브세트 (245a, 245b, 245c) 의 랜덤한 선택은, 이 실례에서, 신뢰되지 않는 컴퓨팅 노드들 (130 또는 140) 에 의한 결탁에 대비한 추가 보안성을 제공한다.
수신 모듈 (260) 은, 이 실례에서, 신뢰되지 않는 컴퓨팅 노드 (130) 로부터 제 1 계산 (280) 에 대한 제 1 결과 (285) 를 수신할 수도 있고, 또한 신뢰되지 않는 컴퓨팅 노드 (140) 로부터 제 2 계산 (290) 에 대한 제 2 결과 (295) 를 수신할 수도 있다.
전술된 바와 같이, 신뢰되지 않는 컴퓨팅 노드들 (130, 140)(뿐만 아니라 신뢰되지 않는 컴퓨팅 노드들 (150, 160, 170)) 은 신뢰되지 않는데, 이는 그들이 중앙 컴퓨팅 시스템 (110) 에 의해 제어되지 않기 때문이다. 따라서, 중앙 컴퓨팅 시스템 (110) 은 신뢰되지 않는 컴퓨팅 노드들 (130, 140) 에 의해 리턴된 결과들이 유효한지를 알지 못한다. 무효한 결과들을 리턴함으로써 위조 결과들에 대비하거나 또는 다른 신뢰되지 않는 컴퓨팅 노드에 의해 수행된 작업을 복제함으로써 프리로딩에 대비하기 위해, 중앙 컴퓨팅 시스템 (110) 은 분석 모듈 (270) 을 포함한다. 분석 모듈 (270) 은 제 1 결과 (285) 및 제 2 결과 (295) 를 분석하여 신뢰되지 않는 컴퓨팅 노드들 (130, 140) 에 의해 수행된 작업을 검증할 수도 있다.
일 예시적인 실시형태에서, 분석 모듈 (270) 은 제 2 결과 (295) 로부터 변환 함수 (245) 를 제거함으로써 제 1 결과 (285) 및 제 2 결과 (295) 를 분석할 수도 있다. 그 후, 분석 모듈 (270) 은 제 1 결과 (285) 및 제 2 결과 (295) 를 서로 비교할 수도 있다. 선형 변환의 실례와 관련하여 전술된 바와 같이, 제 2 결과 (295) 로부터 변환 함수 (245) 를 제거하는 것은, 제 1 계산 (280) 및 제 2 계산 (290) 이 적절히 수행되었고 유효한 결과들이 신뢰되지 않는 컴퓨팅 노드들 (130, 140) 에 의해 제공되었을 때, 제 2 결과 (295) 로 하여금, 실질적으로 제 1 결과 (285) 와 동일하게 되도록 한다. 따라서, 제 1 결과 (285) 및 제 2 결과 (295) 가 서로 매칭한다면, 신뢰되지 않는 컴퓨팅 노드들 (130, 140) 이 유효한 결과들을 제공했을 가능성이 있다. 양측의 신뢰되지 않는 노드들 (130, 140) 모두가 무효의 동등한 결과들을 제공하도록 하는 방식으로 결탁하거나 또는 하나의 신뢰되지 않는 노드가 다른 신뢰되지 않는 노드의 결과들과 매칭하는 사기성 결과들을 제공하도록 하는 방식으로, 결탁할 가능성은 그리 높지 않다.
한편, 분석 모듈 (270) 이 비교 후에 제 1 결과 (285) 와 제 2 결과 (295) 사이의 차이를 발견하는 경우, 신뢰되지 않는 컴퓨팅 노드들 (130, 140) 중 적어도 하나 및 가능하게는 신뢰되지 않는 컴퓨팅 노드들 (130, 140) 양측 모두가 무효한 결과를 제공했다는 것이 암시될 수도 있다. 그 후, 이들 결과들은 중앙 컴퓨팅 시스템 (110) 에 의해 의심스럽게 보일 수도 있다.
일 예시적인 실시형태에서, 제 1 결과 (285) 및/또는 제 2 결과 (295) 는 일련의 중간 결과들을 포함할 수도 있다. 예를 들어, 제 1 결과 (285) 는 일련의 제 1 중간 결과들 (285a, 285b) 및 잠재적으로 도 2 에서 생략 기호들로 예시된 바와 같은 임의의 수의 추가적인 중간 결과들 (285c) 을 포함할 수도 있다. 유사하게, 제 2 결과 (295) 는 일련의 제 2 중간 결과들 (295a, 295b) 및 잠재적으로 도 2 에서 생략 기호들로 예시된 바와 같은 임의의 수의 추가적인 중간 결과들 (295c) 을 포함할 수도 있다. 이러한 실시형태들에서, 제 1 계산 (280) 및/또는 제 2 계산 (290) 은, 전체 제 1 결과 (285) 및 제 2 결과 (295) 가 결정되어 중앙 컴퓨팅 시스템 (110) 에 리턴되기 전에, 중간 결과들이 결정되어 중앙 컴퓨팅 시스템 (110) 에 리턴되도록 변경될 수도 있다.
분석 모듈 (270) 은, 예를 들어 제 1 중간 결과들 (285a, 285b, 285c) 및 제 2 중간 결과들 (295a, 295b, 295c) 을 비교하여 신뢰되지 않는 컴퓨팅 노드들 (130, 140) 이 무효한 결과들을 제공했는지를 결정함으로써, 제 1 중간 결과들 (285a, 285b, 285c) 및 제 2 중간 결과들 (295a, 295b, 295c) 을 분석할 수도 있다. 제 1 중간 결과들 (285a, 285b, 285c) 이 제 2 중간 결과들 (295a, 295b, 295c) 과 매칭하면, 그것은 유효할 가능성이 있다. 제 1 중간 결과들 (285a, 285b, 285c) 이 제 2 중간 결과들 (295a, 295b, 295c) 과 매칭하지 않으면, 그것은 무효할 가능성이 있다. 중간 결과들의 이용은 사기 및 결탁에 대한 추가 보호를 제공하는데, 이는, 그것이 신뢰되지 않는 컴퓨팅 노드들 (130, 140) 양측 모두가 동등한 무효 중간 결과들을 제공하도록 하는 방식으로 결탁하거나 또는 하나의 신뢰되지 않는 노드가 다른 신뢰되지 않는 노드의 중간 결과들을 매칭한 사기성 중간 결과들을 제공하도록 하는 것이 쉽지 않기 때문이다.
일 예시적인 실시형태에서, 변환 함수 (245) 의 역은 제 2 중간 결과들 (295a, 295b, 295c) 의 각각에 적용될 수도 있다. 이러한 적용은 제 2 중간 결과들 (295a, 295b, 295c) 로 하여금 대응하는 제 1 중간 결과들 (285a, 285b, 285c) 과 동등하게 되도록 할 것이다. 이러한 실시형태들에서, 변환 함수 (245) 를 단일 기능일 필요는 없다는 것에 주목한다. 예를 들어, 변환 함수 (245) 를, 제 2 계산 (290) 을 생성하는 제 1 계산 (280), 제 2 중간 결과들 (295a, 295b, 295c), 및 제 2 결과 (295) 에 각각 적용되는 다중 전단사 (bijection) 들일 수 있다.
설명된 바와 같이, 분석 모듈 (270) 은 제 1 계산 (280) 에 대한 제 1 결과 (285) 및 제 2 계산 (290) 에 대한 제 2 결과 (295) 를 분석하여 그들이 유효할 가능성이 있는지를 결정한다. 그러나, 분석 모듈 (270) 에 의해 수행된 분석이 개개의 신뢰되지 않는 컴퓨팅 노드의 신뢰성을 결정하지 않을 수도 있다는 것이 가능하다. 예를 들어, 신뢰되지 않는 컴퓨팅 노드 (130) 로부터의 제 1 결과 (285) 가 신뢰되지 않는 컴퓨팅 노드 (140) 로부터의 제 2 결과 (295) 와 매칭하지 않는 경우, 그것이 신뢰되지 않는 컴퓨팅 노드 (130) 가 부정직하게도 사기성 결과들을 제공했음을 반드시 의미하는 것은 아니다. 신뢰되지 않는 컴퓨팅 노드 (140) 가 사기성 결과들을 제공했거나 또는 신뢰되지 않는 컴퓨팅 노드 (130) 가 제 1 계산 (280) 을 수행할 때 진짜 실수가 있었다는 것이 가능하다.
이 실례에서, 신뢰되지 않는 컴퓨팅 노드들 (130 또는 140) 중 사기성 또는 무효한 결과들을 제공했을 수도 있는 노드를 결정하는 것을 돕기 위해, 제 1 결과 (285) 및 제 2 결과 (295) 가 데이터베이스 (220) 에 제공되어, 이력 (225) 에 포함된다. 전술된 바와 같이, 이력 (225) 은 신뢰되지 않는 컴퓨팅 노드 (130) 및 신뢰되지 않는 컴퓨팅 노드 (140) 에 의해 제공된 이전 계산들로부터의 총 이력 결과들을 포함할 수도 있다.
분석 모듈 (270) 은 이력 (225) 에 액세스하여 신뢰되지 않는 컴퓨팅 노드 (130) 및 신뢰되지 않는 컴퓨팅 노드 (140) 의 신뢰성을 결정하도록 할 수도 있다. 신뢰되지 않는 컴퓨팅 노드 (130) 가, 일치하는 결과들을 갖는 신뢰되지 않는 컴퓨팅 노드들의 쌍들에 있는 이력을 갖는다면, 현재의 불일치는 신뢰되지 않는 컴퓨팅 노드 (140) 에 의해 야기되거나 또는 진짜 실수라는 것이 추정될 수 있다. 한편, 신뢰되지 않는 컴퓨팅 노드 (130) 가, 불일치하는 결과들을 갖는 신뢰되지 않는 컴퓨팅 노드들의 많은 쌍들에 있는 이력을 갖는다면, 신뢰되지 않는 컴퓨팅 노드 (130) 는 의심스럽게 보일 수도 있고, 그의 결과는 무시될 수도 있다. 신뢰되지 않는 컴퓨팅 노드 (140) 및 사실상 임의의 신뢰되지 않는 컴퓨팅 노드에 의해 제공된 결과들에 대해 유사한 분석이 수행될 수도 있다. 따라서, 이력 (225) 의 이용은 신뢰되지 않는 컴퓨팅 노드의 이력 수행에 기초하여 특정한 신뢰되지 않는 컴퓨팅 노드가 신뢰될 것인지를 검증하도록 하는 추가적인 점검을 제공한다. 인지되는 바와 같이, 신뢰되지 않는 컴퓨팅 노드는, 이력 (225) 에서 그것의 저장된 결과들 중 대부분이 유효하면 신뢰성 있을 가능성이 있고, 이력 (225) 에서 그것의 저장된 결과들 중 대부분 또는 심지어 상당한 비율이 무효하면 신뢰성 있을 가능성이 적다.
일부 실시형태들에서, 제 1 계산 (280) 및/또는 제 2 계산 (290) 은 또한 암호화, 디지털 서명, 또는 난독화 (obfuscation) 와 같은 다양한 기술들로 증대될 수도 있다. 이들 기술들은 신뢰되지 않는 컴퓨팅 노드들에 의한 템퍼링 (tampering) 에 대해 추가적인 배리어를 제공하도록 포함될 수도 있다.
중앙 컴퓨팅 시스템 (110) 이 변환 함수 (245) 를 비밀로 유지했다 하더라도, 신뢰되지 않는 컴퓨팅 노드 (130) 가 변환 함수 (245) 를 습득하거나 추측하는 것이 가능할 수도 있다. 이러한 경우들에 있어서, 신뢰되지 않는 컴퓨팅 노드 (130) 는 무효한 제 1 결과 (285) 를 악의적으로 제공할 수 있도록 할 수도 있고, 또는 제 2 결과 (295) 를 더 용이하게 복제하여 이 결과를 자신의 결과로서 전달할 수 있도록 할 수도 있다.
대안으로, 제 1 계산 (280) 은 신뢰되지 않는 컴퓨팅 노드 (130) 가 시간의 50% 이상에서 정확한 응답을 추측하게 하는 타입의 것일 수도 있다. 이러한 경우들에 있어서, 신뢰되지 않는 컴퓨팅 노드 (130) 는 제 1 계산 (280) 을 수행하기를 중단할 수도 있고, 큰 정정 기회 때문에 매 시간마다 결과를 간단히 추측할 수도 있다.
이러한 상황들을 검출하는 것을 돕기 위해, 분석 모듈 (270) 은 확률 모듈 (275) 을 포함할 수도 있다. 확률 모듈은 하나 이상의 확률 기능들을 제 1 결과 (285) 및 제 2 결과 (295) 에 적용하여 이들 결과들이 유효한지와 신뢰되지 않는 컴퓨팅 노드들 (130, 140, 150, 160, 170) 이 신뢰성 있는지를 결정하도록 할 수도 있다. 따라서, 제 1 결과 (285) 및 제 2 결과 (295) 가 적절히 결정되었고 아직은 정확히 추측되거나 스틸링되지 않았을 확률을 결정하는 것은, 중앙 컴퓨팅 시스템 (110) 이 신뢰되지 않는 컴퓨팅 노드들 (130, 140, 150, 160, 170) 의 신뢰성을 검증하게 하는 추가적인 방식을 제공한다. 일부 확률 기능들의 실례들이 이제 설명될 것이다.
일부 다량의 태스크 (예컨대, 제 1 계산 (280)) 가 많은 x 들에 대해 f(x) 의 계산을 요구한다는 것을 가정한다. f : X → Y 라 하자. x 가 균일하게 분포된 랜덤 변수로서 고려되는 경우, 정확한 값을 추측하는 것이 타탕하도록 하기에 f(x) 의 확률 분포가 너무 좁으면, f 는 결과 y 에 더하여 특정 중간 상태 s 를 출력하도록 변경된다. 그러면, f (x) = (s, r) 이 된다. y1 = (s, r) 를 갖는 공지되지 않은 참 (ture) 결과에 주목한다.
ε을 노드들이 소유한 백그라운드 정보라고 하자. 노드가 작업을 수행하지 않을 확률을 P (E(n)) 로 표기한다. E((n)) 의 경우, 노드 n 은 작업을 위조하려고 시도하고 있다. 이 경우, 노드는 추측하고 있는 것으로 나타내진다. 올바른 응답을 추측할 확률을 P (y= y1ε) 로 표기한다.
f(x) 의 작업 요청은 일부 계산 노드 n 에 제공된다. 동시에, 다른 작업 요청 f(x') 이 생성된다. f (x') = (s', r') 로 나타내진다. x' 을 선택하기 위해, 먼저 x' = g(x) 의 필요충분조건에서 g(s) = s' 및 g(r) = r' 이도록 하는 변환 함수 g : X → X 를 찾는다. 작업 요청 f(x') 은 다른 노드 n2 에 제공되고, 변환 g ∈ G 이 비밀로서 유지된다.
Figure 112012104313010-pct00001
를 노드 ni 가 비밀 변환 g 를 습득하거나 추측할 확률이라고 하자. g 가 큰 공간으로부터 선택되면, 그리고 그 비밀이 엄격히 유지되면,
Figure 112012104313010-pct00002
는 작을 것이다.
그 후, 양측 노드들은 그들의 할당된 태스크들을 수행할 것을 주장하고, 그들은 결과들 y = (s, r) 및 y1 = (s', r') 을 리포트한다. 하기의 표 1 은 가능한 노드들에 대한 상이한 결과들의 다양한 확률들을 도시한다. 다시 말해, 다양한 환경들에 대해 y = y1 어떠한가.
[표 1]
Figure 112012104313010-pct00003
따라서, y 가 y1 와 동일하지 않을 확률은 다음과 같다:
Figure 112012104313010-pct00004
.
도 3 은 신뢰되지 않는 컴퓨팅 노드들에 의해 수행되는 작업을 검증하는 방법 (300) 의 예시적인 실시형태의 흐름도이다. 예시된 실시형태에서, 방법 (300) 과, 여기에서 설명되는 다른 방법들 및 프로세스들은, 하드웨어, 소프트웨어, 및/또는 펌웨어에 의해 수행될 수도 있는, 프로세싱 단계들, 기능 동작들, 이벤트들 및/또는 행동들 등으로서 설명될 수도 있는 다양한 기능 블록들 또는 작용들을 설명한다. 방법 (300) 은 블록들 (302, 304, 306, 308, 310, 및/또는 312) 에 의해 예시된 바와 같은 하나 이상의 동작들을 포함한다. 블록 (302) 에서, 적어도 부분적으로 제 1 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 제 1 계산이 결정된다. 예를 들어, 일 예시적인 실시형태에서, 계산 생성 모듈 (230) 은 적어도 부분적으로 신뢰되지 않는 컴퓨팅 노드 (130) 와 같은 제 1 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 제 1 계산 (280) 을 생성할 수도 있다. 일부 실시형태들에서, 제 1 계산 (280) 은 제 1 계산 콤포넌트들 (280a, 280b, 280c) 로 분할될 수도 있다.
블록 (304) 에서, 제 1 계산에 적용되어 적어도 부분적으로 제 2 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 동등한 제 2 계산을 생성하도록 하는 변환 함수가 결정된다. 예를 들어, 일 예시적인 실시형태에서, 변환 함수 모듈 (240) 은 제 1 계산 (280) 의 타입에 기초하여 변환 함수 (245) 를 생성할 수도 있다. 다른 예시적인 실시형태에서, 변환 함수 모듈은 컴퓨팅 시스템 (110) 의 사용자로부터 또는 다른 컴퓨팅 시스템으로부터 변환 함수를 획득할 수도 있다. 변환 함수 (245) 를 제 1 계산 (280) 에 적용되어 신뢰되지 않는 컴퓨팅 노드 (140) 와 같은 제 2 신뢰되지 않는 컴퓨팅 노드에 의해 수행될 수도 있는 제 2 계산 (290) 을 생성하도록 할 수도 있다. 일부 실시형태들에서, 변환 함수 (245) 를 다수의 변환 함수 콤포넌트들 (245a, 245b, 245c) 을 포함하는 변환 공간일 수도 있다.
블록 (306) 에서, 제 1 계산은 제 1 신뢰되지 않는 컴퓨팅 노드에 할당되고, 블록 (308) 에서, 제 2 계산은 제 2 신뢰되지 않는 컴퓨팅 노드에 할당된다. 제 1 신뢰되지 않는 컴퓨팅 노드 및 제 2 신뢰되지 않는 컴퓨팅 노드로의 제 1 계산 및 제 2 계산의 할당은 각각 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들로부터 변환 함수를 비밀로 유지하는 중에 이루어진다. 예를 들어, 일 예시적인 실시형태에서, 할당 모듈 (250) 은 제 1 계산 (280) 을 신뢰되지 않는 컴퓨팅 노드 (130) 에 할당할 수도 있고, 제 2 계산 (290) 을 신뢰되지 않는 컴퓨팅 노드 (140) 에 할당할 수도 있다.
블록 (310) 에서, 제 1 계산에 대한 제 1 결과는 제 1 신뢰되지 않는 컴퓨팅 노드로부터 수신되고, 제 2 계산에 대한 제 2 결과는 제 2 신뢰되지 않는 컴퓨팅 노드로부터 수신된다. 예를 들어, 일 예시적인 실시형태에서, 수신 모듈 (260) 은 신뢰되지 않는 컴퓨팅 노드 (130) 로부터 제 1 결과 (285) 를 수신할 수도 있고, 신뢰되지 않는 컴퓨팅 노드 (140) 로부터 제 2 결과 (295) 를 수신할 수도 있다. 일부 실시형태들에서, 제 1 결과 (285) 는 제 1 중간 결과들 (285a, 285b, 285c) 을 포함할 수도 있다. 제 2 결과 (295) 는 제 2 중간 결과들 (295a, 295b, 295c) 을 포함할 수도 있다.
블록 (312) 에서, 제 1 및 제 2 결과들은 신뢰되지 않는 컴퓨팅 노드들에 의해 수행되는 작업을 검증하기 위해 분석된다. 일 예시적인 실시형태에서, 분석 모듈 (270) 은 제 1 결과 (285) 및 제 2 결과 (295) 를 분석하여 신뢰되지 않는 컴퓨팅 노드 (130) 및 신뢰되지 않는 컴퓨팅 노드 (140) 에 의해 수행되는 작업을 검증하도록 할 수도 있다. 이 방식으로, 신뢰되지 않는 컴퓨팅 노드 (130) 및 신뢰되지 않는 컴퓨팅 노드 (140) 의 신뢰성이 결정될 수도 있다.
일부 실시형태들에서, 분석 모듈 (270) 은 제 2 결과 (295) 로부터 변환 함수 (245) 를 제거하고, 그 후에 제 2 결과 (295) 를 제 1 결과 (285) 와 비교한다. 결과들이 실질적으로 동일하다면, 신뢰되지 않는 컴퓨팅 노드 (130) 및 신뢰되지 않는 컴퓨팅 노드 (140) 는 유효한 결과들을 제공했을 가능성이 있다. 그러나, 결과들이 상이하다면, 신뢰되지 않는 컴퓨팅 노드 (130) 및 신뢰되지 않는 컴퓨팅 노드 (140) 중 하나 또는 양측 모두가 무효한 결과들을 제공했을 가능성이 있다.
이력 데이터베이스는 또한 신뢰되지 않는 컴퓨팅 노드 (130) 및 신뢰되지 않는 컴퓨팅 노드 (140) 의 이력 수행이 전술된 바와 같이 결정될 수도 있도록 액세스될 수도 있다. 또한, 하나 이상의 확률 기능들이 그 결과들에 적용되어 신뢰되지 않는 컴퓨팅 노드 (130) 및 신뢰되지 않는 컴퓨팅 노드 (140) 의 신뢰성을 결정하는 데 도움이 되도록 적용될 수도 있다.
방법 (300) 은 신뢰되지 않는 컴퓨팅 노드 (130) 및 신뢰되지 않는 컴퓨팅 노드 (140) 가 결과를 추측하거나 무효한 결과들을 제공하는 것과 같이 사기로 체결되었는지를 결정하도록 하는 메커니즘을 중앙 컴퓨팅 시스템 (110) 에 제공한다. 또한, 방법 (300) 은 중앙 컴퓨팅 시스템 (110) 이 신뢰되지 않는 컴퓨팅 노드 (130) 와 신뢰되지 않는 컴퓨팅 노드 (140) 사이의 결탁을 결정하여 무효한 결과들을 제공하게 한다.
당업자는, 이를 위해, 그리고 여기에서 개시되는 다른 프로세스들 및 방법들을 위해, 프로세스들 및 방법들에서 수행되는 기능들이 상이한 순서로 구현될 수도 있음을 인지할 것이다. 또한, 약술된 단계들 및 동작들은 오로지 실례로서만 제공되며, 단계들 및 동작들의 일부는 선택적이거나, 더 적은 단계들 및 동작들로 결합되거나, 또는 개시된 실시형태들의 본질로부터 벗어나는 일 없이 추가의 단계들 및 동작들로 확장될 수도 있다.
도 4 는 신뢰되지 않는 컴퓨팅 노드들에 의해 수행되는 작업을 검증하기 위한 대안의 방법 (400) 의 예시적인 실시형태의 흐름도이다. 방법 (400) 은 블록들 (402, 404, 406, 408, 410, 412, 414, 416 및/또는 418) 에 의해 예시된 바와 같은 하나 이상의 동작들을 포함한다. 블록 (402) 에서, 제 1 계산, 및 변환 함수 콤포넌트들을 포함하는 변환 공간이 선택된다. 예를 들어, 제 1 계산 (280) 은 계산 생성 모듈 (230) 에 의해 선택될 수도 있다. 변환 함수 콤포넌트들 (245a, 245b, 245c) 을 포함하는 변환 함수 (245) 를 제 1 계산 (280) 에 기초하여 변환 함수 모듈 (240) 에 의해 선택될 수도 있다.
블록 (404) 에서, 제 1 계산은 콤포넌트들로 분할된다. 예를 들어, 제 1 계산 (280) 은 계산 생성 모듈 (230) 에 의해 제 1 계산 콤포넌트들 (280a, 280b, 280c) 로 분할될 수도 있다.
블록 (406) 에서, 변환 함수 콤포넌트들 중 하나는 제 1 계산 콤포넌트들 중 하나에 적용하도록 랜덤하게 선택된다. 이것은, 이어서, 제 2 계산을 생성한다. 예를 들어, 제 1 변환 함수 서브세트 (245a) 가 랜덤하게 선택될 수도 있고, 랜덤하게 선택된 제 1 계산 서브세트 (280a) 에 적용될 수도 있다. 이것은 제 2 계산 (290) 을 생성할 수도 있다.
블록 (408) 에서, 신뢰되지 않는 컴퓨팅 노드들의 쌍이 제 1 계산 서브세트 및 제 2 계산을 수행하도록 랜덤하게 선택된다. 예를 들어, 할당 모듈 (250) 은, 제 1 계산 서브세트 (280a) 를 수행하도록 하는 신뢰되지 않는 컴퓨팅 노드 (130) 및 제 2 계산 (290) 을 수행하도록 하는 신뢰되지 않는 컴퓨팅 노드 (140) 를 랜덤하게 선택할 수도 있다.
블록 (410) 에서, 제 1 계산 서브세트는 제 1 신뢰되지 않는 컴퓨팅 노드에 할당되고, 제 2 계산은 랜덤하게 선택된 변환 함수 서브세트를 비밀로 유지하면서 제 2 신뢰되지 않는 컴퓨팅 노드에 할당된다. 예를 들어, 할당 모듈 (250) 은 제 1 계산 서브세트 (280a) 를 신뢰되지 않는 컴퓨팅 노드 (130) 에 할당할 수도 있고, 제 2 계산 (290) 을 신뢰되지 않는 컴퓨팅 노드 (140) 에 할당할 수도 있다. 변환 함수 서브세트 (245a) 는 신뢰되지 않는 컴퓨팅 노드들로부터 비밀로 유지된다.
블록 (412) 에서, 제 1 결과는 제 1 신뢰되지 않는 컴퓨팅 노드로부터 수신되고, 제 2 결과는 제 2 신뢰되지 않는 컴퓨팅 노드로부터 수신된다. 예를 들어, 수신 모듈 (260) 은 신뢰되지 않는 컴퓨팅 노드 (130) 로부터 제 1 결과 (285) 를 수신할 수도 있고, 신뢰되지 않는 컴퓨팅 노드 (140) 로부터 제 2 결과 (295) 를 수신할 수도 있다.
블록 (414) 에서, 제 1 및 제 2 결과들이 분석된다. 예를 들어, 분석 모듈 (270) 은 전술된 방식들 중 임의의 것으로 제 1 결과 (285) 및 제 2 결과 (295) 를 분석할 수도 있다.
블록 (416) 에서, 제 1 및 제 2 결과들이 데이터베이스에 기록된다. 예를 들어, 제 1 결과 (285) 및 제 2 결과 (295) 는 전술된 바와 같이 데이터베이스 (220) 에 기록될 수도 있다. 결과들은 이력 (225) 에 추가될 수도 있으며, 신뢰되지 않는 컴퓨팅 노드들의 신뢰성을 결정하는 것을 돕는 데 이용될 수도 있다.
결정 블록 (418) 에서, 결과들이 유효했는지가 결정된다. 이 결정은 전술된 바와 같이 결과들의 비교, 이력 분석을 이용하여 그리고 확률 기능들을 적용하여 이루어질 수도 있다.
결과들이 유효할 가능성이 있는 것으로 결정되면 (결정 블록 (418) 에서, 예), 방법은 수행할 어떤 다른 계산도 존재하지 않는 경우에 종료될 수도 있다. 대안으로, 수행할 다른 계산들이 있다면, 방법은 블록 (402) 로 되돌아가고 방법이 반복된다.
결과들이 유효할 가능성이 있지 않은 것으로 결정되면 (결정 블록 (418) 에서, 아니오), 방법은 블록 (406) 으로 되돌아갈 수도 있으며, 여기서 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들과는 상이한 새로운 2 개의 신뢰되지 않는 컴퓨팅 노드들이 랜덤하게 선택될 수도 있다. 그 후, 방법 (400) 의 나머지 블록들은 새롭게 선택된 신뢰되지 않는 컴퓨팅 노드들이 유효한 결과들을 제공하는지를 결정하도록 수행될 수도 있다. 예를 들어, 블록 (406) 으로 되돌아간 후, 할당 모듈 (250) 은 신뢰되지 않는 컴퓨팅 노드 (150) 를 랜덤하게 선택하여 제 1 계산 서브세트 (280a) 를 수행하도록 할 수도 있고, 신뢰되지 않는 컴퓨팅 노드 (160) 를 랜덤하게 선택하여 제 2 계산 (290) 을 수행하도록 할 수도 있다. 그 후, 방법 (400) 의 나머지 블록들이 수행될 수도 있다.
본 개시물은 여러 양태들의 예시들로서 의도되는 이 출원에서 설명된 특정한 실시형태들의 관점에 한정되는 것이 아니다. 당해 기술 분야의 숙련된 자들에 자명하듯이 다수의 변경들 및 변형들이 그 사상 및 범위를 일탈함이 없이 이루어질 수 있다. 본 개시물의 범위 내에서 기능적으로 동등한 방법들 및 장치들은, 여기서 열거된 것들 외에도, 상술한 설명들로부터 당해 기술 분야의 숙련된 자들에게 자명할 것이다. 그러한 변경들 및 변형들은 첨부된 청구항들의 범위 내에 해당되는 것으로 의도된다. 본 개시물은 그러한 청구항들이 부여하는 균등물들의 완전한 범위와 함께 첨부된 청구항의 관점에 의해서만 제한될 것이다. 이 개시물은 물론 변할 수도 있는 특정한 방법들, 시약들, 화합물 구성들 또는 생물학적 시스템들에 한정되는 것은 아니라는 것이 이해되어야 한다. 여기서 사용되는 기술들은 단지 특정한 실시형태들을 설명하는 목적이고, 제한하는 것으로 의도되지 않는다는 것이 또한 이해되어야 한다.
예시적인 실시형태에서, 여기서 개시된 임의의 동작, 프로세스들 등이 컴퓨터 판독가능 매체 상에 저장된 컴퓨터 판독가능 명령들로서 구현될 수 있다. 컴퓨터 판독가능 명령은 모바일 유닛, 네트워크 소자, 및/또는 임의의 다른 컴퓨팅 디바이스의 프로세서에 의해 실행될 수 있다.
시스템들의 양태들의 하드웨어 및 소프트웨어 구현물들 사이에는 남아있는 약간의 차이들이 있는데, 하드웨어 또는 소프트웨어의 사용은 대체로 (하지만 항상 그렇지는 않은, 어떤 특정 상황들에서 하드웨어와 소프트웨어 사이의 선정은 종요해질 수도 있다는 점에서) 디자인 선정 표현 비용 대 효율 트레이드오프이다. 본 개시물에서 설명되는 프로세스들 및/또는 시스템들 및/또는 다른 기술들이 실시될 수 있는 갖가지 비히클들 (예를 들어, 하드웨어, 소프트웨어, 및/또는 펌웨어) 이 존재하고, 이 프로세스들 및/또는 시스템들 및/또는 다른 기술들이 배치되는 상황에 따라 바람직한 비히클들이 가변할 것이다. 예를 들어, 구현자 (implementer) 가 속도 및 정확도가 다른 무엇보다 중요하다고 결정하면, 구현자는 주로 하드웨어 및/또는 펌웨어 비히클을 택할 수도 있으며; 유연성이 무엇보다도 중요하다면, 구현자는 주로 소프트웨어 구현물을 택할 수도 있으며; 또는, 또 다른 대안으로서, 구현자는 하드웨어, 소프트웨어, 및/또는 펌웨어의 일부 조합을 택할 수도 있다.
전술한 상세한 설명은 블록도들, 흐름도들, 및/또는 예들의 사용을 통해 디바이스들 및/또는 프로세스들의 갖가지 실시예들을 언급하고 있다. 이러한 블록도들, 흐름도들, 및/또는 예들이 하나 이상의 기능들 및/또는 동작들을 포함하고 있는 한, 이러한 블록도들, 흐름도들, 또는 예들 내의 각각의 기능 및/또는 동작이 다앙한 범위의 하드웨어, 소프트웨어, 펌웨어, 또는 그것들의 가상적인 임의의 조합에 의해 개별적으로 및/또는 집합적으로 구현될 수도 있다는 것이, 당해 기술 분야의 숙련된 자에 의해 이해될 것이다. 일 실시형태에서, 본 개시물에서 설명되는 청구물의 여러 부분들이 주문형 집적회로들 (ASIC들), 필드 프로그램가능 게이트 어레이들 (FPGA들), 디지털 신호 프로세서들 (DSP들), 또는 다른 집적형 포맷들을 통해 구현될 수도 있다. 그러나, 당해 기술 분야의 숙련된 자는, 본 개시물에 개시된 실시예들의 일부 양태들이, 전체로 또는 부분적으로, 하나 이상의 컴퓨터들 상에서 실행중인 하나 이상의 컴퓨터 프로그램들로서 (예컨대, 하나 이상의 컴퓨터 시스템들 상에서 실행중인 하나 이상의 프로그램들로서), 하나 이상의 프로세서들 상에서 실행중인 하나 이상의 프로그램들로서 (예컨대 하나 이상의 마이크로프로세서들 상에서 실행중인 하나 이상의 프로그램들로서), 펌웨어로서, 또는 그것들의 가상의 임의의 조합으로서, 집적회로들에서 동등하게 구현될 수도 있다는 것과, 회로를 설계하는 것 및/또는 소프트웨어 및 또는 펌웨어를 위한 코드를 작성하는 것이 본 개시물에 비추어 당해 기술 분야의 숙련된 자의 기술 내에서 잘 이루어질 것이라는 것을 인정할 것이다. 덧붙여서, 당해 기술 분야의 숙련된 자는, 본 개시물에서 설명되는 청구물의 메커니즘들이 프로그램 제품으로서 다양한 형태로 배포될 수 있다는 것과, 본 개시물에서 설명되는 청구물의 예시적인 실시예들이 실질적으로 배포를 실행하는데 사용되는 신호 베어링 매체의 특정한 유형에 무관하게 적용될 수 있다는 것이 이해할 것이다. 신호 베어링 매체의 예들은, 플로피 디스크, 하드 디스크 드라이브, CD, DVD, 디지털 테이프, 컴퓨터 메모리 등과 같은 기록가능형 매체; 및 디지털 및/또는 아날로그 통신 매체 (예컨대, 광섬유 케이블, 도파관, 유선 통신 링크, 무선 통신 링크 등) 와 같은 전송형 매체를 포함하지만 이것들로 한정되지는 않는다.
당해 기술 분야의 숙련된 자는, 디바이스들 및/또는 프로세스들을 본 개시물에 언급된 형태로 설명하는 것과 그 후에 엔지니어링 관행들을 이용하여 이렇게 설명된 디바이스들 및/또는 프로세스들을 데이터 처리 시스템들에 통합하는 것이 이 기술분야 내에서 일반적이라는 것을 인정할 것이다. 다시 말하면, 본 개시물에서 설명되는 디바이스들 및/또는 프로세스들의 적어도 일 부분은 합리적인 양의 실험을 통해 데이터 처리 시스템에 통합될 수도 있다. 당해 기술 분야의 숙련된 자는, 전형적인 데이터 처리 시스템이 일반적으로, 시스템 유닛 하우징, 비디오 디스플레이 디바이스, 휘발성 및 비휘발성 메모리와 같은 메모리, 마이크로프로세서들 및 디지털 신호 프로세서들과 같은 프로세서들, 운영체제들, 드라이버들, 그래픽 사용자 인터페이스들, 및 애플리케이션들 프로그램들과 같은 컴퓨터 사용 (computational) 엔티티들, 하나 이상의 상호작용 디바이스들, 이를테면 터치 패드 또는 스크린, 및/또는 피드백 루프들 및 제어 모터들 (예컨대, 위치 및/또는 속도를 감지하기 위한 피드백; 성분들 및/또는 분량들을 이동시키고 및/또는 조절하기 위한 제어 모터들) 을 포함한 제어 시스템들 중 하나 이상을 포함할 것임을 인정할 것이다. 전형적인 데이터 처리 시스템은 임의의 적절한 상업적으로 입수가능한 콤포넌트들, 이를테면 데이터 컴퓨팅/통신 및/또는 네트워크 컴퓨팅/통신 시스템들에서 통상 발견되는 것들을 활용하여 구현될 수도 있다.
본 개시물에서 설명되는 청구물은 때때로 상이한 다른 콤포넌트들 내에 포함되거나 또는 그런 다른 콤포넌트들과 연결되는 상이한 콤포넌트들을 도시한다. 이렇게 묘사된 아키텍처들은 단지 예시적인 것이라는 것과, 실제로 동일한 기능을 달성하는 많은 다른 아키텍처들이 구현될 수도 있다는 것이 이해된다. 개념적인 의미에서, 동일한 기능을 달성하는 콤포넌트들의 임의의 배치는 소망의 기능이 달성되도록 효과적으로 "관련"된다. 따라서, 특정 기능을 달성하기 위해 조합되는 여기서의 임의의 두 개의 콤포넌트들은, 아키텍처들 또는 중간 콤포넌트들에 무관하게, 소망의 기능이 달성되도록 서로"에 관련되는" 것으로 보여질 수도 있다. 마찬가지로, 그렇게 관련되는 임의의 두 개의 콤포넌트들은 또한 소망의 기능을 달성하기 위해 서로에 "동작 가능하게 연결된", 또는 "동작 가능하게 결합된" 것으로 보일 수도 있고, 그렇게 관련될 수 있는 임의의 두 개의 콤포넌트들은 또한 소망의 기능을 달성하기 위해 서로에 "동작 가능하게 결합가능한" 것으로 보일 수도 있다. 동작 가능하게 결합가능한의 구체적인 예들은, 물리적으로 연결가능한 및/또는 물리적으로 상호작용하는 콤포넌트들 및/또는 무선으로 상호작용가능한 및/또는 무선으로 상호작용하는 콤포넌트들 및/또는 논리적으로 상호작용하는 및/또는 논리적으로 상호작용가능한 콤포넌트들을 포함하지만 이것들로 한정되지는 않는다.
도 5 는 본 개시물에 따라 분산형 컴퓨팅 시스템에서 신뢰되지 않는 노드들에 의해 수행되는 작업을 검증하도록 배열된 예시적인 컴퓨팅 디바이스 (500) 를 도시한다. 매우 기본적인 구성 (502) 에서, 컴퓨팅 디바이스 (500) 는 일반적으로 하나 이상의 프로세서들 (504) 및 시스템 메모리 (506) 를 포함한다. 메모리 버스 (508) 는 프로세서 (504) 와 시스템 메모리 (506) 사이에서 통신하는 데 사용될 수도 있다.
바람직한 구성에 의존하여, 프로세서 (504) 는 마이크로프로세서 (μP), 마이크로제어기 (μC), 디지털 신호 프로세서 (DSP), 또는 이들의 임의의 조합을 포함하지만 이들로 국한되지 않는 임의의 타입의 것일 수도 있다. 프로세서 (504) 는 레벨 1 캐시 (510) 및 레벨 2 캐시 (512) 와 같은 하나 이상의 레벨들의 캐싱, 프로세서 코어 (514), 및 레지스터들 (516) 을 포함할 수도 있다. 예시적인 프로세서 코어 (514) 는 연산 로직 유닛 (ALU), 부동 소수점 유닛 (FPU), 디지털 신호 프로세싱 코어 (DSP 코어), 또는 이들의 임의의 조합을 포함할 수도 있다. 예시적인 메모리 제어기 (518) 는 또한 프로세서 (504) 와 함께 사용될 수도 있으며, 또는 일부 구현들에서, 메모리 제어기 (518) 는 프로세서 (504) 의 내부 부품일 수도 있다.
바람직한 구성에 의존하여, 시스템 메모리 (506) 는 휘발성 메모리 (예컨대, RAM), 비휘발성 메모리 (예컨대, ROM, 플래시 메모리 등), 또는 이들의 임의의 조합을 포함하지만 이들로 국한되지 않는 임의의 타입의 것일 수도 있다. 시스템 메모리 (506) 는 운영 시스템 (520), 하나 이상의 애플리케이션들 (522), 및 프로그램 데이터 (524) 를 포함할 수도 있다. 애플리케이션 (522) 은, 도 3 의 방법 (300) 및 도 4 의 방법 (400) 에 대해 설명된 것들을 포함한, 여기에서 설명되는 기능들을 수행하도록 배열된 검증 애플리케이션 (526) 을 포함할 수도 있다. 프로그램 데이터 (524) 는 신뢰되지 않는 컴퓨팅 노드들에 의해 제공된 결과들을 분석하는 데 유용할 수도 있는 분석 정보 (528) 를 포함할 수도 있다. 일부 실시형태들에서, 애플리케이션 (522) 은 운영 시스템 (520) 상의 프로그램 데이터 (524) 와 함께 동작하여 신뢰되지 않는 컴퓨팅 노드들에 의해 수행되는 작업이 여기에서 설명되는 바와 같이 검증될 수 있도록 배열될 수도 있다. 이 설명된 기본 구성 (502) 은 안쪽 파선 내의 그러한 콤포넌트들에 의해 도 5 에 예시된다.
컴퓨팅 디바이스 (500) 는 추가의 특징들 또는 기능을 가질 수도 있고, 기본 구성 (502) 과 임의의 요구되는 디바이스들 및 인터페이스들 사이의 통신을 용이하게 하는 추가 인터페이스들을 가질 수도 있다. 예를 들어, 버스/인터페이스 제어기 (530) 는 기본 구성 (502) 과 하나 이상의 데이터 저장 디바이스들 (532) 사이에서 저장소 인터페이스 버스 (534) 를 통한 통신을 용이하게 하는 데 사용될 수도 있다. 데이터 저장 디바이스들 (532) 은 탈착가능 저장 디바이스들 (536), 탈착불능 저장 디바이스들 (538), 또는 이들의 조합일 수도 있다. 탈착가능 저장 및 탈착불능 저장 디바이스들의 예들은, 몇 가지를 예시하자면, 플렉서블 디스크 드라이브들 및 하드디스크 드라이브들 (HDD) 과 같은 자기 디스크 디바이스들, 콤택트 디스크 (CD) 드라이브들 또는 디지털 범용 디스크 (DVD) 와 같은 광 디스크 드라이브들, 고체 상태 드라이브들 (SSD), 및 테이프 드라이브들을 포함한다. 예시적인 컴퓨터 저장 매체들은 컴퓨터 판독가능 명령들, 데이터 구조들, 프로그램 모듈들, 또는 다른 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현되는, 휘발성 및 비휘발성의 탈착가능 및 탈착불능 매체들을 포함할 수도 있다.
시스템 메모리 (506), 탈착가능 저장 디바이스들 (536) 및 탈착불능 저장 디바이스들 (538) 은 컴퓨터 저장 매체들의 예들이다. 컴퓨터 저장 매체들은 RAM, ROM, EEPROM, 플래시 메모리 또는 다른 메모리 기술, CD-ROM, 디지털 범용 디스크들 (DVD) 또는 다른 광학 저장 장치, 자기 카세트들, 자기 테이프, 자기 디스크 저장 장치 또는 다른 자기 저장 디바이스들, 또는 바람직한 정보를 저장하는 데 사용될 수도 있고 컴퓨팅 디바이스 (500) 에 의해 액세스될 수도 있는 임의의 다른 매체들을 포함하지만, 이들로 국한되지는 않는다. 임의의 이러한 컴퓨터 저장 매체들은 컴퓨팅 디바이스 (500) 의 일부일 수도 있다.
컴퓨팅 디바이스 (500) 는 또한 버스/인터페이스 제어기 (530) 를 통해 다양한 인터페이스 디바이스들 (예컨대, 출력 디바이스들 (542), 주변장치 인터페이스들 (544), 및 통신 디바이스들 (546)) 로부터 기본 구성 (502) 으로의 통신을 용이하게 하기 위한 인터페이스 버스 (540) 를 포함할 수도 있다. 예시적인 출력 디바이스들 (542) 은 그래픽 프로세싱 유닛 (548) 및 오디오 프로세싱 유닛 (550) 을 포함하며, 이들은 하나 이상의 A/V 포트들 (552) 을 통해 디스플레이 또는 스피커들과 같은 다양한 외부 디바이스들과 통신하도록 구성될 수도 있다. 예시적인 주변장치 인터페이스들 (544) 은 직렬 인터페이스 제어기 (554) 또는 병렬 인터페이스 제어기 (556) 를 포함할 수도 있으며, 이들은 하나 이상의 I/O 포트들 (558) 을 통해 입력 디바이스들 (예컨대, 키보드, 마우스, 펜, 음성 입력 디바이스, 터치 입력 디바이스 등) 또는 다른 주변장치 디바이스들 (예컨대, 프린터, 스캐너 등) 과 같은 외부 디바이스들과 통신하도록 구성될 수도 있다. 예시적인 통신 디바이스 (546) 는 네트워크 제어기 (560) 를 포함하며, 이는 하나 이상의 통신 포트들 (564) 을 경유하여 네트워크 통신 링크를 통해 하나 이상의 다른 컴퓨팅 디바이스들 (562) 과의 통신을 용이하게 하도록 배열될 수도 있다.
네트워크 통신 링크는 통신 매체들의 일례일 수도 있다. 통신 매체들은 일반적으로 컴퓨터 판독가능 명령들, 데이터 구조들, 프로그램 모듈들, 또는 반송파나 다른 전송 메커니즘과 같은 변조된 데이터 신호에서의 다른 데이터에 의해 구현될 수도 있고, 임의의 정보 전달 매체들을 포함할 수도 있다. "변조된 데이터 신호"는 신호에서의 정보를 인코딩하도록 하는 방식으로 설정되거나 변화된 그의 특성들 중 하나 이상을 갖는 신호일 수도 있다. 제한이 아닌 예로서, 통신 매체들은 유선 네트워크 또는 직접 유선 접속과 같은 유선 매체들, 및 어쿠스틱, 무선 주파수 (RF), 마이크로파, 적외선 (IR) 및 다른 무선 매체들과 같은 무선 매체들을 포함할 수도 있다. 여기에서 사용되는 컴퓨터 판독가능 매체들이라는 용어는 저장 매체들 및 통신 매체들 양측 모두를 포함할 수도 있다.
컴퓨팅 디바이스 (500) 는 셀 폰, 개인 데이터 보조기 (PDA), 개인 미디어 플레이어 디바이스, 무선 웹-와칭 (web-watch) 디바이스, 개인 헤드셋 디바이스, 애플리케이션 특정 디바이스, 또는 전술한 기능들 중 임의의 것을 포함하는 하이브리드 디바이스와 같은 소형 인수 포터블 (또는 모바일) 전자 디바이스의 일부분으로서 구현될 수도 있다. 컴퓨팅 디바이스 (500) 는 또한 랩톱 컴퓨터 및 비-랩톱 컴퓨터 구성들 양측 모두를 포함한 개인 컴퓨터로서 구현될 수도 있다.
여기에서 실질적으로 임의의 복수 및/또는 단수의 용어들의 사용에 대해, 당업자는, 콘텍스트 및/또는 애플리케이션에 따라 적절히, 복수로부터 단수로 및/또는 단수로부터 복수로 변환할 수 있다. 다양한 단수/복수 치환은 명료성을 위해 여기에서 명시적으로 설명될 수도 있다.
일반적으로, 본 개시물에서, 그리고 특히 첨부의 청구항들 (예컨대, 첨부의 청구항들의 본문들) 에서 사용되는 용어들은 대체로 "개방형" 용어들로서 의도된다 (예컨대, 용어 "포함하는"은 "포함하지만 그것으로 한정되지는 않는" 것으로서 해석되어야 하며, 용어 "가지는"은 "적어도 ~를 가지는" 것으로서 해석되어야 하고, 용어 "포함한다"는 "포함하지만 그것으로 한정되지는 않는다"로 해석되어야 하는 등이다) 는 것이 당해 기술 분야의 숙련된 자에게는 이해될 것이다. 도입 청구항 한정의 특정한 수가 의도된다면, 이러한 의도는 청구항에서 명시적으로 언급될 것이고, 그러한 한정이 없으면 그러한 의도는 없다는 것이 당해 기술 분야의 숙련된 자에게는 추가로 이해될 것이다. 예를 들어, 이해를 돕기 위한 것으로서, 다음의 첨부의 청구항들이 청구항 한정들을 도입하기 위해 도입어구들인 "적어도 하나의" 및 "하나 이상의"의 사용을 포함할 수도 있다. 그러나, 이러한 어구들의 사용은, 부정관사들인 "a" 또는 "an"에 해당한다고 여겨질 국어 표현들에 의한 청구항 한정의 도입이, 동일한 청구항이 도입 어구들인 "하나 이상의" 또는 "적어도 하나의"와 "a" 또는 "an" (예컨대, "a" 및/또는 "an"은 "적어도 하나의" 또는 "하나 이상의"를 의미하는 것으로 의도되어야 한다) 와 같은 부정관사들에 해당한다고 여겨질 국어 표현들을 포함하는 경우에도, 하나의 그러한 한정만을 포함하고 있는 실시예들에 대한 도입 청구항 한정을 포함하고 있는 임의의 특정한 청구항을 한정하는 것이라고 해석되지 않아야 하고; 동일한 것이 청구항 한정들을 도입하는데 사용되는 정관사들의 사용에 대해 참을 유지한다. 덧붙여서, 도입되는 청구항 한정의 구체적인 수가 명시적으로 언급되는 경우에도, 당해 기술 분야의 숙련된 자는 그러한 한정이 적어도 언급된 수를 의미하는 것으로 해석하여야 한다 (예컨대, 다른 수식어 없이 가장 기본적인 것만 갖춘 "2 의 언급"은, 적어도 2 개의 언급, 또는 둘 이상의 언급을 의미한다). 더욱이, "A, B, 및 C 중 적어도 하나 등"에 유사한 약속사항이 사용되는 그런 경우들에서, 대체로 이러한 구조는 당해 기술 분야의 숙련된 자가 그 약속사항을 이해할 것이라는 뜻으로 의도된다 (예컨대, "A, B, 및 C 중 적어도 하나를 갖는 시스템"은 A 단독, B 단독, C 단독, A 및 B를 함께, A 및 C를 함께, B 및 C를 함께, 및/또는 A, B, 및 C를 함께 등등을 가지는 시스템들을 포함하지만 그러한 시스템들로 한정되지는 않을 것이다). "A, B, 또는 C 중 적어도 하나 등"에 유사한 약속사항이 사용되는 그런 경우들에서, 대체로 이러한 구조는 당해 기술 분야의 숙련된 자가 그 약속사항을 이해할 것이라는 뜻으로 의도된다 (예컨대, "A, B, 또는 C 중 적어도 하나를 갖는 시스템"은 A 단독, B 단독, C 단독, A 및 B를 함께, A 및 C를 함께, B 및 C를 함께, 및/또는 A, B, 및 C를 함께 등등을 가지는 시스템들을 포함하지만 그러한 시스템들로 한정되지는 않을 것이다). 둘 이상의 대체 용어들을 나타내는 가상의 임의의 선언적인 단어 및/또는 어구는, 상세한 설명, 청구범위, 또는 도면 중 어디에 있든, 용어들 중 하나, 용어들 중 어느 것이든, 또는 용어들 양쪽 모두를 포함할 가능성들을 생각하는 것으로 이해되어야 함을 당해 기술 분야의 숙련된 자에 의해 추가로 이해될 것이다. 예를 들어, 어구 "A 또는 B"는 "A" 또는 "B" 또는 "A 및 B"의 가능성들을 포함하는 것으로 이해될 것이다.
덧붙여서, 본 개시물의 특징들 또는 양태들이 마쿠쉬 그룹들의 용어로 기재되는 경우, 당해 기술 분야의 숙련된 자는 본 개시물이 또한 마쿠쉬 그룹의 구성원들로 된 서브그룹 또는 임의의 개개의 구성원의 관점에서도 설명된다는 것이 이해될 것이다.
당해 기술 분야의 숙련된 자에 의해 이해될 바와 같이, 임의의 및 모든 목적들에 대해, 이를테면 기재된 설명을 제공하는 견지에서, 본 개시물에서 개시되는 모든 범위들 또한 임의의 및 모든 가능한 하위범위들 및 하위범위들의 조합들을 포괄한다. 임의의 열거된 범위는 적어도 동일한 절반들, 1/3들, 1/4들, 1/5들, 1/10들 등으로 나누어지는 충분히 설명되고 가능한 동일한 범위로서 쉽게 인식될 수 있다. 비 제한적인 예로서, 본 개시물에서 논의되는 각각의 범위는 하부 1/3, 중간 1/3 및 상부 1/3 등으로 손쉽게 나누어질 수 있다. 당해 기술 분야의 숙련된 자에 의해 또한 이해될 바와 같이, "~까지", "적어도" "보다 큰," "~ 미만" 등등과 같은 모든 표현들은 언급된 수를 포함하고 위에서 논의된 바와 같이 뒤에서 하위범위로 나누어질 수 있는 범위들을 말한다. 마지막으로, 당해 기술 분야의 숙련된 자에 의해 또한 이해될 바와 같이, 범위는 각 개개의 구성원을 포함한다. 그래서, 예를 들어, 1-3 개의 셀들을 갖는 그룹은 1, 2, 또는 3개의 셀들을 갖는 그룹들을 말한다. 마찬가지로, 1-5 개의 셀들을 갖는 그룹은 1, 2, 3, 4, 또는 5개의 셀들을 갖는 그룹들을 말하는 등등이다.
갖가지 양태들 및 실시예들이 본 개시물에서 개시되었지만, 다른 양태들 및 실시예들이 당해 기술 분야의 숙련된 자에게는 명백할 것이다. 본 개시물에 개시된 갖가지 양태들 및 실시예들은 예시의 목적을 위한 것이고 제한할 의도는 아니며, 진정한 범위 및 정신은 다음의 청구항들에 의해 나타내어진다.

Claims (20)

  1. 컴퓨팅 시스템이 2 개 이상의 신뢰되지 않는 컴퓨팅 노드들에 의해 수행된 작업을 검증하는 방법으로서,
    상기 컴퓨팅 시스템에서, 적어도 부분적으로 제 1 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 제 1 계산을 결정하는 단계;
    상기 컴퓨팅 시스템에서, 상기 제 1 계산에 적용되어 제 2 계산을 생성하는 변환 함수를 결정하는 단계로서, 상기 변환 함수는 상기 제 2 계산을 상기 제 1 계산과 동등하게 만들도록 구성되고, 상기 제 2 계산은 적어도 부분적으로 제 2 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는, 상기 변환 함수를 결정하는 단계;
    상기 컴퓨팅 시스템에서, 상기 제 1 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 상기 제 1 계산을 할당하는 단계;
    상기 컴퓨팅 시스템에서, 상기 변환 함수를 상기 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들로부터 비밀로 유지하면서 상기 제 2 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 상기 제 2 계산을 할당하는 단계;
    상기 컴퓨팅 시스템에서, 상기 제 1 신뢰되지 않는 컴퓨팅 노드로부터 상기 제 1 계산에 대한 제 1 결과를 수신하고 상기 제 2 신뢰되지 않는 컴퓨팅 노드로부터 상기 제 2 계산에 대한 제 2 결과를 수신하는 단계; 및
    상기 컴퓨팅 시스템에서, 상기 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들에 의해 수행된 작업을 검증하기 위해 상기 제 1 및 제 2 결과들을 분석하는 단계를 포함하는, 방법.
  2. 제 1 항에 있어서,
    상기 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들에 의해 수행된 작업을 검증하기 위해 상기 제 1 및 제 2 결과들을 분석하는 단계는:
    상기 제 2 결과로부터 상기 변환 함수를 제거하는 단계; 및
    상기 제 2 결과를 상기 제 1 결과와 비교하는 단계를 포함하고,
    상기 변환 함수를 제거하는 단계는, 상기 제 1 및 2 계산들이 각각 정확하게 수행되었고 유효한 결과들이 제공되었을 때, 상기 제 2 결과로 하여금 실질적으로 상기 제 1 결과와 동일하게 되도록 하며,
    상기 제 1 결과와 상기 제 2 결과 사이의 차이는 상기 제 1 또는 제 2 신뢰되지 않는 컴퓨팅 노드 중 어느 하나, 또는 양측 모두가 무효한 결과를 제공했음을 내포하는, 방법.
  3. 제 1 항에 있어서,
    상기 제 1 계산을 복수의 제 1 계산 콤포넌트들로 분할하는 단계를 더 포함하는, 방법.
  4. 제 3 항에 있어서,
    상기 제 1 계산에 적용되어 제 2 계산을 생성하는 변환 함수를 결정하는 단계는:
    복수의 변환 함수 콤포넌트들을 포함하는 변환 함수를 결정하는 단계;
    상기 복수의 변환 함수 콤포넌트들의 제 1 변환 함수 서브세트를 선택하는 단계; 및
    상기 제 1 변환 함수 서브세트를 상기 복수의 제 1 계산 콤포넌트들 중의 하나에 적용하여 상기 제 2 계산을 생성하는 단계를 더 포함하는, 방법.
  5. 제 4 항에 있어서,
    상기 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들의 각각은 복수의 신뢰되지 않는 컴퓨팅 노드들 중의 하나이며,
    상기 제 1 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 상기 제 1 계산을 할당하는 단계는, 상기 컴퓨팅 시스템이 상기 복수의 신뢰되지 않는 컴퓨팅 노드들로부터 상기 제 1 신뢰되지 않는 컴퓨팅 노드를 랜덤하게 선택하고 상기 제 1 계산을 상기 제 1 신뢰되지 않는 컴퓨팅 노드에 랜덤하게 할당하는 단계를 포함하고;
    상기 제 2 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 상기 제 2 계산을 할당하는 단계는, 상기 컴퓨팅 시스템이 상기 복수의 신뢰되지 않는 컴퓨팅 노드들로부터 상기 제 2 신뢰되지 않는 컴퓨팅 노드를 랜덤하게 선택하고 상기 제 2 계산을 상기 제 2 신뢰되지 않는 컴퓨팅 노드에 랜덤하게 할당하는 단계를 포함하는, 방법.
  6. 제 1 항에 있어서,
    상기 제 1 신뢰되지 않는 컴퓨팅 노드 또는 상기 제 2 신뢰되지 않는 컴퓨팅 노드에 의해 수행된 과거 계산들로부터의 결과들을 포함하는 데이터베이스에 상기 제 1 결과 및 상기 제 2 결과를 저장하는 단계; 및
    상기 데이터베이스에 저장된 상기 제 1 신뢰되지 않는 컴퓨팅 노드 또는 상기 제 2 신뢰되지 않는 컴퓨팅 노드의 각각에 대한 총 결과들에 기초하여 상기 제 1 신뢰되지 않는 컴퓨팅 노드 또는 상기 제 2 신뢰되지 않는 컴퓨팅 노드가 신뢰성이 있는지를 결정하는 단계로서, 상기 제 1 신뢰되지 않는 컴퓨팅 노드 또는 상기 제 2 신뢰되지 않는 컴퓨팅 노드는 상기 저장된 결과들 중 유효한 결과들의 수가 제 1 임계값 이상이면 신뢰성이 있을 가능성이 있고, 상기 제 1 신뢰되지 않는 컴퓨팅 노드 또는 상기 제 2 신뢰되지 않는 컴퓨팅 노드는 상기 저장된 결과들 중 무효한 결과들의 수가 제 2 임계값 이상이면 신뢰성이 있을 가능성이 없는, 상기 제 1 신뢰되지 않는 컴퓨팅 노드 또는 상기 제 2 신뢰되지 않는 컴퓨팅 노드가 신뢰성이 있는지를 결정하는 단계를 더 포함하는, 방법.
  7. 제 1 항에 있어서,
    상기 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들에 의해 수행되는 작업을 검증하기 위해 상기 제 1 및 제 2 결과들을 분석하는 단계는 상기 제 1 및 제 2 결과들이 유효한지를 결정하도록 하나 이상의 확률 함수들을 상기 제 1 및 제 2 결과들에 적용하는 단계를 포함하는, 방법.
  8. 제 7 항에 있어서,
    상기 제 1 및 제 2 결과들이 유효하지 않다는 결정에 응답하여, 제 3 신뢰되지 않는 컴퓨팅 노드 및 제 4 신뢰되지 않는 컴퓨팅 노드를 랜덤하게 선택하여 상기 제 1 계산 및 상기 제 2 계산을 각각 수행하는 단계를 더 포함하는, 방법.
  9. 컴퓨팅 시스템이 상기 컴퓨팅 시스템과 통신하는 2 개 이상의 신뢰되지 않는 컴퓨팅 노드들에 의해 수행되는 작업을 검증하는 방법을 구현하기 위해 상기 컴퓨팅 시스템에서 이용되는 컴퓨터 판독가능 기록 매체로서,
    상기 컴퓨터 판독가능 기록 매체는, 컴퓨터 실행가능 명령들을 저장하고,
    상기 컴퓨터 실행가능 명령들은, 프로세서에 의한 실행에 응답하여, 상기 컴퓨팅 시스템으로 하여금,
    적어도 부분적으로 제 1 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 제 1 계산을 결정하게 하고;
    상기 제 1 계산에 적용되어 제 2 계산을 생성하는 변환 함수를 결정하게 하되, 상기 변환 함수는 상기 제 2 계산을 상기 제 1 계산과 동등하게 만들도록 구성되고, 상기 제 2 계산은 적어도 부분적으로 제 2 신뢰되지 않는 컴퓨팅 노드에 의해 수행되고;
    상기 제 1 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 상기 제 1 계산을 할당하게 하고;
    상기 변환 함수를 상기 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들로부터 비밀로 유지하면서 상기 제 2 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 상기 제 2 계산을 할당하게 하고;
    상기 제 1 신뢰되지 않는 컴퓨팅 노드로부터 상기 제 1 계산에 대한 제 1 결과를 확인하게 하고, 상기 제 2 신뢰되지 않는 컴퓨팅 노드로부터 상기 제 2 계산에 대한 제 2 결과를 확인하게 하고;
    상기 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들에 의해 수행된 작업을 검증하기 위해 상기 제 1 및 제 2 결과들을 분석하게 하는, 컴퓨터 판독가능 기록 매체.
  10. 제 9 항에 있어서,
    상기 컴퓨팅 시스템으로 하여금, 상기 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들에 의해 수행된 작업을 검증하기 위해 상기 제 1 및 제 2 결과들을 분석하게 하는 상기 컴퓨터 실행가능 명령들은, 상기 컴퓨팅 시스템으로 하여금:
    상기 제 2 결과로부터 상기 변환 함수를 제거하게 하고; 그리고
    상기 제 2 결과를 상기 제 1 결과와 비교하게 하는 것으로서, 상기 변환 함수를 제거하는 것은, 상기 제 1 및 2 계산들의 각각이 정확하게 수행되었고 유효한 결과들이 제공되었을 때, 상기 제 2 결과로 하여금 실질적으로 상기 제 1 결과와 동일하게 되도록 하는, 상기 비교하게 하는 컴퓨터 실행가능한 명령들을 포함하고,
    상기 제 1 결과와 상기 제 2 결과 사이의 차이는, 상기 제 1 신뢰되지 않는 컴퓨팅 노드 또는 상기 제 2 신뢰되지 않는 컴퓨팅 노드 중 어느 하나, 또는 양측 모두가 무효한 결과를 제공했음을 내포하는, 컴퓨터 판독가능 기록 매체.
  11. 제 9 항에 있어서,
    상기 컴퓨터 실행가능 명령들은, 프로세서에 의한 실행에 응답하여, 상기 컴퓨팅 시스템으로 하여금, 추가로, 상기 제 1 계산을 복수의 제 1 계산 콤포넌트들로 분할하게 하는, 컴퓨터 판독가능 기록 매체.
  12. 제 11 항에 있어서,
    상기 컴퓨팅 시스템으로 하여금, 상기 제 1 계산에 적용되어 제 2 계산을 생성하는 변환 함수를 결정하게 하는 상기 컴퓨터 실행가능 명령들은, 프로세서에 의한 실행에 응답하여, 상기 컴퓨팅 시스템으로 하여금:
    복수의 변환 함수 콤포넌트들을 포함하는 변환 함수를 결정하게 하고;
    상기 복수의 변환 함수 콤포넌트들의 제 1 변환 함수 서브세트를 선택하게 하고; 그리고
    상기 제 1 변환 함수 서브세트를 상기 복수의 제 1 계산 콤포넌트들 중의 하나에 적용하여 상기 제 2 계산을 생성하게 하는 컴퓨터 실행가능 명령들을 포함하는, 컴퓨터 판독가능 기록 매체.
  13. 제 12 항에 있어서,
    상기 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들의 각각은 복수의 신뢰되지 않는 컴퓨팅 노드들 중의 하나이며;
    상기 제 1 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 상기 제 1 계산을 할당하게 하는 상기 컴퓨터 실행가능 명령들은, 상기 복수의 신뢰되지 않는 컴퓨팅 노드들로부터 상기 제 1 신뢰되지 않는 컴퓨팅 노드를 랜덤하게 선택하고 상기 복수의 제 1 계산을 상기 제 1 신뢰되지 않는 컴퓨팅 노드에 랜덤하게 할당하게 하는 컴퓨터 실행가능 명령들을 포함하고,
    상기 제 2 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 상기 제 2 계산을 할당하게 하는 상기 컴퓨터 실행가능 명령들은, 상기 복수의 신뢰되지 않는 컴퓨팅 노드들로부터 상기 제 2 신뢰되지 않는 컴퓨팅 노드를 랜덤하게 선택하고 상기 제 2 계산을 상기 제 2 신뢰되지 않는 컴퓨팅 노드에 랜덤하게 할당하게 하는 컴퓨터 실행가능 명령들을 포함하는, 컴퓨터 판독가능 기록 매체.
  14. 제 9 항에 있어서,
    상기 컴퓨터 실행가능 명령들은, 프로세서에 의한 실행에 응답하여, 상기 컴퓨팅 시스템으로 하여금, 추가로,
    상기 제 1 또는 제 2 신뢰되지 않는 컴퓨팅 노드에 의해 수행된 과거 계산들로부터의 결과들을 포함하는 데이터베이스에 상기 제 1 결과 및 상기 제 2 결과를 저장하게 하고; 그리고
    상기 데이터베이스에 저장된 상기 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드의 각각에 대한 총 결과들에 기초하여 상기 제 1 또는 상기 제 2 신뢰되지 않는 컴퓨팅 노드들이 신뢰성이 있는지를 결정하게 하며,
    상기 제 1 신뢰되지 않는 컴퓨팅 노드 또는 상기 제 2 신뢰되지 않는 컴퓨팅 노드는 상기 저장된 결과들 중 유효한 결과들의 수가 제 1 임계값 이상이면 신뢰성이 있을 가능성이 있고, 상기 제 1 신뢰되지 않는 컴퓨팅 노드 또는 상기 제 2 신뢰되지 않는 컴퓨팅 노드는 상기 저장된 결과들 중 무효한 결과들의 수가 제 2 임계값 이상이면 신뢰성이 있을 가능성이 없는, 컴퓨터 판독가능 기록 매체.
  15. 제 9 항에 있어서,
    상기 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들에 의해 수행된 작업을 검증하기 위해 상기 제 1 및 제 2 결과들을 분석하게 하는 상기 컴퓨터 실행가능 명령들은, 상기 제 1 및 제 2 결과들이 유효한지를 결정하기 위해 하나 이상의 확률 함수들을 상기 제 1 및 제 2 결과들에 적용하게 하는 컴퓨터 실행가능 명령들을 포함하는, 컴퓨터 판독가능 기록 매체.
  16. 제 15 항에 있어서,
    상기 컴퓨터 실행가능 명령들은, 프로세서에 의한 실행에 응답하여, 상기 컴퓨팅 시스템으로 하여금, 추가로,
    상기 제 1 및 제 2 결과들이 유효하지 않은 것으로 결정되는 것에 응답하여, 상기 제 1 및 상기 제 2 계산들을 수행하기 위하여 제 3 신뢰되지 않는 컴퓨팅 노드 및 제 4 신뢰되지 않는 컴퓨팅 노드를 랜덤하게 선택하도록 하는, 컴퓨터 판독가능 기록 매체.
  17. 컴퓨팅 시스템으로서,
    프로세서;
    제 1 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 제 1 계산을 생성하도록 구성된 계산 생성 모듈;
    상기 제 1 계산에 적용되어 제 2 계산을 생성하는 변환 함수를 생성하도록 구성된 변환 함수 모듈로서, 상기 변환 함수는 상기 제 2 계산을 상기 제 1 계산과 동등하게 만들도록 구성되고, 상기 제 2 계산은 적어도 부분적으로 제 2 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는, 상기 변환 함수 모듈;
    상기 제 1 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 상기 제 1 계산을 할당하도록 구성되고, 상기 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들로부터 상기 변환 함수가 비밀로 유지되면서 상기 제 2 신뢰되지 않는 컴퓨팅 노드에 의해 수행되는 상기 제 2 계산을 할당하도록 구성된 할당 모듈;
    상기 제 1 신뢰되지 않는 컴퓨팅 노드로부터 상기 제 1 계산에 대한 제 1 결과를 수신하고 상기 제 2 신뢰되지 않는 컴퓨팅 노드로부터 상기 제 2 계산에 대한 제 2 결과를 수신하도록 구성된 수신 모듈; 및
    상기 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들에 의해 수행된 작업을 검증하기 위해 상기 제 1 및 제 2 결과들을 분석하도록 구성된 분석 모듈을 포함하는, 컴퓨팅 시스템.
  18. 제 17 항에 있어서,
    상기 제 1 결과는 일련의 제 1 중간 결과들을 포함하고;
    상기 제 2 결과는 일련의 제 2 중간 결과들을 포함하고;
    상기 분석 모듈은 상기 제 1 중간 결과들을 상기 제 2 중간 결과들과 비교하여 상기 제 1 또는 제 2 신뢰되지 않는 컴퓨팅 노드들이 무효한 결과들을 제공했는지를 결정하도록 추가로 구성된, 컴퓨팅 시스템.
  19. 제 18 항에 있어서,
    상기 변환 함수는 상기 제 2 중간 결과들에 적용되는, 컴퓨팅 시스템.
  20. 제 17 항에 있어서,
    상기 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들에 의해 제공된 결과들의 유효성의 이력을 포함하는 데이터베이스를 더 포함하고,
    상기 이력은 상기 컴퓨팅 시스템에 의해 상기 제 1 및 제 2 신뢰되지 않는 컴퓨팅 노드들의 신뢰성을 결정하는 데 이용되는, 컴퓨팅 시스템.
KR1020127032839A 2010-07-21 2010-07-21 신뢰되지 않는 컴퓨팅 노드들에 의해 수행된 작업의 검증 KR101463678B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2010/042782 WO2012011902A1 (en) 2010-07-21 2010-07-21 Verifying work performed by untrusted computing nodes

Publications (2)

Publication Number Publication Date
KR20130021405A KR20130021405A (ko) 2013-03-05
KR101463678B1 true KR101463678B1 (ko) 2014-12-04

Family

ID=45494650

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020127032839A KR101463678B1 (ko) 2010-07-21 2010-07-21 신뢰되지 않는 컴퓨팅 노드들에 의해 수행된 작업의 검증

Country Status (4)

Country Link
US (2) US8661537B2 (ko)
JP (1) JP5254497B2 (ko)
KR (1) KR101463678B1 (ko)
WO (1) WO2012011902A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6344745B1 (en) * 1998-11-25 2002-02-05 Medrad, Inc. Tapered birdcage resonator for improved homogeneity in MRI
US8874477B2 (en) 2005-10-04 2014-10-28 Steven Mark Hoffberg Multifactorial optimization system and method
US8661537B2 (en) * 2010-07-21 2014-02-25 Empire Technology Development Llc Verifying work performed by untrusted computing nodes
US8930896B1 (en) * 2010-07-23 2015-01-06 Amazon Technologies, Inc. Data anonymity and separation for user computation
JP5745446B2 (ja) * 2012-03-19 2015-07-08 三菱日立パワーシステムズ株式会社 技術計算方法、技術計算システム及びクライアント装置
US9667649B1 (en) * 2013-04-18 2017-05-30 Amazon Technologies, Inc. Detecting man-in-the-middle and denial-of-service attacks
CN107357639B (zh) * 2016-05-09 2019-09-17 腾讯科技(深圳)有限公司 一种分布式处理系统、数据处理的方法及设备
WO2018127568A1 (en) * 2017-01-06 2018-07-12 Koninklijke Philips N.V. Verification of fixed-point arithmetic
US11032061B2 (en) * 2018-04-27 2021-06-08 Microsoft Technology Licensing, Llc Enabling constant plaintext space in bootstrapping in fully homomorphic encryption
CN110740113B (zh) * 2018-07-20 2021-10-29 富士通株式会社 通过多个主体协作进行信息处理的方法和装置
KR20220084356A (ko) * 2019-10-18 2022-06-21 디피니티 스티프텅 분산 네트워크에서의 메시징

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006031692A (ja) * 2004-06-24 2006-02-02 Toshiba Corp ネットワークノードセキュリティ分析方法
JP2008003907A (ja) * 2006-06-23 2008-01-10 Hitachi Ltd 情報処理振分制御方法およびそのコンピュータ

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5046094A (en) 1989-02-02 1991-09-03 Kabushiki Kaisha Toshiba Server-aided computation method and distributed information processing unit
JPH0373990A (ja) 1989-05-18 1991-03-28 Toshiba Corp 分散型情報処理装置
JPH08249196A (ja) 1995-03-13 1996-09-27 Mitsubishi Electric Corp タスクの冗長化実行方式
US20010039624A1 (en) * 1998-11-24 2001-11-08 Kellum Charles W. Processes systems and networks for secured information exchange using computer hardware
US6519702B1 (en) * 1999-01-22 2003-02-11 Sun Microsystems, Inc. Method and apparatus for limiting security attacks via data copied into computer memory
GB2372594B (en) 2001-02-23 2004-10-06 Hewlett Packard Co Trusted computing environment
US7043522B2 (en) 2002-05-30 2006-05-09 Microsoft Corporation Unbounded computing space
JP4029934B2 (ja) 2003-07-24 2008-01-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 分散コンピューティングシステム
DE10313318A1 (de) 2003-03-25 2004-10-21 Giesecke & Devrient Gmbh Kontrollierte Ausführung eines für eine virtuelle Maschine vorgesehenen Programms auf einem tragbaren Datenträger
CA2493732A1 (en) 2004-01-23 2005-07-23 Gridiron Software, Inc. Authentication in a distributed computing environment
WO2006132987A1 (en) * 2005-06-03 2006-12-14 Board Of Trustees Of Michigan State University Worm propagation modeling in a mobile ad-hoc network
US20070094734A1 (en) * 2005-09-29 2007-04-26 Mangione-Smith William H Malware mutation detector
US8205262B2 (en) * 2006-05-16 2012-06-19 Bird Peter L Hardware support for computer speciation
DE102007011309B4 (de) * 2007-03-06 2008-11-20 Francotyp-Postalia Gmbh Verfahren zur authentisierten Übermittlung eines personalisierten Datensatzes oder Programms an ein Hardware-Sicherheitsmodul, insbesondere einer Frankiermaschine
US8706914B2 (en) * 2007-04-23 2014-04-22 David D. Duchesneau Computing infrastructure
US8331632B1 (en) * 2007-08-06 2012-12-11 University Of South Florida Indexing face templates using linear models
US20100017870A1 (en) * 2008-07-18 2010-01-21 Agnik, Llc Multi-agent, distributed, privacy-preserving data management and data mining techniques to detect cross-domain network attacks
US8661537B2 (en) * 2010-07-21 2014-02-25 Empire Technology Development Llc Verifying work performed by untrusted computing nodes

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006031692A (ja) * 2004-06-24 2006-02-02 Toshiba Corp ネットワークノードセキュリティ分析方法
JP2008003907A (ja) * 2006-06-23 2008-01-10 Hitachi Ltd 情報処理振分制御方法およびそのコンピュータ

Also Published As

Publication number Publication date
US8661537B2 (en) 2014-02-25
JP2012530328A (ja) 2012-11-29
KR20130021405A (ko) 2013-03-05
US8881275B2 (en) 2014-11-04
JP5254497B2 (ja) 2013-08-07
WO2012011902A1 (en) 2012-01-26
US20120023577A1 (en) 2012-01-26
US20140082191A1 (en) 2014-03-20

Similar Documents

Publication Publication Date Title
KR101463678B1 (ko) 신뢰되지 않는 컴퓨팅 노드들에 의해 수행된 작업의 검증
Bhattacharya et al. Bindaas: Blockchain-based deep-learning as-a-service in healthcare 4.0 applications
US10491390B2 (en) Proof chaining and decomposition
Gao et al. A survey of blockchain: Techniques, applications, and challenges
Gervais et al. On the privacy provisions of bloom filters in lightweight bitcoin clients
US20210271764A1 (en) Method for storing data on a storage entity
US11201751B2 (en) System and method for off-chain cryptographic transaction verification
CN112544053B (zh) 用于确定数据块和用于提供时间戳事务的方法、系统、计算机程序产品和计算可读介质
CN111641712B (zh) 区块链数据更新方法、装置、设备、系统及可读存储介质
CN110543488B (zh) 一种验证节点更新方法、装置及设备
Chen et al. Multiple testing with discrete data: proportion of true null hypotheses and two adaptive FDR procedures
Chen et al. BPVSE: Publicly verifiable searchable encryption for cloud-assisted electronic health records
Khan et al. OTIT: Towards secure provenance modeling for location proofs
EP4040720A1 (en) Secure identity card using unclonable functions
Nguyen et al. Novel data integrity verification schemes in cloud storage
Chen et al. Practical Byzantine Fault Tolerance Based Robustness for Mobile Crowdsensing
WO2014165925A1 (en) Method and system for the secure transfer and verification of ownership of digital sequences
US20200304308A1 (en) Method for providing a proof-of-retrievability
US8422683B2 (en) Appraising systems with zero knowledge proofs
CN104486311B (zh) 一种支持可扩展性的远程数据完整性检查方法
Mahmoud et al. Applications of smart-contracts: anonymous decentralized insurances with IoT sensors
CN114742649A (zh) 交易数据处理方法、装置和服务器
Leurent Time-memory trade-offs for near-collisions
Gruska Informational analysis of security and integrity
Prowell et al. Position Papers for the ASCR Workshop on Cybersecurity and Privacy for Scientific Computing Ecosystems

Legal Events

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

Payment date: 20170929

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20181129

Year of fee payment: 5