KR101330392B1 - 분산 저장 네트워크에서 데이터 인가를 위한 네트워크 노드 및 방법 - Google Patents

분산 저장 네트워크에서 데이터 인가를 위한 네트워크 노드 및 방법 Download PDF

Info

Publication number
KR101330392B1
KR101330392B1 KR1020117013649A KR20117013649A KR101330392B1 KR 101330392 B1 KR101330392 B1 KR 101330392B1 KR 1020117013649 A KR1020117013649 A KR 1020117013649A KR 20117013649 A KR20117013649 A KR 20117013649A KR 101330392 B1 KR101330392 B1 KR 101330392B1
Authority
KR
South Korea
Prior art keywords
data
node
storage
string
resource identifier
Prior art date
Application number
KR1020117013649A
Other languages
English (en)
Other versions
KR20110084457A (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 KR20110084457A publication Critical patent/KR20110084457A/ko
Application granted granted Critical
Publication of KR101330392B1 publication Critical patent/KR101330392B1/ko

Links

Images

Classifications

    • 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
    • H04L67/104Peer-to-peer [P2P] 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
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1061Peer-to-peer [P2P] networks using node-based peer discovery mechanisms
    • H04L67/1065Discovery involving distributed pre-established resource-based relationships among peers, e.g. based on distributed hash tables [DHT] 
    • 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
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1076Resource dissemination mechanisms or network resource keeping policies for optimal resource availability in the overlay network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/08Network architectures or network communication protocols for network security for authentication of entities
    • H04L63/0823Network architectures or network communication protocols for network security for authentication of entities using certificates

Abstract

피어-투-피어 오버레이 네트워크 상에 저장된 데이터의 저장 인가 및 액세스 제어가 제공된다. 공개 노드 (502) 는 오버레이 네트워크에서 저장 노드 (506) 상에 데이터를 저장한다. 공개 노드 (502) 는 저장될 데이터 타입과 관련된 사용 스트링의 함수로서 리소스 식별자 (516) 를 생성함으로써 데이터 저장 인가를 용이하게 하도록 구성된다. 리소스 식별자 (516) 및 저장될 데이터 (518) 를 포함하는 저장 요청 (504) 이 생성된다. 저장 요청은 저장 노드 (506) 로 전송될 수도 있다. 저장 디바이스 (506) 는 리소스 식별자 (516) 및 저장될 데이터 (518) 를 포함하는, 공개 노드 (502) 에 의해 전송된 저장 요청 (504) 을 수신한다. 리소스 식별자를 검증함 (510, 512) 으로써 오버레이 레벨에서 저장 노드 (506) 에 의해 독립적인 저장 인가가 수행된다. 저장 요청 내의 데이터는, 리소스 식별자가 성공적으로 검증된다면, 저장 노드에 저장된다.

Description

분산 저장 네트워크에서 데이터 인가를 위한 네트워크 노드 및 방법{NETWORK NODES AND METHODS FOR DATA AUTHORIZATION IN DISTRIBUTED STORAGE NETWORKS}
다양한 특징들은 분산 통신 및/또는 저장 시스템에 관한 것이다. 적어도 하나의 양태는 피어-투-피어 오버레이 네트워크 (peer-to-peer overlay network) 에서 저장을 인가하는 방법에 관한 것이다.
오버레이 네트워크들과 같은 구조화된 피어-투-피어 (peer-to-peer) 네트워크들은 통상적으로 질의의 확장성 (scalability) 및 결정적 라우팅 (deterministic routing) 을 위해 분산 해시 테이블 (distributed hash table; DHT) 을 이용한다. 분산 해시 테이블 (DHT) 은 해시 테이블과 유사한 룩업 서비스를 제공하는 분산집중된 (decentralized) 분산 시스템의 부류이며 : DHT 에는 (노드 명, 식별자 값) 쌍들이 저장되고, 임의의 참여 노드 (participating node) 가 소정의 노드 명과 관련된 식별자 값을 효율적으로 검색할 수 있다. 각각의 노드는 DHT 에 고유한 아이덴티티를 가지며, 마찬가지로 네트워크에 저장된 각각의 서비스 또는 오브젝트는 고유한 아이덴티티를 갖는다. 모든 아이덴티티들은 동일한 식별자 공간 (identifier space) 의 부분이며, 이 동일한 식별자 공간은 보통 충돌을 회피하기 위해 매우 넓다. 참여 노드들의 세트의 변화가 최소한의 중단을 야기하는 그러한 방식으로, 아이덴티티들의 유지 (예를 들어, 노드 명으로부터의 식별자 값 ID 와의 맵핑) 에 대한 책임 (responsibility) 이 노드들 간에 분산된다. 이는 DHT 가 매우 많은 수의 노드들로 크기를 조정하고 연속적인 노드 도착 (arrival), 이탈 (departure) 및 실패 (failure) 를 다루는 것을 허용한다. DHT 는 분산 파일 시스템, 피어-투-피어 파일 공유 및 컨텐트 분산 시스템, 협동적 웹 캐싱 (cooperative web caching), 멀티캐스트, 애니캐스트, 도메인 명 서비스 및 인스턴트 메시징과 같은 보다 복잡한 서비스를 형성하는데 이용될 수 있는 인프라스트럭처를 형성한다.
이러한 분산 시스템, 특히 데이터를 저장 및 검색하고 서비스 인스턴스들에 공개 및 가입하기 위해 분산 해시 테이블을 구현하는 시스템에서는, 어떤 엔티티가 어떤 위치에서 공개할 수도 있는 것에 대한 임의의 제어가 존재하지 않을 수도 있다. 따라서, 노드의 아이덴티티 단독으로 또는 서비스 엔티티와 조합하여 노드가 데이터를 저장할 수도 있는 장소를 결정하는데 이용될 수도 있는 메커니즘이 필요하다.
이러한 시스템에서는, 데이터 소유자가 실제로는 그 특정 노드 또는 리소스 ID 에 저장하도록 인가된다는 것을 저장 노드가 검증하는 것을 허용하는 것이 간단하지 않을 수도 있다. 데이터가 소정의 노드에 의해 저장될 수 있는 위치들의 수를 오버레이 네트워크가 제한할 수 없다면, 단일의 유해 (harmful) 노드가, 고의적이든 우연이든 간에, 오버레이 네트워크에서 이용가능한 분산 쿼터 (quota) 에 부정적인 영향을 미칠 수 있다. 그러나, 노드에 대응하는 저장 위치를 정확히 하나로 제한하는 것은 또한 문제일 수도 있다. 이것이 없다면, 소정의 노드는 헤비 유저 (heavy user) 로부터 저장될 다량의 데이터에 의해 부담될 수도 있으며, 이는 또한 선택된 위치 공격을 위해 특정 리소스 ID 를 목표로 하는 동기를 공격자에게 제공할 것이다.
노드들/사용자들이 특정 리소스 ID 를 기록, 변경, 또는 삭제하도록 허용된다는 것을 데이터 소유자가 제어하는 것을 허용하는 방법을 제공하는 것이 중요하다. 이런 제어가 없다면, 임의의 노드는 소정의 리소스 ID 의 컨텐트들을 어쩌면 중복기재할 수도 있다.
본원의 다양한 특징들은 저장 인가와 관련되며, 피어-투-피어 오버레이 네트워크 (peer-to-peer overlay network) 상에 저장된 데이터에 대한 액세스 제어가 제공된다.
일 특징에 따르면, 오버레이 네트워크 상에 데이터를 저장하는 방법이 제공되고, 예를 들어, 공개 노드, 프로세서 상에서 구현될 수도 있으며/있거나 컴퓨터 판독가능 매체에 저장될 수도 있다. 리소스 식별자가 제 1 스트링과 제 2 스트링의 조합의 함수로서 생성될 수도 있으며, 여기서 제 1 스트링은 저장 노드에 의해 독립적으로 인증가능하고, 리소스 식별자는 저장 노드에 의해 검증가능하다. 일 예에서, 제 1 스트링은 공개 노드 식별자일 수도 있고, 제 2 스트링은 임의의 스트링일 수도 있다. 다른 예에서, 제 1 스트링은 공개 노드 식별자일 수도 있고, 제 2 스트링은 오버레이 네트워크 내의 서비스에 대한 미리 정의된 스트링일 수도 있다. 리소스 식별자, 저장될 데이터, 제 1 스트링의 표시자 및/또는 제 2 스트링의 표시자를 포함하는 저장 요청이 생성될 수도 있다. 저장 요청은 그 후 저장 노드에 저장되도록 오버레이 네트워크를 통해 전송될 수도 있으며, 여기서 저장 노드는 리소스 식별자를 포함하는 식별자 공간에 대해 책임이 있다. 리소스 식별자의 구성 (construction) 으로 인해, 저장 요청에 대한 인가가 프로토콜 계층구조 (hierarchy) 의 오버레이 레벨에서 검증가능할 수도 있으며, 여기서 오버레이 레벨은 프로토콜 계층구조에서 사용 레벨 (usage level) 아래에 있다.
복수의 상이한 리소스 식별자들이 설명한 바와 같이 생성될 수도 있으며, 여기서 복수의 상이한 리소스 식별자들 각각은 제 1 스트링과 상이한 제 2 스트링들의 조합의 함수이다. 상이한 리소스 식별자들이 상이한 제 2 스트링들을 이용하여 생성되기 때문에, 이는 상이한 저장 노드들이 상이한 식별자 공간에 대해 책임이 있는 오버레이 네트워크 내에서 데이터 저장 로드 스프레딩을 야기한다.
다른 특징에 따르면, 오버레이 네트워크 상에 데이터를 저장하는 방법이 제공되고, 예를 들어, 저장 노드, 프로세서 상에서 구현될 수도 있으며/있거나 컴퓨터 판독가능 매체에 저장될 수도 있다. 제 1 저장 요청이 피어-투-피어 오버레이 네트워크에서 데이터를 저장하기 위해 수신될 수도 있다. 제 1 저장 요청은 제 1 리소스 식별자 및 저장될 제 1 데이터를 포함할 수도 있으며, 여기서 제 1 리소스 식별자는 인증될 수 있는 제 1 스트링과 제 2 스트링의 조합의 함수이다.
일 예에서, 제 1 스트링은 공개 노드 식별자일 수도 있고, 제 2 스트링은 임의의 스트링일 수도 있다. 다른 예에서, 제 1 스트링은 공개 노드 식별자일 수도 있고, 제 2 스트링은 오버레이 네트워크 내의 서비스에 대한 미리 정의된 스트링일 수도 있다. 독립적인 저장 인가가 제 1 리소스 식별자를 검증함으로써 프로토콜 계층구조의 오버레이 레벨에서 수행될 수도 있다. 제 1 리소스 식별자가 성공적으로 검증된다면, 제 1 데이터는 저장 노드에 의해 저장될 수도 있고, 제 1 리소스 식별자와 관련될 수도 있다. 일 예에서, 오버레이 레벨에서 독립적인 저장 인가를 수행하는 것은, (a) 제 1 스트링을 인증하는 것, 및/또는 (b) 제 1 리소스 식별자가 제 1 스트링과 제 2 스트링의 조합의 함수인지 여부를 결정하는 것을 포함할 수도 있다.
후속하여 저장 노드가 저장된 제 1 데이터에 대한 데이터 액세스 요청을 수신할 수도 있다. 데이터 액세스 요청이 제 1 리소스 식별자 및 제 1 스트링에 대한 지식 (knowledge) 를 입증한다면, 저장된 제 1 데이터에 대한 액세스는 승인될 수도 있다. 데이터 액세스 요청이 제 1 리소스 식별자에 대한 지식을 입증하지만 제 1 스트링에 대한 지식을 입증할 수 없다면, 저장 노드는 저장된 제 1 데이터에 대한 판독 전용 액세스를 승인할 수도 있다. 저장된 제 1 데이터에 대한 액세스를 승인하는 것은 제 1 데이터의 제 2 데이터로의 교체를 허용하는 것을 포함할 수도 있다.
또 다른 특징에 따르면, 피어-투-피어 오버레이 네트워크 상에 데이터를 저장하기 위해 공개 노드 상에서 동작하는 다른 방법이 제공된다. 리소스 식별자가 제 2 스트링의 함수로서 생성될 수도 있으며, 여기서 리소스 식별자는 저장 노드에 의해 검증가능하다. 저장 요청이 그 후 생성될 수도 있으며, 리소스 식별자, 저장될 데이터, 및 저장 노드에 의해 독립적으로 인증가능한 제 1 스트링을 포함한다. 일 예에서, 제 1 스트링은 공개 노드 식별자일 수도 있고, 제 2 스트링은 임의의 스트링이다. 다른 예에서, 제 1 스트링은 공개 노드 식별자이고, 제 2 스트링은 오버레이 네트워크 내의 서비스에 대한 미리 정의된 스트링이다.
저장 요청은 저장 노드에 저장되도록 오버레이 네트워크를 통해 전송될 수도 있으며, 여기서 저장 노드는 리소스 식별자를 포함하는 식별자 공간에 대해 책임이 있다. 저장 요청에 대한 인가가 제 1 스트링을 이용하여 프로토콜 계층구조의 사용 레벨에서 검증가능할 수도 있으며, 여기서 사용 레벨은 프로토콜 계층구조에서 오버레이 레벨 위에 있다. 오버레이 네트워크 내의 상이한 공개 노드들은 동일한 리소스 식별자를 갖지만 상이한 제 1 스트링들을 갖는 데이터 저장 요청들을 생성할 수도 있다. 상이한 데이터 저장 요청들이 상이한 제 1 스트링들을 이용한 사용 레벨 인가에 기초하여 구별가능할 수도 있다.
또 다른 특징에 따르면, 피어-투-피어 오버레이 네트워크 상에 데이터를 저장하기 위해 저장 노드 상에서 동작하는 다른 방법이 제공된다. 제 1 저장 요청이 피어-투-피어 오버레이 네트워크에서 데이터를 저장하기 위해 수신될 수도 있다. 제 1 저장 요청은 제 1 리소스 식별자, 저장될 제 1 데이터, 및 제 1 공개 노드 식별자를 포함할 수도 있으며, 여기서 저장 노드는 제 1 리소스 식별자를 포함하는 식별자 공간에 대해 책임이 있다. 제 2 저장 요청이 피어-투-피어 오버레이 네트워크에서 데이터를 저장하기 위해 수신될 수도 있다. 제 2 저장 요청은 제 1 리소스 식별자, 저장될 제 2 데이터, 및 제 2 공개 노드 식별자를 포함할 수도 있다. 제 1 데이터 및 제 1 공개 노드 식별자는 저장 노드에 의해 저장될 수도 있으며, 제 1 리소스 식별자와 관련될 수도 있다. 제 2 데이터 및 제 2 공개 노드 식별자는 저장 노드에 의해 저장될 수도 있으며, 제 1 리소스 식별자와 관련될 수도 있다. 저장 노드는 프로토콜 계층구조의 사용 레벨에서 독립적인 저장 인가를 수행할 수도 있으며, 여기서 사용 레벨은 프로토콜 계층구조에서 오버레이 레벨 위에 있다.
후속하여, 저장 노드는 제 1 리소스 식별자와 관련된 데이터에 대한 데이터 액세스 요청을 수신할 수도 있다. 저장 노드는 저장된 제 1 데이터 및 제 2 데이터에 대한 판독 전용 액세스를 승인할 수도 있다. 그러나, 데이터 액세스 요청이 제 1 공개 노드 식별자에 대한 지식을 입증한다면, 저장 노드는 저장된 제 1 데이터에 대한 기록 액세스를 승인할 수도 있다. 마찬가지로, 데이터 액세스 요청이 제 2 공개 노드 식별자에 대한 지식을 입증한다면, 저장 노드는 저장된 제 2 데이터에 대한 기록 액세스를 승인할 수도 있다.
본 양태들의 특징, 본질 및 이점은, 동일한 참조 부호들이 대응하여 식별되는 도면들과 함께 얻어질 때 이하 기술되는 상세한 설명으로부터 보다 명백해질 것이다.
도 1 은 DHT 가 피어-투-피어 오버레이 네트워크의 동작을 용이하게 하기 위해 동작할 수도 있는 방법을 예시한 도면이다.
도 2 는 중앙집중 레지스트라 (신뢰 기관) 가 오버레이 네트워크 내의 복수의 노드들에 노드 ID들을 할당하도록 기능할 수도 있는 방법을 예시한 블록도이다.
도 3 은 네트워크 내에 구현될 수도 있는 프로토콜 계층구조의 일 예를 예시한 블록도이다.
도 4 는 일 예에서 오버레이 네트워크에서의 데이터 저장 요청을 위해 이용될 수도 있는 메시지 헤더 아키텍처의 일 예를 예시한 도면이다.
도 5 는 분산 데이터 저장 및 인가가 피어-투-피어 오버레이 네트워크에서 수행될 수도 있는 방법의 일 예를 예시한 블록도이다.
도 6 은 분산 데이터 저장 및 인가가 피어-투-피어 오버레이 네트워크에서 수행될 수도 있는 방법의 대안의 예를 예시한 블록도이다.
도 7 은 2 개의 상이한 공개 노드들이 피어-투-피어 오버레이 네트워크에서 동일한 리소스 ID 를 이용하여 데이터를 저장하려고 시도할 수도 있는 방법의 일 예를 예시한 블록도이다.
도 8 은 공개 노드가 오버레이 레벨 데이터 저장 인가를 위해 오버레이 네트워크에서 리소스 ID 를 생성할 수도 있는 방법의 일 예를 예시한 블록도이다.
도 9 는 저장 노드가 오버레이 레벨 데이터 저장 인가를 위해 오버레이 네트워크에서 리소스 ID 를 검증할 수도 있는 방법의 일 예를 예시한 블록도이다.
도 10 은 공개 노드가 사용 레벨 데이터 저장 인가를 위해 오버레이 네트워크에서 리소스 ID 를 생성할 수도 있는 방법의 대안의 예를 예시한 블록도이다.
도 11 은 저장 노드가 사용 레벨 데이터 저장 인가를 위해 오버레이 네트워크에서 리소스 ID 를 검증할 수도 있는 일 예를 예시한 블록도이다.
도 12 는 오버레이 네트워크에서 데이터의 저장을 요청하도록 구성되는 공개 디바이스 또는 노드의 일 예를 예시한 도면이다.
도 13 은 오버레이 레벨에서 독립적인 저장 인가를 용이하게 하기 위해 공개 노드에서 동작하는 방법의 일 예를 예시한 플로우도이다.
도 14 는 데이터 저장 인가를 수행하면서 오버레이 네트워크에서 데이터를 저장하는 저장 노드의 예를 예시한 도면이다.
도 15 (도 15a 및 도 15b 포함) 는 오버레이 레벨에서 독립적인 저장 인가를 수행하기 위해 저장 노드에서 동작하는 방법의 일 예를 예시한 도면이다.
도 16 (도 16a 및 도 16b 포함) 은 사용 레벨에서 독립적인 저장 인가를 수행하기 위해 저장 노드에서 동작하는 방법의 일 예를 예시한 도면이다.
다음의 설명에서, 특정 상세가 실시형태들의 완전한 이해를 제공하기 위해 주어진다. 그러나, 이들 특정 상세 없이도 실시형태들이 실시될 수도 있다는 것이 당업자에 의해 이해될 것이다. 예를 들어, 실시형태들을 불필요하게 상세화하여 불명료하게 하지 않기 위하여 회로들이 블록도로 도시될 수도 있다. 다른 경우에는, 실시형태들을 불명료하게 하지 않기 위하여 널리 공지된 회로들, 구조들 및 기술들이 상세하게 도시될 수도 있다.
본원에 사용한 바와 같이, "노드" 라는 용어는 네트워크 내에서 어드레스가능한 임의의 디바이스, 컴퓨터, 프로세싱 유닛 등을 지칭할 수도 있다. "아이덴티피케이션 (identification)", "식별자 (identifier)" 및 "ID" 는 네트워크로 특정 노드를 식별하도록 기능하는 값 (예를 들어, 숫자 또는 스트링) 을 지칭하기 위해 상호교환가능하게 사용될 수도 있다. "공개 노드 (publishing node)" 는 네트워크 내의 다른 노드 상에 정보를 저장하려고 시도하는 노드를 지칭할 수도 있다. "저장 노드" 는 네트워크 내의 공개 노드에 대한 정보를 저장하는 노드를 지칭할 수도 있다. "데이터" (예를 들어, 저장된 데이터) 라는 용어는 오디오 및/또는 비디오 컨텐트, 텍스트, 이미지 등과 같은 임의의 타입의 정보를 포함할 수도 있다.
개관
피어-투-피어 오버레이 네트워크들에서, 저장된 데이터 또는 정보는, 이러한 데이터 또는 정보를 오버레이 네트워크 내의 다른 노드들에 잠재적으로 액세스가능하게 만드는 특정 사용 (예를 들어, 오버레이 서비스, 기능 또는 애플리케이션) 과 관련될 수도 있다. 오버레이 네트워크에서 데이터를 식별 및 저장하기 위하여, 특정 리소스 식별자 (예를 들어, 리소스 ID) 가 생성되고, 상기 데이터 및 정보와 관련된다. 피어-투-피어 오버레이 네트워크에서 데이터 저장 인가를 용이하게 하는 다양한 특징들이 제공된다.
제 1 구현에 따르면, 복수의 노드들을 포함하는 피어-투-피어 오버레이 네트워크 내에서는, 공개 노드가 데이터 또는 정보를, 이러한 저장된 데이터에 대한 인가 제어를 여전히 허용하면서, 복수의 상이한 저장 노드들 상에 저장하도록 허용된다. 이 구현에서, 데이터 저장 및/또는 액세스에 대한 인가 제어는 프로토콜 계층구조 (hierarchy) 의 오버레이 레벨에서 수행될 수도 있으며, 여기서 오버레이 레벨은 프로토콜 계층구조에서 사용 레벨 (usage level) 아래에 있다. 즉, 저장 노드에 저장된 데이터를 액세스, 변경 및/또는 삭제하기 위한 인가는, 데이터가 오버레이 네트워크에서 다수의 노드 위치들에 걸쳐 스프레딩되는 것을 여전히 허용하면서 구현될 수도 있다. 이러한 인가를 달성하기 위한 일 방법은, 제 1 스트링과 제 2 스트링의 조합의 함수로서 컴퓨팅되는 리소스 식별자 (리소스 ID) 에 의해 저장될 데이터를 식별 또는 관련시키는 것이며, 여기서 제 1 스트링은 저장 노드에 의해 독립적으로 인증가능할 수도 있으며, 리소스 식별자는 저장 노드에 의해 검증가능할 수도 있다. 예를 들어, 제 1 스트링은 공개 노드 식별자일 수도 있고, 제 2 스트링은 사용 타입을 나타내는 임의의 또는 미리 정의된 스트링일 수도 있다. 어떤 경우에 있어서는, 공개 노드 식별자 (및/또는 공개 노드의 공개 키) 는 공개 노드에 의해 저장되는 데이터를 서명 (sign) 하는데 이용되는 개인 증명서 (private certificate) 와 관련될 수도 있다. 이는 저장된 데이터를 변화 또는 변경하기 위한 요청을 제시하는 노드가 이러한 개인 증명서에 대한 지식 (knowledge) 을 갖는지 여부를 저장 노드가 확인하는 것을 허용한다. 특정 공개 노드가 동일한 제 1 스트링을 이용할 수도 있지만 (예를 들어 상이한 타입의 데이터 및 사용에 대한) 상이한 제 2 스트링들을 이용할 수도 있기 때문에, 상이한 리소스 ID들이 생성될 것이며, 결과적으로, 이러한 데이터는 데이터 로드 스프레딩을 달성하기 위해 피어-투-피어 네트워크 상에서 상이한 저장 노드들에 저장될 가능성이 있을 것이다.
저장 노드는, 특정 노드가 특정 리소스 ID 와 관련되는 저장된 데이터를 변경 또는 삭제할 수도 있는지 여부를 결정할 수도 있다. 즉, 데이터 액세스 및/또는 변경 요청은, 단지 요청 노드가 리소스 식별자, 제 1 스트링 (예를 들어, 공개 노드 식별자) 및/또는 공개 노드와 관련된 개인 증명서에 대한 지식을 입증할 수 있는 경우에만 허용될 수도 있다. 이러한 인가는 프로토콜 계층구조의 오버레이 레벨에서 구현될 수도 있으며, 여기서 오버레이 레벨은 프로토콜 계층구조에서 사용 레벨 아래에 있다.
대안의 구현에서, 소정 사용 시에는, 리소스 ID들을 이용하여 소정 타입의 데이터를 탐색함으로써 노드들이 저장된 데이터에 액세스하는 것을 허용하는 것이 바람직할 수도 있다. 그러나, 이러한 탐색은, 탐색 노드가 저장된 데이터와 관련된 제 1 스트링 (예를 들어, 공개 노드 식별자들) 을 알지 못할 수도 있기 때문에, 리소스 ID 가 (예를 들어, 공개 노드와 관련된) 제 1 스트링과 제 2 스트링 양자에 기초할 때에는 비현실적이다. 따라서, 대안의 구현에서는, 저장된 데이터에 대한 리소스 ID들이 단지 제 2 스트링에만 기초할 수도 있다. 이러한 "제 2" 스트링은 (예를 들어, 각각의 타입의 사용, 애플리케이션 또는 서비스에 의해) 미리 결정되고, 공지되며/되거나 공지가능한 스트링일 수도 있다. 이러한 스트링이 각각의 사용에 의해 미리 정의될 수도 있기 때문에, 그 사용과 관련된 데이터를 탐색하는 다른 노드들이 (예를 들어, 공지된 스트링에 기초하여) 리소스 ID 를 재생성하고, 오버레이 네트워크에서 리소스 ID 를 탐색할 수도 있다. 이 스킴 (scheme) 은, 다수의 노드들이 단지 리소스 ID 를 이용하여 특정 타입의 데이터를 탐색하는 것을 허용할 뿐만 아니라, 다수의 상이한 공개 노드들이 동일한 리소스 ID 를 이용하여 데이터를 저장하는 것을 허용한다. 이 구현에서, 데이터 저장 및/또는 액세스에 대한 인가 제어가 프로토콜 계층구조의 사용 레벨에서 수행될 수도 있으며, 여기서 사용 레벨은 프로토콜 계층구조에서 오버레이 레벨 아래에 있다. 동일한 리소스 ID 를 이용하는 저장된 데이터의 상이한 인스턴스들 간을 구별하기 위해 (예를 들어, 그들은 동일한 스트링에 기초할 수도 있다), 저장된 데이터의 각각의 인스턴스는 또한 사용 레벨에서 검증될 수도 있는 "제 1" 스트링 (예를 들어, 공개 노드의 식별자) 과 관련될 수도 있다. 저장 노드는 또한 저장된 데이터의 인스턴스와 관련된 "제 1" 스트링 (예를 들어, 공개 노드 ID) 을 이용하여, 그 저장된 데이터의 인스턴스를 변경 또는 삭제하도록 요청하는 노드가 공개 노드 ID 와 관련된 정확한 개인 증명서를 갖는지 여부를 확인할 수도 있다.
DHT 오버레이 네트워크
오버레이 네트워크는 다른 네트워크 위에 형성되는 통신 또는 데이터 네트워크이다. 오버레이 네트워크 내의 노드들은, 기저 네트워크에서, 각각이 경로에 대응하는 가상 또는 로직 링크들에 의해, 어쩌면 다수의 물리 링크들을 통하여 접속되는 것으로 생각될 수 있다. 통신 네트워크 내에서, 각각의 네트워크 노드는 노드로 및/또는 노드로부터 메시지들을 라우팅하는데 이용되는 인터넷 프로토콜 (IP) 어드레스를 가질 수도 있다. 이러한 네트워크 IP 계층 위에서, 각각의 노드에 대해 노드 식별자 (즉, 노드 ID) 를 이용하는 오버레이 네트워크를 구현하는 것이 가능하다. 그 결과, 노드에 대한 IP 어드레스가 변화할 예정이었더라도, 그 노드 ID 는 오버레이 네트워크의 경우 동일하게 유지된다. 따라서, 오버레이 네트워크는 IP 계층 인프라스트럭처에 의존하지 않고, 대신에 그 노드들 간에 피어-투-피어 통신에 대한 노드 ID들을 이용한다. 부가적으로, 이러한 오버레이 네트워크는 그 오버레이 네트워크가 임의의 실패 단일점 (single point of failure) 에 의해 손상되지 않도록 그의 노드들에 걸쳐 분산 해시 테이블 (DHT) 을 구현할 수도 있다.
일 예에서, P2PSIP 오버레이 네트워크는 세션 개시 프로토콜 (Session Initiation Protocol; SIP) 등록, SIP 메시지 전송 및 P2P 네트워크를 이용한 유사한 기능들을 제공하는 노드들의 군집 (association), 집합 (collection) 및/또는 연합 (federation) 일 수도 있다. 세션 개시 프로토콜 (SIP) 은 인터넷 및 다른 네트워크들을 통해 보이스 및 비디오 콜과 같은 멀티미디어 통신 세션을 셋업 및 해체 (tear down) 하기 위해 폭넓게 이용되는 시그널링 프로토콜이다. SIP 프로토콜은, 피어-투-피어 (P2P) 네트워크들 (즉, P2PSIP) 이 SIP 요청들의 타겟들을 해결하고, SIP 메시지 전송을 제공하며, 다른 SIP-관련 기능들을 제공하도록 구성되었다.
본원에 설명된 다양한 양태들은 중앙집중 및/또는 분산 피어-투-피어 오버레이 네트워크 아키텍쳐들에서 구현될 수도 있다. 도 1 및 도 2 는 각각 분산 및 중앙집중 오버레이 네트워크들의 예들을 예시한다.
도 1 은 DHT 가 피어-투-피어 오버레이 네트워크의 동작을 용이하게 하기 위해 동작할 수도 있는 방법을 예시한 도면이다. 이 예는 오버레이 네트워크를 링으로 예시하고 있지만, 이는 단지 단순화를 위한 것이며, 다른 오버레이 네트워크 아키텍쳐들이 가능하고 예상된다. 피어-투-피어 오버레이 네트워크 A (100) 가 복수의 노드들 (A (102), B (104), C (106), D (108), E (110) 및/또는 F (112)) 에 의해 형성될 수도 있다. 각각의 노드는 오버레이 네트워크 A (100) 에 대해 DHT (예를 들어, 노드 명, 노드 식별자) 의 일부를 유지할 수도 있다. 각각의 노드는 식별자 공간으로부터 선택된, 오버레이 네트워크 (100) 의 DHT (114) 에 고유한 노드 식별자 (노드 ID) 를 갖는다. 마찬가지로, 네트워크 (100) 에 저장된 각각의 서비스 또는 오브젝트는 식별자 공간으로부터 또한 선택된, 고유한 식별자를 가질 수도 있다. 모든 노드 ID들은 동일한 식별자 공간의 부분일 수도 있으며, 이 동일한 식별자 공간은 보통 충돌을 회피하기 위해 매우 넓다. 참여 노드들의 세트의 변화가 최소한의 중단을 야기하는 그러한 방식으로, 노드 ID들의 유지 (예를 들어, 노드 명으로부터의 노드 식별자와의 맵핑) 에 대한 책임이 노드들 간에 분산된다. 각각의 노드는, 통상적으로 그 자신의 노드 ID 로부터 시작하여 그 이웃들 중 하나 이상의 노드 ID 까지 이르는, 식별자 공간의 일부에 대해 책임이 있을 수도 있다. 노드는 오브젝트들을 저장하고/하거나 책임이 있는 범위 내의 임의의 위치에 맵핑하는 오브젝트들에 대한 질의들에 응답할 책임이 있을 수도 있다. 각각의 노드는 다른 노드들 (그의 이웃들 또는 라우팅 테이블) 에 대해 일 세트의 링크들을 유지할 수도 있다. 공동으로, 이들 링크들은 오버레이 네트워크를 형성한다. 노드는 그의 이웃들을 네트워크의 토폴로지라 불리는 소정의 구조에 따라 고른다.
암호화 해시 함수가 식별자들 (ID들) 을 오버레이 네트워크 (100) 내의 노드들, 오브젝트들 및 서비스들의 인스턴스들에 할당하는데 이용될 수도 있다. 대부분의 DHT들은 해시 키들 (즉, 식별자들) 을 노드들 및/또는 서비스들에 맵핑시키기 위해 일관된 해싱의 약간의 변형을 이용한다. 이 기술은, 노드들 간의 지리적 거리 또는 네트워크 레이턴시와 관련 없는, 키 (k1) 로부터 키 (k2) 까지의 거리의 추상적 개념 (abstract notion) 을 정의하는 함수
Figure 112011044941222-pct00001
를 이용한다. 각각의 노드는 노드의 식별자 (즉, 노드 ID) 라 불리는 단일 키를 할당받는다. 식별자 값 (노드 ID) i 를 가진 노드는, 식별자 i 가
Figure 112011044941222-pct00002
에 따라 측정된 가장 가까운 ID 인 키들 (또는 식별자들) 모두를 소유한다 (또는 그에 대해 책임이 있다). DHT 네트워크 토폴로지들은, 임의의 키 k 에 대해, 노드가 k 를 소유하거나 상기 정의된 키스페이스 거리에 의하여 k 에 보다 가까운 노드에 대해 링크를 갖거나 하는 속성의 약간의 변형을 공유한다. 그 후, 그리디 알고리즘 (greedy algorithm) 을 이용하여 임의의 키 k (즉, 식별자) 의 소유자에게 메시지를 라우팅하는 것은 비교적 단순하다. 예를 들어, 각각의 노드에서, 노드 ID 가 키 k 에 가장 가까운 이웃 노드로 메시지가 포워딩된다. 이러한 이웃이 없는 (즉, 어떤 다른 이웃 노드도 보다 가까운 노드 ID 를 갖지 않는) 경우에는, 상기 정의한 바와 같이 키 k 의 소유자인, 가장 가까운 노드에 메시지가 도달했다는 것이 가정된다. 이런 스타일의 라우팅은 때때로 키-기반 라우팅이라 불린다. 일 예에서, DHT 는 (도 1 에 예시한 바와 같이) 키들을 원 상의 점들로서 다룰 수도 있고,
Figure 112011044941222-pct00003
는 k1 로부터 k2 까지의 원 둘레를 시계방향으로 이동하는 거리이다. 따라서, 원형 키스페이스는 종점들이 노드 식별자들 (노드 ID들) 인 연속적인 세그먼트들로 스플리팅된다. i1 및 i2 가 2 개의 인접한 ID들인 경우, ID i2 를 가진 노드는 i1 과 i2 사이에 놓인 키들 모두를 소유한다. 이 네트워크 토폴로지를 구현하는데 있어서의 효율적인 고려사항들로 인해, 요청들이 빨리 완료하도록 임의의 라우트 내의 홉들의 최대 수 (라우트 길이) 가 적고; 유지보수 오버헤드가 과도하지 않도록 임의의 노드의 이웃들의 최대 수 (최대 노드 디그리 (degree)) 가 적다는 것을 보장하는 것이 바람직할 수도 있다. 일 트레이드오프는, 보다 짧은 라우트들이 각각의 노드에 대해 다수의 이웃들 (즉, 보다 높은 최대 노드 디그리) 을 요구한다는 것에 주목한다.
일 예에서, 노드 C (106) 는, 하나 이상의 선행 (predecessor) 노드들 및 하나 이상의 후속 노드 (successor node) 들에 대한 노드 ID들을 유지한다는 점에서 DHT (114) 를 유지할 수도 있다. DHT (114) 는 단지 모든 노드 ID들의 서브세트, 즉 노드 C (106) 에 대한 노드 ID 에 근접한 노드 ID들의 서브세트만을 가질 수도 있다. 예를 들어, 노드 C (106) 에 대한 DHT (114) 는 노드 A (102) 및 노드 B (104) 에 대한 선행 노드 ID들 및 노드 D (108), 노드 E (110) 및 노드 F (112) 에 대한 후속 노드 ID들을 유지할 수도 있다. DHT들은 매우 많은 수의 노드들 (예를 들어, 네트워크 (100) 내의 216 개의 노드들) 로 크기를 조정할 수 있으며, 연속적인 노드 도착, 이탈 및 실패를 다룰 수 있다. 일 예에서, DHT 는 노드 ID들을 원 상의 점들로서 다룰 수도 있으며, δ(노드 IDi1, 노드 IDi2) 가 (예를 들어, 노드 C 로부터 일부 노드 IDx 까지의) 원 둘레를 시계방향으로 이동하는 거리이다. 따라서, 원형 식별자 공간은 종점들이 노드 식별자들 (노드 ID들) 인 연속적인 세그먼트들로 스플리팅된다. i1 및 i2 가 2 개의 인접한 노드 ID들이라면, ID i2 를 가진 노드는 i1 과 i2 사이에 놓인 키들 모두를 소유한다. 그 결과, DHT들은 보다 복잡한 서비스들 (예를 들어, 분산 파일 시스템, 피어-투-피어 파일 공유 및 컨텐트 분산 시스템들, 협동적 웹 캐싱, 멀티캐스트, 애니캐스트, 도메인 명 서비스 및 인스턴트 메시징) (각각의 이러한 서비스는 원형 식별자 공간 내의 식별자와 관련될 수도 있다) 을 형성하는데 이용될 수 있는 인프라스트럭처를 형성할 수 있다. 값이 특정 서비스 식별자에 가장 근접한 노드 ID 를 갖는 노드는 이러한 서비스를 호스팅 (예를 들어, 특정 파일을 저장 또는 "서비스" 식별자에 의해 식별된 서비스를 제공 등) 하는 것으로 가정될 수도 있다. 예를 들어, DHT (114) 를 참조하면, 서비스가 "79" 의 식별자 값을 갖는 경우에는, 노드 C (106) 와 관련된 노드 ID "73" 에 가장 가깝고, 따라서 이러한 서비스에 대한 임의의 요청이 결국은 노드 C (106) 에서 끝난다.
도 2 는 중앙집중 레지스트라 (신뢰 기관) 가 노드 ID들을 오버레이 네트워크 내의 복수의 노드들에 할당하도록 기능할 수도 있는 방법을 예시한 블록도이다. 오버레이 네트워크 (100) 의 경우, 중앙집중 레지스트라 (202) 는 노드 ID들을 복수의 네트워크 노드들 (102, 104, 106, 108, 110, 112, 116 및/또는 118) 에 제공하여 DHT (204) 를 형성하도록 기능할 수도 있다. 네트워크 노드가 노드 ID 를 획득하려고 시도할 때마다, 노드 식별자의 할당을 요청하는 메시지를 중앙집중 레지스트라 (202) 로 전송한다. 중앙집중 레지스트라 (202) 는 그 후 요청 노드에 대한 노드 ID 를 컴퓨팅하고, 그 노드 ID 를 요청 노드에 할당하여 요청 노드로 전송한다.
일부 구현에서, 중앙집중 레지스트라 (202) 는 임의의 오버레이 네트워크 동작에 참여하지 않을 수도 있으며, 이로써, 다른 노드들에 의한 노드 ID 검증에도 영향을 미치지 않을 가능성이 있을 수도 있다. 이러한 중앙집중 레지스트라 (202) 의 일 예는 요청 노드들로부터 공개 키들을 수신하고, 노드 ID들을 할당하며, 노드 ID들의 노드들에의 맵핑을 어써트 (assert) 하는 증명 기관 (certificate authority; CA) 을 포함할 수도 있다. 예를 들어, CA 는 요청 노드의 공개 키를 이용하여 노드 ID 의 맵핑을 서명할 수도 있다. 요청 노드는 그 후 증명된 노드 ID 를 다른 노드들에 제시하고 증명서에 포함된 공개 키의 소유를 입증할 수 있다. 그 노드는 소정의 송신 컨텐트들을 그의 개인 키로 서명함으로써 이런 소유를 입증할 수 있다. 다른 노드들은 노드의 증명서에 의해 증명된 공개 키를 이용하여 결과의 서명된 컨텐트를 검증할 수 있다. 오버레이 네트워크 특정 중앙집중 레지스트라는 이러한 오버레이 네트워크들의 채용을 촉진하는데 관여된 소정의 오버레이 네트워크 또는 엔티티들의 생산자에 의해 개발될 수도 있으며, 또는 네트워크 운영자들에 의해 또한 제공될 수도 있다.
중앙집중 레지스트라를 이용하는데 있어서의 한가지 약점은, 피어-투-피어 오버레이 네트워크의 모든 잠재적 멤버들 (예를 들어, 노드들) 이 중앙집중 레지스트라를 소유 및 동작시키는 단일 기관을 신뢰하기가 어려울 수도 있다는 것이다. 일부 구현에서, 오버레이 네트워크 노드들이 노드 ID 할당을 위해 외부 기관 (즉, 중앙집중 레지스트라) 에 완전히 의존하기 보다는, 중앙집중 레지스트라 (202) 는 대신에 해시 함수에 대한 랜덤 입력을, 해시 함수에 대한 다른 랜덤 입력을 제공하는 노드 그 자체에 제공할 수도 있다. 이들 2 개의 입력들 각각은 노드 ID 가 그것을 청구하는 노드에 속한다는 것을 검증하는데 있어서 검증기 (verifier) 노드에 의해 이용될 것이다.
중앙집중 레지스트라는 단일 엔티티 또는 노드가 획득할 수 있는 노드 ID들의 수를 제한할 수도 있다. 예를 들어, 운영자 소유 중앙집중 레지스트라의 경우에 있어서, 노드 ID들은 서비스 가입과 결부될 수도 있다.
도 3 은 네트워크 내에서 구현될 수도 있는 프로토콜 계층구조의 일 예를 예시한 블록도이다. 이 예에서, 오버레이 네트워크는 전송 계층 (306), 네트워크 계층 (308), 링크 계층 (310), 및/또는 물리 계층 (312) 을 포함하는 프로토콜 스택 상에 형성될 수도 있다. 이들 기저 계층들 위에는, 오버레이 계층 (304) 이 구현될 수도 있는데, 이는 P2P 및/또는 SIP 프로토콜들을 포함할 수도 있다. 오버레이 계층 (304) 위에는, 서비스들이 지원되는 사용 계층 (302) 이 형성될 수도 있다. 사용 계층 (302) 은 또한 애플리케이션 계층 또는 데이터 계층으로 지칭될 수도 있다. "계층들" 은 또한 "레벨들" 로 지칭될 수도 있다. 다른 예상 구현들은 다른 또는 등가의 계층들을 포함할 수도 있고/있거나 일부 계층들을 생략할 수도 있다는 것에 주목한다. 어떤 뜻으로는, 사용 계층 (302) 은 다른 계층들 (304 내지 312) 에 대하여 탑 계층 또는 최상위 계층인 것으로 간주될 수도 있다. 마찬가지로, 물리 계층 (312) 은 다른 계층들 (302 내지 310) 에 대하여 바텀 계층 또는 최하위 계층인 것으로 간주될 수도 있다.
피어-투-피어 컴퓨팅의 본질은, 각각의 피어가 서비스를 다른 피어들에 제공하여 오버레이가 더 많은 기능들을 일괄하여 제공하는 것을 허용하는 것이다. P2PSIP 에서, 피어 노드들은 저장 및 전송 서비스들을 제공하여 분산 데이터베이스 기능 및 분산 전송 기능이 구현되는 것을 허용한다. 개개의 피어들이 또한 다른 서비스를 제공할 수도 있다는 것을 생각할 수 있다. 이들 부가적인 서비스들 중 일부 (예를 들어, STUN (Simple Traversal of UDP through NATs) 서버 서비스) 는 오버레이 네트워크가 형성 및 동작하는 것을 허용하도록 요구될 수도 있는 한편, 다른 서비스들 (예를 들어, 보이스메일 서비스) 은 기본적인 P2PSIP 기능성에 대한 인헨스먼트들일 수도 있다. 오버레이 네트워크의 노드들은, 피어 노드들이 어느 서비스들을 제공하는지, 및 어쩌면 각각의 피어 노드가 각각의 열거된 서비스를 전달하기 위해 갖는 커패시티의 종류가 무엇인지에 관한 정보를 저장할 필요가 있을 수도 있다.
도 1 및 도 2 에 예시된 노드들은 인증된 데이터 저장을 구현할 수도 있다. 예를 들어, 공개 노드 A (102) 는 리소스 ID 를 생성할 수도 있으며, 그 리소스 ID 를 저장될 데이터와 관련시킨다. 리소스 ID 는 예를 들어, 저장 노드의 역할을 하는 노드 F (112) 에 맵핑할 수도 있다. 여기에 설명된 다양한 특징들은 도 1 및 도 2 의 오버레이 네트워크들 뿐만 아니라 다른 타입의 오버레이 네트워크들에서 구현될 수도 있다.
분산 P2P 네트워크들에서의 데이터 저장 및 인가
피어-투-피어 (P2P) 오버레이 네트워크의 일 예는, IETF (The Internet Engineering Task Force) 에 의해 표준화되고 있는 P2PSIP (Session Initiation Protocol) 이다. 본원에 설명된 다양한 데이터 저장 인가 특징들은 P2PSIP-컴플라이언트 네트워크에서 구현될 수도 있다. P2PSIP 의 일부로서, 오버레이 예시화의 위에 사용 (usage) 들이 정의되는 것을 허용할 수도 있는 리소스 할당이 고려될 수도 있다. 사용들은 각각의 종류 마다 대응하는 데이터 모델에 따라 다양한 종류의 데이터를 정의할 수도 있다. 오버레이 내의 특정 노드 상에 데이터를 저장하기 위하여, 저장되는 데이터의 타입 또는 종류가 식별될 수도 있고, 리소스 ID 는 증명된 사용자 명 또는 노드 ID 를 이용하여 컴퓨팅될 수도 있으며, 여기서 관심 증명서 및 리소스 ID 계산 메커니즘이 소정 사용에 의해 정의될 수도 있다.
이런 이유로, 오버레이 네트워크 내의 모든 노드들이 그 오버레이 네트워크 상에서 제공될 수도 있는 모든 사용들을 지원할 필요가 있을 수도 있다. 또한, 사용들이 보다 새로운 버전들로 발전하는 경우에는, 모든 노드들이 모든 사용들에 대해 동일 버전을 지원할 필요가 있을 수도 있다. (예를 들어, 중앙집중 노드 기관이 이용가능하지 않은) 분산 네트워크에서, 이것은 모든 노드들을 업데이트하기 위한 "n day" 를 요구할 수도 있다. 그러나, 업데이트 데이를 갖는 것은 부담이 되고, 보통 실질적인 네트워크 구현의 경우 비현실적이다.
그 결과, 저장 및 오버레이-레벨 데이터 인가를 사용 불가지론적 (agnostic) (예를 들어, 특정 사용법들, 데이터 타입들에 대해 독립적) 으로 보존할 필요가 있다. 그렇게 함으로써, 오버레이 네트워크들은 이질적 사용들을 지원할 뿐만 아니라 시간의 경과에 따라 업그레이드물들이 진화하는 것을 허용할 수 있다. 그 결과, 오버레이 계층에 제공된 속성들 및 프리미티 (primity) 기능들은 사용 계층에 대해 독립적으로 유지 및 보존될 수도 있다. 일 예에서, "오버레이 계층" (또는 오버레이 레벨) 이라는 용어는 프로토콜 계층구조에서 사용 계층 아래에 있고 전송 계층 위에 있는 계층들에서의 동작들을 지칭하는데 이용될 수도 있다. "애플리케이션 계층" 및/또는 "사용 계층" 이라는 용어들은 프로토콜 계층구조의 사용 계층에서의 동작들을 지칭하는데 이용될 수도 있다.
도 4 는, 일 예에서 오버레이 네트워크에서의 데이터 저장 요청을 위해 이용될 수도 있는 메시지 헤더 아키텍처의 일 예를 예시한 도면이다. 그러나, 다른 타입의 메시지 헤더가 이용될 수도 있다. 메시지의 바디 (미도시) 는 메시지 헤더 아키텍처의 다음에 올 수도 있다. 헤더 아키텍처는 대부분의 구조들이 길이가 4 의 배수의 바이트들이기 때문에 4-바이트-로우들 (rows) 로 도시된다. 바이트들은 수평 축 상의 메이저 (major) 해시 마크들이다. 비트들은 수평 액세스 상의 마이너 (minor) 해시 마크들이다. 각각의 메시지 또는 로우에 대한 시작 바이트 (0 으로부터 카운팅) 는 수직 액세스 상에 도시된다. 처음의 4 바이트들 (402) (제 0 내지 제 3 바이트) 은 메시지 타입 또는 종류를 식별하는데 이용될 수도 있다.
제 4 바이트 (410) 는 메시지가 폐기되기 전에 경험할 수 있는 반복 또는 홉들의 수를 나타내는 TTL (time-to-live) 필드이다. TTL 필드는 각각의 홉의 감소를 나타내게 되고, TTL 이 제로인 경우에는 메시지가 더 이상 홉 포워딩되어서는 안된다.
제 5 바이트 (412) 는 라우팅이며, 후속될 라우팅의 타입을 나타낸다. 라우팅은 예를 들어 프록시 또는 리다이렉트 (redirect) 일 수도 있다. FRAG 필드 (414) 는, 메시지가 프래그먼트 (fragment) 인지 여부를 나타내는데 이용되는 제 6 바이트 (418) 내의 1 비트 필드이다. LFRG 필드 (416) 는 이것이 완전한 메시지 내의 마지막 프래그먼트인지 여부를 특정하는데 이용되는 제 6 바이트 내의 1 비트 필드이다. (제 6 바이트 (418) 로부터의 6 비트들과 제 7 바이트 (420) 의 8 비트들 전부를 더한) 14 비트들이 프래그먼트 오프셋 및 총 길이를 나타내기 위해 예비된다.
EXP 필드 (422) 는 이용되는 프로토콜이 경험적인지 여부를 특정하는 1 비트 필드이다. 버전 필드 (424) 는 이용되는 P2PSIP 프로토콜의 버전을 나타내는 7 비트 필드이다. DHT 필드 (426) 는 이용되는 DHT 알고리즘을 특정하는 8 비트 필드이다. 코드 (Chord) DHT 알고리즘이 이용될 수도 있다. 다른 DHT 알고리즘들이 가능하다.
해시 필드 (428) 는 ID들을 생성하는데 이용되는 해시 알고리즘을 특정하는 8 비트 필드이다. 오버레이에 대해 이용되는 모든 ID들은 동일한 알고리즘을 이용하여 계산되어야 하며 또는 계산될 필요가 있다. 알고리즘의 일 예는 SHA-1 알고리즘이며, 이는 다른 해시 알고리즘들이 이용될 수도 있는 160 비트 해시 값을 생성한다. 보안 필드 (430) 는 오버레이에서 참여자들에 의해 이용되는 보안 메커니즘을 나타내는 8 비트 필드이다.
R/r 비트 (432) 는 이것이 요청인지 응답인지를 특정하는데 이용되는 1 비트 필드이다. 방법 필드 (434) 는 메시지 방법을 나타내는 7 비트 필드이다. 적어도 4 가지 방법 타입들, 즉, 피어, 리소스, 전송 및 DHT 특성이 있다. 방법 타입은 방법의 처음 2 비트 (434) 에 의해 특정된다. 나머지 5 비트는 특정 방법을 특정하는데 이용된다. 방법 예는, "피어-가입 (peer-join)", "피어-검색 (peer-search)", "리소스-겟 (resource-get)", "리소스-풋 (resource-put)", "리소스-전송 (resoure-transfer)", "전송-오픈 (transport-open)" 및 "전송-터널 (transport-tunnel)" 이다. "피어" 라는 용어는 오버레이 네트워크 내의 노드를 지칭할 수도 있다는 것에 주목한다.
길이 필드 (435) 는 헤더를 포함하지 않는, 메시지의 크기의 바이트 단위 카운트이다. 목적지 ID 필드 (436) 는 목적지 노드 또는 리소스를 고유하게 식별하는 160 비트 식별자 (예를 들어, 노드 ID 또는 리소스 ID) 이다. 소스 ID 필드 (438) 는 전송자를 고유하게 식별자는 160 비트 식별자 (예를 들어, 노드 ID 또는 리소스 ID) 이다.
트랜잭션 ID 필드 (440) 는 트랜잭션을 식별하고 또한 요청 및 응답을 랜덤화하기 위한 솔트 (salt) 또는 시드 (seed) 의 역할을 하는 고유한 64 비트 수이다. 응답은 그들이 대응하는 요청과 동일한 트랜잭션 ID 를 이용할 수도 있다. 오버레이 ID 필드 (442) 는 이용되는 오버레이의 32 비트 검사합 또는 해시이다. 검사합은 오버레이 명을 나타내는 가변 길이 스트링을 32 비트 값으로 변환하는데 이용될 필요가 있거나 이용되어야 한다. 32 비트 오버레이 필드는 무결성 검사를 제공한다. 노드들이 의도된 오버레이 네트워크와 상호작용하고 있다는 것을 검증할 수 있도록 오버레이 명을 나타내는 디지털 서명을 제공할 수도 있다.
불가지론적 오버레이 거동
매우 근본적인 레벨에서, DHT 는 여러 애플리케이션들이 존재할 수도 있는 키-기반 라우팅을 제공한다. 오버레이 프로토콜들은 종종 저장 및 검색 시맨틱들을 제공하고, 노드들에 대한 피어-투-피어 접속성을 허용한다. 이들은 광범위한 애플리케이션들에 의해 이용될 수도 있는 매우 기본적인 프리미티브들이다. P2PSIP 워킹 그룹의 범위 내의 SIP-기반 부류의 애플리케이션들의 경우라도, 오버레이 내의 다양한 노드들에 대해 존재할 수도 있는 여러 애플리케이션들이 있다. 오버레이 내의 모든 노드들이 동일한 애플리케이션들을 지원할 필요는 없다. 또한, 소정의 애플리케이션은, 보다 새로운 버전이 잠재적으로는 오버레이 상에 저장 및 검색될 새로운 종류의 데이터를 정의하는 상태로, 시간의 경과에 따라 진화할 수도 있다.
사용에 대해 독립적인 저장 기능과 같은 오버레이 프리미티브들은, 소정 사용에 대응하는 데이터를 저장하기 위하여 그 사용을 오버레이 네트워크 내의 모든 노드들이 지원하는 것을 요구하지 않는다는 점에서 이롭다. 사용은 물론 그 사용들을 지원하는 노드들에 의해 인터프리팅될 수도 있는 사용 레벨에서 부가적인 메커니즘을 제공하지만, 이는 오버레이 프리미티브들에 대해 독립적이다.
이질적 사용 및 심지어는 동일한 사용의 잠재적 진화를 가정하면, 오버레이 네트워크는, 오버레이 프리미티브들에 대한 동작들이 사용들에 의해 정의되도록 허용된다면, 모든 노드들을 업그레이드하기 위한 플래그 데이 (또는 동기화 주기) 를 필요로 할 수도 있다. 오버레이는 그 후 이용불가능하게 될 것이며, 또는 양립불가능한 사용들이 다양한 노드들 상에 존재하는 경우에는 예측불가능한 거동을 초래할 것이다. 따라서, 사용들이 소정의 입력들을 제공하기 위해 오버레이 계층과 인터페이스하도록 허용되어야 하지만, 저장과 같은 오버레이 프리미티브들에 대한 동작들은 오버레이 계층들 내에 정의 및 포함되어야 한다.
실시예 - 탑 레벨 데이터 인가 스킴
피어-투-피어 오버레이 네트워크에서의 데이터 인가의 제 1 예에 따르면, 리소스 식별자가 제 1 스트링과 제 2 스트링의 조합에 기초하여 생성될 수도 있으며, 여기서 제 1 스트링은 저장 노드에 의해 독립적으로 인증가능하고, 리소스 식별자는 저장 노드에 의해 검증가능하다. 예를 들어, 제 1 스트링은 공개 노드 ID 또는 그의 등가물일 수도 있다. 제 2 스트링은 임의의 스트링 또는 미리 정의된 스트링일 수도 있다. 공개 노드는 리소스 식별자 및 저장될 데이터를 포함하는 저장 요청을 생성할 수도 있다. 저장 요청은 저장 노드에 저장되도록 오버레이 네트워크를 통해 전송될 수도 있으며, 여기서 저장 노드는 리소스 식별자를 포함하는 식별자 공간에 대해 책임이 있다. 저장 노드는 리소스 식별자를 검증함으로써 프로토콜 계층구조의 오버레이 레벨에서 독립적인 저장 인가를 수행할 수도 있다.
도 5 는 분산 데이터 저장 및 인가가 피어-투-피어 오버레이 네트워크에서 수행될 수도 있는 방법의 일 예를 예시한 블록도이다. 공개 노드 A (502) 는 오버레이 네트워크에서 데이터 명에 의해 식별될 수도 있는 데이터 (즉, 데이터 값) 를 저장하려고 시도할 수도 있다. 공개 노드 A (502) 는 공개 노드 ID 및 공개 키 Pk-A (대응하는 개인 키 Prv-A 를 가짐) 를 가질 수도 있다. 증명서 Cert-A 는 증명 엔티티 (508) 로부터 공개 노드 A (502) 에 의해 획득될 수도 있으며, 증명서 Cert-A 는 그의 공개 키 Pk-A 의 함수이다.
공개 노드 A (502) 가 오버레이 네트워크에서 데이터를 저장하길 원하는 경우, 관련 리소스 ID 를 제 1 스트링과 제 2 스트링의 함수로서 생성할 수도 있다. 일 예에서, 제 1 스트링은 공개 노드 ID 일 수도 있다. 제 2 스트링은 미리 결정된 스트링 (예를 들어, 데이터, 사용 또는 데이터 타입을 기술) 일 수도 있으며, 또는 임의의 스트링일 수도 있다. 제 2 스트링이 미리 결정된 스트링인 경우에는, 계층구조의 부분일 수도 있고, 또는 스트링 컴포넌트들의 연속 (concatenation) 일 수도 있다. 다양한 예들에서, 제 1 스트링 및/또는 제 2 스트링 각각은 알파, 알파-뉴머릭, 및/또는 뉴머릭 시퀀스의 심볼들일 수도 있다. 공개 노드 A (502) 는 또한 서명 Sig-A 를 (예를 들어, Cert-A 로 데이터 값을 서명함으로써) Cert-A 및 저장될 데이터의 함수로서 생성할 수도 있다.
저장 요청 (504) 이 그 후 공개 노드 A (502) 에 의해 생성 및 전송될 수도 있다. 저장 요청 (504) 은 리소스 ID, 데이터 명, 데이터 값, 제 1 스트링, 제 2 스트링, 공개 키 Pk-A 및 서명 Sig-A 를 포함할 수도 있다.
이 예에서, 리소스 ID 는 노드 B (506) 가 책임이 있는 리소스 공간에 맵핑할 수도 있다. 저장 요청 (504) 의 수신 시에, 저장 노드 B (506) 는 요청 노드가 실제로는 공개 노드 A (502) 라는 것을 인증할 수도 있다. 일 예에서, 이런 인증은 공개 키 Pk-A 를 포함할 수도 있는 증명서 요청 (510) 을 증명 엔티티 (508) 로 전송함으로써 달성될 수도 있다. 응답으로, 저장 노드 B (506) 는 공개 키 Pk-A 의 함수인 검증 증명서 Ver. Cert-A 를 가진 증명서 응답 (512) 을 수신할 수도 있다. 수신된 서명 Sig-A 가 Ver. Cert-A 로 서명되는 수신된 데이터 값의 로컬로 생성된 서명과 매칭한다면, 저장 노드 B (506) 는 저장 요청 (504) 의 인증성 (authenticity) 을 성공적으로 검증했다. 그렇지 않고, 수신된 서명 Sig-A 가 로컬로 생성된 서명과 매칭하지 않는다면, 저장 요청 (504) 은 거절 또는 무시될 수도 있다.
Sig-A 의 성공적인 검증 시에, 저장 노드 B (506) 는 수신된 데이터를 저장할 수도 있다. 이 예에서, 리소스 ID 필드 (516) 및 데이터 명, 데이터 값 및 제 1 스트링을 포함하는 제 2 필드 (518) 를 포함하는 데이터 구조 (514) 가 이용된다.
도 5 에 예시된 스킴은 피어-투-피어 오버레이 네트워크에서 데이터 저장 인가 및 액세스를 구현하기 위한 다양한 바람직한 특징들을 제공한다는 것에 주목한다.
첫째로, 데이터 인가는 데이터 소유자 (공개 노드 A (502)) 가 실제로는 그 특정 리소스 ID 에 저장하도록 인가된다는 것을 저장 노드 B (506) 가 검증하는 것을 허용할 수도 있다. 일 예에서, 저장 노드 B (506) 는 로컬로 생성된 리소스 ID 로 수신된 리소스 ID 를 검증함으로써 이것을 달성할 수도 있다. 저장 노드 B (506) 는 제 1 스트링 (예를 들어, 공개 노드 식별자) 및 제 2 스트링을 알고 있거나 획득할 수 있기 때문에, 수신된 리소스 ID 와 비교하기 위해 로컬 리소스 ID 를 재컴퓨팅할 수 있다. 공개 노드 A (502) 에 의해 이용되는 제 2 스트링은 저장 노드 B (506) 에 알려져 있을 수도 있다. 예를 들어, 제 2 스트링은 (저장 요청 (504) 에서 수신된) 사용 타입일 수도 있고, 또는 데이터 명일 수도 있다. 그 결과, 저장 노드 B (506) 는 저장 요청 (504) 에서 수신된 제 1 스트링 및 제 2 스트링을 이용하여 리소스 ID 의 로컬 버전을 컴퓨팅하고, 그것을 수신된 리소스 ID 와 비교한다. 이는 데이터가 소정의 노드에 의해 저장될 수 있는 저장 위치들의 수를 오버레이 네트워크가 제한하는 것을 허용하기 때문에, 단일 노드의 오버레이에서 이용가능한 분산 쿼터 (quota) 에 대한 영향을 제한한다.
일반적인 의미로, 리소스 ID 검증은 제 1 스트링의 인증가능한 증명을 제공하는 것에 기초한 후, 제 1 스트링 및 제 2 스트링 (예를 들어, 사용 타입) 의 널리 공지된 함수 (또는 함수에 대한 합의) 가 저장의 ID 공간에 맵핑한다는 것을 검증할 수도 있다. 제 1 스트링의 인증가능한 증명은 예를 들어 비대칭 키 동작 (예를 들어, 공개/개인 키 쌍의 이용) 에 기초할 수도 있다. 검증 리소스 식별자를 얻는 몇몇 잠재적으로 독립적인 방법들이 있다. 제 1 방법은, 특정 타입의 서비스/사용 (즉, 제 2 스트링) 이 인가된다는 것을 알리기 위해 서비스 공개 저장 요청을 수락하는 저장 노드들을 예상하는 것일 수도 있다. 즉, 그 서비스/사용은 오버레이 네트워크의 미리 정의되고 널리 공지된 노드들일 수도 있다. 제 2 방법은, 저장 노드들에 의해 수락될 "제 2 스트링들" 의 모든 조합을 예상하는 것일 수도 있다. 제 3 방법은, 모든 노드들에 의해 인정된 기관에 의해 독립적으로 서명된 제 2 스트링을 갖는 것일 수도 있다.
그러나, 오버레이 네트워크의 상이한 저장 노드들 주위에 공개 노드 A (502) 로부터의 데이터를 스프레딩하는 능력이 또한 바람직하다. 복수의 저장 노드들 중에서 데이터 저장을 스프레딩하는 능력이 없다면, 소정의 저장 노드는 헤비 공개 노드로부터의 모든 데이터에 의해 부담될 수도 있다. 리소스 ID 가 적어도 부분적으로 제 2 스트링에 기초하는 도 5 의 스킴을 이용함으로써, 공개 노드 A (502) 로부터의 상이한 데이터는 상이한 제 2 스트링을 가져, 상이한 리소스 ID들을 초래할 수도 있다. 즉, 제 2 스트링은 상이한 타입의 데이터 또는 사용 마다 변화할 수도 있으며, 또는 매번 임의적일 수도 있다. 그 결과, 상이한 저장 노드들 간에 데이터에 맵핑하고 그 데이터를 스프레딩하는 상이한 리소스 ID들이 생성될 수도 있다.
둘째로, 데이터 인가는, 어느 노드들이 특정 리소스 ID 에 기록하도록 허용되는지를 데이터 소유자가 제어하는 것을 허용한다. 즉, 저장 노드 B (506) 는 저장 요청 (504) 을 인증하여, 단지 인가된 노드만이 이러한 요청을 행할 수 있다는 것을 검증할 수도 있다. 예를 들어, 도 5 에서, 단지 공개 노드만이 정확한 서명 Sig-A 를 생성할 수 있게 하기 위해 정확한 증명서 Cert-A 를 가져야 한다. 저장 노드 B (506) 는 정확한 서명이 (증명 엔티티 (508) 를 이용함으로써) 이용되었다는 것을 검증할 수 있다. 이것이 없다면, 임의의 노드는 소정의 리소스 ID 의 컨텐트들을 잠재적으로 중복기재할 수도 있다.
데이터 인가 특성들은 사용 독립적일 수도 있다. 즉, 오버레이 저장을 위한 데이터 인가가 사용 불가지론적 방식으로 제공될 수도 있다. 따라서, 오버레이 네트워크 내의 저장 노드는, 저장될 데이터가 속하는 특정 사용/서비스/애플리케이션을 지원할 필요가 없이, 다른 노드로부터의 저장 요청의 인가를 검증할 수 있다. 즉, 저장 노드가 특정 타입의 서비스 또는 애플리케이션을 지원하든 안하든 간에, 저장되는 임의의 타입의 데이터의 인가 검증을 구현할 수 있다.
도 5 에 예시한 바와 같이, 데이터 인가는, 비인가된 노드들이 저장 노드 B (506) 에 저장한 리소스 ID 내의 특정 아이템들 (예를 들어, 데이터 값) 의 컨텐트들에 기록할 수 없거나 또는 그 컨텐트들을 변경할 수 없다는 것을 데이터 소유자 (예를 들어, 공개 노드 A (502)) 가 보장하는 것을 허용할 수도 있다. 이 데이터 인가 특징의 보증은 이러한 데이터 인가 특징을 실시하는 저장 노드 (예를 들어, 저장 노드 B (506)) 의 협동에 의존할 수도 있다.
인가된 저장 요청은 오버레이 네트워크 내의 임의의 노드에 의해 독립적으로 검증가능할 수도 있다. 다시 말해서, 리소스 ID 의 컨텐트들 (예를 들어, 데이터 명, 데이터 값) 을 검색하는 노드는, 데이터 소유자 (예를 들어, 공개 노드 A) 가 그 리소스 ID 에 저장하도록 인가되었다는 것을 검증하는 것이 가능할 수도 있다.
도 5 에 예시한 바와 같이, 소정의 공개 노드 (예를 들어, 노드 A (502)) 는 오버레이 네트워크 내의 다수의 노드 위치들에 정보 또는 데이터를 저장하는 것이 가능할 수도 있다. 이는 단일 노드에만 의존하지 않고 오버레이 네트워크 내의 복수의 저장 노드들에 걸쳐 노드가 그의 데이터를 스프레딩하는 것을 허용하여, 상이한 사용들이 저장되고 있을 때 로드 밸런싱을 달성한다. 이러한 데이터 저장 스프레딩을 네이티브적으로 제공하는 오버레이 저장 프리미티브들이 질의들 및 저장 그 자체를 다루는데 있어서 본질적으로 유용하다.
오버레이 레벨에서의 데이터 인가는 오버레이 네트워크에 의해 인정되는 오버레이 레벨 자격 증명서 (예를 들어, 증명 엔티티 (508) 에 의해 제공된 증명서 Cert-A 또는 자체-서명된 증명서) 에 기초할 필요가 있거나 또는 그 오버레이 레벨 자격 증명서에 기초할 수도 있다. 사용 특정 증명서는 그 사용을 지원하지 않는 노드들에 의해 인정될 수 없기 때문에, 오버레이 레벨 데이터 인가를 위해 실행가능한 후보자가 아니다.
스트링과 인증자 명 양자가 리소스 ID 를 생성하는데 이용되는 이런 탑 레벨 인가 스킴은, 오버레이 레벨에서 저장 인가를 용이하게 하였다. 리소스 ID 를 생성하기 위해 스트링 (예를 들어, 사용-특정 스트링) 을 이용함으로써, 이는 특정 노드로부터의 상이한 데이터가 저장 노드들 간에 분산 또는 스프레딩되도록 하여, 로드 밸런싱 기능을 달성한다.
실시예-하위 레벨 데이터 인가 스킴
오버레이 네트워크는 서비스를 제공하는 엔티티의 노드 ID (또는 사용자 명) 의 이전 지식을 갖지 않고 탐색 노드가 서비스 (사용, 서비스 또는 애플리케이션과 관련된 저장 데이터) 를 룩업하는 능력을 제공할 수도 있다. 예를 들어, TURN (Traversal Using Relay NAT) 서비스를 찾는 노드는 현실적으로 말해서 대응하는 사용자 명 또는 노드 ID 를 알 것으로 예상될 수 없다.
리소스 ID 컴퓨테이션은 리소스 ID 가 임의의 타입의 사용, 서비스 및/또는 애플리케이션을 식별하는데 이용될 수 있도록 사용 불가지론적 방식으로 수행될 수도 있다. 일부 경우에, 사용은 리소스 ID 컴퓨테이션으로의 사용-특정 입력들을 제공하도록 허용될 수도 있다. 즉, 리소스 ID 는 사용 (예를 들어, 각각의 특정 타입의 기능, 서비스 및/또는 애플리케이션) 에 의해 제공된 정보에 (적어도 부분적으로) 기초하여 컴퓨팅될 수도 있다.
이들 특징들 중 일부를 용이하게 하기 위하여, 변경된 접근법이 리소스 ID 를 생성하는데 이용될 수도 있다. 이 변경된 접근법에서, 리소스 ID 는 "제 1" 스트링 (예를 들어, 공개 노드 ID) 이 아닌 "제 2" 스트링만을 기초할 수도 있다. 그러나, 데이터 인가는 저장 노드 데이터 구조에서의 리소스 ID 와 "제 1" 스트링 (예를 들어, 공개 노드 ID) 을 관련시킴으로써 여전히 수행될 수도 있다. 예를 들어, 이러한 인가는 오버레이 레벨보다는 프로토콜 계층구조의 사용 레벨에서 수행될 수도 있다.
도 6 은 분산 데이터 저장 및 인가가 피어-투-피어 오버레이 네트워크에서 수행될 수도 있는 방법의 대안의 예를 예시한 블록도이다. 공개 노드 A (602) 는 오버레이 네트워크에서 데이터 명에 의해 식별될 수도 있는 데이터 (즉, 데이터 값) 를 저장하려고 시도할 수도 있다. 공개 노드 A (602) 는 공개 노드 ID 및 공개 키 Pk-A (대응하는 개인 키 Prv-A 를 가짐) 를 가질 수도 있다. 증명서 Cert-A 는 증명 엔티티 (608) 로부터 공개 노드 A (602) 에 의해 획득될 수도 있으며, 여기서 증명서 Cert-A 는 그의 공개 키 Pk-A 의 함수이다.
공개 노드 A (602) 가 오버레이 네트워크에서 데이터를 저장하길 원하는 경우에는, 관련 리소스 ID 를 스트링의 함수로서 생성할 수도 있다. "스트링" 은 미리 결정된 스트링 (예를 들어, 데이터, 사용 또는 데이터 타입을 기술) 일 수도 있다. 다양한 예에서, 스트링은 알파, 알파-뉴머릭 및/또는 뉴머릭 시퀀스의 심볼들일 수도 있다. 스트링은 또한 계층적 구조일 수도 있고 또는 스트링 컴포넌트들의 연속일 수도 있다. 공개 노드 A (602) 는 또한 서명 Sig-A 를 (예를 들어, Cert-A 로 데이터 값을 서명함으로써) Cert-A 및 저장될 데이터의 함수로서 생성할 수도 있다.
저장 요청 (604) 이 그 후 공개 노드 A (602) 에 의해 생성 및 전송될 수도 있다. 저장 요청 (604) 은 리소스 ID, 데이터 명, 데이터 값, 공개 노드 ID, 공개 키 Pk-A 및 서명 Sig-A 를 포함할 수도 있다.
이 예에서, 리소스 ID 는 노드 B (606) 가 책임이 있는 리소스 공간에 맵핑할 수도 있다. 저장 요청 (604) 의 수신 시에, 저장 노드 B (606) 는 실제로는 공개 노드 A (602) 인지 여부를 결정하기 위해 요청 노드를 인증할 수도 있다. 이는 정확한 증명서 Cert-A 가 요청 노드에 알려져 있고 공개 노드 ID 와 관련된다는 것을 검증함으로써 달성될 수도 있다. (예를 들어, 서명 Sig-A 를 검증함에 의한) 증명서의 성공적인 검증 시에, 저장 노드 B (606) 는 수신된 데이터를 저장할 수도 있다. 이 예에서는, 리소스 ID 필드 (616), 데이터 명 및 데이터 값을 포함하는 제 2 필드 (618) 및 공개 노드 ID 를 포함하는 제 3 필드 (620) 를 포함하는 데이터 구조 (614) 가 이용된다.
도 6 의 이 예에서, 단지 "스트링" 만이 리소스 ID 를 생성하는데 이용되고 있다. 이용된 "스트링" 은 오버레이 네트워크 상에서의 데이터 타입 또는 사용과 관련될 수도 있다. 그 결과, 오버레이 네트워크 내의 임의의 노드는 (예를 들어, 원하는 스트링을 이용함으로써) 리소스 ID 를 생성하고 오버레이 네트워크에서 동일한 리소스 ID 를 갖는 저장된 인스턴스들을 탐색함으로써 이러한 사용을 위한 저장된 데이터를 탐색 및/또는 발견할 수 있다.
저장 노드 B (606) 는 리소스 ID (616) 및 데이터 (618) 로부터 별개이거나 개인적인 공개 노드 ID (620) 를 유지한다는 것에 주목한다. 따라서, 저장 노드 B (606) 는 데이터 (618) 에 대한 액세스를 리소스 ID (616) 를 요청하는 탐색 노드들에 제공할 수도 있지만, 또한 그들이 관련 공개 노드 ID 및/또는 인증된 증명서 Cert-A 를 알고 있다는 것을 입증할 수 없다면 그 노드들이 데이터 (618) 를 삭제 또는 변경하지 못하게 할 수도 있다.
인증자 명 AuthName 이 리소스 ID 의 일부가 아니라 대신 데이터 부분에 첨부되는 이런 하위 레벨 인가 스킴은, 동일한 리소스 ID 하에서 다수의 노드들이 데이터를 저장하는 것을 허용하는 이점을 갖는다. 이는, 차례로, 탐색 노드들이 오버레이 네트워크에서 이 저장된 데이터를 발견하기 쉽게 만들어, 다양한 타입의 서비스를 용이하게 한다. 부가적으로, 리소스 ID 를 생성하기 위해 사용-특정 스트링을 이용함으로써, 이는 특정 노드로부터의 상이한 데이터가 저장 노드들 간에 분산 또는 스프레딩되게 하여, 로드 밸런싱 기능을 달성한다. 그러나, 다른 노드들이 특정 사용과 관련된 특정 타입의 데이터를 쉽게 탐색하는 것을 허용하는 플렉서빌리티를 대신하여, 데이터 액세스, 저장 및/또는 제거 인가가 오버레이 레벨보다는 하위 레벨 (예를 들어, 데이터 레벨) 에서 수행된다.
실시예-데이터 인가 스킴을 이용한 리소스 ID들의 공유
도 6 에 예시된 예에서, 리소스 ID 가 사용을 나타내는 미리 정의된 "스트링" 에 기초할 수도 있기 때문에, 상이한 노드들이 상이한 데이터를 저장하기 위해 동일한 리소스 ID 를 생성할 수도 있다는 것이 가능하다. 리소스 ID들이 특정 ID 공간에 맵핑하고 이러한 ID 공간이 오버레이 네트워크 노드들 간에 할당되기 때문에, 동일한 노드는 그 동일한 리소스 ID 의 복수의 인스턴스들에 대한 저장 노드의 역할을 할 수도 있다.
도 7 은 2 개의 상이한 공개 노드들이 피어-투-피어 오버레이 네트워크에서 동일한 리소스 ID 를 이용하여 데이터를 저장하려고 시도할 수도 있는 방법의 일 예를 예시한 블록도이다. 도 5 및 도 6 의 예들과 마찬가지로, 제 1 공개 노드 A (702) 는 오버레이 네트워크에서 데이터 (즉, 데이터 명 1, 데이터 값 1) 를 저장하려고 시도할 수도 있다. 공개 노드 A (702) 는 공개 노드 ID1, 공개 키 Pk-A (대응하는 개인 키 Prv-A 를 가짐) 및 (공개 키 Pk-A 의 함수일 수도 있으며, 공개 노드 ID1 과 관련되는) 증명서 Cert-A 를 가질 수도 있다. 공개 노드 A (702) 가 오버레이 네트워크에서 데이터를 저장하길 원하는 경우에는, 관련 리소스 ID 를 stringX 의 함수로서 생성할 수도 있다. "stringX" 는 미리 결정된 스트링 (예를 들어, 사용 또는 데이터 타입을 기술) 일 수도 있다. 다양한 예에서, stringX 는 알파, 알파-뉴머릭 및/또는 뉴머릭 시퀀스의 심볼들일 수도 있다. stringX 는 또한 계층적 구조일 수도 있고 또는 스트링 컴포넌트들의 연속일 수도 있다. 공개 노드 A (702) 는 또한 서명 Sig-A 를 (예를 들어, Cert-A 로 데이터 값 1 을 서명함으로써) Cert-A 및 저장될 데이터의 함수로서 생성할 수도 있다. 제 1 저장 요청 (706) 이 그 후 공개 노드 A (702) 에 의해 생성 및 전송될 수도 있다. 저장 요청 (706) 은 리소스 ID, 데이터 명 1, 데이터 값 1, 공개 노드 ID1, 공개 키 Pk-A 및 서명 Sig-A 를 포함할 수도 있다.
유사한 방식으로, 제 2 공개 노드 C (704) 는 공개 노드 ID2, 공개 키 Pk-C (대응하는 개인 키 Prv-C 를 가짐), 및 (공개 키 Pk-C 의 함수일 수도 있으며 공개 노드 ID2 와 관련되는) 증명서 Cert-C 를 가질 수도 있다. 공개 노드 C (704) 가 오버레이 네트워크에서 데이터를 저장하길 원하는 경우에는, 관련 리소스 ID 를 stringX 의 함수로서 생성할 수도 있다. 제 2 공개 노드 C (704) 가 제 1 공개 노드 A (702) 와 동일한 stringX 를 이용했기 때문에, 그들의 리소스 ID들은 동일하다는 것에 주목한다. 공개 노드 C (704) 는 또한 서명 Sig-C 를 (예를 들어, Cert-C 로 데이터 값 1 을 서명함으로써) Cert-C 및 저장될 데이터의 함수로서 생성할 수도 있다. 제 2 저장 요청 (708) 은 그 후 공개 노드 A (702) 에 의해 생성 및 전송될 수도 있다. 제 2 저장 요청 (708) 은 리소스 ID, 데이터 명 2, 데이터 값 2, 공개 노드 ID2, 공개 키 Pk-C 및 서명 Sig-C 를 포함할 수도 있다.
저장 노드 B (710) 는 저장 요청들 (706 및 708) 양자를 수신하고 공개 노드들 (702 및 704) 을 인증할 수도 있다. 일단 인증되면, 저장 노드 B (710) 는 동일한 리소스 ID (714) 를 가진 상이한 데이터 (716 및 720) 를 저장할 수 있는 데이터 구조 (712) 에 수신된 데이터를 저장할 수도 있다. 이 예에서, 리소스 ID (714) 의 각각의 데이터 인스턴스 (716 및 720) 는 그 데이터 인스턴스를 소유하는 노드를 나타내는 관련 공개 노드 (718 및 722) 를 갖는다. 따라서, 저장 노드 B (710) 가 데이터 인스턴스들 (716 및 720) 에 대한 액세스를 리소스 ID (714) 를 요청하는 탐색 노드들에 제공할 수도 있지만, 그것은 또한 그들이 (데이터 인스턴스 (716) 에 대한) 공개 노드 ID1 (718) 및/또는 (데이터 인스턴스 (720)) 에 대한 공개 노드 ID2 (722) 를 알고 있다는 것을 입증할 수 없다면 노드들이 데이터 (716 및 720) 를 삭제 또는 변경하지 못하게 할 수도 있다.
강화된 데이터 인가
다양한 구현에서, 리소스 ID 를 생성하는데 이용되는 "스트링" 은 특정 사용-정의된 스트링들 및/또는 노드/사용자 명 또는 식별자에 기초할 수도 있다. 일 예에서, 리소스 ID 는 적어도 부분적으로는 리소스 명의 함수일 수도 있다.
도 8 은 공개 노드가 오버레이 레벨 데이터 저장 인가를 위해 오버레이 네트워크에서 리소스 ID 를 생성할 수도 있는 방법의 일 예를 예시한 블록도이다. 일 예에서, 데이터 인가는 리소스 명을 컴퓨팅하는데 이용되는 증명된 사용자 명 또는 노드 ID 에 기초할 수도 있다. 본질적으로, 리소스 ID 를 생성하기 위한 이런 메커니즘의 이용은, 데이터 소유자 (즉, 공개 노드) 가 그 위치에 저장하도록 인가된다는 것을 저장 노드가 검증하는 것을 허용한다. 또한, 각각의 사용은 또한 데이터 인가를 위한 그 자신의 룰들을 정의하도록 허용될 수도 있다. 이는 데이터 인가 모델 사용을 종속적이게 만들어, 오버레이 네트워크들에 대한 이질적 사용 지원 및 사용 업그레이드 플래그 데이의 필요에 적합하다.
일 구현에서, 데이터 인가는 오버레이 레벨에서 저장 인가의 독립적인 동작을 허용하는 방식으로 달성될 수 있다. 먼저, 제 1 스트링이 공개 노드에 대한 증명된 사용자 명 또는 노드 ID 와 같이 정의된다 (802). 다음에, 제 2 스트링 (예를 들어, 특정 사용 스트링 (UsageString)) 이 획득된다 (804). 일 예에서, 제 2 스트링은 소정의 사용에 의해 제공될 수도 있고 또는 사용 ID 에 대해 디폴트될 수도 있다.
옵션으로는, 리소스 명이 그 후 획득될 수도 있으며 (806), 여기서 리소스 명은 2 부분들, 즉 제 1 스트링 및 제 2 스트링을 포함할 수도 있다. 일 예에서, 2 부분들은 경계 기호 ":" 에 의해 분리될 수도 있고, 그렇지 않다면 결합될 수도 있다. 그 후, 리소스 ID = hash(ResourceName) = hash(제 1 스트링:제 2 스트링) 가 되도록 ResourceName 의 해시로서 리소스 ID 가 생성된다 (808). 일 예로서, 리소스 ID 는 hash(alice@example.dht.org:sip) 일 수도 있으며, 여기서 제 1 스트링 (예를 들어, 공개 노드 식별자) 은 "alice@example.dht.org" 이고, 제 2 스트링은 "sip" (예를 들어, 사용 타입) 이다. 공개 노드는 또한 제 1 스트링, 제 1 스트링과 제 2 스티링, 또는 제 1 스트링과 제 2 스트링과 다른 값의 디지털 서명 Sig-D 를 생성할 수도 있다 (810).
공개 노드는 그 후 리소스 ID, 저장될 데이터, 제 1 스트링 및 디지털 서명 Sig-D 를 포함하는 저장 요청을 생성할 수 있다 (812). 다른 정보가 또한 저장 요청의 일부로서 포함될 수도 있다는 것에 주목한다. 이 저장 요청은 리소스 ID 에 대한 ID 공간에 대해 책임이 있는 오버레이 네트워크 내의 저장 노드로 전송될 수도 있고 또는 그 저장 노드에 의해 수신될 수도 있다.
도 9 는 저장 노드가 오버레이 레벨 데이터 저장 인가를 위해 오버레이 네트워크에서 리소스 ID 를 검증할 수도 있는 방법의 일 예를 예시한 블록도이다. 저장 노드가 리소스 ID, 데이터, 제 1 스트링 및 서명 Sig-D 를 포함하는 저장 요청을 수신할 수도 있다 (902). 다른 정보가 또한 저장 요청의 일부로서 포함될 수도 있다는 것에 주목한다. 저장 요청 (902) 은 도 8 에 예시한 바와 같이 생성될 수도 있다. 수신된 리소스 ID 가 유효하게 생성되었다는 것을 검증하기 위해, 수신 저장 노드는 (저장 요청에서 수신될 수도 있는) 제 1 스트링 (904) 및 저장되는 데이터와 관련된 제 2 스트링 (예를 들어, 사용-특정 스트링) (906) 을 획득함으로써 리소스 ID 를 검증할 수 있다. 그 후 리소스 명의 로컬 인스턴스가 획득된 제 1 스트링 및 제 2 스트링을 이용하여 생성된다 (908). 그 후 리소스 ID 의 로컬 인스턴스가 리소스 명의 해시로부터 생성된다 (910). 수신된 리소스 ID 를 검증 (912) 하기 위해, 리소스 ID 의 로컬로 컴퓨팅된 인스턴스가 저장 요청에서 수신된 리소스 ID 와 비교된다 (914). 그들이 매칭한다면, 저장 요청이 수락되고, 수신된 데이터가 저장되며 (916), 그렇지 않고 그들이 매칭하지 않는다면, 저장 요청은 거부된다 (918). (AuthName 과 UsageString 양자에 의존하는) 이런 형태의 리소스 ID 생성을 이용한 데이터 액세스 인가는, 데이터의 저장을 인가하기 위해 필요한 정보가 리소스 ID 의 일부로서 포함되기 때문에 탑 레벨 인가로 지칭될 수도 있다.
일부 경우에, 사용은 질의를 허용하는데 관여될 수도 있으며, 또는 사용자 명 또는 노드 ID 의 이전 지식 없이 그의 데이터를 탐색한다. 탐색 노드들이 공개 노드들의 제 1 스트링 (예를 들어, 사용자 명 및/또는 노드 ID) 을 알지 못할 수도 있기 때문에, 제 1 스트링을 리소스 ID 또는 리소스 명의 일부로서 포함하지 않고 리소스 ID 를 생성하는 것이 바람직하다.
도 10 은 공개 노드가 사용 레벨 데이터 저장 인가를 위해 오버레이 네트워크에서 리소스 ID 를 생성할 수도 있는 방법의 대안의 예를 예시한 블록도이다. 이 예에서, 데이터 인가는 하위 레벨에서 제공될 수도 있다. 즉, 공개 노드가 인증자 명 (AuthName) 을 정의 (1002) 하고 사용-특정 스트링 (UsageString) 을 정의 (1004) 할 수도 있지만, 리소스 명은 UsageString 의 함수로서만 생성된다 (1006). 그 후 리소스 ID 가 리소스 명 (1006) 의 함수로서 생성될 수도 있다 (1008). 이 예에서, 디지털 서명 Sig-D 는 AuthName 및/또는 UsageString 및/또는 다른 값을 서명함으로써 생성될 수도 있다. 공개 노드는 그 후 리소스 ID, 저장될 데이터, 인증자 명 AuthName 및 디지털 서명 Sig-D 를 포함하는 저장 요청을 생성할 수도 있다 (1012). 다른 정보가 또한 저장 요청의 일부로서 포함될 수도 있다는 것에 주목한다. 이 저장 요청 (1012) 은 리소스 ID 에 대한 ID 공간에 대해 책임이 있는 오버레이 네트워크 내의 저장 노드로 전송될 수도 있고 또는 그 저장 노드에 의해 수신될 수도 있다.
도 11 은 저장 노드가 사용 레벨 데이터 저장 인가를 위해 오버레이 네트워크에서 리소스 ID 를 검증할 수도 있는 방법의 일 예를 예시한 블록도이다. 저장 노드는 리소스 ID, 데이터, 인증자 명 AuthName 및 서명 Sig-D 를 포함하는 저장 요청을 수신할 수도 있다 (1102). 다른 정보가 또한 저장 요청의 일부로서 포함될 수도 있다는 것에 주목한다. 저장 요청 (1102) 은 도 10 에 예시한 바와 같이 생성될 수도 있다. 수신된 리소스 ID 가 유효하게 생성되었다는 것을 검증하기 위해, 수신 저장 노드는 저장되는 데이터의 사용과 관련된 사용-특정 스트링 (UsageString) 을 획득 (1104) 함으로써 리소스 ID 를 검증할 수 있다. 그 후 리소스 명의 로컬 인스턴스가 사용 스트링 UsageString 을 이용하여 생성된다 (1106). 그 후 리소스 ID 의 로컬 인스턴스가 리소스 명의 해시로부터 생성된다 (1108). 수신된 리소스 ID 를 검증 (1110) 하기 위해, 리소스 ID 의 로컬로 컴퓨팅된 인스턴스는 저장 요청에서 수신된 리소스 ID 와 비교된다 (1114). 그들이 매칭하지 않는다면, 저장 요청은 거부된다 (1118).
저장 요청이 현재 저장되고 동일한 리소스 ID 와 관련된 데이터를 중복기재, 삭제 또는 변경하려고 시도하고 있는 경우에, 저장 노드는 또한 인증자 명 AuthName 을 검증할 수도 있다 (1112). 즉, 저장 노드는 수신된 저장 요청이 이러한 데이터를 교체하도록 인가된 상대방 (예를 들어, AuthName 또는 관련 증명된 증명서를 알고 있는 상대방) 으로부터 왔다는 것을 검증할 수도 있다. 현재 저장 요청이 동일한 리소스 ID 하에서 이전에 저장된 데이터와 동일한 공개 노드로부터 왔다는 것이 결정된다면, 새롭게 수신된 데이터는 교체되거나 또는 이전에 저장된 데이터에 부가되도록 저장될 수도 있다 (1116). 그렇지 않고, 현재 저장 요청이 (동일한 리소스 ID 하에서 이전에 저장된 데이터와는) 상이한 공개 노드로부터 왔다는 것이 결정된다면, 저장 요청은 수락될 수도 있지만, 이전에 저장된 데이터를 교체, 변경 또는 삭제하지 않을 것이다. 대신에, 새로운 데이터가 동일한 리소스 ID 하에서 (도 7 에 예시한 바와 같은 데이터 구조 (712)) (그러나 저장 요청과 관련된 상이한 AuthName 을 이용하여) 저장될 수도 있다 (1120). 이런 형태의 리소스 ID 생성 (UsageString 에 의존) 을 이용한 데이터 액세스 인가는 데이터의 저장을 인가하기 위해 필요한 정보가 리소스 ID 의 일부로서 포함되지 않기 때문에 로우 레벨 (예를 들어, 사용 레벨, 데이터 레벨 또는 값 레벨) 인가로 지칭될 수도 있다는 것에 주목한다.
이 로우 레벨 (또는 값-레벨) 데이터 인가의 경우, 오버레이 네트워크에서의 데이터 탐색은 사용자 명 또는 노드 ID 를 알지 않고 수행되어 데이터 발견을 용이하게 할 수도 있다. 이 듀얼 레벨 인가 (즉, 보다 높은 레벨에서의 사용-기반 리소스 ID 및 보다 낮은 레벨에서의 인증자 명의 인가) 를 지원하기 위하여, 프로토콜 (예를 들어, 저장 요청 또는 데이터 액세스 요청) 은 사용 시에 적절한 인가 타입을 시그널링하는 능력을 허용할 수도 있다.
오버레이 네트워크에서의 저장 시맨틱의 향상
저장 및 제거 요청 프로세싱
일부 오버레이 네트워크 서비스는, (요청의 일부인) 종류 ID 가 저장 노드에 알려져 있고 대응하는 데이터 모델이 정확하다는 것을 저장/제거 요청을 수신하는 저장 노드가 검증하는 것을 요구할 수도 있다. 이는 저장 노드가 본질적으로는 참이 아닐 수도 있는 저장 요청의 데이터와 관련된 정확히 동일한 사용을 지원한다는 것을 가정한다. 본원에 설명된 데이터 저장 인가 기술들을 도모하기 위해 (여기서, 저장 노드는 특정 사용을 지원할 필요가 없다), 저장 노드는 저장 요청에서의 종류 ID 검사를 무시할 수도 있다. 저장 노드는 로컬 폴리시 (policy) 에 기초하여, 그 저장 노드가 지원하는 사용들에 대응하는 데이터에 대한 선호를 제공할 수도 있다. 그러나, 로컬 판정들은 오버레이 프로토콜 그 자체의 범위 밖에 있을 수도 있다.
관련 데이터의 저장 및 검색
본원에 설명된 리소스 ID 컴퓨테이션을 이용하면, 소정의 사용 및 소정의 사용자/노드에 대응하는 데이터가 특정 리소스 ID 와 관련될 수도 있고, 이러한 리소스 ID 에 대해 책임이 있는 저장 노드에 저장될 수도 있다. 사용들은 심지어는 리소스 명 내의 사용 특정 데이터에 상이한 시맨틱들을 제공함으로써 복수의 저장 노드들 간에 데이터 저장을 스프레딩할 수도 있다. 예를 들어, 리소스 명으로서 "sip:alice@example.dht.org" 를 이용하는 대신에, 공개 노드는 리소스 명으로서 "sipaor:alice@example.dht.org" 를 이용할 수도 있다. 이 예에서, 사용 특정 시맨틱 "sip" 는 "sipaor" 로 바뀌게 된다. 일부 오버레이 네트워크는 사용자 명 또는 노드 ID 에 대응하는 증명서를 사용자 명 및/또는 노드 ID 의 해시에 대응하는 리소스 ID들에 저장하는 것을 허용할 수도 있다. 그 자체가 유용하지만, 증명서가 SIP AOR (Address of Record) 과 동일한 장소에 저장될 수도 있다면 그 또한 유용하다. 이것이 달성될 수 있는 2 가지 방법이 있다. SIP 사용은 리소스 ID 에 또한 저장될 수도 있는 증명서 종류를 특정할 수도 있다. 대안으로, 리소스 ID 및 그 리소스 ID 를 소유하지 않을 수도 있는 노드에서의 대응 값의 타겟 저장으로서 모델링될 수 있다. 이는 (인가를 하지 않는 것으로 선택하기 때문에 또는 단순히 노드 식별자 또는 인증자 명의 해시로서 그 리소스 ID 를 컴퓨팅했기 때문에) 동일한 리소스 ID 에서 다수의 사용들에 대응하는 데이터를 저장하고 있는 노드가 다수의 사용들이 그것을 이용하는 경우라도 단지 증명서의 일 인스턴스만을 저장하는 것을 허용할 것이다. 그러나, 이 때, 오브젝트들이 비교적 용이하게 동일한 리소스 ID 에 저장될 수 있도록 모든 요구되는 관련 데이터 종류들을 정의하기 위해 각각의 사용을 예상하는 것이 합리적인 것으로 보인다.
저장 요청을 생성 및 전송하도록 구성된 공개 노드의 예
도 12 는 오버레이 네트워크에서 데이터의 저장을 요청하도록 구성되는 공개 디바이스 또는 노드 (1200) 의 일 예를 예시한다. 공개 노드 (1200) 는 예를 들어 도 1 의 오버레이 네트워크 내의 노드 (104) 일 수도 있다. 공개 노드 (1200) 는 저장 디바이스 (1250) 및 네트워크 통신 인터페이스 (1220) 에 커플링된 저장 인가 프로세서 (1230) 를 포함할 수도 있다. 일 예에서, 공개 노드 (1200) 는 오버레이 레벨에서 독립적인 인가를 허용하는 데이터 저장 요청을 생성할 수도 있다. 다른 예에서, 공개 노드 (1200) 는 사용 레벨에서 독립적인 인가를 허용하는 데이터 저장 요청을 생성할 수도 있다. 공개 노드 (1200) 는 오버레이 네트워크 상에서 데이터 저장 디바이스 (1250) 로부터의 데이터를 저장하길 원할 수도 있다. 데이터 저장에 대한 요청이 저장 인가 프로세서 (1230) 에 의해 생성되어 오버레이 네트워크 상에서 네트워크 통신 인터페이스 (1220) 를 통해 전송될 수도 있다. 저장 인가 프로세서 (1230) 는 리소스 ID 생성기 (1234), 서명 생성기 (1240), 인증자 명 생성기 (1242) 및 인가 타입 모듈 (1232) 을 포함할 수도 있다. 일부 구현에서, 저장 인가 프로세서 (1230) 는 하나 이상의 프로세서, 프로세싱 회로 및/또는 모듈에 의해 구현될 수도 있다.
인가 타입 모듈 (1232) 은 어떤 타입의 인가가 특정 저장 요청 (또는 데이터 액세스 요청) 에 적합한지를 결정할 수도 있고, 적절한 타입의 인가를 위한 절차를 선택한다. 예를 들어, 특정 사용은 오버레이 레벨 인가 (예를 들어, 탑 레벨 인가) 를 요구할 수도 있는 한편, 다른 사용은 사용 레벨 인가 (예를 들어, 값 레벨 또는 데이터 레벨 인가와 같은 하위 레벨 인가) 를 요구할 수도 있다.
오버레이 레벨 인가가 이용되는 경우에, 인가 타입 모듈 (1232) 은, 리소스 ID 생성기 (1234) 로 하여금, 제 1 스트링 (1238) (예를 들어, 공개 노드 ID 또는 인증자 명) 및 제 2 스트링 (1236) (예를 들어, 사용 스트링) 에 기초하여 리소스 ID 를 생성하게 할 수도 있다. 생성된 리소스 ID 는 저장 요청과 함께 저장될 데이터를 식별하는데 이용된다. 리소스 ID 는 또한 오버레이 네트워크 내의 저장 노드가 저장 요청 시에 데이터를 저장할 것을 결정하도록 기능할 수도 있다. 서명 생성기 (1240) 는 제 1 스트링/제 2 스티링 및/또는 저장 요청에 의해 저장될 데이터에 대한 서명을 생성하도록 기능할 수도 있고; 생성된 서명은 저장 요청의 일부로서 포함될 수도 있다. 부가적으로, 노드 증명 모듈 (1254) 은 공개 노드 (1200) 를 고유하게 식별 또는 인증하는 증명서를 생성하도록 기능할 수도 있다. 다양한 예에서, 노드 증명 모듈 (1254) 은 자체-인증에 의해 또는 증명 엔티티에 의한 외부 인증 프로세스를 통해 증명서를 생성할 수도 있다. 이러한 증명서는 저장 요청 내의 리소스 식별자를 보안하고, 후속하여 인증하도록 기능할 수도 있다.
사용 레벨 인가 (예를 들어, 데이터 레벨 또는 값 레벨 인가) 가 이용되는 경우에, 인가 타입 모듈 (1232) 은, 리소스 ID 생성기 (1234) 로 하여금, 제 1 스트링 (1238) (예를 들어, 공개 노드 식별자 또는 인증자 명) 을 이용하지 않고 단지 제 2 스트링 (1236) (예를 들어, 사용 스트링) 만에 기초하여 리소스 ID 를 생성하게 할 수도 있다. 생성된 리소스 ID 는 저장 요청과 함께 저장될 데이터를 식별하는데 이용된다. 이 경우에, 제 1 스트링 (1238) (예를 들어, 공개 노드 식별자 또는 인증자 명) 은 데이터의 일부로서 첨부될 수도 있다.
이들 예들 양자에서, 인가 표시 (증명된 공개 노드가 저장 요청을 인가하고 있다는 것을 표시) 는 저장 요청과 함께 또는 별개로 저장 노드로 전송된다. 예를 들어, 저장 요청 시에 이용되는 증명서의 검증 또는 공개 키가 저장 노드에 의해 획득될 수도 있다.
도 13 은 오버레이 레벨에서 독립적인 저장 인가를 용이하게 하기 위해 공개 노드에서 동작하는 방법의 일 예를 예시한 플로우도이다. 일 실시형태에서, 본원에 설명된 단계들은 도 12 에 예시된 모듈들 또는 디바이스들 중 하나 이상에 의해 수행될 수도 있다. 공개 노드는 공개 노드와 관련되는 증명된 제 1 스트링 (예를 들어, 노드 식별자 또는 인증자 명) 을 획득할 수도 있다 (1302). 공개 노드는 또한 제 2 스트링 (예를 들어, 임의의 스트링 또는 저장될 데이터 타입 또는 사용 타입과 관련된 스트링) 을 획득할 수도 있다 (1304). 일 예에서, 제 2 스트링은 오버레이 네트워크 내의 서비스에 대한 미리 정의된 스트링일 수도 있다. 오버레이 레벨 인가가 구현된다면, 리소스 식별자는 제 1 스트링 및 제 2 스트링의 함수로서 생성될 수도 있으며 (1306), 여기서 제 1 스트링은 저장 노드에 의해 독립적으로 인증가능하고, 리소스 식별자는 저장 노드에 의해 검증가능하다. 저장 요청에 대한 인가가 프로토콜 계층구조의 오버레이 레벨에서 검증가능할 수도 있으며, 여기서 오버레이 레벨은 프로토콜 계층에서 사용 레벨 아래에 있다. 대안으로, 사용 레벨 인가가 구현된다면, 리소스 식별자는 제 2 스트링의 함수로서 생성될 수도 있다 (1308). 이 경우에, 저장 노드는 오버레이 레벨에서 리소스 식별자를 검증할 수도 있지만, 저장 요청에 대한 인가는 프로토콜 계층구조의 사용 레벨에서 검증가능할 수도 있으며, 여기서 사용 레벨은 프로토콜 계층구조에서 오버레이 레벨 위에 있다. 즉, 리소스 식별자가 단지 제 2 스트링의 함수인 경우, 다수의 공개 노드들이 저장될 상이한 데이터 마다 동일한 리소스 식별자를 생성할 수도 있다. 그 결과, 저장 노드는, 리소스 식별자가 (오버레이 레벨에서) 정확한 제 2 스트링에 기초하여 유효하게 생성되었지만 저장된 데이터와 관련된 제 1 스트링 (공개 노드를 식별함) 을 이용하여 사용 레벨에서 (동일한 리소스 식별자를 이용하여 상이한 공개 노드들에 의해 저장된 데이터 간을 구별하기 위해) 저장 인가를 수행할 수 있다는 것을 검증할 수도 있다.
일 예에서, 리소스 식별자를 생성하는데 이용되는 함수는 해시 함수일 수도 있다. 공개 노드는 또한 제 1 스트링, 제 2 스트링 및/또는 공개 노드에 대한 인증된 키 (예를 들어, 증명서 또는 개인 키) 로 서명되는 저장될 데이터에 기초하여 서명을 생성할 수도 있다 (1310). 일 예에서, 인증된 키는 개인 키, 자체-생성된 증명서 또는 공개 노드를 인증하는 제 3 자 증명서일 수도 있다. 그 후 리소스 식별자 및 저장될 데이터를 포함하는 저장 요청이 생성될 수도 있다 (1312). 저장 요청은 또한 제 1 스트링, 제 2 스트링 및/또는 서명을 포함할 수도 있다. 저장 요청은 그 후 오버레이 네트워크를 통해 저장 노드로 전송될 수도 있으며, 여기서 저장 노드는 리소스 식별자를 포함하는 식별자 공간에 대해 책임이 있다 (1314).
부가적으로, 공개 노드는 복수의 상이한 리소스 식별자들을 생성할 수도 있으며, 여기서 복수의 상이한 리소스 식별자들 각각은 (오버레이 레벨 인가의 경우에는) 제 1 스트링과 상이한 제 2 스트링들의 조합의 함수이거나, 또는 (사용 레벨 인가의 경우에는) 단지 제 2 스트링들의 함수이다. 상이한 리소스 식별자들을 생성하기 위해 제 2 스트링을 이용함으로써, 데이터 저장 로드 스프레딩이 상이한 저장 노드들이 상이한 식별자 공간에 대해 책임이 있는 오버레이 네트워크 내에서 달성된다.
저장 요청을 수신 및 인가하도록 구성된 저장 노드의 예
도 14 는 데이터 저장 인가를 수행하면서 오버레이 네트워크에서 데이터를 저장하는 저장 노드의 일 예를 예시한다. 저장 노드 (1400) 는 오버레이 레벨에서 데이터 저장의 독립적인 인가를 허용할 수도 있다. 저장 노드 (1400) 는 저장 인가 프로세서 (1430), 네트워크 통신 인터페이스 (1420) 및 저장 디바이스 (1450) 를 포함할 수도 있다. 데이터 저장을 위한 저장 요청이 오버레이 네트워크에서 공개 노드로부터 네트워크 통신 인터페이스 (1420) 를 통해 수신될 수도 있다. 일 예에서, 저장 요청은 리소스 ID, 데이터, 인증자 명 및 서명을 포함할 수도 있다. 네트워크 통신 인터페이스는, 저장 요청을 전송하는 공개 노드가 저장 노드 (1400) 에서 데이터를 저장하도록 인가되는지 여부를 결정하기 위한 요청을 검토하는 요청을 저장 인가 프로세서 (1430) 에 통신한다. 다른 것 중에서도, 저장 인가 프로세서 (1430) 는 인가 타입 모듈 (1432), 리소스 ID 검증기 (1434), 서명 검증기 (1440) 및 인증자 명 검증기 (1442) 를 포함할 수도 있다.
인가 타입 모듈 (1432) 은 어떤 타입의 인가가 특정 저장 요청에 적합한지를 결정할 수도 있다. 예를 들어, 저장 요청은 저장되는 데이터에 대해 이용될 인가의 타입을 시그널링할 수도 있다. 이용될 수도 있는 적어도 2 가지 타입의 인가, 즉 오버레이 레벨 인가 및 데이터 또는 값 레벨 인가가 있다.
오버레이 레벨 인가에서, 리소스 ID 는 제 1 스트링 (예를 들어, 공개 노드 식별자, 인증자 명 등) 및 제 2 스트링 (예를 들어, 임의의 스트링, 미리 정의된 스트링 등) 과 관련되거나 또는 제 1 스트링 및 제 2 스트링의 함수일 수도 있다. 그 결과, 리소스 ID 검증기 (1434) 는 요청이 인가되는지 여부를 결정하기 위해 제 1 스트링 (1438) 및/또는 제 2 스트링 (1436) (이들 양자는 저장 요청 시에 수신될 수도 있고 또는 그렇지 않다면 저장 노드 (1400) 에 제공되거나 표시될 수도 있다) 을 이용할 수도 있다. 이 경우에, "인가" 는, 리소스 ID 가 유효하게 생성되고 제 1 스트링 (예를 들어, 공개 노드 식별자 또는 인증자 명) 이 (예를 들어, 저장된 데이터가 공개 노드와 고유하게 관련될 수 있도록) 인증된다는 것을 검사하는 것을 의미한다.
사용 레벨 인가 (예를 들어, 데이터 또는 값 레벨 인가) 에서, 리소스 ID 는 제 2 스트링 (1436) (사용 타입 또는 저장될 데이터 타입과 관련될 수도 있음) 과 관련되거나 또는 제 2 스트링의 함수일 수도 있다. 그 결과, 리소스 ID 검증기 (1434) 는 리소스 ID 가 유효하게 생성되는지 여부를 결정하기 위해 제 2 스트링 (1436) 을 이용할 수도 있다. 부가적으로, 사용 레벨에서의 저장 인가의 경우, 인증자 명 검증기 (1442) 는 저장 요청을 위해 제 1 스트링 (공개 노드 식별자 또는 인증자 명) 을 검증할 수도 있다. 제 1 스트링은 이전에 저장된 데이터와 동일한 리소스 ID 를 갖는 저장 요청이 그 이전에 저장된 데이터를 교체해야하는지 여부 또는 그것이 별도로 저장되어야 하는지 여부를 결정하기 위해 이용될 수도 있다는 것에 주목한다.
유사하게, 서명 검증기 (1440) 는 저장 요청의 서명을 검증할 수도 있다.
도 15 (도 15a 및 도 15b 를 포함) 오버레이 레벨에서 독립적인 저장 인가를 수행하기 위해 저장 노드에서 동작하는 방법의 일 예를 예시한다. 저장 노드는 피어-투-피어 오버레이 네트워크에서 데이터를 저장하기 위한 제 1 저장 요청을 수신하고, 제 1 저장 요청은 제 1 리소스 식별자 및 저장될 제 1 데이터를 포함하며, 여기서 제 1 리소스 식별자는 인증될 수 있는 제 1 스트링과 제 2 스트링의 조합의 함수이다 (1502). 저장 요청은 예를 들어, 리소스 식별자, 저장될 데이터, 제 1 스트링 (예를 들어, 공개 노드 식별자, 인증자 명), 제 2 스트링, 및/또는 제 1 스트링/제 2 스트링 및/또는 저장되는 데이터에 대한 서명을 포함할 수도 있다. 이용되는 인가 타입에 의존하여, 리소스 식별자는 제 1 스트링 및/또는 제 2 스트링의 함수일 수도 있다. 일 예에서, 제 1 스트링은 공개 노드 식별자일 수도 있고, 제 2 스트링은 임의의 스트링이다. 다른 예에서, 제 1 스트링은 공개 노드 식별자이고, 제 2 스트링은 오버레이 네트워크 내의 서비스에 대한 미리 정의된 스트링이다.
오버레이 레벨 인가에서, 리소스 식별자는 제 1 스트링 및 제 2 스트링의 함수로서 검증된다 (1506). 즉, 저장 노드는 수신된 리소스 식별자를 검증하기 위해 리소스 식별자의 로컬 버전을 컴퓨팅할 수도 있다. 리소스 식별자가 성공적으로 검증된다면, 제 1 데이터는 저장되고 제 1 리소스 식별자와 관련된다 (1508). 그렇지 않다면, 요청은 거부된다. 일 예에서, 오버레이 레벨에서 독립적인 저장 인가를 수행하는 것은, (a) 제 1 스트링을 인증하는 것, 및 (b) 제 1 리소스 식별자가 제 1 스트링과 제 2 스트링의 조합의 함수인지 여부를 결정하는 것을 포함할 수도 있다.
후속하여, 저장 노드는 저장된 제 1 데이터에 대한 데이터 액세스 요청을 수신할 수도 있다 (1510). 제 1 데이터에 대한 액세스 레벨이 그 후 결정될 수도 있다 (1512). 데이터 액세스 요청이 제 1 리소스 식별자 및 제 1 스트링에 대한 지식을 입증한다면, 저장된 제 1 데이터에 대한 액세스가 승인될 수도 있다 (1516). 이러한 액세스는 제 1 데이터에 대한 기록, 변경 및/또는 삭제 액세스를 포함할 수도 있다. 저장된 제 1 데이터에 대한 액세스를 승인하는 것은 또한 제 1 데이터의 제 2 데이터로의 교체를 허용하는 것을 포함할 수도 있다. 데이터 액세스 요청이 제 1 리소스 식별자에 대한 지식을 입증하지만 제 1 스트링에 대한 지식을 입증할 수 없다면, 판독 전용 액세스가 저장된 제 1 데이터에 대해 승인될 수도 있다 (1514). 액세스 요청이 리소스 식별자 또는 제 1 스트링 중 어느 하나에 대한 지식을 입증할 수 없다면, 제 1 데이터에 대한 액세스가 거부될 수도 있다는 것에 주목한다.
도 16 (도 16a 및 도 16b 포함) 은 사용 레벨에서 독립적인 저장 인가를 수행하기 위해 저장 노드에서 동작하는 방법의 일 예를 예시한다. 저장 노드는 피어-투-피어 오버레이 네트워크에서 데이터를 저장하기 위한 제 1 저장 요청을 수신하고, 제 1 저장 요청은 제 1 리소스 식별자, 저장될 제 1 데이터 및 제 1 공개 노드 식별자를 포함하며, 여기서 저장 노드는 제 1 리소스 식별자를 포함하는 식별자 공간에 대해 책임이 있다 (1602). 제 1 리소스 식별자는 저장될 데이터의 타입과 관련된 사용 스트링의 함수일 수도 있다. 예를 들어, 제 1 리소스 식별자는 오버레이 네트워크 내의 서비스에 대한 미리 정의된 스트링의 함수일 수도 있다.
부가적으로, 저장 노드는 또한 피어-투-피어 오버레이 네트워크에서 데이터를 저장하기 위한 제 2 저장 요청을 수신할 수도 있으며, 제 2 저장 요청은 제 1 리소스 식별자, 저장될 제 2 데이터 및 제 2 공개 노드 식별자를 포함한다 (1604). 독립적인 저장 인가는 프로토콜 계층구조의 사용 레벨에서 수행될 수도 있으며, 여기서 사용 레벨은 프로토콜 계층구조에서 오버레이 레벨 위에 있다 (1606). 제 1 데이터 및 제 1 공개 노드 식별자는 저장되고, 제 1 리소스 식별자와 관련될 수도 있다 (1608). 제 2 데이터 및 제 2 공개 노드 식별자는 또한 저장되고, 제 1 리소스 식별자와 관련될 수도 있다 (1610).
후속하여 저장 노드는 제 1 리소스 식별자와 관련된 데이터에 대한 데이터 액세스 요청을 수신할 수도 있다 (1612). 저장된 데이터에 대한 액세스 레벨이 데이터 액세스 요청을 위해 결정될 수도 있다 (1614). 디폴트에 의해, 판독 전용 액세스가 저장된 제 1 데이터 및 제 2 데이터에 대해 승인될 수도 있다 (1616). 그러나, 데이터 액세스 요청이 제 1 공개 노드 식별자에 대한 지식을 입증한다면, 기록 액세스가 저장된 제 1 데이터에 대해 승인될 수도 있다 (1618). 유사하게, 데이터 액세스 요청이 제 2 공개 노드 식별자에 대한 지식을 입증한다면, 기록 액세스가 저장된 제 2 데이터에 대해 승인될 수도 있다 (1620).
일반적으로, 본 개시물에 설명된 프로세싱의 대부분이 유사한 방식으로 구현될 수도 있다는 것이 인식되어야 한다. 회로(들) 또는 회로부들 중 임의의 것이 집적 회로의 일부로서 단독으로 또는 하나 이상의 프로세서들과 조합하여 구현될 수도 있다. 회로들 중 하나 이상은 집적 회로, ARM (Advance RISC Machine) 프로세서, 디지털 신호 프로세서 (DSP), 범용 프로세서 등 상에서 구현될 수도 있다.
또한, 실시형태들이 플로우차트, 플로우도, 구조도 또는 블록도로 도시되는 프로세스로서 설명될 수도 있다는 것에 주목하게 된다. 플로우차트가 순차적인 프로세스로서 동작들을 설명할 수도 있지만, 그 동작들의 대부분이 병렬로 또는 동시에 수행될 수 있다. 또한, 동작들의 순서가 재배열될 수도 있다. 프로세스는 그의 동작들이 완료될 때 종료된다. 프로세스는 방법, 함수, 절차, 서브루틴, 서브프로그램 등에 대응할 수도 있다. 프로세스가 함수에 대응하는 경우, 그의 종료는 함수의 호출 함수 또는 메인 함수로의 리턴에 대응한다.
이 애플리케이션에 사용한 바와 같이, "컴포넌트", "모듈", "시스템" 등의 용어들은 컴퓨터 관련 엔티티, 하드웨어, 펌웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행 중인 소프트웨어를 지칭하는 것으로 의도된다. 예를 들어, 컴포넌트는 프로세서 상에서 실행하는 프로세스, 프로세서, 오브젝트, 실행가능한 것, 실행의 스레드, 프로그램 및/또는 컴퓨터일 수도 있지만 이들로 제한되지는 않는다. 예시에 의하여, 컴퓨팅 디바이스 상에서 실행하는 애플리케이션과 컴퓨팅 디바이스 양자는 컴포넌트일 수 있다. 하나 이상의 컴포너트들은 프로세스 및/또는 실행의 스레드 내에 상주할 수 있으며, 컴포넌트는 일 컴퓨터 상에 로컬화될 수도 있고/있거나 2 개 이상의 컴퓨터들 간에 분산될 수도 있다. 또한, 이들 컴포넌트들은 다양한 데이터 구조가 저장되어 있는 다양한 컴퓨터 판독가능 매체로부터 실행할 수 있다. 컴포넌트들은 하나 이상의 데이터 패킷들을 갖는 신호 (로컬 시스템, 분산형 시스템 내의 다른 컴포넌트와 상호작용하고/하거나 신호에 의하여 다른 시스템들과 인터넷과 같은 네트워크를 통해 상호작용하는 일 컴포넌트로부터의 데이터) 에 따라서와 같이 로컬 및/또는 원격 프로세스들에 의하여 통신할 수도 있다.
또한, 저장 매체는 판독 전용 메모리 (ROM), 램덤 액세스 메모리 (RAM), 자기 디스크 저장 매체, 광학 저장 매체, 플래시 메모리 디바이스 및/또는 정보를 저장하기 위한 다른 머신 판독가능 매체를 포함하는, 데이터를 저장하기 위한 하나 이상의 디바이스들을 나타낼 수도 있다. "머신 판독가능 매체" 라는 용어는 휴대용 또는 고정 저장 디바이스들, 광학 저장 디바이스들, 무선 채널 및 명령(들) 및/또는 데이터를 저장, 포함 또는 운반할 수 있는 다양한 다른 매체들을 포함하지만, 이들로 제한되지는 않는다.
또한, 실시형태들은 하드웨어, 소프트웨어, 펌웨어, 미들웨어, 마이크로코드 또는 이들의 임의의 조합에 의해 구현될 수도 있다. 소프트웨어, 펌웨어, 미들웨어 또는 마이크로코드에 구현한 경우, 필요한 태스크들을 수행하기 위한 프로그램 코드 또는 코드 세그먼트들은 저장 매체 또는 다른 저장장치(들)와 같은 머신 판독가능 매체에 저장될 수도 있다. 프로세서는 필요한 태스크들을 수행할 수도 있다. 코드 세그먼트는 절차, 함수, 서브프로그램, 프로그램, 루틴, 서브푸틴, 모듈, 소프트웨어 패키지, 클래스 또는 명령, 데이터 구조 또는 프로그램 스테이트먼트의 임의의 조합을 나타낼 수도 있다. 코드 세그먼트는 정보, 데이터, 인수, 파라미터 또는 메모리 컨텐트들을 전달 및/또는 수신함으로써 다른 코드 세그먼트 또는 하드웨어 회로에 커플링될 수도 있다. 정보, 인수, 파라미터, 데이터 등은 메모리 공유, 메시지 전달, 토큰 전달, 네트워크 송신 등을 포함하는 임의의 적절한 수단을 통해 전달, 포워딩 또는 송신될 수도 있다.
도면들에 예시된 컴포넌트들, 단계들 및/또는 함수들 중 하나 이상은 의사 랜덤수 생성의 동작에 영향을 미치지 않고, 단일 컴포넌트, 단계 또는 함수로 재배열 및/또는 결합될 수도 있고 또는 여러 컴포넌트들, 단계들 또는 함수들에 포함될 수도 있다. 부가적인 엘리먼트들, 컴포넌트들, 단계들 및/또는 함수들이 또한 본 발명으로부터의 벗어남 없이 추가될 수도 있다. 도면들에 예시된 장치, 디바이스 및/또는 컴포넌트는 도면에 설명된 방법, 특징 또는 단계 중 하나 이상을 수행하도록 구성될 수도 있다. 본원에 설명된 신규한 알고리즘이 소프트웨어 및/또는 임베딩된 하드웨어에서 효율적으로 구현될 수도 있다.
당업자는 또한 본원에 개시된 실시형태들과 함께 설명된 다양한 예시적인 로직 블록, 모듈, 회로 및 알고리즘 단계가 전자 하드웨어, 컴퓨터 소프트웨어 또는 양자의 조합으로서 구현될 수도 있다는 것을 알 것이다. 하드웨어와 소프트웨어의 이런 상호교환가능성을 명확히 예시하기 위해, 다양한 예시적인 컴포넌트, 블록, 모듈, 회로 및 단계가 그들의 기능성의 관점에서 일반적으로 상술되었다. 이러한 기능성이 하드웨어로서 구현되는지 소프트웨어로서 구현되는지 여부는 전체 시스템에 부과된 특정 애플리케이션 및 설계 제약에 의존한다.
본원에 설명된 본 발명의 다양한 특징들은 본 발명으로부터의 벗어남 없이 상이한 시스템에서 구현될 수도 있다. 예를 들어, 본 발명의 일부 구현은 이동형 또는 정적 통신 디바이스 (예를 들어, 액세스 단말기) 및 복수의 모바일 또는 정적 기지국들 (예를 들어, 액세스 포인트들) 로 수행될 수도 있다.
전술한 실시형태들은 단지 예이며 본 발명은 제한하는 것처럼 해석되지 않는다는 것에 주목하게 되어야 한다. 본 실시형태들의 설명은 특허청구의 범위를 제한하지 않고 예시하는 것으로 의도된다. 이로써, 본 교시는 다른 타입의 장치에 쉽게 적용될 수도 있으며, 다수의 대안물, 변경물 및 변화물이 당업자에게 명백할 것이다.

Claims (48)

  1. 데이터를 저장하기 위해 피어-투-피어 오버레이 네트워크 내의 공개 노드에서 동작하는 방법으로서,
    상기 공개 노드에서 리소스 식별자를 생성하고, 상기 리소스 식별자를 제 1 데이터와 연관시키는 단계로서, 상기 리소스 식별자는 상기 공개 노드를 식별하는 제 1 스트링과 상기 제 1 데이터의 사용 타입과 연관되는 제 2 스트링의 조합의 함수이고, 상기 제 1 스트링은 저장 노드에 의해 독립적으로 인증가능하고, 상기 리소스 식별자는 상기 저장 노드에 의해 검증가능한, 상기 리소스 식별자를 생성하고 연관시키는 단계;
    상기 공개 노드에서 상기 리소스 식별자 및 저장될 상기 제 1 데이터를 포함하는 저장 요청을 생성하는 단계; 및
    상기 오버레이 네트워크를 통해 상기 저장 노드로 상기 저장 요청을 전송하는 단계로서, 상기 저장 노드는 상기 리소스 식별자를 포함하는 식별자 공간에 대해 책임이 있는, 상기 저장 요청을 전송하는 단계를 포함하고,
    상기 저장 요청은 상기 저장 노드에 의해 지원되는 사용들에 독립적인 상기 저장 노드에 의해 인가되고, 상기 저장 요청의 인가가 프로토콜 계층구조의 오버레이 레벨에서 검증가능하며, 상기 오버레이 레벨은 상기 프로토콜 계층구조에서 사용 레벨 (usage level) 아래에 있는, 공개 노드에서의 동작 방법.
  2. 제 1 항에 있어서,
    상기 제 2 스트링은 임의의 스트링인, 공개 노드에서의 동작 방법.
  3. 제 1 항에 있어서,
    상기 제 2 스트링은 상기 오버레이 네트워크 내의 서비스에 대한 미리 정의된 스트링인, 공개 노드에서의 동작 방법.
  4. 삭제
  5. 제 1 항에 있어서,
    복수의 상이한 리소스 식별자들을 생성하는 단계를 더 포함하며,
    상기 복수의 상이한 리소스 식별자들 각각은 상기 제 1 스트링과 상이한 제 2 스트링들의 조합의 함수인, 공개 노드에서의 동작 방법.
  6. 제 5 항에 있어서,
    상기 복수의 상이한 리소스 식별자들을 생성하는 단계는, 상이한 저장 노드들이 상이한 식별자 공간들에 대해 책임이 있는 상기 오버레이 네트워크 내에서 데이터 저장 로드 스프레딩을 야기하는, 공개 노드에서의 동작 방법.
  7. 제 1 항에 있어서,
    상기 저장 요청은 상기 제 1 스트링의 표시자를 더 포함하는, 공개 노드에서의 동작 방법.
  8. 제 1 항에 있어서,
    상기 저장 요청은 상기 제 2 스트링의 표시자를 더 포함하는, 공개 노드에서의 동작 방법.
  9. 피어-투-피어 오버레이 네트워크를 통해 통신하기 위한 통신 인터페이스; 및
    상기 통신 인터페이스에 커플링된 컴퓨터 프로세서를 포함하며,
    상기 컴퓨터 프로세서는,
    리소스 식별자를 생성하고, 상기 리소스 식별자를 제 1 데이터와 연관시키되, 상기 리소스 식별자는 공개 노드를 식별하는 제 1 스트링과 상기 제 1 데이터의 사용 타입과 연관되는 제 2 스트링의 조합의 함수이고, 상기 제 1 스트링은 저장 노드에 의해 독립적으로 인증가능하고, 상기 리소스 식별자는 상기 저장 노드에 의해 검증가능하고;
    상기 리소스 식별자 및 저장될 상기 제 1 데이터를 포함하는 저장 요청을 생성하고;
    상기 오버레이 네트워크를 통해 상기 저장 노드로 상기 저장 요청을 전송하되, 상기 저장 노드는 상기 리소스 식별자를 포함하는 식별자 공간에 대해 책임이 있고, 상기 저장 요청은 상기 저장 노드에 의해 지원되는 사용들에 독립적인 상기 저장 노드에 의해 인가되고, 상기 저장 요청의 인가가 프로토콜 계층구조의 오버레이 레벨에서 검증가능하며, 상기 오버레이 레벨은 상기 프로토콜 계층구조에서 사용 레벨 (usage level) 아래에 있도록 구성된, 공개 노드 디바이스.
  10. 제 9 항에 있어서,
    상기 제 2 스트링은 임의의 스트링인, 공개 노드 디바이스.
  11. 제 9 항에 있어서,
    상기 제 2 스트링은 상기 오버레이 네트워크 내의 서비스에 대한 미리 정의된 스트링인, 공개 노드 디바이스.
  12. 삭제
  13. 제 10 항에 있어서,
    상기 프로세서는 또한, 복수의 상이한 리소스 식별자들을 생성하도록 구성되며,
    상기 복수의 상이한 리소스 식별자들 각각은 상기 제 1 스트링과 상이한 제 2 스트링들의 조합의 함수인, 공개 노드 디바이스.
  14. 제 13 항에 있어서,
    상기 복수의 상이한 리소스 식별자들을 생성하는 것은, 상이한 저장 노드들이 상이한 식별자 공간들에 대해 책임이 있는 상기 오버레이 네트워크 내에서 데이터 저장 로드 스프레딩을 야기하는, 공개 노드 디바이스.
  15. 리소스 식별자를 생성하고, 상기 리소스 식별자를 제 1 데이터와 연관시키는 수단으로서, 상기 리소스 식별자는 공개 노드를 식별하는 제 1 스트링과 상기 제 1 데이터의 사용 타입과 연관되는 제 2 스트링의 조합의 함수이고, 상기 제 1 스트링은 저장 노드에 의해 독립적으로 인증가능하고, 상기 리소스 식별자는 상기 저장 노드에 의해 검증가능한, 상기 리소스 식별자를 생성하고 연관시키는 수단;
    상기 리소스 식별자 및 저장될 상기 제 1 데이터를 포함하는 저장 요청을 생성하는 수단; 및
    피어-투-피어 오버레이 네트워크를 통해 상기 저장 노드로 상기 저장 요청을 전송하는 단계로서, 상기 저장 노드는 상기 리소스 식별자를 포함하는 식별자 공간에 대해 책임이 있는, 상기 저장 요청을 전송하는 수단을 포함하고,
    상기 저장 요청은 상기 저장 노드에 의해 지원되는 사용들에 독립적으로 상기 저장 노드에 의해 인가되고, 상기 저장 요청의 인가가 프로토콜 계층구조의 오버레이 레벨에서 검증가능하며, 상기 오버레이 레벨은 상기 프로토콜 계층구조에서 사용 레벨 (usage level) 아래에 있는, 공개 노드 디바이스.
  16. 삭제
  17. 저장 노드 상에서 동작하는 방법으로서,
    상기 저장 노드에서 피어-투-피어 오버레이 네트워크의 공개 노드의 데이터를 저장하기 위한 제 1 저장 요청을 수신하는 단계로서, 상기 제 1 저장 요청은 제 1 리소스 식별자 및 저장될 연관된 제 1 데이터를 포함하고, 상기 제 1 리소스 식별자는 상기 공개 노드를 식별하는 인증가능한 제 1 스트링과 상기 제 1 데이터의 사용 타입과 연관된 제 2 스트링의 조합의 함수인, 상기 제 1 저장 요청을 수신하는 단계;
    상기 저장 노드에서 상기 제 1 리소스 식별자를 검증함으로써 프로토콜 계층구조의 오버레이 레벨에서 독립적인 저장 인가를 수행하는 단계로서, 상기 독립적인 저장 인가는 상기 저장 노드에 의해 지원되는 사용들과 독립적으로 수행되고, 상기 오버레이 레벨은 상기 프로토콜 계층구조에서 사용 레벨 아래에 있는, 상기 독립적인 저장 인가를 수행하는 단계; 및
    상기 제 1 리소스 식별자가 성공적으로 검증된다면, 상기 저장 노드에서 상기 제 1 데이터를 저장하고, 상기 제 1 데이터를 상기 제 1 리소스 식별자와 관련시키는 단계를 포함하는, 저장 노드 상에서의 동작 방법.
  18. 제 17 항에 있어서,
    상기 오버레이 레벨에서 독립적인 저장 인가를 수행하는 단계는,
    상기 제 1 스트링을 인증하는 단계; 및
    상기 제 1 리소스 식별자가 상기 제 1 스트링과 상기 제 2 스트링의 조합의 함수인지 여부를 결정하는 단계를 포함하는, 저장 노드 상에서의 동작 방법.
  19. 제 17 항에 있어서,
    상기 제 2 스트링은 임의의 스트링인, 저장 노드 상에서의 동작 방법.
  20. 제 17 항에 있어서,
    상기 제 2 스트링은 상기 오버레이 네트워크 내의 서비스에 대한 미리 정의된 스트링인, 저장 노드 상에서의 동작 방법.
  21. 삭제
  22. 제 17 항에 있어서,
    상기 저장된 제 1 데이터에 대한 데이터 액세스 요청을 수신하는 단계; 및
    상기 데이터 액세스 요청이 상기 제 1 리소스 식별자 및 상기 제 1 스트링에 대한 지식 (knowledge) 을 입증한다면, 상기 저장된 제 1 데이터에 대한 액세스를 승인하는 단계를 더 포함하는, 저장 노드 상에서의 동작 방법.
  23. 제 22 항에 있어서,
    상기 데이터 액세스 요청이 상기 제 1 리소스 식별자에 대한 지식을 입증하지만 상기 제 1 스트링에 대한 지식을 입증할 수 없다면, 상기 저장된 제 1 데이터에 대한 판독 전용 액세스를 승인하는 단계를 더 포함하는, 저장 노드 상에서의 동작 방법.
  24. 제 22 항에 있어서,
    상기 저장된 제 1 데이터에 대한 액세스를 승인하는 단계는 상기 제 1 데이터의 제 2 데이터로의 교체를 허용하는 단계를 포함하는, 저장 노드 상에서의 동작 방법.
  25. 피어-투-피어 오버레이 네트워크를 통해 통신하기 위한 통신 인터페이스; 및
    상기 통신 인터페이스에 커플링된 컴퓨터 프로세서를 포함하며,
    상기 컴퓨터 프로세서는,
    상기 피어-투-피어 오버레이 네트워크의 공개 노드의 데이터를 저장하기 위한 제 1 저장 요청을 수신하되, 상기 제 1 저장 요청은 제 1 리소스 식별자 및 저장될 연관된 제 1 데이터를 포함하고, 상기 제 1 리소스 식별자는 상기 공개 노드를 식별하는 인증가능한 제 1 스트링과 상기 제 1 데이터의 사용 타입과 연관된 제 2 스트링의 조합의 함수이며;
    상기 제 1 리소스 식별자를 검증함으로써 프로토콜 계층구조의 오버레이 레벨에서 독립적인 저장 인가를 수행하되, 상기 독립적인 저장 인가는 저장 노드에 의해 지원되는 사용들과 독립적으로 수행되고, 상기 오버레이 레벨은 상기 프로토콜 계층구조에서 사용 레벨 아래에 있으며;
    상기 제 1 리소스 식별자가 성공적으로 검증된다면, 상기 제 1 데이터를 저장하고, 상기 제 1 데이터를 상기 제 1 리소스 식별자와 관련시키도록 구성되는, 저장 노드 디바이스.
  26. 제 25 항에 있어서,
    상기 오버레이 레벨에서 독립적인 저장 인가를 수행하는 것은,
    상기 제 1 스트링을 인증하는 것; 및
    상기 제 1 리소스 식별자가 상기 제 1 스트링과 상기 제 2 스트링의 조합의 함수인지 여부를 결정하는 것을 포함하는, 저장 노드 디바이스.
  27. 제 25 항에 있어서,
    상기 프로세서는 또한,
    상기 저장된 제 1 데이터에 대한 데이터 액세스 요청을 수신하고;
    상기 데이터 액세스 요청이 상기 제 1 리소스 식별자 및 상기 제 1 스트링에 대한 지식을 입증한다면, 상기 저장된 제 1 데이터에 대한 액세스를 승인하도록 구성되는, 저장 노드 디바이스.
  28. 제 27 항에 있어서,
    상기 프로세서는 또한,
    상기 데이터 액세스 요청이 상기 제 1 리소스 식별자에 대한 지식을 입증하지만 상기 제 1 스트링에 대한 지식을 입증할 수 없다면, 상기 저장된 제 1 데이터에 대한 판독 전용 액세스를 승인하도록 구성되는, 저장 노드 디바이스.
  29. 피어-투-피어 오버레이 네트워크의 공개 노드의 데이터를 저장하기 위한 제 1 저장 요청을 수신하는 수단으로서, 상기 제 1 저장 요청은 제 1 리소스 식별자 및 저장될 연관된 제 1 데이터를 포함하고, 상기 제 1 리소스 식별자는 상기 공개 노드를 식별하는 인증가능한 제 1 스트링과 상기 제 1 데이터의 사용 타입과 연관되는 제 2 스트링의 조합의 함수인, 상기 제 1 저장 요청을 수신하는 수단;
    상기 제 1 리소스 식별자를 검증함으로써 프로토콜 계층구조의 오버레이 레벨에서 독립적인 저장 인가를 수행하는 수단으로서, 상기 독립적인 저장 인가는 상기 저장 노드에 의해 지원되는 사용들과 독립적으로 수행되고, 상기 오버레이 레벨은 상기 프로토콜 계층구조에서 사용 레벨 아래에 있는, 상기 독립적인 저장 인가를 수행하는 수단; 및
    상기 제 1 리소스 식별자가 성공적으로 검증된다면, 상기 제 1 데이터를 저장하고, 상기 제 1 데이터를 상기 제 1 리소스 식별자와 관련시키는 수단을 포함하는, 저장 노드 디바이스.
  30. 데이터를 저장하기 위해 피어-투-피어 오버레이 네트워크 내의 공개 노드에서 동작하는 방법으로서,
    상기 공개 노드에서 제 2 스트링의 함수로서 리소스 식별자를 생성하는 단계로서, 상기 리소스 식별자는 저장 노드에 의해 검증가능하고, 상기 제 2 스트링은 상기 저장 노드에 저장될 제 1 데이터와 연관된 사용 타입을 식별하는 미리결정된 스트링인, 상기 리소스 식별자를 생성하는 단계;
    상기 공개 노드에서 상기 리소스 식별자, 저장될 상기 제 1 데이터, 및 상기 저장 노드에 의해 독립적으로 인증가능한 제 1 스트링을 포함하는 저장 요청을 생성하는 단계; 및
    상기 오버레이 네트워크를 통해 상기 저장 노드로 상기 저장 요청을 전송하는 단계로서, 상기 저장 노드는 상기 리소스 식별자를 포함하는 식별자 공간에 대해 책임이 있고, 상기 오버레이 네트워크 내의 상이한 공개 노드들은 동일한 사용 타입의 다른 데이터에 대해 같은 리소스 식별자와, 상이한 대응하는 제 1 스트링들을 갖는 저장 요청들을 생성하고, 상이한 데이터 저장 요청들은 상기 상이한 대응하는 제 1 스트링들을 사용하는 사용 레벨 인가에 기초하여 서로 구별가능한, 상기 저장 요청을 전송하는 단계를 포함하는, 공개 노드에서의 동작 방법.
  31. 제 30 항에 있어서,
    상기 제 1 스트링은 공개 노드 식별자인, 공개 노드에서의 동작 방법.
  32. 삭제
  33. 제 30 항에 있어서,
    상기 저장 요청에 대한 인가가 상기 제 1 스트링을 이용하여 프로토콜 계층구조의 사용 레벨 (usage level) 에서 검증가능하며, 상기 사용 레벨은 상기 프로토콜 계층구조에서 오버레이 레벨 위에 있는, 공개 노드에서의 동작 방법.
  34. 삭제
  35. 피어-투-피어 오버레이 네트워크를 통해 통신하기 위한 통신 인터페이스; 및
    상기 통신 인터페이스에 커플링된 컴퓨터 프로세서를 포함하며,
    상기 컴퓨터 프로세서는,
    제 2 스트링의 함수로서 리소스 식별자를 생성하되, 상기 리소스 식별자는 저장 노드에 의해 검증가능하고, 상기 제 2 스트링은 상기 저장 노드에 저장될 제 1 데이터와 연관된 사용 타입을 식별하는 미리결정된 스트링이고,
    상기 리소스 식별자, 저장될 상기 제 1 데이터, 및 상기 저장 노드에 의해 독립적으로 인증가능한 제 1 스트링을 포함하는 저장 요청을 생성하며;
    상기 리소스 식별자를 포함하는 식별자 공간에 대해 책임이 있는 상기 저장 노드로 상기 오버레이 네트워크를 통해 상기 저장 요청을 전송하되, 상기 오버레이 네트워크 내의 상이한 공개 노드들은 동일한 사용 타입의 다른 데이터에 대해 같은 리소스 식별자와, 상이한 대응하는 제 1 스트링들을 갖는 저장 요청들을 생성하고, 상이한 데이터 저장 요청들은 상기 상이한 대응하는 제 1 스트링들을 사용하는 사용 레벨 인가에 기초하여 서로 구별가능하도록 구성되는, 공개 노드.
  36. 저장 노드 상에서 동작하는 방법으로서,
    피어-투-피어 오버레이 네트워크에서 데이터를 저장하기 위한 제 1 저장 요청을 상기 저장 노드에서 수신하는 단계로서, 상기 제 1 저장 요청은 제 1 리소스 식별자, 저장될 제 1 데이터 및 제 1 공개 노드 식별자를 포함하고, 상기 제 1 리소스 식별자는 상기 제 1 데이터와 연관된 사용 타입에 기초하고, 상기 저장 노드는 상기 제 1 리소스 식별자를 포함하는 식별자 공간에 대해 책임이 있는, 상기 제 1 저장 요청을 수신하는 단계;
    상기 피어-투-피어 오버레이 네트워크에서 데이터를 저장하기 위한 제 2 저장 요청을 상기 저장 노드에서 수신하는 단계로서, 상기 제 2 저장 요청은 동일한 상기 제 1 리소스 식별자, 저장될 제 2 데이터 및 제 2 공개 노드 식별자를 포함하고, 상기 제 1 리소스 식별자는 상기 제 2 데이터와 연관된 동일한 상기 사용 타입에 기초하는, 상기 제 2 저장 요청을 수신하는 단계;
    상기 제 1 데이터 및 상기 제 1 공개 노드 식별자를 상기 저장 노드에서 저장하고, 상기 제 1 데이터 및 상기 제 1 공개 노드 식별자를 상기 제 1 리소스 식별자와 관련시키는 단계; 및
    상기 제 2 데이터 및 상기 제 2 공개 노드 식별자를 상기 저장 노드에서 저장하고, 상기 제 2 데이터 및 상기 제 2 공개 노드 식별자를 상기 제 1 리소스 식별자와 관련시키는 단계를 포함하고,
    상기 제 1 및 제 2 데이터는 동일한 상기 제 1 리소스 식별자를 사용함으로써 액세스가능하고, 각각의 액세스는 대응하는 상기 제 1 및 제 2 공개 노드 식별자들에 기초하여 독립적으로 인가가능한, 저장 노드 상에서의 동작 방법.
  37. 제 36 항에 있어서,
    상기 제 1 리소스 식별자는 저장될 데이터의 타입과 관련된 사용 스트링 (usage string) 의 함수인, 저장 노드 상에서의 동작 방법.
  38. 제 36 항에 있어서,
    상기 제 1 리소스 식별자는 상기 오버레이 네트워크 내의 서비스에 대한 미리 정의된 스트링의 함수인, 저장 노드 상에서의 동작 방법.
  39. 제 36 항에 있어서,
    프로토콜 계층구조의 사용 레벨에서 상기 제 1 리소스 식별자 및 대응하는 공개 노드 식별자를 사용하여 독립적인 저장 인가를 수행하는 단계를 더 포함하며,
    상기 사용 레벨은 상기 프로토콜 계층구조에서 오버레이 레벨 위에 있는, 저장 노드 상에서의 동작 방법.
  40. 제 36 항에 있어서,
    상기 제 1 리소스 식별자와 관련된 데이터에 대한 데이터 액세스 요청을 수신하는 단계; 및
    상기 저장된 제 1 데이터 및 제 2 데이터에 대한 판독 전용 액세스를 승인하는 단계를 더 포함하는, 저장 노드 상에서의 동작 방법.
  41. 제 40 항에 있어서,
    상기 데이터 액세스 요청이 상기 제 1 공개 노드 식별자에 대한 지식을 입증한다면, 상기 저장된 제 1 데이터에 대한 기록 액세스를 승인하는 단계; 및
    상기 데이터 액세스 요청이 상기 제 2 공개 노드 식별자에 대한 지식을 입증한다면, 상기 저장된 제 2 데이터에 대한 기록 액세스를 승인하는 단계를 더 포함하는, 저장 노드 상에서의 동작 방법.
  42. 피어-투-피어 오버레이 네트워크를 통해 통신하기 위한 통신 인터페이스; 및
    상기 통신 인터페이스에 커플링된 컴퓨터 프로세서를 포함하며,
    상기 컴퓨터 프로세서는,
    상기 피어-투-피어 오버레이 네트워크에서 데이터를 저장하기 위한 제 1 저장 요청을 수신하되, 상기 제 1 저장 요청은 제 1 리소스 식별자, 저장될 제 1 데이터 및 제 1 공개 노드 식별자를 포함하고, 상기 제 1 리소스 식별자는 상기 제 1 데이터와 연관된 사용 타입에 기초하고, 저장 노드는 상기 제 1 리소스 식별자를 포함하는 식별자 공간에 대해 책임이 있고;
    상기 피어-투-피어 오버레이 네트워크에서 데이터를 저장하기 위한 제 2 저장 요청을 수신하되, 상기 제 2 저장 요청은 동일한 상기 제 1 리소스 식별자, 저장될 제 2 데이터 및 제 2 공개 노드 식별자를 포함하고, 상기 제 1 리소스 식별자는 상기 제 2 데이터와 연관된 동일한 상기 사용 타입에 기초하고;
    상기 제 1 데이터 및 상기 제 1 공개 노드 식별자를 저장하고, 상기 제 1 데이터 및 상기 제 1 공개 노드 식별자를 상기 제 1 리소스 식별자와 관련시키며;
    상기 제 2 데이터 및 상기 제 2 공개 노드 식별자를 저장하고, 상기 제 2 데이터 및 상기 제 2 공개 노드 식별자를 상기 제 1 리소스 식별자와 관련시키도록 구성되고,
    상기 제 1 및 제 2 데이터는 동일한 상기 제 1 리소스 식별자를 사용하여 액세스가능하고, 각각의 액세스는 대응하는 상기 제 1 및 제 2 공개 노드 식별자에 기초하여 독립적으로 인가가능한, 저장 노드 디바이스.
  43. 제 1 항에 있어서,
    상기 제 2 스트링은 상기 저장 노드에 저장될 상기 제 1 데이터와 연관된 상기 사용을 식별하는 미리결정된 스트링인, 공개 노드에서의 동작 방법.
  44. 제 15 항에 있어서,
    상기 제 2 스트링은 상기 저장 노드에 저장될 상기 제 1 데이터와 연관된 상기 사용을 식별하는 미리결정된 스트링인, 공개 노드 디바이스.
  45. 제 17 항에 있어서,
    상기 제 2 스트링은 상기 제 1 데이터와 연관된 상기 사용을 식별하는 미리결정된 스트링인, 저장 노드 상에서의 동작 방법.
  46. 제 31 항에 있어서,
    상기 제 1 스트링은 상기 저장 노드에 저장될 상기 데이터에 첨부되고, 상기 리소스 식별자는 상기 제 1 스트링에 독립적인, 공개 노드에서의 동작 방법.
  47. 제 36 항에 있어서,
    상기 제 1 리소스 식별자는 상기 제 1 스트링에 독립적인, 저장 노드 상에서의 동작 방법.
  48. 제 42 항에 있어서,
    상기 제 1 리소스 식별자는 상기 제 1 스트링에 독립적인, 저장 노드 디바이스.
KR1020117013649A 2008-11-14 2009-11-13 분산 저장 네트워크에서 데이터 인가를 위한 네트워크 노드 및 방법 KR101330392B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US11501808P 2008-11-14 2008-11-14
US61/115,018 2008-11-14
US12/416,046 2009-03-31
US12/416,046 US8281023B2 (en) 2008-11-14 2009-03-31 Systems and methods for data authorization in distributed storage networks
PCT/US2009/064301 WO2010056936A2 (en) 2008-11-14 2009-11-13 Systems and methods for data authorization in distributed storage networks

Publications (2)

Publication Number Publication Date
KR20110084457A KR20110084457A (ko) 2011-07-22
KR101330392B1 true KR101330392B1 (ko) 2013-11-15

Family

ID=42170713

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117013649A KR101330392B1 (ko) 2008-11-14 2009-11-13 분산 저장 네트워크에서 데이터 인가를 위한 네트워크 노드 및 방법

Country Status (7)

Country Link
US (1) US8281023B2 (ko)
EP (1) EP2356792B1 (ko)
JP (1) JP5215476B2 (ko)
KR (1) KR101330392B1 (ko)
CN (1) CN102217274B (ko)
TW (1) TW201031160A (ko)
WO (1) WO2010056936A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10999060B2 (en) 2018-10-26 2021-05-04 Advanced New Technologies Co., Ltd. Data processing method and apparatus

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8327338B2 (en) 2009-01-15 2012-12-04 International Business Machines Corporation Overlay identification of data processing target structure
US8468609B2 (en) 2009-08-27 2013-06-18 Cleversafe, Inc. Authenticating use of a dispersed storage network
US9311185B2 (en) * 2009-10-30 2016-04-12 Cleversafe, Inc. Dispersed storage unit solicitation method and apparatus
US8464133B2 (en) 2009-10-30 2013-06-11 Cleversafe, Inc. Media content distribution in a social network utilizing dispersed storage
US20120011143A1 (en) * 2010-07-09 2012-01-12 David Nash Publish and Subscribe Data Delivery System and Method Using Keys
TWI592805B (zh) * 2010-10-01 2017-07-21 傅冠彰 網路儲存與計算資源分享系統與方法
CN102959516B (zh) * 2010-10-05 2016-08-03 英派尔科技开发有限公司 资源预留
WO2012070292A1 (ja) 2010-11-22 2012-05-31 インターナショナル・ビジネス・マシーンズ・コーポレーション 分散データベースの負荷均衡のためのコネクション配分を実現する情報処理システム、情報処理装置、負荷均衡方法、データベース配置計画方法およびプログラム
US8843745B2 (en) * 2011-04-26 2014-09-23 Nalpeiron Inc. Methods of authorizing a computer license
WO2012167383A1 (en) * 2011-06-08 2012-12-13 Socpra Sciences Et Génie S.E.C. A distributed electrical load management method and system for controlling community loads
US8874769B2 (en) * 2011-06-30 2014-10-28 Qualcomm Incorporated Facilitating group access control to data objects in peer-to-peer overlay networks
TWI420333B (zh) * 2011-08-10 2013-12-21 Inventec Corp 分散式的重複數據刪除系統及其處理方法
US9661442B2 (en) * 2011-11-01 2017-05-23 Ko-Chang Hung Method and apparatus for transmitting digital contents
US9304843B2 (en) * 2011-11-01 2016-04-05 Cleversafe, Inc. Highly secure method for accessing a dispersed storage network
US8849977B2 (en) * 2012-03-09 2014-09-30 Telefonaktiebolaget Lm Ericsson (Publ) Method and a control node in an overlay network
US9286276B2 (en) * 2012-06-11 2016-03-15 Google Inc. System and method of document embedding in collaborative editors
EP2901654A1 (en) * 2012-09-25 2015-08-05 Telefonaktiebolaget L M Ericsson (publ) Communicating with a constrained internet device
US9529785B2 (en) 2012-11-27 2016-12-27 Google Inc. Detecting relationships between edits and acting on a subset of edits
US9130939B2 (en) * 2012-12-28 2015-09-08 Intel Corporation Ad hoc decentralized cloud infrastructure
US10075519B2 (en) * 2013-01-10 2018-09-11 Telefonaktiebolaget Lm Ericsson (Publ) Connection mechanism for energy-efficient peer-to-peer networks
US9059858B1 (en) * 2013-03-11 2015-06-16 Ca, Inc. User characteristic based digital signature of documents
US9971752B2 (en) 2013-08-19 2018-05-15 Google Llc Systems and methods for resolving privileged edits within suggested edits
US9740581B2 (en) * 2013-10-18 2017-08-22 Empire Technology Development Llc Failure recovery scheme for a cloud system
US9348803B2 (en) 2013-10-22 2016-05-24 Google Inc. Systems and methods for providing just-in-time preview of suggestion resolutions
US8874835B1 (en) 2014-01-16 2014-10-28 Pure Storage, Inc. Data placement based on data properties in a tiered storage device system
US9082512B1 (en) 2014-08-07 2015-07-14 Pure Storage, Inc. Die-level monitoring in a storage cluster
US9558069B2 (en) 2014-08-07 2017-01-31 Pure Storage, Inc. Failure mapping in a storage array
US10983859B2 (en) 2014-08-07 2021-04-20 Pure Storage, Inc. Adjustable error correction based on memory health in a storage unit
US9766972B2 (en) 2014-08-07 2017-09-19 Pure Storage, Inc. Masking defective bits in a storage array
US9847918B2 (en) * 2014-08-12 2017-12-19 Microsoft Technology Licensing, Llc Distributed workload reassignment following communication failure
US9882906B2 (en) 2014-12-12 2018-01-30 International Business Machines Corporation Recommendation schema for storing data in a shared data storage network
US9800659B2 (en) 2015-02-02 2017-10-24 International Business Machines Corporation Enterprise peer-to-peer storage and method of managing peer network storage
US10013682B2 (en) 2015-02-13 2018-07-03 International Business Machines Corporation Storage and recovery of digital data based on social network
CN115174089B (zh) * 2015-04-20 2024-05-03 欧吉达克斯公司 物权电子凭证(edt)的分布式管理方法及其系统
CN105610860A (zh) * 2016-02-01 2016-05-25 厦门优芽网络科技有限公司 一种用户私有数据的分享协议和实施方法
US10542570B2 (en) 2016-03-15 2020-01-21 Huawei Technologies Co., Ltd. System and method for relaying data over a communication network
US10615844B2 (en) 2016-03-15 2020-04-07 Huawei Technologies Co., Ltd. System and method for relaying data over a communication network
US10091003B2 (en) * 2016-03-18 2018-10-02 Adobe Systems Incorporated Mobile signature embedded in desktop workflow
US9672905B1 (en) 2016-07-22 2017-06-06 Pure Storage, Inc. Optimize data protection layouts based on distributed flash wear leveling
US11449474B2 (en) 2016-09-17 2022-09-20 Oracle International Corporation Change request visualization in hierarchical systems
EP3523744B1 (en) 2016-10-06 2021-04-07 Mastercard International Incorporated Method and system for identity and credential protection and verification via blockchain
US9747158B1 (en) 2017-01-13 2017-08-29 Pure Storage, Inc. Intelligent refresh of 3D NAND
CN107403107B (zh) * 2017-07-18 2021-04-30 广西电网有限责任公司电力科学研究院 一种基于多点协作机制的数据安全管理方法及系统
CN107392499A (zh) 2017-08-10 2017-11-24 成都牵牛草信息技术有限公司 对使用者进行审批流程及其审批节点授权的方法
US11683213B2 (en) * 2018-05-01 2023-06-20 Infra FX, Inc. Autonomous management of resources by an administrative node network
EP3594843A1 (en) * 2018-07-10 2020-01-15 Klaxoon Improved scalable architecture of servers providing access to data content
US10880406B2 (en) * 2019-03-05 2020-12-29 Mastercard International Incorporated Controlling access to data resources on high latency networks
CN109871715B (zh) * 2019-03-12 2022-09-02 深圳市迅雷网络技术有限公司 分布式存储文件的访问方法、装置及存储介质
US10951697B2 (en) * 2019-06-07 2021-03-16 Holo Limited Holochain—A framework for distributed applications
US11928222B2 (en) 2020-10-02 2024-03-12 Blockframe, Inc. Distributed ledger network implementing a synchronous trust consensus model
JP2022135641A (ja) * 2021-03-05 2022-09-15 キオクシア株式会社 I/oコマンド制御装置およびストレージシステム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080086908A (ko) * 2005-12-22 2008-09-26 퀄컴 인코포레이티드 듀얼 통신 링크를 지원하는 물리적 접속점 식별자를 사용한통신 방법 및 장치
KR20080087853A (ko) * 2005-12-22 2008-10-01 퀄컴 인코포레이티드 엔드 노드 어시스티드 이웃 탐색을 위한 방법 및 장치
KR20080087850A (ko) * 2005-12-22 2008-10-01 퀄컴 인코포레이티드 물리적 접속점 식별자를 사용한 통신 방법 및 장치

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7165152B2 (en) * 1998-06-30 2007-01-16 Emc Corporation Method and apparatus for managing access to storage devices in a storage system with access control
US7322040B1 (en) * 2001-03-27 2008-01-22 Microsoft Corporation Authentication architecture
US6741687B1 (en) * 2002-03-04 2004-05-25 Sprint Spectrum L.P. System and method for providing prepaid communications
US7401132B1 (en) * 2002-12-20 2008-07-15 Symantec Operating Corporation Method and system for creating a peer-to-peer overlay network
US20050076339A1 (en) * 2003-10-03 2005-04-07 Nortel Networks Limited Method and apparatus for automated negotiation for resources on a switched underlay network
US20080130516A1 (en) * 2004-12-21 2008-06-05 Electronics And Telecommunications Research Institute P2p Overplay Network Construction Method and Apparatus
WO2006078820A1 (en) * 2005-01-21 2006-07-27 Innovative Inventions, Inc. Methods for authentication
EP1694027B1 (en) * 2005-02-22 2009-01-28 Microsoft Corporation Peer-to-peer network information
US20070079096A1 (en) * 2005-09-30 2007-04-05 Chih-Wei Chen Data storage unit access authorization table automatic rebuilding method and system
US20090270064A1 (en) * 2006-01-09 2009-10-29 Motorola, Inc. Method and system architecture for establishing a specific communication session in a communication network
US20070226225A1 (en) * 2006-03-22 2007-09-27 Yiu Timothy C Mobile collaboration and communication system
US20070288247A1 (en) * 2006-06-11 2007-12-13 Michael Mackay Digital life server
CN101170572A (zh) * 2006-10-23 2008-04-30 日电(中国)有限公司 基于p2p sip技术实现的多媒体网络通信系统
US8140506B2 (en) * 2006-11-30 2012-03-20 Red Hat, Inc. File sharing based on social network

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080086908A (ko) * 2005-12-22 2008-09-26 퀄컴 인코포레이티드 듀얼 통신 링크를 지원하는 물리적 접속점 식별자를 사용한통신 방법 및 장치
KR20080087853A (ko) * 2005-12-22 2008-10-01 퀄컴 인코포레이티드 엔드 노드 어시스티드 이웃 탐색을 위한 방법 및 장치
KR20080087850A (ko) * 2005-12-22 2008-10-01 퀄컴 인코포레이티드 물리적 접속점 식별자를 사용한 통신 방법 및 장치

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
C. Jennings et al."REsource LOcation And Discovery (RELOAD); draft-ietf-p2psip-reload-00,"(2008. 07. 11) *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10999060B2 (en) 2018-10-26 2021-05-04 Advanced New Technologies Co., Ltd. Data processing method and apparatus
US11626972B2 (en) 2018-10-26 2023-04-11 Advanced New Technologies Co., Ltd. Data processing method and apparatus

Also Published As

Publication number Publication date
EP2356792B1 (en) 2013-04-03
JP5215476B2 (ja) 2013-06-19
KR20110084457A (ko) 2011-07-22
TW201031160A (en) 2010-08-16
CN102217274B (zh) 2015-06-03
US8281023B2 (en) 2012-10-02
EP2356792A2 (en) 2011-08-17
CN102217274A (zh) 2011-10-12
WO2010056936A3 (en) 2010-11-11
JP2012508935A (ja) 2012-04-12
US20100125670A1 (en) 2010-05-20
WO2010056936A2 (en) 2010-05-20

Similar Documents

Publication Publication Date Title
KR101330392B1 (ko) 분산 저장 네트워크에서 데이터 인가를 위한 네트워크 노드 및 방법
CN108124502B (zh) 一种基于联盟链的顶级域名管理方法及系统
US7849303B2 (en) Peer-to-peer network information storage
JP5536362B2 (ja) コンテンツセントリックネットワークにおける通信を円滑化するための方法
CN102265581B (zh) 对等网络的分布式散列表中的安全节点标识符指派
CN109983752A (zh) 带有编码dns级信息的网络地址
US20060190715A1 (en) Peer-to-peer network information retrieval
US20060191020A1 (en) Peer-to-peer network communication
CN101960814B (zh) Ip地址委派
EP1694027B1 (en) Peer-to-peer network information
KR20090015026A (ko) 인덱스 저장소 사용 방법, 컴퓨터 시스템, 및 컴퓨터 판독가능 매체
Lee et al. Firmware verification of embedded devices based on a blockchain
CN114785622B (zh) 多标识网络的访问控制方法、装置及存储介质
JP2006236349A5 (ko)
Naghizadeh et al. Structural‐based tunneling: preserving mutual anonymity for circular P2P networks
Fotiou et al. Enabling self-verifiable mutable content items in IPFS using Decentralized Identifiers
Liu et al. Secure name resolution for identifier-to-locator mappings in the global internet
Grothoff The gnunet system
WO2020010270A1 (en) Dynamic routing using a distributed hash table
Fotiou et al. Self-verifiable content using decentralized identifiers
Albakri Blockchain and the Internet of Things: Opportunities and Challenges
Banerjee et al. A Holistic Blockchain Architecture for IoT Systems: Design Considerations and Challenges
Lu Towards a large scale and secure identity-based framework for future networks
Trabelsi et al. Secure Service Discovery with Distributed Registries
Lu et al. Vault: A secure binding service

Legal Events

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

Payment date: 20161028

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170929

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180928

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190924

Year of fee payment: 7