KR20210041540A - 보안 전자 트랜잭션 플랫폼을 위한 시스템 및 방법 - Google Patents

보안 전자 트랜잭션 플랫폼을 위한 시스템 및 방법 Download PDF

Info

Publication number
KR20210041540A
KR20210041540A KR1020207036669A KR20207036669A KR20210041540A KR 20210041540 A KR20210041540 A KR 20210041540A KR 1020207036669 A KR1020207036669 A KR 1020207036669A KR 20207036669 A KR20207036669 A KR 20207036669A KR 20210041540 A KR20210041540 A KR 20210041540A
Authority
KR
South Korea
Prior art keywords
data
partner
secure enclave
computer
protected memory
Prior art date
Application number
KR1020207036669A
Other languages
English (en)
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 KR20210041540A publication Critical patent/KR20210041540A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/1425Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block
    • G06F12/1441Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being physical, e.g. cell, word, block for a range
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting 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/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0838Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
    • H04L9/0841Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
    • H04L9/0844Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols with user authentication or key authentication, e.g. ElGamal, MTI, MQV-Menezes-Qu-Vanstone protocol or Diffie-Hellman protocols using implicitly-certified keys
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/321Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Medical Informatics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

프로세서의 신뢰성 있는 실행 환경(TEE) 내에서 데이터를 프로세싱하기 위한 시스템이 제공된다. 시스템은 다음의 것을 포함할 수도 있다: 파트너의 아이덴티티를 검증하고 아이덴티티의 상기 검증시 파트너에게 통신 키를 발행하기 위한 신뢰 매니저 유닛; 통신 키를 사용하여 암호화되는 암호화된 데이터를 파트너로부터 수신하기 위한 적어도 하나의 인터페이스; 저장 키(storage key)와 함께 암호화된 데이터를 저장하기 위한 그리고 TEE 내에서 암호화된 데이터의 미승인 액세스를 방지하기 위한 TEE 내의 보안 데이터베이스; 및 암호 해제된 데이터에 기초하여 추천을 생성하기 위해 암호화된 데이터를 암호 해제하고 분석하기 위한 추천 엔진.

Description

보안 전자 트랜잭션 플랫폼을 위한 시스템 및 방법
교차 참조
본 출원은, 2018년 5월 28일자로 출원된 미국 가출원 제62/677,133호; 2018년 6월 28일자로 출원된 미국 가출원 제62/691,406호; 2018년 7월 12일자로 출원된 미국 가출원 제62/697,140호; 2019년 2월 15일자로 출원된 미국 가출원 제62/806,394호; 및 2019년 3월 27일자로 출원된 미국 가출원 제62/824,697호의 정식 출원이며, 이들에 대한 우선권을 비롯한 모든 이점을 주장하는데; 이들 모두는 발명의 명칭이 SYSTEM AND METHOD FOR SECURE ELECTRONIC TRANSACTION PLATFORM이다.
상기 기초 출원들의 내용은 그들 전체가 참조에 의해 본 명세서에 원용된다.
기술분야
본 개시내용은 일반적으로 전자 데이터 프로세싱의 분야에 관한 것으로, 특히 전자 트랜잭션 데이터의 보안 프로세싱에 관한 것이다.
소비자는 그들이 금융 상품(예를 들면, 신용 카드 또는 로열티 멤버십 카드)을 사용하여 구매를 행할 때 금융 기관(financial institution) 및 판매자(vendor)를 일정 레벨 신뢰하고, 그 결과, 트랜잭션 데이터와 같은 그들의 개인 정보는 소비자의 명시적인 동의 없이는 다른 당사자(party)에게 노출되지 않을 것이다. 동시에, 소비자는 개인 맞춤되지 않은 추천(recommendation)보다 개인 맞춤된 제안(personalized offer)에 더 잘 반응한다.
은행 및 상인(merchant)은, 소비자 프라이버시의 보호가 그들에게 가장 중요하기 때문에, 일반적으로 소비자 데이터를 다른 조직(organization)과 공유하기를 꺼린다. 또한, 심지어 소비자로부터의 명시적인 동의가 있더라도, 은행과 상인은, 다른 당사자가 공유 데이터에 대한 통제권 또는 소유권을 상실할 수도 있기 때문에, 다른 당사자와 소비자 데이터를 공유하는 것을 여전히 꺼려한다.
데이터 프로세싱 및 변환 동안 프라이버시의 보호를 보장하고자 하는 소망이 있다. 그러나, 암호화 및 암호 해제의 추가적인 단계가 증가된 인프라 요구뿐만 아니라, 성능에 대한 기술적 제한으로 이어질 수도 있기 때문에, 증가된 프라이버시 보호는 기술적 도전 과제로 이어진다.
본 명세서에서 설명되는 실시형태는 향상된 프라이버시 및 보안과 관련되는 기술적 도전 과제를 극복하도록 적응되는 기술적 솔루션에 관한 것이다. 다수의 별개의 컴퓨팅 시스템으로부터 하나 이상의 데이터 세트를 수신하도록 구성되는 데이터 애그리게이터 컴퓨터 시스템(data aggregator computer system)이 설명된다.
추가적인 암호화가 증가된 계산 부담을 야기하기 때문에, 특히 증가된 레벨의 암호화 하에서 동작하는 환경에서, 컴퓨팅 리소스 제약에 관한 도전 과제를 극복하기 위해 특정한 피처가 몇몇 실시형태에서 설명된다.
더구나, 몇몇 실시형태에서, 별개의 보안 메모리 영역이 활용될 때, 그러한 영역은 커널 프로세스 또는 오퍼레이팅 시스템과 같은 다른 컴퓨팅 서브시스템으로부터 물리적으로 또는 전자적으로 분리될 수도 있기 때문에(예를 들면, 심지어 서버 디바이스에 대한 루트 액세스를 갖는 관리자(administrator)도 보호된 메모리 영역에 저장되는 기저의(underlying) 데이터에는 액세스할 수 없을 수도 있다), 그러한 영역은 메모리 공간이 제한된다. 따라서, 보안 엔클레이브(secure enclave)가 데이터 프로세싱 또는 머신 러닝을 수행하기 위한 매우 높은 보안성 환경을 제공하기 때문에, 악의적인 공격 또는 데이터 유출의 가능성 및 그에 대한 노출은 크게 감소된다.
이들 데이터 세트는 별개의 컴퓨팅 시스템의 조직의 민감한 정보를 나타낼 수 있는데, 그 조직은, 다른 컴퓨팅 시스템, 또는 심지어 데이터 애그리게이터 컴퓨터 시스템의 관리자도 그 민감한 정보에 액세스할 수 있게 되기를 원치 않는다. 향상된 프라이버시 및 보안 조치를 갖는 향상된 프로세싱 아키텍처의 동작과 관련하여, 보안 엔클레이브와 같은 보안 프로세싱 기술을 활용하는 시스템, 방법, 및 컴퓨터 판독 가능 매체가 설명된다. 몇몇 실시형태에서, 머신 러닝 데이터 모델 아키텍처 및 그들의 컴포넌트는, 그들이 상호 작용될 수 없도록 또는 액세스될 수 없도록, 보안 메모리 영역에 또한 저장된다.
상기에서 설명되는 바와 같이, 이들 향상된 프라이버시 및 보안 조치는, 예를 들면, 암호화 및 암호 해제 요건이 다양한 상황에서 이용 가능한 총 컴퓨팅 리소스를 감소시키기 때문에, 증가된 기술적 도전 과제로 이어진다. 특정한 양태는 보안 프로세서만을 사용하여 수행되는 것을 필요로 하고 데이터 엘리먼트는 보안 프로세싱 환경 외부에 있는 동안 암호화된 포맷으로만 저장되는 것을 필요로 할 수도 있다는 요건에 기인하여 컴퓨팅 리소스는 제한될 수도 있다. 보안 프로세싱은, 적절한 액세스 권한이 없는 당사자가 머신 러닝 데이터 아키텍처에서 사용되고 있는 기저의 데이터의 하나 이상의 부분에 액세스할 수 없도록 전체 계산 단계를 보호하도록 지시받는다.
수신된 데이터 세트는, 오퍼레이팅 시스템 및 커널 시스템에 액세스할 수 없도록 암호화되는 보호된 메모리 영역(protected memory region)에 저장된다. 보호된 메모리 영역은 적어도 데이터 스토리지 영역 및 출력 데이터 구조를 생성하기 위해 데이터를 프로세싱하는 격리된 데이터 프로세싱 서브시스템을 유지하는 데이터 프로세싱 서브시스템 스토리지 영역을 포함한다. 예시적인 실시형태에서, 데이터 프로세싱 서브시스템은, 출력을 생성함에 있어서 쿼리 요청(query request)의 컴포넌트 및/또는 저장된 데이터 세트의 엘리먼트를 활용하는 프로세싱 기능을 적용한다.
단순화된 예로서, 데이터 세트는 벤치마킹에 대해 사용될 수 있고, 벤치마크 통계에 관한 쿼리 요청에 응답하여, 응답을 획득하기 위해 집성된 데이터 세트가 조회될(queried) 수 있다(예를 들면, 어떠한 당사자도 보호된 메모리 영역에 액세스할 수 없기 때문에, 기저의 데이터 세트의 프라이버시 및 보안성을 유지하면서, 데이터 소스 A뿐만 아니라, 또한, 데이터 소스 B, C, D로부터의 데이터 세트를 활용함). 보호된 메모리 데이터 영역은, 예를 들면, 보안 엔클레이브 데이터 프로세서에게만 알려져 있고, 심지어 보안 엔클레이브 데이터 프로세서가 존재하는 시스템의 관리자를 비롯한, 어떠한 다른 당사자도 액세스할 수 없는, 또는 보안 엔클레이브 데이터 프로세서가 존재하는 시스템의 오퍼레이팅 시스템 또는 커널 프로세스를 통해 액세스할 수 없는 키 메커니즘을 사용하여 암호화되는 것에 의해 보호될 수 있다.
몇몇 추가적인 실시형태에서, 보호된 메모리 영역이 로딩 가능한, 그리고, 데이터 세트가 로딩될 수 있고, 그 다음, 기록에 후속하여 암호화될 수 있는, 그리고 보호된 메모리 영역으로 로딩된 이후 데이터 세트가 더 이상 액세스될 수 없는 특수 캐시 메모리가 제공된다.
제2 양태에서, 프로세싱은, 예를 들면, 그 상에 저장된 데이터 세트를 통해 반복적으로 지속되고 트레이닝되는 안전하게 저장되는 머신 러닝 데이터 모델 아키텍처를 통해 수행된다. 이 실시형태에서, 머신 러닝 데이터 모델 아키텍처의 기저의 컴포넌트도 또한 보호된 메모리 영역에서 유지되거나 또는 저장되기 때문에, 머신 러닝 데이터 모델 아키텍처의 기저의 컴포넌트(예를 들면, 은닉 레이어, 컴퓨팅 노드, 상호 접속(interconnection), 노드를 나타내는 데이터 구조)도 또한 보안 엔클레이브 데이터 프로세서가 존재하는 시스템의 오퍼레이팅 시스템 또는 커널 프로세스를 통해 액세스 불가능하다. 인터커넥트된 컴퓨팅 노드는, (예를 들면, 손실 함수를 최적화하는 것의 관점에서 경사 하강법(gradient descent)을 통해 학습하는 것에 의해) 다수의 트레이닝 시기(training epoch)에 걸쳐 트레이닝되는 동적으로 수정된 활성화 함수를 통해, 쿼리 데이터 메시지(query data message)에 응답하여 출력 데이터 구조를 생성하기 위해 협력하여 동작한다.
한 실시형태에서, 머신 러닝 서브 태스크를 수행하기 위해 보안 엔클레이브(예를 들면, 하드웨어이거나 또는 소프트웨어이거나, 또는 이들의 조합인 격리된 데이터 프로세서)가 활용된다. 보안 엔클레이브는, 몇몇 실시형태에서, 기저의 데이터에 안전하게 액세스하기 위해 사용되는 암호화 키(encryption key)를 저장할 수도 있다.
보안 엔클레이브 프로세싱은 컴퓨팅 리소스 제약과 관련한 제한으로 이어지는데, 이것은 감소된 성능 및 속도로 이어질 수도 있다. 비보안 프로세싱 패러다임에 비해, 암호화 및 액세스 제한 요건에 기인하여 증가된 복잡성이 나타난다.
따라서, 본원의 다양한 실시형태에서 설명되는 바와 같이, 강력한 프라이버시 및 강건한 보안성을 갖는 머신 러닝 데이터 아키텍처에 관한 접근법이 제안된다. 머신 러닝 아키텍처는, 몇몇 실시형태에서, 별개의 트레이닝 모델 아키텍처를 프로세싱하고 유지하는 다수의 인터커넥트된 보안 엔클레이브 프로세싱 파티션(예를 들면, 별개의 보안 엔클레이브 프로세서)을 포함한다.
데이터가 파티션의 각각을 통해 프로세싱됨에 따라, 별개의 모델 아키텍처가 업데이트되어 업데이트된 모델 아키텍처 파라미터 데이터 구조를 생성한다. 파티션의 각각으로부터의 업데이트된 모델 아키텍처 파라미터 데이터 구조는 파라미터 집성 유닛(예를 들면, 그 자신의 구역일 수 있는 파라미터 서버)에서 집성된다. 파라미터 집성 유닛은 업데이트된 트레이닝된 모델 아키텍처를 저장하도록 구성되는데, 이것은, 그 다음, 보안 프로세싱 전통 기술(secure processing tradition)로 다시 전파된다. 몇몇 실시형태의 이러한 아키텍처는 보안 엔클레이브 파티션의 감소된 스루풋에 관련되는 기술적 제약을 극복함에 있어서 도움이 된다. 예를 들면, 몇몇 보안 엔클레이브 파티션은 대략 90MB 이하의 모델 아키텍처 사이즈로 제한된다. 따라서, 전체적인 보안 프로세싱을 제공하기 위해, 다수의 조정된 파티션이 협력하여 동작한다.
몇몇 실시형태에서 설명되는 바와 같은 머신 러닝 및 보안 러닝을 위한 애플리케이션은, 예를 들면, 식별자의 트레이닝 세트와의 유사성에 기초하여 클러스터를 식별하기 위한 고객 식별자의 서브세트를 포함하는 머신 러닝 모델 아키텍처에 의한 데이터 구조의 생성을 포함한다. 예를 들면, 식별자의 트레이닝 세트는 고수익 충성 고객을 포함할 수 있고, 트레이닝된 모델 아키텍처는, 트레이닝 세트 내에 있지 않지만, 그러나 잠재적인 타깃으로서 간과될 수도 있는 타깃 고객을 식별하기 위해 활용될 수 있다. 이 예에서는, 미승인 사용자에 의해 이루어지는, 민감한 고객 데이터를 포함할 수 있는 기저의 데이터의 어떠한 미승인 액세스도 존재하지 않는 것을 보장하기 위해 보안 머신 러닝 데이터 아키텍처를 사용하는 보안 프로세싱이 사용된다. 보안 엔클레이브 프로세서는, 예를 들면, 상인이, 특히 그러한 상인이 고객 프로파일의 관리인(custodian)이 아닌 경우, 고객 프로파일을 전체적으로 보지 않을 것을 보장하기 위해 사용된다.
다른 실시형태에서, 엔클레이브 파티션은, 또한 애그리게이터 프로세서로부터 트레이닝된 모델에서 업데이트된 파라미터를 수신하는 것과는 대조적으로, 엔클레이브 파티션이 결정된 파라미터를 서로 간에 공유할 수 있도록 병렬 동작 동안 서로와의 상호 접속을 가지도록 구성된다.
하나의 양태에 따르면, 프로세서의 신뢰성 있는 실행 환경(Trusted Execution Environment: TEE) 내에서 데이터를 프로세싱하기 위한 시스템이 제공된다. 시스템은 다음의 것을 포함할 수도 있다: 파트너의 아이덴티티를 검증하고 아이덴티티의 상기 검증시 파트너에게 통신 키를 발행하기 위한 신뢰 매니저 유닛(trust manager unit); 통신 키를 사용하여 암호화되는 암호화된 데이터를 파트너로부터 수신하기 위한 적어도 하나의 인터페이스; 저장 키(storage key)와 함께 암호화된 데이터를 저장하기 위한 그리고 TEE 내에서 암호화된 데이터의 미승인 액세스를 방지하기 위한 TEE 내의 보안 데이터베이스; 및 암호 해제된 데이터에 기초하여 추천을 생성하기 위해 암호화된 데이터를 암호 해제하고 분석하기 위한 추천 엔진(recommendation engine).
다른 양태에 따르면, 프로세서의 신뢰성 있는 실행 환경(TEE) 내에서 데이터를 프로세싱하기 위한 컴퓨터 구현 방법이 제공된다. 방법은 다음의 것을 포함할 수도 있다: 파트너의 아이덴티티를 검증하는 것; 아이덴티티의 상기 검증시 파트너에게 통신 키를 발행하는 것; 통신 키를 사용하여 암호화되는 암호화된 데이터를 파트너로부터 수신하는 것; TEE 내에서 암호화된 데이터의 미승인 액세스를 방지하기 위해 암호화된 데이터를 저장 키와 함께 저장하는 것; 및 암호 해제된 데이터에 기초하여 추천을 생성하기 위해 암호화된 데이터를 암호 해제하고 분석하는 것.
다른 양태에 따르면, 보호된 메모리 영역을 갖는 컴퓨터 판독 가능 메모리는 DRAM 상에 저장된다.
다른 양태에 따르면, 보호된 메모리 영역을 컴퓨터 판독 가능 캐시 메모리로 암호 해제하는 데 필요한 키는 보안 엔클레이브 데이터 프로세서 내에 저장되고 보안 엔클레이브 데이터 프로세서 외부에서는 액세스 불가능하다.
다른 양태에 따르면, 보호된 메모리 영역을 컴퓨터 판독 가능 캐시 메모리로 암호 해제하는 데 필요한 키는, 원래, 넌스 항(nonce term)을 가지고 생성되고, 넌스 항은 보안 엔클레이브 데이터 프로세서 내에 저장되고 보안 엔클레이브 데이터 프로세서 외부에서는 액세스 불가능하다.
다른 양태에 따르면, 시스템의 보안성의 유효성을 확인하기 위해 보안 엔클레이브 데이터 프로세서에 의해 원격 증명 프로세스(remote attestation process)가 주기적으로 행해지고, 원격 증명 프로세스는, 디피 헬만(Diffie Hellman) 메시지를 포함하는 원격 증명 페이로드(remote attestation payload)를 보안 엔클레이브 데이터 프로세서로 송신하는 것을 포함한다.
다른 양태에 따르면, 시스템의 보안성의 유효성을 확인하기 위해 보안 엔클레이브 데이터 프로세서에 의해 원격 증명 프로세스가 주기적으로 행해지고, 원격 증명 프로세스는, 보안 엔클레이브 데이터 프로세서가 원격 증명 트랜스크립트 데이터 구조(remote attestation transcript data structure)를 생성하는 것 및 원격 증명 트랜스크립트 데이터 구조를, 부호가 있는 챌린지 페이로드(signed challenge payload) 및 새로운 디피 헬만 메시지 페이로드와 함께 송신하는 것을 포함한다.
다른 양태에 따르면, 보안 엔클레이브 데이터 프로세서는 다음의 것을 제공하도록 구성된다: 하나 이상의 보안 엔클레이브 서브 프로세서를 프로비저닝하도록 그리고 하나 이상의 보안 엔클레이브 서브 프로세서의 각각에 보호된 메모리 영역의 파티션을 송신하도록 구성되는 파티션 컨트롤러 엔진(partition controller engine); 하나 이상의 보안 엔클레이브 서브 프로세서는, 하나 이상의 파라미터 업데이트 데이터 구조를 생성하기 위해 머신 러닝 데이터 모델 아키텍처의 로컬 사본(local copy)을 사용하여 보호된 메모리 영역의 대응하는 파티션을 프로세싱하도록 구성됨; 하나 이상의 보안 엔클레이브 서브 프로세서의 각각으로부터, 하나 이상의 파라미터 업데이트 데이터 구조를 수신하도록, 그리고 머신 러닝 데이터 모델 아키텍처의 적어도 하나의 파라미터를 개선하기 위해 하나 이상의 파라미터 업데이트 데이터 구조를 프로세싱하도록 구성되는 파티션 집성 엔진(partition aggregation engine)으로서, 머신 러닝 데이터 모델 아키텍처는 머신 러닝 데이터 모델 아키텍처의 대응하는 로컬 사본을 업데이트하기 위해 하나 이상의 보안 엔클레이브 서브 프로세서로 분배되는, 파티션 집성 엔진.
이제, 실시형태가 첨부의 도면을 참조하여, 단지 예로서, 설명될 것인데, 도면에서:
도 1은, 몇몇 실시형태에 따른, 보안 소비자 데이터를 프로세싱하기 위한 예시적인 플랫폼을 예시하는 블록도이다;
도 2a는, 몇몇 실시형태에 따른, 보안 트랜잭션 데이터를 프로세싱하기 위한 플랫폼 상의 예시적인 (가상의) 클린 룸((Virtual) Clean Room)의 개략도이다;
도 2b는, 몇몇 실시형태에 따른, 보안 트랜잭션 데이터를 프로세싱하기 위한 플랫폼 상의 다른 예시적인 클린 룸의 개략도이다;
도 3은, 몇몇 실시형태에 따른, 플랫폼 상의 클린 룸의 다른 개략도이다;
도 4는, 몇몇 실시형태에 따른, 예시적인 플랫폼의 파트너와 신뢰 매니저 사이의 원격 증명 프로세스를 예시하는 개략도이다;
도 5는, 몇몇 실시형태에 따른, 예시적인 플랫폼으로부터의 보안 및 암호화 유닛의 개략도이다;
도 6은, 몇몇 실시형태에 따른, 예시적인 플랫폼의 또 다른 개략도이다;
도 7은, 몇몇 실시형태에 따른, 예시적인 플랫폼으로부터의 데이터 모델링 유닛 및 데이터 스토리지 유닛의 개략도이다;
도 8은, 몇몇 실시형태에 따른, 예시적인 플랫폼으로부터의 마스터 노드 및 워커 노드(worker node)의 개략도이다;
도 9는, 몇몇 실시형태에 따른, 다양한 노드에 대한 예시적인 작업 할당(job assignment)을 도시한다;
도 10은, 몇몇 실시형태에 따른, 보안 엔클레이브에 대한 예시적인 메모리 구조를 도시한다;
도 11a는, 몇몇 실시형태에 따른, 예시적인 리소스 관리 구조를 도시한다;
도 11b는, 몇몇 실시형태에 따른, 리소스 관리 데이터 프로세스에 대한 예시적인 개략도를 도시한다;
도 12는, 몇몇 실시형태에 따른, 예시적인 플랫폼을 구현하기 위해 사용되는 컴퓨팅 디바이스의 개략도이다;
도 13은, 몇몇 실시형태에 따른, 예시적인 플랫폼에 의해 실행되는 예시적인 프로세스를 예시한다; 그리고
도 14는, 몇몇 실시형태에 따른, 보안 트랜잭션 데이터를 프로세싱하기 위한 플랫폼 상의 예시적인 클린 룸의 다른 개략도를 예시한다;
도 15는, 몇몇 실시형태에 따른, 보안 트랜잭션 데이터를 프로세싱하기 위한 클린 룸을 포함하는 분산 시스템의 또 다른 개략도를 예시한다.
도 16은, 리소스 매니저로서 YARN을 사용하여, 데이터 분석을 구현하는 예시적인 Spark(스파크) 프레임워크를 예시한다.
도 17은 Spark 프레임워크 하의 예시적인 실행기 구조(executor structure)를 도시한다.
도 18은 Spark 프레임워크 하에서 드라이버 애플리케이션과 협력하는 예시적인 실행기 구조를 도시한다.
도 19는, 몇몇 실시형태에 따른, 머신 러닝 아키텍처 및 데이터 플로우의 예시적인 블록 개략도이다.
도 20은 상이한 계층(tier)의 고객에 대한 리소스 할당을 도시하는 예시적인 예시이다.
도 21은, 몇몇 실시형태에 따른, 두 개의 상이한 데이터 세트의 고객 사이의 크로스 오버 및 타깃팅 기회의 영역을 도시하는 예시적인 벤 다이어그램이다.
도 22는, 몇몇 실시형태에 따른, 생성된 추천을 나타내는 그래픽 위젯을 도시하도록 적응되는 그래픽 사용자 인터페이스의 예시적인 렌더링이다.
도 23은, 몇몇 실시형태에 따른, 생성된 추천을 나타내는 그래픽 위젯 바를 도시하도록 적응되는 그래픽 사용자 인터페이스의 예시적인 렌더링이다.
도 24는, 몇몇 실시형태에 따른, 예시적인 생산 환경 및 데이터 플로우의 예시이다.
본 명세서에서 설명되는 예시적인 실시형태의 완전한 이해를 제공하기 위해, 다수의 특정한 세부 사항이 기술되는 것이 인식될 것이다. 그러나, 본 명세서에서 설명되는 실시형태는 이들 특정한 세부 사항이 없어도 실시될 수도 있음이 기술 분야의 숙련된 자에 의해 이해될 것이다. 더구나, 이 설명은 본 명세서에서 설명되는 실시형태의 범위를 어떤 식으로든 제한하는 것으로 간주되지 않아야 하며, 오히려, 본 명세서에서 설명되는 다양한 예시적인 실시형태의 구현예를 설명하는 것에 불과한 것으로 간주되어야 한다.
실시형태는, 데이터 세트의 향상된 보안성 및 프라이버시를 위해 적응되는 특수한 컴포넌트 및 회로부(circuitry)를 구비하는, 컴퓨터를 비롯한 기술적 디바이스를 사용하여 구현된다. 본 명세서에 언급되는 바와 같이, 실시형태는 보안 엔클레이브 데이터 프로세서 및 보호된 메모리 영역을 갖는 컴퓨터 판독 가능 메모리와 연계한 그 사용에 관한 것이다.
보안 엔클레이브 데이터 프로세서는, 몇몇 실시형태에서, 파트너 조직 또는 데이터 소스에 고유한 키를 사용하여 암호화될 수도 있는, 특정한 데이터 소스로부터(예를 들면, 파트너 조직으로부터) 수신되는 데이터 세트를 안전하게 저장하고 암호화하기 위해 보호된 메모리 영역과 인터페이싱한다. 한 실시형태에서, 키는 미리 생성되고 파트너 조직 또는 데이터 소스와 관련될 수도 있다. 다른 실시형태에서, 시스템은 데이터 세트를 보호된 메모리 영역으로 로딩하는 데 새로운 키가 필요로 되는 경우, 키 생성 세러머니(generation ceremony)를 수행하는 키 생성기를 포함할 수도 있다.
본 명세서에 언급되는 바와 같이, 특정한 컴퓨팅 디바이스 또는 데이터 소스에 고유한 데이터 세트가 로딩된다. 몇몇 실시형태에서, 로딩은(load), 키가 파괴되거나 또는 암호화 키가 특정한 컴퓨팅 디바이스 또는 데이터 소스로 다시 제공되지 않도록 일방향이다. 변형 실시형태에서, 일방향 로딩은 트레이닝을 위해 또는 다르게는 데이터 프로세싱 또는 머신 러닝 데이터 모델 아키텍처로의 통합을 위해 로딩되는 데이터를 사용할 수 있는데, 그 이후 데이터는 삭제된다(예를 들면, 데이터는 트레이닝을 위해서만 사용된다).
다른 실시형태에서, 로딩은 양방향일 수 있고, 그에 의해, 특정한 컴퓨팅 디바이스 또는 데이터 소스가 그 자신의 데이터 세트를 추출할 수 있거나 또는 이전에 제공된 데이터 세트 내의 데이터를 수정할 수도 있다. 대안적인 실시형태에서, 출력 데이터 구조는 데이터 세트 내의 데이터에 대한 수정일 수 있고(예를 들면, 메타데이터를 사용하여 데이터 세트를 확장함), 데이터 세트의 추출은, 데이터의 확장된 버전 또는 다르게는 향상된 버전을 생성하기 위해 사용될 수 있다(예를 들면, 고객 데이터가 프로비저닝되고, 추정된 고객 타입 분류 문자열을 나타내는 증강된 고객 데이터가 추출된다). 어떤 당사자에게도 기저의 데이터 세트에 대한 액세스를 제공하지 않고도, 트레이닝되지 않은 머신 러닝 데이터 모델 아키텍처가 로딩될 수 있고 트레이닝된 머신 러닝 데이터 모델 아키텍처가 추출될 수 있도록, 머신 러닝 데이터 모델 아키텍처는 또한, 몇몇 실시형태에서, 로딩되거나 또는 언로딩될 수 있다.
소비자는 그들이 금융 상품(예를 들면, 신용 카드 또는 로열티 멤버십 카드)을 사용하여 구매를 행할 때 금융 기관 및 판매자를 소정 레벨 신뢰하고, 그 결과, 트랜잭션 데이터와 같은 그들의 개인 정보는 소비자의 명시적인 동의 없이는 다른 당사자에게 노출되지 않을 것이다. 동시에, 소비자는 일반적인 추천보다 개인 맞춤된 제안에 더 잘 반응한다. 은행 및 상인은, 소비자 프라이버시의 보호가 그들에게 가장 중요하기 때문에, 일반적으로 소비자 데이터를 다른 조직과 공유하기를 꺼린다.
또한, 심지어 소비자로부터의 명시적인 동의가 있더라도, 은행과 상인은, 다른 당사자가 공유 데이터에 대한 통제권 또는 소유권을 상실할 수도 있기 때문에, 다른 당사자와 소비자 데이터를 공유하는 것을 여전히 꺼려한다. 특정한 데이터 소스로부터 수신되는 데이터 세트는, 다른 당사자가 데이터 세트에 액세스할 수 없도록 보호된 메모리 영역에 저장되지만, 그러나, 데이터 세트는, 출력 데이터 구조의 형태로 캡슐화되는 컴퓨터 생성 통찰력(insight) 및/또는 값의 생성을 위해 데이터 프로세싱 서브시스템에 의해 보호된 메모리 영역 내에서 액세스 가능하다. 몇몇 실시형태에서, 출력 데이터 구조는 트레이닝된 머신 러닝 데이터 모델 아키텍처를 역시 포함할 수 있다.
출력 데이터 구조는 쿼리 데이터 메시지에 응답하여 생성될 수도 있는데, 쿼리 데이터 메시지는, 몇몇 양태에서, 시스템이 프로세싱할 새로운 정보를 포함할 수 있거나, 또는 그 상에 저장되는 현존하는 정보를 보호된 메모리 영역에 집성하도록 지시받는 쿼리 요청일 수 있다.
예를 들면, 쿼리 데이터 메시지는 가상의 고객 프로파일로 지향되는 벡터를 제공할 수 있고, 트레이닝된 머신 러닝 데이터 모델 아키텍처는, 가상의 고객 프로파일이 제시된 제안을 따를 것이라는 것을 트레이닝된 머신 러닝 데이터 모델 아키텍처가 예측하는지의 여부를 나타내는 필드를 저장하는 데이터 구조를 출력할 수 있다.
다른 예에서, 쿼리 데이터 메시지는 어떠한 추가 정보도 포함하지 않을 수 있고, 오히려, 보호된 메모리 영역에 저장되는 정보에 집성되는 것에 기초한 또는 트레이닝된 머신 러닝 데이터 모델 아키텍처에 기초한 쿼리를 포함할 수도 있다. 예를 들면, 쿼리 데이터 메시지는 다음에 대한 것일 수도 있다: "일반적인 미국에서의 평균 시간 길이와 비교하여, 워싱턴 DC 지역의 소매점(retail store)에서 고객이 소비하는 평균 시간 길이는 얼마입니까?", 또는 트레이닝된 머신 러닝 데이터 모델 아키텍처가 있는 경우, "워싱턴 DC 지역에서 고객의 총 집성된 트랜잭션 거동에 기초하여 얼마나 많은 클러스터의 고객이 식별되는가?"(예를 들면, 클러스터의 수를 식별하기 위해 자율 모델(unsupervised model)이 사용되는 경우).
트랜잭션 데이터와 같은 개인 소비자 데이터를 프로세싱하기 위한 보안 플랫폼이 본 명세서에서 설명된다. 몇몇 실시형태에서, 플랫폼은, 각각의 파트너의 각각의 시스템으로부터, 트랜잭션 데이터("TXN 데이터"로도 지칭됨)를 포함하는 소비자 데이터를 수신하기 위해, 참가 파트너(예를 들면, 은행 및 상인)와 인터페이싱할 수도 있다. 소비자 데이터는 암호화 키를 사용하여 암호화될 수도 있다.
플랫폼은 수신된 소비자 데이터를 보안 영역("클린 룸"으로도 지칭됨)에 저장할 수도 있는데, 그 다음, 여기서 소비자 데이터는 암호 해제되고 분석되어 각각의 소비자에 대한 개인 맞춤된 제안을 생성한다. 파트너로부터의 수신된 소비자 데이터는, 규정된 목적을 위한, 즉, 예를 들면, 분석을 실행하고 제안을 생성하는 목적을 위한 클린 룸을 제외하면, 어떠한 다른 사용자, 시스템 또는 프로세스에 의해서도 액세스, 암호 해제, 또는 판독될 수 없다. 이 플랫폼은 암호화된 데이터에 대한 분석의 실행을 가능하게 하고, 소비자 데이터의 통제권 및 소유권의 상실 또는 약화와 관련한 은행 및 상인의 관심을 상승시키고, 소비자 데이터의 프라이버시를 보호하는 기능을 한다. 몇몇 실시형태에서, 플랫폼을 호스팅하는 컴퓨터의 소유자는 입력 또는 출력 데이터에 관한 어떤 것도 보거나 또는 추론할 수 없을 수도 있다.
몇몇 실시형태에서, 클린 룸은 프로세서(예를 들면, CPU)의 신뢰성 있는 실행 환경(TEE) 내의 하나 이상의 보안 엔클레이브 내에서 구현되는데, 여기서 데이터 모델은 임의의 레벨의 분석을 행하도록 트레이닝 및 실행될 수도 있다. 클린 룸 내에 저장되는 데이터의 적절한 암호화 및 암호 해제를 보장하기 위해, 키 관리 성능이 또한 준비가 된다.
본 명세서에서 설명되는 실시형태는, 향상된 프라이버시 및 보안과 관련되는 기술적 도전 과제를 극복하도록 적응되는 기술적 솔루션에 관한 것이다. 특히, 향상된 프라이버시 및 보안 조치를 갖는 향상된 머신 러닝 데이터 아키텍처의 동작과 관련하여, 보안 엔클레이브와 같은 보안 프로세싱 기술을 활용하는 시스템, 방법, 및 컴퓨터 판독 가능 매체가 설명된다.
상기에서 설명되는 바와 같이, 이들 향상된 프라이버시 및 보안 조치는, 예를 들면, 암호화 및 암호 해제 요건이 다양한 상황에서 이용 가능한 총 컴퓨팅 리소스를 감소시키기 때문에, 증가된 기술적 도전 과제로 이어진다. 특정한 양태는 보안 프로세서만을 사용하여 수행되는 것을 필요로 하고 데이터 엘리먼트는 보안 프로세싱 환경 외부에 있는 동안 암호화된 포맷으로만 저장되는 것을 필요로 할 수도 있다는 요건에 기인하여 컴퓨팅 리소스는 제한될 수도 있다.
도 1은, 몇몇 실시형태에 따른, 네트워크(150)를 통해 보안 소비자 데이터를 수신하고 프로세싱하기 위한 예시적인 전자 트랜잭션 플랫폼(100)을 예시하는 블록도이다. 소비자 데이터는 은행 시스템(들)(112) 및 상인 시스템(들)(113)을 포함할 수도 있는 파트너 시스템(들)(115)으로부터 수신될 수도 있다. 도 2 및 도 3은 플랫폼(100) 상에서 구현되는 예시적인 클린 룸(300)의 개략도를 제공한다.
프로세싱 디바이스(101)는 메모리(109) 내의 명령어를 실행하여 다양한 컴포넌트 또는 유닛(120, 121, 122, 123, 124, 125)을 구성할 수 있다. 프로세싱 디바이스(101)는, 예를 들면, 마이크로프로세서 또는 마이크로컨트롤러, 디지털 신호 프로세싱(digital signal processing: DSP) 프로세서, 집적 회로, 필드 프로그래머블 게이트 어레이(field programmable gate array: FPGA), 재구성 가능 프로세서, 또는 이들의 임의의 조합일 수 있다. 프로세싱 디바이스(101)는 메모리(109), 데이터 스토리지(108), 및 다른 스토리지(111)를 포함할 수도 있다. 몇몇 실시형태에서, 프로세싱 디바이스(101)는 신뢰성 있는 실행 환경(TEE)(103)으로 알려져 있는 보안 영역을 포함한다. TEE(103)는 메모리(109) 및 데이터 스토리지(108)를 포함할 수도 있고, 다양한 유닛 및 애플리케이션이 실행될 수도 있고 데이터가 프로세싱되고 저장될 수도 있는 격리된 환경이다. TEE(103) 내에서 실행되는 애플리케이션은, 메인 오퍼레이팅 시스템의 컴포넌트 및 애플리케이션으로부터 보호되는 동안, 프로세싱 디바이스(101)의 전체 성능을 활용할 수도 있다. TEE(103) 내의 애플리케이션 및 데이터는 원치 않는 액세스 및 무단 변경(tampering)에 대해, 심지어 프로세싱 디바이스(101)의 소유자에 대해서도, 보호된다. 몇몇 경우에, TEE(103) 내의 상이한 애플리케이션 및 데이터 스토리지는, 필요에 따라, 별개로 격리되고 서로 보호될 수도 있다.
몇몇 실시형태에서, TEE(103)의 보호된 메모리 영역(예를 들면, 보안 데이터 웨어하우스(secure data warehouse: 108))은 암호화의 사용을 통해 격리된다. 이 예에서, 암호화 키는 TEE(103) 그 자체 내에 저장되므로, 이것은 필요에 따라 데이터에 액세스할 수 있지만, 기저의 데이터는 커널 프로세스 또는 서버 상에서 동작하는 오퍼레이팅 시스템과 같은 다른 컴포넌트에 의해 액세스 가능하지 않게 된다. 대안적인 실시형태에서, 격리는 다른 컴포넌트로부터의 물리적 또는 전기적 회로 격리(isolation)의 사용을 통해 행해진다. 또 다른 대안적인 실시형태에서, 물리적 및 암호화 격리 둘 모두가 활용된다.
플랫폼(100)의 컴포넌트 및 데이터가 TEE(103) 내에서 유지되기 때문에, 그들은 TEE(103)에 의해 제공되는 격리 및 보안에 기인하여 미승인 액세스 및 무단 변경에 대해 잘 보호된다. 따라서, 파트너 시스템(115)은, 그들의 소비자 데이터가 다른 것에 의해 액세스되거나 또는 우연히 유출되지 않을 것이다는 확신을 갖는다. 하기에서 설명될 바와 같이, 각각의 파트너는, 임의의 데이터를 (예를 들면, 증명 프로세스를 통해) 플랫폼(100)으로 송신하기 이전에, TEE(103) 내의 플랫폼(100)이 안전하고 무단 변경이 없다는 것을 검증할 수도 있다. 따라서, 파트너 시스템(115)은 플랫폼(100)에서 높은 레벨의 신뢰를 가지며, 프로세싱을 위해 그리고, 결국에는, 현재의 그리고 미래의 고객에 대한 목표로 하는 추천 및 제안을 수신하기 위해, 그들의 소비자 데이터를 플랫폼(100)으로 더욱 기꺼이 전송할 것이다.
데이터 스토리지(108)는, 예를 들면, 적절한 용량의 하나 이상의 NAND 플래시 메모리 모듈일 수 있거나, 또는 하드 디스크 드라이브, 솔리드 스테이트 드라이브 등과 같은 하나 이상의 영구적 컴퓨터 스토리지 디바이스일 수도 있다. 몇몇 실시형태에서, 데이터 스토리지(108)는 암호화된 데이터를 호스팅하도록 구성되는 보안 데이터 웨어하우스를 포함한다.
메모리(109)는, 예를 들면, 정적 랜덤 액세스 메모리(static random-access memory: SRAM), 랜덤 액세스 메모리(random-access memory: RAM), 판독 전용 메모리(read-only memory: ROM), 전기 광학 메모리(electro-optical memory), 자기 광학 메모리(magneto-optical memory), 소거가능한 프로그래머블 판독 전용 메모리(erasable programmable read-only memory: EPROM), 전기적으로 소거 가능한 프로그래머블 판독 전용 메모리(electrically-erasable programmable read-only memory: EEPROM), 강유전체 RAM(Ferroelectric RAM: FRAM) 등과 같은 컴퓨터 메모리의 조합을 포함할 수도 있다.
몇몇 실시형태에서, TEE 내의 데이터는 데이터 스토리지(108), 메모리(109), 또는 이들의 어떤 조합에 저장될 수 있다.
데이터 스토리지(108)는, 원격 증명, 암호화 및 암호 해제를 위한 암호 키(cryptographic key)와 같은 TEE(103)와 관련되는 정보를 저장하도록 구성되는 보안 데이터 웨어하우스를 포함할 수도 있다. 데이터 스토리지(108)는 또한 트랜잭션 데이터를 포함하는 소비자 데이터와 같은 기밀 정보를 저장할 수도 있다. 스토리지(108) 및/또는 다른 스토리지(111)는 다양한 타입의 스토리지 기술을 사용하여 제공될 수도 있고, 관계형 데이터베이스, 비관계형 데이터베이스, 플랫 파일(flat file), 스프레드시트, 확장된 마크업 파일 등과 같은 다양한 포맷으로 저장될 수도 있다. 데이터 스토리지(108)는, 예를 들면, 다른 것들 중에서도, 보호된 메모리 영역을 로딩하기 위한 컴퓨터 판독 가능 캐시 메모리뿐만 아니라, 보호된 메모리 영역 그 자체를 포함할 수 있다. 데이터 스토리지(108)가 양방향 액세스를 위해 구성되는 경우, 데이터 스토리지(108)는 특정한 데이터 소스와 관련되는 컴퓨팅 디바이스에 의해 요청되는 액세스 이전에 데이터를 암호화하기 위해 특정한 데이터 소스에 대응하는 공개 키를 저장할 수도 있다.
데이터 스토리지(108)는, 몇몇 실시형태에서, 데이터 스토리지(108)에 대한 프로세싱 이후에 저장될 수도 있는 또는 저장되지 않을 수도 있는, TEE(103)에 의해 수신되는 데이터 세트에 기초하여 트레이닝되는 격리된 머신 러닝 데이터 모델 아키텍처를 유지한다. 예를 들면, 데이터가 프로세싱 및 트레이닝 이후에 데이터 스토리지(108) 상에서 저장되지 않는 경우, 더 적은 전체 스토리지가 필요로 되기 때문에 성능은 향상될 수 있다. 이것은, 데이터 세트가 특히 크거나 또는 방대한 경우에 유용하다. 다른 실시형태에서, 데이터 세트는 미래의 사용 또는 시간 범위 분석을 위해 보호된 메모리 영역의 데이터 스토리지(108)에 저장된다.
데이터 스토리지(108)는 또한, 추천 엔진(120)을 통해 상호 작용할 수 있는 출력 데이터 구조를 저장할 수 있는데, 출력 데이터 구조는 데이터 프로세싱 서브시스템에 의한 프로세싱에 의해 생성되는 필드값을 저장한다. 몇몇 실시형태에서, TEE(103)의 데이터 프로세싱 서브시스템은 대응하는 파트너 컴퓨팅 디바이스로부터 수신되는 데이터 세트의 집성체(aggregate)에 기초하여 생성되는 저장된 기능을 포함한다.
각각의 I/O 유닛(107)은 플랫폼(100)이 키보드, 마우스, 카메라, 터치 스크린 및 마이크와 같은 하나 이상의 입력 디바이스와, 또는 디스플레이 스크린 및 스피커와 같은 하나 이상의 출력 디바이스와 인터커넥트되는 것을 가능하게 한다. I/O 유닛(107)은 데이터 스토리지(108)로 데이터를 로딩/언로딩을 준비하기 위한 명령어를 수신하기 위해 사용될 수 있고, 데이터 스토리지(108)로 로딩하기 위한 데이터에 액세스하는 데 또는 다르게는 그 데이터를 암호 해제하거나 또는 유효성을 확인하는 데 필요한 특정한 액세스 키의 프로비저닝을 필요로 할 수도 있다.
I/O 유닛(107)은 또한, 다양한 출력 데이터 구조를 생성하기 위해 데이터 프로세싱 서브시스템을 트리거하는 쿼리 데이터 메시지를, 데이터 구조, 명령어 세트, 또는 쿼리 문자열로서 수신할 수 있다.
각각의 통신 인터페이스(105)는, 인터넷, 이더넷(Ethernet), 기존 전화 서비스(plain old telephone service: POTS) 회선, 공중 교환식 전화망(public switch telephone network: PSTN), 통합 서비스 디지털 네트워크(integrated services digital network: ISDN), 디지털 가입자 회선(digital subscriber line: DSL), 동축 케이블, 광섬유, 위성, 모바일, 무선(예를 들면, Wi-Fi(와이파이), WiMAX(와이맥스)), SS7 시그널링 네트워크, 유선, 근거리 통신망(local area network), 광역 네트워크(wide area network), 및 이들의 임의의 조합을 비롯한 다른 것을 포함하는 데이터를 전달할 수 있는 네트워크(또는 다수의 네트워크)에 연결되는 것에 의해, 플랫폼(100)이 다른 컴포넌트와 통신하는 것, 다른 컴포넌트와 데이터를 교환하는 것, 네트워크 리소스에 액세스하여 연결되는 것, 애플리케이션을 서빙하는 것, 및 다른 컴퓨팅 애플리케이션을 수행하는 것을 가능하게 한다.
플랫폼(100)은, 애플리케이션, 로컬 네트워크, 네트워크 리소스, 다른 네트워크 및 네트워크 보안 디바이스에 대한 액세스를 제공하기 이전에 (예를 들면, 로그인, 고유 식별자, 및 패스워드를 사용하여) 사용자를 등록하고 인증하도록 동작 가능할 수도 있다. 플랫폼(100)은 한 명의 사용자 또는 다수의 사용자를 서빙할 수도 있다. 몇몇 실시형태에서, 사용자의 자격 증명 정보(credential information)는 TEE(103) 내에 저장되어, 그들을 안전하게 만들고 파트너로부터의 높은 레벨의 신뢰를 보장한다.
도 2a는 보안 트랜잭션 데이터를 프로세싱하기 위한 플랫폼(100) 상의 예시적인 가상 클린 룸(Virtual Clean Room)(300)을 도시한다. 가상 클린 룸(300)은 VCR 또는 간단히 클린 룸(300)으로 지칭될 수도 있다. 파트너 시스템(115)은 클린 룸(300)에 의해 생성되는 키를 사용하여 사용자 데이터(예를 들면, 소비자 트랜잭션 데이터)를 암호화하고, 그 다음, 암호화된 데이터를 보안 채널을 거쳐 클린 룸(300) 내의 보안 데이터 웨어하우스(108)로 송신할 수도 있다. 사용자 데이터는 보안 엔클레이브(133)에서만 암호 해제되어 프로세싱될 수 있다. 보안 엔클레이브(133) 내의 프로세스에 의해 생성되는 데이터 출력은, 그 다음, 암호화되어 보안 데이터 웨어하우스(108) 내에 저장된다.
보안 엔클레이브(133)는 단일의 보안 엔클레이브에 암호화된 데이터세트를 저장하도록 그리고 하나 이상의 분석 알고리즘을 실행하도록 구성될 수도 있다. 보안 엔클레이브(133)는 또한 다수의 보안 엔클레이브 및 CPU를 편성하기(orchestrate) 위해 클러스터 관리를 구현할 수도 있다. 본 명세서에 언급되는 바와 같이, 몇몇 실시형태에서, 파티션은, 머신 러닝 데이터 모델 아키텍처의 로컬 버전을 활용하는 그리고 머신 러닝 데이터 모델 아키텍처의 전역적 버전(global version)을 주기적으로 업데이트하기 위해 파라미터 업데이트를 전달하는 하나 이상의 보안 엔클레이브 서브 프로세서로부터의 모델 데이터 아키텍처 업데이트를 추적하기 위해 활용되어, 머신 러닝 데이터 모델 아키텍처의 트레이닝 프로세스를 효과적으로 병렬화하는데, 이것은 수렴이 가능한 경우 수렴 속도가 향상시킨다.
예를 들면, 보안 엔클레이브(133)는 파트너 시스템(133)으로부터의 민감한 데이터의 안전한 저장을 제공할 수 있고, 적절한 그리고 안전한 키 관리 시스템을 사용하여 암호화된 데이터를 암호 해제할 수 있는 플랫폼(100) 상의 유일한 컴포넌트이다. 보안 엔클레이브(133)는 또한 암호 해제된 데이터에 대한 분석을 실행하고 출력을 제공하기 위해 구현될 수 있다. 출력은 보안 엔클레이브(133) 외부로 송신되기 이전에 암호화될 수도 있다.
몇몇 실시형태에서, 데이터의 하나 이상의 세트는 파트너 시스템(115)에서 데이터 세트를 형성할 수도 있다. 데이터 세트는 보안 엔클레이브(133)에 의해 생성되는 키를 사용하여 파트너 시스템(115)에 의해 암호화되고, 그 다음, 클린 룸(300)으로 송신되고, 후속하여, 보안 데이터 웨어하우스(108)에 저장될 수도 있다. 워커 애플리케이션(worker application)에 의해 암호화된 데이터에 대한 분석이 실행될 수도 있다. 워커 애플리케이션은 상기 분석을 실행하기 이전에 적절한 암호 해제 키를 사용하여 데이터를 암호 해제할 수도 있다. 일단 분석이 완료되면, 출력 데이터가 생성될 수도 있다. 몇몇 경우에, 출력 데이터는 암호화될 수도 있다. 클린 룸(300)은, 플랫폼(100)에서, (i) 암호화된 데이터를 저장할 수 있는 그리고 (ii) 분석의 목적을 위해 암호 해제할 수 있는 유일한 엔티티일 수도 있고, 그 결과, 클린 룸(300) 외부의 어떠한 사람, 시스템, 또는 프로세스도 보안 엔클레이브(133)에 액세스할 수 없다.
오퍼레이팅 시스템/커널 시스템이 하드웨어 레벨 보안성을 사용하는 것에 의해 암호 해제된 엔클레이브 콘텐츠에 액세스할 수 없기 때문에, 보안 엔클레이브(133)는 관리자로부터 데이터를 보호한다.
도 10은, 몇몇 실시형태에 따른, 보안 엔클레이브(133)에 대한 예시적인 메모리 구조를 도시한다. 보안 엔클레이브만이 보호된 메모리 영역을 DRAM으로부터 로딩할 수 있다(모든 다른 애플리케이션은 캐시 매니저로부터 캐시 에러를 얻게 된다).
DRAM 상의 엔클레이브 데이터는 암호화되고 특별한 명령어를 사용하여 캐시로 로딩되는 경우에만 암호 해제되며, 따라서, 엔클레이브 데이터는 관리자, OS/커널 시스템/프로세스 및 외부 엔티티로부터 보호된다. 암호 해제 키에 대한 액세스는 제한되며, 몇몇 실시형태에서, 인간 분석가에 의한 액세스 가능성 없이 보안 엔클레이브(133) 내에서만 이용 가능하다.
인간 분석가는, 예를 들면, 대응하는 키 쌍을 사용하여 데이터의 로딩/단일의 데이터 소스와 관련되는 데이터의 유효성 확인/언로딩을 제어하는 것, 또는 트레이닝되지 않은 또는 트레이닝된 머신 러닝 데이터 모델 아키텍처의 로딩/언로딩을 제어하는 것에 의해, 보안 엔클레이브(133)와 상호 작용할 수 있다. 본 명세서에 언급되는 바와 같이, 보안 엔클레이브(133)가 다른 당사자에 의한 기저의 데이터 세트에 대한 액세스를 방지하도록 적응되기 때문에, 보안 엔클레이브(133)는 기저의 데이터 프로세싱 서브시스템, 또는 몇몇 실시형태에서, 격리된 머신 러닝 데이터 모델 아키텍처에 대한 블랙 박스 액세스(black-box access)를 효과적으로 제공한다.
이제 도 2b를 참조하면, 클린 룸 애플리케이션(300)은 플랫폼(100) 상에서 구현될 수도 있고, 은행 시스템(112) 및 상인 시스템(113)과 같은 복수의 파트너로부터 하나 이상의 데이터 세트를 수신할 수도 있다. 은행 시스템(112)은 소비자에 의해 소유되는 하나 이상의 금융 상품(예를 들면, 신용 카드)에 관련되는 소비자 데이터를 가질 수도 있다. 상인(113)은 하나 이상의 트랜잭션에 관련되는 소비자 데이터를 가질 수도 있다. 소비자가, 예컨대 구매 트랜잭션 동안, 상인에게 금융 상품을 사용할 때마다, 다양한 데이터가 송신되고 은행 시스템(112) 및 상인 시스템(113)에서 저장된다.
예를 들면, 은행은, 트랜잭션과 관련하여, 다음의 것을 포함하는 복수의 트랜잭션 데이터(210a, 210b, 210c)를 가질 수도 있다: 트랜잭션의 데이터 및 시간, 트랜잭션이 발생한 상인의 이름 및 위치, 상인과 관련되는 상인 카테고리 코드(Merchant Category Code: MCC), 은행 이름 및 ID, 금융 상품의 마스킹된 주 계좌 번호(primary account number: PAN), 트랜잭션 동안 금융 상품에 청구되는 금액, 및 트랜잭션의 끝에서 은행에 의해 전송되는 다중 문자 코드인, 트랜잭션에 대한 인증 코드(authorization code).
다른 예를 들면, 상인은, 트랜잭션과 관련하여, 트랜잭션의 데이터 및 시간, 트랜잭션이 발생한 상인의 이름 및 위치, 트랜잭션 동안 판매되는 제품 또는 서비스의 재고 유지 단위(stock keeping unit: SKU), 및 판매되는 각각의 SKU에 대한 수량 또는 금액과 같은 복수의 트랜잭션 데이터(230a, 230b, 230c)를 가질 수도 있다.
몇몇 경우에, 상인(113)은 물리적인 소매점을 가지지 않을 수도 있다. 예를 들면, 상인은 웹 기반의 소매 업체이고 온라인에서 트랜잭션을 행할 수 있다.
클린 룸(300)은 트랜잭션 데이터(210a, 210b, 210c, 230a, 230b, 230c)와 같은 다양한 소비자 데이터를, 은행 시스템(112), 상인 시스템(113), 및 다른 타입의 파트너 시스템(115)(예를 들면, 은행이 아닌 금융 기관)으로부터 수신할 수도 있고, 소비자 데이터에 기초하여 개인 맞춤된 제안과 같은 추천 및 제안을 생성할 수도 있다. 추천 및 제안은 판매 시점(Point-of-Sale: POS)에 또는 온라인에서의 상환(redemption)을 위해 파트너에게 및/또는 소비자에게 직접적으로 전송될 수도 있다. 몇몇 실시형태에서, 추천 및 제안은, 소비자가 적극적으로 동의하고 옵트인(opt-in)을 선택하는 경우에만 생성될 수도 있다. 파트너가 참가할 것을 선택하고 플랫폼(100)에 의해 제공되는 기술을 사용하면, 그 다음, 플랫폼(100)에 의한 적절한 추천 및 제안의 생성을 위해 소비자의 데이터를 사용하기 위한 적절한 그의 또는 그녀의 동의를 파트너가 획득하였다는 것이 일반적으로 가정될 수도 있다.
몇몇 실시형태에서, 파트너는 소비자와의 파트너의 통신 채널(들)을 통해 그들의 데이터를 저장하기 위해 한 명 이상의 소비자에게 동의를 요청해야 할 수도 있다. 예를 들면, 파트너 모바일 또는 웹 기반의 애플리케이션의 약관(terms) 및 서비스는, 소비자가 모바일 또는 웹 기반의 애플리케이션을 사용할 때 동의가 주어진다는 것을 나타낼 수도 있다. 상인 가게에서, 지불 또는 POS 단말 상의 프롬프트를 통해 동의가 요청되고 주어질 수 있다.
이제, 몇몇 실시형태에 따른, 플랫폼(100) 상의 클린 룸(300)의 다른 개략도를 도시하는 도 3을 참조한다. 클린 룸(300)은 프로세서(101)의 내부 메모리(109)에 수용되는 보안 환경이다. 그것은, 데이터를 안전하고 보안성 있게 저장, 암호 해제 및 프로세싱하기 위해, 칩 제조사에 의해 제공되는 보안 프로세싱 하드웨어에 기초하여 개발되는 보안 엔클레이브(133)를 포함할 수도 있다.
클린 룸(300)은 소비자 데이터를 수신, 저장, 암호화 및 암호 해제할 수도 있다. 플랫폼(100)은 파트너 시스템(115)이 사람, 시스템 또는 프로세스에 의한 미승인 액세스의 우려 없이 암호화된 데이터를 공유하고 클린 룸(300)으로 송신하는 것을 허용할 수도 있다. 클린 룸(300)은, 사용자에게, 파트너 시스템에 의해 제공되고 있는 데이터에 대한 제어 및 그들의 동의를 제공하고, 특정한 결과를 생성하기 위해 데이터가 사용될 방법을 인식할 수 있다. 클린 룸(300)은 또한, 파트너 시스템이 사람, 시스템 또는 프로세스에 의한 데이터의 미승인 액세스의 우려 없이 암호화된 데이터를 클린 룸으로 전송하는 것을 허용한다.
보안 및 암호화 유닛(125)은, 소비자 데이터를 수신 및 프로세싱하기 위해 클린 룸(300)을 검증 및 보증하도록, 소비자 데이터를 전송하는 각각의 파트너가 인증되어 있다는 것을 검증하도록, 그리고, 적절한 경우, 소비자 데이터를 암호화, 암호 해제, 정리, 정규화 및 저장하도록 구성될 수도 있다.
추천 엔진(120)은 파트너 시스템(115)으로부터 수신되는 소비자 데이터에 기초하여 추천 및 제안을 생성하도록 구성될 수도 있다. 추천 및 제안은 일반적일 수도 있거나 또는 겨냥될 수도 있다. 추천 및 제안은 소비자의 그룹을 타깃으로 하거나, 또는 특정한 소비자에 대해 개인 맞춤될 수도 있다. 몇몇 실시형태에서, 추천(분석) 엔진은 개인 맞춤된 그리고 관련된 상인 제안을 서빙하는 목적을 위해 파트너 데이터를 모델링할 수도 있다. 엔진(120)은 데이터 모델(들)을 활용하여 소비자에게 배치식(batched) 또는 트리거식(triggered)(예를 들면, 위치 기반의) 개인 맞춤된 제안을 제공할 수도 있다.
몇몇 실시형태에서, 머신 러닝 알고리즘 및 SQL Query(SQL 쿼리)는 엔클레이브된 환경(enclaved environment)에서 엔진(120)에 의해 구현될 수도 있다. 예를 들면, Anjuna Security™ 및 H2O™을 사용한다.
각각의 생성된 추천 또는 제안에 대한 소비자의 목록을 생성하기 위해 오디언스 빌더 유닛(audience builder unit)(121)이 구성될 수도 있다. 소비자의 목록은 한 명 이상의 소비자를 포함할 수도 있다. 오디언스 빌더 유닛(121)은 연령, 위치, 결혼 상태, 상인 등과 같은 속성에 대한 타깃으로 된 오디언스를 정의할 수도 있다. 속성은 데이터 스토리지(108)에 저장되는 데이터 세트 내의 이용 가능한 변수에 상관될 수도 있다.
클라이언트 아이덴티티 및 동의 유닛(Client Identity and Consent unit)(122)은 클라이언트 아이덴티티 및 동의를 검증 및 확인하도록 구성될 수도 있다. 클라이언트 시스템은 소비자 데이터를 플랫폼(100)으로 송신하기 이전에 명시적인 동의를 제공하는 것을 필요로 할 수도 있다. 클라이언트 시스템은 암호화된 데이터와 관련하여 플랫폼(100)으로 쿼리를 전송하도록 그리고 플랫폼으로부터 응답을 수신하도록 구성되는 시스템일 수도 있다. 예를 들면, 클라이언트 시스템은 플랫폼(100)으로부터 프로세싱된 데이터를 찾도록 자격을 갖춘(즉, 적절한 퍼미션을 갖는) 파트너 포털(partner portal)(116)을 참조할 수도 있다.
POS/전자 상거래 상환 유닛(123)은 생성된 추천 및 제안을 판매 시점(POS)에 또는 온라인 기반의 전자 상거래 웹사이트에서 가망이 있는 소비자에게 제시하도록 구성될 수도 있다. 소비자가 POS 또는 전자 상거래 웹사이트에서 그것을 수락하는 경우 제안은 즉시 상환되도록 구성될 수도 있다.
조정 및 결제 유닛(124)은 하나 이상의 트랜잭션의 청산(clearing), 결제(settlement) 및 조정(reconciliation) 프로세스를 핸들링하도록 구성될 수도 있다.
몇몇 실시형태에서, 통신 링크(예를 들면, 도 3에서 링크 A)는 임의의 데이터 송신 이전에 파트너와 플랫폼(100) 사이에서 확립될 수도 있다. 통신 링크는, 링크를 사용하여 전송 또는 수신되는 임의의 데이터가 안전하고 제3자에 의해 인터셉트될 수 없도록, 종단간 암호화될 수도 있다.
몇몇 실시형태에서, 파트너는 통신 링크가 확립되고 안전하게 될 수도 있기 이전에 인증되는 것을 필요로 할 수도 있다. 통신 링크는 키를 사용하여 안전하게 될 수도 있다. 예를 들면, 통신 링크를 사용하여 송신될 모든 데이터는, 예를 들면, 키 또는 액세스 키로 지칭될 수도 있는 암호 해시 함수(cryptographic hash function)를 사용하는 암호화 알고리즘 또는 프로세스에 의해 암호화될 수도 있다.
그러한 암호 해시 함수는 일방향 해시 함수로서 알려져 있을 수도 있다, 즉, 그것은, 수학적으로 말하면, 반전하기가 거의 불가능할 수도 있다. 암호화 프로세스에 대한 입력 데이터는 "평문(plain text)", "입력" 또는 "메시지"로서 알려져 있을 수도 있고, 반면, 암호화 프로세스의 출력은 "출력", "해시 다이제스트(hash digest)", "다이제스트(digest)" 또는 "해시 값"으로 알려져 있을 수도 있다. 암호화는 적절한 해시 함수를 사용할 수도 있다. 몇몇 실시형태에서, 암호 해시 함수는 다음의 것 중 하나일 수도 있다: MD5, SHA1, 및 SHA2.
몇몇 실시형태에서, 통신 링크를 암호화하기 위해 공개-개인 키 쌍이 사용될 수도 있다. 즉, 일단 파트너의 아이덴티티가 검증 및 인증되면, 보안 및 암호화 유닛(125)은 파트너와의 통신 링크를 확립하고, 통신 링크를 사용하여 파트너에게 액세스 키(공개 키)를 전송할 수도 있다.
파트너는 통신 링크 상에서 송신되는 모든 데이터를 암호화하기 위해 액세스 키를 사용할 수도 있다. 클리어 룸(300)이 통신 링크를 통해 암호화된 데이터를 수신하는 경우, 그 데이터를 암호 해제하기 위해 대응하는 개인 키가 사용될 수도 있고, 따라서 그들은 상응하게 정리되고(cleaned), 정규화되고, 프로세싱될 수도 있다.
보안 및 암호화 유닛(125)은 미리 설정된 시간 지속 기간 이후 파트너에 대한 액세스 키를 취소하거나 또는 업데이트할 수도 있다. 보안 및 암호화 유닛(125)은 또한 파트너(들)에 의해 또는 관할권(jurisdiction)에 의해 액세스 키를 취소하거나 또는 업데이트할 수도 있다. 몇몇 실시형태에서, 보안 및 암호화 유닛(125)은 또한, 통신 링크가 종료되거나 또는 확립될 필요가 있을 때마다 액세스 키를 취소하거나 또는 업데이트할 수도 있다.
몇몇 실시형태에서, 통신 링크의 종단간 암호화에 추가하여 또는 그 대안으로서, 링크 암호화가, 예를 들면, 전송 레이어 보안(Transport Layer Security: TLS) 또는 보안 소켓 레이어(Secure Sockets Layer: SSL)과 같은 암호화 프로토콜을 사용하여 통신 링크에 적용될 수도 있다.
몇몇 실시형태에서, 파트너 시스템(115)이 임의의 데이터를 클리어 룸(300)으로 송신하기 이전에, 파트너는, 플랫폼(100)이 진짜이고 무단 변경되지 않았음을 검증할 것을 요청할 수도 있다. 이것은 원격 증명 프로세스에 의해 달성될 수도 있다. 원격 증명 프로세스는 플랫폼(100)이 그 자신을 인증하는 것 및 플랫폼(100) 및 클리어 룸(300)을 실행하기 위해 사용되는 하드웨어 및 소프트웨어가 신뢰 가능하고, 확실하며 무단 변경되지 않았음을 나타내는 것을 허용할 수도 있다.
파트너 시스템(115)과 플랫폼(100) 사이에서 데이터 전송 프로토콜이 적용될 수도 있다. 예를 들면, 정보 교환 프로토콜은 TLS/SSL과 유사한 애플리케이션 레이어 채널 암호화일 수도 있다. 세션의 시작 시, 두 당사자는 서로를 인증한다. 키 교환은 이 프로세스 상에서 피기 백(piggy-back)될 수도 있고, 따라서, 두 개의 공유된 키가 확립되는데, 각각은 한 당사자에서부터 다른 당사자로의 데이터 플로우에 대한 것이다.
데이터 암호화를 위해 키 교환 메커니즘이 사용될 수도 있다. 예를 들면, SECP256R1(PRIME256v1) 타원 곡선 상에서의 디피-헬먼 키 교환이 구현될 수도 있다. 이 키 교환의 결과는 256 비트의 공유된 임의성(randomness)이다. 이 공유된 비밀이 직접적으로 또는 그것의 SHA256 해시가 두 개의 스트림에 대한 두 개의 128 비트 AES 키로 나누어질 수 있다.
데이터는, 갈르아 카운터 모드(Galois Counter Mode)에서 AES 블록 암호를 적용하는 인증된 암호화 메커니즘인 AES-GCM(Advanced Encryption Standard-Galois/Counter Mode: 고급 암호 표준-갈르아/카운터 모드)에 의해 암호화될 수도 있다. 인증된 암호화의 사용은 당사자 사이에서 전달되는 데이터의 기밀성 및 진정성(authenticity)을 보장한다. GCM에 대해 사용되는 넌스(초기 벡터로 또한 지칭됨)는 12 바이트 길이인데, 모든 제로에서 시작하고 리틀 엔디안(little endian) 양식으로 각각의 메시지 이후 증분된다. 296개의 가능한 넌스가 소진되면, 대응하는 암호화 키가 "다 소모되고" 새로 협상된 것에 의해 대체된다. 몇몇 실시형태에서, 암호화는 296개의 가능한 넌스가 소진되는 것을 뒤따를 수도 있다.
인증 방법 및 악의적 입력
보안 통신 채널을 인증하고 확립하기 위해 원격 증명 메커니즘이 사용될 수도 있는데, 그에 의해, 원격 클라이언트(예를 들면, 파트너 시스템(115))는, 그들이 플랫폼(100)의 진짜의 손상되지 않은 프로세서 상에서 엔클레이브 모드에서 실행 중인 특정한 조각의 코드를 사용하여 통신하고 있다는 것을 보장할 수도 있다. 원격 증명은 또한 공개 키를 비 순응적 방식(non-malleable way)으로 클라이언트로 전송하기 위해 엔클레이브에 의해 사용될 수 있다. 이 메커니즘은 고도로 자명하지 않은(non-trivial) 그룹 서명에 의존하지만, 그러나 고도의 동료 재검토 연구(highly peer-reviewed research)에 또한 기초한다.
몇몇 실시형태에서, 클라이언트 또는 파트너 시스템은 플랫폼(100)과의 보안 암호화 채널을 확립하기 위한 모듈을 포함하는 Python(파이썬) 스크립트를 포함할 수도 있고, 입력 데이터를 클린 룸(300)에 의해 소비될 표준 형태로 변환할 수도 있다.
원격 증명은 분석 서비스에서의 클라이언트의 신뢰의 근간을 구성할 수도 있다. 그것이 키 교환과 통합될 수도 있는 세 가지 방식이 존재한다:
1. 매번, 또는 클라이언트당 적어도 한 번 원격 증명을 수행한다. 이 경우, 엔클레이브는 장 수명의 공개 키를 가지지 않을 것이고, 원격 증명의 페이로드 상에 디피 헬만 메시지를 직접적으로 배치할 것이다.
2. 원격 증명 트랜스크립트를 제시하기 위한 엔클레이브. 원격 증명은 본질적으로, 상호 작용하는 검증자만을 확신시키도록 설계되는 상호 작용 프로토콜이다. 그러나, 모든 검증자 도전 과제(verifier challenge)가 강력한 해시 함수를 사용하여 결정론적으로 생성되는 경우, 프로토콜은 비 상호 작용식(non-interactive) 프로토콜로 전환되는데, 이를 통해 단일의 실행이 임의의 수의 검증자를 확신시킬 수 있다. 이 변환은 피아트-샤미르 휴리스틱(Fiat-Shamir Heuristic)으로 알려져 있다. 이렇게 변환된 프로토콜은 신뢰되지 않은 엔클레이브 호스트 그 자체에 의해 수행될 수 있다. 엔클레이브는, 공개 키 인증서와 유사한 이 프로토콜 트랜스크립트를 제시하는 것 및 원격 증명 트랜스크립트에 임베딩되는 공개 키에 의해 도전 과제 및 그것의 새로운 디피 헬만 메시지에 서명하는 것에 의해 인증한다.
3. 인증서: 클라이언트는 원격 증명 검증을 제3자에게 위임하고 그들에 의해 발행되는 인증서를 소비할 수 있다. 이것은 매우 유망한 옵션은 아니다.
클라이언트 또는 파트너 시스템은 플랫폼(100)에게 인증될 수도 있다. 인증은 데이터의 유입 제한을 제어하는 데 도움이 될 수도 있지만, 결코 시스템에 가비지 데이터를 주입하거나 또는 민감도 공격을 가중시킬 가능성을 제거하지는 않는다. 이들 공격은 짧은 노출을 장점으로 한다: 가비지를 주입하는 것은 시스템을 다운시키기 위해, 또는 공격자가 이익을 얻을 수도 있는 잘못된 분석 결과를 의도적으로 생성하기 위해 행해질 수 있다; 민감도 공격은 더욱 미묘하다.
공격자는, 그들이 제공하는 입력에서의 변화와 관련하여, 분석의 최종 결과가 어떻게 변하는지를 관찰할 수도 있고, 그들에게 제공되는 출력을 관찰하는 것을 통해, 설계자에 의해 의도된 당사자 이외의 다른 당사자에 의해 제공되는 데이터에 관한 더 많은 정보를 추론할 수도 있다. 몇몇 실시형태에서, 잠재적인 공격에 대응하기 위해, 제안 제시는 신중하게 이루어질 필요가 있고, 클라이언트 기관에 제시되는 정보는 제한될 수도 있다.
몇몇 실시형태에서, OpenSSL과 같은 라이브러리는 다음과 같은 고려 사항을 가지고 구현될 수도 있다: 최상의 엔클레이브 설계 관행은 단순성과 미니멀리즘을 필요로 한다. 따라서, 신뢰되지 않은 컴포넌트에 안전하게 위임될 수 있는 기능성(functionality)은 그대로 위임되어야 한다. SSL의 맥락에서, 대수적 대상(algebraic object)(예컨대, 공개 키 및 암호문)의 기본 표현(native representation)을 표준 표현으로의 변환 및 정책 검사는 그러한 태스크(task)이다.
앞서 논의되는 바와 같이, 서비스는, 2방향 SSL 연결에서 실시되는 것으로부터 벗어나는 방식으로 클라이언트에게 인증된다. 즉, 구현되는 그 대로의 SSL 명세는 사용자 정의 인증 프로토콜로의 모듈식 전환을 허용할 수도 있다.
도 4는 파트너 시스템(115)과 보안 및 암호화 유닛(125)의 신뢰 매니저 유틸리티(127) 사이의 원격 증명 프로세스를 예시하는 개략도를 도시한다. 단계(410)에서, 인증서 매니저 유틸리티(128)는 각각의 파트너에 대한 공개 키 인증서(129)를 발행할 수 있다. 인증서(129)는, 유입하는 데이터가 진짜라는 것을 신뢰 매니저(127)에 입증하기 위해 사용될 수도 있다.
단계(420)에서, 파트너 시스템(115)으로부터의 요청시, 신뢰 매니저(127)는 플랫폼(100)의 진정성을 검증하기 위해 파트너 시스템(115)과의 원격 증명 프로세스를 개시할 수도 있다. 파트너 시스템(115)으로부터의 요청은, 원격 증명의 목적을 위해 생성된 넌스 N(예측 불가능한 랜덤 값)을 포함할 수도 있다. 신뢰 매니저(127)는 넌스 N을 포함하는 요청을 수신하고, 이어서, 키 증명을 위해 넌스 및 요청을 플랫폼(100) 상의 신뢰성 있는 플랫폼 모듈(Trusted Platform Module: TPM)(135)로 전송한다.
TPM(135)은 하드웨어 기반의 보안 관련 기능을 제공하도록 설계된다. TPM(135)은, 자신을 무단 변경에 저항하게 만들기 위해 다수의 물리적 보안 메커니즘을 포함할 수도 있고, 다른 것들은 TPM(135)의 기능을 무단 변경할 수 없다.
TPM 키 증명은 각각의 TPM(135)에 고유한 보증 키(Endorsement Key: EK)를 사용하고 제조시 생성된다. EK에서의 신뢰는, TPM(135)에 있는 EK의 보안성이 있고 무단 변경을 방지하는 스토리지에 그리고 EK의 인증서가 TPM 제조사의 발행 인증 기관(Certificate Authority: CA)에 연결된다는 사실에 기초한다. 즉, EK의 인증서는 TPM 제조사의 발행 CA에 의해 암호화 방식으로 검증될 수 있다. 하나 이상의 증명 식별 키(Attestation Identify Key: AIK)가 TPM(135)에 의해 생성되고 EK를 사용하여 서명될 수도 있다. AIK는 신뢰성 있는 인증 기관에 의해 검증될 수 있다.
몇몇 실시형태에서, 신뢰 매니저(127)로부터 TPM(135)으로의 요청은 플랫폼(100)의 하나 이상의 현재의 플랫폼 구성 레지스터(Platform Configuration Register: PCR) 값을 포함한다. 요청은, 옵션 사항으로(optionally), TPM 버전 번호 또는 TPM(135)이 PCR 값에 서명하는 데 필요한 임의의 다른 정보를 포함할 수도 있다. PCR 값은 주로 시스템 측정치를 저장하기 위해 사용되며 임의적으로 덮어쓰기될 수 없다. PCR 값은, 계산적으로 위조가 불가능한 해시 값일 수도 있다. 몇몇 PCR 값은, 적절한 퍼미션을 필요로 할 디폴트 값으로 재설정될 수도 있다.
TPM(135)은 신뢰 매니저(127)로부터 요청을 수신하고 증명 식별 키(AIK)를 사용하여 PCR 값을 서명하도록 진행하고, 그 다음, 넌스, PCR 값 및 AIK를 포함하는 서명된 응답(Signed Response)을 신뢰 매니저(127)로 되전송한다. 신뢰 매니저(127)는, 그 다음, 서명된 응답을 파트너 시스템(115)으로 전송하는데, 파트너 시스템은 서명된 응답을 분석하고 검증하기 위한 그 상에 설치되는 파트너 포털(116)을 구비할 수도 있다.
파트너 시스템(115)은 서명된 응답을 수신하고, PCR 값 및 AIK 서명이 정확하다는 것을 검증하는 것에 의해 서명된 데이터가 진짜이고 신뢰할 수 있다는 것을 검증한다. 예를 들면, 파트너 시스템(115)은 신뢰성 있는 인증 기관을 통해 AIK가 유효하다는 것을 검증할 수도 있다. 다른 예를 들면, 파트너 시스템(115)은, PCR 값을 신뢰 레벨에 매핑하는 데이터베이스 내의 저장된 값에 PCR 값을 비교하는 것에 의해 그 값을 검증할 수도 있다. 파트너 시스템(115)은 또한, 서명된 응답 내의 넌스가, 증명을 위한 자신의 초기 요청에서 파트너에 의해 전송되는 넌스에 대응한다는 것을 체크하는 것에 의해 PCR 값이 현재라는 것을 검증할 수도 있다.
몇몇 실시형태에서, PCR 값 대신, 플랫폼(100)의 소프트웨어 코드의 해시 값과 같은 다른 해시 값이 사용될 수도 있는데, 여기서 해시 코드는 플랫폼(100)의 현재 상태를 나타낸다.
일단 파트너 시스템(115)이, 서명된 응답에 기초하여, 플랫폼(100) 상에서 실행되는 클리어 룸(300)이 진짜이고 신뢰할 수 있다는 것을 충족하면, 보안 통신 채널을 확립하기 위해, 단계(430)에서, SSL/TLS 핸드셰이크가 발생할 수도 있다.
단계(440)에서, 암호화된 데이터는 보안 통신 채널을 사용하여 파트너 시스템(115)으로부터 플랫폼(100)으로 송신될 수도 있다. 몇몇 실시형태에서, 데이터를 암호화하기 위해 공개-개인 키 쌍이 사용될 수도 있다. 본 명세서에서 설명되는 바와 같이, 보안 및 암호화 유닛(125)은 통신 채널을 사용하여 파트너 시스템(115)에 액세스 키(공개 키)를 전송할 수도 있다. 파트너는 액세스 키를 사용하여 통신 채널 상에서 송신되고 있는 모든 데이터를 암호화할 수도 있다. 클리어 룸(300)이 통신 채널을 통해 암호화된 데이터를 수신하는 경우, 데이터를 암호 해제하기 위해 대응하는 개인 키가 사용될 수도 있고, 따라서, 그들은 상응하게 정리되고, 정규화되고, 프로세싱될 수도 있다. 파트너 포털(116)(도 5 참조)은 파트너 시스템(115)에 할당되는 공개 키(들)를 파트너 키저장소에 저장할 수도 있다. 클리어 룸(300)은 각각의 공개 키에 대한 대응하는 개인 키를 키저장소(130)에 저장할 수도 있다. 키저장소(130)는 파트너에게 할당되는 공개 키에 각각 대응하는 복수의 개인 키를 저장할 수도 있다. 파트너 시스템(115)은 데이터를 암호화하기 위한 하나 이상의 공개 키를 할당받을 수도 있다.
몇몇 실시형태에서, 임의 길이의 문자열이 암호화된 데이터를 식별 가능하게 만들 수도 있기 때문에, 데이터 세트는 송신 이전에 사전 프로세싱될 수도 있다. 예를 들면, 하나 이상의 데이터 문자열이, 시스템에 의해 허용되는 최대 길이와 같은 특정한 길이로 패딩될 수도 있다. 다른 실시형태에서, 데이터 스트링은 미리 정의된 구조로 분해될 수도 있고, 각각의 최소 단위(atomic) 컴포넌트는 송신 이전에 해싱되거나 또는 암호화될 수도 있다.
도 14는, 몇몇 실시형태에 따른, 보안 트랜잭션 데이터를 프로세싱하기 위한 예시적인 클린 룸(300)의 다른 개략도를 도시한다. 클린 룸(300)은, 파트너 포털에서의 데이터의 암호화를 위해 하나 이상의 엔클레이브의 공개 키를 파트너 포털(116)로 전송하도록 구성되는 데이터 매니저(134)를 포함할 수도 있다. 엔클레이브(133a, 133b, 133n)는, 각각의 엔클레이브가 파트너 포털(116)로부터의 암호화된 데이터의 목적지가 되도록 데이터 매니저(134)에 의해 선택될 수도 있기 때문에, 목적지 엔클레이브로 지칭될 수도 있다. 엔클레이브(133a, 133b, 133n)에 의해 저장되는 암호화된 데이터를 관리하기 위해, Hadoop(하둡) 파일 시스템(Hadoop File System: HDFS)과 같은 파일 시스템이 클린 룸에 포함될 수도 있다.
몇몇 실시형태에서, 파트너 포털(116)은 데이터를 클린 룸(300)으로 전송하기 위해 TLS 또는 VPN을 통해 데이터 매니저(134)와의 통신 채널(215)을 개시할 수도 있다. 파트너 포털(116)은, 데이터가 클린 룸으로 송신되어야 한다는 것을 나타내는 요청을 데이터 매니저(134)에게 먼저 송신할 수도 있다. 몇몇 실시형태에서, 요청은 송신될 데이터의 양을 나타내는 정보를 포함할 수도 있다. 데이터 요청에 기초하여, 데이터 매니저(134)는 파트너 포털(116)로부터 유입 데이터를 수신하기 위한 하나 이상의 목적지 엔클레이브(133a, 133b, 133n)를 선택할 수도 있다.
몇몇 실시형태에서, 데이터 매니저(134)는, 각각의 엔클레이브에 의해 수집될 데이터의 양에 기초하여 목적지 엔클레이브를 선택할 수도 있고, 그 결과, 각각의 선택된 목적지 엔클레이브는 이 통신 세션을 통해 파트너 포털(116)로부터 특정한 양의 데이터를 수신하도록 명시된다. 또한, 데이터 매니저(134)는 목적지 엔클레이브의 각각에 대한 공개 키를 선택하여, 선택된 목적지 엔클레이브에 각각 대응하는 하나 이상의 공개 키를 파트너 포털(116)로 전송할 수도 있고, 따라서, 파트너 포털은, 통신 채널(215)을 통한 암호화된 데이터의 송신 이전에, 적절한 공개 키를 사용하여 원시 데이터를 암호화할 수 있다. 예를 들면, 데이터 매니저(134)는 각각의 목적지 엔클레이브에 의해 수신될 데이터 양의 상한을 나타내는 정보 및 대응하는 공개 키(예를 들면, "MaxSize, PublicKeylD")를 전송할 수 있고, 따라서, 파트너 포털(116)은 각각의 목적지 엔클레이브에 대한 적절한 양의 유입 데이터를, 목적지 엔클레이브의 요건과 일치하는 방식으로, 암호화할 수 있다.
일단 파트너 포털(116)이 데이터 매니저(134)로부터 데이터 양, 목적지 엔클레이브(들) 및 공개 키(들)를 나타내는 정보를 수신하면, 파트너 포털(116)은 원시 데이터를 암호화하는 것으로 진행할 수도 있다. 예를 들면, 파트너 포털(116)은 각각의 목적지 엔클레이브에 대한 256 비트 데이터 암호화 키(Data Encryption Key: DEK)를 랜덤하게 생성할 수도 있고, AES-256 CBC 또는 GCM을 사용하여 각각의 DEK로 일부 원시 데이터를 암호화한다. 파트너 포털(116)은 목적지 엔클레이브의 수 및 공개 키의 대응하는 수에 기초하여 DEK를 생성할 수도 있다. 각각의 목적지 엔클레이브에 대해, 따라서, 목적지 엔클레이브와 관련되는 각각의 공개 키에 대해 상이한 DEK가 생성될 수도 있다. 그 다음, 파트너 포털(116)은, DEK가 생성되는 대응하는 목적지 엔클레이브에 기초하여 적절한 공개 키를 사용하여 DEK의 각각을 암호화할 수도 있다. 다음으로, 파트너 포털(116)은 암호화된 키(예를 들면, 암호화된 DEK)와 함께 암호화된 데이터를 통신 채널(215)을 통해 데이터 매니저(134)로 전송할 수도 있다.
몇몇 실시형태에서, 통신 채널(215)은 VPN 통신 채널일 수도 있는데, 이 경우 파트너 포털(116) 및 클린 룸(300)은 둘 모두는 진짜인 것으로 검증되었다.
몇몇 실시형태에서, 통신 채널(215)은, 도 4와 관련하여 상기에서 설명되는 바와 같이, 보안 및 암호화 유닛(125)의 신뢰 매니저 유틸리티(127)와 파트너 시스템(115) 사이의 TLS 채널과 유사한 TLS 하에서 확립되고 유지될 수도 있다.
클라이언트 시스템(119)은 클린 룸(300) 상의 리소스 매니저(1100)에게 쿼리(118)를 제출할 수도 있다. 쿼리는 통신 세션(216)을 통해 전송되는 데이터 쿼리일 수도 있다. 몇몇 실시형태에서, 데이터 쿼리를 전송하기 위해서는 클라이언트 시스템(119)은 클린 룸(300)에 대한 승인된 당사자여야 하고; 이를 위해, 리소스 매니저(1100)는, 클라이언트 시스템이 승인된 당사자이고 쿼리에 대한 적절한 퍼미션을 갖는다는 것을 보장하기 위해 클라이언트 시스템과 상호 작용하도록 구성될 수도 있다. 일단 클라이언트 시스템이 쿼리에 대한 적절한 퍼미션을 갖는 것으로 검증되면, 리소스 매니저(1100)는 쿼리에 응답하여 클라이언트 시스템에 응답을 반환할 수도 있다.
데이터 쿼리를 전송하기 위해, 클라이언트 시스템은 리소스 매니저(1100)와의 인증된 TLS 통신 세션(216)을 개시할 수도 있다. 통신 세션(216)은, 도 4와 관련하여 상기에서 설명되는 바와 같이, 보안 및 암호화 유닛(125)의 신뢰 매니저 유틸리티(127)와 파트너 시스템(115) 사이의 TLS 채널과 유사한 방식으로 확립되어 유지될 수도 있다.
TLS 통신 프로토콜을 통해, 리소스 매니저(1100)는 클라이언트 시스템이 클린 룸(300)에 대한 승인된 당사자라는 것을 검증할 수 있다. 일단 클라이언트 시스템이 승인된 당사자로서 검증되면, 리소스 매니저(1100)는, 클라이언트 시스템이 액세스할 수 있는 하나 이상의 데이터 분석을 송신하여 클라이언트 시스템에서 디스플레이할 수도 있다. 클라이언트 시스템은 디스플레이된 데이터 분석 옵션으로부터 하나 이상의 옵션을 선택할 수도 있다. 데이터 분석 중 일부는, 클라이언트 시스템이 공급하도록 구성될 수도 있는 추가적인 정보를 필요로 할 수도 있다. 그 다음, 클라이언트 시스템은 완전한 데이터 쿼리를 리소스 매니저(1100)로 전송할 수도 있다.
리소스 매니저(1100)는 클라이언트 시스템으로부터 데이터 쿼리를 수신할 수도 있고, 클라이언트 시스템으로부터의 데이터 쿼리에 기초하여 데이터 분석을 론칭하기 위해 애플리케이션 매니저(1124)에게 쿼리를 전송하도록 진행할 수도 있다. 애플리케이션 매니저(1124)는, 엔클레이브를 사용하여 암호화된 데이터에 대한 분석을 실행하기 위해, 하나 이상의 엔클레이브(133a, 133b, 133n)를 생성하도록 구성되는 애플리케이션일 수도 있다. 몇몇 실시형태에서, 필요한 데이터 분석을 수행하기 위해, 하나 이상의 워커 노드가 사용될 수도 있다.
몇몇 실시형태에서, 하나 이상의 데이터 분석 동작이 검사를 위해 개방될 수도 있고 및/또는 클린 룸이 안전하고 손상되지 않았음을 승인된 당사자에게 보장하기 위해 클린 룸(300)에 참가하는 모든 승인된 당사자에 의해 서명될 수도 있다.
몇몇 실시형태에서, 엔클레이브(133a, 133b, 133n)는 그 상에 저장되는 데이터/문서 사이에서 인증되고 암호화된 통신을 가질 수도 있다. 예를 들면, 엔클레이브(133a, 133b, 133n)의 하나 이상의 쌍 사이에서, 엔클레이브 사이의 보안 통신 및 데이터의 교환을 보장하기 위해 TLS 통신 채널이 확립될 수도 있다.
도 15는, 몇몇 실시형태에 따른, 보안 트랜잭션 데이터를 프로세싱하기 위한 클린 룸(300)을 포함하는 분산 시스템의 개략도를 예시한다. 클린 룸(300)은, 파트너 포털에서의 데이터의 암호화를 위해 하나 이상의 엔클레이브의 공개 키를 파트너 포털(116)로 전송하도록 구성되는 데이터 매니저(134)를 포함할 수도 있다. 엔클레이브(133a, 133b, 133n)는, 각각의 엔클레이브가 파트너 포털(116)로부터의 암호화된 데이터의 목적지가 되도록 데이터 매니저(134)에 의해 선택될 수도 있기 때문에, 목적지 엔클레이브로 지칭될 수도 있다. 엔클레이브(133a, 133b, 133n)에 의해 저장되는 암호화된 데이터를 관리하기 위해, Hadoop(하둡) 파일 시스템(HDFS)과 같은 파일 시스템이 클린 룸에 포함될 수도 있다.
몇몇 실시형태에서, 클린 룸(300)을 사용하여 분산 모델이 구현될 수도 있는데, 여기서는, 파트너 포털(들)(116)은 그들 각각의 데이터를 유지할 수도 있고, 방화벽 뒤에서 파트너 포털(116)에 연결되는 데이터 엔진을 사용하여 데이터 분석의 일부 또는 모두를 수행할 수도 있고, 메타데이터와 같은 필요한 분석 결과만이 추가적인 프로세싱을 위해 클린 룸(300)으로 전송된다.
도 14에서 예시되는 시스템으로부터의 데이터 쿼리(118)와 유사하게, 클라이언트 시스템(119)으로부터의 쿼리 요청(118)이 리소스 매니저(1100)로 전송될 수도 있다. 쿼리 요청(118)은 데이터 분석을 위한 쿼리를 포함할 수도 있다.
데이터 쿼리(118)를 전송하기 위해, 클라이언트 시스템(119)은 리소스 매니저(1100)와의 인증된 TLS 통신 세션(216)을 개시할 수도 있다. 통신 세션(216)은, 도 4와 관련하여 상기에서 설명되는 바와 같이, 보안 및 암호화 유닛(125)의 신뢰 매니저 유틸리티(127)와 파트너 시스템(115) 사이의 TLS 채널과 유사한 방식으로 확립되어 유지될 수도 있다. TLS 통신 프로토콜을 통해, 리소스 매니저(1100)는 클라이언트 시스템(119)이 클린 룸(300)에 대한 승인된 당사자는 것을 검증할 수 있다. 일단 클라이언트 시스템(119)이 승인된 당사자로서 검증되면, 리소스 매니저(1100)는, 클라이언트 시스템이 액세스할 수 있는 하나 이상의 데이터 분석을 송신하여 클라이언트 시스템에서 디스플레이할 수도 있다. 클라이언트 시스템은 디스플레이된 데이터 분석 옵션으로부터 하나 이상의 옵션을 선택할 수도 있다. 데이터 분석 중 일부는, 클라이언트 시스템(119)이 공급하도록 구성될 수도 있는 추가적인 정보를 필요로 할 수도 있다. 그 다음, 클라이언트 시스템(119)은 완전한 데이터 쿼리를 리소스 매니저(1100)로 전송할 수도 있다.
그 다음, 쿼리 요청(118)은 애플리케이션 매니저(1124)로 전송될 수도 있는데, 애플리케이션 매니저는, 후속하여, 데이터 쿼리(118)에 기초하여 데이터 분석을 론칭할 수도 있다. 애플리케이션 매니저(1124)는 데이터 쿼리(118)에 기초하여 필요로 되는 데이터 분석을 결정할 수도 있다. 애플리케이션 매니저는 또한 데이터 쿼리(118)에 응답하는 데 필요로 되는 데이터 분석을 수행하는 데 필요한 데이터의 타입 및 소스를 결정할 수도 있다. 몇몇 실시형태에서, 애플리케이션 매니저(1124)는 각각의 파트너를 그 각각의 데이터에 매핑하는 테이블을 검색하거나(retrieve) 또는 수신할 수도 있다. 애플리케이션 매니저는 또한, 필요한 데이터 분석의 타입 및 각각의 파트너로부터의 필요한 데이터 타입을 비롯한, 각각의 파트너에 대한 상세한 지시(instruction)를 생성할 수도 있다. 지시는 보안 채널(예를 들면, TLS)을 통해 데이터 매니저(134)로 전송될 수도 있는데, 데이터 매니저는, 그 다음, TLS 또는 VPN 연결(215)을 통해 하나 이상의 파트너 포털(116)로 지시를 전송할 수 있다.
지시를 수신하면, 각각의 파트너 포털(116)은, 파트너 포털(116)의 일부일 수도 있거나 또는 그것에 연결될 수도 있는 데이터베이스(예시되지 않음)로부터 필요하고 적절한 데이터를 검색할 수도 있다. 파트너 포털은, 그 다음, 데이터 매니저로부터의 지시에 기초하여, 파트너 분석 엔진(117)과 같은 데이터 엔진에 대해 적절한 데이터 분석을 수행할 수도 있다. 파트너 분석 엔진(117)은 파트너 포털(116)의 일부일 수도 있건, 또는 그것에 연결될 수도 있다. 몇몇 실시형태에서, 파트너 분석 엔진(117)은 클린 룸(300)에 의해 프로비저닝되고 구성되는, 그러나 파트너 포털(116)과 동일한 물리적 사이트에 설치되는 데이터 엔진일 수도 있다. 파트너 분석 엔진(117)은 파트너 포털(116)의 방화벽 뒤에서 설치될 수도 있고, 그 결과, 데이터 매니저가 엔진(117)에게 지시를 전송하기 위해서는, TLS 또는 VPN 연결(215)이 확립될 필요가 있고, 몇몇 실시형태에서, 데이터의 송신을 위해 암호화가 필요로 된다.
파트너 분석 엔진(117)은 데이터 매니저에 의해 요구되는 적절한 데이터 분석을 수행할 수도 있고, 데이터 출력 또는 데이터 결과를 생성하는데, 이들은, 그 다음, 암호화되어 데이터 매니저(134)로 송신될 수도 있다. 데이터 매니저는, 그 다음, 애플리케이션 매니저로부터의 지시에 기초하여, 암호화된 데이터 결과를 하나 이상의 엔클레이브(133a, 133b, 133n)로 전송할 수도 있다.
몇몇 실시형태에서, 파트너 분석 엔진(117)은, 먼저, 데이터 결과를 파트너 포털(116)로 전송할 수도 있는데, 파트너 포털은, 그 다음, 데이터 매니저(134)를 통해 데이터 결과를 클린 룸(300)으로 전송할 수도 있다.
몇몇 실시형태에서, 데이터 매니저(134)는, 각각의 엔클레이브에 의해 수집될 데이터의 양에 기초하여 목적지 엔클레이브를 선택할 수도 있고, 그 결과, 각각의 선택된 목적지 엔클레이브는 이 통신 세션을 통해 파트너 포털(116) 또는 파트너 분석 엔진(117)으로부터 특정한 양의 데이터를 수신하도록 명시된다. 또한, 데이터 매니저(134)는 목적지 엔클레이브의 각각에 대한 공개 키를 선택하여, 선택된 목적지 엔클레이브에 각각 대응하는 하나 이상의 공개 키를 파트너 포털(116)로 전송할 수도 있고, 따라서, 파트너 포털은, 통신 채널(215)을 통한 암호화된 데이터의 송신 이전에, 적절한 공개 키를 사용하여 원시 데이터 결과를 암호화할 수 있다. 예를 들면, 데이터 매니저(134)는 각각의 목적지 엔클레이브에 의해 수신될 데이터 양의 상한을 나타내는 정보 및 대응하는 공개 키(예를 들면, "MaxSize, PublicKeylD")를 전송할 수 있고, 따라서, 파트너 포털(116) 또는 파트너 분석 엔진(117)은 각각의 목적지 엔클레이브에 대한 적절한 양의 유입 데이터를, 목적지 엔클레이브의 요건과 일치하는 방식으로, 암호화할 수 있다. 일단 파트너 포털(116) 또는 파트너 분석 엔진(117)이 데이터 매니저(134)로부터 데이터 양, 목적지 엔클레이브(들) 및 공개 키(들)를 나타내는 정보를 수신하면, 파트너 포털(116) 또는 파트너 분석 엔진(117)은 원시 데이터 결과를 암호화하고 연결(215)을 통해 암호화된 데이터 결과를 데이터 매니저(134)로 전송하는 것으로 진행할 수도 있다.
몇몇 실시형태에서, 통신 채널(215)은 VPN 통신 채널일 수도 있는데, 이 경우 파트너 포털(116), 파트너 분석 엔진(117) 및 클린 룸(300)은 둘 모두는 진짜인 것으로 검증되었다.
몇몇 실시형태에서, 통신 채널(215)은, 도 4와 관련하여 상기에서 설명되는 바와 같이, 보안 및 암호화 유닛(125)의 신뢰 매니저 유틸리티(127)와 파트너 시스템(115) 사이의 TLS 채널과 유사한 TLS 하에서 확립되고 유지될 수도 있다.
몇몇 실시형태에서, 데이터 매니저(134)로 되전송되는 데이터 결과는 메타데이터, 또는 다른 타입의 데이터를 포함할 수도 있다. 몇몇 실시형태에서, 하나 이상의 파트너 포털(116) 및/또는 파트너 분석 엔진(117)으로부터 전송되는 데이터 결과에 기초하여 데이터 쿼리를 완료하기 위해서는 추가적인 데이터 분석이 필요할 수도 있다. 애플리케이션 매니저(1124)는, 파트너로부터 전송되는 데이터 결과에 기초하여 분석을 완료할 것을 적절한 수의 보안 엔클레이브(133a, 133b, 133n)에게 지시할 수도 있다. 애플리케이션 매니저(1124)는, 몇몇 실시형태에서, 엔클레이브를 사용하여 암호화된 데이터에 대한 분석을 실행하기 위해, 하나 이상의 엔클레이브(133a, 133b, 133n)를 생성하도록 구성되는 애플리케이션일 수도 있다. 몇몇 실시형태에서, 필요한 데이터 분석을 수행하기 위해, 하나 이상의 워커 노드가 사용될 수도 있다.
최종 데이터 결과가 클린 룸(300)에 의해 생성될 수도 있고, 암호화된 채널일 수도 있는 보안 통신 채널(216)을 사용하여 리소스 매니저(1100)를 통해 원래의 데이터 쿼리(118)를 전송했던 클라이언트 시스템(119)으로 반환될 수도 있다.
몇몇 실시형태에서, 최종 데이터 결과를 클라이언트 시스템으로 되송신하는 대신, 클린 룸(300)은, 대신, 클라이언트 시스템을 대신하여 최종 데이터 결과에 기초하여 동작을 수행할 수도 있다.
몇몇 실시형태에서, 하나 이상의 데이터 분석 동작이 검사를 위해 개방될 수도 있고 및/또는 클린 룸이 안전하고 손상되지 않았음을 승인된 당사자에게 보장하기 위해 클린 룸(300)에 참가하는 모든 승인된 당사자에 의해 서명될 수도 있다.
몇몇 실시형태에서, 엔클레이브(133a, 133b, 133n)는 그 상에 저장되는 데이터/문서 사이에서 인증되고 암호화된 통신을 가질 수도 있다. 예를 들면, 엔클레이브(133a, 133b, 133n)의 하나 이상의 쌍 사이에서, 엔클레이브 사이의 보안 통신 및 데이터의 교환을 보장하기 위해 TLS 통신 채널이 확립될 수도 있다.
하나의 매우 간단한 예에서, 각각의 파트너(116) 각각은 숫자의 세트를 포함하는 데이터의 세트를 가질 수도 있고, 클라이언트는 모든 파트너 중에서 가장 작은 수를 요청하는 데이터 쿼리를 전송한다. 애플리케이션 매니저는 각각의 파트너에게 파트너 분석 엔진(117)을 사용하여 그 자신의 데이터에 대해 그 자신의 분석을 실행할 것을 지시할 수도 있는데, 파트너 분석 엔진은 각각의 파트너에 속하는 데이터의 세트에 기초하여 파트너마다의 각각의 최소 숫자를 생성한다. 이 결과는, 그 다음, 암호화되어 클린 룸의 애플리케이션 매니저로 전송될 수도 있는데, 애플리케이션 매니저는, 그 다음, 모든 파트너로부터의 각각의 데이터 결과를 비교하는 최종 데이터 분석을 실행하고, 각각의 파트너에 의해 전송되는 모든 각각의 최소 숫자 중에서 가장 작은 숫자를 포함하는 최종 결과를 생성한다. 이 경우, 클린 룸은 파트너 데이터에 완전히 액세스하는 것이 아니라, 단순히, 각각의 파트너가 갖는 데이터의 세트에 기초한 메타데이터 또는 데이터 출력에 액세스한다.
다른 예에서, 클라이언트 시스템(119)은, 지난 삼 개월 동안 초콜릿과 같은 상품에 가장 많은 금액의 돈을 지출한 상위 백 명의 소비자를 찾기 위해 데이터 쿼리(118)를 전송할 수도 있다. 리소스 매니저(1100)는 이 쿼리를 수신할 수도 있는데, 리소스 관리자는 데이터 쿼리를 수행하기 위한 특정한 파트너 포털을 다음으로 결정하는 애플리케이션 매니저(1124)로 포워딩하고, 각각의 파트너에 대한 데이터 분석에 대한 적절한 지시를 생성한다. 애플리케이션 매니저는, 내부 또는 외부 지식 데이터베이스에 기초하여, 초콜릿에 대해 돈을 지출할 수도 있는 많은 수의 소비자를 갖는 것으로 알려져 있는 하나 이상의 파트너를 선택할 수도 있다. 예를 들면, 애플리케이션 매니저는 현존하는 판매 정보에 기초하여 초콜릿 제조 판매 업자인, 또는 많은 양의 초콜릿을 판매하는 판매자를 선택할 수도 있다.
선택된 파트너의 목록과 함께, 필요로 되는 데이터의 타입뿐만 아니라 필요로 되는 데이터 분석의 타입을 포함할 수도 있는 데이터 분석에 대한 지시는 TLS 연결(215)을 통해 데이터 매니저(134)에게 전송될 수도 있고, 데이터는 매니저(134)는 데이터 암호화를 위한 공개/개인 키의 세트와 함께 TLS 또는 VPN 연결을 통해 각각의 선택된 파트너에게 각각의 지시를 전송할 수도 있다. 몇몇 실시형태에서, 지시는 각각의 파트너 또는 각각의 파트너 분석 엔진으로 송신되기 이전에 암호화될 수도 있다.
각각의 파트너 분석 엔진(117)은 데이터 매니저(134)로부터 지시를 수신하고, 수신되는 지시에 따라 요청된 데이터 분석을 수행하도록 진행할 수도 있다. 파트너 분석 엔진은, 지시에서 명시되는 데이터 분석을 수행하기 위해, 필요로 되는 경우, 각각의 파트너 포털로부터 적절한 데이터를 검색할 수도 있다.
각각의 파트너 분석 엔진(117)으로부터의 데이터 결과는, 그 다음, 암호화 및 클린 룸(300)으로의 송신을 위해 각각의 파트너 포털(116)로 전송될 수도 있는데, 클린 룸은 추가적인 데이터 분석을 수행하여, 지난 삼 개월 동안 초콜릿에 대해 가장 많은 금액의 돈을 지출한 상위 백 명의 소비자를 나타내는 최종 결과를 생성할 수도 있다. 예를 들면, 각각의 파트너(116)로부터의 데이터 결과는, 지난 삼 개월 동안 초콜릿에 대해 가장 많은 금액의 돈을 지출한 상위 오십 명의 소비자뿐만 아니라, 각각의 소비자가 지출한 각각의 금액의 돈을 포함할 수도 있다.
다른 각각의 파트너(116)로부터의 데이터 결과는, 지난 삼 개월 동안 초콜릿에 대해 가장 많은 금액의 돈을 지출한 상위 X 명의 소비자(예를 들면, 삼십 명 또는 백 명)뿐만 아니라, 각각의 소비자가 지출한 각각의 금액의 돈을 포함할 수도 있다. 클린 룸(300)은, 그 다음, 데이터 결과에서 전송했던 모든 파트너 중에서 지난 삼 개월 동안 초콜릿에 대해 가장 많은 금액의 돈을 지출했던 상위 백 명의 소비자를 결정할 수도 있다.
몇몇 실시형태에서, 클린 룸(300)은 이 데이터 결과를 연결(216)을 통해 클라이언트 시스템(119)으로 되전송할 수도 있다. 다른 실시형태에서, 클린 룸(300)은 클라이언트 시스템(119)으로부터의 이 데이터 결과를 보류할 수도 있고, 대신, 쿠폰 또는 프로모션 제안을 사용하여 더 많은 초콜릿을 구매하는 데 관심이 있을 수도 있는 이 목록의 소비자에게 초콜릿에 대한 쿠폰을 전송할 수도 있다.
이제 클리어 룸(300)의 예시적인 보안 및 암호화 유닛(125) 및 데이터 스토리지(108)를 도시하는 도 5에 대한 참조가 이루어진다. 몇몇 실시형태에서, 각각의 파트너(115)는 데이터의 최소 세트가 클리어 룸(300)의 데이터 스토리지(108)에 저장되는 것을 허용한다. 동시에, 비록 파트너가 포털(116)을 통해 이용 가능한 하나 이상의 액션을 요청할 수도 있더라도, 파트너 중 어느 누구도 집성된 데이터에 액세스하거나 또는 볼 수 없다. 예를 들면, 파트너(115)는 새로운 제안에 대해 특정한 사용자 그룹을 타깃으로 할 것을 플랫폼(100)에게 요청할 수도 있다. 다른 예를 들면, 파트너는, 특정한 인구 통계학적 그룹의 사용자에 대한 지출 추세가 무엇인지를 분석할 것을 플랫폼(100)에게 요청할 수도 있다.
파트너 시스템(115)은, 몇몇 실시형태에서, 파트너 포털(116)을 포함할 수도 있다. 파트너 포털(116)은 공개 키를 사용하여 소비자 데이터를 암호화하도록 그리고 암호화된 데이터를 플랫폼(100)으로 송신하도록 구성될 수도 있다. 파트너 포털(116)은, 은행 및 상인과 같은 파트너가, 키 및 인증서를 생성하고 및/또는 저장하는 것, 및 클린 룸 API와 통신하는 것을 허용할 수도 있다. 파트너 시스템(115)은, 소비자 데이터를 클린 룸(300)에 제공할 때, 필요한 JSON 데이터 필드를 제공할 수도 있다.
일단 암호화된 데이터가 파트너 포털(116)로부터 플랫폼(100)에 도달하면, 그것은 데이터 파이프라인 API를 거치고, 그 다음, 데이터 저장소(108)에서의 저장을 위해 프로세싱된다. 암호화 및 분석 유닛(131)은 유입하는 소비자 데이터를 프로세싱하기 위한 다수의 워커 애플리케이션 또는 노드를 하나 이상의 보안 엔클레이브(133)에서 구비할 수도 있는데, 다수의 워커 애플리케이션 또는 노드의 각각은 각각의 그리고 별개의 보안 엔클레이브(133) 내에 있다. 몇몇 실시형태에서, 각각의 워커 애플리케이션 또는 노드는 하나의 파트너에게 고유한 소비자 데이터를 프로세싱할 수도 있다. 즉, 각각의 파트너는, 그 특정한 파트너로부터의 소비자 데이터를 프로세싱하는 전용 워커 노드(132a, 132b)를 클리어 룸(300) 내의 하나 이상의 보안 엔클레이브(133)에서 가질 수도 있다.
보안 엔클레이브(133) 내의 단일의 워커 애플리케이션 또는 노드(132a, 132b)는 보안 데이터 웨어하우스(108)에 저장되는 데이터를 암호 해제하고 분석할 수도 있다. 각각의 워커 노드(132a, 132b)는 파트너 구성 유닛, 데이터 모델 유닛, 데이터 암호화/암호 해제 유닛 및 데이터 분석 유닛을 포함할 수도 있다. 파트너 구성 유닛은 파트너에게 고유한 정보를 포함할 수도 있고, 예를 들면, 파트너 구성 유닛은 파트너로부터의 유입 데이터를 각각의 데이터 속성, 데이터 타입, 데이터 필드 및/또는 데이터 사이즈로 매핑하는 데이터 스키마 템플릿(data schema template)을 제공할 수도 있다.
데이터 암호화 유닛은, 암호화 기술 또는 알고리즘에 기초하여 하나 이상의 데이터 세트를 암호화된 콘텐츠로 암호화하도록 구성될 수도 있다. 몇몇 실시형태에서, 암호화 유닛은, 암호화된 데이터 엘리먼트를 생성하기 위해, 하나 이상의 데이터 세트를 암호화하기 위한 적절한 키를 결정, 검색 또는 생성한다. 암호화에 대해 사용되는 각각의 키는 키저장소(130)에 저장될 수도 있다.
데이터 암호 해제 유닛은, 키와 함께, 암호화 기술 또는 알고리즘에 기초하여 하나 이상의 암호화된 데이터 세트를 평문으로 암호 해제하도록 구성될 수도 있다. 몇몇 실시형태에서, 데이터 암호 해제 유닛은, 평문을 생성하기 위해, 하나 이상의 암호화된 데이터 세트를 암호 해제하기 위한 적절한 키를 결정, 검색 또는 생성한다.
데이터 분석 유닛은 암호 해제된 데이터에 대한 분석을 수행하도록 구성될 수도 있다.
몇몇 실시형태에서, 필요한 데이터 필드 또는 속성의 최소 세트가 각각의 파트너에 의해 제공될 필요가 있다. 예를 들면, 데이터의 최소 세트는, 트랜잭션의 시간 및 데이터, 상인 이름, 은행 이름 및 ID, MCC, 인증 코드(auth code), 소비자 이름(알고 있는 경우), 및 마스킹된 PAN을 포함할 수도 있다. 파트너에 의해 전송되는 임의의 추가적인 데이터는 미래의 사용을 위해 저장될 수도 있다.
파트너 시스템(116)은 소비자 데이터를 배치(batch)에서 송신할 수도 있고, 예를 들면, 파트너가 클리어 룸(300)에 처음 가입할 때 많은 양의 데이터가 보안 통신 채널을 통해 하나 이상의 배치에서 플랫폼(100)으로 푸시될 수도 있다. 종종, 파트너로부터의 데이터의 초기 배치는, 수일, 수개월 또는 수년에 걸친 데이터를 포함할 수도 있는데, 그 데이터는 분석되어 소비자 거동에 대한 귀중한 통찰력을 산출할 수도 있다. 데이터 배치는 또한, 플랫폼(100)에 의해 적절한 것으로 간주될 때, 또는 설정된 간격(예를 들면, 매월) 동안 발생할 수도 있다.
파트너는 또한, 트랜잭션이 발생할 때(예를 들면, 소비자가 가게에서 구매를 행할 때) 실시간 또는 거의 실시간으로 소비자 데이터를 송신할 수도 있다.
데이터 모델 유닛은, 데이터가 암호 해제된 이후 데이터 모델링 및 데이터 정규화 단계를 행하도록 구성된다. 데이터 모델 유닛은, 새로 암호 해제된 데이터를 모델로 포팅하기 위해, 데이터 정규화 작업을 가끔, 예컨대 X 시간 또는 X 일마다, 스케줄링할 수 있다. 또한 데이터 모델 유닛은 또한, 데이터 모델을 정리하기 위해, 데이터 정규화 작업이 정규화된 데이터를 수정할 때마다 모델 트레이닝 작업을 스케줄링할 수 있다.
몇몇 실시형태에서, 데이터 스토리지(108)는 필요에 따라 확장 가능할 수도 있다.
도 6은 클린 룸(300)의 다양한 컴포넌트를 도시하는 다른 개략도이다. 몇몇 실시형태에서, 클린 룸(300)은 파트너 프로파일(140) 및 사용자 프로파일(145)을 포함할 수도 있다. 사용자는 소비자를 지칭할 수도 있다. 파트너 프로파일(140)은, 파트너의 등록 세부 사항을 포함하는 파트너 레지스터를 포함할 수도 있다. 사용자 프로파일(145)은 사용자의 등록 세부 사항을 포함하는 사용자 레지스터를 포함할 수도 있다. 각각의 파트너는 파트너 프로파일(140)을 가질 수도 있고 각각의 사용자는 사용자 프로파일(145)을 가질 수도 있다. 각각의 파트너 및 사용자는 데이터 모델 유닛에 의해 결정되는 바와 같은 그 자신의 각각의 데이터 모델을 데이터 웨어하우스에서 구비할 수도 있다.
도 7은 데이터 클러스터 배치 및 관리를 위한 데이터 모델링 유닛 및 데이터 스토리지 유닛(108)의 개략도를 도시한다. 알 수 있는 바와 같이, 데이터 모델 트레이너, 데이터 모델, 및 암호화/암호 해제 키는 추가적인 보안성을 위해 보안 엔클레이브에 저장될 수도 있다. 수신된 소비자 데이터는 암호 해제되어 원시 데이터로서 저장될 수도 있는데, 그 원시 데이터는, 그 다음, 정규화되고 정규화된 데이터로서 저장될 수도 있다. 정규화된 데이터는 보안 엔클레이브(133) 내의 모델 트레이너로 전송되고 모델 트레이너에 의해 추가로 프로세싱될 수도 있다. 상이한 파트너가 상이한 데이터 세트를 가질 수도 있기 때문에, 데이터 세트는 집성되고 분석되기 이전에 정규화될 필요가 있다.
몇몇 실시형태에서, 시스템은 트랜잭션 및 SKU 데이터를, (i) 특정한 소비자; 및/또는 (ii) 규정된 단편화(prescribed segmentation)(예를 들면, 우편 번호, 상인, 현재 위치)로 매핑할 수 있다. 예를 들면, 소비자 데이터는 하나 이상의 데이터 필드에 기초하여 은행 시스템(112)과 상인 시스템(113) 사이에서 매핑될 수도 있다. 예를 들면, MCC 및 인증 코드가 동일한 트랜잭션에 대해 은행과 상인 사이에서 공통이기 때문에, 은행으로부터의 트랜잭션에 대한 트랜잭션 데이터를 상인으로부터의 동일한 트랜잭션에 대한 트랜잭션 데이터에 링크하기 위해, 인증 코드 및/또는 MCC가 사용될 수도 있다. 인증 코드 사용하는 것에서의 보안 문제는, 셔플 동작의 데이터 플로우를 관찰하는 것이 인증 코드에 관한 정보를 유출한다는 것일 수도 있다. 몇몇 실시형태에서, 노드는, 클린 룸(300)에 의해 적절하게 결정되는 바와 같이, 또는 많은 작업 단위 기반으로, 가끔 빈(bin) 할당을 랜덤화하도록 구성될 수도 있다.
몇몇 실시형태에서, 노드는, 예를 들면, 작업의 시작에서 드라이버 노드 내의 보호된 컴포넌트에 의해 워커 사이에서 분배될 비밀 작업 키를 도시하는 도 9에서 예시되는 바와 같이, 유입하는 인증 코드의 순서를 셔플링하도록 구성될 수 있다.
다른 예를 들면, 금융 상품의 PAN이 이용 가능한 경우, 트랜잭션은 카드 PAN을 사용하여 은행과 상인 사이에서 매핑될 수 있다. 그러나, 비록 인증 코드가 PAN에 다시 링크될 수 있지만, PCI 준수에 기인하여 PAN이 캡처될 가능성은 거의 없다.
또한, 트랜잭션 데이터의 연결을 추가로 확인하고 에러를 최소화하기 위해 위치 및 시간 정보에 기초하여 휴리스틱 방법(heuristic method)을 사용될 수도 있다.
다시 도 7을 참조하면, "저장 키"는 로컬 스토리지 상에 저장되는 데이터를 암호화하고 보호하기 위해 사용될 수도 있다. 저장 키는 엔클레이브의 봉인 키를 사용하여 영구적 스토리지에 저장될 수도 있다. 암호화 키의 분실은 실패로 나타날 수도 있다. "작업 랜덤화 키(Job Randomization Key)"는 워커 노드 사이의 작업 분해를 난독화하기 위해 사용되는, 드라이버 노드에 의해 발행되는 넌스이다. "통신 키(Communication Key)"는 모든 다른 네트워크 노드에서 유지된다. 노드는 신뢰 매니저(127)에 의해 인증되는 그들의 공개 키에 의해 식별된다.
도 8은 적용되는 분석의 타입(정규화, 모델 트레이닝 및 모델의 애플리케이션)에 관계없이 데이터 클러스터가 작동하는 방식을 개략적으로 나타낸다. 플랫폼(100)은 방대한 은행의 입력 데이터로부터 통찰력을 생성할 수 있다. 이것은 하나 이상의 머신 상에서 달성될 수 있다. 몇몇 실시형태에서, 대규모 클러스터의 시판 컴퓨터(commodity computer)에 대한 빅 데이터 분석을 관리하고 수행하기 위해, Hadoop(하둡) 프레임워크가 구현될 수도 있다. 클러스터 리소스 관리의 태스크는 데이터와는 거의 독립적이다. 워커 엔클레이브는 Hadoop YARN 또는 Hadoop 스택의 다른 컴포넌트와 같은 리소스 관리 애플리케이션에 의해 관리되는 클러스터 내에 임베딩될 수도 있다. 몇몇 경우에, 데이터 세트의 양 및 사이즈는 클 수도 있는데(예를 들면, 256MB 초과), 이것은 분산 저장 및 프로세싱을 위해 다수의 보안 엔클레이브(133)를 필요로 할 수도 있다.
도 11a에 도시된 바와 같이, 리소스 관리 애플리케이션은 리소스를 관리하고 워커 노드에 의해 실행되는 작업을 추적한다. 리소스 관리 애플리케이션은, 사용자에게, 노드의 아키텍처 피처를 사용하기 위해 제어하는, 로컬 파일 시스템에 액세스하는 그리고 필요에 따라 메시지를 암호화하는 옵션을 제공할 수도 있다. 몇몇 실시형태에서, 리소스 관리 애플리케이션은 YARN™을 사용하여 구현될 수도 있다. 리소스 관리 애플리케이션은: 클라이언트, 타깃터(application master), 및 워커 애플리케이션(이것은 워커 노드 또는 워커로 또한 지칭될 수도 있음)과 같은 다양한 컴포넌트를 포함하거나 또는 그들에게 링크될 수도 있다.
클라이언트, 또는 클라이언트 시스템 또는 애플리케이션은, 데이터 프로세싱 또는 데이터 분석에 대한 요청을 제출할 수도 있다. 몇몇 실시형태에서, 클라이언트 시스템은 플랫폼(100) 또는 클린 룸(300) 내의 컴포넌트 또는 파트너 시스템(115)과 같은 외부 당사자일 수도 있다. 클라이언트는 또한 전체 입력 파일을 HDFS와 같은 데이터베이스로 커밋할 수도 있다.
애플리케이션 마스터(또는 "마스터 애플리케이션")는 리소스를 협상하고, 생성되는 워커 컨테이너(worker container)를 요청하고 그들의 작업 진척도를 추적한다. 애플리케이션 마스터는 분석의 청크를 수행하기 위해 워커 컨테이너를 생성할 것을 리소스 매니저(예를 들면, 도 11a 참조)에게 요청한다. 그것은 또한, 전체 입력 파일과 파일의 어떤 부분을 프로세싱할지에 관한 지시를 전송한다. 모든 워커가 완료되었다는 것을 통지받은 이후, 그것은 그들의 부분적인 결과를 결합한다.
워커 애플리케이션은 데이터 분석을 수행한다. 워커 애플리케이션의 다수의 인스턴스가 있을 수도 있다. 각각의 워커는 보안 엔클레이브 내에 있을 수도 있거나, 또는 보안 엔클레이브를 포함하고, 엔클레이브는 그것이 프로세싱해야 하는 간격 및 입력 파일을 수신할 수도 있다. 분석은 보안 엔클레이브 내에서 실행되고, 결과는 애플리케이션 마스터가 집성할 HDFS에 되기록된다.
보안 엔클레이브 외부의 임의의 데이터 표현은 암호화될 수도 있다. 이것은 워커 노드 사이에서 셔플링되는 입력 또는 중간 데이터의 임의의 파티션을 포함한다. 노드는 또한 중요한 데이터를 공유하기 이전에 서로의 진정성을 체크한다.
다시 도 8을 참조하면, 몇몇 실시형태에서, 다양한 데이터세트의 분석을 위해 보안 엔클레이브가 작업 부하를 분산시키도록 클러스터 관리 서브시스템이 구현될 수도 있다. 클러스터 관리 서브시스템은 마스터 애플리케이션(또는 마스터 노드)과 하나 이상의 워커 애플리케이션(또는 워커 노드)을 포함할 수도 있다. 클러스터 애플리케이션 시스템은, 작업을 관리하고 복수의 엔클레이브 내의 복수의 워커 노드에 분배하는 YARN 리소스 매니저 애플리케이션을 포함할 수도 있는데, 복수의 워커 노드는 데이터를 암호 해제하고 프로세싱할 수 있다. 워커 애플리케이션은 또한 Spark 또는 H2O 실행기를 포함할 수 있다. 수정되지 않은 분산 데이터는 HDFS(Hadoop 분산 파일 시스템)와 같은 데이터베이스에 저장될 수도 있다.
몇몇 실시형태에서, 각각의 워커 노드는 데이터세트의 파티션의 최소치를 취할 수도 있고, 일단 그것이 완료되면 그 로컬 최소치를 애플리케이션 마스터에게 제출할 수도 있다. 그 다음, 애플리케이션 마스터는 전역적 최소치를 모든 로컬 최소치의 최소치로서 계산한다. 이 프로세스는 분산 애플리케이션의 어떤 컴포넌트가 데이터를 명확하게 보는 것을 필요로 하는지를 나타낼 수도 있다. 리소스 관리 서브시스템 그 자체의 어떠한 컴포넌트도 그러하지 않다는 것은 분명하다. 리소스 관리 서브시스템에 제공하는 컴포넌트 중에서, 워커 및 애플리케이션 마스터는, 보안 엔클레이브 내에서 구현될 수도 있는 데이터를 볼 수도 있다.
SGX 엔클레이브와 같은 보안 엔클레이브는 런타임 라이브러리(Windows(윈도우즈)에서는 DLL 그리고 UNIX(유닉스) 시스템에서는 so)로서 패키징된다. 그들은 다른 기본 애플리케이션에 의해 호스팅되도록 의도된다. 이 애플리케이션은, 결국에는, JNI2 브리지를 통해 메인 애플리케이션에 다시 연결되는 공유 라이브러리 그 자체일 수도 있거나, 또는 Java(자바) 애플리케이션에 의해 생성되는 자식(child) 프로세스일 수 있다.
클러스터를 통한 대용량 파일의 저장을 단순화하고 간소화하기 위해, 데이터베이스 관리 시스템이 구현될 수도 있다. 그것은 (장애 복구를 위한) 복제, 부하 분산(load balancing) 및 다른 애플리케이션 독립적 태스크를 핸들링한다.
보안 엔클레이브(133) 내의 단일의 워커 애플리케이션(도 8에서 "워커 노드"로 또한 지칭됨)은 YARN과 같은 리소스 관리 서브시스템 또는 애플리케이션과 통합될 수도 있다. 워커 애플리케이션은 보안 데이터 웨어하우스(108)에 저장되는 데이터를 암호 해제하고 분석할 수도 있다. 몇몇 실시형태에서, 리소스 관리 애플리케이션(예를 들면, YARN)은 복수의 CPU를 관리하도록 구현될 수도 있다. 클러스터 관리 애플리케이션은 다수의 보안 엔클레이브에 걸쳐 다수의 워커 애플리케이션을 관리할 수도 있다. 클러스터 관리 애플리케이션은 또한, 도 11a 및 도 11b에 도시된 바와 같이, 작업 스케줄링을 핸들링할 수도 있다.
몇몇 실시형태에서, 보안 엔클레이브(133) 사이에는, 추가적인 보안을 위한 하나 이상의 인증 단계가 있을 수도 있다.
몇몇 실시형태에서, 보안 엔클레이브 내의 워커 애플리케이션은 C++와 같은 적절한 프로그래밍 언어를 사용하여 구현될 수도 있다. 몇몇 실시형태에서, YARN 및 관련된 관리 기능은 Java™와 같은 적절한 프로그래밍 언어로 구현될 수도 있다. 몇몇 실시형태에서, 분석 엔진 및 분석 모듈은 Python 또는 Java와 같은 적절한 프로그래밍 언어로 구현될 수도 있다.
신뢰되지 않는 환경에 상주하는 신뢰성 있는 워커 애플리케이션은 비밀 데이터를 공유하는 것 및 작업 랜덤화를 서로 공유하는 것을 필요로 할 수도 있고, 제대로 관리되지 않는 경우, 고객 데이터를 위험에 처하게 할 것이다. 더구나, 클라이언트 편의를 위해, 시스템은 하나의 진입 지점을 가지고 설계되어야 하는데, 클라이언트가 분산 시스템의 단지 하나의 컴포넌트만을 검증해야 할 것이고, 그에 의해 전체 솔루션에서 신뢰를 얻을 것이라는 것을 의미하고, 이것은 상기에서 설명되는 바와 같은 원격 증명에 의해 달성될 수도 있다.
도 11a는 예시적인 리소스 관리 구조를 도시한다. 리소스 매니저(1100) 및 하나 이상의 노드 매니저(1121, 1131, 1151)를 포함하는 리소스 관리 서브시스템 또는 애플리케이션은 YARN을 사용하여 구성 및 구현될 수도 있다. 일단 작업 요청이 리소스 매니저(1100)에 의해, 예를 들면, 클라이언트 시스템(119)(예를 들면, 파트너 시스템(115) 또는 플랫폼(100) 내의 상이한 다른 컴포넌트)으로부터 수신되면, 리소스 매니저(1100)는, 애플리케이션 마스터(1123)를 생성할 수도 있는, 컨테이너(1120) 내의 노드 매니저(1121)에게 리소스 요청을 전송할 수도 있다. 다음으로, 애플리케이션 마스터(1123)는 컨테이너 요청을 리소스 매니저(1100)에게 다시 반환하고, 태스크를 수행하기 위해, 별개의 컨테이너(1130, 1150) 내에 워커 노드(132a, 132b)를 생성할 수도 있다.
도 11b는, 몇몇 실시형태에 따른, 리소스 관리 데이터 프로세스에 대한 예시적인 개략도를 도시한다. 제1 단계로서, 클라이언트 시스템(119)은 작업을 Yarn Cluster(얀 클러스터)에게 제출하여, 애플리케이션 마스터(1123)에 대한 컨테이너를 생성할 수도 있다. 다음으로, 애플리케이션 마스터(1123)는 몇몇 워커 노드 또는 컨테이너(132a, 132b, 132c)를 생성하는데, 각각은 엔클레이브를 갖는다. 그 다음, 컨테이너(132a, 132b, 132c)는 데이터베이스(예를 들면, HDFS)로부터 인코딩된 데이터를 판독하고 데이터를 엔클레이브로 전송한다. 엔클레이브 내에서, 데이터는 디코딩되고, 프로세싱되고, 재인코딩되고, 그 다음, 외부 컨테이너로 반환된다. 인코딩된 결과는 클라이언트 시스템(119)이 그것을 검색할 수 있는 HDFS에 다시 기록된다. 각각의 워커 노드는 특정한 태스크를 수행할 수도 있다. 그들 중 일부 또는 모두는 서로 상이하거나 또는 동일한 작업을 수행할 수도 있다. 몇몇 실시형태에서, 클라이언트는 각각의 작업의 시작에서 전체 입력 파일을 제출할 것을 요구받는다. 데이터 세트는 임의의 특정한 작업보다 오래 지속될 수도 있고 이미 클러스터 상에 있을 수도 있다.
몇몇 실시형태에서, 워커 노드는, 그들이 입력 파일의 어떤 파티션을 로컬하게 저장하였는지를 알 수 있고 그것을 애플리케이션 마스터에게 보고할 수도 있다. 그 다음, 애플리케이션 마스터는, 워커에 대한 파티션 프로세싱의 할당에 관한 정보에 입각한 결정을 행할 수 있다.
몇몇 실시형태에서, 컨테이너 사이의 암호화된 채널은 복잡한 작업을 용이하게 하기 위해 구현될 수도 있다. HDFS는, 시스템이 장애로부터 복구하는 것을 허용하면서, 효율성을 향상시키기 위한 방식으로 데이터를 미러링하도록 셋업될 수 있다. 엔클레이브는, 몇몇 경우에, 그들의 각각의 진척도를 일시적으로 저장하고 그들이 셧다운될 필요가 있는 경우 재개할 수도 있다.
HDFS를 통해 일시적 메시지를 전달하는 것은 고도로 비효율적일 수도 있다. 몇몇 실시형태에서, 노드는 서로 사이에서 네트워크 연결을 확립할 수도 있다.
데이터세트는 스토리지에서 암호화될 수도 있다. 몇몇 실시형태에서, 모든 워커 노드는 단일의 암호화 키를 공유할 수도 있다. 다른 실시형태에서, 각각의 노드는 그 자신의 암호화 키를 가질 수도 있다. 전자는, 파일의 전체적인 보기가 가능하기 때문에, 단순성의 이점을 갖는다. 후자는, 공격자가 하나의 노드를 손상시키는 데 성공하는 것이 전체 데이터세트를 노출시키지 않을 것이기 때문에, 더 나은 보안성 보장을 제공한다.
부분적인 결과가 애플리케이션 마스터에서 집성되어야 하는 경우, 결과는 보안 엔클레이브에 저장될 수도 있다. 몇몇 실시형태에서, 모든 데이터 분석은 워커 노드에 위임될 수도 있고 작업 메타데이터만이 애플리케이션 마스터에 노출될 수도 있다.
몇몇 실시형태에서, 플랫폼(100) 내의 클린 룸(300)은, 클러스터 내의 많은 머신에 걸쳐, 큰 배치의 데이터를 프로세싱할 수도 있다. 예시적인 분산 프로세싱 데이터베이스 셋업은 Hadoop을 사용하여 구현될 수도 있다. 또한, HDFS(Hadoop Distributed File System: Hadoop 분산 파일 시스템)는 노드 사이에서 데이터를 분배하는 쉬운 방식을 제공한다. Hadoop과 함께 SPARK(분산 데이터 과학 프레임워크)가 또한 구현될 수도 있다. 예를 들면, 애플리케이션 마스터/마스터 애플리케이션 및 하나 이상의 워커 애플리케이션(들) 각각은 Spark 또는 H2O 드라이버 또는 실행기와 같은 머신 러닝/데이터 분석 컴포넌트를 포함할 수도 있다. 드라이버 애플리케이션은 실행기 내부의 키-값 저장소 및 메모리 매니저와 같은 다양한 프로세스에 대한 실행기 애플리케이션(executor application)을 시작할 수도 있다.
이제, 리소스 매니저로서 YARN을 사용하여, 데이터 분석을 구현하는 예시적인 Spark 프레임워크를 도시하는 도 16을 참조한다. Apache Spark™는, 대규모 데이터 프로세싱을 위한 분석 엔진을 포함할 수도 있는 오픈 소스 분산 범용 클러스터 컴퓨팅 프레임워크(open-source distributed general-purpose cluster-computing framework)이다. 이 예시적인 실시형태에서, 클라이언트 시스템(119)은 설치되는 Spark 클라이언트를 가질 수도 있다. 애플리케이션 마스터(1123)는 리소스 애플리케이션을 조정하기 위해 설치되는 드라이버 애플리케이션(1125)을 가질 수도 있다. 드라이버 애플리케이션(1125)은 애플리케이션의 main() 함수를 실행하는 그리고 다양한 데이터 분석 태스크를 수행하도록 리소스를 조정하기 위해 SparkContext 오브젝트를 생성하는 프로세스일 수도 있다.
워커 애플리케이션 또는 워커 데몬 역할을 할 수도 있는 YARN 컨테이너는 하나의 머신 상에서 리소스 할당을 조정할 수도 있다. 각각의 YARN 컨테이너는 Spark 태스크 또는 애플리케이션을 실행할 수 있는 실행기(1127a, 1127b)를 포함할 수도 있다. 일반적으로 말하면, 실행기는, 태스크를 실행하고 그들에 걸쳐 데이터를 메모리 또는 디스크 스토리지에 보관하는 워커 노드 또는 YARN 컨테이너 상의 애플리케이션에 대해 론칭되는 구현된 프로세스일 수도 있다. 각각의 애플리케이션은 그 자신의 실행기를 구비할 수도 있다.
몇몇 실시형태에서, 드라이버 애플리케이션(1125)은 별개의 스레드 상에서 애플리케이션 마스터(1123) 상에서 실행될 수도 있다.
몇몇 실시형태에서, Spark 애플리케이션은, 드라이버 애플리케이션(1125)의 SparkContext 오브젝트에 의해 조정되는, 클러스터 상의 프로세스의 독립적인 세트로서 실행될 수도 있다. 예를 들면, 클러스터 상에서 실행하기 위해, SparkContext 오브젝트는 YARN을 포함하는 여러 가지 타입의 클러스터 매니저에게 연결될 수 있는데, 이들은 애플리케이션에 걸쳐 리소스를 할당할 수 있다. 일단 연결되면, Spark는 클러스터 내의 노드 상에서 실행기를 획득하는데, 이들은 계산을 실행하고 클린 룸(300)에 대한 데이터를 저장하는 프로세스이다.
다음으로, 그것은 애플리케이션 코드(SparkContext 오브젝트에 전달되는 JAR 또는 Python 파일에 의해 정의됨)를 실행기로 전송할 수도 있다. 마지막으로, SparkContext 오브젝트는 실행을 위해 태스크를 실행기(1127a, 1127b)로 전송할 수도 있다.
몇몇 실시형태에서, Linux(리눅스) 커널 라이브러리(Linux Kernel Library: LKL) 및 MUSL 라이브러리는 Spark 프레임워크 하에서 드라이버 및 실행기 애플리케이션을 구현하기 위해 사용될 수도 있다. LKL을 사용하여 작성되는 프로그램 코드는, Alpine Linux(알파인 리눅스)(그것이 libc 대신 MUSL을 사용하기 때문) SGX LKL용으로 작성되는 대부분의 패키지를 비롯한, MUSL과 링크되는 대부분의 애플리케이션을 실행할 수 있다. 비록 gcc 크로스 컴파일 스크립트(gcc cross compilation script)만이 제공되지만, g++ 애플리케이션은 또한, Alpine g++ 패키지로부터의 C++을 추가하도록 C 스크립트를 수정하는 것, 또는 단순히 Alpine Linux 상에서 컴파일하는 것 중 어느 하나에 의해, 컴파일될 수 있다.
그러나, LKL을 사용한 구현에는 몇몇 제한이 존재한다. 예를 들면, 비록 멀티스레딩이 가능하지만, 대부분의 애플리케이션은 단일의 프로세스 애플리케이션 전용이다. 메모리 집약적인 애플리케이션이 속도가 느릴 수도 있기 때문에, 상당한 페이지 폴트 오버헤드가 있을 수도 있다. 또한, 신뢰의 체인이 확립되는 것을 증명 프로세스가 요구하기 때문에, 증명 프로세스는, LKL 엔클레이브의 초기 상태 동안 제1 증명이 수행되는 것을 필요로 할 수도 있고, 그 다음, 가상 디스크 이미지의 해시를 검증하기 위해 엔클레이브를 사용할 수도 있다.
상기 언급된 한계를 극복하기 위해, 클린 룸(300)은, 몇몇 실시형태에 따라, 수정된 Spark 프레임워크를 가질 수도 있다. Spark 및 Hadoop 조합은 다음과 같은 몇몇 수정을 필요로 할 수도 있다:
Figure pct00001
DataTimeUtils.scala를 제거함
Figure pct00002
(OS 피처를 체크하기 위해, 또는 사용자가 속하는 그룹을 찾기 위해 다수 회 사용되는) fork() 사용을 제거하거나 또는 회피함
Figure pct00003
디폴트: ShellBasedUnixGroupsMapping.java를 사용하는 것을 방지하기 위해 커스텀 그룹 백엔드를 제공함
이들 예시적인 수정은 로컬의 (단일의 노드의) 독립형 모드에서 작동하는 Spark 프레임워크를 얻을 수 있다.
몇몇 실시형태에서, 클린 룸(300)이 어떤 양의 암호화된 데이터를 수신함에 따라, 그것은 데이터 분석을 위해 데이터를 애플리케이션 마스터(1127)에게 분배할 수도 있다. 드라이버 애플리케이션(1125)은 암호화된 데이터를 수신하고 그 데이터를, 하나 이상의 데이터 분석 태스크를 수행할 하나 이상의 실행기(1127a, 1127b)로 송신할 수도 있다.
각각의 실행기 내에서, 민감한 데이터(이것은 신뢰성 있는 보안 환경에서 프로세싱되는 것을 필요로 함)와 민감하지 않은 데이터(이것은 신뢰되지 않는 환경에서 계산될 수 있음) 사이에서 별개의 실행 프로세스가 발생할 수도 있다. 이제, Spark 프레임워크 하에서의 예시적인 실행기 구조를 도시하는 도 17을 참조한다. 실행기(1127)는 다음을 포함하는 세 개의 컴포넌트를 구비할 수도 있다: 신뢰되지 않는 환경, 예컨대 신뢰되지 않는 자바 가상 머신(Java virtual machine: JVM)(1128), 신뢰성 있는 환경 예컨대 JVM(1129), 및 공유된 메모리(2003).
신뢰되지 않는 JVM(1128)은, 어떠한 고객 또는 재무 데이터도 포함하지 않는 메타데이터와 같은 민감하지 않은 데이터에 대한 데이터 분석을 수행하도록 구성될 수도 있다. 신뢰되지 않는 JVM(1128)은, 데이터의 블록의 키-값 저장소(블록 스토리지)일 수도 있는 블록 매니저를 구비할 수도 있다. 블록 매니저는 각각의 실행기에서 로컬 캐시로서 역할을 할 수도 있고, 다양한 저장소, 즉, 메모리, 디스크, 및 오프 힙(off-heap)을 사용하여 로컬 및 원격 둘 모두에서 블록을 업로딩 및 페치하기 위한 인터페이스를 제공할 수도 있다. 신뢰되지 않는 JVM(1128)은, Spark 애플리케이션에 대한 분산 컴퓨팅 플랫폼을 확립하기 위해 서로 상호 작용하는 Spark의 공용 서비스를 갖는 Spark 런타임 환경일 수도 있는 SparkEnv(2004)를 포함할 수도 있다. 신뢰되지 않는 JVM 내의 더미 태스크 러너(dummy task runner)(2006)는 단일 태스크의 실행 스레드일 수 있는데, 이것은 실행기가 태스크를 수행하도록 요청받을 때 생성될 수 있다. 더미 태스크 러너(2006)는, 신뢰성 있는 환경 내에서 프로세싱될 필요가 없는 민감하지 않은 데이터에 대해서만 태스크를 수행할 수도 있다.
신뢰성 있는 JVM(1129)은, 데이터 프로세싱 이전에 암호 해제될 수도 있는 민감한 데이터에 대한 태스크를 수행하도록 구성되는 격리된 태스크 러너(isolated task runner)(2007)를 포함할 수도 있다.
공유된 메모리(2003)는 링 버퍼 메시지 큐 및 공유된 오브젝트 영역/아레나를 포함할 수도 있다. LKL 라이브러리는 평문 공유 메모리 파일(plain text shared memory file)을 제공한다. 몇몇 실시형태에서, 공유 메모리를 통해 통신하기 위한 방법은 링 버퍼 메시지 큐를 사용하는 것이다. 링 버퍼를 구현하는 것은 잠금 구조(locking structure)에 대한 액세스를 필요로 할 수도 있다. pthread 공유 뮤텍스(mutex)가 커널 오브젝트에 의해 지원되기 때문에, 이들을 구현하는 것은 어렵고, 호스트 및 LKL 컨테이너는 별개의 커널을 구비할 수도 있다. 대신, 최소 단위 동작(스핀락(spinlock))이 하드웨어 동작에 의해 지원되기 때문에, 이들이 구현될 수도 있다.
다음은, 본 명세서에서 설명되는 몇몇 실시형태에 따른 공유된 메모리 링 버퍼에 대한 예시적인 코드이다:
Figure pct00004
몇몇 실시형태에서, 메모리 매핑된 파일 및 최소 단위 동작은 (Java 또는 Scala가 아닌) C++에서 더 효율적으로 구현된다. 예를 들면, Java로부터 기본 코드(native code)를 호출하기 위해, JNI 브리지 및 래퍼(wrapper) 클래스가 구현될 수도 있다. 다른 실시형태에서, JNA이 사용될 수 있지만, 그러나 그것은 fork()를 호출한다. 다음은, 링 버퍼 구현을 위한 프로그램 코드의 예시적인 블록이다:
Figure pct00005
도 18은, 몇몇 실시형태에 따른, Spark 프레임워크 하에서 드라이버 애플리케이션(1125)과 협력하는 예시적인 실행기 구조(1127)를 도시한다. 드라이버(1125)는 Spark 런타임 환경(SparkEnv)(2001)뿐만 아니라 암호 해제된 데이터를 위한 데이터 스토리지 영역(2002)을 포함할 수도 있는데, 데이터 스토리지 영역은 메타데이터(예를 들면, 파일 디렉토리 정보)와 같은 민감하지 않은 정보를 포함할 수도 있다.
다음은 본 명세서에서 설명되는 몇몇 실시형태에 따른 예시적인 테스트 드라이버 애플리케이션(1125)이다:
Figure pct00006
실행기(1127)는 신뢰되지 않는 JVM(1128), 공유된 메모리 통신(2003) 및 신뢰성 있는 JVM(1129)을 포함한다. 신뢰되지 않는 JVM(1128)은 SparkEnv(2004), 암호화된 데이터를 위한 데이터 스토리지 영역(2005), 및 더미 태스크 러너(2006)를 포함한다. 암호화된 데이터는 암호화된 형태로 드라이버(1125)로부터 전송될 수도 있고, 공유된 메모리 통신(2003)을 통해 암호화된 형태로 신뢰성 있는 JVM(1129)으로 전송될 수도 있다. 일단 암호화된 데이터가 신뢰성 있는 JVM(1129)에 도달하면, 그것은 암호 해제되어 암호 해제된 데이터를 위한 데이터 스토리지(2008)에 저장될 수도 있으며, 후속하여, 신뢰성 있는 JVM(1129) 내의 격리된 태스크 러너(2007)에 의해 프로세싱될 수도 있다.
도 19는, 몇몇 실시형태에 따른, 머신 러닝 아키텍처(1900) 및 데이터 플로우의 예시적인 블록 개략도이다. 보안 프로세싱을 위한 메커니즘에 대한 가상 클린 룸 플랫폼이 도시된다. 데이터는, 다른 것들 중에서도, 상인, 은행을 포함하는 다양한 소스로부터 수신된다.
도 19에 제공되는 바와 같이, 모델 타입(예를 들면, 추천자(recommender), 클러스터링) 및 데이터 세트 id를 선택하는 것에 의해 상인/데이터 소유자가 트레이닝 플로우를 개시하는 것을 허용하는 머신 러닝 API가 제공된다.
상인 파트너 컴퓨팅 디바이스는 모델에 대한 블랙 박스 액세스를 가질 것이고, 모델 트레이닝은 배치 모드 트레이닝 단계에서 수행될 수 있다. 변형예에서, 다른 트레이닝 단계는 거의 실시간의 온라인 트레이닝 AutoML 및 상호 작용식 모델 설계를 포함할 수 있다. 모델은 상이한 사용 사례에 적절한 다양한 접근법(예를 들면, K-means, 매트릭스 인수 분해(matrix factorization), 랜덤 포레스트 등)을 포함할 수 있다. 시스템은 액세스 제어 퍼미션(예를 들면, 읽기, 생성, 업데이트, 삭제), 각각의 플랫폼 파트너에 대한 그리고 그들의 하나의 부문 내에서의 역할의 명확한 묘사를 확립하는 보안 설정을 포함한다(예를 들면, 각각의 데이터 엘리먼트가 이미 정의되었기 때문에, 마케팅 및 SAI는 상이한 데이터 액세스 제어 권한을 가짐).
소스의 각각은 특정한 고객 데이터의 관리인일 수 있다. 그러나, 소스의 각각은, 예를 들면, 다양한 프라이버시 지침, 및 모범 사례(best practice)에 기인하여, 그들의 고객 데이터를 다른 파트너가 이용 가능하게 되기를 소망하지 않을 수도 있다. 보안 프로세싱은, 적절한 액세스 권한이 없는 당사자가 머신 러닝 데이터 아키텍처에서 사용되고 있는 기저의 데이터의 하나 이상의 부분에 액세스할 수 없도록 전체 계산 단계를 보호하도록 지시받는다.
데이터 세트는 이미 플랫폼에서 수집되었고, 공통 스키마에 조화되었고 은행 데이터 소유자(예를 들면, 머신 러닝 역할) 데이터 세트와 통합된 것으로 가정한다. 상인 데이터 소유자는, 선택된 모델의 파라미터, 가중치 등을 조정하는 것에 의해 선택된 모델에 대한 세부적으로 액세스할 수 없어야 한다. 상인은 모델 타입만을 명시할 수 있고, 반면 서비스 공급자는 모델을 추가로 조정할 수 있을 것이다.
데이터는 암호화된 형태로 제공되고 데이터 프로세싱 및 시스템을 위해 로딩된다. 모델 아키텍처 워크플로우 매니저는 트레이닝 활동뿐만 아니라 워크플로우 진척도에 대한 머신 모델을 편성한다. 모델 아키텍처 워크플로우 매니저는, 선택된 모델, 상인 및 은행 파트너에 적절한 특정한 데이터 세트에 대해 집성된 데이터 저장소를 조회하도록 구성된다. 프라이버시 민감 데이터 엘리먼트 또는 데이터 세트는 파트너의 데이터 프라이버시를 보장하기 위해 암호화될 것이다.
한 실시형태에서, 머신 러닝 서브 태스크를 수행하기 위해 보안 엔클레이브(예를 들면, 하드웨어이거나 또는 소프트웨어이거나, 또는 이들의 조합인 격리된 데이터 프로세서)가 활용된다. 보안 엔클레이브는, 몇몇 실시형태에서, 기저의 데이터에 안전하게 액세스하기 위해 사용되는 암호화 키(encryption key)를 저장할 수도 있다. 시스템은 점선으로 표시되는 일련의 보안 엔클레이브 프로세서를 포함하는데, 이들은 데이터 사이언스 통찰력(data science insight)을 나타내는 데이터 구조를 생성하기 위해 협력하여 동작하도록 적응된다.
예를 들면, 데이터 프로세싱은 SGX 엔클레이브 내에서 호스팅될 수 있는데, 여기서 집성된 데이터 세트는, 트레이닝 플로우에 공급되기 이전에, 추가적인 프로세싱을 위해 로딩될 것이다. 엔클레이브에서, 데이터는 암호 해제되고, 그 다음, 필요한 포맷화, 변환을 적용하고, 누락 값을 대체하고, 이상 값을 식별 및 제거하는 등을 한다. 프로세싱이 완료되면, 그 다음, 데이터는 암호화되어, 프로세싱된 데이터를 데이터베이스에 저장할 다른 컴포넌트로 전송될 것이다.
보안 엔클레이브 프로세싱은 컴퓨팅 리소스 제약과 관련한 제한으로 이어지는데, 이것은 감소된 성능 및 속도로 이어질 수도 있다. 비보안 프로세싱 패러다임에 비해, 암호화 및 액세스 제한 요건에 기인하여 증가된 복잡성이 나타난다.
따라서, 본원의 다양한 실시형태에서 설명되는 바와 같이, 강력한 프라이버시 및 강건한 보안성을 갖는 머신 러닝 데이터 아키텍처에 관한 접근법이 제안된다. 머신 러닝 아키텍처는, 몇몇 실시형태에서, 별개의 트레이닝 모델 아키텍처를 프로세싱하고 유지하는 다수의 인터커넥트된 보안 엔클레이브 프로세싱 파티션(예를 들면, 별개의 보안 엔클레이브 프로세서)을 포함한다.
몇몇 실시형태에서, 데이터 사이즈가, 예를 들면, 90MB를 초과하면, 그 다음, 그것은 분할되고, 반복적으로 전송되고, 다수의 SGX 엔클레이브에 의해 프로세싱될 필요가 있을 것이다. 특히, 보안 엔클레이브 프로세서에 의한 이용 가능한 데이터 프로세싱 성능에서의 제약에 기인하여, 데이터 파티셔닝 유닛(data partitioning unit)(1902)은, 개개의 데이터 프로세싱 파티션(1904 및 1906)이, 각각, 병렬로, 개별적으로 저장된 모델 데이터 아키텍처를 사용하여 데이터를 프로세싱하게끔 데이터를 파티셔닝하도록 적응된다. 몇몇 실시형태에서, 개개의 데이터 프로세싱 파티션(1904, 1906)은 별개의 보안 프로세싱 엔클레이브이다.
데이터 파티셔닝 유닛(1902)은, 하나 이상의 보안 엔클레이브 서브 프로세서를 프로비저닝하도록 그리고 하나 이상의 보안 엔클레이브 서브 프로세서의 각각으로 암호화된 데이터의 파티션을 송신하도록 구성되는 전자 회로로서 구현될 수 있는 파티션 컨트롤러 엔진이다.
민감 데이터 엘리먼트는, 그들이 로딩될 때 암호화된 상태로 유지된다. 엔클레이브에서, 프로세싱된 데이터는 암호 해제되고, 그 다음, 집성, 계산이 적용되어 새로운 피처를 추출할 것이다. 피처 추출이 완료되면, 그 다음, 피처 데이터 세트는 암호화될 것이다. 각각의 트레이닝 단계가 완료되면, 모델 출력, 파라미터, 가중치, 메트릭(metric)은 암호화될 것이다.
데이터가 파티션의 각각을 통해 프로세싱됨에 따라, 별개의 모델 아키텍처가 업데이트되어 업데이트된 모델 아키텍처 파라미터 데이터 구조를 생성한다. 개개의 데이터 프로세싱 파티션(1904, 1906)의 하나 이상의 보안 엔클레이브 서브 프로세서는, 하나 이상의 파라미터 업데이트 데이터 구조를 생성하기 위해, 머신 러닝 아키텍처의 로컬 사본을 사용하여 암호화된 데이터의 대응하는 파티션을 프로세싱하도록 구성된다.
파티션의 각각으로부터의 업데이트된 모델 아키텍처 파라미터 데이터 구조는 파라미터 집성 유닛(1908)(예를 들면, 그 자신의 구역일 수 있는 파라미터 서버)에서 집성된다.
파라미터 집성 유닛(1908)은 업데이트된 트레이닝된 모델 아키텍처를 저장하도록 구성되는데, 이것은, 그 다음, 보안 프로세싱 전통 기술로 다시 전파된다. 그것은 SGX 엔클레이브 내에 배치될 수 있고, 그것은 모델 파라미터, 가중치 등에 대한 모든 업데이트를 수신할 것이다. 모델은 엔클레이브를 벗어날 때 암호화될 수 있다.
몇몇 실시형태에서, 적어도 두 개의 보안 엔클레이브 서브 프로세서(1904 및 1906)는, 머신 러닝 아키텍처의 대응하는 로컬 사본을 업데이트하기 위해, 서로 사이에서 하나 이상의 파라미터 업데이트 데이터 구조를 직접적으로 송신하도록 구성된다.
몇몇 실시형태의 이러한 아키텍처는 보안 엔클레이브 파티션의 감소된 스루풋에 관련되는 기술적 제약을 극복함에 있어서 도움이 된다. 예를 들면, 몇몇 보안 엔클레이브 파티션은 대략 90MB 이하의 모델 아키텍처 사이즈로 제한된다. 따라서, 전체적인 보안 프로세싱을 제공하기 위해, 다수의 조정된 파티션이 협력하여 동작한다.
트레이닝된 모델, 그것의 파라미터, 가중치 등은 예측/채점 매커니즘에 의해 계속 추가로 사용된다.
다른 실시형태에서, 엔클레이브 파티션은 또한, 예측 결과에 대해 이전에 트레이닝된 모델을 조회할 수 있는, 예를 들면, 파트너에 대한 출력 API를 통해 이용 가능하게 만들어지는 애그리게이터 프로세서로부터 트레이닝된 모델에서 업데이트된 파라미터를 수신하는 것과는 대조적으로, 엔클레이브 파티션이 결정된 파라미터를 서로 간에 공유할 수 있도록 병렬 동작 동안 서로와의 상호 접속을 가지도록 구성된다. 그것은 머신 러닝 예측을 적용하기 위해 파트너 id, 모델 타입 및 데이터 레코드를 입력으로서 수신할 것이다. API는 예측 결과를 사용자에게 다시 출력할 수 있다.
몇몇 실시형태에서 설명되는 바와 같은 머신 러닝 및 보안 러닝을 위한 애플리케이션은, 예를 들면, 식별자의 트레이닝 세트와의 유사성에 기초하여 클러스터를 식별하기 위한 고객 식별자의 서브세트를 포함하는 머신 러닝 모델 아키텍처에 의한 데이터 구조의 생성을 포함한다.
예를 들면, 식별자의 트레이닝 세트는 고수익 충성 고객을 포함할 수 있고, 트레이닝된 모델 아키텍처는, 트레이닝 세트 내에 있지 않지만, 그러나 잠재적인 타깃으로서 간과될 수도 있는 타깃 고객을 식별하기 위해 활용될 수 있다. 이 예에서는, 미승인 사용자에 의해 이루어지는, 민감한 고객 데이터를 포함할 수 있는 기저의 데이터의 어떠한 미승인 액세스도 존재하지 않는 것을 보장하기 위해 보안 머신 러닝 데이터 아키텍처를 사용하는 보안 프로세싱이 사용된다. 보안 엔클레이브 프로세서는, 예를 들면, 상인이, 특히 그러한 상인이 고객 프로파일의 관리인이 아닌 경우, 고객 프로파일을 전체적으로 보지 않을 것을 보장하기 위해 사용된다.
예측은, 예를 들면, 득점 결과를 예측하기 위한 실제 계산을 수행하는 SGX 엔클레이브로서 배치되는 트레이닝된 모델을 활용한다. 트레이닝된 모델 아키텍처 및 입력 데이터 레코드는, 예측 점수, 신뢰도 메트릭 등을 캡슐화하는 하나 이상의 데이터 구조를 출력하는 예측 엔진에 제공된다. 예측 결과(모델 id, 모델 타입, 파트너 id, 예측 점수, 입력 레코드)는 추가적인 성능 모니터링을 위해 데이터베이스에 기록될 수 있다.
도 20은 상이한 계층의 고객에 대한 리소스 할당을 도시하는 예시적인 예시이다. 이 예에서, 상인은 계층 1 고객을 알아채고 서비스하기 위해 그들의 주요 리소스를 집중한다는 것이 관찰된다.
상인은 계층 2 및 계층 3 고객층(customer base)을 타깃으로 하는 리소스를 증대시키기 위해 외부 회사를 활용할 수 있다. 금융 기관(financial institution: FI)과 같은 다른 기관이, (i) 그들의 계층 1 고객(충성 멤버(loyalty member) 및 비 충성 멤버)을 분석하고 (ii) 통찰력을 적용하여 고객을 계층 2에서부터 계층 1로 유도할 머신 러닝 메커니즘을 제공할 기회가 존재한다. FI의 수평 데이터는, 상인 파트너에 대한 전환을 유도하기 위한 통찰력을 더 잘 평가하고 적용하기 위해 활용될 수 있어서, 충성도 및 수익에서의 증가로 나타날 수 있다. 마찬가지로, 머신 러닝 모델은 계층 3+ 고객을 전환하기 위해 사용될 수 있다.
도 21은, 몇몇 실시형태에 따른, 두 개의 상이한 데이터 세트의 고객 사이의 크로스 오버 및 타깃팅 기회의 영역을 도시하는 예시적인 벤 다이어그램(2100)이다. 상인으로서, 목표는, SKU 제안을 가지고 가게에서 쇼핑하지 않는 신규 고객과 교류하려는 소망일 수도 있다.
중첩 영역은 머신 러닝 모델 아키텍처를 트레이닝시키기 위해 사용되는 고객을 포함한다. 따라서, 페르소나 속성(persona attribute)은 머신 러닝 모델을 트레이닝시키는 것에 의해 추출 가능하다. 예를 들면, 상인은 상인이 이동하기를 원하는 Bose 1234 스피커의 공급 과잉을 가질 수도 있다. 시스템은 Bose 1234 스피커를 구입했던 FI + M1 고객의 아이덴티티를 사용하여 모델을 트레이닝시키는데, 모델은 그들의 페르소나 속성(예를 들면, 위치, 연령, 상태)을 식별한다.
일단 머신 러닝 모델이 트레이닝되면, 머신 러닝 모델은, 타깃으로 삼을 잠재적 고객을 식별하기 위해, 상인 한 명의 고객 세트 또는 금융 기관의 고객 세트 중 어느 하나로부터의 새로운 페르소나에 대해 적용될 수 있다. 이 예에서는, 새로 식별된 고객에게 송신될 수 있는 스피커 구매에 대한 제안이 있을 수도 있다. 이 경우, 머신 러닝 모델 아키텍처는 고객의 타깃의 식별자를 캡슐화하는 데이터 구조를 제공할 것인데, 이것은 자동 제안 생성 및 분배를 위한 머신 명령어를 생성하기 위해 사용될 수도 있다. 페르소나 속성은 M1 고객이 아닌 FI 클라이언트에 대해 적용되고, 시스템은 그들 FI 클라이언트에 대한 Bose 1234 스피커에 대한 SKU 제안의 전송을 제어할 수도 있다.
도 22 및 도 23은 생성된 추천의 예를 도시한다.
도 22는, 몇몇 실시형태에 따른, 생성된 추천을 나타내는 그래픽 위젯을 도시하도록 적응되는 그래픽 사용자 인터페이스의 예시적인 렌더링(2200)이다. 이 렌더링에서, 이 경우에서는, 추천에 대한 이론적 근거로 이어질 수도 있는 속성을 또한 나타내는, 페르소나의 타깃 세트를 생성하는 추천 위젯을 포함하는 제안 생성 상인 포털 대시보드(offer generation merchant portal dashboard)가 제공된다. 이 접근법은 오디언스 빌더에 적용되는 선택 기준을 향상시키기 위해 사용될 수 있으며, 도 21의 제안 캠페인에서 제공되는 정보에 기초한 추천 오디언스에 기초하여 오디언스를 셋업하기 위한 프로세스의 자동화를 제공할 수도 있다.
도 23은, 몇몇 실시형태에 따른, 생성된 추천을 나타내는 그래픽 위젯 바를 도시하도록 적응되는 그래픽 사용자 인터페이스의 예시적인 렌더링(2300)이다. 이 위젯 바에서는, 타깃으로 될 수도 있는 고객 및 머신 러닝 데이터 아키텍처의 머신 러닝 출력에 기초하여 이들 고객이 타깃으로 될 이유에 대한 이론적 근거를 나타내는 다수의 추천이 표시되어 있다.
시스템은 VCR 코어의 데이터를 평가하고 (i) 매력적인 오디언스를 식별하고 (ii) 상인이 고려해야 하는 제안 캠페인을 제시한다. 예: VCR은, 부의 증가, 환경에 대한 긍정적인 감성 및 장거리 여행 때문에 전기 자동차를 구매할 높은 가능성을 갖는 25만 명의 고객이 있다는 것을 밝혀낸다. 이 오디언스 세그먼트에게 $ 1000 제안을 사용할 것을 VCR의 파트너인 CarCo에게 추천한다.
도 24는, 몇몇 실시형태에 따른, 예시적인 생산 환경 및 데이터 플로우의 예시이다. 이 변형 예에서, 금융 기관 및 상인 둘 모두는 대응하는 전용 컨테이너화된 환경(private containerized environment)을 각각 가지고 있다. 상인의 데이터는, 상인이 구매를 SKU 레벨에서 판매되고 있는 실제 제품 또는 서비스와 연결하는 것을 허용하는 SKU 데이터에 의해 통지될 수도 있다.
도 12는 서버와 같은 컴퓨팅 디바이스(1200)의 개략도이다. 묘사되는 바와 같이, 컴퓨팅 디바이스는 적어도 하나의 프로세서(1202), 메모리(1204), 적어도 하나의 I/O 인터페이스(1206), 및 적어도 하나의 네트워크 인터페이스(1208)를 포함한다.
프로세서(1202)는 Intel(인텔) 또는 AMD x86 또는 x64, PowerPC, ARM 프로세서 등일 수도 있다. 메모리(1204)는, 예를 들면, 랜덤 액세스 메모리(random-access memory: RAM), 판독 전용 메모리(read-only memory: ROM), 컴팩트 디스크 판독 전용 메모리(compact disc read-only memory: CDROM)와 같은, 내부 또는 외부 중 어느 하나에 위치되는 컴퓨터 메모리의 적절한 조합을 포함할 수도 있다.
각각의 I/O 인터페이스(1206)는, 컴퓨팅 디바이스(1200)가, 키보드, 마우스, 카메라, 터치 스크린 및 마이크와 같은 하나 이상의 입력 디바이스와, 또는 디스플레이 스크린 및 스피커와 같은 하나 이상의 출력 디바이스와 인터커넥트되는 것을 가능하게 한다.
각각의 통신 인터페이스(1208)는, 인터넷, 이더넷, 기존 전화 서비스(POTS) 회선, 공중 교환식 전화망(PSTN), 통합 서비스 디지털 네트워크(ISDN), 디지털 가입자 회선(DSL), 동축 케이블, 광섬유, 위성, 모바일, 무선(예를 들면, Wi-Fi, WiMAX), SS7 시그널링 네트워크, 유선, 근거리 통신망, 광역 네트워크, 및 다른 것을 포함하는 데이터를 전달할 수 있는 네트워크(또는 다수의 네트워크)에 연결되는 것에 의해, 컴퓨팅 디바이스(1200)가 다른 컴포넌트와 통신하는 것, 다른 컴포넌트와 데이터를 교환하는 것, 네트워크 리소스에 액세스하여 연결되는 것, 애플리케이션을 서빙하는 것, 및 다른 컴퓨팅 애플리케이션을 수행하는 것을 가능하게 한다.
컴퓨팅 디바이스(1200)은, 애플리케이션, 로컬 네트워크, 네트워크 리소스, 다른 네트워크 및 네트워크 보안 디바이스에 대한 액세스를 제공하기 이전에 (예를 들면, 로그인, 고유 식별자, 및 패스워드를 사용하여) 사용자를 등록하고 인증하도록 동작 가능하다. 컴퓨팅 디바이스(1200)는 한 명의 사용자 또는 다수의 사용자를 서빙할 수도 있다.
도 13은 TEE를 갖는 플랫폼(100)에 의해 실행되는 예시적인 플로우차트(1300)를 설명한다. 단계(1310)에서, 플랫폼(100)은 파트너 시스템(115)의 아이덴티티를 검증할 수도 있다. 단계(1320)에서, 플랫폼(100)은, 파트너의 아이덴티티의 검증시, 소비자 데이터를 암호화하기 위한 통신 키를 파트너 시스템(115)에게 발행할 수도 있다. 단계(1330)에서, 플랫폼(100)은 통신 키를 사용하여 암호화되는 암호화된 데이터를 파트너로부터 수신할 수도 있다. 단계(1340)에서, 플랫폼(100)은 TEE 내에서의 암호화된 데이터의 미승인 액세스를 방지하기 위해, 저장 키와 함께 암호화된 데이터를 저장할 수도 있다. 단계(1350)에서, 플랫폼(100)은 암호화된 데이터를 암호 해제하고 분석하여 암호 해제된 데이터에 기초하여 추천을 생성할 수도 있다.
본 명세서에서 설명되는 디바이스, 시스템 및 프로세스의 실시형태는 하드웨어와 소프트웨어 둘 모두의 조합으로 구현될 수도 있다. 이들 실시형태는 프로그래머블 컴퓨터 상에서 구현될 수도 있는데, 각각의 컴퓨터는 적어도 하나의 프로세서, 데이터 스토리지 시스템(휘발성 메모리 또는 불휘발성 메모리 또는 다른 데이터 스토리지 엘리먼트 또는 이들의 조합을 포함함), 및 적어도 하나의 통신 인터페이스를 포함한다.
프로그램 코드는 본 명세서에서 설명되는 기능을 수행하기 위해 그리고 출력 정보를 생성하기 위해 입력 데이터에 적용된다. 출력 정보는 하나 이상의 출력 디바이스에 적용된다. 몇몇 실시형태에서, 통신 인터페이스는 네트워크 통신 인터페이스일 수도 있다. 엘리먼트가 결합될 수도 있는 실시형태에서, 통신 인터페이스는, 프로세스간 통신을 위한 것과 같은 소프트웨어 통신 인터페이스일 수도 있다. 여전히 다른 실시형태에서, 하드웨어, 소프트웨어, 및 이들의 조합으로 구현되는 통신 인터페이스의 조합이 있을 수도 있다.
전술한 논의를 통해, 제어 및 컴퓨팅 디바이스에 관한 수많은 참조가 이루어질 수도 있다. 그러한 용어의 사용은, 컴퓨터 판독 가능한 유형의 비일시적 매체 상에 저장되는 소프트웨어 명령어를 실행하도록 구성되는 적어도 하나의 프로세서를 갖는 하나 이상의 컴퓨팅 디바이스를 나타낼 수도 있다는 것이 인식되어야 한다. 예를 들면, 플랫폼(100)은, 설명된 역할, 책임, 또는 기능을 이행하는 방식으로 웹 서버, 데이터베이스 서버, 또는 다른 타입의 컴퓨터 서버에 커플링되는 하나 이상의 컴퓨터를 포함하는 서버를 가질 수도 있다.
전술한 논의는 많은 예시적인 실시형태를 제공한다. 비록 각각의 실시형태가 본 발명의 엘리먼트의 단일의 조합을 나타내지만, 다른 예는 개시된 엘리먼트의 모든 가능한 조합을 포함할 수도 있다. 따라서, 하나의 실시형태가 엘리먼트 A, B 및 C를 포함하고, 제2 실시형태가 엘리먼트 B 및 D를 포함하는 경우, A, B, C, 또는 D의 다른 나머지 조합이 또한 사용될 수도 있다.
용어 "연결되는(connected)" 또는 "~에 커플링되는(coupled to)"은, 직접적인 커플링(이 경우, 서로 커플링되는 두 개의 엘리먼트는 서로 접촉함) 및 간접적인 커플링(이 경우, 적어도 하나의 추가적인 엘리먼트가 두 엘리먼트 사이에 위치됨) 둘 모두를 포함할 수도 있다.
실시형태의 기술적 솔루션은, 물리적 동작을 지시하는 소프트웨어 제품의 형태일 수도 있다. 소프트웨어 제품은 컴팩트 디스크 판독 전용 메모리(CD-ROM), USB 플래시 디스크, 또는 착탈식(removable) 하드 디스크일 수 있는 불휘발성의 또는 비일시적 저장 매체에 저장될 수도 있다. 소프트웨어 제품은, 컴퓨터 디바이스(퍼스널 컴퓨터, 서버, 또는 네트워크 디바이스)가 실시형태에 의해 제공되는 프로세스를 실행하는 것을 가능하게 하는 다수의 명령어를 포함한다.
본 명세서에서 설명되는 실시형태는, 컴퓨팅 디바이스, 서버, 수신기, 송신기, 프로세서, 메모리, 디스플레이, 및 네트워크를 비롯한, 물리적 컴퓨터 하드웨어에 의해 구현된다. 본 명세서에서 설명되는 실시형태는 유용한 물리적 머신 및 특별히 구성된 컴퓨터 하드웨어 배열을 제공한다. 본 명세서에서 설명되는 실시형태는, 다양한 타입의 정보를 나타내는 전자기 신호를 프로세싱 및 변환하도록 적응되는 전자 머신 및 전자 머신에 의해 구현되는 프로세스에 관한 것이다. 본 명세서에서 설명되는 실시형태는 머신, 및 그들의 사용에 포괄적으로 그리고 통합적으로 관련되고; 본 명세서에서 설명되는 실시형태는 컴퓨터 하드웨어, 머신, 및 다양한 하드웨어 컴포넌트와의 그들의 사용 외에는 어떠한 의미있는 또는 실용적인 적용 가능성을 가지지 않는다. 예를 들면, 정신적 단계를 사용하여, 비 물리적 하드웨어에 대한 다양한 액트(act)를 구현하도록 특별히 구성되는 물리적 하드웨어를 대체하는 것은, 실시형태가 작동하는 방식에 실질적으로 영향을 끼칠 수도 있다. 그러한 컴퓨터 하드웨어 제한은 본 명세서에서 설명되는 실시형태의 명확하게 필수적인 엘리먼트이며, 그들은 본 명세서에서 설명되는 실시형태의 동작 및 구조에 대해 실질적인 영향을 주지 않고서는 생략되거나 또는 정신적 수단을 대신할 수 없다. 컴퓨터 하드웨어는 본 명세서에서 설명되는 다양한 실시형태를 구현하는 데 필수적이며, 단지 단계를 신속하고 효율적인 방식으로 수행하기 위해서 사용되는 것은 아니다.
플랫폼(100)은 적어도 하나의 프로세서, 데이터 스토리지 디바이스(휘발성 메모리 또는 불휘발성 메모리 또는 다른 데이터 스토리지 엘리먼트 또는 이들의 조합을 포함함) 및 적어도 하나의 통신 인터페이스를 갖는 컴퓨팅 디바이스로서 구현될 수도 있다. 컴퓨팅 디바이스 컴포넌트는, 직접적으로 커플링되는 것, 네트워크를 통해 간접적으로 커플링되는 것, 및 넓은 지리적 영역에 걸쳐 분산되고 네트워크를 통해 연결되는 것(이것은 "클라우드 컴퓨팅"으로 지칭될 수도 있음)을 포함하는 다양한 방식으로 연결될 수도 있다.
예를 들면, 그리고 제한 없이, 컴퓨팅 디바이스는 서버, 네트워크 어플라이언스(network appliance), 마이크로전자기계 시스템(microelectromechanical system: MEMS) 또는 마이크로사이즈의 기계적 디바이스, 셋탑 박스, 임베딩된 디바이스, 컴퓨터 확장 모듈, 퍼스널 컴퓨터, 랩탑, 개인 휴대형 정보 단말(personal data assistant), 셀룰러 전화, 스마트폰 디바이스, UMPC 태블릿, 비디오 디스플레이 단말, 게이밍 콘솔, 전자 판독 디바이스, 및 무선 하이퍼미디어 디바이스 또는 본 명세서에서 설명되는 프로세스를 실행하도록 구성될 수 있는 임의의 다른 컴퓨팅 디바이스일 수도 있다.
프로세서는, 예를 들면, 마이크로프로세서 또는 마이크로컨트롤러, 디지털 신호 프로세싱(DSP) 프로세서, 집적 회로, 필드 프로그래머블 게이트 어레이(FPGA), 재구성 가능 프로세서, 프로그래머블 판독 전용 메모리(programmable read-only memory: PROM), 또는 이들의 조합일 수도 있다.
데이터 스토리지 디바이스는 내부 또는 외부 중 어느 하나에 위치되는 임의의 타입의 컴퓨터 메모리의 적절한 조합을 포함할 수도 있다.
컴퓨팅 디바이스는 컴퓨팅 디바이스가 하나 이상의 입력 디바이스, 예컨대 키보드, 마우스, 카메라, 터치 스크린 및 마이크와, 또는 하나 이상의 출력 디바이스, 예컨대 디스플레이 스크린 및 스피커와 인터커넥트되는 것을 가능하게 하기 위한 I/O 인터페이스를 포함할 수도 있다.
비록 실시형태가 상세하게 설명되었지만, 다양한 변경예, 대체예 및 수정예가 본 명세서에서 이루어질 수 있다는 것이 이해되어야 한다.
또한, 본 출원의 범위는, 본 명세서에서 설명되는 프로세스, 머신, 제조, 재료의 조성, 수단, 프로세스 및 단계의 특정한 실시형태로 제한되도록 의도되지는 않는다. 기술 분야의 숙련된 자는, 본 발명의 개시로부터, 본 명세서에서 설명되는 대응하는 실시형태가 활용될 수도 있는 것과 실질적으로 동일한 기능을 수행하는 또는 실질적으로 동일한 결과를 달성하는, 현재 현존하는 또는 나중에 개발될, 프로세스, 머신, 제조, 재료의 조성, 수단, 프로세스, 또는 단계를 쉽게 인식할 것이다. 따라서, 첨부된 청구범위는 그러한 프로세스, 머신, 제조, 재료의 조성, 수단, 프로세스, 또는 단계를 그들의 범위 내에 포함하도록 의도된다.
이해할 수 있는 바와 같이, 상기에서 설명되고 예시되는 예는 단지 예시적인 것이 되도록 의도된다.
출원인은, 설명된 실시형태 및 예가 예시적이고 비제한적임을 주목한다. 피처의 실제 구현은, 양태 중 일부 또는 모두의 조합을 통합할 수도 있고, 본 명세서에서 설명되는 피처는 미래의 또는 현존하는 제품 계획의 표시로서 간주되어서는 안된다. 출원인은 기초 및 응용 연구 둘 모두에 참가하며, 몇몇 경우에, 설명되는 피처는 탐구 기반으로 개발된다.

Claims (20)

  1. 격리된 데이터 프로세싱 서브시스템(isolated data processing subsystem)을 유지하는 신뢰성 있는 실행 환경(trusted execution environment)을 위한 컴퓨터 구현 시스템으로서,
    오퍼레이팅 시스템 및 커널 시스템 둘 모두가 액세스 불가능하도록 암호화되는 보호된 메모리 영역을 갖는 컴퓨터 판독 가능 메모리로서, 상기 보호된 메모리 영역은 적어도 데이터 스토리지 영역 및 상기 격리된 데이터 프로세싱 서브시스템을 유지하는 데이터 프로세싱 서브시스템 스토리지 영역을 포함하는, 상기 컴퓨터 판독 가능 메모리;
    컴퓨터 판독 가능 캐시 메모리; 및
    보안 엔클레이브 데이터 프로세서(secure enclave data processor)를 포함하되, 상기 보안 엔클레이브 데이터 프로세서는,
    복수의 대응하는 파트너 컴퓨팅 디바이스로부터 하나 이상의 데이터 세트를 개별적으로 수신하도록 구성되는 파트너 데이터 수신기로서, 상기 하나 이상의 데이터 세트의 각각은 상기 파트너 컴퓨팅 디바이스의 각각에 대응하는 개인 키에 의해 디지털적으로 서명되고, 상기 파트너 데이터 수신기는 상기 파트너 컴퓨팅 디바이스의 상기 디지털 서명의 유효성을 확인하도록 구성되고;
    (i) 상기 보호된 메모리 영역의 일부를 상기 컴퓨터 판독 가능 캐시 메모리로 로딩하도록, (ii) 상기 하나 이상의 유효성이 확인된 데이터 세트를 상기 보호된 메모리 영역 내의 상기 데이터 스토리지 영역의 상기 로딩된 부분에 기록하도록, 그리고 (iii) 상기 기록에 후속하여 상기 보호된 메모리 영역의 상기 일부를 언로딩하고 암호화하도록 구성된, 상기 파트너 데이터 수신기; 및
    상기 데이터 프로세싱 서브시스템으로 쿼리 데이터 메시지를 송신하도록 그리고 상기 보호된 메모리 영역에 저장되는 상기 하나 이상의 데이터 세트에 기초하여 생성되는 상기 데이터 프로세싱 서브시스템에 의해 생성되는 출력 데이터 구조를 수신하도록 구성되는 데이터 프로세싱 서브시스템 상호 작용 엔진
    을 제공하도록 구성되는, 컴퓨터 구현 시스템.
  2. 제1항에 있어서, 상기 격리된 데이터 프로세싱 서브시스템은, 상기 쿼리 데이터 메시지에 응답하여 상기 출력 데이터 구조를 생성하기 위해 협력하여 동작하는 일련의 인터커넥트된 컴퓨팅 노드를 포함하는 격리된 머신 러닝 데이터 모델 아키텍처를 유지하되, 상기 인터커넥트된 컴퓨팅 노드는, 상기 복수의 파트너 컴퓨팅 디바이스의 적어도 두 개의 파트너 컴퓨팅 디바이스로부터의 데이터를 나타내는 유효성 확인 세트 또는 트레이닝 세트로서 상기 보호된 메모리 영역 내의 상기 데이터 스토리지 영역 내의 상기 하나 이상의 유효성이 확인된 데이터 세트 중 적어도 일부를 사용하여 다수의 트레이닝 시기(training epoch)에 걸쳐 트레이닝되는 동적으로 수정된 기능을 나타내는 일련의 가중치 및 필터를 포함하고, 상기 쿼리 데이터 메시지는 상기 동적으로 수정된 기능을 트리거하여 상기 출력 데이터 구조를 생성하는, 컴퓨터 구현 시스템.
  3. 제1항에 있어서, 상기 파트너 데이터 수신기는, 상기 하나 이상의 대응하는 파트너 컴퓨팅 디바이스 중의 파트너 컴퓨팅 디바이스에 각각 대응하는 공개/개인 키 쌍을 생성하도록, 그리고 파트너 컴퓨팅 디바이스에 대응하는 상기 개인 키를 상기 파트너 컴퓨팅 디바이스로 송신하도록 더 구성되는, 컴퓨터 구현 시스템.
  4. 제1항에 있어서, 상기 보호된 메모리 영역을 갖는 상기 컴퓨터 판독 가능 메모리는 DRAM 상에 저장되는, 컴퓨터 구현 시스템.
  5. 제1항에 있어서, 상기 보호된 메모리 영역을 상기 컴퓨터 판독 가능 캐시 메모리로 암호 해제하는 데 필요한 상기 키는 상기 보안 엔클레이브 데이터 프로세서 내에 저장되고 상기 보안 엔클레이브 데이터 프로세서 외부에서는 액세스 불가능한, 컴퓨터 구현 시스템.
  6. 제1항에 있어서, 상기 보호된 메모리 영역을 상기 컴퓨터 판독 가능 캐시 메모리로 암호 해제하는 데 필요한 상기 키는 원래 넌스 항(nonce term)을 가지고 생성되고, 상기 넌스 항은 상기 보안 엔클레이브 데이터 프로세서 내에 저장되고 상기 보안 엔클레이브 데이터 프로세서 외부에서는 액세스 불가능한, 컴퓨터 구현 시스템.
  7. 제1항에 있어서, 상기 시스템의 보안성의 유효성을 확인하기 위해 보안 엔클레이브 데이터 프로세서에 의해 원격 증명 프로세스(remote attestation process)가 주기적으로 행해지되, 상기 원격 증명 프로세스는, 디피 헬만(Diffie Hellman) 메시지를 포함하는 원격 증명 페이로드(remote attestation payload)를 상기 보안 엔클레이브 데이터 프로세서로 송신하는 것을 포함하는, 컴퓨터 구현 시스템.
  8. 제1항에 있어서, 상기 시스템의 보안성의 유효성을 확인하기 위해 보안 엔클레이브 데이터 프로세서에 의해 원격 증명 프로세스가 주기적으로 행해지되, 상기 원격 증명 프로세스는, 상기 보안 엔클레이브 데이터 프로세서가 원격 증명 트랜스크립트 데이터 구조(remote attestation transcript data structure)를 생성하는 것 및 상기 원격 증명 트랜스크립트 데이터 구조를, 부호가 있는 챌린지 페이로드(signed challenge payload) 및 새로운 디피 헬만 메시지 페이로드와 함께 송신하는 것을 포함하는, 컴퓨터 구현 시스템.
  9. 제2항에 있어서, 상기 보안 엔클레이브 데이터 프로세서는,
    하나 이상의 보안 엔클레이브 서브 프로세서를 프로비저닝하도록 그리고 상기 보호된 메모리 영역의 파티션을 상기 하나 이상의 보안 엔클레이브 서브 프로세서의 각각으로 송신하도록 구성되는 파티션 컨트롤러 엔진;
    상기 하나 이상의 보안 엔클레이브 서브 프로세서는, 하나 이상의 파라미터 업데이트 데이터 구조를 생성하기 위해, 상기 머신 러닝 데이터 모델 아키텍처의 로컬 사본을 사용하여 상기 보호된 메모리 영역의 상기 대응하는 파티션을 프로세싱하도록 구성됨; 및
    상기 하나 이상의 보안 엔클레이브 서브 프로세서의 각각으로부터, 상기 하나 이상의 파라미터 업데이트 데이터 구조를 수신하도록, 그리고 상기 머신 러닝 데이터 모델 아키텍처의 적어도 하나의 파라미터를 개선하기 위해 상기 하나 이상의 파라미터 업데이트 데이터 구조를 프로세싱하도록 구성되는 파티션 집성 엔진(partition aggregation engine)으로서, 상기 머신 러닝 데이터 모델 아키텍처는 상기 머신 러닝 데이터 모델 아키텍처의 대응하는 로컬 사본을 업데이트하기 위해 상기 하나 이상의 보안 엔클레이브 서브 프로세서로의 분배를 위한 것인, 상기 파티션 집성 엔진
    을 제공하도록 구성되는, 컴퓨터 구현 시스템.
  10. 제9항에 있어서, 상기 머신 러닝 데이터 모델 아키텍처의 상기 대응하는 로컬 사본을 업데이트하기 위해, 서로 사이에서 하나 이상의 파라미터 업데이트 데이터 구조를 직접적으로 송신하도록 구성되는 제1 보안 엔클레이브 서브 프로세서 및 제2 보안 엔클레이브 서브 프로세서를 비롯한, 적어도 두 개의 보안 엔클레이브 서브 프로세서가 존재하는, 컴퓨터 구현 시스템.
  11. 격리된 데이터 프로세싱 서브시스템을 유지하는 신뢰성 있는 실행 환경을 위한 컴퓨터 구현 방법으로서, 상기 방법은, 상기 신뢰성 있는 실행 환경을 구현하는 컴퓨팅 디바이스의 커널 시스템 및 오퍼레이팅 시스템이 액세스 불가능하도록 암호화되는 보호된 메모리 영역을 갖는 컴퓨터 판독 가능 메모리 상에서 동작하되, 상기 보호된 메모리 영역은 적어도 데이터 스토리지 영역 및 상기 격리된 데이터 프로세싱 서브시스템을 유지하는 데이터 프로세싱 서브시스템 스토리지 영역을 포함하고, 상기 방법은,
    하나 이상의 대응하는 파트너 컴퓨팅 디바이스로부터 하나 이상의 데이터 세트를 수신하는 단계로서, 상기 하나 이상의 데이터 세트의 각각은 상기 파트너 컴퓨팅 디바이스의 각각에 대응하는 개인 키에 의해 디지털적으로 서명되는, 상기 하나 이상의 데이터 세트를 수신하는 단계;
    상기 파트너 컴퓨팅 디바이스의 상기 디지털 서명의 유효성을 확인하는 단계;
    상기 보호된 메모리 영역의 일부를 컴퓨터 판독 가능 캐시 메모리로 로딩하는 단계;
    상기 하나 이상의 유효성이 확인된 데이터 세트를 상기 보호된 메모리 영역 내의 상기 데이터 스토리지 영역의 상기 로딩된 부분에 기록하는 단계;
    상기 기록에 후속하여 상기 보호된 메모리 영역의 상기 일부를 언로딩하고 암호화하는 단계;
    쿼리 데이터 메시지를 상기 데이터 프로세싱 서브시스템으로 송신하는 단계;
    출력 데이터 구조를 생성하기 위해 상기 하나 이상의 대응하는 파트너 컴퓨팅 디바이스로부터의 상기 하나 이상의 데이터 세트 또는 그 집성체(aggregate)를 입력으로서 수신하는 프로세싱 기능에 기초하여 상기 쿼리 데이터 메시지를 프로세싱하는 단계를 포함하는, 컴퓨터 구현 방법.
  12. 제11항에 있어서, 상기 격리된 데이터 프로세싱 서브시스템은, 상기 쿼리 데이터 메시지에 응답하여 상기 출력 데이터 구조를 생성하기 위해 협력하여 동작하는 일련의 인터커넥트된 컴퓨팅 노드를 포함하는 격리된 머신 러닝 데이터 모델 아키텍처를 유지하되, 상기 인터커넥트된 컴퓨팅 노드는, 유효성 확인 세트 또는 트레이닝 세트로서 상기 보호된 메모리 영역 내의 상기 데이터 스토리지 영역 내의 상기 하나 이상의 유효성이 확인된 데이터 세트 중 적어도 일부를 사용하여 다수의 트레이닝 시기에 걸쳐 트레이닝되는 동적으로 수정된 기능을 나타내는 일련의 가중치 및 필터를 포함하고;
    프로세싱 기능에 기초한 상기 쿼리 데이터 메시지의 상기 프로세싱은 상기 출력 데이터 구조를 생성하기 위해 상기 동적으로 수정된 기능을 상기 쿼리 데이터 메시지에 적용하는 것을 포함하는, 컴퓨터 구현 방법.
  13. 제11항에 있어서, 상기 파트너 데이터 수신기는 상기 하나 이상의 대응하는 파트너 컴퓨팅 디바이스 중의 파트너 컴퓨팅 디바이스에 각각 대응하는 공개/개인 키 쌍을 생성하도록 더 구성되고, 상기 방법은,
    상기 파트너 컴퓨팅 디바이스에 대응하는 상기 개인 키를 상기 파트너 컴퓨팅 디바이스로 송신하는 단계를 포함하는, 컴퓨터 구현 방법.
  14. 제11항에 있어서, 상기 보호된 메모리 영역을 갖는 상기 컴퓨터 판독 가능 메모리는 DRAM 상에 저장되는, 컴퓨터 구현 방법.
  15. 제11항에 있어서, 상기 보호된 메모리 영역을 상기 컴퓨터 판독 가능 캐시 메모리로 암호 해제하는 데 필요한 상기 키는 보안 엔클레이브 데이터 프로세서 내에 저장되고 상기 보안 엔클레이브 데이터 프로세서 외부에서는 액세스 불가능한, 컴퓨터 구현 방법.
  16. 제11항에 있어서, 상기 보호된 메모리 영역을 상기 컴퓨터 판독 가능 캐시 메모리로 암호 해제하는 데 필요한 상기 키는 원래 넌스 항을 가지고 생성되고, 상기 넌스 항은 상기 보안 엔클레이브 데이터 프로세서 내에 저장되고 상기 넌스 항은 상기 보안 엔클레이브 데이터 프로세서 외부에서는 액세스 불가능한, 컴퓨터 구현 방법.
  17. 제11항에 있어서, 보안성 유효성 확인을 위한 원격 증명 프로세스를 주기적으로 행하는 단계를 포함하되, 상기 원격 증명 프로세스는 디피 헬만 메시지를 포함하는 원격 증명 페이로드를 상기 보안 엔클레이브 데이터 프로세서로 송신하는 것을 포함하는, 컴퓨터 구현 방법.
  18. 제11항에 있어서, 보안성 유효성 확인을 위한 원격 증명 프로세스를 주기적으로 행하는 단계를 포함하되, 상기 원격 증명 프로세스는, 상기 보안 엔클레이브 데이터 프로세서에 의해, 원격 증명 트랜스크립트 데이터 구조를 생성하는 것 및 상기 원격 증명 트랜스크립트 데이터 구조를, 부호가 있는 챌린지 페이로드 및 새로운 디피 헬만 메시지 페이로드와 함께 상기 하나 이상의 컴퓨팅 디바이스로 송신하는 것을 포함하는, 컴퓨터 구현 방법.
  19. 제12항에 있어서, 하나 이상의 보안 엔클레이브 서브 프로세서를 프로비저닝하고 상기 보호된 메모리 영역의 파티션을 상기 하나 이상의 보안 엔클레이브 서브 프로세서의 각각으로 송신하는 단계;
    하나 이상의 파라미터 업데이트 데이터 구조를 생성하기 위해 상기 머신 러닝 데이터 모델 아키텍처의 로컬 사본을 사용하여 상기 보호된 메모리 영역의 대응하는 파티션을 프로세싱하는 단계;
    상기 하나 이상의 보안 엔클레이브 서브 프로세서의 각각으로부터, 상기 하나 이상의 파라미터 업데이트 데이터 구조를 수신하는 단계;
    상기 머신 러닝 데이터 모델 아키텍처의 적어도 하나의 파라미터를 개선하기 위해 상기 하나 이상의 파라미터 업데이트 데이터 구조를 프로세싱하는 단계; 및
    상기 머신 러닝 데이터 모델 아키텍처의 대응하는 로컬 사본을 업데이트하기 위해 개선된 적어도 하나의 파라미터를 상기 하나 이상의 보안 엔클레이브 서브 프로세서에 분배하는 단계를 포함하는, 컴퓨터 구현 방법.
  20. 머신 해석 가능 명령어를 저장하는 비일시적 컴퓨터 판독 가능 매체로서, 상기 머신 해석 가능 명령어는, 프로세서에 의해 실행될 때, 상기 프로세서로 하여금, 격리된 데이터 프로세싱 서브시스템을 유지하는 신뢰성 있는 실행 환경에 대한 컴퓨터 구현 방법을 수행하게 하고, 상기 방법은, 상기 신뢰성 있는 실행 환경을 구현하는 컴퓨팅 디바이스의 커널 시스템 및 오퍼레이팅 시스템이 액세스 불가능하도록 암호화되는 보호된 메모리 영역을 갖는 컴퓨터 판독 가능 메모리 상에서 동작하되, 상기 보호된 메모리 영역은 적어도 데이터 스토리지 영역 및 상기 격리된 데이터 프로세싱 서브시스템을 유지하는 데이터 프로세싱 서브시스템 스토리지 영역을 포함하고, 상기 방법은,
    하나 이상의 대응하는 파트너 컴퓨팅 디바이스로부터 하나 이상의 데이터 세트를 수신하는 단계로서, 상기 하나 이상의 데이터 세트의 각각은 상기 파트너 컴퓨팅 디바이스의 각각에 대응하는 개인 키에 의해 디지털적으로 서명되는, 상기 하나 이상의 데이터 세트를 수신하는 단계;
    상기 파트너 컴퓨팅 디바이스의 상기 디지털 서명의 유효성을 확인하는 단계;
    상기 보호된 메모리 영역의 일부를 컴퓨터 판독 가능 캐시 메모리로 로딩하는 단계;
    상기 하나 이상의 유효성이 확인된 데이터 세트를 상기 보호된 메모리 영역 내의 상기 데이터 스토리지 영역의 상기 로딩된 부분에 기록하는 단계;
    상기 기록에 후속하여 상기 보호된 메모리 영역의 상기 일부를 언로딩하고 암호화하는 단계;
    쿼리 데이터 메시지를 상기 데이터 프로세싱 서브시스템으로 송신하는 단계;
    출력 데이터 구조를 생성하기 위해 상기 하나 이상의 대응하는 파트너 컴퓨팅 디바이스로부터의 상기 하나 이상의 데이터 세트 또는 그 집성체를 입력으로서 수신하는 프로세싱 기능에 기초하여 상기 쿼리 데이터 메시지를 프로세싱하는 단계를 포함하는, 비일시적 컴퓨터 판독 가능 매체.
KR1020207036669A 2018-05-28 2019-05-28 보안 전자 트랜잭션 플랫폼을 위한 시스템 및 방법 KR20210041540A (ko)

Applications Claiming Priority (11)

Application Number Priority Date Filing Date Title
US201862677133P 2018-05-28 2018-05-28
US62/677,133 2018-05-28
US201862691406P 2018-06-28 2018-06-28
US62/691,406 2018-06-28
US201862697140P 2018-07-12 2018-07-12
US62/697,140 2018-07-12
US201962806394P 2019-02-15 2019-02-15
US62/806,394 2019-02-15
US201962824697P 2019-03-27 2019-03-27
US62/824,697 2019-03-27
PCT/CA2019/050725 WO2019227208A1 (en) 2018-05-28 2019-05-28 System and method for secure electronic transaction platform

Publications (1)

Publication Number Publication Date
KR20210041540A true KR20210041540A (ko) 2021-04-15

Family

ID=68614680

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020207036669A KR20210041540A (ko) 2018-05-28 2019-05-28 보안 전자 트랜잭션 플랫폼을 위한 시스템 및 방법

Country Status (10)

Country Link
US (3) US10956585B2 (ko)
EP (1) EP3803654A4 (ko)
JP (1) JP7422686B2 (ko)
KR (1) KR20210041540A (ko)
CN (1) CN112567366A (ko)
AU (1) AU2019277292B2 (ko)
CA (1) CA3060835C (ko)
IL (1) IL277974A (ko)
SG (1) SG11202010188PA (ko)
WO (1) WO2019227208A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023113573A1 (ko) * 2021-12-17 2023-06-22 주식회사 크립토랩 전자 장치 및 암호화 방법

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11934540B2 (en) 2018-05-28 2024-03-19 Royal Bank Of Canada System and method for multiparty secure computing platform
SG11202010188PA (en) * 2018-05-28 2020-11-27 Royal Bank Of Canada System and method for secure electronic transaction platform
US10949547B2 (en) * 2018-10-05 2021-03-16 Google Llc Enclave fork support
US10901918B2 (en) * 2018-11-29 2021-01-26 International Business Machines Corporation Constructing flexibly-secure systems in a disaggregated environment
US10963828B2 (en) 2019-07-19 2021-03-30 Capital One Services, Llc Identifying and managing enterprise product availability
US10810528B1 (en) * 2019-07-19 2020-10-20 Capital One Services, Llc Identifying and utilizing the availability of enterprise resources
US11354437B2 (en) * 2019-08-12 2022-06-07 Verizon Patent And Licensing Inc. System and methods for providing data analytics for secure cloud compute data
US11443049B2 (en) 2019-08-12 2022-09-13 Verizon Patent And Licensing Inc. Systems and methods for securely handling private data in a cloud environment
GB201912629D0 (en) * 2019-09-03 2019-10-16 Rolls Royce Plc Security system for using shared computational facilities
US11449601B2 (en) * 2020-01-08 2022-09-20 Red Hat, Inc. Proof of code compliance and protected integrity using a trusted execution environment
US11301464B2 (en) * 2020-01-14 2022-04-12 Videoamp, Inc. Electronic multi-tenant data management system
US11722312B2 (en) * 2020-03-09 2023-08-08 Sony Group Corporation Privacy-preserving signature
US20200320206A1 (en) * 2020-06-24 2020-10-08 Intel Corporation Systems, methods, apparatus and articles of manufacture to prevent unauthorized release of information associated with a function as a service
US11387987B2 (en) 2020-08-13 2022-07-12 Ginger.io, Inc. Method and system for digital health data encryption
US11514366B2 (en) * 2020-09-02 2022-11-29 Microsoft Technology Licensing, Llc System for content encryption for predictive models trained on private data
CN112231746B (zh) * 2020-09-10 2024-02-02 杭州锘崴信息科技有限公司 联合数据分析方法、装置、系统及计算机可读存储介质
WO2022051869A1 (en) * 2020-09-11 2022-03-17 Royal Bank Of Canada System and method for multiparty secure computing platform
US11582025B2 (en) * 2020-09-29 2023-02-14 Amazon Technologies, Inc. Efficient deduplication using block-based convergent encryption
US20220114249A1 (en) * 2020-10-09 2022-04-14 Huawei Technologies Co., Ltd. Systems and methods for secure and fast machine learning inference in a trusted execution environment
US11354227B2 (en) * 2020-10-12 2022-06-07 Bank Of America Corporation Conducting software testing using dynamically masked data
US11748520B2 (en) * 2020-10-28 2023-09-05 Dell Products L.P. Protection of a secured application in a cluster
CA3143855A1 (en) * 2020-12-30 2022-06-30 Atb Financial Systems and methods for federated learning on blockchain
US20240152641A1 (en) * 2021-03-02 2024-05-09 Roche Diagnostics Operations, Inc. Secure collaborative laboratory data analytics system
US11893597B2 (en) 2021-03-22 2024-02-06 Royal Bank Of Canada System and method for loading secure data in multiparty secure computing environment
US20220318420A1 (en) * 2021-03-30 2022-10-06 Adobe Inc. Platform for unsupervised machine learning training on unseeable user generated assets
EP4352681A1 (en) * 2021-05-17 2024-04-17 Royal Bank of Canada System and method for loading secure data in multiparty secure computing environment
CN113609092B (zh) * 2021-06-30 2024-02-27 济南浪潮数据技术有限公司 分布式存储对接hdfs客户端的方法、系统、终端及存储介质
EP4145762B1 (en) * 2021-09-06 2023-10-25 Axis AB Method and system for enabling secure processing of data using a processing application
EP4175219A1 (en) * 2021-10-29 2023-05-03 Thales Dis France SAS Method to establish a secure channel
EP4175218A1 (en) * 2021-10-29 2023-05-03 Thales Dis France SAS Method to establish a secure channel
AU2022399453A1 (en) 2021-12-01 2024-05-16 Videoamp, Inc. Symmetric data clean room
CN114553590B (zh) * 2022-03-17 2023-08-22 抖音视界有限公司 数据传输方法及相关设备
US20230319011A1 (en) * 2022-03-31 2023-10-05 Fortinet, Inc. Containerized firewall in an embedded device for protecting against malicious data traffic on a data communication network
US20230401200A1 (en) * 2022-06-13 2023-12-14 Snowflake Inc. Data clean room using defined access via native applications
WO2024118799A1 (en) * 2022-11-29 2024-06-06 Guardant Health, Inc. Methods and systems for secure software delivery

Family Cites Families (49)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7133845B1 (en) 1995-02-13 2006-11-07 Intertrust Technologies Corp. System and methods for secure transaction management and electronic rights protection
CN1214352C (zh) * 1996-09-04 2005-08-10 英特托拉斯技术公司 一种从用户站点向外部站点发布使用数据的方法
US6389403B1 (en) * 1998-08-13 2002-05-14 International Business Machines Corporation Method and apparatus for uniquely identifying a customer purchase in an electronic distribution system
US6263362B1 (en) * 1998-09-01 2001-07-17 Bigfix, Inc. Inspector for computed relevance messaging
US7380140B1 (en) * 1998-12-30 2008-05-27 Spyrus, Inc. Providing a protected volume on a data storage device
US6868392B1 (en) * 1999-07-09 2005-03-15 Fujitsu Limited System and method for electronic shopping using an interactive shopping agent
US20020116285A1 (en) * 2001-02-21 2002-08-22 Atsushi Ito Performing a purchasing transaction
EP1235171A1 (en) * 2001-02-21 2002-08-28 Hitachi Europe Limited Performing a purchasing transaction
US7181017B1 (en) * 2001-03-23 2007-02-20 David Felsher System and method for secure three-party communications
FI115356B (fi) * 2001-06-29 2005-04-15 Nokia Corp Menetelmä audiovisuaalisen informaation käsittelemiseksi elektroniikkalaitteessa, järjestelmä ja elektroniikkalaite
US7463739B2 (en) * 2001-08-02 2008-12-09 Safenet, Inc. Method and system providing improved security for the transfer of root keys
US7434068B2 (en) * 2001-10-19 2008-10-07 Intel Corporation Content protection in non-volatile storage devices
GB2435761B (en) * 2004-09-21 2009-07-08 Snapin Software Inc Secure software such as for use with a cell phone or mobile device
US7401361B2 (en) * 2004-10-13 2008-07-15 Lenovo (Singapore) Pte. Ltd. System and method for reducing virus scan time
US9384149B2 (en) * 2005-01-31 2016-07-05 Unisys Corporation Block-level data storage security system
US7774596B2 (en) * 2005-02-02 2010-08-10 Insyde Software Corporation System and method for updating firmware in a secure manner
US8438647B2 (en) * 2005-07-14 2013-05-07 Imation Corp. Recovery of encrypted data from a secure storage device
US20090151006A1 (en) * 2005-08-31 2009-06-11 Sony Corporation Group registration device, group registration release device, group registration method, license acquisition device, license acquisition method, time setting device, and time setting method
JP2008009933A (ja) * 2006-06-30 2008-01-17 Toshiba Corp 記憶装置とその制御方法
US8954696B2 (en) * 2008-06-24 2015-02-10 Nagravision S.A. Secure memory management system and method
US8122514B2 (en) * 2008-07-30 2012-02-21 Microsoft Corporation Software enhanced trusted platform module
JP5398361B2 (ja) * 2009-06-01 2014-01-29 株式会社日立製作所 データ分析システム
US8468345B2 (en) * 2009-11-16 2013-06-18 Microsoft Corporation Containerless data for trustworthy computing and data services
US8656189B2 (en) * 2010-08-11 2014-02-18 Security First Corp. Systems and methods for secure multi-tenant data storage
US8335921B2 (en) * 2010-12-17 2012-12-18 Google, Inc. Writing application data to a secure element
US9413538B2 (en) * 2011-12-12 2016-08-09 Microsoft Technology Licensing, Llc Cryptographic certification of secure hosted execution environments
US9177121B2 (en) * 2012-04-27 2015-11-03 Nvidia Corporation Code protection using online authentication and encrypted code execution
US8874917B2 (en) * 2012-07-26 2014-10-28 Kabushiki Kaisha Toshiba Storage system in which fictitious information is prevented
US8924727B2 (en) * 2012-10-12 2014-12-30 Intel Corporation Technologies labeling diverse content
US8959615B2 (en) * 2013-02-25 2015-02-17 Kabushiki Kaisha Toshiba Storage system in which fictitious information is prevented
US10304044B2 (en) * 2013-06-05 2019-05-28 American Express Travel Related Services Company, Inc. Multi-factor mobile user authentication
WO2015042548A1 (en) * 2013-09-20 2015-03-26 Visa International Service Association Secure remote payment transaction processing including consumer authentication
US10043035B2 (en) * 2013-11-01 2018-08-07 Anonos Inc. Systems and methods for enhancing data protection by anonosizing structured and unstructured data and incorporating machine learning and artificial intelligence in classical and quantum computing environments
AU2014363926A1 (en) * 2013-12-11 2015-08-27 Intralinks, Inc. Customizable secure data exchange environment
US9258331B2 (en) * 2013-12-27 2016-02-09 Trapezoid, Inc. System and method for hardware-based trust control management
US10305893B2 (en) * 2013-12-27 2019-05-28 Trapezoid, Inc. System and method for hardware-based trust control management
FR3017226B1 (fr) * 2014-02-03 2016-01-29 St Microelectronics Sa Procede de securisation d'un code programme, systeme et processeur correspondants
US10049216B2 (en) * 2014-02-06 2018-08-14 Intel Corporation Media protection policy enforcement for multiple-operating-system environments
US9299072B2 (en) * 2014-05-29 2016-03-29 Apple Inc. Apparatuses and methods for operating a portable electronic device to conduct mobile payment transactions
US9949115B2 (en) * 2014-06-10 2018-04-17 Qualcomm Incorporated Common modulus RSA key pairs for signature generation and encryption/decryption
US9129095B1 (en) * 2014-12-19 2015-09-08 Tresorit, Kft Client-side encryption with DRM
US10230529B2 (en) * 2015-07-31 2019-03-12 Microsft Technology Licensing, LLC Techniques to secure computation data in a computing environment
US10701039B2 (en) * 2015-09-25 2020-06-30 Intel Corporation Mutual approval for privacy-preserving computing
GB201610883D0 (en) * 2016-06-22 2016-08-03 Microsoft Technology Licensing Llc Privacy-preserving machine learning
US10171435B1 (en) * 2017-06-12 2019-01-01 Ironclad Encryption Corporation Devices that utilize random tokens which direct dynamic random access
CN107332671A (zh) * 2017-08-15 2017-11-07 鼎讯网络安全技术有限公司 一种基于安全芯片的安全移动终端系统及安全交易方法
DE112017008311T5 (de) * 2017-12-29 2020-09-17 Intel Corporation Technologien zur internet-der-dinge-schlüsselverwaltung
US11520913B2 (en) * 2018-05-11 2022-12-06 International Business Machines Corporation Secure execution support for A.I. systems (and other heterogeneous systems)
SG11202010188PA (en) * 2018-05-28 2020-11-27 Royal Bank Of Canada System and method for secure electronic transaction platform

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023113573A1 (ko) * 2021-12-17 2023-06-22 주식회사 크립토랩 전자 장치 및 암호화 방법

Also Published As

Publication number Publication date
US20190362083A1 (en) 2019-11-28
US10956585B2 (en) 2021-03-23
IL277974A (en) 2020-11-30
US20210182409A1 (en) 2021-06-17
AU2019277292A1 (en) 2020-10-22
CN112567366A (zh) 2021-03-26
US11868486B2 (en) 2024-01-09
EP3803654A4 (en) 2022-02-23
AU2019277292B2 (en) 2024-05-23
JP7422686B2 (ja) 2024-01-26
CA3060835A1 (en) 2019-11-28
WO2019227208A1 (en) 2019-12-05
EP3803654A1 (en) 2021-04-14
US20240184898A1 (en) 2024-06-06
CA3060835C (en) 2022-04-26
JP2021533435A (ja) 2021-12-02
SG11202010188PA (en) 2020-11-27

Similar Documents

Publication Publication Date Title
JP7422686B2 (ja) セキュアな電子トランザクションプラットフォームのためのシステムと方法
US12001525B1 (en) Methods, systems, and devices for an encrypted and obfuscated algorithm in a computing environment
EP3721603B1 (en) System and method for creating decentralized identifiers
US11451392B2 (en) Token-based secure data management
US11139954B2 (en) Blockchain proof of custody, proof against tampering, proof of chain of custody
WO2021103794A1 (zh) 在区块链中实现隐私保护的高效交易方法及装置
US11233655B2 (en) Data verification methods, apparatuses, and devices
Hardin et al. Amanuensis: Information provenance for health-data systems
US20210174243A1 (en) Efficient private vertical federated learning
EP3788522A1 (en) System and method for mapping decentralized identifiers to real-world entities
US11271718B2 (en) Systems and methods for linking anonymized user activities while preserving strong privacy guarantees
EP3867849B1 (en) Secure digital wallet processing system
WO2021169767A1 (zh) 一种数据处理方法、装置、设备及介质
Singh et al. Cloud computing security using blockchain technology
Li et al. ProChain: A privacy-preserving blockchain-based supply chain traceability system model
Patel et al. An approach to analyze data corruption and identify misbehaving server
CN111125734A (zh) 一种数据处理方法及系统
Ganesan et al. A survey on advanced schemes applied within trusted platform modules (tpm) and iaas in cloud computing
WO2023158695A1 (en) Secure environment for operations on private data
WO2024025847A1 (en) Verifiable secure dataset operations with private join keys
Sabeb Secure Marketing Website
Sathisha et al. Security and Privacy Issues in Big-data Hadoop: A Review
Thakur et al. Dynamic Auditing Services for Integrity Verification of Outsourced Storages on Cloud

Legal Events

Date Code Title Description
E902 Notification of reason for refusal