KR20140019248A - 벡터의 프라이빗 동일성 검사 - Google Patents

벡터의 프라이빗 동일성 검사 Download PDF

Info

Publication number
KR20140019248A
KR20140019248A KR1020130093339A KR20130093339A KR20140019248A KR 20140019248 A KR20140019248 A KR 20140019248A KR 1020130093339 A KR1020130093339 A KR 1020130093339A KR 20130093339 A KR20130093339 A KR 20130093339A KR 20140019248 A KR20140019248 A KR 20140019248A
Authority
KR
South Korea
Prior art keywords
unit
vector
client device
private
data unit
Prior art date
Application number
KR1020130093339A
Other languages
English (en)
Other versions
KR102090272B1 (ko
Inventor
고카이 살담리
바트 니넨버그
홍시야 진
리차드 차우
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20140019248A publication Critical patent/KR20140019248A/ko
Application granted granted Critical
Publication of KR102090272B1 publication Critical patent/KR102090272B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • 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
    • G06F21/6254Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification
    • 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/008Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption

Abstract

동일성 검사 시스템은 제1 프라이빗 데이터 유닛을 포함하는 제1 클라이언트 장치, 제2 프라이빗 데이터 유닛을 포함하는 제2 클라이언트 장치, 그리고 서버를 포함한다. 서버는 제1 클라이언트 장치로부터 제1 프라이빗 데이터 유닛에 대응되는 제1 조작된 데이터 유닛과 제2 클라이언트 장치로부터 제2 프라이빗 데이터 유닛에 대응되는 제2 조작된 데이터 유닛을 수신한다. 서버는 제1, 제2 조작된 데이터 유닛을 기초로 벡터화 연산을 수행하여 제1, 제2 조작된 데이터 유닛의 조합을 생성한다. 서버는 그 조합을 제1 클라이언트 장치로 전송한다. 제1 클라이언트 장치는 그 조합을 기초로 제1 프라이빗 데이터 유닛과 제2 프라이빗 데이터 유닛이 동일한지 결정하도록 구성된다.

Description

벡터의 프라이빗 동일성 검사{VECTORIAL PRIVATE EQUALITY TESTING}
본 출원은 2012.8.6.에 미국에서 가출원된 61/680,208 출원에 의해 우선권을 주장한다.
본 발명의 일 실시예는 일반적으로 동일성 검사, 보다 구체적으로 벡터를 사용한 동일성 검사에 대한 것이다.
동일성 검사에 대하여는 유용한 출원이 많다. 예를 들어, 동일성 검사는 위치기반 서비스의 근접성(proximity)을 결정하는 데 사용되곤 한다. 위치 프라이버시를 보호하기 위하여, 동일성 검사 프로토콜은 공개키 암호, 호모모르픽(homomorphic) 암호, 크립토그래픽 프리머티브(cryptographic primitives)와 같은 고가의 암호 시스템을 활용한다.
일 실시예는 동일성 검사를 위한 시스템을 제공한다. 상기 시스템은 제1 프라이빗 데이터 유닛(private data unit)을 포함하는 제1 클라이언트 장치와 제2 프라이빗 데이터 유닛을 포함하는 제2 클라이언트 장치, 그리고 서버를 포함한다. 서버는 제1 클라이언트 장치로부터 제1 프라이빗 데이터 유닛에 대응되는 제1 조작된(obfuscated) 데이터 유닛을 수신하고, 제2 클라이언트 장치로부터 제2 프라이빗 데이터 유닛에 대응되는 제2 조작된 데이터 유닛을 수신한다. 서버는 제1, 제2 조작된 데이터 유닛에 기초하여 벡터 연산을 수행하여 제1, 제2 조작된 데이터 유닛의 조합을 생성한다. 서버는 그 조합을 제1 클라이언트 장치로 보낸다. 제1 클라이언트 장치는 조합에 기초하여 제1 프라이빗 데이터 유닛이 제2 프라이빗 데이터 유닛과 동일한지 여부를 결정하도록 구성된다.
일 실시예는 동일성 검사를 위한 방법을 제공한다. 그 방법은 제1 클라이언트 장치로부터 제1 조작된 데이터 유닛을 수신하는 단계와 제2 클라이언트 장치로부터 제2 조작된 데이터 유닛을 수신하는 단계를 포함한다. 제1 조작된 데이터 유닛은 제1 클라이언트 장치용 제1 프라이빗 데이터 유닛에 대응된다. 제2 조작된 데이터 유닛은 제2 클라이언트 장치용 제2 프라이빗 데이터 유닛에 대응된다. 서버는 제1, 제2 조작된 데이터 유닛에 기초하여 벡터 연산을 수행하여 제1, 제2 조작된 데이터 유닛을 생성한다. 서버는 그 조합을 제1 클라이언트 장치로 전송한다. 제1 클라이언트 장치는 그 조합을 기초로 제1 프라이빗 데이터 유닛이 제2 프라이빗 데이터 유닛과 동일한지 여부를 결정한다.
일 실시예는 동일성 검사를 위한 장치을 제공한다. 상기 장치는 제1 프라이빗 데이터 유닛에 대응하여 그 장치용 제1 조작된 데이터 유닛을 생성하도록 구성된 연산 유닛을 포함한다. 또한, 그 장치는 서버로 제1 조작된 데이터 유닛을 전송하고, 서버로부터 제1 조작된 데이터 유닛과 다른 장치용 제2 프라이빗 데이터 유닛에 대응되는 제2 조작된 데이터 유닛의 조합을 수신하도록 구성된 통신 유닛을 더 포함한다. 연산 유닛은 또한 수신된 조합을 근거로 제1 프라이빗 데이터가 제2 프라이빗 데이터와 동일한지 여부를 결정하도록 구성되었다.
일 실시예는 동일성 검사를 위한 컴퓨터 프로그램 제품을 제공한다. 그 컴퓨터 프로그램 제품은 프로그램 코드를 내재한 컴퓨터 판독가능 저장 매체를 포함한다. 그리고 그 프로그램 코드는 제1 클라이언트용 제1 프라이빗 데이터 유닛에 대응되는 제1 조작된 데이터 유닛을 생성하고, 제1 조작된 데이터 유닛을 서버로 전송하며, 서버로부터 제1 조작된 데이터 유닛과 제2 클라이언트 장치용 제2 프라이빗 데이터 유닛에 대응되는 제2 조작된 컴퓨터 유닛을 수신하고, 제1 프라이빗 데이터가 수신된 조합을 기초로 제2 프라이빗 데이터 유닛과 동일한지 여부를 결정하기 위해 컴퓨터에 의해 실행될 수 있다.
위에서 설명한 부분들과 다른 특징 그리고 본 발명의 장점은 도면, 발명의 원리에 대한 예시의 방법을 통한 설명과 결합하여 아래 상세한 설명에서 보다 명확해질 것이다.
본 발명의 속성과 장점 및 바람직한 실시예에 대한 이해를 위하여, 첨부된 도면 및 그에 이어지는 상세한 설명을 참고해야 한다.
도1은 본 발명의 일 실시예에 따라 벡터의 프라이빗 동일성 검사를 위한 시스템의 블록 다이어그램을 도시한다.
도2는 본 발명의 일 실시예에 따라 벡터의 프라이빗 동일성 검사를 위한 클라이언트 측의 어플리케이션 모듈의 블록 다이어그램을 도시한다.
도3은 본 발명의 일 실시예에 따라 벡터의 프라이빗 동일성 검사를 위한 서버 측의 어플리케이션 모듈의 블록 다이어그램을 도시한다.
도4는 본 발명의 일 실시예에 따른 맵핑 오퍼레이션(mapping operation)을 도시한다.
도5A는 본 발명의 일 실시예에 따른 실수값 벡터화 연산을 도시한다.
도5B는 본 발명의 일 실시예에 따른 정수값 벡터화 연산을 도시한다.
도6A는 본 발명의 일 실시예에 따라 벡터의 프라이빗 동일성 검사 프로토콜을 표현하는 흐름도를 도시한다.
도6B는 본 발명의 일 실시예에 따라 도6A에 있는 제1 클라이언트를 위해 실수값 벡터화 연산의 예시를 도시한다.
도6C는 본 발명의 일 실시예에 따른 의사 랜덤 벡터(pseudo random vector)의 예시와 도6A에 있는 제1, 제2 클라이언트를 위한 랜덤 로테이션 앵글(random rotation angle)의 예시를 도시한다.
도7는 본 발명의 일 실시예에 따라 도6A에 있는 제1 클라이언트를 위한 흐름도의 예시를 도시한다.
도8는 본 발명의 일 실시예에 따라 도6A에 있는 제2 클라이언트를 위한 흐름도의 예시를 도시한다.
도9는 본 발명의 일 실시예에 따라 도6A에 있는 서버를 위한 흐름도의 예시를 도시한다.
도10는 본 발명의 일 실시예를 수행하는 연산 시스템을 포함하는 정보처리 시스템을 보여주는 하이레벨 블록 다이어그램을 도시한다.
다음의 설명은 발명의 일반적 원리를 설명할 목적으로 행해지는 것이지, 청구항의 발명 사상을 제한하려는 의도가 아님을 밝혀둔다. 또한 여기서 설명한 특정 특징은 설명된 다른 특징들과 각각의 다양한 조합과 치환의 방식으로 조합되어 사용될 수 있다. 여기서 구체적으로 정의되지 않은 모든 용어는 명세서에서 함축하는 의미뿐 아니라 당업자에 의해 이해되는 의미 및/또는 사전이나 조약 등에 정의된 의미를 포함하여 광범위하게 가능한 방식으로 해석된다.
일 실시예는 동일성 검사를 위한 시스템을 제공한다. 그 시스템은 제1 프라이빗 데이터 유닛을 포함하는 제1 클라이언트 장치와 제2 프라이빗 데이터 유닛을 포함하는 제2 클라이언트 장치, 그리고 서버를 포함한다. 상기 서버는 제1 클라이언트 장치로부터 제1 프라이빗 데이터 유닛에 대응되는 제1 조작된 데이터 유닛을 수신하고, 제2 클라이언트 장치로부터 제2 프라이빗 데이터 유닛에 대응되는 제2 조작된 데이터 유닛을 수신한다. 서버는 제1, 제2 조작된 데이터 유닛을 기초로 벡터 연산을 수행하여 제1, 제2 조작된 데이터 유닛의 조합을 생성한다. 서버는 그 조합을 제1 클라이언트 장치로 전송한다. 제1 클라이언트 장치는 조합에 기초하여 1 프라이빗 데이터 유닛이 제2 프라이빗 데이터 유닛과 동일한지 여부를 결정하도록 구성된다.
일 실시예는 동일성 검사를 위한 방법을 제공한다. 그 방법은 제1 클라이언트 장치로부터 제1 조작된 데이터 유닛을 수신하는 단계와 제2 클라이언트 장치로부터 제2 조작된 데이터 유닛을 수신하는 단계를 포함한다. 제1 조작된 데이터 유닛은 제1 클라이언트 장치용 제1 프라이빗 데이터 유닛에 대응된다. 제2 조작된 데이터 유닛은 제2 클라이언트 장치용 제2 프라이빗 데이터 유닛에 대응된다. 서버는 제1, 제2 조작된 데이터 유닛에 기초하여 벡터 연산을 수행하여 제1, 제2 조작된 데이터 유닛을 생성한다. 서버는 그 조합을 제1 클라이언트 장치로 전송한다. 제1 클라이언트 장치는 그 조합을 기초로 제1 프라이빗 데이터 유닛이 제2 프라이빗 데이터 유닛과 동일한지 여부를 결정한다.
일 실시예는 동일성 검사를 위한 장치을 제공한다. 상기 장치는 제1 프라이빗 데이터 유닛에 대응하여 그 장치용 제1 조작된 데이터 유닛을 생성하도록 구성된 연산 유닛을 포함한다. 또한, 그 장치는 서버로 제1 조작된 데이터 유닛을 전송하고, 서버로부터 제1 조작된 데이터 유닛과, 다른 장치용 제2 프라이빗 데이터 유닛에 대응되는 제2 조작된 데이터 유닛의 조합을 수신하도록 구성된 통신 유닛을 더 포함한다. 연산 유닛은 또한 수신된 조합을 기초로 제1 프라이빗 데이터가 제2 프라이빗 데이터와 동일한지 여부를 결정하도록 구성되었다.
일 실시예는 동일성 검사를 위한 컴퓨터 프로그램 제품을 제공한다. 그 컴퓨터 프로그램 제품은 실시된 프로그램 코드를 일체로 가지는 컴퓨터 판독가능 저장 매체를 포함한다. 그리고 그 프로그램 코드는 제1 클라이언트용 제1 프라이빗 데이터 유닛에 대응되는 제1 조작된 데이터 유닛을 생성하고, 제1 조작된 데이터 유닛을 서버로 전송하며, 서버로부터 제1 조작된 데이터 유닛과 제2 클라이언트 장치용 제2 프라이빗 데이터 유닛에 대응되는 제2 조작된 컴퓨터 유닛을 수신하고, 제1 프라이빗 데이터가 수신된 조합을 기초로 제2 프라이빗 데이터 유닛과 동일한지 여부를 결정하기 위해 컴퓨터에 의해 실행될 수 있다.
도1은 발명의 일 실시예에 따라 벡터의 프라이빗 동일성 검사를 하기 위한 시스템(100)의 블록 다이어그램을 도시한다.
일 실시예에서, 시스템(100)은 제1 클라이언트("클라이언트 A")와 같은 클라이언트(120) 여러 개와 제2 클라이언트("클라이언트 B")를 포함한다. 클라이언트(120)은 통신 부분의 전자 장치를 대표한다. 전자 장치란 가정용 기기, 개인용 컴퓨터(PC), 스마트 TV와 같은 텔레비전(TV), 또는 모바일 장치(예를 들어 스마트 폰, 랩탑 컴퓨터와 같은 모바일 전화)가 될 것이다.
각각의 클라이언트(120)은 서버(200)에 연결(50)을 설정하도록 구성된다. 연결(50)은 무선 연결일 수도 있고, 유선 연결이나 혹은 유무선 연결의 조합일 수도 있다.
서버(200)은 여러 개의 클라이언트(120) 사이의 프라이빗 동일성 검사를 활용하도록 구성된 서버 측의 벡터 프라이빗 동일성 검사(VPET) 어플리케이션 모듈 (300)을 포함한다. 각각의 클라이언트(120)은 서버(200)과 통신하도록 구성된 클라이언트 측 VPET 어플리케이션 모듈(250)을 포함한다.
도2는 발명의 일 실시예에 따른 클라이언트 측 벡터의 프라이빗 동일성 검사(VPET) 어플리케이션 모듈(250)의 블록 다이어그램을 도시한다. 일 실시예에서, 클라이언트(120)의 클라이언트 측 VPET 어플리케이션 모듈(250)은 통신 유닛(251), 메모리 유닛(252), 의사 랜덤 생성(PRG) 유닛(253), 벡터화 유닛(254), 그리고 연산 유닛(255)를 포함한다.
통신 유닛(251)은 서버(200)이나 다른 클라이언트(120)과 같은 다른 개체로 부터 정보를 수신하고, 또 다른 개체로 정보를 전송하도록 구성된다. 메모리 유닛(252)는 클라이언트(120)에 대응되는 프라이빗 값(프라이빗 정보 유닛)과 같은 정보를 보유하도록 구성된다. 예를 들어, 클라이언트 A의 메모리 유닛(252)는 대응되는 프라이빗 값 Va를 보유하고, 클라이언트 B의 메모리 유닛(252)는 대응되는 프라이빗 값 Vb를 보유한다. 클라이언트(120)에 대응되는 프라이빗 값 V는 클라이언트(120)의 위치, 재산, 점수(예를 들면 시험 점수) 등과 같은 클라이언트(120)과 연관된 정보의 유닛을 대표한다.
뒤에 더 자세히 설명할 PRG 유닛(253)은 프라이빗 동일성 검사를 위하여 의사 랜덤 번호를 생성하도록 구성된다. 벡터화 유닛(254)는 클라이언트(120)에 대응되는 프라이빗 값 V를 몇 차원의 벡터 W(즉, 프라이빗 벡터 유닛)로 표현하도록 구성된다. 벡터 W는 클라이언트(120)의 위치의 위도와 경도를 표현하는 2차원 벡터와 같은 다차원벡터이다. 뒤에 더 자세히 설명할 클라이언트 A의 벡터화 유닛(254)는 프라이빗 값 Va를 벡터 Wa로 표현하고, 클라이언트 B의 벡터화 유닛(254)는 프라이빗 값 Vb를 벡터 Wb로 표현한다.
도3은 발명의 일 실시예에 따른 서버측의 벡터의 프라이빗 동일성 검사(VPET) 어플리케이션 모듈(300)에 대한 블록 다이어그램을 도시한다. 일 실시예에서, 서버 60의 서버측 VPET 어플리케이션 모듈(300)은 통신 유닛(301), 메모리 유닛(302), 연산 유닛(303)을 포함한다.
통신 유닛(301)은 서버(200)이나 다른 클라이언트(120)과 같은 다른 개체로 부터 정보를 수신하고, 또 다른 개체로 정보를 전송하도록 구성된다. 메모리 유닛(302)는 클라이언트(120)으로부터 수신한 각각의 정보와 같은 정보를 유지하도록 구성된다.
뒤에 더 자세히 설명할 연산 유닛(303)은 닷 프로덕트 연산(즉, 내적연산(inner product operation))을 수행하도록 구성된다.
도4는 발명의 일 실시예에 따른 맵핑 오퍼레이션(mapping operation)을 도시한다. 시스템(100)은 각각의 클라이언트(120)을 위한 각각의 프라이빗 값 V를 위한 단일 벡터 W를 생성한다. 일 실시예에서, 각각의 벡터 W는 실수값 벡터이다. 다른 실시예에서 각각의 벡터 W는 정수 값 벡터이다.
본 명세서에서 S는 시스템(100)의 전체 프라이빗 값 V를 대표하고, N은 S에 있는 모든 프라이빗 값 V의 총 수를 대표한다고 하자. 일 실시예에서, 만일 N이 4의 배수가 아니고, 추가 프라이빗 값 V가, N이 4의 배수가 될 때까지 S에 더해진다.
시스템(100)의 각각의 프라이빗 값 V는 반개구간 (0,N]의 자연수에 맵핑된다. 반개구간 (0,N]은 도4에 도시된 선 부분(400)으로 표현된다. 선 부분(400)의 제1 엔드(end) 100A는 숫자 0을 대신하고, 선부분(400)의 제2 엔드 400B는 숫자 N을 대신하다.
시스템(100)의 각각의 프라이빗 값 V는 반개구간 (0,N]의 자연수에 맵핑된다. 구체적으로 각각의 클라이언트(120)의 벡터화 유닛(254)는 대응되는 프라이빗 값 V를 반개구간의 자연수(0,N]에 할당한다. 예를 들어, 도4에서 도시하였듯이 클라이언트 A의 벡터화 유닛(254)는 대응되는 프라이빗 값 Va에 숫자 2를 맵핑하였고, 클라이언트 B의 벡터화 유닛(254)는 대응되는 프라이빗 값 Vb를 숫자 1에 맵핑하였다.
도5A는 발명의 일 실시예에 따른 실수 값 백터화 연산을 도시한다. 일 실시예에서는 프라이빗 값 V의 한정된 S에 대하여, 반개구간 (0,N]의 각 자연수는 반원(410)상의 한 점과 맵핑된다. 예를 들어, 선 부분(400)의 제1 엔드 400A(즉, 숫자 0)와 제2 엔드 400B(즉, 숫자 N)는 원점 O를 중심으로 하는 반원(410)과 사선으로 연결된다.
반원(410)상의 점과 맵핑된 각 자연수는 원점 O에서 시작해서 반원 상의 점에서 끝나는 벡터(420)을 표현한다. 도5A는 프라이빗 값 Va와 Vb를 각각 표현하는 벡터 Wa와 Wb를 도시한다.
일 실시예에서는 두개의 연이은 벡터들(420)(예를들어 벡터 Wa와 Wb) 사이의 각도 α는 Π/N 라디안과 같다.
도5B는 발명의 일 실시예에 따른 정수값 백터화 연산을 도시한다. 일 실시예에서는 프라이빗 값 V의 한정된 S에 대하여, 반개구간 (0,N]의 각 자연수는 R2 에 있는 직사각형(415)상의 한 점과 맵핑된다. 직사각형(415)상의 점과 맵핑된 각 자연수는 원점 O에서 시작해서 직사각형(415)상의 점에서 끝나는 벡터(420)을 표현한다. 도5B는 프라이빗 값 Va와 Vb를 각각 표현하는 벡터 Wa와 Wb를 도시한다.
일 실시예에서는 시스템(100)이 랜덤 회전 각도 θ로 벡터(420)을 회전하도록 구성된 각도 유지 맵핑 함수 R을 이용한다. 각도유지 맵핑 함수 R은 벡터(420)에서만 정의되고 X축에 대해 대칭이다. 벡터(420)의 총 수는 2N이고, 랜덤 회전 각도 θ는 반개구간 (0,2N]에 있는 정수이다.
도6A는 발명의 일 실시예에 따른 VPET 프로토콜을 표현하는 흐름도(450)을 도시한다. 위에서 언급한 바와 같이, 클라이언트 A의 벡터화 유닛(254)는 클라이언트 A용 프라이빗 값 Va를 벡터 Wa로 대신하고, 클라이언트 B의 벡터화 유닛(254)는 클라이언트 B용 프라이빗 값 Vb를 벡터 Wb로 대신한다.
일 실시예에서 클라이언트 A와 클라이언트 B는 동기화를 위해 카운터 ctr을 사용한다. 일 실시예에서 카운터 ctr은 0으로 초기화된다. 클라이언트 A는 프라이빗 값 Va가 변할때(예를들어, 클라이언트 A의 위치가 바뀔때)마다 카운터 ctr을 1씩 증가시킨다. 이와 유사하게, 클라이언트 B는 프라이빗 값 Vb가 변할때(예를들어, 클라이언트 B의 위치가 바뀔때)마다 카운터 ctr을 1씩 증가시킨다.
위에서 언급한 바와 같이, 서버(200)의 서버측 VPET 어플리케이션 모듈(300)은 클라이언트 A와 클라이언트 B사이의 전용 동일성 검사를 활용한다. 일 실시예에서 서버(200)의 메모리 유닛(302)는 카운터 ctr의 가장 최근 값을 기억한다. 클라이언트 A와 클라이언트 B의 통신 유닛(251)은 각 카운터 ctr의 최근값을 서버(200)에 질의한다.
일 실시예에서 클라이언트 A와 클라이언트 B는 암호화 키 k를 공유한다. 그 암호화 키 k는 클라이언트 A와 클라이언트 B에게만 알려진다. 클라이언트 A와 클라이언트 B의 PRG 유닛은 각각 암호화 키 k와 카운터 ctr을 기초로 의사 랜덤 값을 생성하도록 구성된 의사 랜덤 함수 E(예를들어, 어드밴스드 암호화 표준(AES))를 수행한다. 일 실시예에서 클라이언트 A와 클라이언트 B의 메모리 유닛(252)는 각 암호화 키 k를 보유한다.
일 실시예에서 클라이언트 B는 서버(200)과 통신하기 전에 카운터 ctr을 1씩 증가시킨다. 클라이언트 A는 서버(200)과 통신하기 전에 카운터 ctr의 최근값을 서버(200)에 질의한다. 서버(200)의 통신 유닛(301)은 질의가 행해졌을 때, 카운터 ctr의 최근값을 통신한다.
클라이언트 A와 클라이언트 B는 각각 의사 랜덤 함수 E와 암호화 키 k, 그리고 카운터 ctr을 사용하여 의사 랜덤 벡터 s와 랜덤 회전 각도 θ를 생성하도록 구성된다. 일 실시예에서 클라이언트 A와 클라이언트 B의 PRG 유닛(253)은 각각 아래 수식 (1)을 이용하여 의사 랜덤 벡터 s와 랜덤 회전 각도 θ를 생성한다.
(s, θ) = Ek(ctr) (1)
Ek(ctr)은 암호화 키 k를 사용하여 카운터 ctr과 동일한 점에서 의사난수 함수 E를 실행한 결과인 의사난수 값이다. 일 실시예에서 클라이언트 A와 클라이언트 B의 클라이언트 측 VPET 어플리케이션 모듈 250은 각각 의사 랜덤 벡터 s와 랜덤 회전 각도 θ를 획득/추출하기 위해 의사난수 값 Ek(ctr)을 분석한다.
일 실시예에서 클라이언트 A와 클라이언트 B의 클라이언트 측 VPET 어플리케이션 모듈 250은 각각 조작된/블라인드 벡터(즉, 조작된 데이터 유닛)를 포함하는 메시지를 서버(200)으로 전송한다. 조작된/블라인드 벡터를 서버(200)으로 전송하는 것은 서버(200)으로 전송된 메시지를 암호화 할 필요를 없앤다(즉, 서버(200)은 클라이언트 A나 클라이언트 B와 암호화 키를 공유할 필요가 없다). 또한 암호화된 메시지의 장소에 있는 조작된/블라인드 벡터를 전송하는 것은 서버(200)이 클라이언트 A와 B를 위한 벡터 Wa와 Wb를 인식하지 못한다는 것을 확실히한다.
구체적으로, 클라인트 B의 연산 유닛(255)는 아래 수식 (2)를 사용하여 벡터 Wb를 위한 조작된/블라인드 벡터 b를 생성한다.
b = rR(Wb, θ) + s (2)
여기서 R(Wb, θ)는 랜덤 회전 각도 θ에 의해 벡터 Wb의 회전을 표현하는 벡터이고, r은 벡터 R(Wb, θ)을 스케일한 랜덤 값을 표현한다. 일 실시예에서 클라이언트 B의 PRG 유닛(253)은 랜덤 값 r을 생성한다. 클라이언트 B의 연산 유닛(255)는 맵핑 함수 R을 실행하고 랜덤 회전 각도 θ에 의해 벡터 Wb를 회전시켜 벡터 R(Wb, θ)를 생성한다. 그리고나서 클라이언트 B의 연산 유닛(255)는 랜덤 값에 의하여 벡터 R(Wb, θ)를 스케일하여 벡터 rR(Wb, θ)를 생성하고, 벡터 rR(Wb, θ)에 의사 랜덤 벡터 s를 더하여 조작된/블라인드 벡터 b를 생성한다. 일 실시예에서 클라이언트 B의 통신 유닛(251)은 서버(200)으로 조작된/블라인드 벡터 b와 카운터 ctr을 포함하는 메시지를 통신한다.
일 실시예에서 클라이언트 A의 PRG 유닛(253)은 또한 의사 랜덤 개체 u1, u2, ..., ud-1을 가지는 랜덤 기본 벡터 u를 생성하도록 구성된다. 랜덤 기본 벡터 u는 벡터 Wa와 수직을 이룬다. 랜덤 기본 벡터 u가 벡터 Wa와 수직을 이루기 때문에 벡터 Wa와 랜덤 기본 벡터 u(즉, <Wa, u>) 사이의 내적은 0이다.
클라이언트 A의 연산 유닛(255)는 아래 수식 (3)을 이용하여 랜덤 기본 벡터 u용의 조작된/블라인드 벡터를 생성한다.
a = R(u, θ) (3)
여기서 R(u, θ)는 랜덤 회전 각도 θ에 의하여 랜덤 기본 벡터 u의 회전을 표현하는 벡터이다. 클라이언트 A의 연산 유닛(255)는 맵핑 함수 R을 수행하고, 랜덤 회전 각도 θ에 의해 랜덤 기본 벡터 u를 회전시켜 조작된/블라인드 벡터 a를 생성한다. 일 실시예에서 클라이언트 A의 통신 유닛(251)은 서버(200)으로 조작된/블라인드 벡터 a와 카운터 ctr을 포함하는 메시지를 통신한다.
서버(200)은 클라이언트 A가 보낸 메시지에 포함된 카운터 ctr의 값이 클라이언트 B로부터 온 메시지에 포함된 카운터 ctr의 값과 매치되는지 여부를 결정한다. 만일, 클라이언트 A와 클라이언트 B로 부터 온 메시지에 있는 카운터 ctr의 값이 동일하면, 서버(200)의 연산 유닛(302)는 조작된/블라인드 벡터 a와 b의 내적을 계산한다. 이 경우, m이 조작된/블라인드 벡터 a와 b(즉, <a, b>)의 내적을 표현한다고 하자. 서버(200)의 통신 유닛(301)은 내적 m을 클라이언트 A로 송신한다.
또한 클라이언트 A의 연산 유닛(251)은 조작된/블라인드 벡터 a와 의사 랜덤 벡터 s의 내적을 표현하는 내적 <a,s>를 계산한다. 서버(200)으로 부터 내적 m을 수신하자마자, 연산 유닛(251)은 내적 <a,s>가 내적 m과 같은지를 결정한다. 만일 내적 <a,s>가 내적 m과 같으면, 클라이언트 A는 벡터 Wa와 Wb가 동일하다고(즉, 프라이빗 값 Va와 Vb가 동일하다고) 결론을 내린다. 만일 내적 <a,s>가 내적 m과 같지 않다면, 클라이언트 A는 벡터 Wa와 Wb가 다르다고(즉, 프라이빗 값 Va와 Vb가 다르다고) 결론을 내린다. 따라서 클라이언트 A는 프라이빗 값 Vb가 프라이빗 값 Va와 같을 때 프라이빗 값 Vb의 값을 추정할수 있을 뿐이다. 클라이언트 A도 서버(200)도 프라이빗 값 Vb가 프라이빗 값 Va와 다를 때 프라이빗 값 Vb를 추정할 수 없다.
내적 m의 확장된 형태는 아래 관계 (4)를 사용하여 제공된다.
m = <a, b> = < R(u, θ), rR(Wb, θ) + s >= r <R(u, θ), R(Wb, θ)> + <R(u, θ), s> (4)
만일, 벡터 Wa와 Wb가 같다면(즉, 프라이빗 값 Va와 Vb가 동일하다면), 벡터 R(Wb, θ)는 벡터 R(u, θ)에 수직이다. 벡터 R(Wb, θ)가 벡터 R(u, θ)에 수직일 때, 내적 <R(u, θ), R(Wb, θ)>는 0이다. 내적 <R(u, θ), R(Wb, θ)>가 0이면, 내적 m은 벡터 <R(u, θ), s>와 같다. 위에서 언급한 바와 같이, 벡터 R(u, θ)는 조작된/블라인드 벡터 a를 표현한다. 따라서 서버(200)은 벡터 Wa와 Wb가 같을 때, 클라이언트 A로 내적 <a, s>를 송신한다.
도6B는 발명의 일 실시예에 따른 도6A에 있는 제1 클라이언트용 실수값 벡터화 연산의 예시를 도시한다. 한 실시예에서 클라이언트 A용 프라이빗 값 Va는 70이고, 각각 프라이빗 값 v는 수학 시험에서의 점수를 표현한다. 클라이언트 A는 클라이언트 B가 수학시험에서 클라이언트 A와 같은 점수를 가지고 있는지 여부를 결정하고 싶다. S는 S = [37, 100]인 수학시험의 한정적인 점수 세트를 표현한다고 하자. N은 N = 64인 별개의 수학 점수의 총 수를 표현한다고 하자.
일 실시예에서 시험 점수 S 세트를 반원(410)과 맵핑하는 것은 Π/64 라디안(즉, 연이은 두 벡터(420) 사이의 각도 Π/64 라디안과 같다)과 같은 점수 증가의 결과를 낳는다. 도6B에서 도시하였듯이, 클라이언트 A용 프라이빗 값 Va를 표현하는 벡터 Wa는 (cos(34Π/64), sin(34Π/64))이다.
도6C는 발명의 일 실시예에따라 도6A에 있는 제1, 제2 클라이언트(예를 들어, 클라이언트 A와 클라이언트 B)용의 의사 랜덤 벡터 s의 예시와 의사 회전 각도 θ의 예시를 도시한다. 일 실시예에서 클라이언트 A와 클라이언트 B는 둘다 의사 랜덤 함수 E로써 어드밴스드(advanced) 암호화 기준(AES)를 실행한다. 클라이언트 A와 클라이언트 B는 암호화 키 k와 카운터 ctr을 공유한다. 클라이언트 A와 클라이언트 B는 아래의 수식 (5)를 사용하여 의사 랜덤 벡터 s와 랜덤 회전 각도 θ를 각각 생성한다.
(s, θ) = AESk(ctr) = CCD819AB9A623189E540EEEE9006A1B1 (5)
여기서 k는 D301E0908128C3B254BDEA4F2C504844 이고, ctr은 3이다.
일 실시예에서 AESk(ctr)의 마지막 유효 19비트는 랜덤 벡터 s와 랜덤 회전 각도 θ를 설정하는 데 사용된다. 도6C에서 도시한 바와 같이, AESk(ctr)의 마지막 유효 19비트는 2진 시퀀스 1101010000110110001을 표현하는 16진 시퀀스 6A1B1이다. 랜덤 회전 각도 θ는 이진 시퀀스의 일부로 설정되고, 랜덤 벡터 s의 x성분과 y성분은 이진 시퀀스의 나머지 부분으로 설정된다. 예를들어, x와 y가 각각 6비트 부호 절대값에 의해 표현되면 랜덤 회전 각도 θ는 49이고 랜덤 벡터 s = (x, y) = (-21, 3)이다.
만일, 클라이언트 B용 프라이빗 값 Vb도 70이면, 클라이언트 B용 프라이빗 값 Vb를 표현하는 벡터 Wb는 (cos(34Π/64), sin(34Π/64))이다. 클라이언트 B는 아래의 수식 (6)을 사용하여 R(Wb, θ)를 계산한다.
R(Wb, θ) = (cos((34+49)Π/64), sin((34+49)Π/64)) (6)
= (cos(83Π/64), sin(83Π/64))
Figure pat00001
(-0.5956, -0.8032)
만일, 벡터 R(Wb, θ)를 스케일하기 위한 랜덤 값 r이 7로 설정되었다면, 클라이언트 B는 아래 수식(7)을 사용하여 벡터 Wb용 조작된/블라인드 벡터 b를 생성한다.
b = rR(Wb, θ) + s (7)
= 7(-0.5956, -0.8032) + (-3, 21)
Figure pat00002
(-7.1698, 15.3775)
클라이언트 A는 Wa에 Π/2를 더함으로써 벡터 Wa에 수직인 랜덤 기본 벡터 u를 계산한다. 구체적으로, 클라이언트 A는 아래 수식 (8)을 이용하여 랜덤 기본 벡터 u를 계산한다.
u = (cos((34+32)Π/64), sin((34+32)Π/64)) (8)
= (cos(66Π/64), sin(66Π/64))
클라이언트 A는 아래 수식 (9)를 사용하여 벡터 Wa용 조작된/블라인드 벡터 a를 생성한다.
a = R(u, θ) (9)
= (cos((66+49)Π/64, sin(115Π/64))
= (cos(115Π/64), sin(115Π/64))
Figure pat00003
(0.8032, -0.5956)
서버(200)은 아래 수식 (10)을 사용하여 내적 m을 계산한다.
m = <a, b> (10)
= <(0.8032, -0.5956), (-7.1698, 15.3775)>
= -7.1698(0.8032) + 15.3775(-0.5956)
= -14.9191
클라이언트는 아래 수식 (11)을 사용하여 내적 <a, s>를 계산한다.
<a, s> = <(0.8032, -0.5956), (-3, 21)> (11)
= -3(0.8032) + 21(-0.5956)
= -14.9191
내적 <a, s>가 내적 m과 같을 때, 클라이언트 A는 프라이빗 값 Vb가 프라이빗 값 Va와 같다고 결정한다.
도7은 발명의 일 실시예에 따라 도6A에 있는 제1 클라이언트(즉 클라이언트 A)용 예시 흐름도(600)을 도시한다. 블록(601)단계에서 제1 프라이빗 값은 제1 벡터로 표현된다. 블록(602)단계에서 랜덤 기본 벡터는 생성된 제1 벡터에 수직이다. 블록(603)단계에서 의사 랜덤 벡터와 랜덤 회전 각도는 의사 랜덤 함수, 공유된 암호화 키, 그리고 공유된 카운터를 이용하여 생성된다. 블록(604)단계에서 랜덤 기본 벡터용 블라인드 벡터는 회전 맵핑 함수와 랜덤 회전 각도를 사용하여 생성된다. 블록(605)단계에서 블라인드 벡터와 공유된 카운터는 제1 클라이언트와 제2 클라이언트 사이의 프라이빗 동일성 검사를 가능하게하는 서버로 전송된다. 블록(606)단계에서는 서버로부터 내적이 수신된다. 블록(607)단계에서는 블라인드 벡터와 의사 랜덤 벡터의 내적이 수신된 내적과 동일한지 결정한다.
도8은 발명의 일 실시예에 따라 도6A에 있는 제2 클라이언트의 예시 흐름도(650)을 도시한다. 제2 클라이언트는 제2 클라이언트용 제2 프라이빗 값을 위한 블라인드 벡터를 생성한다. 블록(651)단계에서는 제2 프라이빗 값이 제2 벡터로 표현된다. 블록(652)단계에서는 의사 랜덤 벡터와 랜덤 회전 각도가 의사 랜덤 함수, 공유된 암호화 키, 그리고 공유된 카운터를 사용하여 생성된다. 블록(603)단계에서는 제2 벡터용 블라인드 벡터가 회전 맵핑 함수, 랜덤 회전 각도, 랜덤 값, 그리고 의사 랜덤 벡터를 사용하여 생성된다. 블록(604)단계에서는 블라인드 벡터와 공유된 카운터가 제1 클라이언트와 제2 클라이언트 사이의 프라이빗 동일성 검사를 가능하게하는 서버로 전송된다.
도9는 발명의 일 실시예에 따라 도6A에 있는 서버용 예시 흐름도(700)을 도시한다. 블록(701)단계에서는 제2 클라이언트로부터 제1 블라인드 벡터와 공유된 카운터를 수신한다. 블록(702)단계에서는 공유된 카운터를 제1 클라이언트로 전송한다. 블록(703)단계에서는 제1 클라이언트로부터 제2 블라인드 벡터와 공유된 카운터를 수신한다. 블록(704)단계에서는 제1 블라인드 벡터와 제2 블라인드 벡터의 내적을 계산한다. 블록(705)단계에서는 제1 클라이언트로 내적을 전송한다.
도10은 본 발명의 일 실시예를 실행하는 연산 시스템(500)을 포함하는 정보 처리 시스템을 도시하는 하이레벨 블록 다이어그램을 도시한다. 시스템(500)은 하나 혹은 그 이상의 프로세서(511)(예를들어, ASIC, CPU 등)을 포함하고, 나아가 전자 디스플레이 장치(512)(그림, 문자 그리고 다른 데이터를 디스플레이하기 위한), 메인 메모리(513)(예를들어, 랜덤 액세스 메모리(RAM)), 저장 장치(514)(예를 들어 하드디스크), 리무버블 저장 장치(515)(예를들어, 리무버블 저장 장치, 리무버블 메모리 모듈, 마그네틱 테잎 드라이브, 광디스크 드라이브, 컴퓨터 소프트웨어 및/또는 데이터가 저장된 컴퓨터 판독 가능한 저장매체), 사용자 인터페이스 장치(516)(예를들어, 키보드, 터치스크린, 키패드, 포인팅 디바이스), 그리고 통신 인터페이스(517)(예를들어, 모뎀, 무선 트랜시버(와이파이, 셀룰라와 같은), 네트워크 인터페이스(이더넷 카드와 같은), 통신 포트, 또는 PCMCIA 슬롯과 카드)를 포함한다. 통신 인터페이스(517)은 소프트웨어와 데이터가 컴퓨터 시스템과 외부 장치 및/그리고 인터넷(550), 무선 전자 장치(551), 서버(552), 그리고 네트워크(553)과 같은 네트워크 사이에 전송될 수 있게 해 준다. 시스템(500)은 나아가 앞서 언급한 장치/모듈(511)부터(517)이 연결된 통신 인프라 스트럭처 518(예를들어, 통신 버스(bus), 크로스 오버 바(cross-over bar), 또는 네트워크)을 포함한다.
통신 인터페이스(517)을 경유하여 전송된 정보는 전자, 전자기, 광(optical), 또는 통신 인터페이스(517)에 의해 시그널을 전송하는 통신 연결을 통하여 수신 가능한 다른 시그널과 같은 시그널의 형태일 것이다. 그리고 전선 또는 케이블, 광섬유, 전화선, 휴대폰 연결, 라디오 주파수(RF) 및/또는 다른 통신 채널을 사용하여 실행될 것이다.
시스템(500)은 나아가 MMS 모듈(521), SMS ,모듈(522), 이메일 모듈(523), 소셜 네트워크 인터페이스(SNI) 모듈(524), 오디오/비디오(AV) 플레이어(525), 웹 브라우저(526), 이미지 캡쳐 모듈(527) 등과 같은 어플리케이션 모듈을 포함할 것이다.
시스템(500)은 나아가 발명의 일 실시예에 따라 여기 설명된 프라이빗 동일성 검사용 프라이빗 동일성 검사 모듈(530)을 포함한다. 일 실시예에서 운영체계 529와 함께 프라이빗 동일성 검사 모듈(530)은 시스템(500)의 메모리에 상주하는 실행 코드에 따라 실행될 것이다. 다른 실시예에서 운영 체계 529와 함께 프라이빗 동일성 검사 모듈(530)은 펌웨어로 실행될 것이다.
당업자에게 알려진 바와 같이, 그 아키텍처에 따라 위에서 설명된 전술의 예시 아키텍처는 프로세서에의해 실행을 위한 프로그램 지시, 소프트웨어 모듈, 카이크로 코드, 컴퓨터 판독 가능한 매체 상의 컴퓨터 프로그램 제품, 아날로그/로직 서킷(circuits), 어플리케이션 스페시픽 인터그레이티드 서킷(application specific integrated circuits), 펌웨어, 소비자 전자 장치, AV 장치, 유무선 송신기, 유무선 수신기, 네트워크, 멀티 미디어 장치 등 여러 방식으로 실행될 수 있다. 나아가 언급된 아키텍처의 실시예는 전적으로 하드웨어 실시예, 전적으로 소프트웨어 실시예 또는 하드웨어와 소프트웨어의 요소를 모두 포함하는 실시예의 형태를 띨 수 있다.
본 발명의 실시예는 흐름도 도시 및/또는 방법의 블록 다이어그램, 장치(시스템) 그리고 그 발명 실시예에 따른 컴퓨터 프로그램 제품을 참조하여 설명되었다. 그러한 도시/다이어그램 또는 그 둘의 조합의 각 블록은 컴퓨터 프로그램 지시에 의해 실행될 수 있다. 컴퓨터 프로그램 지시는 프로세서에 기계를 생산하라고 제공되었을때 프로세서를 통하여 흐름도 및/또는 블록다이어그램에서 구체화한 함수/연산을 실행하는 수단을 생성한다. 프로세서에 기계를 생산하라는 컴퓨터 프로그램 지시가 제공될 때, 그러한 지시는 프로세서가 흐름도 및/또는 블록 다이아그램에서 구체화된 함수/연산을 실행하는 방법을 생성함으로써 수행한다. 흐름도 및/또는 블록 다이아그램의 각 블록은 본 발명의 실시예를 수행하는 하드웨어 및/또는 소프트웨어 모듈 또는 로직을 표현할 수 있다. 대체 실행에서 블록에서 언급된 그 함수는 도면 등에서 동시에 언급된 순서로 실행될 수 있다.
"컴퓨터 프로그램 매체", "컴퓨터 사용가능한 매체", "컴퓨터 판독가능한 매체", 그리고 "컴퓨터 프로그램 제품"이란 용어는 일반적으로 메인 메모리, 보조 메모리, 리무버블 저장 드라이브, 하드디스크 드라이브에 설치된 하드디스크와 같은 미디어를 언급하는데 사용된다. 이들 컴퓨터 프로그램 제품들은 컴퓨터 시스템에 소프트웨어를 제공하는 수단이다. 컴퓨터 판독가능한 매체는 컴퓨터 시스템이 데이터, 지시, 메시지 또는 메시지 패킷, 컴퓨터 판독가능한 매체로 부터의 다른 컴퓨터 판독가능한 정보를 읽을 수 있게 해 준다. 예를 들어, 컴퓨터 판독 가능한 매체는 플로피 디스크, 롬(ROM), 플래쉬 메모리, 디스크 드라이브 메모리, 시디롬, 그리고 다른 영구 저장과 같은 불휘발성 메모리를 포함할 수 있다. 예를 들어, 컴퓨터 시스템 사이에 데이터, 컴퓨터 지시와 같은 정보를 전송하는데 유용하다. 컴퓨터 프로그램 지시는 컴퓨터, 다른 프로그램 가능한 데이터 처리 장치, 또는 특정 방식으로 기능하는 다른 장치로 향하는 컴퓨터 판독가능한 매체에 저장될 수 있고, 그렇게 컴퓨터 판독 가능한 매체에 저장된 지시는 흐름도 및/또는 블록 다이어그램 또는 블록에서 구체화 된 함수/규정을 실행하는 지시를 포함하는 제조품을 생산한다.
블록 다이어그램 및/또는 흐름도를 표현하는 컴퓨터 프로그램 지시는 컴퓨터, 프로그램 가능한 데이터 처리 장치 또는 컴퓨터 실행 프로세스를 생성하도록 실행되는 일련의 연산을 일으키는 처리장치에 로드될 수 있다. 컴퓨터 프로그램(즉, 컴퓨터 컨트롤 로직)은 메인 메모리 및/또는 보조 메모리에 저장된다. 컴퓨터 프로그램은 또한 통신 인터페이스를 통해 수신될 수 있다. 그러한 컴퓨터 프로그램은 실행될 때, 컴퓨터 시스템이 여기서 논의된 본 발명의 특징을 실행하는 것을 가능하게 한다. 특히 컴퓨터 프로그램은 실행될 때 프로세서 및/또는 멀티 코어 프로세서가 컴퓨터 시스템의 특징을 실행하는 것을 가능하게 한다. 그러한 컴퓨터 프로그램은 컴퓨터 시스템의 컨트롤러를 나타낸다. 컴퓨터 프로그램 제품은 컴퓨터 시스템에 의해 판독가능한 저장 매체와 발명의 방법을 실행하기위해 컴퓨터 시스템에 의해 실행되는 저장 지시를 포함한다.
본 발명은 그 중 어떤 버전을 참조로 설명되었지만, 다른 버전도 가능하다. 따라서 첨부된 청구항의 정신이나 범위는 여기에 포함된 선택된 버전에 한정되어서는 안된다.

Claims (30)

  1. 제1 프라이빗 데이터 유닛(private data unit)을 포함하는 제1 클라이언트 장치;
    제2 프라이빗 데이터 유닛을 포함하는 제2 클라이언트 장치; 및
    서버를 포함하고,
    상기 서버는
    상기 제1 클라이언트 장치로부터 상기 제1 프라이빗 데이터 유닛에 대응되는 제1 조작된(obfuscated) 데이터 유닛을 수신하고,
    상기 제2 클라이언트 장치로부터 상기 제2 프라이빗 데이터 유닛에 대응되는 제2 조작된 데이터 유닛을 수신하며,
    상기 제1, 제2 조작된 데이터 유닛에 기초하여 벡터 연산을 수행하여 상기 제1, 제2 조작된 데이터 유닛의 조합을 생성하고,
    상기 생성된 조합을 상기 제1 클라이언트 장치로 전송하며,
    상기 제1 클라이언트 장치는 상기 조합에 기초하여 상기 제1 프라이빗 데이터 유닛이 상기 제2 프라이빗 데이터 유닛과 동일한지를 결정하는 것을 특징으로 하는 동일성 검사를 위한 시스템.
  2. 제1항에 있어서,
    상기 각각의 조작된 데이터 유닛은 벡터 유닛을 포함하고;
    상기 조합은 상기 제1, 제2 조작된 데이터 유닛의 내적(dot product)을 포함하는 것을 특징으로 하는 시스템.
  3. 제2항에 있어서,
    상기 각각의 클라이언트 장치는
    상기 각각의 클라이언트 장치용 상기 프라이빗 데이터 유닛에 대응되는 프라이빗 벡터 유닛(private vector unit)을 생성하고;
    상기 프라이빗 벡터 유닛을 조작하여 상기 각각의 클라이언트 장치의 상기 프라이빗 데이터 유닛에 대응되는 조작된 데이터 유닛을 생성하도록
    더 구성되어 있는 시스템.
  4. 제1항에 있어서,
    제1 클라이언트 장치는 또한
    상기 제1 프라이빗 데이터 유닛이 상기 제2 프라이빗 데이터 유닛과 동일할 때, 상기 제2 클라이언트 장치가 상기 제1 클라이언트 장치의 근접도(proximity) 내에 있는 것으로 결정하고;
    상기 제1 프라이빗 데이터 유닛이 상기 제2 프라이빗 데이터 유닛과 동일하지 않을 때, 상기 제2 클라이언트 장치가 상기 제1 클라이언트 장치의 근접도 내에 있지 않다고 결정하는 시스템.
  5. 제1항에 있어서,
    상기 제1 클라이언트 장치와 상기 제2 클라이언트 장치는 암호화 키를 공유하는 시스템.
  6. 제3항에 있어서,
    상기 제1 클라이언트 장치는,
    상기 프라이빗 벡터 유닛에 수직하는 랜덤 벡터 유닛을 생성하고;
    랜덤 회전 각도에 따라 상기 랜덤 벡터 유닛을 회전시켜 회전된 벡터 유닛을 생성함으로써,
    상기 제1 프라이빗 데이터 유닛에 대응하는 프라이빗 벡터 유닛을 조작하고,
    상기 회전된 벡터 유닛은 상기 서버에 전송되는 것을 특징으로 하는 시스템.
  7. 제3항에 있어서,
    상기 제2 클라이언트 장치는,
    랜덤 회전 각도에 따라 상기 프라이빗 벡터 유닛을 회전시켜 회전된 벡터 유닛을 생성하고,
    상기 회전된 벡터 유닛을 랜덤 값(random value)에 의해 스케일(scale)하여 스케일된 벡터 유닛을 생성하고,
    상기 스케일된 벡터 유닛을 랜덤 벡터 유닛(random vector unit)에 따라 증가시켜 증가된 벡터 유닛을 생성함으로써,
    상기 제2 프라이빗 데이터 유닛에 대응되는 프라이빗 벡터 유닛을 조작하고,
    상기 증가된 벡터 유닛은 상기 서버에 전송되는 것을 특징으로 하는 시스템.
  8. 제6항에 있어서,
    상기 제1 클라이언트 장치는 또한
    상기 회전된 벡터 유닛과 랜덤 벡터 유닛에 기초하여 벡터 연산을 수행하여 상기 회전된 벡터 유닛과 상기 랜덤 벡터 유닛의 내적을 생성하고;
    상기 회전된 벡터 유닛과 상기 랜덤 벡터 유닛의 내적이 상기 서버로부터 수신된 상기 조합과 동일한지 여부를 결정하는 것을 특징으로 하는 시스템.
  9. 제1항에 있어서,
    상기 제1 프라이빗 데이터 유닛은 상기 서버와 상기 제2 클라이언트 장치로부터 숨겨져 있고, 상기 제2 프라이빗 데이터 유닛은 상기 서버와 상기 제1 클라이언트 장치로부터 숨겨져 있는 시스템.
  10. 제3항에 있어서,
    상기 각각의 클라이언트 장치에서 상기 각각의 클라이언트 장치용 상기 프라이빗 데이터 유닛에 대응되는 상기 프라이빗 벡터 유닛은 실수값 벡터인 시스템.
  11. 제3항에 있어서,
    상기 각각의 클라이언트 장치에서 상기 각각의 클라이언트 장치용 상기 프라이빗 데이터 유닛에 대응되는 상기 프라이빗 벡터 유닛은 정수값 벡터인 시스템.
  12. 제1 클라이언트 장치로부터 제1 클라이언트 장치용 제1 프라이빗 데이터 유닛에 대응되는 제1 조작된 데이터 유닛을 수신하는 단계;
    제2 클라이언트 장치로부터 제2 클라이언트 장치용 제2 프라이빗 데이터 유닛에 대응되는 제2 조작된 데이터 유닛을 수신하는 단계;
    상기 제1, 제2 조작된 데이터 유닛을 기초로 벡터 연산을 수행하여 상기 제1, 제2 조작된 데이터 유닛의 조합을 생성하는 단계; 및
    상기 생성된 조합을, 상기 조합을 기초로 상기 제1 프라이빗 데이터 유닛이 상기 제2 프라이빗 데이터 유닛과 동일한지 여부를 결정할 상기 제1 클라이언트 장치로 전송하는 단계
    를 포함하는 동일성 검사를 위한 방법.
  13. 제12항에 있어서,
    상기 각각의 조작된 데이터 유닛은 벡터 유닛을 포함하고;
    상기 조합은 상기 제1, 제2 조작된 데이터 유닛의 내적을 포함하는 것을 특징으로 하는 방법.
  14. 제13항에 있어서,
    상기 각각의 클라이언트 장치는
    상기 각각의 클라이언트 장치용 상기 프라이빗 데이터 유닛에 대응되는 프라이빗 벡터 유닛을 생성하고;
    상기 프라이빗 벡터 유닛을 조작하여 상기 클라이언트 장치용 상기 프라이빗 데이터 유닛에 대응되는 조작된 데이터 유닛을 생성하는 단계를 더 포함하는 방법.
  15. 제12항에 있어서,
    제1 클라이언트 장치는
    상기 제1 프라이빗 데이터 유닛이 상기 제2 프라이빗 데이터 유닛과 동일할 때, 상기 제2 클라이언트 장치가 상기 제1 클라이언트 장치의 근접도 내에 있는 것으로 결정하고;
    상기 제1 프라이빗 데이터 유닛이 상기 제2 프라이빗 데이터 유닛과 동일하지 않을 때, 상기 제2 클라이언트 장치가 상기 제1 클라이언트 장치의 근접도 내에 있지 않다고 결정하는 단계
    를 더 포함하는 방법.
  16. 제12항에 있어서,
    상기 제1 클라이언트 장치와 상기 제2 클라이언트 장치는 암호화 키를 공유하는 단계를 더 포함하는 방법.
  17. 제14항에 있어서,
    제1 클라이언트 장치는
    상기 프라이빗 벡터 유닛에 수직인 랜덤 벡터 유닛을 생성하고;
    랜덤 회전 각도에따라 상기 랜덤 벡터 유닛을 회전시켜 회전된 벡터 유닛을 생성함으로써
    상기 제1 프라이빗 데이터 유닛에 대응하는 프라이빗 벡터 유닛을 조작하고,
    상기 회전된 벡터 유닛은 서버로 전송되는 것을
    특징으로 하는 방법.
  18. 제14항에 있어서,
    상기 제2 클라이언트 장치는
    랜덤 회전 각도에 의하여 상기 프라이빗 벡터 유닛을 회전시켜 회전된 벡터 유닛을 생성하고;
    랜덤 값에 의해 상기 회전된 벡터 유닛을 스케일하여 스케일된 벡터 유닛을 생성하며;
    랜덤 벡터 유닛에 의해 상기 스케일된 벡터 유닛을 증가시켜 증가된 벡터 유닛을 생성함으로써
    상기 제2 프라이빗 데이터 유닛에 대응되는 프라이빗 벡터 유닛을 조작하고
    상기 회전된 벡터 유닛은 서버에 전송되는 것을 특징으로 하는방법.
  19. 제17항에 있어서,
    제1 클라이언트 장치는
    상기 회전된 벡터 유닛과 랜덤 벡터 유닛에 기초하여 벡터 연산을 수행하여 상기 회전된 벡터 유닛과 랜덤 벡터 유닛의 내적을 생성하고;
    상기 회전된 벡터 유닛과 상기 랜덤 벡터 유닛의 상기 내적이 상기 서버로부터 수신된 상기 조합과 동일한지 여부를 결정하는 단계
    를 더 포함하는 방법.
  20. 제12항에 있어서,
    상기 제1 프라이빗 데이터 유닛은 상기 서버와 상기 제2 클라이언트 장치로부터 숨겨져 있고;
    상기 제2 프라이빗 데이터 유닛은 상기 서버와 상기 제1 클라이언트 장치로부터 숨겨져 있는 방법.
  21. 제14항에 있어서,
    상기 각각의 클라이언트 장치에서 상기 각각의 클라이언트 장치용 상기 프라이빗 데이터 유닛에 대응되는 상기 프라이빗 벡터 유닛은 실수값 벡터인 방법.
  22. 제14항에 있어서,
    상기 각각의 클라이언트 장치에서 상기 각각의 클라이언트 장치용 상기 프라이빗 데이터 유닛에 대응되는 상기 프라이빗 벡터 유닛은 정수값 벡터인 방법.
  23. 장치용 제1 프라이빗 데이터 유닛에 대응되는 제1 조작된 데이터 유닛을 생성하도록 구성된 연산 유닛; 및
    상기 제1 조작된 데이터 유닛을 서버로 전송하고, 다른 장치용 제2 프라이빗 데이터 유닛에 대응되는 제2 조작된 데이터 유닛과 상기 제1 조작된 데이터 유닛과 의 조합을 서버로 부터 수신하는 통신 유닛;
    상기 연산 유닛은 상기 수신된 조합에 기초하여 상기 제1 프라이빗 데이터 유닛이 상기 제2 프라이빗 데이터 유닛과 동일한지 여부를 결정하도록 더 구성된 것을 특징으로 하는 동일성 검사를 위한 장치.
  24. 제23항에 있어서,
    상기 제1 프라이빗 데이터 유닛에 대응되는 프라이빗 벡터 유닛을 생성하도록 구성된 벡터화 유닛을 더 포함하고,
    상기 연산 유닛은 상기 프라이빗 벡터 유닛을 조작하여 상기 제1 조작된 데이터 유닛을 생성하고,
    상기 조합은 상기 제1, 제2 조작된 데이터 유닛의 내적을 포함하는 것을 특징으로 하는 장치.
  25. 제23항에 있어서,
    상기 연산 유닛은
    상기 제1 프라이빗 데이터 유닛이 상기 제2 프라이빗 데이터 유닛과 동일할 때, 상기 제2 클라이언트 장치가 상기 제1 클라이언트 장치의 근접도 내에 있다고 결정하고; 그리고
    상기 제1 프라이빗 데이터 유닛이 상기 제2 프라이빗 데이터 유닛과 동일하지 않을 때, 상기 제2 클라이언트 장치가 상기 제1 클라이언트 장치의 근접도 내에 있지 않다고 결정하는 것을 특징으로 하는 장치.
  26. 제24항에 있어서,
    랜덤 벡터 유닛을 생성하고, 랜덤 회전 각도를 생성하는 의사난수 생성 유닛을 더 포함하고,
    상기 연산 유닛은 적어도 부분적으로 상기 랜덤 벡터 유닛과 상기 랜덤 회전 각도에 기초하여 상기 프라이빗 벡터 유닛을 조작하는 것을 특징으로 하는 장치.
  27. 제24항에 있어서,
    상기 프라이빗 벡터 유닛은 실수값 벡터인 장치.
  28. 제24항에 있어서,
    상기 프라이빗 벡터 유닛은 정수값 벡터인 장치.
  29. 컴퓨터가
    제1 클라이언트 장치용 제1 프라이빗 데이터 유닛에 대응되는 제1 조작된 데이터 유닛을 생성하는 단계;
    상기 제1 조작된 데이터 유닛을 서버로 전송하고. 상기 서버로부터 상기 제1 조작된 데이터 유닛과 제2 클라이언트 장치용 제2 프라이빗 데이터 유닛에 대응되는 제2 조작된 데이터 유닛과의 조합을 수신하는 단계; 및
    상기 수신된 조합에 기초하여 상기 제1 프라이빗 데이터 유닛이 상기 제2 프라이빗 데이터 유닛과 동일한지를 결정하는 단계를 포함하는 방법을 실행가능하게하는 프로그램 코드를 내재한 컴퓨터 판독가능한 저장 매체
  30. 제29항에 있어서,
    상기 방법은
    상기 제1 프라이빗 데이터 유닛에 대응되는 제1 프라이빗 벡터 유닛을 생성하는 단계;
    랜덤 벡터 유닛을 생성하는 단계;
    랜덤 회전 각도를 생성하는 단계; 및
    적어도 부분적으로 상기 랜덤 벡터 유닛과 상기 랜덤 회전 각도에 기초하여 상기 프라이빗 벡터 유닛을 조작하여 상기 제1 조작된 데이터 유닛을 생성하는 단계
    를 더 포함하고,
    상기 조합은 상기 제1, 제2 조작된 데이터 유닛의 내적을 포함하는 것을 특징으로 하는 컴퓨터 판독 가능한 저장 매체..
KR1020130093339A 2012-08-06 2013-08-06 벡터의 프라이빗 동일성 검사 KR102090272B1 (ko)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201261680208P 2012-08-06 2012-08-06
US61/680,208 2012-08-06
US13/907,783 2013-05-31
US13/907,783 US9390271B2 (en) 2012-08-06 2013-05-31 Vectorial private equality testing

Publications (2)

Publication Number Publication Date
KR20140019248A true KR20140019248A (ko) 2014-02-14
KR102090272B1 KR102090272B1 (ko) 2020-03-17

Family

ID=49123636

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020130093339A KR102090272B1 (ko) 2012-08-06 2013-08-06 벡터의 프라이빗 동일성 검사

Country Status (4)

Country Link
US (1) US9390271B2 (ko)
EP (1) EP2698945B1 (ko)
KR (1) KR102090272B1 (ko)
WO (1) WO2014025162A1 (ko)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9825758B2 (en) * 2014-12-02 2017-11-21 Microsoft Technology Licensing, Llc Secure computer evaluation of k-nearest neighbor models
US9787647B2 (en) 2014-12-02 2017-10-10 Microsoft Technology Licensing, Llc Secure computer evaluation of decision trees
SG10201502401XA (en) * 2015-03-26 2016-10-28 Huawei Internat Pte Ltd Method of obfuscating data
US10887293B2 (en) 2018-03-20 2021-01-05 International Business Machines Corporation Key identifiers in an obliviousness pseudorandom function (OPRF)-based key management service (KMS)
US10887088B2 (en) * 2018-03-20 2021-01-05 International Business Machines Corporation Virtualizing a key hierarchy using a partially-oblivious pseudorandom function (P-OPRF)
US10841080B2 (en) * 2018-03-20 2020-11-17 International Business Machines Corporation Oblivious pseudorandom function in a key management system
US11115206B2 (en) 2018-08-23 2021-09-07 International Business Machines Corporation Assymetric structured key recovering using oblivious pseudorandom function
US10924267B2 (en) 2018-08-24 2021-02-16 International Business Machines Corporation Validating keys derived from an oblivious pseudorandom function
US11722290B2 (en) * 2021-05-21 2023-08-08 Samsung Electronics Co., Ltd. Method and apparatus for modulus refresh in homomorphic encryption

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002103681A1 (en) * 2001-06-15 2002-12-27 Schlumberger Systemes Sa System for automatic verification of biometric data signals, especially generated by a speaker
US20090279694A1 (en) * 2008-05-09 2009-11-12 Kenta Takahashi Privacy-preserving scalar product calculation system, privacy-preserving scalar product calculation method and cryptographic key sharing system
WO2012048347A1 (en) * 2010-10-08 2012-04-12 Brian Lee Moffat Private data sharing system

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030204732A1 (en) 2002-04-30 2003-10-30 Yves Audebert System and method for storage and retrieval of a cryptographic secret from a plurality of network enabled clients
US20060245587A1 (en) 2005-04-28 2006-11-02 Binyamin Pinkas System and method for private information matching
US7657028B2 (en) * 2005-10-07 2010-02-02 Mitsubishi Electric Research Laboratories, Inc. Method for classifying private information securely
US8249250B2 (en) 2009-03-30 2012-08-21 Mitsubishi Electric Research Laboratories, Inc. Secure similarity verification between homomorphically encrypted signals

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2002103681A1 (en) * 2001-06-15 2002-12-27 Schlumberger Systemes Sa System for automatic verification of biometric data signals, especially generated by a speaker
US20090279694A1 (en) * 2008-05-09 2009-11-12 Kenta Takahashi Privacy-preserving scalar product calculation system, privacy-preserving scalar product calculation method and cryptographic key sharing system
WO2012048347A1 (en) * 2010-10-08 2012-04-12 Brian Lee Moffat Private data sharing system

Also Published As

Publication number Publication date
EP2698945A3 (en) 2017-08-02
EP2698945A2 (en) 2014-02-19
EP2698945B1 (en) 2018-05-30
CN103634162A (zh) 2014-03-12
US20140041039A1 (en) 2014-02-06
KR102090272B1 (ko) 2020-03-17
WO2014025162A1 (en) 2014-02-13
US9390271B2 (en) 2016-07-12

Similar Documents

Publication Publication Date Title
KR102090272B1 (ko) 벡터의 프라이빗 동일성 검사
US11706026B2 (en) Location aware cryptography
US9569771B2 (en) Method and system for storage and retrieval of blockchain blocks using galois fields
CN108476136B (zh) 密文转换装置、计算机能读取的记录介质和密文转换方法
CN111130803B (zh) 数字签名的方法、系统及装置
US20150379301A1 (en) Method and system for electronic content storage and retrieval using galois fields and geometric shapes on cloud computing networks
US20140233727A1 (en) Method for secure substring search
US9635053B2 (en) Computing system with protocol protection mechanism and method of operation thereof
EP3264671A1 (en) Key replacement direction control system, and key replacement direction control method
JP6556955B2 (ja) 通信端末、サーバ装置、プログラム
US11323254B2 (en) Device, system, and method of generating and handling cryptographic parameters
US20130091362A1 (en) Generating implicit certificates
CN117220865A (zh) 经纬度加密方法、经纬度校验方法、装置及可读存储介质
CN108564363A (zh) 一种交易处理方法、服务器、客户端及系统
JP2016021758A (ja) データ伝送安全性の向上
WO2018116826A1 (ja) メッセージ送信システム、通信端末、サーバ装置、メッセージ送信方法、およびプログラム
US9749133B2 (en) Method and apparatus for secure communication and determining secret information
WO2018213875A1 (en) Asymmetric cryptography and authentication
Zahan et al. Smart home IoT use case with elliptic curve based digital signature: an evaluation on security and performance analysis
CN113794706B (zh) 数据的处理方法、装置、电子设备及可读存储介质
US11507605B2 (en) Relationship discovery
Kabir et al. Secure mobile sensor data transfer using asymmetric cryptography algorithms
CN109617876A (zh) 基于Http协议的数据加密、解密方法及系统
CN117633848B (zh) 用户信息联合处理方法、装置、设备和计算机可读介质
CN110619218B (zh) 用于生成信息的方法和装置

Legal Events

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