KR102569845B1 - 프라이버시 보존 컴퓨팅을 위한 상호 승인 - Google Patents
프라이버시 보존 컴퓨팅을 위한 상호 승인 Download PDFInfo
- Publication number
- KR102569845B1 KR102569845B1 KR1020187005416A KR20187005416A KR102569845B1 KR 102569845 B1 KR102569845 B1 KR 102569845B1 KR 1020187005416 A KR1020187005416 A KR 1020187005416A KR 20187005416 A KR20187005416 A KR 20187005416A KR 102569845 B1 KR102569845 B1 KR 102569845B1
- Authority
- KR
- South Korea
- Prior art keywords
- personal data
- secure
- tee
- experiment
- information element
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
- G06F21/445—Program or device authentication by mutual authentication, e.g. between devices or programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
- H04L63/0869—Network architectures or network communication protocols for network security for authentication of entities for achieving mutual authentication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/06—Network architectures or network communication protocols for network security for supporting key management in a packet data network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/126—Applying verification of the received information the source of the received data
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
다양한 실시예들은 일반적으로 다중 당사자 데이터의 상호 인증 및 보안 분산 처리를 제공하는 것에 관한 것이다. 특히, 다수의 신뢰할 수 없는 엔터티에 의해 소유된 개인 데이터에 대한 분산 처리를 포함하는 실험이 제시될 수 있다. 개인 데이터 제공자들은 실험을 허가하고 신뢰할 수 있는 컴퓨팅 노드들의 풀 내의 신뢰할 수 있는 컴퓨팅 노드들에 의한 처리를 위해 개인 데이터를 안전하게 전송할 수 있다.
Description
관련 출원들에 대한 상호 참조
본 출원은 그 내용 전체가 인용에 의해 본 명세서에 통합된, 2015년 9월 25일자로 출원된 이전에 출원된 미국 특허 출원 일련 번호 14/866,264에 대한 우선권과 그 이익을 주장한다.
기술 분야
본 명세서에 설명된 실시예들은 일반적으로 분산 컴퓨팅 또는 클라우드 컴퓨팅을 위한 데이터 세트들의 프라이버시를 보존하는 것에 관한 것이다.
현대 연구 활동들은 다수의 엔터티가 소유할 수 있는 대량의 데이터를 처리하는 것을 포함할 수 있다. 예를 들어, 컴퓨터를 이용한 진단들에 기초하여 의학적 결정, 실행, 및/또는 제품이 개별 환자에게 맞춰질 수 있는 신흥 의학 분야에서의 정밀 의학. 그러나, 그러한 진단들은 전형적으로 해당 환자뿐만 아니라 다수의 다른 환자에도 대응하는 대량의 게놈 데이터를 처리하는 것을 요구한다. 흔히, 이 데이터는 사적이고, 다양한 반 공개(anti disclosure) 법률들 또는 요건들의 대상이며, 예를 들어, 병원, 클리닉, 또는 다른 유사한 것과 같은 다수의 상이한 엔터티에 의해 소유된다. 따라서, 이러한 프라이버시 또는 다른 관심사로 인해, 데이터는 계산 처리가 완료되기 이전, 도중, 및 이후에 기밀로 유지되어야만 한다.
도 1은 일 실시예에 따른 시스템의 블록도를 도시한다.
도 2는 일 실시예에 따른 도 1의 시스템의 구현의 블록도를 도시한다.
도 3 내지 도 6은 다양한 실시예들에 따른 도 1의 시스템의 부분들의 블록도들을 도시한다.
도 7은 일 실시예에 따른 도 2의 구현의 부분의 블록도를 도시한다.
도 8은 일 실시예에 따른 기법을 도시한다.
도 9 내지 도 10은 각각 다양한 실시예들에 따른 논리 흐름들을 도시한다.
도 11은 컴퓨터 판독가능 스토리지 매체의 일 실시예를 도시한다.
도 12는 처리 아키텍처의 일 실시예를 도시한다.
도 2는 일 실시예에 따른 도 1의 시스템의 구현의 블록도를 도시한다.
도 3 내지 도 6은 다양한 실시예들에 따른 도 1의 시스템의 부분들의 블록도들을 도시한다.
도 7은 일 실시예에 따른 도 2의 구현의 부분의 블록도를 도시한다.
도 8은 일 실시예에 따른 기법을 도시한다.
도 9 내지 도 10은 각각 다양한 실시예들에 따른 논리 흐름들을 도시한다.
도 11은 컴퓨터 판독가능 스토리지 매체의 일 실시예를 도시한다.
도 12는 처리 아키텍처의 일 실시예를 도시한다.
다양한 실시예들은 일반적으로 상이한 엔터티들에 의해 소유된 다수의 데이터 세트들을 처리하면서 그 데이터 세트들의 프라이버시 및 제어를 보존하는 것에 관한 것이다. 특히, 본 개시는 다수의 당사자에 의해 소유된 데이터에 대한 신뢰할 수 있는 컴퓨팅이 컴퓨팅 리소스들의 분산 풀들에 걸쳐 수행될 수 있는 컴퓨팅 시스템을 제공한다. 데이터 소유자들 각각은 워크플로 이전, 도중 및 이후에 데이터에 대한 제어를 유지할 수 있다. 일반적으로, 이 시스템은 결합된 데이터 세트들에 대해 비순환 방향 그래프(directed acyclic graph, DAG)들의 적용을 제공한다. 예를 들어, 맵(map), 감소(reduce), 분석(analytics), 결과(results), 또는 다른 유사한 것과 같은 DAG 계산의 다양한 패턴들을 적용하기 위해 신뢰할 수 있는 컴퓨팅 클러스터가 제공될 수 있다. 또한, 데이터의 프라이버시가 유지될 수 있다. 특히, 이 시스템은 예를 들어, 암호화, 신뢰할 수 있는 실행 엔진들의 사용, 또는 다른 유사한 것에 의해, 풀 내의 신뢰할 수 있는 컴퓨터로의 데이터 제공자의 전송 중에, 저장 중에, 그리고 실행시에 데이터 기밀성 및 무결성을 유지할 수 있다. 또한, 결과들은 프라이버시를 보존하고 데이터 식별을 감소시키기 위해 보호될 수 있다.
본 개시는 다수의 신뢰할 수 없는 엔터티에 의해 제공되는 데이터 세트들에 대한 신뢰할 수 있는 컴퓨팅을 위한 시스템을 제공한다는 점에 주목하는 것이 중요하다. 따라서, 데이터 세트들에 대한 분산 계산은, 준비하기에 성가실 수 있고 데이터 도난을 방지하지 않는, 법적 협정의 필요 없이 용이해질 수 있다. 또한, 일부 유형의 데이터(예를 들어, 의학적 이미지, 게놈 데이터, 또는 다른 유사한 것)는 데이터를 쓸모 없게 만들지 않고 난독화하기는 어렵다. 따라서, 통상적인 데이터 비식별화(de-identification) 기법들은 전형적으로 이러한 유형의 데이터에 대해서는 사용될 수 없다.
본 명세서에서 사용되는 표기법들 및 명칭들을 일반적으로 참조하여, 후속되는 상세한 설명의 부분들은 컴퓨터 또는 컴퓨터 네트워크 상에서 실행되는 프로그램 프로시저들에 관하여 제시될 수 있다. 이들 절차적 설명들 및 표현들은 본 기술분야의 통상의 기술자들이 그들의 연구의 내용을 본 기술분야의 다른 통상의 기술자들에게 가장 효과적으로 전달하기 위해 사용된다. 프로시저는 본 명세서에서, 그리고 일반적으로, 원하는 결과로 이어지는 동작들의 일관된(self-consistent) 시퀀스인 것으로 생각된다. 이들 동작은 물리적 양들의 물리적 조작들을 필요로 하는 것들이다. 반드시 그런 것은 아니지만, 일반적으로, 이들 양은 저장, 전송, 결합, 비교, 및 다른 조작이 가능한 전기, 자기 또는 광학 신호들의 형태를 취한다. 주로 일반적인 용법의 이유로, 이들 신호를 비트, 값, 요소, 기호, 문자, 용어, 숫자, 또는 다른 유사한 것으로 언급하는 것이 때때로 편리한 것으로 입증되었다. 그러나, 이들 및 유사한 용어들 전부가 적절한 물리적 양들과 관련되어야 하고, 그러한 양들에 적용되는 편리한 라벨들에 불과하다는 점에 주목해야 한다.
또한, 이들 조작은 인간 조작자에 의해 수행되는 정신적 동작들과 일반적으로 관련되는, 추가 또는 비교와 같은 용어들로 흔히 언급된다. 그러나, 하나 이상의 실시예의 일부를 형성하는 본 명세서에 설명된 동작들 중 임의의 동작에서, 인간 조작자의 그러한 능력은 필요하지 않거나, 대부분의 경우 바람직하지 않다. 오히려, 이들 동작은 머신 동작들이다. 다양한 실시예들의 동작들을 수행하기 위한 유용한 머신들은 본 명세서의 교시에 따라 작성되는 저장된 컴퓨터 프로그램에 의해 선택적으로 활성화되거나 구성되는 범용 디지털 컴퓨터들을 포함하고, 및/또는 필요한 목적을 위해 특별히 구성된 장치들을 포함한다. 다양한 실시예들은 또한 이들 동작을 수행하기 위한 장치 또는 시스템에 관한 것이다. 이들 장치는 필요한 목적을 위해 특별히 구성될 수 있거나 일반적인 컴퓨팅 디바이스를 포함할 수 있다. 다양한 이들 머신에 대한 필요한 구조는 주어진 설명으로부터 나타날 것이다.
이제 도면들이 참조되는데, 도면들에서는 전체에 걸쳐 유사한 요소들을 지칭하기 위해 유사한 참조 번호들이 사용된다. 다음의 설명에서는, 설명의 목적으로, 철저한 이해를 제공하기 위해 다수의 특정 세부 사항이 제시된다. 그러나, 새로운 실시예들은 이들 특정 세부 사항 없이도 실시될 수 있음이 명백할 수 있다. 다른 예들에서, 잘 알려진 구조들 및 디바이스들은 그 설명을 용이하게 하기 위해 블록도 형태로 도시되어 있다. 그 의도는 청구항들의 범위 내의 모든 수정, 등가물 및 대안이 충분히 기술될 수 있도록 철저한 설명을 제공하는 것이다.
또한, 둘 이상의 컴포넌트가 구현될 수 있는 컴포넌트들을 나타내는 데 사용되는, "a", "b", "c"와 같은 변수들이 참조될 수 있다. 반드시 다수의 컴포넌트가 있을 필요는 없으며, 또한, 다수의 컴포넌트가 구현되는 경우, 이들이 동일할 필요는 없다는 점에 주목하는 것이 중요하다. 대신, 도면들에서 컴포넌트들을 참조하기 위한 변수들의 사용은 제시의 편의성 및 명료성을 위해 수행된다.
도 1은 다수의 신뢰할 수 없는 엔터티에 의해 소유된 데이터에 대한 분산 컴퓨팅을 위한 시스템을 도시한다. 일반적으로, 시스템(1000)은 (예를 들어, 인터넷, 또는 다른 유사한 것을 통해) 동작 가능하게 결합된 다수의 노드를 포함하며, 노드들 중 다수의 노드에서 데이터를 처리하도록 구성되며, 데이터의 소스도 또한 노드들 중 다수(예를 들어, 동일한 것, 또는 상이한 것들)이다. 더 구체적으로, 시스템(1000)은 데이터 제공자 노드들(100-1 내지 100-N), 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N), 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N)을 포함할 수 있다. N은 임의의 양의 정수일 수 있고 더 구체적으로, 시스템(1000)은 임의의 수의 노드(100, 200 및/또는 300)로 구현될 수 있다는 점에 주목한다. 또한, 데이터 제공자 노드들(100)의 수는 신뢰할 수 있는 컴퓨팅 노드들(200)의 수와 동일할 필요는 없다. 마찬가지로, 데이터 제공자 노드들(100) 및/또는 신뢰할 수 있는 컴퓨팅 노드들(200)의 수는 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300)의 수와 동일할 필요는 없다.
노드들(100-1 내지 100-N, 200-1 내지 200-N, 300-1 내지 300-N) 각각은 네트워크(400)를 통해 동작 가능하게 결합된다. 일반적으로, 네트워크(400)는, 예를 들어, 광역 네트워크, 인터넷, 또는 다른 유사한 것과 같은 임의의 네트워크일 수 있다. 노드들은 다양한 기관에 배치될 수 있다. 예를 들어, 의학 및/또는 제약 연구의 컨텍스트에서, 노드들은 대학, 병원, 클리닉, 제약 연구 시설, 정부 시설, 또는 다른 유사한 것에 배치될 수 있다. 또 다른 예로서, 경제 연구의 컨텍스트에서, 노드들은 대학, 은행, 투자 기관, 정부 시설, 경제 연구 시설, 인구 통계 연구 시설, 또는 다른 유사한 것에 배치될 수 있다. 이들 예는 단지 제시의 명료성을 위해 주어진 것이며 제한적인 것은 아니라는 점에 주목한다. 특히, 본 개시는 임의의 컨텍스트에서 다수의 신뢰할 수 없는 엔터티에 의해 소유된 데이터의 보안 분산 처리를 제공하도록 구현될 수 있으며, 의학, 제약, 또는 경제 연구로 특별히 제한되지 않는다.
시스템(1000)의 예시적인 부분들은 아래에서 더 상세히 설명되며, 특히 도 2 내지 도 7과 관련하여 시스템(1000)의 예시적인 구성들이 제공되는 반면, 도 8은 시스템(1000)에 의해 구현되는 예시적인 기법을 도시한다. 그러나, 이들 각각의 도면을 더 상세하게 살펴보기 전에 시스템(1000)의 동작에 대한 일반적인 설명이 본 명세서에 제공된다. 일반적으로, 데이터 제공자 노드들(100-1 내지 100-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N)은 개인 데이터(예를 들어, 도 3 및 도 5 참조)를 포함하며, 이 데이터는 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 및/또는 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N) 중 적어도 일부를 사용하여 데이터에 일부 분석 계산을 적용할 목적으로 액세스될 수 있다. 더 상세하게는, 액세스될 데이터의 설명 및 실험 포털(500)을 통해 데이터에 적용될 계산을 포함하는 실험이 제시될 수 있다(예를 들어, 연구원, 또는 다른 유사한 것에 의해). 실험 포털(500)은 신뢰할 수 없는 것일 수 있거나 신뢰할 수 있는 것일 수 있다. 더 구체적으로, 실험 포털(500)은 개인 데이터에 액세스할 권한이 없는 엔터티들(예를 들어, 연구, 또는 다른 유사한 것)에 대해조차도, 인터넷을 통해 액세스 가능한 포털일 수 있다. 다른 예들에서, 실험 포털(500)은 예를 들어 액세스 자격증명들을 요구하는 개인 네트워크와 같은 보안 프로세스를 통해 액세스 가능할 수 있다. 일부 예들에서, 실험 포털(500)은 엔터티들이 시스템(1000)에 실험들을 제시할 수 있는 시스템(1000)에 동작 가능하게 결합된 웹 형태일 수 있다.
언급된 바와 같이, 실험 포털(500)이 실험 디스크립션을 수신함으로써 시스템(1000)을 사용하여 실험이 개시될 수 있다(예를 들어, 도 6 참조). 일부 예들에서, 실험 디스크립션은 비순환 방향 그래프(DAG)를 포함할 수 있다. DAG는 방향 순환(directed cycle)이 없는 방향 그래프라는 점에 주목한다. 더 상세하게는, DAG는 정점(vertex)들과 방향 에지(directed edge)들의 집합에 의해 형성되며, 각각의 에지가 하나의 정점을 또 다른 정점에 연결하고, 어떤 정점에서 시작하여 결국 동일한 정점으로 다시 루프백하는 에지들의 시퀀스를 따라가는 방법은 없도록 한 것이다. DAG는 개인 데이터에 적용할 실험을 모델링하기 위해 생성될 수 있다. 더 상세하게는, 태스크들(예를 들어, 데이터 처리, 데이터베이스 질의, 또는 다른 유사한 것)의 집합이 다양한 제약 조건에 따라 시퀀스로 정렬될 수 있다. DAG의 각각의 정점이 태스크이고 각각의 에지가 제약 조건인 DAG가 형성될 수 있다.
실험 포털(500)은 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 중 하나 또는 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N) 중 하나를 실험 오케스트레이터(예를 들어, 도 2 참조)로서 역할을 하도록 선택할 수 있다. 실험 오케스트레이터는 데이터 제공자 노드들(100-1 내지 100-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N) 각각에 대해 증명한다(예를 들어, 그의 신뢰성을 증명하거나, 프로그래밍을 검증하거나, 또는 다른 유사한 방식). 또한, 실험 오케스트레이터는 데이터 제공자 노드들(100-1 내지 100-N) 각각과 그리고 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N) 각각과 보안 채널을 설정한다. 실험 오케스트레이터는, 예를 들어, 설정된 보안 채널을 통해 데이터 제공자 노드들(100-1 내지 100-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N) 각각에 DAG를 제시한다. 데이터 제공자 노드들(100-1 내지 100-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N)은 DAG가 승인된 애플리케이션들 및/또는 계산들을 사용하여 개인 데이터를 처리하는 것을 기술하는 것을 검증할 수 있다. 더 상세하게는, 일부 예들에서, 개인 데이터의 소유자들은 개인 데이터가 특정 애플리케이션들만으로 처리되는 것을 요구할 수 있다. 따라서, 데이터 제공자 노드들(100-1 내지 100-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N)은 DAG가 승인된 애플리케이션들만을 참조 및/또는 실행하는지를 검증할 수 있다.
데이터 제공자 노드들(100-1 내지 100-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N)이 DAG를 승인하면, 연구 포털은 이용 가능한 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N) 상에서 실행되도록 실험 디스크립션의 부분들(예를 들어, DAG에 기술된 애플리케이션들, 또는 다른 유사한 것)을 스케줄링한다. 특히, 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N)은 컴퓨팅 풀(예를 들어, 도 2 참조)에 수용되고 실험 오케스트레이터의 주소가 주어진다. 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N) 각각은, 컴퓨팅 풀에 조인할 때, 그들의 애플리케이션들, 론치 파라미터들, 및 신뢰의 루트(root of trust)를 증명할 수 있다. 따라서, 실험 오케스트레이터는 컴퓨팅 풀에 수용된 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N) 각각의 신뢰성을 인증 또는 검증할 수 있다. 실험 오케스트레이터는 풀 내의 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N)과 개인 데이터를 제공하는 데이터 제공자 노드들(100-1 내지 100-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N) 사이의 보안 경로를 설정할 수 있다. 일부 예들에서, 이 신뢰할 수 있는 경로의 설정 동안, 데이터 제공자 노드들(200-1 내지 200-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N)은 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N)에게 그들의 신뢰성의 증거를 제공할 것을 요구할 수 있다.
실험 디스크립션(예를 들어, DAG)의 실행 동안, 데이터는 암호화되어 보안 채널들을 통해 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N)로 전송된다. 암호화 키들은 개인 데이터를 해독할 필요가 있는 풀 내의 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N)에 직접 배포될 수 있고 및/또는 컴퓨팅 풀 내의 모든 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N)에 배포될 수 있다. 일부 예들에서, 암호화 키들은 실험 오케스트레이터에 의해 배포된다. 일부 예들에서, 암호화 키들은 데이터 제공자 노드들(200-1 내지 200-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N)에 의해 배포된다. 시스템(1000)의 보안을 향상시키기 위해, 예를 들어, 신뢰할 수 있는 실행 엔진들과 같은 신뢰할 수 있는 환경 내에서 데이터가 저장되고, 해독되고, 데이터에 대해 애플리케이션들이 실행된다. 컴퓨팅 풀 내의 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N)이 계산을 종료하고 및/또는 컴퓨팅 풀을 떠날 때, 암호화된 데이터, 암호화 키들, 및 보고된 결과들은 파괴된다(예를 들어, 안전하게 제거되는, 또는 다른 유사한 것).
실험의 종료시에, 개인 데이터가 실험의 결과들을 통해 공개될 가능성을 감소시키기 위해 결과들은 프라이버시 강화될 수 있다. 특히, 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N)은 노이즈를 부가하거나, 결과들을 암호화하거나, 또는 다른 유사한 것을 할 수 있다. 일부 예들에서, 데이터 제공자 노드들(200-1 내지 200-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N)(예를 들어, 개인 데이터의 소유자들)은 결과들의 공개에 관한 정책들을 특정할 수 있다.
도 2 내지 도 8을 더 상세하게 살펴보면, 블록도들이 도시되어 있다. 특히 도 2는 분산 컴퓨팅 풀 및 개인 데이터 소스들의 예시적인 구현을 도시한다. 도 3은 데이터 제공자 노드(200)의 예의 블록도를 도시하고; 도 4는 신뢰할 수 있는 컴퓨팅 노드(200)의 예의 블록도를 도시하고; 도 5는 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드(300)의 예의 블록도를 도시하고; 도 6은 연구 포털(500)의 예의 블록도를 도시한다. 도 7은 도 2에 도시된 구현(1001)의 부분을 더 상세히 도시한다. 도 8은 상이한 엔터티들에 의해 소유된 다수의 개인 데이터 세트들의 보안 분산 처리를 위한 기법의 블록도를 도시한다. 도 2 내지 도 7에 대한 간단한 설명과 이어서 도 8에 대한 설명이 주어진다. 도 2에 도시된 예시적인 분산 컴퓨팅 풀 및 도 8에 도시된 기법은 설명의 명료성을 위해 도 3 내지 도 7에 도시된 블록도들을 참조하여 설명되고 제한적인 것은 아니라는 점에 주목한다. 또한, 도 2 내지 도 8은 도 1에 도시된 시스템(1000)을 참조하여 설명된다. 그러나, 이는 또한 설명의 명료성을 위해 이루어지며 제한적인 것은 아니다.
도 2를 더 구체적으로 살펴보면, 시스템(1000)의 예시적인 구현(1001)이 도시되어 있다. 특히, 예시적인 구현(1001)은 분산 컴퓨팅 풀(1010) 및 개인 데이터 소스들(1020)을 포함할 수 있다. 분산 컴퓨팅 풀(1010)은 다수의 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N)을 포함하는 것으로 도시되어 있다. 특히, 분산 컴퓨팅 풀(1010)은 신뢰할 수 있는 컴퓨팅 노드들(200-1 및 200-2) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드(300-1)를 포함하는 것으로 도시되어 있다. 개인 데이터 소스들(1020)은 다수의 데이터 제공자 노드들(100-1 내지 100-N) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N)을 포함하는 것으로 도시되어 있다. 특히, 개인 데이터 소스들(1020)은 데이터 제공자 노드들(100-1 및 100-2) 및 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드(300-2)를 포함하는 것으로 도시되어 있다. 또한, 예시적인 구현(1001)은 실험 오케스트레이터(1030)를 포함한다. 동작 동안, 실험의 개시시, 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 중 하나 또는 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N) 중 하나는 실험 오케스트레이터(1030)로서 역할을 할 수 있다. 신뢰할 수 있는 컴퓨팅 노드(200-3)는 실험 오케스트레이터(1030)로서 도시되어 있다는 점에 주목한다. 그러나, 이는 설명의 명료성을 위해 행해지는 것이지 제한적인 것은 아니다. 실험 오케스트레이터는 분산 컴퓨팅 풀(1010) 및 개인 데이터 소스들(1020)에 동작 가능하게 결합된다. 또한, 실험 오케스트레이터는 실험 포털(500)에 동작 가능하게 결합된다. 예시적인 구현(1001)의 동작은 도 8을 참조하여 아래에서 더 상세하게 설명된다. 그러나, 도 3 내지 도 7과 관련하여, 시스템(1000)의 예시적인 부분들에 대한 설명이 먼저 주어진다.
도 3을 더 구체적으로 살펴보면, 도시된 데이터 제공자 노드(100)는 도 1 내지 도 2에 도시된 시스템(1000)의 데이터 제공자 노드들(100-1 내지 100-N) 중 임의의 하나에 대응할 수 있다. 데이터 제공자 노드(100)는 프로세서 요소(110), 컴퓨터 판독가능 스토리지(120), 컨트롤들(140), 및 인터페이스(150)를 포함할 수 있다. 컴퓨터 판독가능 스토리지(120)는 제어 루틴(122), 개인 데이터(124), 개인 데이터 암호화 키들(126), 및 암호화된 개인 데이터(128) 중 하나 이상을 저장할 수 있다.
일반적으로, 제어 루틴(122)은 본 명세서에 설명된 바와 같은 처리를 위해 개인 데이터(124)를 제공하기 위한 로직을 구현하기 위해 디바이스(100)의 컴포넌트들(예를 들어, 프로세서 요소(110), 컨트롤들(140), 인터페이스(150), 또는 다른 유사한 것)에서 동작하는 명령어들의 시퀀스를 통합한다. 특히, 제어 루틴(122)을 실행함에 있어서, 처리 요소(110)는 개인 데이터(124)를 사용하여 실험을 실행하라는 요청을 수신할 수 있다. 프로세서 요소(110)는 실험이 개인 데이터(124)에 대해 허가된 액션들(예를 들어, 애플리케이션들, 동작들, 또는 다른 유사한 것)을 포함하는 것을 검증할 수 있다. 또한, 프로세서 요소(110)는, 예를 들어, 개인 데이터 암호화 키들(126)을 사용하여 개인 데이터(124)를 암호화하여 암호화된 개인 데이터(128)를 형성할 수 있다. 프로세서 요소(110)는 암호화된 개인 데이터(128)를 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 중 하나 및/또는 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N) 중 하나에 제공할 수 있고 암호화 키들(126)을 실험 오케스트레이터에 제공할 수 있다. 따라서, 데이터 제공자 노드들(100)은 개인 데이터(124)에 대한 분산 처리를 용이하게 할 수 있는데, 분산 처리는 다수의 신뢰할 수 없는 엔터티에 의해 소유된 다수의 개인 데이터 세트(예를 들어, 개인 데이터(124-1) 내지 개인 데이터(124-N), 또는 다른 유사한 것)에 대해 동작한다.
일반적으로, 개인 데이터(124)는 분산 처리가 요구되는 임의의 데이터일 수 있다. 예를 들어, 개인 데이터는 의학 데이터, 경제 데이터, 재무 데이터, 과거 데이터, 비즈니스 데이터, 인구 통계 데이터, 또는 다른 유사한 것일 수 있다.
도 4를 더 구체적으로 살펴보면, 도시된 신뢰할 수 있는 컴퓨팅 노드(200)는 도 1 내지 도 2에 도시된 시스템(1000)의 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 중 임의의 하나에 대응할 수 있다. 신뢰할 수 있는 컴퓨팅 노드(200)는 프로세서 요소(210), 컴퓨터 판독가능 스토리지(220), 신뢰할 수 있는 실행 환경(TEE)(230), 컨트롤들(240), 및 인터페이스(250)를 포함할 수 있다. 컴퓨터 판독가능 스토리지(220)는 하나 이상의 제어 루틴(222)을 저장할 수 있는 한편 신뢰할 수 있는 실행 환경(230)은 제어 루틴(232), 결과들(234), 개인 데이터 암호화 키들(126) 및 암호화된 개인 데이터(128) 중 하나 이상을 저장할 수 있다.
일반적으로, 제어 루틴(222)은 개인 데이터 세트들(예를 들어, 개인 데이터(124))의 보안 분산 처리를 제공하기 위한 로직을 구현하기 위해 디바이스(200)의 컴포넌트들(예를 들어, 프로세서 요소(210), TEE(230), 컨트롤들(240), 인터페이스(250), 또는 다른 유사한 것)에서 동작하는 명령어들의 시퀀스를 통합한다. 또한, 제어 루틴(232)은 암호화된 개인 데이터(128)를 해독하고 해독된 개인 데이터에 대해 다양한 컴퓨팅 동작들을 적용하기 위한 로직을 구현하기 위해 디바이스(200)의 컴포넌트들(예를 들어, 프로세서 요소(210), 컨트롤들(240), 인터페이스(250), 또는 다른 유사한 것)에서 동작하는 명령어들의 시퀀스를 통합한다.
TEE(230)는 본 명세서에 설명된 기능들을 안전하게 구현하기 위한 로직, 기능들, 피처들, 및/또는 스토리지를 포함할 수 있다는 점에 주목하는 것이 중요하다. 또한, TEE(230)는 프로세서 요소(210) 및/또는 스토리지(220)에 통합될 수 있다. 그러나, 명료함을 위해, TEE(230)는 프로세서 요소(210) 및 스토리지(220)와 별개인 것으로 도시되어 있다. 일부 예들에서, TEE(230)는 보안 인클레이브(secure enclave), 보안 코프로세서(secure co-processor), 또는 다른 유사한 것으로서 구현될 수 있다. 따라서, 신뢰할 수 있는 컴퓨팅 노드(200)는 개인 데이터(124)를 안전하게 해독, 저장, 및 처리하는 그의 능력을 증명할 수 있다.
제어 루틴(232)을 실행함에 있어서, 처리 요소(210)는 컴퓨팅 풀에 조인할 수 있고, 그의 신뢰성을 실험 오케스트레이터에 증명할 수 있다. 처리 요소(210)는 개인 데이터(124)에 대해 적용하기 위한 동작들(예를 들어, DAG의 부분들, 또는 다른 유사한 것)의 표시를 포함하는 정보 요소(들)를 실험 오케스트레이터로부터 수신할 수 있다. 프로세서 요소(210)는 암호화된 개인 데이터(128)의 표시들을 포함하는 정보 요소(들)를 수신할 수 있다(예를 들어, 개인 데이터 소스들(1030) 중 하나로부터). 또한, 프로세서 요소(210)는 수신된 암호화된 개인 데이터(128)에 대응하는 개인 데이터 암호화 키들(126)의 표시를 포함하는 정보 요소(들)를 실험 오케스트레이터로부터 수신할 수 있다.
제어 루틴(232)을 실행함에 있어서, 프로세서 요소(210)는 실험 오케스트레이터로부터 수신된 실험(예를 들어, DAG)의 부분들에 기술된 동작들을 수신된 개인 데이터에 적용할 수 있다. 달리 말하면, 프로세서 요소(210)는 신뢰할 수 있는 컴퓨팅 노드(200)에 의해 수신된 DAG의 부분에 표시된 바와 같이 (예를 들어, 개인 데이터 암호화 키들(126)을 사용하여 암호화된 개인 데이터(128)를 해독함으로써 또는 다른 유사한 방식으로) 개인 데이터를 처리하는 것에 적어도 부분적으로 기초하여 결과들(234)을 생성할 수 있다. 또한, 프로세서 요소는 결과들(234)에 기초하여 개인 데이터를 식별할 가능성을 감소시키기 위해 (예를 들어, 노이즈를 추가함으로써 또는 다른 유사한 방식으로) 결과들(234)을 난독화할 수 있다.
도 5를 더 구체적으로 살펴보면, 도시된 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드(300)는 도 1 내지 도 2에 도시된 시스템(1000)의 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N) 중 임의의 하나에 대응할 수 있다. 신뢰할 수 있는 컴퓨팅 노드(300)는 도 3 내지 도 4와 관련하여 설명된 노드들(100 및 200)의 조합일 수 있다는 점에 주목한다. 특히, 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드(300)는 (예를 들어, 노드(100)와 유사하게) 개인 데이터를 제공할 수 있거나 (예를 들어, 노드(200)와 유사하게) 개인 데이터를 처리할 수 있다. 일부 예들에 있어서, 노드(300)는 개인 데이터를 제공하거나 처리할 수 있다. 일부 예들에 있어서, 노드(300)는 개인 데이터를 제공하고 처리할 수 있다. 특히, 개인 데이터의 처리가 TEE에 국한되기 때문에, 처리되는 개인 데이터가 상이한 엔터티에 의해 소유되는 경우에도 개인 데이터의 보안은 유지될 수 있다.
노드(300)는 프로세서 요소(310), 컴퓨터 판독가능 스토리지(320), TEE(330), 컨트롤들(340), 및 인터페이스(350)를 포함할 수 있다. 컴퓨터 판독가능 스토리지(320)는 제어 루틴(322), 개인 데이터(124), 개인 데이터 암호화 키들(126), 및 암호화된 개인 데이터(128) 중 하나 이상을 저장할 수 있다. TEE(330)는 제어 루틴(332), 결과들(234), 개인 데이터 암호화 키들(126), 및 암호화된 개인 데이터(128) 중 하나 이상을 포함할 수 있다.
일반적으로, 제어 루틴(322)은 본 명세서에 설명된 바와 같은 처리를 위해 개인 데이터(124)를 제공하기 위한 로직을 구현하기 위해 디바이스(300)의 컴포넌트들(예를 들어, 프로세서 요소(310), 컨트롤들(340), 인터페이스(350), 또는 다른 유사한 것)에서 동작하는 명령어들의 시퀀스를 통합한다. 특히, 제어 루틴(322)을 실행함에 있어서, 처리 요소(310)는 개인 데이터(124)를 사용하여 실험을 실행하라는 요청을 수신할 수 있다. 프로세서 요소(310)는 실험이 개인 데이터(124)에 대해 허가된 액션들(예를 들어, 애플리케이션들, 동작들, 또는 다른 유사한 것)을 포함하는 것을 검증할 수 있다. 또한, 프로세서 요소(310)는, 예를 들어, 개인 데이터 암호화 키들(126)을 사용하여 개인 데이터(124)를 암호화하여 암호화된 개인 데이터(128)를 형성할 수 있다. 프로세서 요소(310)는 암호화된 개인 데이터(128)를 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 중 하나 및/또는 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N) 중 하나에 제공할 수 있고 암호화 키들(126)을 실험 오케스트레이터에 제공할 수 있다.
일반적으로, 제어 루틴(332)은 암호화된 개인 데이터(128)를 해독하고 해독된 개인 데이터에 대해 다양한 컴퓨팅 동작들을 적용하기 위한 로직을 구현하기 위해 디바이스(300)의 컴포넌트들(예를 들어, 프로세서 요소(310), 컨트롤들(340), 인터페이스(350), 또는 다른 유사한 것)에서 동작하는 명령어들의 시퀀스를 통합한다.
TEE(330)는 본 명세서에 설명된 기능들을 안전하게 구현하기 위한 로직, 기능들, 피처들, 및/또는 스토리지를 포함할 수 있다는 점에 주목하는 것이 중요하다. 또한, TEE(330)는 프로세서 요소(310) 및/또는 스토리지(320)에 통합될 수 있다. 그러나, 명료함을 위해, TEE(330)는 프로세서 요소(310) 및 스토리지(320)와 별개인 것으로 도시되어 있다. 일부 예들에서, TEE(330)는 보안 인클레이브, 보안 코프로세서, 또는 다른 유사한 것으로서 구현될 수 있다. 따라서, 노드(300)는 개인 데이터(124)를 안전하게 해독, 저장, 및 처리하는 그의 능력을 증명할 수 있다.
제어 루틴(332)을 실행함에 있어서, 처리 요소(310)는 컴퓨팅 풀에 조인할 수 있고, 그의 신뢰성을 실험 오케스트레이터에 증명할 수 있다. 처리 요소(310)는 개인 데이터(124)에 대해 적용하기 위한 동작들(예를 들어, DAG의 부분들, 또는 다른 유사한 것)의 표시를 포함하는 정보 요소(들)를 실험 오케스트레이터로부터 수신할 수 있다. 프로세서 요소(310)는 암호화된 개인 데이터(128)의 표시들을 포함하는 정보 요소(들)를 수신할 수 있다(예를 들어, 개인 데이터 소스들(1030) 중 하나로부터). 또한, 프로세서 요소(310)는 수신된 암호화된 개인 데이터(128)에 대응하는 개인 데이터 암호화 키들(126)의 표시를 포함하는 정보 요소(들)를 실험 오케스트레이터로부터 수신할 수 있다.
제어 루틴(332)을 실행함에 있어서, 프로세서 요소(310)는 실험 오케스트레이터로부터 수신된 실험(예를 들어, DAG)의 부분들에 기술된 동작들을 수신된 개인 데이터에 적용할 수 있다. 달리 말하면, 프로세서 요소(310)는 노드(300)에 의해 수신된 DAG의 부분에 표시된 바와 같이 (예를 들어, 개인 데이터 암호화 키들(126)을 사용하여 암호화된 개인 데이터(128)를 해독함으로써 또는 다른 유사한 방식으로) 개인 데이터를 처리하는 것에 적어도 부분적으로 기초하여 결과들(234)을 생성할 수 있다. 또한, 프로세서 요소는(310) 결과들(234)에 기초하여 개인 데이터를 식별할 가능성을 감소시키기 위해 (예를 들어, 노이즈를 추가함으로써 또는 다른 유사한 방식으로) 결과들(234)을 난독화할 수 있다.
도 6을 더 구체적으로 살펴보면, 도시된 실험 포털(500)의 예가 도시되어 있다. 실험 포털(500)은 프로세서 요소(510), 컴퓨터 판독가능 스토리지(520), 컨트롤들(540), 및 인터페이스(550)를 포함할 수 있다. 컴퓨터 판독가능 스토리지(520)는 제어 루틴(522), 실험 디스크립션(524) 및 결과들(234) 중 하나 이상을 저장할 수 있다.
일반적으로, 제어 루틴(522)은 (예를 들어, 연구자 디바이스, 또는 다른 유사한 것으로부터) 실험 디스크립션(524)을 수신하기 위한 로직을 구현하기 위해 디바이스(500)의 컴포넌트들(예를 들어, 프로세서 요소(510), 컨트롤들(540), 인터페이스(550), 또는 다른 유사한 것)에서 동작하는 명령어들의 시퀀스를 통합한다. 프로세서 요소(510)는 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 중 하나를 실험 오케스트레이터(1030)로서 역할을 하도록 선택할 수 있고 실험 디스크립션(524)을 실험 오케스트레이터(1030)에 전달할 수 있다. 또한, 제어 루틴(532)을 실행함에 있어서, 프로세서 요소(510)는 분산 컴퓨팅 풀(1010) 내의 이용 가능한 노드들 상에서 동작하도록 실험 디스크립션(524)의 부분들을 스케줄링할 수 있다. 일반적으로, 실험 디스크립션은 액세스될 개인 데이터(124)의 표시 및 개인 데이터에 대해 수행될 동작을 포함하는 임의의 설명일 수 있다. 일부 예들에서, 실험 디스크립션은 개인 데이터(124) 및 다양한 맵 함수들, 감소 함수들, 분석 함수들, 또는 다른 유사한 것을 참조하는 DAG일 것이다.
디바이스(100, 200, 300 및/또는 500)는 서버, 워크스테이션, 데이터 센터, 랩톱 컴퓨터, Ultrabook® 컴퓨터, 태블릿 컴퓨터, 스마트 폰, 또는 다른 유사한 것을 포함하는(이들로 한정되지 않음), 다양한 유형의 컴퓨팅 디바이스들 중 임의의 것일 수 있다.
다양한 실시예들에서, 프로세서 요소들(110, 210, 310, 및/또는 510)은 AMD® Athlon®, Duron® 또는 Opteron® 프로세서; ARM® 애플리케이션, 임베디드 또는 보안 프로세서; IBM® 및/또는 Motorola® DragonBall® 또는 PowerPC® 프로세서; IBM 및/또는 Sony® Cell 프로세서; 또는 Intel® Celeron®, Core (2) Duo®, Core (2) Quad®, Core i3®, Core i5®, Core i7®, Atom®, Itanium®, Pentium®, Xeon® 또는 XScale® 프로세서를 포함하는(이들로 한정되지 않음), 매우 다양한 상업적으로 이용 가능한 프로세서들 중 임의의 것을 포함할 수 있다. 또한, 이들 프로세서 요소 중 하나 이상은 멀티-코어 프로세서(다수의 코어가 동일한 다이에 공존하든 개별 다이들에 공존하든 관계없음), 및/또는 다수의 물리적으로 분리된 프로세서들이 어떤 식으로든 연결되게 하는 어떤 다른 다양성의 멀티프로세서 아키텍처를 포함할 수 있다. 또한, 다양한 실시예들에서, 임의의 수의 프로세서 요소(110, 210, 및/또는 410)가 민감한 정보의 처리 및/또는 저장을 제공하기 위한 신뢰할 수 있는 실행 환경(예를 들어, Intel CSE®, Intel ME®, Intel VT®, Intel SGX®, ARM TrustedZone®, 또는 다른 유사한 것)를 포함할 수 있다. 신뢰할 수 있는 실행 환경은 본 명세서에 설명된 지오-로케이션 기법들을 사용하여 액세스될 수 있다.
다양한 실시예들에서, 스토리지(120, 220, 320, 및/또는 520)는 중단 없는 전력의 공급을 필요로 하는 휘발성 기술들을 아마도 포함하는, 그리고 이동식일 수 있는 또는 이동식이 아닐 수 있는 머신 판독가능 스토리지 매체의 사용을 수반하는 기술들을 아마도 포함하는, 매우 다양한 정보 저장 기술들 중 임의의 것에 기초할 수 있다. 따라서, 이들 스토리지 각각은 ROM(read-only memory), RAM(random-access memory), DRAM(dynamic RAM), DDR-DRAM(Double-Data-Rate DRAM), SDRAM(synchronous DRAM), SRAM(static RAM), PROM(programmable ROM), EPROM(erasable programmable ROM), EEPROM(electrically erasable programmable ROM), 플래시 메모리, 폴리머 메모리(예를 들어, 강유전성 폴리머 메모리), 오보닉 메모리, 상변화 또는 강유전성 메모리, SONOS(silicon-oxide-nitride-oxide-silicon) 메모리, 자기 또는 광학 카드, 하나 이상의 개별 강자성 디스크 드라이브, 또는 하나 이상의 어레이로 조직된 복수의 스토리지 디바이스(예를 들어, 독립 디스크들의 중복 어레이(Redundant Array of Independent Disks) 어레이, 또는 RAID 어레이로 조직된 다수의 강자성 디스크 드라이브)를 포함하는(이들로 한정되지 않음), 매우 다양한 유형들(또는 유형들의 조합)의 스토리지 디바이스들 중 임의의 것을 포함할 수 있다. 이들 스토리지 각각은 단일 블록으로 도시되어 있지만, 이들 중 하나 이상은 상이한 저장 기술들에 기초할 수 있는 다수의 스토리지 디바이스를 포함할 수 있다는 점에 주목해야 한다. 따라서, 예를 들어, 이들 도시된 스토리지 각각의 하나 이상은 프로그램들 및/또는 데이터가 어떤 형태의 머신 판독가능 스토리지 매체 상에 저장되고 전달될 수 있게 하는 광학 드라이브 또는 플래시 메모리 카드 판독기, 비교적 긴 기간 동안 로컬로 프로그램들 및/또는 데이터를 저장하는 강자성 디스크 드라이브, 및 프로그램들 및/또는 데이터에 비교적 신속하게 액세스할 수 있게 하는 하나 이상의 휘발성 솔리드 스테이트 메모리 디바이스(예를 들어, SRAM 또는 DRAM)의 조합을 나타낼 수 있다. 또한, 이들 스토리지 각각은 동일한 저장 기술에 기초한 다수의 저장 컴포넌트로 이루어질 수 있지만, 사용시 전문화의 결과로서 개별적으로 유지될 수 있다는 점에 주목해야 한다(예를 들어, 일부 DRAM 디바이스들은 주 스토리지로서 사용되는 반면 다른 DRAM 디바이스들은 그래픽 제어기의 개별 프레임 버퍼로서 사용됨).
다양한 실시예들에서, 제어 루틴들(122, 222, 232, 322, 332, 및/또는 522)은 운영 체제, 디바이스 드라이버들 및/또는 애플리케이션-레벨 루틴들(예를 들어, 디스크 매체 상에 제공된 소위 "소프트웨어 스위트들", 원격 서버로부터 획득된 "애플릿들" 등) 중 하나 이상을 포함할 수 있다. 운영 체제가 포함되는 경우, 운영 체제는 프로세서 요소들(예를 들어, 110, 210, 310, 510, 또는 다른 유사한 것) 중 무엇이든 대응하는 것들에 대해 적절한 다양한 이용 가능한 운영 체제들 중 임의의 것일 수 있다. 하나 이상의 디바이스 드라이버가 포함되어 있는 경우, 그들 디바이스 드라이버는 디바이스들의 다양한 다른 컴포넌트들(하드웨어 컴포넌트들인지 소프트웨어 컴포넌트들인지 무관함) 중 임의의 것에 대한 지원을 제공할 수 있다.
다양한 실시예들에서, 컨트롤들(140, 240, 340 및/또는 540)은, 예를 들어, 터치 스크린, 키보드, 마우스, 키패드, 트랙패드, 스타일러스, 디스플레이, 스피커, 햅틱 피드백 디바이스, 또는 다른 유사한 것과 같은 다양한 입력 및/또는 출력 디바이스들 중 임의의 것일 수 있다. 컨트롤들은 로컬 또는 원격일 수 있고 무선 또는 유선으로 연결될 수 있다.
다양한 실시예들에서, 인터페이스들(150, 250, 350 및/또는 550)은 컴포넌트들이 네트워크(400)를 통해 결합될 수 있게 하는 매우 다양한 시그널링 기술들 중 임의의 것을 사용할 수 있다. 특히, 디바이스들(100, 200, 300, 및/또는 500)은 개인 데이터(124) 및 결과들(234)과 관련된 정보 및/또는 데이터를 전달하는 신호들을 교환할 수 있다(예를 들어, 서로, 다른 디바이스와, 또는 다른 유사한 방식으로).
다양한 실시예들에서, 네트워크(400)는 단일 건물 또는 다른 비교적 제한된 영역 내에서 연장되는 것으로 제한될 수 있는 단일 네트워크, 상당한 거리를 연장할 수 있는 연결된 네트워크들의 조합 및/또는 인터넷을 포함할 수 있다. 따라서, 네트워크(400)는 전기 및/또는 광학 전도성 케이블링을 이용하는 유선 기술, 및 적외선, 무선 주파수 또는 다른 형태의 무선 송신을 이용하는 무선 기술을 포함하는(이들로 한정되지 않음), 신호들이 교환될 수 있게 하는 다양한 통신 기술들 중 임의의 것(또는 그 조합)에 기초할 수 있다. 따라서, 인터페이스들(150, 250, 350, 및/또는 550)은 그러한 결합을 가능하게 하는 필수 기능 중 적어도 일부를 제공하는 회로를 포함할 수 있다. 그러나, 인터페이스들(150, 250, 350 및/또는 550)은 (예를 들어, 프로토콜 스택 또는 다른 특징들을 구현하기 위해) 프로세서 요소들에 의해 실행되는 명령어들의 시퀀스들로 적어도 부분적으로 구현될 수도 있다. 네트워크(400)의 하나 이상의 부분이 전기 및/또는 광학 전도성 케이블링을 이용하는 경우, 인터페이스는 RS-232C, RS-422, USB, 이더넷(IEEE-802.3) 또는 IEEE-1394를 포함하는(이들로 한정되지 않음), 다양한 산업 표준들 중 임의의 것에 따르는 시그널링 및/또는 프로토콜들을 이용할 수 있다. 대안적으로 또는 부가적으로, 네트워크(400)의 하나 이상의 부분이 무선 신호 송신의 사용을 수반하는 경우, 이들 인터페이스 중 대응하는 것들은 IEEE 802.11a, 802.11b, 802.11g, 802.16, 802.20(일반적으로 "모바일 광대역 무선 액세스"라고 함); Bluetooth; ZigBee; 또는 GSM/GPRS(GSM with General Packet Radio Service), CDMA/1xRTT, EDGE(Enhanced Data Rates for Global Evolution), EV-DO(Evolution Data Only/Optimized), EV-DV(Evolution For Data and Voice), HSDPA(High Speed Downlink Packet Access), HSUPA(High Speed Uplink Packet Access), 4G LTE 등과 같은 셀룰러 무선 전화 서비스를 포함하는(이들로 한정되지 않음) 다양한 산업 표준들 중 임의의 것에 따르는 시그널링 및/또는 프로토콜들을 이용할 수 있다. 인터페이스는 단일 블록으로서 도시되어 있지만, 그것은 상이한 시그널링 기술들에 기초할 수 있는 다수의 인터페이스를 포함할 수도 있다는 점에 주목해야 한다. 이는 특히 이들 인터페이스 중 하나 이상이 컴포넌트들을 각각 상이한 통신 기술들을 이용하는 둘 이상의 네트워크에 결합하는 경우에 해당할 수 있다.
도 7을 더 상세하게 살펴보면, 도 2의 예(1001)의 부분이 더 상세하게 도시되어 있다. 도시된 바와 같이, 실험 오케스트레이터(1030)는 신뢰할 수 있는 컴퓨팅 노드(200-3)에 대응할 수 있고, 이는 적어도 그의 부분이 하드웨어로 구현될 수 있는, 제어 루틴(232) 및/또는 다른 로직을 포함할 수 있고, 이는 증명 엔진(2321), 보안 채널 인터페이스(2322), 실험 인증자(2323), 및 컴퓨팅 노드 인증자(2324)를 포함할 수 있다. 분산 컴퓨팅 풀(1010)로부터의 컴퓨팅 노드가 도시되어 있다. 예를 들어, 신뢰할 수 있는 컴퓨팅 노드(200-1)가 도시되어 있는데, 이는 적어도 그의 부분이 하드웨어로 구현될 수 있는, 제어 루틴(232) 및/또는 다른 로직을 포함할 수 있고, 이는 증명 엔진(2321), 보안 채널 인터페이스(2322), 및 실험 프로세서(2325)를 포함할 수 있다. 개인 데이터 소스들(1020)로부터의 데이터 제공자 노드가 도시되어 있다. 예를 들어, 데이터 제공자 노드(100-1)가 도시되어 있는데, 이는 적어도 그의 부분이 하드웨어로 구현될 수 있는, 제어 루틴(122) 및/또는 다른 로직을 포함할 수 있고, 이는 게이트웨이 컴포넌트(1221), 실험 검사기(1222), 및 암호화 엔진(1223)을 포함할 수 있다. 실험 포털(500)도 도시되어 있는데, 이는 적어도 그의 부분이 하드웨어로 구현될 수 있는, 제어 루틴(522) 및/또는 다른 로직을 포함할 수 있고, 이는 스케줄러(5221)를 포함할 수 있다. 또한, 노드들(200-1 및 200-3)의 보안 채널 인터페이스들(2322) 사이에 설정된 보안 채널(710-1)이 도시되어 있고 노드들(200-1 및 200-3)의 보안 채널 인터페이스들 각각과 노드(100-1)의 게이트웨이(1221) 사이에 보안 채널들(710-2 및 710-3)이 도시되어 있다.
도 8을 더 상세하게 살펴보면, 컴퓨팅 리소스들의 분산 풀을 사용하여 상이한 엔터티들에 의해 소유된 다수의 데이터 세트들을 안전하게 처리하기 위한 기법(1100)이 도시되어 있다. 이 기법은 동작들 또는 블록들 8.X를 포함하고, 여기서 X는 양의 정수이다. 블록 8.1에서 시작하여, 실험 포털은 실험 디스크립션을 수신할 수 있다. 예를 들어, 실험 트랜시버(5221)는 실험 디스크립션(524)의 표시를 포함하는 정보 요소(들)를 수신할 수 있다. 또한, 블록 8.1에서, 실험 트랜시버(5221)는 컴퓨팅 노드들(예를 들어, 신뢰할 수 있는 컴퓨팅 노드들(200-1 내지 200-N) 또는 신뢰할 수 있는 컴퓨팅 및 데이터 제공자 노드들(300-1 내지 300-N)) 중 하나를 실험 오케스트레이터(1030)로서 역할을 하도록 선택한다. 예를 들어, 실험 트랜시버(5221)는 신뢰할 수 있는 컴퓨팅 노드(200-3)를 실험 오케스트레이터(1030)로서 역할을 하도록 선택할 수 있다. 또한, 블록 8.1에서, 실험 트랜시버(5221)는 실험 디스크립션의 표시를 포함하는 정보 요소를 실험 오케스트레이터(1030)에 전송할 수 있다.
블록 8.2에서, 실험 오케스트레이터(1030)는 실험 오케스트레이터로서 역할하기 위한 그의 신뢰성 및 능력을 개인 데이터 소스들(1020)의 데이터 제공자 노드들에 증명할 수 있다. 예를 들어, 증명 엔진(2321)은 노드들(100-1, 100-2, 및 300-2)에 증명할 수 있다. 블록 8.3으로 계속하여, 실험 오케스트레이터는 개인 데이터 제공자 풀(1020) 내의 노드들과 신뢰할 수 있는 통신 채널(예를 들어, 보안 아웃-오브-바운드 채널(secure out-of-bounds channel), 강화된 통신 채널, 또는 다른 유사한 것)을 설정한다. 예를 들어, 보안 채널 인터페이스(2322)는 데이터 제공자 노드들(100-1, 100-2, 및 300-2)의 게이트웨이들(1221) 각각과 보안 채널을 설정할 수 있다.
블록 8.3으로 계속하여, 실험 오케스트레이터는 설정된 보안 채널 상에서 개인 데이터 소스(1020)의 노드들에 실험 디스크립션(예를 들어, 워크플로 DAG, 또는 다른 유사한 것)의 표시를 포함하는 정보 요소를 전송할 수 있다. 예를 들어, 실험 인증자(2323)는 보안 채널을 통해, 더 상세하게는, 보안 채널 인터페이스(2322) 및 게이트웨이(1221)를 통해 데이터 제공자 노드들에 실험 디스크립션(524)을 전달할 수 있다. 또한, 블록 8.3에서, 개인 데이터 소스들(1020)의 노드들(예를 들어, 노드들(100-1, 100-2, 및 300-2))은 실험 디스크립션(524)이 승인된 워크플로만을 기술하는 것을 검증할 수 있다. 예를 들어, 노드들은 실험 디스크립션이 승인된 애플리케이션들, 프로세스들, 동작들, 변환들, 또는 다른 유사한 것을 참조하는 것을 검증할 수 있다.
블록 8.4로 계속하여, 실험 포털(500)은 실험 디스크립션(524)에 기초하여 분산 컴퓨팅을 스케줄링할 수 있다. 예를 들어, 스케줄러(5222)는 실험 디스크립션(524)의 개개의 부분들을 실행하도록 풀(1010) 내의 노드들 중 노드들을 스케줄링할 수 있다. 블록 8.4에서, 실험 프로세서(2325)는 실험 오케스트레이터(1030)의 주소의 표시, 필요한 개인 데이터의 표시, 및 개인 데이터에 대해 수행될 동작들의 표시를 포함하는 정보 요소를 수신할 수 있다(예를 들어, 스케줄러(5222)로부터). 일부 예들에서, 스케줄링은 데이터에 대한 근접성, 리소스 가용성, 또는 다른 유사한 것에 적어도 부분적으로 기초할 수 있다.
블록 8.5로 계속하여, 실험 오케스트레이터(1030)는 노드들을 분산 컴퓨팅 풀(1010)에 수용할 수 있고 및/또는 풀(1010) 내의 노드들을 인증할 수 있다. 예를 들어, 컴퓨팅 노드 인증자(2324)는 풀(1010) 내의 노드 또는 풀(1010)로의 수용을 요청하는 노드들로부터 정보 요소를 수신할 수 있고, 그 정보 요소는 노드의 신뢰성의 표시를 포함한다. 예를 들어, 노드(200-1)의 증명 엔진(2321)은 노드(200-3)(예를 들어, 실험 오케스트레이터)의 컴퓨팅 노드 인증자(2324)와 통신하여 그의 애플리케이션들, 론치 파라미터들, 신뢰의 루트, 또는 다른 유사한 것을 증명할 수 있다. 노드(200-3)의 보안 채널 인터페이스(2322)는 노드(200-1)의 소스 채널 인터페이스(2322)와 게이트웨이(1221) 사이에 보안 채널을 설정하는 것을 용이하게 할 수 있다. 더 상세하게는, 실험 오케스트레이터(1030)는 풀(1010) 내의 노드들과 소스 노드들(1020) 사이에 보안 채널들을 설정하는 것을 용이하게 할 수 있다.
블록들 8.6, 8.7 및 8.8로 계속하여, 풀(1010) 내의 노드는 소스들(1020) 내의 노드들 중 하나로부터 암호화된 개인 데이터를 수신할 수 있고 암호화된 개인 데이터를 해독하기 위해 암호화 키들을 수신할 수 있다. 예를 들어, 블록 8.6에서, 노드(200-1)의 실험 프로세서(2325)는 노드(300-2)로부터 암호화된 개인 데이터(128)를 수신할 수 있다. 일부 예들에서, 암호화된 개인 데이터(128)는 보안 채널을 통해(예를 들어, 보안 채널 인터페이스(2322) 및 게이트웨이(1221), 또는 다른 유사한 것을 통해) 수신된다. 블록 8.7에서, 노드(200-2)의 실험 프로세서(2325)는 노드(100-2)로부터 암호화된 개인 데이터(128)를 수신할 수 있다. 일부 예들에서, 암호화된 개인 데이터(128)는 보안 채널을 통해(예를 들어, 보안 채널 인터페이스(2322) 및 게이트웨이(1221), 또는 다른 유사한 것을 통해) 수신된다. 블록 8.8에서, 노드(300-1)의 실험 프로세서(2325)는 노드(100-1)로부터 암호화된 개인 데이터(128)를 수신할 수 있다. 일부 예들에서, 암호화된 개인 데이터(128)는 보안 채널을 통해(예를 들어, 보안 채널 인터페이스(2322) 및 게이트웨이(1221), 또는 다른 유사한 것을 통해) 수신된다.
일부 예들에 있어서, 개인 데이터 암호화 키들(126)은 실험 오케스트레이터(1030)에 의해 노드들에 제공된다. 예를 들어, 블록들 8.6, 8.7 및 8.8에서, 실험 오케스트레이터는 보안 채널을 통해(예를 들어, 보안 채널 인터페이스(2322) 및 게이트웨이(1221), 또는 다른 유사한 것을 통해) 풀(1010) 내의 노드들 및 소스들(1020) 내의 노드들에 적절한 암호화 키들을 제공할 수 있다. 일부 예들에서, 개인 데이터 암호화 키들(126)은 데이터 소스들에 의해 제공된다. 예를 들어, 데이터 소스는 개인 데이터를 요청하는 노드에 보안 채널을 통해 암호화 키들을 제공할 수 있다.
블록들 8.9, 8.10, 및 8.11로 계속하여, 풀 내의 노드들은 수신된 개인 데이터를 처리할 수 있다. 예를 들어, 블록들 8.9, 8.10 및 8.11에서, 노드들 각각의 실험 프로세서는 수신된 개인 데이터를 해독할 수 있고, 블록 8.4에서 스케줄러로부터 수신된 실험 디스크립션의 부분에 표시된 다양한 프로세스들(예를 들어, 맵, 감소, 분석, 또는 다른 유사한 것)을 적용할 수 있다. 또한, 블록들 8.9, 8.10 및 8.11에서, 노드들 각각의 실험 프로세서는 결과들(234)을 생성할 수 있다.
풀(1010) 내의 노드들은 수신된 개인 데이터의 처리를 격리시킬 수 있다는 점에 주목하는 것이 중요하다. 더 상세하게는, 각각의 노드는 해당 노드 상에서 실행중인 모든 다른 인스턴스들로부터 및/또는 풀(1010)에서 실행중인 모든 다른 인스턴스들로부터 개인 데이터를 처리하는 것과 관련된 실행을 격리시킬 수 있다.
블록들 8.9, 8.10 및 8.11은 블록들 8.9, 8.10 및 8.11에서의 처리의 일부로서 중간 결과들 및/또는 개인 데이터를 필요로 할 수 있다는 점에 주목한다. 달리 말하면, 결과들(234) 중 일부는 실험 포털에 전달되는 최종 결과들이 아니라 중간 결과들일 수 있다. 따라서, 블록들 8.9, 8.10 및 8.11에서, 풀 내의 노드들은 시스템 내의 다른 노드로의 통신을 위해 또는 동일한 노드 상의 (예를 들어, 다른 애플리케이션, 또는 다른 유사한 것에 의한) 추가 처리를 위해 결과들(234)을 암호화할 수 있다.
블록 8.12로 계속하여, 실험 포털(500)은 풀 내의 노드들로부터 결과들을 수신할 수 있다. 일부 예들에서, 풀 내의 노드는 결과들(234)에 대해 비식별화 기법들을 적용할 수 있다(예를 들어, 블록들 8.9, 8.10, 8.11, 또는 다른 유사한 것에서). 예를 들어, 결과들(234)은 결과들로부터 개인 데이터(124)를 식별할 가능성을 감소시키기 위해 그들에 부가된 노이즈를 가질 수 있다.
블록들 8.13, 8.14 및 8.15로 계속하여, 풀(1010) 내의 노드들은 결과들(234), 암호화된 개인 데이터(128), 및 암호화 키들(126)을 파괴할 수 있다(예를 들어, 삭제, 덮어쓰기, 또는 다른 유사한 것).
도 9 내지 도 10은 다중 당사자 데이터의 분산 처리의 상호 승인을 제공하기 위한 논리 흐름들의 실시예들을 도시한다. 예를 들어, 논리 흐름들은 분산 풀(1010)에 의해 개인 데이터 소스들(1020)로부터의 데이터를 처리하는 것에 대한 상호 승인을 제공하도록 구현될 수 있다. 논리 흐름들은 도 1 내지 도 8을 참조하여 설명된다는 것을 알아야 한다. 그러나, 예들은 이와 관련해서 제한되지 않고, 특히, 도 1 내지 도 8에 도시된 것들과 유사한 또는 상이한 컴포넌트를 포함하는 시스템들 및/또는 디바이스들이 논리 흐름들을 구현할 수 있다.
도 9를 더 구체적으로 살펴보면, 논리 흐름(1200)은 블록 1210에서 시작될 수 있다. "개인 데이터 제공자들의 풀로부터의 개인 데이터 제공자와 보안 채널을 설정한다"라는 블록 1210에서, 제어 루틴(232)은 노드(예를 들어, 풀(1010)의 노드) 및 풀(1020) 내의 데이터 제공자 사이에 보안 채널(예를 들어, 보안 채널(710-2), 또는 다른 유사한 것)을 설정할 수 있다. 더 구체적으로, 노드의 보안 채널 인터페이스(2322)는 게이트웨이(1221)와 보안 채널(710-2)을 설정할 수 있다.
"보안 채널을 통해, 개인 데이터 제공자로부터 암호화된 데이터를 수신한다"라는 블록 1220으로 계속하여, 노드는 보안 채널을 통해, 개인 데이터 풀 내의 노드로부터 암호화된 개인 데이터(128)를 수신할 수 있다. 예를 들어, 풀(1010) 내의 노드의 실험 프로세서(2325)는 보안 채널(710-2)을 통해 개인 데이터(128)를 수신할 수 있다.
"암호화된 데이터에 프로세스를 적용한다"라는 블록 1230으로 계속하여, 노드는 암호화된 데이터에 프로세스를 적용할 수 있다. 더 구체적으로, 풀(1010) 내의 노드의 실험 프로세서(2325)는 암호화된 개인 데이터에 (예를 들어, 실험 디스크립션, DAG, 또는 다른 유사한 것에 기초한) 프로세스를 적용할 수 있다.
도 10을 더 구체적으로 살펴보면, 논리 흐름(1300)이 도시되어 있다. 논리 흐름(1300)은 블록 1310에서 시작될 수 있다. "개인 데이터 제공자들의 풀로부터의 개인 데이터 제공자와 보안 채널을 설정한다"라는 블록 1310에서, 실험 오케스트레이터(1030)의 제어 루틴(232)은 실험 오케스트레이터(1030)와 풀(1020) 내의 데이터 제공자들 사이에 보안 채널(예를 들어, 보안 채널(710-3), 또는 다른 유사한 것)을 설정할 수 있다. 더 구체적으로, 실험 오케스트레이터(1030)의 보안 채널 인터페이스(2322)는 게이트웨이(1221)와 보안 채널(710-3)을 설정할 수 있다. 마찬가지로, 보안 채널 인터페이스(2322)는 풀(1020) 내의 대응하는 데이터 제공자들의 다른 게이트웨이들과 다른 보안 채널들을 설정할 수 있다.
"보안 채널을 통해, 실험 디스크립션의 표시를 포함하는 정보 요소를 전송한다 - 실험 디스크립션은 개인 데이터 제공자로부터 이용 가능한 개인 데이터에 대한 동작의 표시를 포함한다"라는 블록 1320으로 계속하여, 실험 오케스트레이터(1030)의 제어 루틴(232)은, 보안 채널(710-3), 또는 다른 유사한 것을 통해, 실험 디스크립션(524)의 표시를 포함하는 정보 요소를 개인 데이터 제공자(예를 들어, 개인 데이터 제공자(100-1), 또는 다른 유사한 것)에 전송할 수 있다.
"보안 채널을 통해, 실험 디스크립션이 승인되었는지에 대한 표시를 포함하는 정보 요소를 수신한다"라는 블록(1330)으로 계속하여, 실험 오케스트레이터(1030)의 제어 루틴(232)은 개인 데이터 제공자(예를 들어, 데이터 제공자(100-1), 또는 다른 유사한 것)로부터, 실험 디스크립션(524)이 개인 데이터 제공자로부터 이용 가능한 개인 데이터(124)에 대해 동작하도록 승인되거나 허가되었는지에 대한 표시를 포함하는 정보 요소를 수신할 수 있다.
도 11은 스토리지 매체(2000)의 일 실시예를 도시한다. 스토리지 매체(2000)는 제조 물품을 포함할 수 있다. 일부 예들에서, 스토리지 매체(2000)는 광학, 자기 또는 반도체 스토리지와 같은 임의의 비일시적 컴퓨터 판독가능 매체 또는 머신 판독가능 매체를 포함할 수 있다. 스토리지 매체(2000)는 다양한 유형의 컴퓨터 실행가능 명령어들(예를 들어, 2002)을 저장할 수 있다. 예를 들어, 스토리지 매체(2000)는 논리 흐름(1100)을 구현하기 위한 다양한 유형의 컴퓨터 실행가능 명령어들을 저장할 수 있다. 일부 예들에서, 스토리지 매체(2000)는 논리 흐름(1200)을 구현하기 위한 다양한 유형의 컴퓨터 실행가능 명령어들을 저장할 수 있다. 일부 예들에서, 스토리지 매체(2000)는 논리 흐름(1300)을 구현하기 위한 다양한 유형의 컴퓨터 실행가능 명령어들을 저장할 수 있다.
컴퓨터 판독가능 또는 머신 판독가능 스토리지 매체의 예들은 휘발성 메모리 또는 비휘발성 메모리, 이동식 또는 비이동식 메모리, 삭제가능 또는 비삭제가능 메모리, 기입가능 또는 재기입가능 메모리 등을 포함하여, 전자 데이터를 저장할 수 있는 임의의 유형 매체를 포함할 수 있다. 컴퓨터 실행가능 명령어들의 예들은 소스 코드, 컴파일된 코드, 해석된 코드, 실행가능 코드, 정적 코드, 동적 코드, 객체 지향 코드, 비주얼 코드, 및 다른 유사한 것과 같은 임의의 적합한 유형의 코드를 포함할 수 있다. 예들은 이와 관련하여 한정되지 않는다.
도 12는 전술한 바와 같이 다양한 실시예들을 구현하기에 적합한 예시적인 처리 아키텍처(3000)의 일 실시예를 도시한다. 더 구체적으로는, 처리 아키텍처(3000)(또는 그의 변형들)는 본 명세서에 설명된 시스템(1000) 및/또는 디바이스들(100, 200, 300, 및/또는 500)의 일부로서 구현될 수 있다.
처리 아키텍처(3000)는 하나 이상의 프로세서, 멀티-코어 프로세서, 코-프로세서, 메모리 유닛, 칩셋, 제어기, 주변 장치, 인터페이스, 오실레이터, 타이밍 디바이스, 비디오 카드, 오디오 카드, 멀티미디어 입력/출력(I/O) 컴포넌트, 파워 서플라이 등을 포함하는(이들로 한정되지 않음), 디지털 처리에서 일반적으로 이용되는 다양한 요소들을 포함할 수 있다. 본원에서 사용된, "시스템" 및 "컴포넌트"라는 용어들은 디지털 처리가 수행되는 컴퓨팅 디바이스의 엔터티를 지칭하려는 것이고, 그 엔터티는 하드웨어, 하드웨어와 소프트웨어의 조합, 소프트웨어, 또는 실행중인 소프트웨어이고, 그 예들은 이 도시된 예시적인 처리 아키텍처에 의해 제공된다. 예를 들어, 컴포넌트는 프로세서 요소 상에서 실행되는 프로세스, 프로세서 요소 자체, 광학 및/또는 자기 스토리지 매체를 이용할 수 있는 스토리지 디바이스(예를 들어, 하드 디스크 드라이브, 어레이 내의 다수의 스토리지 디바이스들 등), 소프트웨어 객체, 실행가능한 명령어들의 시퀀스, 실행의 스레드, 프로그램, 및/또는 전체 컴퓨팅 디바이스(예를 들어, 전체 컴퓨터)일 수 있지만, 이들로 한정되지 않는다. 예로서, 서버에서 실행되는 애플리케이션과 그 서버 양자 모두가 컴포넌트일 수 있다. 하나 이상의 컴포넌트가 프로세스 및/또는 실행의 스레드 내에 존재할 수 있고, 컴포넌트가 하나의 컴퓨팅 디바이스 상에 국한되거나 및/또는 2개 이상의 컴퓨팅 디바이스 사이에 분산될 수 있다. 또한, 컴포넌트들은 동작들을 조정하기 위해 다양한 유형들의 통신 매체에 의해 서로 통신 가능하게 결합될 수 있다. 이 조정은 정보의 단방향 또는 양방향 교환을 포함할 수 있다. 예를 들어, 컴포넌트들은 통신 매체를 통해 전달되는 신호들의 형태로 정보를 통신할 수 있다. 정보는 하나 이상의 신호 라인에 할당된 신호들로서 구현될 수 있다. 각각의 메시지는 직렬로 또는 실질적으로 병렬로 전송되는 신호 또는 복수의 신호일 수 있다.
도시된 바와 같이, 처리 아키텍처(3000)를 구현함에 있어서, 컴퓨팅 디바이스는 적어도 프로세서 요소(910), 스토리지(930), 다른 디바이스들과의 인터페이스(990), 및 결합부(coupling)(915)를 통합한다. 처리 아키텍처(3000)를 구현하는 컴퓨팅 디바이스의, 그의 의도된 용도 및/또는 사용 조건들을 포함하는 다양한 양태들에 따라, 이러한 컴퓨팅 디바이스는 카운터 요소(915)(이에 한정되지 않음)와 같은 부가의 컴포넌트들을 추가로 포함할 수 있다.
결합부(915)는 적어도 프로세서 요소(910)를 스토리지(930)에 통신 가능하게 결합하는 하나 이상의 버스, 포인트-대-포인트 인터커넥트, 트랜시버, 버퍼, 크로스포인트 스위치(crosspoint switches), 및/또는 다른 도체들 및/또는 로직을 포함할 수 있다. 결합부(915)는 프로세서 요소(910)를 인터페이스(990) 및 디스플레이 인터페이스(955) 중 하나 이상에 (이들 및/또는 다른 컴포넌트들 중 어느 것이 또한 존재하는지에 따라) 더 결합할 수 있다. 프로세서 요소(910)가 결합부들(915)에 의해 그렇게 결합됨으로써, 프로세서 요소(910)는 처리 아키텍처(3000)에 대해, 위에 상세히 설명된 태스크들 중 다양한 것들을 수행할 수 있다. 결합부(915)는 신호들이 광학적으로 및/또는 전기적으로 전달되게 하는 다양한 기술들 또는 기술들의 조합들 중 임의의 것을 이용하여 구현될 수 있다. 또한, 결합부(915)의 적어도 부분들은 AGP(Accelerated Graphics Port), CardBus, E-ISA(Extended Industry Standard Architecture), MCA(Micro Channel Architecture), NuBus, PCI-X(Peripheral Component Interconnect (Extended)), PCI-E(PCI Express), PCMCIA(Personal Computer Memory Card International Association) 버스, HyperTransport™, QuickPath, 및 다른 유사한 것을 포함하지만 이에 한정되지 않는 매우 다양한 산업 표준들 중 임의의 것에 따르는 타이밍들 및/또는 프로토콜들을 이용할 수 있다.
전술한 바와 같이, 프로세서 요소(910)는 매우 다양한 기술들 중 임의의 것을 이용하고, 여러 방식들 중 임의의 것으로 물리적으로 조합되는 하나 이상의 코어에 의해 구현되는, 매우 다양한 상업적으로 이용 가능한 프로세서들 중 임의의 것을 포함할 수 있다.
전술한 바와 같이, 스토리지(930)는 매우 다양한 기술들 또는 기술들의 조합들 중 임의의 것에 기초한 하나 이상의 별개의 스토리지 디바이스를 포함할 수 있다. 더 구체적으로, 도시된 바와 같이, 스토리지(930)는 휘발성 스토리지(931)(예를 들어, RAM 기술의 하나 이상의 형태에 기초한 솔리드 스테이트 스토리지), 비휘발성 스토리지(932)(예를 들어, 그들의 콘텐츠를 보존하기 위해 전력의 지속적인 제공을 요구하지 않는 솔리드 스테이트, 강자성, 또는 다른 스토리지), 및 이동식 매체 스토리지(933)(예를 들어, 컴퓨팅 디바이스들 간에 정보를 전달할 수 있게 하는 이동식 디스크 또는 솔리드 스테이트 메모리 카드 스토리지) 중 하나 이상을 포함할 수 있다. 이와 같이 스토리지(930)가 아마도 다수의 별개 유형들의 스토리지를 포함하는 것으로 도시되는 것은, 하나의 유형은 비교적 신속한 판독 및 기입 능력들을 제공하여 프로세서 요소(910)에 의한 데이터의 보다 신속한 조작을 가능하게 하는 반면(그러나 아마도 지속적으로 전력을 요구하는 "휘발성" 기술을 사용함) 또 다른 유형은 비교적 높은 밀도의 비휘발성 스토리지를 제공하는(그러나 아마도 비교적 느린 판독 및 기입 능력들을 제공함), 컴퓨팅 디바이스들에서의 하나보다 많은 유형의 스토리지 디바이스의 흔한 사용을 인식한 것이다.
상이한 기술들을 이용하는 상이한 스토리지 디바이스들의 종종 상이한 특성들을 감안하면, 이러한 상이한 스토리지 디바이스들이 상이한 인터페이스들을 통해 그들의 상이한 스토리지 디바이스들에 결합되는 상이한 스토리지 제어기들을 통해 컴퓨팅 디바이스의 다른 부분들에 결합되는 것도 흔한 일이다. 예로서, 휘발성 스토리지(931)가 존재하며 RAM 기술에 기초하는 경우, 휘발성 스토리지(931)는 아마도 행과 열 어드레싱(row and column addressing)을 이용하는 휘발성 스토리지(931)에 적절한 인터페이스를 제공하는 스토리지 제어기(935a)를 통해 결합부(915)에 통신 가능하게 결합될 수 있고, 여기서, 스토리지 제어기(935a)는 휘발성 스토리지(931) 내에 저장되는 정보를 보존하는 데 도움이 되는 행 리프레싱(row refreshing) 및/또는 다른 유지보수 태스크들을 수행할 수 있다. 또 다른 예로서, 비휘발성 스토리지(932)가 존재하며 하나 이상의 강자성 및/또는 솔리드 스테이트 디스크 드라이브들을 포함하는 경우, 비휘발성 스토리지(932)는, 아마도 정보의 블록들 및/또는 실린더들(cylinders)과 섹터들(sectors)의 어드레싱을 이용하는 비휘발성 스토리지(932)에 적절한 인터페이스를 제공하는 스토리지 제어기(935b)를 통해 결합부(915)에 통신 가능하게 결합될 수 있다. 또 다른 예로서, 이동식 매체 스토리지(933)가 존재하며 하나 이상의 머신 판독가능 스토리지 매체(939)를 이용하는 하나 이상의 광학적 및/또는 솔리드 스테이트 디스크 드라이브를 포함하는 경우, 이동식 매체 스토리지(933)는 아마도 정보 블록들의 어드레싱을 이용하는 이동식 매체 스토리지(933)에 적절한 인터페이스를 제공하는 스토리지 제어기(935c)를 통해 결합부(915)에 통신 가능하게 결합될 수 있고, 여기서, 스토리지 제어기(935c)는 머신 판독가능 스토리지 매체(939)의 수명을 연장하는 데 특정한 방식으로 판독, 소거, 및 기입 동작들을 조정할 수 있다.
휘발성 스토리지(931) 또는 비휘발성 스토리지(932) 중 하나 또는 다른 하나는, 각각이 기초하는 기술들에 따라, 프로세서 요소(910)에 의해 실행 가능한 명령어들의 시퀀스를 포함하는 루틴이 저장될 수 있는 머신 판독가능 스토리지 매체의 형태의 제조 물품을 포함할 수 있다. 예로서, 비휘발성 스토리지(932)가 강자성 기반 디스크 드라이브(예를 들어, 소위 "하드 드라이브")를 포함하는 경우, 각각의 이러한 디스크 드라이브는 전형적으로 자기 반응 입자(magnetically responsive particle)들의 코팅이 퇴적되고 플로피 디스켓과 같은 스토리지 매체와 유사한 방식으로 명령어들의 시퀀스와 같은 정보를 저장하기 위해 다양한 패턴들로 자기 배향(magnetically oriented)되어 있는 하나 이상의 회전 플래터(rotating platter)를 이용한다. 또 다른 예로서, 비휘발성 스토리지(932)는, 컴팩트 플래시 카드와 유사한 방식으로, 명령어들의 시퀀스들과 같은, 정보를 저장하기 위해, 솔리드 스테이트 스토리지 디바이스들의 뱅크들로 구성될 수 있다. 다시, 실행가능한 루틴들 및/또는 데이터를 저장하기 위해 상이한 시간들에 컴퓨팅 디바이스에서 상이한 유형들의 스토리지 디바이스들을 이용하는 것은 흔한 일이다. 따라서, 프로세서 요소(910)에 의해 실행될 명령어들의 시퀀스를 포함하는 루틴이 초기에 머신 판독가능 스토리지 매체(939)에 저장될 수 있고, 해당 루틴이 실행됨에 따라 프로세서 요소(910)에 의해 더 신속한 액세스를 가능하게 하기 위해 머신 판독가능 스토리지 매체(939) 및/또는 휘발성 스토리지(931)의 계속적인 존재를 요구하지 않는 장기 저장을 위해 해당 루틴을 비휘발성 스토리지(932)에 복사하는 데 이동식 매체 스토리지(933)가 후속하여 이용될 수 있다.
전술한 바와 같이, 인터페이스(990)는 컴퓨팅 디바이스를 하나 이상의 다른 디바이스에 통신 가능하게 결합하는 데 이용될 수 있는 다양한 통신 기술들 중 임의의 것에 대응하는 다양한 시그널링 기술들 중 임의의 것을 이용할 수 있다. 다시, 프로세서 요소(910)가 입력/출력 디바이스들(예를 들어, 도시된 예시적인 키보드(940) 또는 프린터(945)) 및/또는 다른 컴퓨팅 디바이스들과, 아마도 네트워크(예를 들어, 네트워크(999)) 또는 네트워크들의 인터커넥트된 세트를 통해, 상호작용할 수 있게 하기 위해 다양한 형태들의 유선 또는 무선 시그널링 중 하나 또는 양자 모두가 이용될 수 있다. 종종 임의의 하나의 컴퓨팅 디바이스에 의해 지원되어야 하는 다수의 유형의 시그널링 및/또는 프로토콜들의 종종 상당히 상이한 특성을 인식하여, 인터페이스(990)는 다수의 상이한 인터페이스 제어기들(995a, 995b 및 995c)을 포함하는 것으로서 도시되어 있다. 인터페이스 제어기(995a)는, 도시된 키보드(940)과 같은, 사용자 입력 디바이스들로부터 직렬 송신되는 메시지를 수신하기 위해 다양한 유형들의 유선 디지털 직렬 인터페이스 또는 라디오 주파수 무선 인터페이스 중 임의의 것을 이용할 수 있다. 인터페이스 제어기(995b)는, 도시된 네트워크(999)(아마도 네트워크로서, 하나 이상의 링크, 더 작은 네트워크들, 또는 아마도 인터넷을 포함하는 네트워크)를 통해 다른 컴퓨팅 디바이스에 액세스하기 위해 다양한 케이블링 기반의 또는 무선의 시그널링, 타이밍들 및/또는 프로토콜들 중 임의의 것을 이용할 수 있다. 인터페이스(995c)는 데이터를 도시된 프린터(945)에 전달하기 위해 직렬 또는 병렬 신호 송신 중 어느 하나의 사용을 가능하게 하는 다양한 전기 전도성 케이블링 중 임의의 것을 이용할 수 있다. 인터페이스(990)의 하나 이상의 인터페이스 제어기를 통해 통신 가능하게 결합될 수 있는 디바이스들의 다른 예들은 마이크로폰들, 원격 컨트롤들, 스타일러스 펜들, 카드 판독기들, 지문 판독기들, 가상 현실 상호작용 장갑들, 그래픽 입력 태블릿들, 조이스틱들, 다른 키보드들, 망막 스캐너들, 터치 스크린들의 터치 입력 컴포넌트, 트랙볼들, 다양한 센서들, 레이저 프린터들, 잉크젯 프린터들, 기계 로봇들, 밀링 머신들 등을 포함하지만, 이들에 한정되는 것은 아니다.
컴퓨팅 디바이스가 디스플레이(예를 들어, 도시된 예시적인 디스플레이(950))에 통신 가능하게 결합되는(또는 아마도 실제로는 이를 포함하는) 경우, 처리 아키텍처(3000)를 구현하는 이러한 컴퓨팅 디바이스는 디스플레이 인터페이스(955)를 또한 포함할 수 있다. 디스플레이에 통신 가능하게 결합하는 데 있어서 더 일반화된 유형들의 인터페이스가 이용될 수 있지만, 디스플레이 상에 다양한 형태들의 콘텐츠를 가시적으로 디스플레이하는 데 있어서 종종 요구되는 다소 전문화된 부가적 처리뿐만 아니라, 사용되는 케이블링 기반의 인터페이스들의 다소 전문화된 속성은, 종종 별개의 디스플레이 인터페이스의 제공을 바람직하게 한다. 디스플레이(950)의 통신 결합에서 디스플레이 인터페이스(955)에 의해 이용될 수 있는 유선 및/또는 무선 시그널링 기술들은 다양한 아날로그 비디오 인터페이스들, DVI(Digital Video Interface), DisplayPort 등 중 임의의 것(이들에 한정되지 않음)을 포함하는 다양한 산업 표준들 중 임의의 것에 따르는 시그널링 및/또는 프로토콜들을 사용할 수 있다.
더 일반적으로는, 본 명세서에 설명된 디바이스들의 다양한 요소들은 다양한 하드웨어 요소들, 소프트웨어 요소들 또는 이 둘의 조합을 포함할 수 있다. 하드웨어 요소들의 예들은, 디바이스들, 로직 디바이스들, 컴포넌트들, 프로세서들, 마이크로프로세서들, 회로들, 프로세서 요소들, 회로 요소들(예를 들어, 트랜지스터들, 저항기들, 커패시터들, 인덕터들 및 기타 등등), 집적 회로들, ASIC(specific integrated circuit)들, PLD(programmable logic device)들, DSP(digital signal processor)들, FPGA(field programmable gate array), 메모리 유닛들, 로직 게이트들, 레지스터들, 반도체 디바이스, 칩들, 마이크로칩들, 칩셋들 및 기타 등등을 포함할 수 있다. 소프트웨어 요소들의 예들은 소프트웨어 컴포넌트들, 프로그램들, 애플리케이션들, 컴퓨터 프로그램들, 애플리케이션 프로그램들, 시스템 프로그램들, 소프트웨어 개발 프로그램들, 머신 프로그램들, 운영 체제 소프트웨어들, 미들웨어, 펌웨어, 소프트웨어 모듈들, 루틴들, 서브루틴들, 함수들, 메소드들(methods), 프로시저들(procedures), 소프트웨어 인터페이스들, 애플리케이션 프로그램 인터페이스(API), 명령어 세트들, 컴퓨팅 코드, 컴퓨터 코드, 코드 세그먼트들, 컴퓨터 코드 세그먼트들, 워드, 값들, 심볼들 또는 이들의 임의의 조합을 포함할 수 있다. 그러나, 실시예가 하드웨어 요소들을 사용하여 구현되는지 및/또는 소프트웨어 요소들을 사용하여 구현되는지를 결정하는 것은, 주어진 구현에 대해 원하는 대로, 원하는 계산율, 전력 레벨들, 내열성들, 처리 사이클 예산(processing cycle budget), 입력 데이터 레이트들, 출력 데이터 레이트들, 메모리 리소스들, 데이터 버스 속도들, 및 다른 설계 또는 성능 제약들과 같은, 임의의 수의 인자들에 따라 달라질 수 있다.
일부 실시예들은 "일 실시예" 또는 "실시예"라는 표현과 함께 이들의 파생어들을 이용하여 설명될 수 있다. 이들 용어는, 해당 실시예와 관련하여 설명되는 특정한 특징, 구조, 또는 특성이 적어도 일 실시예에 포함된다는 것을 의미한다. 명세서의 다양한 곳에서 "일 실시예에서"라는 문구의 등장은 반드시 모두가 동일한 실시예를 지칭하는 것은 아니다. 또한, 일부 실시예들은 "결합된" 및 "연결된"이라는 표현들과 함께 이들의 파생어를 이용하여 설명될 수 있다. 이들 용어는 반드시 서로에 대해 동의어로서 의도된 것은 아니다. 예를 들어, 일부 실시예들은 2개 이상의 요소들이 서로 물리적 또는 전기적으로 직접 접촉하고 있다는 것을 나타내기 위해, "연결된" 및/또는 "결합된"이라는 용어들을 사용하여 설명될 수 있다. 그러나, 용어 "결합된"은 또한 2개 이상의 요소들이 서로 직접 접촉하고 있지 않지만 여전히 서로 협력하거나 상호작용한다는 것을 의미할 수 있다.
본 개시의 요약서는 독자로 하여금 기술적 개시의 본질을 신속하게 확인하는 것을 허용하도록 제공되는 것임이 강조된다. 이는 청구항들의 범위 또는 의미를 해석하거나 제한하도록 사용되지 않을 것이라는 이해를 가지고 제시된다. 또한, 이상의 상세한 설명에서는, 개시를 간소화하기 위해 다양한 특징들이 단일의 실시예에 함께 그룹화되어 있다는 것을 알 수 있다. 이러한 개시 방법은 청구되는 실시예들이 각각의 청구항에서 명시적으로 나열되는 것보다 더 많은 특징들을 요구한다는 의도를 반영하는 것으로서 해석되지 않아야 한다. 오히려, 이하의 청구항들이 반영하는 바와 같이, 본 발명의 주제는 단일의 개시되는 실시예의 모든 특징들보다 더 적은 것에 있을 수 있다. 따라서, 이하의 청구항들은 이로써 상세한 설명에 통합되고, 각각의 청구항은 개별 실시예로서 자립한다. 첨부된 청구항들에서, 용어 "포함하는(including)" 및 "여기에서(in which)"는 제각기 용어 "포함하는(comprising)" 및 "여기서(wherein)"의 평문 등가물들로서 사용된다. 또한, 용어들 "제1", "제2", "제3", 및 기타 등등은 단순히 라벨들로서 이용된 것이고, 자신들의 대상들에 대한 수치적 요건을 부과하도록 의도되지는 않는다.
위에 설명된 것들은 개시되는 아키텍처의 예들을 포함한다. 물론, 컴포넌트들 및/또는 방법론들의 모든 인식 가능한 조합을 설명하는 것이 가능하지는 않지만, 본 기술분야의 통상의 기술자라면 많은 추가적 조합들 및 치환들이 가능하다는 점을 인식할 수 있을 것이다. 따라서, 신규한 아키텍처가, 첨부된 청구항들의 사상 및 범위 내에 있는 모든 이러한 변경들, 수정들, 및 변형들을 포괄하는 것으로 의도된다. 본 개시는 이제 다양한 예시 구현들을 제공하는 것으로 화제를 전환한다.
예 1. 로직을 포함하는 장치로서, 상기 로직의 부분은 하드웨어로 구현되고, 상기 로직은: 개인 데이터 소스들의 풀(pool) 내의 복수의 개인 데이터 제공자 중의 개인 데이터 제공자와 보안 채널을 설정하기 위한 보안 채널 인터페이스; 및 실험 프로세서를 포함하고, 상기 실험 프로세서는: 상기 보안 채널을 통해, 상기 개인 데이터 제공자로부터 암호화된 개인 데이터를 수신하고; 상기 암호화된 개인 데이터에 하나 이상의 프로세스를 적용하는, 장치.
예 2. 예 1의 장치로서, 상기 실험 프로세서는 암호화 키들을 수신하고 상기 암호화 키들에 기초하여 상기 암호화된 개인 데이터를 해독한다.
예 3. 예 2의 장치로서, 상기 보안 채널은 제1 보안 채널이고, 상기 보안 채널 인터페이스는 실험 오케스트레이터와 제2 보안 채널을 설정하고, 상기 실험 프로세서는 상기 실험 오케스트레이터로부터 상기 암호화 키들을 수신한다.
예 4. 예 1의 장치로서, 상기 장치의 신뢰의 루트의 표시를 포함하는 정보 요소를 실험 오케스트레이터에 전송하는 증명 엔진을 포함한다.
예 5. 예 1의 장치로서, 상기 장치는 분산된 신뢰할 수 있는 컴퓨팅 노드들의 풀 내의 신뢰할 수 있는 컴퓨팅 노드이다.
예 6. 예 2의 장치로서, 상기 실험 프로세서는 실험 오케스트레이터로부터 정보 요소를 수신하고, 상기 정보 요소는 실험 디스크립션의 부분의 표시를 포함한다.
예 7. 예 6의 장치로서, 상기 실험 프로세서는 상기 개인 데이터 제공자로부터 상기 암호화 키들을 수신한다.
예 8. 예 7의 장치로서, 상기 실험 디스크립션은 비순환 방향 그래프(DAG)를 포함한다.
예 9. 예 8의 장치로서, 상기 DAG는 개인 데이터에 대해 수행되는 복수의 맵, 감소, 또는 분석 동작들을 포함하고, 상기 개인 데이터는 상기 개인 데이터 소스들의 풀 내의 상기 복수의 개인 데이터 제공자로부터 이용 가능한 개인 데이터에 대응한다.
예 10. 예 1 내지 예 9 중 어느 하나의 장치로서, 상기 보안 채널 인터페이스 및 상기 실험 프로세서는 신뢰할 수 있는 실행 환경에서 실행한다.
예 11. 로직을 포함하는 장치로서, 상기 로직의 부분은 하드웨어로 구현되고, 상기 로직은: 개인 데이터 소스들의 풀 내의 복수의 개인 데이터 제공자 중의 개인 데이터 제공자와 보안 채널을 설정하기 위한 보안 채널 인터페이스; 및 실험 인증자를 포함하고, 상기 실험 인증자는: 상기 보안 채널을 통해, 상기 개인 데이터 제공자에 제1 정보 요소를 전송하고 - 상기 제1 정보 요소는 상기 개인 데이터 소스로부터 이용 가능한 개인 데이터에 대해 동작하는 실험 디스크립션의 표시를 포함함 -; 상기 보안 채널을 통해, 상기 개인 데이터 제공자로부터 제2 정보 요소를 수신하고, 상기 제2 정보 요소는 상기 실험 디스크립션이 승인되었는지에 대한 표시를 포함하는, 장치.
예 12. 예 11의 장치로서, 상기 로직은 컴퓨팅 노드 인증자를 포함하고, 상기 컴퓨팅 노드 인증자는 신뢰할 수 있는 컴퓨팅 노드를 신뢰할 수 있는 컴퓨팅 노드들의 풀에 수용하기 위해 상기 신뢰할 수 있는 컴퓨팅 노드를 인증한다.
예 13. 예 12의 장치로서, 상기 컴퓨팅 노드 인증자는 상기 신뢰할 수 있는 컴퓨팅 노드로부터 신뢰의 루트를 수신하고 상기 신뢰의 루트에 기초하여 상기 신뢰할 수 있는 컴퓨팅 노드를 인증한다.
예 14. 예 12의 장치로서, 상기 컴퓨팅 노드 인증자는: 상기 보안 채널을 통해, 상기 개인 데이터 제공자에 제3 정보를 전송하고 - 상기 제3 정보 요소는 상기 신뢰할 수 있는 컴퓨팅 노드의 신뢰성의 표시를 포함함 -; 상기 보안 채널을 통해, 상기 개인 데이터 제공자로부터 제4 정보 요소를 수신하고, 상기 제4 정보 요소는 상기 신뢰할 수 있는 컴퓨팅 노드가 상기 개인 데이터를 수신하도록 허가되었는지에 대한 표시를 포함한다.
예 15. 예 12의 장치로서, 상기 실험 인증자는 실험 포털로부터 제3 정보 요소를 수신하고, 상기 제3 정보 요소는 상기 실험 디스크립션의 표시를 포함한다.
예 16. 예 12의 장치로서, 상기 실험 디스크립션은 비순환 방향 그래프이다.
예 17. 장치로서, 신뢰할 수 있는 실행 환경(TEE); 상기 TEE에 의한 실행을 위한 보안 채널 인터페이스 - 상기 보안 채널 인터페이스는 개인 데이터 소스들의 풀 내의 복수의 개인 데이터 제공자 중의 개인 데이터 제공자와 보안 채널을 설정함 -; 및 상기 TEE에 의한 실행을 위한 실험 프로세서를 포함하고, 상기 실험 프로세서는: 상기 보안 채널을 통해, 상기 개인 데이터 제공자로부터 암호화된 개인 데이터를 수신하고; 상기 암호화된 개인 데이터에 하나 이상의 프로세스를 적용하는, 장치.
예 18. 예 17의 장치로서, 상기 실험 프로세서는 암호화 키들을 수신하고 상기 암호화 키들에 기초하여 상기 암호화된 개인 데이터를 해독한다.
예 19. 예 18의 장치로서, 상기 보안 채널은 제1 보안 채널이고, 상기 보안 채널 인터페이스는 실험 오케스트레이터와 제2 보안 채널을 설정하고, 상기 실험 프로세서는 상기 실험 오케스트레이터로부터 상기 암호화 키들을 수신한다.
예 20. 예 17의 장치로서, 상기 장치의 신뢰의 루트의 표시를 포함하는 정보 요소를 실험 오케스트레이터에 전송하는 증명 엔진을 포함한다.
예 21. 예 17의 장치로서, 상기 장치는 분산된 신뢰할 수 있는 컴퓨팅 노드들의 풀 내의 신뢰할 수 있는 컴퓨팅 노드이다.
예 22. 예 18의 장치로서, 상기 실험 프로세서는 실험 오케스트레이터로부터 정보 요소를 수신하고, 상기 정보 요소는 실험 디스크립션의 부분의 표시를 포함한다.
예 23. 예 22의 장치로서, 상기 실험 프로세서는 상기 개인 데이터 제공자로부터 상기 암호화 키들을 수신한다.
예 24. 예 23의 장치로서, 상기 실험 디스크립션은 비순환 방향 그래프(DAG)를 포함한다.
예 25. 예 24의 장치로서, 상기 DAG는 개인 데이터에 대해 수행되는 복수의 맵, 감소, 또는 분석 동작들을 포함하고, 상기 개인 데이터는 상기 개인 데이터 소스들의 풀 내의 상기 복수의 개인 데이터 제공자로부터 이용 가능한 개인 데이터에 대응한다.
예 26. 예 17 내지 예 25 중 어느 하나의 장치로서, 상기 보안 채널 인터페이스 및 상기 실험 프로세서는 신뢰할 수 있는 실행 환경에서 실행한다.
예 27. 장치로서, 신뢰할 수 있는 실행 환경(TEE); 상기 TEE에 의한 실행을 위한 보안 채널 인터페이스 - 상기 보안 채널 인터페이스는 개인 데이터 소스들의 풀 내의 복수의 개인 데이터 제공자 중의 개인 데이터 제공자와 보안 채널을 설정함 -; 및 상기 TEE에 의한 실행을 위한 실험 인증자를 포함하고, 상기 실험 인증자는: 상기 보안 채널을 통해, 상기 개인 데이터 제공자에 제1 정보 요소를 전송하고 - 상기 제1 정보 요소는 상기 개인 데이터 소스로부터 이용 가능한 개인 데이터에 대해 동작하는 실험 디스크립션의 표시를 포함함 -; 상기 보안 채널을 통해, 상기 개인 데이터 제공자로부터 제2 정보 요소를 수신하고, 상기 제2 정보 요소는 상기 실험 디스크립션이 승인되었는지에 대한 표시를 포함하는, 장치.
예 28. 예 27의 장치로서, 컴퓨팅 노드 인증자를 포함하고, 상기 컴퓨팅 노드 인증자는 신뢰할 수 있는 컴퓨팅 노드를 신뢰할 수 있는 컴퓨팅 노드들의 풀에 수용하기 위해 상기 신뢰할 수 있는 컴퓨팅 노드를 인증한다.
예 29. 예 28의 장치로서, 상기 컴퓨팅 노드 인증자는 상기 신뢰할 수 있는 컴퓨팅 노드로부터 신뢰의 루트를 수신하고 상기 신뢰의 루트에 기초하여 상기 신뢰할 수 있는 컴퓨팅 노드를 인증한다.
예 30. 예 28의 장치로서, 상기 컴퓨팅 노드 인증자는: 상기 보안 채널을 통해, 상기 개인 데이터 제공자에 제3 정보를 전송하고 - 상기 제3 정보 요소는 상기 신뢰할 수 있는 컴퓨팅 노드의 신뢰성의 표시를 포함함 -; 상기 보안 채널을 통해, 상기 개인 데이터 제공자로부터 제4 정보 요소를 수신하고, 상기 제4 정보 요소는 상기 신뢰할 수 있는 컴퓨팅 노드가 상기 개인 데이터를 수신하도록 허가되었는지에 대한 표시를 포함한다.
예 31. 예 27의 장치로서, 상기 실험 인증자는 실험 포털로부터 제3 정보 요소를 수신하고, 상기 제3 정보 요소는 상기 실험 디스크립션의 표시를 포함한다.
예 32. 예 27의 장치로서, 상기 실험 디스크립션은 비순환 방향 그래프이다.
예 33. 명령어들을 포함하는 적어도 하나의 머신 판독가능 스토리지 매체로서, 상기 명령어들은 신뢰할 수 있는 실행 환경(TEE)에 의해 실행될 때, 상기 TEE로 하여금: 개인 데이터 소스들의 풀 내의 복수의 개인 데이터 제공자 중의 개인 데이터 제공자와 보안 채널을 설정하고; 상기 보안 채널을 통해, 상기 개인 데이터 제공자로부터 암호화된 개인 데이터를 수신하고; 상기 암호화된 개인 데이터에 하나 이상의 프로세스를 적용하게 하는, 적어도 하나의 머신 판독가능 스토리지 매체.
예 34. 예 33의 적어도 하나의 머신 판독가능 스토리지 매체로서, 추가로 상기 TEE로 하여금 상기 암호화 키들을 수신하고 상기 암호화 키들에 기초하여 상기 암호화된 개인 데이터를 해독하게 하는 명령어들을 포함한다.
예 35. 예 34의 적어도 하나의 머신 판독가능 스토리지 매체로서, 상기 보안 채널은 제1 보안 채널이고, 상기 매체는 추가로 상기 TEE로 하여금 실험 오케스트레이터와 제2 보안 채널을 설정하고 상기 실험 오케스트레이터로부터 상기 암호화 키들을 수신하게 하는 명령어들을 포함한다.
예 36. 예 33의 적어도 하나의 머신 판독가능 스토리지 매체로서, 추가로 상기 TEE로 하여금 상기 장치의 신뢰의 루트의 표시를 포함하는 정보 요소를 실험 오케스트레이터에 전송하게 하는 명령어들을 포함한다.
예 37. 예 34의 적어도 하나의 머신 판독가능 스토리지 매체로서, 추가로 상기 TEE로 하여금 실험 오케스트레이터로부터 정보 요소를 수신하게 하는 명령어들을 포함하고, 상기 정보 요소는 실험 디스크립션의 부분의 표시를 포함한다.
예 38. 예 37의 적어도 하나의 머신 판독가능 스토리지 매체로서, 추가로 상기 TEE로 하여금 상기 개인 데이터 제공자로부터 상기 암호화 키들을 수신하게 하는 명령어들을 포함한다.
예 39. 예 38의 적어도 하나의 머신 판독가능 스토리지 매체로서, 상기 실험 디스크립션은 비순환 방향 그래프(DAG)를 포함한다.
예 40. 예 39의 적어도 하나의 머신 판독가능 스토리지 매체로서, 상기 DAG는 개인 데이터에 대해 수행되는 복수의 맵, 감소, 또는 분석 동작들을 포함하고, 상기 개인 데이터는 상기 개인 데이터 소스들의 풀 내의 상기 복수의 개인 데이터 제공자로부터 이용 가능한 개인 데이터에 대응한다.
예 41. 명령어들을 포함하는 적어도 하나의 머신 판독가능 스토리지 매체로서, 상기 명령어들은 신뢰할 수 있는 실행 환경(TEE)에 의해 실행될 때, 상기 TEE로 하여금: 개인 데이터 소스들의 풀 내의 복수의 개인 데이터 제공자 중의 개인 데이터 제공자와 보안 채널을 설정하고; 상기 보안 채널을 통해, 상기 개인 데이터 제공자에 제1 정보 요소를 전송하고 - 상기 제1 정보 요소는 상기 개인 데이터 소스로부터 이용 가능한 개인 데이터에 대해 동작하는 실험 디스크립션의 표시를 포함함 -; 상기 보안 채널을 통해, 상기 개인 데이터 제공자로부터 제2 정보 요소를 수신하고, 상기 제2 정보 요소는 상기 실험 디스크립션이 승인되었는지에 대한 표시를 포함하는, 적어도 하나의 머신 판독가능 스토리지 매체.
예 42. 예 41의 적어도 하나의 머신 판독가능 스토리지 매체로서, 추가로 상기 TEE로 하여금 신뢰할 수 있는 컴퓨팅 노드를 신뢰할 수 있는 컴퓨팅 노드들의 풀에 수용하기 위해 상기 신뢰할 수 있는 컴퓨팅 노드를 인증하게 하는 명령어들을 포함한다.
예 43. 예 42의 적어도 하나의 머신 판독가능 스토리지 매체로서, 추가로 상기 TEE로 하여금 상기 신뢰할 수 있는 컴퓨팅 노드로부터 신뢰의 루트를 수신하고 상기 신뢰의 루트에 기초하여 상기 신뢰할 수 있는 컴퓨팅 노드를 인증하게 하는 명령어들을 포함한다.
예 44. 예 43의 적어도 하나의 머신 판독가능 스토리지 매체로서, 추가로 상기 TEE로 하여금: 상기 보안 채널을 통해, 상기 개인 데이터 제공자에 제3 정보를 전송하고 - 상기 제3 정보 요소는 상기 신뢰할 수 있는 컴퓨팅 노드의 신뢰성의 표시를 포함함 -; 상기 보안 채널을 통해, 상기 개인 데이터 제공자로부터 제4 정보 요소를 수신하게 하는 명령어들을 포함하고, 상기 제4 정보 요소는 상기 신뢰할 수 있는 컴퓨팅 노드가 상기 개인 데이터를 수신하도록 허가되었는지에 대한 표시를 포함한다.
예 45. 예 41의 적어도 하나의 머신 판독가능 스토리지 매체로서, 추가로 상기 TEE로 하여금 실험 포털로부터 제3 정보 요소를 수신하게 하는 명령어들을 포함하고, 상기 제3 정보 요소는 상기 실험 디스크립션의 표시를 포함한다.
예 46. 예 41의 적어도 하나의 머신 판독가능 스토리지 매체로서, 상기 실험 디스크립션은 비순환 방향 그래프이다.
예 47. 컴퓨터로 구현되는 방법으로서, 개인 데이터 소스들의 풀 내의 복수의 개인 데이터 제공자 중의 개인 데이터 제공자와 보안 채널을 설정하는 단계; 상기 보안 채널을 통해, 상기 개인 데이터 제공자로부터 암호화된 개인 데이터를 수신하는 단계; 및 상기 암호화된 개인 데이터에 하나 이상의 프로세스를 적용하는 단계를 포함하는, 컴퓨터로 구현되는 방법.
예 48. 예 47의 컴퓨터로 구현되는 방법으로서, 암호화 키들을 수신하고 상기 암호화 키들에 기초하여 상기 암호화된 개인 데이터를 해독하는 단계를 포함한다.
예 49. 예 48의 컴퓨터로 구현되는 방법으로서, 상기 보안 채널은 제1 보안 채널이고, 상기 방법은 실험 오케스트레이터와 제2 보안 채널을 설정하고 상기 실험 오케스트레이터로부터 상기 암호화 키들을 수신하는 단계를 포함한다.
예 50. 예 47의 컴퓨터로 구현되는 방법으로서, 상기 장치의 신뢰의 루트의 표시를 포함하는 정보 요소를 실험 오케스트레이터에 전송하는 단계를 포함한다.
예 51. 예 48의 컴퓨터로 구현되는 방법으로서, 실험 오케스트레이터로부터 정보 요소를 수신하는 단계를 포함하고, 상기 정보 요소는 실험 디스크립션의 부분의 표시를 포함한다.
예 52. 예 51의 컴퓨터로 구현되는 방법으로서, 상기 개인 데이터 제공자로부터 상기 암호화 키들을 수신하는 단계를 포함한다.
예 53. 예 52의 컴퓨터로 구현되는 방법으로서, 상기 실험 디스크립션은 비순환 방향 그래프(DAG)를 포함한다.
예 54. 예 53의 컴퓨터로 구현되는 방법으로서, 상기 DAG는 개인 데이터에 대해 수행되는 복수의 맵, 감소, 또는 분석 동작들을 포함하고, 상기 개인 데이터는 상기 개인 데이터 소스들의 풀 내의 상기 복수의 개인 데이터 제공자로부터 이용 가능한 개인 데이터에 대응한다.
예 55. 컴퓨터로 구현되는 방법으로서, 개인 데이터 소스들의 풀 내의 복수의 개인 데이터 제공자 중의 개인 데이터 제공자와 보안 채널을 설정하는 단계; 상기 보안 채널을 통해, 상기 개인 데이터 제공자에 제1 정보 요소를 전송하는 단계 - 상기 제1 정보 요소는 상기 개인 데이터 소스로부터 이용 가능한 개인 데이터에 대해 동작하는 실험 디스크립션의 표시를 포함함 -; 상기 보안 채널을 통해, 상기 개인 데이터 제공자로부터 제2 정보 요소를 수신하는 단계를 포함하고, 상기 제2 정보 요소는 상기 실험 디스크립션이 승인되었는지에 대한 표시를 포함하는, 컴퓨터로 구현되는 방법.
예 56. 예 55의 컴퓨터로 구현되는 방법으로서, 신뢰할 수 있는 컴퓨팅 노드를 신뢰할 수 있는 컴퓨팅 노드들의 풀에 수용하기 위해 상기 신뢰할 수 있는 컴퓨팅 노드를 인증하는 단계를 포함한다.
예 56. 예 56의 컴퓨터로 구현되는 방법으로서, 상기 신뢰할 수 있는 컴퓨팅 노드로부터 신뢰의 루트를 수신하고 상기 신뢰의 루트에 기초하여 상기 신뢰할 수 있는 컴퓨팅 노드를 인증하는 단계를 포함한다.
예 58. 예 57의 컴퓨터로 구현되는 방법으로서, 상기 보안 채널을 통해, 상기 개인 데이터 제공자에 제3 정보를 전송하는 단계 - 상기 제3 정보 요소는 상기 신뢰할 수 있는 컴퓨팅 노드의 신뢰성의 표시를 포함함 -; 상기 보안 채널을 통해, 상기 개인 데이터 제공자로부터 제4 정보 요소를 수신하는 단계를 포함하고, 상기 제4 정보 요소는 상기 신뢰할 수 있는 컴퓨팅 노드가 상기 개인 데이터를 수신하도록 허가되었는지에 대한 표시를 포함한다.
예 59. 예 55의 컴퓨터로 구현되는 방법으로서, 실험 포털로부터 제3 정보 요소를 수신하는 단계를 포함하고, 상기 제3 정보 요소는 상기 실험 디스크립션의 표시를 포함한다.
예 60. 예 59의 컴퓨터로 구현되는 방법으로서, 상기 실험 디스크립션은 비순환 방향 그래프를 포함한다.
예 61. 디바이스를 위한 장치로서, 예 47 내지 예 60 중 어느 하나의 방법을 수행하기 위한 수단을 포함하는 장치.
Claims (25)
- 프라이버시 보존 컴퓨팅을 위한 장치로서,
네트워크 인터페이스;
상기 네트워크 인터페이스에 결합된 프로세서;
상기 프로세서에 결합된 메모리 - 상기 메모리는 상기 프로세서에 의해 실행 가능한 명령어들을 포함함 -; 및
상기 프로세서에 결합된 신뢰할 수 있는 실행 환경(TEE)
을 포함하고,
상기 TEE는:
보안 코프로세서(secure co-processor); 및
상기 보안 코프로세서에 결합된 보안 메모리를 포함하고, 상기 보안 메모리는 TEE 명령어들을 포함하고, 상기 TEE 명령어들은 상기 보안 코프로세서에 의해 실행 가능하고, 상기 보안 코프로세서에 의해 실행될 때, 상기 보안 코프로세서로 하여금:
상기 프로세서 및 상기 네트워크 인터페이스를 통해, 개인 데이터 소스들의 풀(pool) 내의 복수의 개인 데이터 제공자 중의 개인 데이터 제공자와 제1 보안 채널을 설정하고,
상기 제1 보안 채널을 통해, 상기 개인 데이터 제공자로부터 제1 암호화 키 및 암호화된 개인 데이터를 수신하고,
상기 프로세서 및 상기 네트워크 인터페이스를 통해, 실험 오케스트레이터와 제2 보안 채널을 설정하고,
상기 제2 보안 채널을 통해, 제2 암호화 키 및 실험 디스크립션의 부분을 수신하고,
상기 제1 암호화 키, 상기 제2 암호화 키 및 상기 실험 디스크립션에 부분적으로 기초하여 상기 암호화된 개인 데이터에 하나 이상의 프로세스를 적용하게 하는, 장치. - 제1항에 있어서, 상기 TEE 명령어들은, 상기 보안 코프로세서에 의해 실행될 때, 상기 보안 코프로세서로 하여금 상기 암호화 키들에 기초하여 상기 암호화된 개인 데이터를 해독하게 하는, 장치.
- 삭제
- 제1항에 있어서, 상기 TEE 명령어들은, 상기 보안 코프로세서에 의해 실행될 때, 상기 보안 코프로세서로 하여금 상기 장치의 신뢰의 루트의 표시를 포함하는 정보 요소를 상기 실험 오케스트레이터에 전송하게 하는, 장치.
- 제1항에 있어서, 상기 장치는 분산된 신뢰할 수 있는 컴퓨팅 노드들의 풀 내의 신뢰할 수 있는 컴퓨팅 노드인, 장치.
- 삭제
- 삭제
- 제1항에 있어서, 상기 실험 디스크립션은 비순환 방향 그래프(DAG)를 포함하는, 장치.
- 제8항에 있어서, 상기 DAG는 개인 데이터에 대해 수행되는 복수의 맵, 감소, 또는 분석 동작들을 포함하고, 상기 개인 데이터는 상기 개인 데이터 소스들의 풀 내의 상기 복수의 개인 데이터 제공자로부터 이용 가능한 개인 데이터에 대응하는, 장치.
- 삭제
- 프라이버시 보존 컴퓨팅을 위한 장치로서,
네트워크 인터페이스; 및
상기 네트워크 인터페이스에 결합된 신뢰할 수 있는 실행 환경(TEE)
을 포함하고,
상기 TEE는:
보안 코프로세서; 및
상기 보안 코프로세서에 결합된 보안 메모리를 포함하고, 상기 보안 메모리는 TEE 명령어들을 포함하고, 상기 TEE 명령어들은 상기 보안 코프로세서에 의해 실행 가능하고, 상기 보안 코프로세서에 의해 실행될 때, 상기 보안 코프로세서로 하여금:
개인 데이터 소스들의 풀 내의 복수의 개인 데이터 제공자 중의 개인 데이터 제공자와 보안 채널을 설정하고,
상기 보안 채널을 통해, 상기 개인 데이터 제공자에 제1 정보 요소를 전송하고 - 상기 제1 정보 요소는 개인 데이터 소스들의 상기 풀(pool) 내의 상기 복수의 개인 데이터 제공자로부터 이용 가능한 개인 데이터에 대해 동작하는 실험 디스크립션의 표시를 포함함 -,
상기 보안 채널을 통해, 상기 개인 데이터 제공자로부터 제2 정보 요소를 수신하고 - 상기 제2 정보 요소는 상기 실험 디스크립션이 승인되었는지에 대한 표시를 포함함 -,
신뢰할 수 있는 컴퓨팅 노드들의 풀에 신뢰할 수 있는 컴퓨팅 노드를 수용하기 위해 상기 신뢰할 수 있는 컴퓨팅 노드를 인증하게 하는, 장치. - 삭제
- 제11항에 있어서, 상기 TEE 명령어들은, 상기 보안 코프로세서에 의해 실행될 때, 상기 보안 코프로세서로 하여금:
상기 신뢰할 수 있는 컴퓨팅 노드로부터 신뢰의 루트를 수신하고,
상기 신뢰의 루트에 기초하여 상기 신뢰할 수 있는 컴퓨팅 노드를 인증하게 하는, 장치. - 제11항에 있어서, 상기 TEE 명령어들은, 상기 보안 코프로세서에 의해 실행될 때, 상기 보안 코프로세서로 하여금:
상기 보안 채널을 통해, 상기 개인 데이터 제공자에 제3 정보 요소를 전송하고 - 상기 제3 정보 요소는 상기 신뢰할 수 있는 컴퓨팅 노드의 신뢰성의 표시를 포함함 -;
상기 보안 채널을 통해, 상기 개인 데이터 제공자로부터 제4 정보 요소를 수신하게 하고, 상기 제4 정보 요소는 상기 신뢰할 수 있는 컴퓨팅 노드가 상기 개인 데이터를 수신하도록 허가되었는지에 대한 표시를 포함하는, 장치. - 제11항에 있어서, 상기 TEE 명령어들은, 상기 보안 코프로세서에 의해 실행될 때, 상기 보안 코프로세서로 하여금
실험 포털로부터 제3 정보 요소를 수신하게 하고, 상기 제3 정보 요소는 상기 실험 디스크립션의 표시를 포함하는, 장치. - 제11항에 있어서, 상기 실험 디스크립션은 비순환 방향 그래프인, 장치.
- 명령어들을 포함하는 적어도 하나의 비일시적 머신 판독가능 스토리지 매체로서, 상기 명령어들은 네트워크 인터페이스를 포함하는 장치의 신뢰할 수 있는 실행 환경(TEE)의 보안 코프로세서에 의해 실행될 때, 상기 TEE로 하여금:
상기 네트워크 인터페이스를 통해, 개인 데이터 소스들의 풀 내의 복수의 개인 데이터 제공자 중의 개인 데이터 제공자와 제1 보안 채널을 설정하고;
상기 제1 보안 채널을 통해, 상기 개인 데이터 제공자로부터 제1 암호화 키 및 암호화된 개인 데이터를 수신하고;
상기 네트워크 인터페이스를 통해, 실험 오케스트레이터와 제2 보안 채널을 설정하고;
상기 제2 보안 채널을 통해, 제2 암호화 키 및 실험 디스크립션의 부분을 수신하고;
상기 제1 암호화 키, 상기 제2 암호화 키 및 상기 실험 디스크립션에 부분적으로 기초하여 상기 암호화된 개인 데이터에 하나 이상의 프로세스를 적용하게 하는, 적어도 하나의 비일시적 머신 판독가능 스토리지 매체. - 제17항에 있어서, 상기 보안 코프로세서에 의해 실행될 때 추가로 상기 TEE로 하여금 상기 암호화 키들에 기초하여 상기 암호화된 개인 데이터를 해독하게 하는 명령어들을 포함하는, 적어도 하나의 비일시적 머신 판독가능 스토리지 매체.
- 제18항에 있어서, 상기 보안 코프로세서에 의해 실행될 때 추가로 상기 TEE로 하여금 상기 장치의 신뢰의 루트의 표시를 포함하는 정보 요소를 상기 실험 오케스트레이터에 전송하게 하는 명령어들을 포함하는, 적어도 하나의 비일시적 머신 판독가능 스토리지 매체.
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/866,264 US10701039B2 (en) | 2015-09-25 | 2015-09-25 | Mutual approval for privacy-preserving computing |
US14/866,264 | 2015-09-25 | ||
PCT/US2016/053838 WO2017054001A1 (en) | 2015-09-25 | 2016-09-26 | Mutual approval for privacy-preserving computing |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20180048638A KR20180048638A (ko) | 2018-05-10 |
KR102569845B1 true KR102569845B1 (ko) | 2023-08-24 |
Family
ID=58387549
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020187005416A KR102569845B1 (ko) | 2015-09-25 | 2016-09-26 | 프라이버시 보존 컴퓨팅을 위한 상호 승인 |
Country Status (5)
Country | Link |
---|---|
US (1) | US10701039B2 (ko) |
EP (1) | EP3353703A4 (ko) |
KR (1) | KR102569845B1 (ko) |
CN (1) | CN107924445B (ko) |
WO (1) | WO2017054001A1 (ko) |
Families Citing this family (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11277412B2 (en) | 2018-05-28 | 2022-03-15 | Royal Bank Of Canada | System and method for storing and distributing consumer information |
US9686240B1 (en) | 2015-07-07 | 2017-06-20 | Sprint Communications Company L.P. | IPv6 to IPv4 data packet migration in a trusted security zone |
US9749294B1 (en) | 2015-09-08 | 2017-08-29 | Sprint Communications Company L.P. | System and method of establishing trusted operability between networks in a network functions virtualization environment |
US10542115B1 (en) * | 2015-10-01 | 2020-01-21 | Sprint Communications Company L.P. | Securing communications in a network function virtualization (NFV) core network |
US9781016B1 (en) | 2015-11-02 | 2017-10-03 | Sprint Communications Company L.P. | Dynamic addition of network function services |
US10250498B1 (en) | 2016-10-03 | 2019-04-02 | Sprint Communications Company L.P. | Session aggregator brokering of data stream communication |
US10348488B1 (en) | 2017-08-25 | 2019-07-09 | Sprint Communications Company L.P. | Tiered distributed ledger technology (DLT) in a network function virtualization (NFV) core network |
CN112567366B (zh) * | 2018-05-28 | 2024-10-11 | 加拿大皇家银行 | 用于确保电子交易平台安全的系统和方法 |
US11205137B2 (en) * | 2018-06-15 | 2021-12-21 | International Business Machines Corporation | Distributed training in a parameter dataset |
US11379263B2 (en) * | 2018-08-13 | 2022-07-05 | Ares Technologies, Inc. | Systems, devices, and methods for selecting a distributed framework |
US11316692B2 (en) * | 2018-08-13 | 2022-04-26 | Ares Technologies, Inc. | Systems, devices, and methods for selecting a distributed framework |
CN109492438B (zh) * | 2018-10-24 | 2022-09-02 | 梅艳 | 基于TrustZone的分布式计算系统 |
CN110011956B (zh) | 2018-12-12 | 2020-07-31 | 阿里巴巴集团控股有限公司 | 一种数据处理方法和装置 |
CN109873801B (zh) | 2018-12-12 | 2020-07-24 | 阿里巴巴集团控股有限公司 | 在用户和可信计算集群之间建立可信通道的方法、装置、存储介质及计算设备 |
CN109861980B (zh) * | 2018-12-29 | 2020-08-04 | 阿里巴巴集团控股有限公司 | 一种建立可信计算集群的方法、装置、存储介质及计算设备 |
CN111756675B (zh) * | 2019-03-28 | 2023-04-07 | 钉钉控股(开曼)有限公司 | 数据处理方法、装置、设备和系统 |
CN111753324B (zh) * | 2019-03-29 | 2024-02-09 | 华控清交信息科技(北京)有限公司 | 私有数据的处理方法、计算方法及所适用的设备 |
RU2715796C1 (ru) | 2019-05-17 | 2020-03-03 | Постников Роман Владимирович | Устройство для безопасного вычисления значения функции с использованием двух секретных наборов данных без компрометации наборов данных и способ вычисления социального рейтинга с использованием устройства |
CN111967038B (zh) * | 2019-09-30 | 2023-12-15 | 华控清交信息科技(北京)有限公司 | 数据处理系统、方法、设备、编辑器及存储介质 |
CN111027713B (zh) * | 2019-12-10 | 2022-09-02 | 支付宝(杭州)信息技术有限公司 | 共享机器学习系统及方法 |
CN111027086B (zh) * | 2019-12-16 | 2021-04-20 | 支付宝(杭州)信息技术有限公司 | 一种私有数据保护方法和系统 |
CN111026359B (zh) * | 2019-12-17 | 2021-10-15 | 支付宝(杭州)信息技术有限公司 | 多方联合判定隐私数据的数值范围的方法和装置 |
CN111753318B (zh) * | 2020-06-04 | 2024-04-26 | 上海蚂蚁创将信息技术有限公司 | 私有数据的多方安全计算方法、装置及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120079282A1 (en) * | 2010-06-28 | 2012-03-29 | Lionstone Capital Corporation | Seamless end-to-end data obfuscation and encryption |
US20140095890A1 (en) * | 2012-10-02 | 2014-04-03 | Motorola Mobility Llc | Systems and methods for manipulating sensitive information in a secure mobile environment |
US20150058629A1 (en) * | 2013-08-21 | 2015-02-26 | Mark D. Yarvis | Processing Data Privately in the Cloud |
US20150178052A1 (en) * | 2013-12-17 | 2015-06-25 | Atigeo Llc | Automated experimentation platform |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7107445B2 (en) * | 2002-11-20 | 2006-09-12 | International Business Machines Corporation | Method and apparatus for secure processing of sensitive data |
GB2401012B (en) * | 2003-04-23 | 2005-07-06 | Hewlett Packard Development Co | Cryptographic method and apparatus |
KR101039001B1 (ko) | 2010-03-04 | 2011-06-07 | 가톨릭대학교 산학협력단 | 협의 진료 시스템 및 그 방법 |
WO2013059368A1 (en) * | 2011-10-17 | 2013-04-25 | Intertrust Technologies Corporation | Systems and methods for protecting and governing genomic and other information |
US9286491B2 (en) * | 2012-06-07 | 2016-03-15 | Amazon Technologies, Inc. | Virtual service provider zones |
CN102710668A (zh) * | 2012-06-29 | 2012-10-03 | 上海海事大学 | 一种适于云存储的数据隐私性保障方法 |
US9215249B2 (en) * | 2012-09-29 | 2015-12-15 | Intel Corporation | Systems and methods for distributed trust computing and key management |
US8572757B1 (en) | 2012-11-30 | 2013-10-29 | nCrypted Cloud LLC | Seamless secure private collaboration across trust boundaries |
US9141769B1 (en) * | 2013-02-08 | 2015-09-22 | Amazon Technologies, Inc. | Secure transfer and use of secret material in a shared environment |
US9118639B2 (en) | 2013-03-14 | 2015-08-25 | Intel Corporation | Trusted data processing in the public cloud |
US9767299B2 (en) | 2013-03-15 | 2017-09-19 | Mymail Technology, Llc | Secure cloud data sharing |
US9747456B2 (en) * | 2013-03-15 | 2017-08-29 | Microsoft Technology Licensing, Llc | Secure query processing over encrypted data |
EP2849403B1 (en) * | 2013-09-13 | 2023-06-07 | Alcatel Lucent | Method and system for controlling the exchange of privacy-sensitive information |
US9384362B2 (en) * | 2013-10-14 | 2016-07-05 | Intuit Inc. | Method and system for distributing secrets |
JP6255091B2 (ja) * | 2013-11-25 | 2017-12-27 | マカフィー, エルエルシー | プライベートデータを保護するセキュアプロキシ |
US9680872B1 (en) * | 2014-03-25 | 2017-06-13 | Amazon Technologies, Inc. | Trusted-code generated requests |
US20160036826A1 (en) * | 2014-07-29 | 2016-02-04 | Mcafee, Inc. | Secure content packaging using multiple trusted execution environments |
US20160085916A1 (en) * | 2014-09-24 | 2016-03-24 | Ned M. Smith | Privacy preserving genome sequence management |
-
2015
- 2015-09-25 US US14/866,264 patent/US10701039B2/en not_active Expired - Fee Related
-
2016
- 2016-09-26 EP EP16849897.0A patent/EP3353703A4/en not_active Withdrawn
- 2016-09-26 KR KR1020187005416A patent/KR102569845B1/ko active IP Right Grant
- 2016-09-26 WO PCT/US2016/053838 patent/WO2017054001A1/en unknown
- 2016-09-26 CN CN201680049909.3A patent/CN107924445B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120079282A1 (en) * | 2010-06-28 | 2012-03-29 | Lionstone Capital Corporation | Seamless end-to-end data obfuscation and encryption |
US20140095890A1 (en) * | 2012-10-02 | 2014-04-03 | Motorola Mobility Llc | Systems and methods for manipulating sensitive information in a secure mobile environment |
US20150058629A1 (en) * | 2013-08-21 | 2015-02-26 | Mark D. Yarvis | Processing Data Privately in the Cloud |
US20150178052A1 (en) * | 2013-12-17 | 2015-06-25 | Atigeo Llc | Automated experimentation platform |
Also Published As
Publication number | Publication date |
---|---|
KR20180048638A (ko) | 2018-05-10 |
EP3353703A1 (en) | 2018-08-01 |
WO2017054001A1 (en) | 2017-03-30 |
US10701039B2 (en) | 2020-06-30 |
EP3353703A4 (en) | 2019-04-24 |
CN107924445A (zh) | 2018-04-17 |
US20170093806A1 (en) | 2017-03-30 |
CN107924445B (zh) | 2022-08-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102569845B1 (ko) | 프라이버시 보존 컴퓨팅을 위한 상호 승인 | |
CN105408913B (zh) | 在云中隐私地处理数据 | |
US10911250B2 (en) | Challenge response authentication for self encrypting drives | |
US20140282935A1 (en) | Techniques for securing use of one-time passwords | |
US9646216B2 (en) | Multiple user biometric for authentication to secured resources | |
JP7023294B2 (ja) | 一致コホートの作成およびブロックチェーンを使用した保護データの交換 | |
US11206246B2 (en) | Controlling access to secured data in multi-system exchange environments | |
WO2017053996A1 (en) | Drone sourced content authoring using swarm attestation | |
US11239997B2 (en) | Techniques for cipher system conversion | |
CN104040511A (zh) | 减少对数据通信量的未经授权的访问 | |
WO2021120855A1 (zh) | 一种基于隐私数据进行模型训练的方法及系统 | |
US12063513B2 (en) | Secure trusted service manager provider | |
CN107209844A (zh) | 便携式安全存储装置 | |
CN111147248A (zh) | 人脸特征库的加密传输方法、装置、系统和存储介质 | |
US11582041B2 (en) | Electronic device and control method thereof | |
US8910260B2 (en) | System and method for real time secure image based key generation using partial polygons assembled into a master composite image | |
WO2021013393A1 (en) | Computer-implemented methods for handling requests by using a distributed ledger database | |
CN111062492B (zh) | 一种基于可选隐私数据进行模型训练的方法及系统 | |
Kothari et al. | Blockchain predictions for health care in 2021 | |
US20230267229A1 (en) | Data aggregation and anonymization in multi-tenant networks | |
EP3155821B1 (en) | Video content tracking | |
EP4451606A1 (en) | Method for generating common identifier and apparatus therefor | |
US20170156058A1 (en) | Securing enterprise data on mobile devices | |
Hasan et al. | AES Encryption for Secure Storage and Transfer of Patient Health Records using Blockchain Technology | |
CN104331671A (zh) | 计算机从设备安全代码加载的方法与系统 |
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 |