KR20170004456A - 데이터를 관리하는 방법 및 그를 위한 장치들 - Google Patents
데이터를 관리하는 방법 및 그를 위한 장치들 Download PDFInfo
- Publication number
- KR20170004456A KR20170004456A KR1020150094823A KR20150094823A KR20170004456A KR 20170004456 A KR20170004456 A KR 20170004456A KR 1020150094823 A KR1020150094823 A KR 1020150094823A KR 20150094823 A KR20150094823 A KR 20150094823A KR 20170004456 A KR20170004456 A KR 20170004456A
- Authority
- KR
- South Korea
- Prior art keywords
- data
- query
- electronic device
- encrypted
- equation
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/008—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving homomorphic encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/30—Public key, i.e. encryption algorithm being computationally infeasible to invert or user's encryption keys not requiring secrecy
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
본 발명의 일 실시예에 따른 전자 장치가 데이터를 관리하는 방법은, 사용자에 의해 입력된 제1 데이터를 암호화하여 제2 데이터를 생성하는 동작과, 상기 제2 데이터를 포함하는 쿼리를 생성하는 동작과, 상기 쿼리를 서버로 전송하는 동작과, 상기 쿼리에 대응하는 제3 데이터를 수신하는 동작과, 상기 제3 데이터를, 미리 저장된 비밀키를 이용하여 복호화한 제4 데이터를 생성하여 출력하는 동작을 포함할 수 있다. 또한 다른 실시예도 가능하다.
Description
본 발명은 데이터를 관리하는 방법 및 그를 위한 장치들에 관한 것이다.
최근 클라우드 스토리지와 같은 외부 저장 공간에 저장된 데이터에 대한 보안 문제가 이슈화되고 있다. 외부 저장 공간에 저장된 데이터를 보호하기 위해 접근 제어나 키 관리 기술이 주로 사용되는데, 이는 외부 침입자를 막기에 유효한 방법이지만 외부 저장 공간의 운영자가 저장되어 있는 데이터를 악의적으로 사용하는 것을 근본적으로 방지하지 못한다. 또한 외부 사용자가 외부 저장 공간에 접근할 수 있는 키를 알아내는 경우, 그 외부 사용자 또한 상기 외부 저장 공간에 있는 데이터를 허가 없이 악의적으로 사용할 수 있다.
데이터를 외부 저장 공간에 저장한 당사자 이외의 타인이 외부 저장 공간에 저장된 데이터를 악의적으로 사용하는 것을 방지하기 위하여 상기 데이터를 암호화하여 저장하는 방식을 고려할 수 있다. 그러나 데이터를 암호화하여 저장하는 경우 일반적인 데이터 검색 방법으로는 해당 데이터를 저장한 당사자조차 원하는 데이터를 검색하기에 용이하지 않아 관리에 어려움이 따른다.
본 발명의 목적은 외부 저장 공간에 저장되어 있는 암호화된 데이터의 암호화 상태를 유지하면서 상기 암호화된 데이터를 관리할 수 있는 방법 및 그를 위한 장치들을 제공함에 있다.
본 발명의 일 실시예에 따른 전자 장치가 데이터를 관리하는 방법은, 사용자에 의해 입력된 제1 데이터를 공개키를 이용하여 암호화한 제2 데이터를 생성하는 동작과, 상기 제2 데이터를 포함하는 쿼리를 생성하는 동작과, 상기 쿼리를 서버로 전송하는 동작과, 상기 서버로부터 상기 쿼리에 대응하는 제3 데이터를 수신하는 동작과, 상기 제3 데이터를, 상기 공개키에 대응하는 비밀키를 이용하여 복호화한 제4 데이터를 생성하여 출력하는 동작을 포함할 수 있다.
본 발명의 일 실시예에 따른 데이터를 관리하는 전자 장치는, 통신 인터페이스와, 사용자에 의해 입력된 제1 데이터를 공개키를 이용하여 암호화한 제2 데이터를 생성하고, 상기 제2 데이터를 포함하는 쿼리를 생성하고, 상기 쿼리를 서버로 전송하고, 상기 서버로부터 상기 쿼리에 대응하는 제3 데이터를 수신하고, 상기 제3 데이터를, 상기 공개키에 대응하는 비밀키를 이용하여 복호화한 제4 데이터를 생성하여 출력하는 프로세서를 포함할 수 있다.
본 발명의 일 실시예에 따른 서버가 데이터를 관리하는 방법은, 전자 장치로부터 제1 데이터를 포함하는 쿼리를 수신하는 동작과, 상기 제1 쿼리에 포함된 명령어에 기초하여 상기 쿼리를, 데이터를 검색하기 위한 로직으로 변환하는 동작과, 상기 로직을 만족하는 제2 데이터를 결정하는 동작과, 상기 제2 데이터를, 상기 쿼리에 대응하는 응답으로서 상기 전자 장치로 전송하는 동작을 포함하고, 상기 제1 데이터 및 상기 제2 데이터는, 상기 전자 장치에 의하여 공개키를 이용하여 동형 암호화된 데이터일 수 있다.
본 발명의 일 실시예에 따른 데이터를 관리하는 서버는, 전자 장치로부터 제1 데이터를 포함하는 쿼리를 수신하는 통신 인터페이스와, 상기 제1 쿼리에 포함된 명령어에 기초하여 상기 쿼리를, 데이터를 검색하기 위한 로직으로 변환하고, 상기 로직을 만족하는 제2 데이터를 결정하고, 상기 제2 데이터를, 상기 쿼리에 대응하는 응답으로서 상기 전자 장치로 전송하도록 상기 통신 인터페이스를 제어하는 프로세서와, 상기 제1 데이터 및 상기 제2 데이터는, 상기 전자 장치에 의하여 공개키를 이용하여 동형 암호화된 데이터일 수 있다.
본 발명에 따르면, 외부 저장 공간에 저장되어 있는 암호화된 데이터의 암호화 상태를 유지하면서 상기 암호화된 데이터를 관리할 수 있는 방법 및 그를 위한 장치들을 제공할 수 있다.
도 1은 본 발명의 다양한 실시예에 따른 전자 장치가 포함된 네트워크 환경을 나타낸 도면이다.
도 2는 도 1에 도시된 네트워크 환경에 포함된 서버를 나타낸 도면이다.
도 3은 본 발명의 다양한 실시예에 따른 전자 장치가 암호문인 제1 데이터를 서버에 저장하는 방법을 나타낸 도면이다.
도 4는 본 발명의 다양한 실시예에 따른 전자 장치가 서버에 저장된 암호문들을 이용하는 방법을 나타낸 순서도이다.
도 5는 본 발명의 다양한 실시예에 따른 서버가 전자 장치의 요청을 처리하는 일 예를 나타낸 순서도이다.
도 2는 도 1에 도시된 네트워크 환경에 포함된 서버를 나타낸 도면이다.
도 3은 본 발명의 다양한 실시예에 따른 전자 장치가 암호문인 제1 데이터를 서버에 저장하는 방법을 나타낸 도면이다.
도 4는 본 발명의 다양한 실시예에 따른 전자 장치가 서버에 저장된 암호문들을 이용하는 방법을 나타낸 순서도이다.
도 5는 본 발명의 다양한 실시예에 따른 서버가 전자 장치의 요청을 처리하는 일 예를 나타낸 순서도이다.
이하, 본 문서의 다양한 실시예가 첨부된 도면을 참조하여 기재된다. 그러나 이는 본 문서에 기재된 기술을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 문서의 실시예의 다양한 변경(modifications), 균등물(equivalents) 및/또는 대체물(alternatives)을 포함하는 것으로 이해되어야 한다. 도면의 설명과 관련하여, 유사한 구성요소에 대해서는 유사한 참조 부호가 사용될 수 있다.
본 문서에서, “가진다”, “가질 수 있다”, “포함한다”, 또는 “포함할 수 있다” 등의 표현은 해당 특징(예: 수치, 기능, 동작 또는 부품 등의 구성요소)의 존재를 가리키며, 추가적인 특징의 존재를 배제하지 않는다.
본 문서에서, “A 또는 B”, “A 또는/및 B 중 적어도 하나” 또는 “A 또는/및 B 중 하나 또는 그 이상” 등의 표현은 함께 나열된 항목들의 모든 가능한 조합을 포함할 수 있다. 예를 들면, “A 또는 B”, “A 및 B 중 적어도 하나”, 또는 “A 또는 B 중 적어도 하나”는, (1) 적어도 하나의 A를 포함, (2) 적어도 하나의 B를 포함 또는(3) 적어도 하나의 A 및 적어도 하나의 B 모두를 포함하는 경우를 모두 지칭할 수 있다.
본 문서에서 사용된 “제1”, “제2”, “첫째” 또는 “둘째” 등의 표현들은 다양한 구성 요소들을, 순서 및/또는 중요도에 상관없이 수식할 수 있고, 한 구성 요소를 다른 구성 요소와 구분하기 위해 사용될 뿐 해당 구성 요소들을 한정하지 않는다. 예를 들면, 제1 사용자 기기와 제2 사용자 기기는, 순서 또는 중요도와 무관하게, 서로 다른 사용자 기기를 나타낼 수 있다. 예를 들면, 본 문서에 기재된 권리 범위를 벗어나지 않으면서 제1 구성 요소는 제2 구성 요소로 명명될 수 있고, 유사하게 제2 구성 요소도 제1 구성 요소로 바꾸어 명명될 수 있다.
어떤 구성 요소(예: 제1 구성 요소)가 다른 구성 요소(예: 제 2 구성 요소)에 “(기능적으로 또는 통신적으로) 연결되어((operatively or communicatively) coupled with/to)” 있다거나 “접속되어(connected to)” 있다고 언급된 때에는, 상기 어떤 구성 요소가 상기 다른 구성 요소에 직접적으로 연결되거나, 다른 구성 요소(예: 제3 구성 요소)를 통하여 연결될 수 있다고 이해되어야 할 것이다. 반면에, 어떤 구성 요소(예: 제1 구성 요소)가 다른 구성 요소(예: 제2 구성 요소)에 “직접 연결되어” 있다거나 “직접 접속되어” 있다고 언급된 때에는, 상기 어떤 구성 요소와 상기 다른 구성 요소 사이에 다른 구성 요소(예: 제3 구성 요소)가 존재하지 않는 것으로 이해될 수 있다.
본 문서에서 사용된 표현 “~하도록 구성된(또는 설정된)(configured to)”은 상황에 따라, 예를 들면, “~에 적합한(suitable for)”, “~하는 능력을 가지는(having the capacity to)”, “~하도록 설계된(designed to)”, “~하도록 변경된(adapted to)”, “~하도록 만들어진(made to)” 또는 “~를 할 수 있는(capable of)”과 바꾸어 사용될 수 있다. 용어 “~하도록 구성된(또는 설정된)”은 하드웨어적으로 “특별히 설계된(specifically designed to)” 것만을 반드시 의미하지 않을 수 있다. 대신에 어떤 상황에서는, “~하도록 구성된 장치”"라는 표현은, 그 장치가 다른 장치 또는 부품들과 함께 “~할 수 있는” 것을 의미할 수 있다. 예를 들면, 문구 “A, B 및 C를 수행하도록 구성된(또는 설정된) 프로세서”는 해당 동작을 수행하기 위한 전용 프로세서(예: 임베디드 프로세서), 또는 메모리 장치에 저장된 하나 이상의 소프트웨어 프로그램들을 실행함으로써, 해당 동작들을 수행할 수 있는 범용 프로세서(generic-purpose processor)(예: CPU 또는 application processor)를 의미할 수 있다.
본 문서에서 사용된 용어들은 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 다른 실시예의 범위를 한정하려는 의도가 아닐 수 있다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함할 수 있다. 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 용어들은 본 문서에 기재된 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가질 수 있다. 본 문서에 사용된 용어들 중 일반적인 사전에 정의된 용어들은, 관련 기술의 문맥상 가지는 의미와 동일 또는 유사한 의미로 해석될 수 있으며, 본 문서에서 명백하게 정의되지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. 경우에 따라서, 본 문서에서 정의된 용어일지라도 본 문서의 실시예들을 배제하도록 해석될 수 없다.
본 문서의 다양한 실시예들에 따른 전자 장치는, 예를 들면, 스마트 폰(smartphone), 태블릿 PC(tablet personal computer), 이동 전화기(mobile phone), 영상 전화기, 전자책 리더기(e-book reader), 데스크탑 PC(desktop personal computer), 랩탑 PC(laptop personal computer), 넷북 컴퓨터(netbook computer), 워크스테이션(workstation), 서버, PDA(personal digital assistant), PMP(portable multimedia player), MP3 플레이어, 모바일 의료기기, 카메라(camera) 또는 웨어러블 장치(wearable device)중 적어도 하나를 포함할 수 있다. 다양한 실시예에 따르면, 웨어러블 장치는 액세서리형(예: 시계, 반지, 팔찌, 발찌, 목걸이, 안경, 콘택트 렌즈 또는 머리 착용형 장치(head-mounted-device(HMD)), 직물 또는 의류 일체형(예: 전자의복), 신체 부착형(예: 스킨 패드(skin pad) 또는 문신), 또는 생체 이식형(예: implantable circuit) 중 적어도 하나를 포함할 수 있다.
어떤 실시예들에서, 전자 장치는 가전제품(home appliance)일 수 있다. 가전제품은, 예를 들면, 텔레비전, DVD(digital video disk) 플레이어, 오디오, 냉장고, 에어컨, 청소기, 오븐, 전자레인지, 세탁기, 공기청정기, 셋톱박스(set-top box), 홈 오토매이션 컨트롤 패널(home automation control panel), 보안 컨트롤 패널(security control panel), TV 박스(예: 삼성HomeSyncTM, 애플TVTM 또는 구글 TVTM), 게임콘솔(예: XboxTM, PlayStationTM), 전자 사전, 전자키, 캠코더(camcorder) 또는 전자 액자 중 적어도 하나를 포함할 수 있다.
다른 실시예에서, 전자 장치는, 각종 의료기기(예:각종 휴대용 의료측정기기(혈당 측정기, 심박 측정기, 혈압 측정기 또는 체온 측정기 등), MRA(magnetic resonance angiography), MRI(magnetic resonance imaging), CT(computed tomography), 촬영기 또는 초음파기 등), 네비게이션(navigation) 장치, 위성 항법 시스템(GNSS(global navigation satellite system)), EDR(event data recorder), FDR(flight data recorder), 자동차 인포테인먼트(infotainment) 장치, 선박용 전자 장비(예:선박용 항법장치, 자이로 콤파스 등), 항공전자기기(avionics), 보안기기, 차량용 헤드 유닛(head unit), 산업용 또는 가정용 로봇, 금융기관의 ATM(automatic teller's machine), 상점의 POS(point of sales) 또는 사물 인터넷 장치(internet of things)(예: 전구, 각종 센서, 전기 또는 가스 미터기, 스프링클러 장치, 화재 경보기, 온도 조절기(thermostat), 가로등, 토스터(toaster), 운동 기구, 온수 탱크, 히터, 보일러 등) 중 적어도 하나를 포함할 수 있다.
어떤 실시예에 따르면, 전자 장치는 가구(furniture) 또는 건물/구조물의 일부, 전자 보드(electronic board), 전자 사인 수신 장치(electronic signature receiving device), 프로젝터(projector) 또는 각종 계측기기(예: 수도, 전기, 가스 또는 전파 계측 기기 등) 중 적어도 하나를 포함할 수 있다. 다양한 실시예에서, 전자 장치는 전술한 다양한 장치들 중 하나 또는 그 이상의 조합일 수 있다. 어떤 실시예에 따른 전자 장치는 플렉서블 전자 장치일 수 있다. 또한 본 문서의 실시예에 따른 전자 장치는 전술한 기기들에 한정되지 않으며, 기술 발전에 따른 새로운 전자 장치를 포함할 수 있다.
이하, 첨부 도면을 참조하여, 다양한 실시예에 따른 전자 장치가 설명된다. 본 문서에서, 사용자라는 용어는 전자 장치를 사용하는 사람 또는 전자 장치를 사용하는 장치(예: 인공지능 전자 장치)를 지칭할 수 있다.
도 1은 본 발명의 다양한 실시예에 따른 전자 장치가 포함된 네트워크 환경을 나타낸 도면이다. 도 1을 참조하여, 다양한 실시예에서의, 네트워크 환경(100) 내의 전자 장치(101)가 기재된다.
전자 장치(101)는 제1 버스(110), 제1 프로세서(120), 제1 메모리(130), 입출력 인터페이스(140) 및 제1 통신 인터페이스(150)를 포함할 수 있다. 어떤 실시예에서는, 전자 장치(101)는, 구성 요소들 중 적어도 하나를 생략하거나 다른 구성 요소를 추가적으로 구비할 수 있다.
제1 버스(110)는, 예를 들면, 구성 요소들(120-150)을 서로 연결하고, 구성 요소들 간의 통신(예: 제어 메시지 및/또는 데이터)을 전달하는 회로를 포함할 수 있다.
제1 프로세서(120)는, 중앙처리장치(central processing unit(CPU)), 어플리케이션 프로세서(application processor(AP)) 또는 커뮤니케이션 프로세서(communication processor(CP)) 중 하나 또는 그 이상을 포함할 수 있다. 제1 프로세서(120)는, 예를 들면, 전자 장치(101)의 적어도 하나의 다른 구성 요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다.
한 실시예에 따르면, 제1 프로세서(120)는 공개키 또는 비밀키를 생성할 수 있다. 상기 제1 프로세서(120)는 상기 공개키 또는 비밀키를 이용하여 데이터(평문)를 암호화하거나 또는 암호화된 데이터(암호문)를 복호화할 수 있다.
상기 제1 프로세서(120)는 상기 공개키를 서버(201)에 전송하도록 제1 통신 인터페이스(150)를 제어할 수 있다. 또한 제1 프로세서(120)는 상기 암호문을 서버(201)에 전송하도록 제1 통신 인터페이스(150)를 제어할 수 있다.
한 실시예에 따르면, 상기 제1 프로세서(120)는 사용자 입력에 따라 쿼리를 생성할 수 있다. 예를 들어, 사용자가 입출력 인터페이스(140)를 통해 서버(201)에 저장된 데이터를 검색하여 줄 것을 요청하였다고 가정한다. 상기 제1 프로세서(120)에 상기 사용자의 요청을 반영한 쿼리를 생성할 수 있다. 이때 상기 제1 프로세서(120)는 상기 요청에 포함된 특정한 값(예를 들어, 검색 범위 등)을 공개키를 이용하여 암호화하고, 암호화된 값과 상기 사용자의 요청에 대응하는 동작을 실행하기 위한 명령어를 포함하는 쿼리를 생성할 수 있다.
예를 들어, 서버(201)에 직원별 연봉이 입력되어 있다고 가정한다. 전자 장치(101)의 사용자는 상기 연봉이 5만불 이상 10만불 이하인 직원의 수를 알려줄 것을 전자 장치(101)에 요청할 수 있다. 전자 장치(101)의 제1 프로세서(120)는 위와 같은 사용자의 요청에 따른 쿼리를 생성할 수 있다. 또한 상기 쿼리를 생성하기 앞서, 제1 프로세서(120)는 사용자에 의해 입력된 파라미터, 예를 들어, 연봉의 범위(5만불 이상 10만불 이하), 검색 항목인 ‘직원’ 등을 공개키를 이용하여 암호화할 수 있다. 제1 프로세서(120)는 상기 암호화된 파라미터와, 상기 사용자의 요청에 따른 동작(연봉이 5만불 이상 10만불 이하인 직원의 수를 카운트하는 동작)을 실행하기 위한 명령어를 조합함으로써 서버(201)에 전송할 쿼리를 생성할 수 있다. 이때, 제1 프로세서(120)는 상기 파라미터(예: ‘5만불 이상 10만불 이하’, ‘직원’ 등)를 동형 암호화 방식으로 암호화할 수 있다.
한 실시예에 따르면, 제1 프로세서(120)는, 상기 쿼리에 대한 응답으로서 상기 서버(201)로부터 수신한 결과값을 비밀키를 이용하여 복호화할 수 있다. 상기 서버(201)로부터 수신한 결과값은 동형 암호일 수 있다.
예를 들어, 연봉이 5만불 이상 10만불 이하인 직원의 수가 10명이라고 가정한다. 상기 서버(201)는, 상기 전자 장치(101)로부터 연봉이 5만불 이상 10만불 이하인 직원의 수로서, 동형 암호인 ‘3482101’를 출력할 수 있다. 제1 프로세서(120)는 상기 동형 암호인 ‘3482101’를 비밀키를 이용하여 복호화하고, 복호화된 값으로서 ‘10’을 획득할 수 있다. 그에 따라 제1 프로세서(120)는 5만불 이상 10만불 이하인 직원의 수로서 ‘10’을 사용자에게 출력하여 제공할 수 있다. 한 실시예에 따르면, 상기 제1 프로세서(120)는 입출력 인터페이스(140)에 포함된 스크린을 통하여 상기 5만불 이상 10만불 이하인 직원의 수 ‘10’을 출력할 수 있다.
제1 메모리(130)는, 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 제1 메모리(130)는, 예를 들면, 전자 장치(101)의 적어도 하나의 다른 구성 요소에 관계된 명령 또는 데이터를 저장할 수 있다.
한 실시예에 따르면, 제1 메모리(130)에는 공개키 및 비밀키가 저장될 수 있으며, 또한 제1 메모리(130)에는 비밀키 또는 공개키를 이용하여 암호화된 데이터, 예를 들어 동형 암호 등이 저장될 수 있다.
입출력 인터페이스(140)는, 예를 들면, 사용자 또는 다른 외부 기기로부터 입력된 명령 또는 데이터를 전자 장치(101)의 다른 구성 요소(들)에 전달할 수 있는 인터페이스의 역할을 할 수 있다. 또한 입출력 인터페이스(140)는 전자 장치(101)의 다른 구성 요소(들)로부터 수신된 명령 또는 데이터를 사용자 또는 다른 외부 기기로 출력할 수 있다.
한 실시예에 따르면, 상기 입출력 인터페이스(140)는 터치 스크린 등의 디스플레이를 포함하는 형태로 구현되어 전자펜 또는 사용자의 신체의 일부를 이용한 터치, 제스처, 근접 또는 호버링 입력을 수신할 수 있다. 한 실시예에 따르면, 전자 장치(101)가 서버(201)로부터 수신한 데이터가 암호문인 경우, 상기 입출력 인터페이스(140)는 상기 암호문이 복호화된 평문을 표시하여 사용자에게 제공할 수 있다. 상기 암호문은 제1 프로세서(120)에 의하여 복호화되어 평문으로 변환될 수 있다.
제1 통신 인터페이스(150)는, 예를 들면, 전자 장치(101)와 외부 장치(예를 들어, 서버(201)) 간의 통신을 설정할 수 있다. 예를 들면, 제1 통신 인터페이스(150)는 무선 통신 또는 유선 통신을 통해서 네트워크(162)에 연결되어 외부 장치(예를 들어, 서버(201))와 통신할 수 있다.
한 실시예에 따르면, 제1 통신 인터페이스(150)는 제1 프로세서(120)의 제어 하에 상기 제1 프로세서(120)에 의하여 생성된 공개키를 서버(201)로 전송할 수 있다. 또한 제1 통신 인터페이스(150)는 제1 프로세서(120)에 의하여 생성된 쿼리(query)를 서버(201)에 전송하고, 상기 서버(201)로부터 상기 쿼리(query)에 대응하는 응답(response)을 수신할 수 있다. 이때 상기 쿼리 또는 응답은 암호문이거나 또는 암호문을 포함하는 데이터일 수 있다.
무선 통신은, 예를 들면, 셀룰러 통신 프로토콜로서, 예를 들면, LTE(long-term evolution), LTE-A(LTE Advance), CDMA(code division multiple access), WCDMA(wideband CDMA), UMTS(universal mobile telecommunications system), WiBro(Wireless Broadband) 또는 GSM(Global System for Mobile Communications) 등 중 적어도 하나를 사용할 수 있다. 또한 무선 통신은, 예를 들면, 근거리 통신을 포함할 수 있다. 근거리 통신은, 예를 들면, WiFi(wireless fidelity), 블루투스(Bluetooth), NFC(near field communication), 또는 GNSS(global navigation satellite system) 등 중 적어도 하나를 포함할 수 있다. GNSS는 사용 지역 또는 대역폭 등에 따라, 예를 들면, GPS(Global Positioning System), Glonass(Global Navigation Satellite System), Beidou Navigation Satellite System(이하 “Beidou”) 또는 Galileo, the European global satellite-based navigation system 중 적어도 하나를 포함할 수 있다. 이하, 본 문서에서는, “GPS”는 “GNSS”와 혼용되어 사용(interchangeably used)될 수 있다. 유선 통신은, 예를 들면, USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard 232) 또는 POTS(plain old telephone service) 등 중 적어도 하나를 포함할 수 있다. 네트워크(162)는 통신 네트워크(telecommunications network), 예를 들면, 컴퓨터 네트워크(computer network)(예: LAN 또는 WAN), 인터넷 또는 전화망(telephone network) 중 적어도 하나를 포함할 수 있다.
도 1에는 도시되지 않았으나, 전자 장치(101)는 디스플레이를 추가적으로 더 포함할 수 있다. 상기 디스플레이는 제1 프로세서(120)에 의하여 복호화된 데이터, 예를 들어 평문 또는 상기 평문을 포함하는 데이터를 표시함으로써 사용자에게 제공할 수 있다. 디스플레이는, 예를 들면, 액정 디스플레이(liquid crystal display(LCD)), 발광 다이오드(light-emitting diode(LED)) 디스플레이, 유기 발광 다이오드(organic light-emitting diode(OLED)) 디스플레이, 마이크로 전자기계 시스템(micro electro mechanical systems(MEMS)) 디스플레이 또는 전자종이(electronic paper) 디스플레이를 포함할 수 있다.
한 실시예에 따르면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로 또는 요청에 의하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 그와 연관된 적어도 일부 기능을 다른 장치(예를 들어, 서버(201))에게 요청할 수 있다. 다른 장치(예를 들어, 서버(201))는 요청된 기능 또는 추가 기능을 실행하고, 그 결과를 전자 장치(101)로 전달할 수 있다. 전자 장치(101)는 수신된 결과를 그대로 또는 추가적으로 처리하여 요청된 기능이나 서비스를 제공할 수 있다. 이를 위하여, 예를 들면, 클라우드 컴퓨팅, 분산 컴퓨팅 또는 클라이언트-서버 컴퓨팅 기술이 이용될 수 있다.
본 발명의 일 실시예에 따른 데이터를 관리하는 전자 장치는, 통신 인터페이스와, 사용자에 의해 입력된 제1 데이터를 공개키를 이용하여 암호화한 제2 데이터를 생성하고, 상기 제2 데이터를 포함하는 쿼리를 생성하고, 상기 쿼리를 서버로 전송하고, 상기 서버로부터 상기 쿼리에 대응하는 제3 데이터를 수신하고, 상기 제3 데이터를, 상기 공개키에 대응하는 비밀키를 이용하여 복호화한 제4 데이터를 생성하여 출력하는 프로세서를 포함할 수 있다.
도 2는 도 1에 도시된 네트워크 환경에 포함된 서버를 나타낸 도면이다.
서버(201)는 제2 버스(210), 제2 프로세서(220), 제2 메모리(230) 및 제2 통신 인터페이스(250)를 포함할 수 있다. 어떤 실시예에서는, 서버(201)는, 구성 요소들 중 적어도 하나를 생략하거나 다른 구성 요소를 추가적으로 구비할 수 있다.
제2 버스(210)는, 예를 들면, 구성 요소들(220, 230, 250)을 서로 연결하고, 구성 요소들 간의 통신(예: 제어 메시지 및/또는 데이터)을 전달하는 회로를 포함할 수 있다.
제2 프로세서(220)는, 중앙처리장치(central processing unit(CPU)), 어플리케이션 프로세서(application processor(AP)) 또는 커뮤니케이션 프로세서(communication processor(CP)) 중 하나 또는 그 이상을 포함할 수 있다. 제2 프로세서(220)는, 예를 들면, 서버(201) 의 적어도 하나의 다른 구성 요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다.
한 실시예에 따르면, 제2 프로세서(220)는 전자 장치(101)로부터 수신한 공개키를 이용하여 데이터를 암호화하거나 또는 암호화된 데이터를 복호화할 수 있다. 상기 제2 프로세서(220)는 전자 장치(101)로부터 수신한 쿼리를 분석하고, 상기 쿼리를 로직으로 변환할 수 있다. 이때 제2 프로세서(220)는 공개키를 이용하여 상기 쿼리를 로직으로 변환할 수 있다. 상기 쿼리는 전자 장치(101)의 사용자로부터 상기 전자 장치(101)에 입력된 특정한 값, 즉 파라미터와 명령어를 포함할 수 있다. 상기 제2 프로세서(220)는 상기 쿼리를 분석하여 상기 쿼리에 포함된 파라미터의 처리 방식을 결정할 수 있다. 제2 프로세서(220)는 상기 결정된 파라미터의 처리 방식에 따라 상기 쿼리를 로직으로 변환할 수 있다. 상기 제2 프로세서(220)는 상기 로직에 따라 제2 메모리(230)에 저장된 데이터(예를 들어 암호문)을 검색하거나 또는 데이터(예를 들어, 암호문)에 대한 연산을 수행할 수 있다. 상기 제2 프로세서(220)는 상기 로직을 만족하는 하나 이상의 결과값들을, 상기 쿼리에 대응하는 응답으로서 제2 통신 인터페이스(250)를 통해 전자 장치(101)로 전송할 수 있다.
한 실시예에 따르면, 상기 제2 프로세서(220)는 전자 장치(101)로부터 수신한 쿼리 중 명령어를 추출할 수 있다. 상기 명령어는, 상기 쿼리에 포함된 파라미터를 처리하는 방식으로, 제2 메모리(230)에는 명령어들 각각에 대응하는 로직이 저장되어 있을 수 있다. 한 실시예에 따르면, 상기 제2 메모리(230)에는 상기 명령어들 각각에 대응하는 로직들을 포함하는 로직 테이블이 미리 저장되어 있을 수 있다. 또한 상기 제2 프로세서(220)는 상기 테이블 및 공개키를 이용하여 전자 장치(101)로부터 수신한 쿼리를 로직으로 변환할 수 있다.
제2 메모리(230)는, 휘발성 및/또는 비휘발성 메모리를 포함할 수 있다. 제2 메모리(230)는, 예를 들면, 서버(201)의 적어도 하나의 다른 구성 요소에 관계된 명령 또는 데이터를 저장할 수 있다.
한 실시예에 따르면, 제2 메모리(230)에는 전자 장치(101)로부터 수신한 공개키가 저장될 수 있으며, 또한 제2 메모리(230)에는 전자 장치(101)로부터 수신한 일반 데이터, 즉 암호화되지 않은 데이터(평문) 또는 상기 전자 장치(101)에 의하여 암호화된 데이터(암호문)가 저장될 수 있다. 한 실시예에 따르면, 상기 제2 메모리(230)는 SQL(Structured Query Language)을 이용하는 데이터베이스(Database)의 구조를 가질 수 있다.
제2 통신 인터페이스(250)는, 예를 들면, 서버(201)와 외부 장치(예를 들어, 전자 장치(101)) 간의 통신을 설정할 수 있다. 예를 들면, 제2 통신 인터페이스(250)는 무선 통신 또는 유선 통신을 통해서 네트워크(162)에 연결되어 외부 장치(예를 들어, 전자 장치(101))와 통신할 수 있다.
한 실시예에 따르면, 제2 통신 인터페이스(250)는 전자 장치(101)로부터 수신한 공개키를 해당 전자 장치(101)에 대응하여 저장할 수 있다. 상기 제2 통신 인터페이스(250)는 전자 장치(101)로부터 쿼리를 수신하고, 상기 쿼리에 대응하는 결과값을 포함하는 응답을 전자 장치(101)에 전송할 수 있다.
무선 통신은, 예를 들면, 셀룰러 통신 프로토콜로서, 예를 들면, LTE(long-term evolution), LTE-A(LTE Advance), CDMA(code division multiple access), WCDMA(wideband CDMA), UMTS(universal mobile telecommunications system), WiBro(Wireless Broadband) 또는 GSM(Global System for Mobile Communications) 등 중 적어도 하나를 사용할 수 있다. 또한 무선 통신은, 예를 들면, 근거리 통신을 포함할 수 있다. 상기 근거리 통신은, 예를 들면, WiFi(wireless fidelity), 블루투스(Bluetooth), NFC(near field communication), 또는 GNSS(global navigation satellite system) 등 중 적어도 하나를 포함할 수 있다. GNSS는 사용 지역 또는 대역폭 등에 따라, 예를 들면, GPS(Global Positioning System), Glonass(Global Navigation Satellite System), Beidou Navigation Satellite System(이하 “Beidou”) 또는 Galileo, the European global satellite-based navigation system 중 적어도 하나를 포함할 수 있다. 유선 통신은, 예를 들면, USB(universal serial bus), HDMI(high definition multimedia interface), RS-232(recommended standard232) 또는 POTS(plain old telephone service) 등 중 적어도 하나를 포함할 수 있다. 네트워크(162)는 통신 네트워크(telecommunications network), 예를 들면, 컴퓨터 네트워크(computer network)(예: LAN 또는 WAN), 인터넷 또는 전화망(telephone network) 중 적어도 하나를 포함할 수 있다.
서버(201)는 전자 장치(101)와 동일한 또는 다른 종류의 장치일 수 있다. 한 실시예에 따르면, 서버(201)는 하나 또는 그 이상의 서버들의 그룹을 포함할 수 있다. 다양한 실시예에 따르면, 전자 장치(101)에서 실행되는 동작들의 전부 또는 일부는 서버(201)에서 실행될 수 있다. 한 실시예에 따르면, 전자 장치(101)가 어떤 기능이나 서비스를 자동으로 또는 요청에 의하여 수행해야 할 경우에, 전자 장치(101)는 기능 또는 서비스를 자체적으로 실행시키는 대신에 또는 추가적으로, 그와 연관된 적어도 일부 기능을 서버(201)에게 요청할 수 있다. 서버(201) 는 요청된 기능 또는 추가 기능을 실행하고, 그 결과를 전자 장치(101)로 전달할 수 있다. 서버(201)는 클라우드 컴퓨팅, 분산 컴퓨팅 또는 클라이언트-서버 컴퓨팅 기술을 적용한 하나 이상의 장치로 구현될 수 있다.
본 발명의 일 실시예에 따른 데이터를 관리하는 서버는, 전자 장치로부터 제1 데이터를 포함하는 쿼리를 수신하는 통신 인터페이스와, 상기 제1 쿼리에 포함된 명령어에 기초하여 상기 쿼리를, 데이터를 검색하기 위한 로직으로 변환하고, 상기 로직을 만족하는 제2 데이터를 결정하고, 상기 제2 데이터를, 상기 쿼리에 대응하는 응답으로서 상기 전자 장치로 전송하도록 상기 통신 인터페이스를 제어하는 프로세서를 포함하고, 상기 제1 데이터 및 상기 제2 데이터는, 상기 전자 장치에 의하여 공개키를 이용하여 동형 암호화된 데이터일 수 있다.
도 3은 본 발명의 다양한 실시예에 따른 전자 장치(101)가 암호문인 제1 데이터를 서버(201)에 저장하는 방법을 나타낸 도면이다.
도 3을 참조하면, 전자 장치(101)는 사용자 입력에 대응하는 제1 데이터를 선택할 수 있다(S302). 상기 제1 데이터는 암호화되지 않은 데이터, 즉 평문일 수 있다.
전자 장치(101)의 제1 프로세서(120)는 제1 메모리(130)에 저장되어 있던 공개키를 이용하여 상기 제1 데이터를 암호화한 암호문인 제2 데이터를 생성할 수 있다(S304). 이때 상기 제2 데이터는, 상기 제1 프로세서(120)에 의하여 상기 제1 데이터가 동형 암호화(Homomorphic Encryption) 방식으로 암호화된 것일 수 있다.
상기 동형화 암호화 방식은, 완전 동형 암호화(Fully Homomorphic Encrytion) 방식 및 준 동형 암호화(Somwhat Homomorphic Encryption) 방식이 있다. 제1 프로세서(120)는 암호화된 데이터에 대한 복호화 과정 없이 덧셈 및 곱셈 연산을 지원하는 알고리즘인 완전 동형 암호화 방식 또는 준 동형 암호화 방식으로 상기 제1 데이터를 암호화하여 제2 데이터로 변환할 수 있다.
전자 장치(101)는 단계 S304에서 생성된 제2 데이터를 서버(201)로 전송할 수 있다(S306). 서버(201)는 상기 제2 데이터를 상기 전자 장치(101)와 대응시켜 저장할 수 있다(S308). 즉 서버(201)에는 상기 제1 데이터가 동형 암호화된 데이터(제2 데이터)가 저장될 수 있다.
도 4는 본 발명의 다양한 실시예에 따른 전자 장치(101)가 서버(201)에 저장된 암호문들을 이용하는 방법을 나타낸 순서도이다.
도 4를 참조하면, 전자 장치(101)의 제1 프로세서(120)는 사용자 입력에 따라 제1 데이터를 포함하는 제1 쿼리를 생성할 수 있다(S402). 한 실시예에 따르면, 상기 제1 쿼리는 SQL 타입의 쿼리일 수 있다. 상기 제1 쿼리는 전자 장치(101)의 사용자로부터 입력된 명령어, 예를 들어 덧셈, 뺄셈, 곱셈 또는 나눗셈 등의 연산을 나타내는 연산자, 또는 검색(search)임을 나타내는 연산자 등을 포함할 수 있다. 한 실시예에 따르면, 사용자는 단계 S402 이전에 검색 키워드 또는 검색 범위를 제1 데이터, 즉 파라미터로서 전자 장치(101)에 입력할 수 있다. 예를 들어, 제1 프로세서(120)는 상기 제1 데이터를 이용하여 아래와 같은 제1 쿼리(451)를 생성할 수 있다.
[제1 쿼리]
전자 장치(101)의 제1 프로세서(120)는 상기 제1 쿼리를 제2 쿼리로 변환할 수 있다(S404). 이때, 제1 프로세서(120)는 명령어(예를 들어, 제1 쿼리(451)에서 Select, from 및 where)를 제외한 제1 데이터(예를 들어, 제1 쿼리(451)의 , , , 및 )를 암호화한 제2 데이터를 생성할 수 있다. 상기 제1 데이터는, 상기 전자 장치(101)의 제1 프로세서(120)에 의하여 공개키를 이용하여 동형 암호 형태를 가지는 암호문으로 변환될 수 있다. 상기 제2 쿼리는 상기 공개키를 이용하여 동형 암호화된 데이터인 제2 데이터가 포함된 쿼리를 가리킨다. 예를 들어, 제1 프로세서(120)는 상기 제1 쿼리(451)를 아래와 같은 제2 쿼리(452)로 변환할 수 있다.
[제2 쿼리]
전자 장치(101)는 상기 제2 쿼리를 서버(201)에 전송할 수 있다(S406). 서버(201)의 제2 프로세서(220)는 상기 제2 쿼리를 분석하여 상기 제2 쿼리를 로직(logic)으로 변환할 수 있다(S408). 한 실시예에 따르면, 제2 프로세서(220)는 제2 메모리(230)에 포함된 로직 테이블을 참조하여 상기 제2 쿼리를 로직으로 변환할 수 있다. 예를 들어, 제2 프로세서(230)는 제2 쿼리(452)를 아래의 로직(453)으로 변환할 수 있다.
[로직]
상기 로직(453)은 SQL 구조의 제2 메모리(230)를 검색하기 위한 것으로서, 제2 프로세서(220)는 상기 제2 쿼리를 분석하여 상기 제2 쿼리를 상기 제2 메모리(230)의 검색을 위한 로직으로 변환할 수 있다. 한 실시예에 따르면, 제2 쿼리에 포함된 명령어 각각에 대응하는 로직 명령어가 미리 설정되어 있을 수 있다. 상기 로직 명령어는 로직에 포함된 제2 데이터를 처리하기 위한 명령어로서, 예를 들어 로직(453) 중 equal일 수 있다.
한 실시예에 따르면, 상기 제2 프로세서(220)는 이퀄 회로(Equality circuit), 비교 회로(Greater-than comparison circuit) 및 덧셈 회로(Integer addition circuit) 중 적어도 하나를 포함하는 형태로 구현될 수 있다.
제2 프로세서(220)에 의하여 변환된 로직이 명령어 comp를 포함하는 경우, 상기 제2 프로세서(220)는 비교 회로를 이용하여 상기 로직을 처리할 수 있다. 상기 로직이 명령어 fadd를 포함하는 겨우, 상기 제2 프로세서(220)는 덧셈 회로를 이용하여 상기 로직을 처리할 수 있다. 상기 제2 프로세서(220)는 상기 제2 쿼리가 변환된 로직에 포함된 로직 명령어를 기초로 상기 이퀄 회로, 비교 회로 또는 덧셈 회로 중 적어도 하나를 실행시켜 상기 로직에 대응하는 동작을 실행할 수 있다.
상기 로직이 명령어 equal을 포함하는 경우, 제2 프로세서(220)는 상기 이퀄 회로를 이용하여 상기 로직을 처리할 수 있다. 예를 들어, 상기 이퀄 회로가 비트 정수 x 및 y를 처리하는 방식은 아래와 같은 수식으로 표현될 수 있다.
상기 수식(461)의 결과값에 대하여, x의 암호문 와 y의 암호문 가 동일한 평문인 x와 y를 가질 경우(x=y) 이퀄 회로는 을 결과값으로서 출력할 수 있다. 또한 x와 y가 동일하지 않은 경우, 을 결과값으로서 출력할 수 있다. 위의 식에서 x i 는 x의 i번째 bit를 의미하며, 는 x의 i번째 bit가 동형 암호화된 암호문이고, y i 는 y의 i번째 bit를 의미하며, 는 y의 i번째 bit가 동형 암호화된 암호문일 수 있다. 상기 암호문 및 는 아래와 같이 표현될 수 있다.
한 실시예에 따르면, 상기 E pk ()는 공개키 암호화 알고리즘을 나타낸 것으로서, 괄호 안의 값을 공개키인 pk를 이용하여 암호화함을 의미할 수 있다. 또한 상기 공개키는 동형 암호의 형태로 암호화될 수 있다. 위와 같이 상기 식(461)은 암호문인 와 을 포함하고 있으며, 상기 이퀄 회로는 상기 암호문이 포함된 상태로 식(461)의 출력값인 암호문()를 계산할 수 있다. 상기 암호문 e는 아래와 같다.
한 실시예에 따르면, 상기 제2 프로세서(220)는 Permuting 기법을 이용하여 상기 전자 장치(101)로부터 수신한 쿼리에 대응하는 응답, 예를 들어 응답 메시지의 모든 슬롯(slot)에 상기 암호문 e(462)(즉, 제3 데이터)를 포함시킬 수 있다. 상기 전자 장치(101)는 상기 서버(201)로부터 수신한 결과값, 즉 암호문 e(462)을 포함하는 응답 메시지 중 상기 슬롯들 간의 순서를 재배치함으로써 상기 암호문 e(462)를 상기 응답 메시지로부터 추출할 수 있다. 한 실시예에 따르면, 상기 전자 장치(101)의 프로세서(120)는 상기 암호문 e(462)에 대하여 번 동형 곱셈(homomorphic multiplication)을 수행함으로써, 상기 암호문 e(462)를 복호화할 수 있다.
상기 로직이 명령어 comp를 포함하는 경우, 제2 프로세서(220)는 비교 회로를 이용하여 상기 로직을 처리할 수 있다. 예를 들어, 상기 비교 회로가 비트의 정수 x 및 y를 처리하는 방식은 아래와 같은 수식 (471)으로 표현될 수 있다.
이때, 는 x의 i번째 비트(bit)이고, 는 1비트 에 대한 동형 암호문일 수 있다. 또한 인 경우 (471)는 이고, 인 경우 일 수 있다. 상기 은 0의 동형 암호문이고, 은 1의 동형 암호문일 수 있다.
비교 회로는 아래와 같은 수식(474)을 이용하여 2개 이상의 값들을 서로 비교한 결과를 출력할 수 있다.
한 실시예에 따르면 상기 제2 프로세서(220)는, 상기 수식 (472)의 연산 결과가 메시지의 모든 슬롯에 포함되어 있는 암호문을 결과값으로서 얻을 수 있다. 또한 상기 제2 프로세서(220)는 암호문 및 에 대하여 다음과 같은 연산을 수행할 수 있다.
한 실시예에 따르면, 상기 제2 프로세서(220)는 Permuting 기법을 이용하여 상기 전자 장치(101)로부터 수신한 쿼리에 대응하는 응답 메시지의 모든 슬롯에 상기 암호문(즉, 제3 데이터) 또는 를 포함시킬 수 있다. 상기 전자 장치(101)는 상기 서버(201)로부터 수신한 결과값, 즉 암호문 또는 로부터 응답 메시지를 추출할 수 있다. 한 실시예에 따르면, 상기 전자 장치(101)의 프로세서(120)는 상기 암호문 암호문 또는 에 대하여 번의 동형 곱셈(homomorphic multiplication)을 수행함으로써 상기 암호문 또는 를 복호화할 수 있다.
상기 로직이 fadd를 포함하는 경우, 상기 제2 프로세서(220)는 가산 회로를 이용하여 상기 로직을 처리할 수 있다. 예를 들어, 상기 가산 회로가 비트 정수 x 및 y를 zero padding을 통해 처리하는 방식은 아래와 같은 수식(481)으로 표현될 수 있다.
상기의 수식들(481, 482, 483)에서 는 x의 i번째 비트이고, 는 1 비트의 에 대한 동형 암호문일 수 있다. 마찬가지로 는 y의 i번째 비트이고, 는 1 비트의 에 대한 동형 암호문일 수 있다. 상기 에 대한 결과값으로서 제2 프로세서(230)는 개의 암호문(s)을 출력할 수 있다.
한 실시예에 따르면, 상기 2 프로세서(220)는 Permuting 기법을 이용하여 상기 전자 장치(101)로부터 수신한 쿼리에 대응하는 응답 메시지의 모든 슬롯(slot)에 상기 암호문 s(487)(즉, 제3 데이터)를 포함시킬 수 있다. 상기 전자 장치(101)는 상기 서버(201)로부터 수신한 결과값, 즉 암호문 s(487)을 포함하는 응답 메시지 중 상기 슬롯들 간의 순서를 재배치함으로써 상기 암호문 s(487)를 상기 응답 메시지로부터 추출할 수 있다. 한 실시예에 따르면, 상기 전자 장치(101)의 프로세서(120)는 상기 암호문 s(487)에 대하여 번의 동형 곱셈(homomorphic multiplication)을 수행하여 상기 암호문 s(487)를 복호화할 수 있다.
한 실시예에 따르면, 상기 제3 데이터가 결정되면(S410), 서버(201)의 제2 통신 인터페이스(250)는 상기 제3 데이터를 전자 장치(101)에 전송할 수 있다(S412). 전자 장치(101)는 제3 데이터를 복호화한 제4 데이터를 생성할 수 있다(S414). 서버(201)에 저장된 데이터는 공개키를 이용하여 동형 암호화된 암호문일 수 있다. 따라서 서버(201)로부터 전자 장치(101)로 전송된 제3 데이터 또한, 공개키를 이용하여 동형 암호화된 암호문일 수 있다. 전자 장치(101)는 제1 메모리(130)에 저장되어 있는 비밀키를 이용하여 상기 제3 데이터를 복호화할 수 있다. 상기 제4 데이터는 상기 동형 암호 형태의 암호문이 복호화된 평문으로서, 전자 장치(101)는 평문인 상기 제4 데이터를 출력할 수 있다(S416). 예를 들어, 상기 전자 장치(101)는 상기 제4 데이터를, 상기 제1 쿼리에 대한 응답으로서 디스플레이(미도시)를 통해 출력하여 사용자에게 제공할 수 있다.
도 5는 본 발명의 다양한 실시예에 따른 서버가 전자 장치의 요청을 처리하는 일 예를 나타낸 순서도이다.
도 5를 참조하면, 서버(201)는 전자 장치(101)로부터 암호문인 제1 데이터와 명령어를 포함하는 쿼리를 수신할 수 있다(S502). 상기 서버(201)는 상기 쿼리를 분석하여 상기 쿼리에 대응하는 로직 명령어를 결정할 수 있다(S504). 상기 서버(201)는 상기 로직 명령어를 이용하여 상기 쿼리를 로직으로 변환할 수 있다.
서버(201)의 제2 프로세서(220)는 상기 쿼리()를 분석하여 상기 쿼리()를 이퀄 로직()으로 변환시키는 것으로 결정할 수 있다. 그에 따라 상기 제2 프로세서(220)는 아래와 같이 쿼리()를 상기 로직() 으로 변환할 수 있다.
서버(201)의 제2 프로세서(220)는 상기 쿼리()를 분석하여 상기 쿼리()를 이퀄 로직()으로 변환시키는 것으로 결정할 수 있다. 그에 따라 상기 제2 프로세서(220)는 아래와 같이 쿼리()를 상기 로직() 으로 변환할 수 있다.
서버(201)의 제2 프로세서(220)는 상기 쿼리()를 분석하여 상기 쿼리()를 이퀄 로직()으로 변환시키는 것으로 결정할 수 있다. 그에 따라 상기 제2 프로세서(220)는 아래와 같이 쿼리()를 상기 로직() 으로 변환할 수 있다.
서버(201)의 제2 프로세서(220)는 상기 쿼리()를 분석하여 상기 쿼리()를 이퀄 로직()으로 변환시키는 것으로 결정할 수 있다. 그에 따라 상기 제2 프로세서(220)는 아래와 같이 쿼리()를 상기 로직()으로 변환할 수 있다.
서버(201)의 제2 프로세서(220)는 상기 쿼리()를 분석하여 상기 쿼리()를 이퀄 로직()으로 변환시키는 것으로 결정할 수 있다. 그에 따라 상기 제2 프로세서(220)는 아래와 같이 쿼리()를 상기 로직()으로 변환할 수 있다.
예를 들어, 전자 장치(101)에 의해 생성된 쿼리가 search-and-avg query인 경우, 제2 프로세서(220)는 상기 쿼리를 search-and-sum query 및 search-and-count로 변환하여 처리하고, 그 결과값(암호문)을 제2 통신 인터페이스(250)를 통해 전자 장치(101)로 전송할 수 있다. 상기 전자 장치(101)의 제1 프로세서(120)는 상기 search-and-sum query 결과값(암호문)을 비밀키로 복호화한 후, 복호화된 결과값을 상기 search-and-count의 결과값으로 division 연산을 수행함으로써, 예를 들어 상기 평문에 포함된 하나 이상의 데이터에 대한 평균을 구함으로써 상기 search-and-avg query에 대한 최종적인 결과값을 구할 수 있다. 예를 들어, 전자 장치(101)는 평균을 구하는 모든 대상들을 더한 값 및 대상들의 개수를 입력받아서 상기 모든 대상들을 더한 값을 대상들의 개수로 나눔으로써 평균값을 구할 수 있다. 또한 서버(201)는 상기 전자 장치(101)로부터 상기 평균값을 수신할 수 있다.
예를 들어, 전자 장치(101)에 의해 생성된 쿼리가 search-and-max query인 경우, 제2 프로세서(220)는 상기 쿼리에 포함된 파라미터에 비교 회로를 반복적으로 적용하여 최대값 또는 최소값에 대응하는 암호문을 상기 제2 메모리(230)로부터 추출할 수 있다. 서버(201)는 상기 최대값 또는 최소값에 대응하는 암호문을 전자 장치(101)에 전송할 수 있다. 상기 전자 장치(101)의 제1 프로세서(120)는 상기 암호문을 비밀키로 복호화하여 최종적인 결과값, 즉 상기 최대값 또는 최소값을 구할 수 있다.
서버(201)는 단계 S506에서 변환된 로직을 이용하여 상기 로직에 대한 결과값으로서 제2 데이터를 결정할 수 있다(S508). 서버(201)의 제2 메모리(230)에는 공개키를 이용하여 동형 암호화된 데이터가 저장되어 있으므로, 상기 제2 데이터 또한 동형 암호화된 데이터일 수 있다. 서버(201)는 상기 제2 데이터를 전자 장치(101)로 전송할 수 있다(S510).
본 발명의 일 실시예에 따른 전자 장치가 데이터를 관리하는 방법은, 사용자에 의해 입력된 제1 데이터를 공개키를 이용하여 암호화한 제2 데이터를 생성하는 동작과, 상기 제2 데이터를 포함하는 쿼리를 생성하는 동작과, 상기 쿼리를 서버로 전송하는 동작과, 상기 서버로부터 상기 쿼리에 대응하는 제3 데이터를 수신하는 동작과, 상기 제3 데이터를, 상기 공개키에 대응하는 비밀키를 이용하여 복호화한 제4 데이터를 생성하여 출력하는 동작을 포함할 수 있다.
본 발명의 일 실시예에 따른 서버가 데이터를 관리하는 방법은, 전자 장치로부터 제1 데이터를 포함하는 쿼리를 수신하는 동작과, 상기 제1 쿼리에 포함된 명령어에 기초하여 상기 쿼리를, 데이터를 검색하기 위한 로직으로 변환하는 동작과, 상기 로직을 만족하는 제2 데이터를 결정하는 동작과, 상기 제2 데이터를, 상기 쿼리에 대응하는 응답으로서 상기 전자 장치로 전송하는 동작을 포함하고, 상기 제1 데이터 및 상기 제2 데이터는, 상기 전자 장치에 의하여 공개키를 이용하여 동형 암호화된 데이터일 수 있다.
101: 전자 장치
110: 제1 버스
120: 제1 프로세서 130: 제1 메모리
140: 입출력 인터페이스 150: 제1 통신 인터페이스
162: 네트워크 201: 서버
210: 제2 버스 220: 제2 프로세서
250: 제2 통신 인터페이스
120: 제1 프로세서 130: 제1 메모리
140: 입출력 인터페이스 150: 제1 통신 인터페이스
162: 네트워크 201: 서버
210: 제2 버스 220: 제2 프로세서
250: 제2 통신 인터페이스
Claims (22)
- 전자 장치가 데이터를 관리하는 방법에 있어서,
사용자에 의해 입력된 제1 데이터를 공개키를 이용하여 암호화한 제2 데이터를 생성하는 동작과,
상기 제2 데이터를 포함하는 쿼리를 생성하는 동작과,
상기 쿼리를 서버로 전송하는 동작과,
상기 서버로부터 상기 쿼리에 대응하는 제3 데이터를 수신하는 동작과,
상기 제3 데이터를, 상기 공개키에 대응하는 비밀키를 이용하여 복호화한 제4 데이터를 생성하여 출력하는 동작을 포함함을 특징으로 하는 방법. - 제1항에 있어서, 상기 제2 데이터 및 상기 제3 데이터 각각은,
동형 암호화된 데이터임을 특징으로 하는 방법. - 제2항에 있어서, 상기 사용자에 의해 입력된 제1 데이터를 암호화하여 제2 데이터를 생성하는 동작 이전에,
상기 공개키를 이용하여 하나 이상의 평문들을 암호화한 암호문들을 생성하는 동작과,
상기 암호문들을 상기 서버로 전송하는 동작을 더 포함함을 특징으로 하는 방법. - 제3항에 있어서, 상기 쿼리에 대응하는 제3 데이터를 수신하는 동작은,
상기 서버에 전송된 상기 암호문들 중 적어도 일부를 상기 제3 데이터로서 수신하는 동작을 포함함을 특징으로 하는 방법. - 데이터를 관리하는 전자 장치에 있어서,
통신 인터페이스와,
사용자에 의해 입력된 제1 데이터를 공개키를 이용하여 암호화한 제2 데이터를 생성하고, 상기 제2 데이터를 포함하는 쿼리를 생성하고, 상기 쿼리를 상기 통신 인터페이스를 통해 서버로 전송하고, 상기 통신 인터페이스를 통해 상기 서버로부터 상기 쿼리에 대응하는 제3 데이터를 수신하고, 상기 제3 데이터를, 상기 공개키에 대응하는 비밀키를 이용하여 복호화한 제4 데이터를 생성하여 출력하는 프로세서를 포함함을 특징으로 하는 전자 장치. - 제5항에 있어서, 상기 제2 데이터 및 상기 제3 데이터 각각은,
동형 암호화된 데이터임을 특징으로 하는 전자 장치. - 제6항에 있어서, 상기 프로세서는,
상기 공개키를 이용하여 하나 이상의 평문들을 암호화한 암호문들을 생성하고, 상기 통신 인터페이스를 통해 상기 암호문들을 상기 서버로 전송함을 특징으로 하는 전자 장치. - 제7항에 있어서, 상기 통신 인터페이스는,
상기 서버에 전송된 상기 암호문들 중 적어도 일부를 상기 제3 데이터로서 수신함을 특징으로 하는 전자 장치. - 서버가 데이터를 관리하는 방법에 있어서,
전자 장치로부터 제1 데이터를 포함하는 쿼리를 수신하는 동작과,
상기 쿼리에 포함된 명령어에 기초하여 상기 쿼리를, 데이터를 검색하기 위한 로직으로 변환하는 동작과,
상기 로직을 만족하는 제2 데이터를 결정하는 동작과,
상기 제2 데이터를, 상기 쿼리에 대응하는 응답으로서 상기 전자 장치로 전송하는 동작을 포함하고,
상기 제1 데이터 및 상기 제2 데이터는,
상기 전자 장치에 의하여 공개키를 이용하여 동형 암호화된 데이터임을 특징으로 하는 방법. - 제9항에 있어서, 상기 전자 장치로부터 제1 데이터를 포함하는 쿼리를 수신하는 동작 이전에,
상기 전자 장치로부터 상기 공개키를 수신하여 저장하는 동작을 더 포함함을 특징으로 하는 방법. - 제9항에 있어서, 상기 전자 장치로부터 제1 데이터를 포함하는 쿼리를 수신하는 동작 이전에,
상기 전자 장치에 의하여, 상기 공개키를 이용하여 하나 이상의 평문들이 암호화된 암호문들을 수신하여 저장하는 동작을 더 포함함을 특징으로 하는 방법. - 제9항에 있어서,
상기 쿼리가 상기 제1 데이터에 포함되는 두 값이 서로 일치하는지 여부를 결정하기 위한 것이라면, 아래 식 1에 의해 상기 두 값의 일치 여부가 결정됨을 특징으로 하는 방법.
……(식 1)
상기 식 1에서 i 및 (μ-1)은 자연수이고,
상기 식 1은 x와 y가 동일한 경우 1을 출력하고, 상기 x와 상기 y가 서로 다른 경우 0을 출력하는 것이고, 상기 x 및 상기 y는 정수이고, 상기 및 상기 는, 상기 x 및 상기 y가 암호화된 값이고, x i 는 x의 i번째 비트를 나타내는 수이고, y i 는 y의 i번째 비트를 나타내는 수이며, 상기 는 x i 가 암호화된 값이고, 는 y i 가 암호화된 값이다. - 제9항에 있어서,
상기 쿼리가 상기 제1 데이터에 포함되는 두 값들 중 큰 값을 결정하기 위한 것이라면, 아래 식 2에 의해 상기 두 값들 중 큰 값이 결정됨을 특징으로 하는 방법.
……(식 2)
상기 식 2에서, i 및 (μ-1)은 자연수이고,
상기 식 2는 상기 제1 데이터에 포함된 x와 y 중 상기 큰 값을 출력하는 것이고, 상기 x 및 상기 y는 정수이고, 상기 및 상기 는, 상기 x 및 상기 y가 암호화된 값이고, x i 는 x의 i번째 비트를 나타내는 수이고, y i 는 y의 i번째 비트를 나타내는 수이며, 상기 는 x i 가 암호화된 값이고, 는 y i 가 암호화된 값이다. - 제9항에 있어서,
상기 쿼리가 상기 제1 데이터에 포함되는 적어도 두 값들을 더하기 위한 것이라면, 아래 식 3에 의해 상기 적어도 두 값들을 더한 값이 결정됨을 특징으로 하는 방법.
……(식 3)
상기 식 3에서, i 및 (ν-1)은 자연수이고,
상기 식 3은 상기 제1 데이터에 포함된 x 및 y를 더한 값을 출력하기 위한 것이고, 상기 x 및 상기 y는 정수이고, 상기 및 상기 는, 상기 x 및 상기 y가 암호화된 값이고, x i 는 x의 i번째 비트를 나타내는 수이고, y i 는 y의 i번째 비트를 나타내는 수이며, 상기 는 x i 가 암호화된 값이고, 는 y i 가 암호화된 값이다. - 제9항에 있어서,
상기 전자 장치에 의하여 상기 제2 데이터가 복호화된 제3 데이터가 생성되는 동작을 더 포함함을 특징으로 하는 방법. - 데이터를 관리하는 서버에 있어서,
전자 장치로부터 제1 데이터를 포함하는 쿼리를 수신하는 통신 인터페이스와,
상기 쿼리에 포함된 명령어에 기초하여 상기 쿼리를, 데이터를 검색하기 위한 로직으로 변환하고, 상기 로직을 만족하는 제2 데이터를 결정하고, 상기 제2 데이터를, 상기 쿼리에 대응하는 응답으로서 상기 전자 장치로 전송하도록 상기 통신 인터페이스를 제어하는 프로세서와,
상기 제1 데이터 및 상기 제2 데이터는,
상기 전자 장치에 의하여 공개키를 이용하여 동형 암호화된 데이터임을 특징으로 하는 서버. - 제16항에 있어서,
상기 통신 인터페이스를 통해 상기 전자 장치로부터 수신된 상기 공개키를 저장하는 메모리를 더 포함함을 특징으로 하는 서버. - 제17항에 있어서, 상기 프로세서는,
상기 전자 장치에 미리 저장된 공개키를 이용하여 하나 이상의 평문들이 암호화된 암호문들이 상기 전자 장치로부터 전송되면, 상기 암호문들을 상기 메모리에 저장함을 특징으로 하는 서버. - 제16항에 있어서,
상기 쿼리가 상기 제1 데이터에 포함되는 두 값이 서로 일치하는지 여부를 결정하기 위한 것이라면, 아래 식 4에 의해 상기 두 값의 일치 여부가 결정됨을 특징으로 하는 방법.
……(식 4)
상기 식 4에서 i 및 (μ-1)은 자연수이고,
상기 식 4는 x와 y가 동일한 경우 1을 출력하고, 상기 x와 상기 y가 서로 다른 경우 0을 출력하는 것이고, 상기 x 및 상기 y는 정수이고, 상기 및 상기 는, 상기 x 및 상기 y가 암호화된 값이고, x i 는 x의 i번째 비트를 나타내는 수이고, y i 는 y의 i번째 비트를 나타내는 수이며, 상기 는 x i 가 암호화된 값이고, 는 y i 가 암호화된 값이다. - 제16항에 있어서,
상기 쿼리가 상기 제1 데이터에 포함되는 두 값들 중 큰 값을 결정하기 위한 것이라면, 아래 식 5에 의해 상기 두 값들 중 큰 값이 결정됨을 특징으로 하는 서버.
……(식 5)
상기 식 5에서, i 및 (μ-1)은 자연수이고,
상기 식 5는 상기 제1 데이터에 포함된 x와 y 중 상기 큰 값을 출력하는 것이고, 상기 x 및 상기 y는 정수이고, 상기 및 상기 는, 상기 x 및 상기 y가 암호화된 값이고, x i 는 x의 i번째 비트를 나타내는 수이고, y i 는 y의 i번째 비트를 나타내는 수이며, 상기 는 x i 가 암호화된 값이고, 는 y i 가 암호화된 값이다. - 제16항에 있어서,
상기 쿼리가 상기 제1 데이터에 포함되는 적어도 두 값들을 더하기 위한 것이라면, 아래 식 6에 의해 상기 적어도 두 값들을 더한 값이 결정됨을 특징으로 하는 서버.
……(식 6)
상기 식 6에서, i 및 (ν-1)은 자연수이고,
상기 식 6은 상기 제1 데이터에 포함된 x 및 y를 더한 값을 출력하기 위한 것이고, 상기 x 및 상기 y는 정수이고, 상기 및 상기 는, 상기 x 및 상기 y가 암호화된 값이고, x i 는 x의 i번째 비트를 나타내는 수이고, y i 는 y의 i번째 비트를 나타내는 수이며, 상기 는 x i 가 암호화된 값이고, 는 y i 가 암호화된 값이다. - 제16항에 있어서, 상기 전자 장치는,
상기 제2 데이터를 복호화하여 제3 데이터를 생성하여 출력함을 특징으로 하는 서버.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150094823A KR102402625B1 (ko) | 2015-07-02 | 2015-07-02 | 데이터를 관리하는 방법 및 그를 위한 장치들 |
US15/010,738 US10198592B2 (en) | 2015-07-02 | 2016-01-29 | Method and system for communicating homomorphically encrypted data |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020150094823A KR102402625B1 (ko) | 2015-07-02 | 2015-07-02 | 데이터를 관리하는 방법 및 그를 위한 장치들 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20170004456A true KR20170004456A (ko) | 2017-01-11 |
KR102402625B1 KR102402625B1 (ko) | 2022-05-27 |
Family
ID=57684244
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150094823A KR102402625B1 (ko) | 2015-07-02 | 2015-07-02 | 데이터를 관리하는 방법 및 그를 위한 장치들 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10198592B2 (ko) |
KR (1) | KR102402625B1 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11316657B2 (en) | 2018-04-06 | 2022-04-26 | Crypto Lab Inc. | User device and electronic device for sharing data based on block chain and homomorphic encryption technology and methods thereof |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9961516B1 (en) * | 2016-12-27 | 2018-05-01 | Motorola Solutions, Inc. | System and method for obtaining supplemental information in group communication using artificial intelligence |
US11593668B2 (en) | 2016-12-27 | 2023-02-28 | Motorola Solutions, Inc. | System and method for varying verbosity of response in a group communication using artificial intelligence |
US10051442B2 (en) * | 2016-12-27 | 2018-08-14 | Motorola Solutions, Inc. | System and method for determining timing of response in a group communication using artificial intelligence |
US20190149959A1 (en) | 2017-11-16 | 2019-05-16 | Motorola Solutions, Inc | Method for controlling a virtual talk group memeber to perform an assignment |
JP6730740B2 (ja) * | 2017-12-25 | 2020-07-29 | 株式会社アクセル | 処理装置、処理方法、処理プログラム、及び暗号処理システム |
JP6730741B2 (ja) * | 2017-12-26 | 2020-07-29 | 株式会社アクセル | 処理装置、処理方法、処理プログラム、及び暗号処理システム |
WO2020116807A1 (ko) * | 2018-12-07 | 2020-06-11 | 주식회사 크립토랩 | 암호문에 대한 비다항식 연산을 수행하는 장치 및 방법 |
FR3090618B1 (fr) | 2018-12-20 | 2021-01-22 | Ifp Energies Now | Procédé de traitement d’eau de production issue de la récupération assistée de pétrole par hydrocyclone en présence d’additifs de type sels de tetrakis(hydroxymethyl)phosphonium |
US10641619B1 (en) * | 2019-03-23 | 2020-05-05 | Chengdu Qinchuan Technology Development Co., Ltd. | Gas meter query method based on compound internet of things (IoT) and IoT system |
US11991283B2 (en) * | 2019-06-05 | 2024-05-21 | Nitromia Ltd. | Accelerated execution of applications with fully homomorphically encrypted input data |
US11782893B2 (en) * | 2021-12-15 | 2023-10-10 | WizRocket Inc. | Method and system for performing unification of data of users across multiple communication devices in a sharded environment |
US11650981B1 (en) * | 2021-12-15 | 2023-05-16 | WizRocket Inc. | Method and system for reducing scan-time for single user query |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080104171A (ko) * | 2006-03-16 | 2008-12-01 | 브리티쉬 텔리커뮤니케이션즈 파블릭 리미티드 캄퍼니 | 통신 장치의 인증 방법 및 장치 |
US20100146299A1 (en) * | 2008-10-29 | 2010-06-10 | Ashwin Swaminathan | System and method for confidentiality-preserving rank-ordered search |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8862895B2 (en) | 2010-04-27 | 2014-10-14 | Fuji Xerox Co., Ltd. | Systems and methods for communication, storage, retrieval, and computation of simple statistics and logical operations on encrypted data |
US8930691B2 (en) | 2011-08-16 | 2015-01-06 | Microsoft Corporation | Dynamic symmetric searchable encryption |
KR101398216B1 (ko) | 2012-10-19 | 2014-05-22 | 숭실대학교산학협력단 | 검색 가능한 암호화 방법 및 암호화된 데이터 검색방법 |
US9729312B2 (en) * | 2015-04-28 | 2017-08-08 | The United States Of America As Represented By The Secretary Of The Navy | System and method for high-assurance data storage and processing based on homomorphic encryption |
-
2015
- 2015-07-02 KR KR1020150094823A patent/KR102402625B1/ko active IP Right Grant
-
2016
- 2016-01-29 US US15/010,738 patent/US10198592B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20080104171A (ko) * | 2006-03-16 | 2008-12-01 | 브리티쉬 텔리커뮤니케이션즈 파블릭 리미티드 캄퍼니 | 통신 장치의 인증 방법 및 장치 |
US20100146299A1 (en) * | 2008-10-29 | 2010-06-10 | Ashwin Swaminathan | System and method for confidentiality-preserving rank-ordered search |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11316657B2 (en) | 2018-04-06 | 2022-04-26 | Crypto Lab Inc. | User device and electronic device for sharing data based on block chain and homomorphic encryption technology and methods thereof |
Also Published As
Publication number | Publication date |
---|---|
US20170004324A1 (en) | 2017-01-05 |
KR102402625B1 (ko) | 2022-05-27 |
US10198592B2 (en) | 2019-02-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102402625B1 (ko) | 데이터를 관리하는 방법 및 그를 위한 장치들 | |
KR102598613B1 (ko) | 개인 인증 및 차량 인증 기반으로 차량 정보를 제공하는 시스템 및 방법 | |
US10187359B2 (en) | Secure message transmission apparatus and processing method thereof | |
US11509709B1 (en) | Providing access to encrypted insights using anonymous insight records | |
KR20180089682A (ko) | 블록체인 기반의 데이터의 무결성을 검증하는 전자 장치 및 방법 | |
KR102449816B1 (ko) | 암호화 및 검색 장치 및 그 방법 | |
KR20160046559A (ko) | 보안 연결 장치 및 방법 | |
US10038674B2 (en) | Secure mobile data sharing | |
JP2018519682A (ja) | ウェアラブル装置との安全な通信 | |
WO2016115889A1 (zh) | 一种对信息进行加密控制、解析信息的方法、系统和终端 | |
KR20160056591A (ko) | 질의를 처리하는 장치 및 방법 | |
KR20160010237A (ko) | 심 운용 방법 및 이를 지원하는 전자 장치 | |
KR102370842B1 (ko) | 컨텐츠를 암호화하기 위한 전자 장치 및 방법 | |
JP7302600B2 (ja) | 情報処理システムおよび情報処理方法 | |
US9614673B2 (en) | Method of managing keys and electronic device adapted to the same | |
CN107683481A (zh) | 使用延迟求值计算加密数据 | |
KR20160057101A (ko) | 이미지 데이터의 보안 방법 및 이를 지원하는 전자 장치 | |
KR20150104838A (ko) | 근접 통신 방법 및 장치 | |
KR20150099628A (ko) | 관심정보에 따른 컨텐츠 추천장치 및 방법 | |
KR20160063793A (ko) | 전자 장치 및 전자 장치에서의 정보 송신 및 수신 방법 | |
KR20150126232A (ko) | 암호화 데이터 결정 방법 및 이를 제공하는 호스트 장치 | |
KR20170071116A (ko) | 서버, 전자 장치 및 전자 장치에서 이미지를 처리하는 방법 | |
KR20160026313A (ko) | 데이터 암호화 또는 복호화를 위한 장치 및 방법 | |
JP2020068486A (ja) | データ通信システム | |
KR102317471B1 (ko) | 프로그램이 악성 코드를 포함하는지 판단하는 전자 장치 및 그 제어 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |