KR20110119657A - 해시 알고리즘을 이용한 검색 엔진 서비스 - Google Patents

해시 알고리즘을 이용한 검색 엔진 서비스 Download PDF

Info

Publication number
KR20110119657A
KR20110119657A KR1020117017234A KR20117017234A KR20110119657A KR 20110119657 A KR20110119657 A KR 20110119657A KR 1020117017234 A KR1020117017234 A KR 1020117017234A KR 20117017234 A KR20117017234 A KR 20117017234A KR 20110119657 A KR20110119657 A KR 20110119657A
Authority
KR
South Korea
Prior art keywords
search
user
search engine
encrypted result
hashed
Prior art date
Application number
KR1020117017234A
Other languages
English (en)
Other versions
KR101539815B1 (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 KR20110119657A publication Critical patent/KR20110119657A/ko
Application granted granted Critical
Publication of KR101539815B1 publication Critical patent/KR101539815B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9014Indexing; Data structures therefor; Storage structures hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/951Indexing; Web crawling techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

검색 엔진을 사용하여 사용자에 의해 검색을 수행하는 방법에서 해시 제공자를 통해서 검색을 안전하게 수행하는 안전한 검색 방법에 관한 것이다. 사용자는 해시 제공자에 등록한다. 해시 제공자는 고유 번호, 암호화된 결과 데이터베이스, 및 해시된 색인을 검색 엔진에 제공한다. 사용자는 검색될 적어도 하나의 검색어를 입력한다. 사용자는 상기 검색어를 해시하고 상기 검색어를 검색 엔진에 상기 고유 번호로 입력한다. 검색 엔진은 상기 고유 번호에 기초해서 상기 해시된 색인 및 암호화된 결과 데이터베이스를 검색하고 선택한다. 상기 암호화된 결과 데이터베이스로부터 취한 암호화된 결과 데이터 세트는 사용자에게 전송된다. 사용자는 상기 결과 세트를 해독한다.

Description

해시 알고리즘을 이용한 검색 엔진 서비스{SEARCH ENGINE SERVICE UTILIZING HASH ALGORITHMS}
본 발명은 검색 엔진들, 더 구체적으로는 해시 알고리즘을 이용하는 검색 엔진들에 관한 것이다.
웹 검색 엔진들을 운영하는 회사들은 개인들이 검색 엔진에 입력하는 검색어에 기초해서 상당한 량의 개인들에 대한 정보를 얻게 된다. 검색어들은 개인의 일상 활동, 직업적 관심사, 사적인 생각 등을 노출한다. 개인 검색들에 관한 이러한 대규모의 상세한 정보축적은 수많은 프라이버시 문제로 이어진다.
자사의 검색 서비스에 프라이버시를 강화하는 것을 사업 전략의 일환으로 삼는 검색 엔진들도 있다. 기존의 “프라이버시 강화” 검색 엔진의 구현들은 검색어와 검색결과를 로그 (log)해두지 않거나, 운영 조직 (operating organization)이 상기 로그들을 최소한의 기간 동안만 보관한다는 점에서 대부분의 검색 엔진들과는 차별화된다. 하지만, 상기와 같은 유형의 구현에서도, 검색 엔진을 운영하는 조직 (organization)은 여전히 검색어들과 검색결과에 접근한다.
따라서, 본 발명은 해시 제공자 (hash provider)를 통해서 검색 엔진을 사용하는 사용자에 의한 검색을 안전하게 수행하는 안전한 검색 방법을 제공하는 것을 추구한다. 사용자가 해시 제공자에 등록하면, 해시 제공자는 고유 번호(unique number), 암호화된 결과 데이터 베이스(encrypted result database), 및 해시된 색인(hashed index)을 검색 엔진에 전송한다. 사용자가 검색하고자 하는 적어도 하나의 검색어를 입력하고, 사용자가 상기 검색어를 해시하여(hash) 그 검색어를 고유번호와 함께 검색 엔진에 전송하면, 검색 엔진은 해시된 색인과 암호화된 결과 데이터베이스를 상기 고유 번호에 기초해서 검색하고 선택한다. 상기 암호화 결과 데이터베이스로부터 얻어진 암호화된 결과 데이터 세트 (encrypted result data set)가 사용자에게 전송되면, 사용자는 상기 결과 세트를 해독한다.
첨부된 도면들을 참조하여, 본 발명의 실시 예들을 설명할 것이며, 이 설명은 단지 예시의 방식으로만 제공된다.
도 1은 등록 단계들에 관한 블록도를 도시한다.
도 2~3은 본 발명의 한 실시 예의 검색 엔진 조직의 블록도를 도시한다.
도 1~3은 본 발명의 검색 엔진 시스템의 블록도들을 도시한다. 본 발명에서, 해시 알고리즘 (a hash algorithm)이 검색될 검색 엔진 데이터에 적용되는데, 예를 들면 색인된 단어들(indexed words)을 통해서 적용된다. 검색이 요청되면, 사용자에 의해 입력된 검색어들은 또한 해시되어, 검색 엔진에 전송된 상기 검색어들은 상기 사용자만 알게 된다. 또한, 검색 엔진의 결과들을 암호화하기 위해 대칭형 암호화 (symmetric encryption)가 사용되는데, 이는 다시 한번 사용자만 검색 결과들을 알 수 있게 하며, 사적이고 익명의 검색을 가능하게 한다.
본 발명의 검색 엔진 시스템에서 검색 엔진 조직은 명확하게 임무 분할 (separation of duties)을 지키는 적어도 두 개의 별개의 그룹, 예를 들면, 해시 제공자 (hash provider)와 검색 제공자(search provider) 같은 두 개의 완전히 독립된 조직들을 가질 것이 요구된다.
해시 제공자는, 사용자가, 브라우저 “애드온 (add-on)”과 같은 수정 클라이언트 (a modified client)를 통해서 가능한, 솔트(salt), 암호화 키(encryption key) 및 임시 고유 번호(temporary unique number)를 획득하도록 사인업(signup) 혹은 등록을 제공하고 유지 한다. 상기 고유 번호는 특성상 일시적으로 존재하고 제한된 시간 동안 고유 (unique)할 수 있다. 등록은 동작 중에 사용자 등록을 용이하게 해주는 간단한 방법에 의해서 제공될 수 있고, 사용자가 원하는 만큼 여러 번 제공될 수 있다. 모든 등록에 대해서 새로운 세트의 고유 아이디 번호, 솔트 (salt) 및 키 (key)가 할당된다. 상기 솔트 및 키 쌍들 (pairs)은 여러(dispersed) 사용자들에 걸쳐서 재사용 될 수도 있다. 등록을 용이하게 하고 등록된 사용자들을 정기적으로 만료시키는 것을 용이하게 하기 위해서 필요한 정보의 교환은 최소로 하는 것이 바람직하다.
상기 등록은 고유의 솔트 (또는 임의의 문자열) 및 고유의 암호화 키를 사용자에게 할당하는 목적으로 제공된다.
해시 제공자는 검색 엔진 데이터의 솔트된 (salted) 해시를 생성함으로써 해시 데이터 세트들 (hashed data sets)을 생성한다. 여기에는 검색 색인에서 사용되는 단어들의 해시도 포함되며, 반드시 전체 문구 또는 문서(whole phrases or documents)가 포함될 필요는 없다. 또한 해시 제공자는 검색 엔진 데이터를 수집하고 유지하는 기능을 수행할 수 있으며, 이러한 기능에는 예를 들면 웹 사이트 탐색 (crawling) 및 색인화 (indexing) 등이 있다. 또는 상기 활동들은 상기 데이터를 해시 제공자에게 제공하는 또 다른 조직에 의해 수행될 수도 있다.
해시 제공자는 URL 및 검색 엔진이 반환하는(return) 다른 데이터를 대칭적으로 암호화 한다. 여기서 검색 엔진이 제공하는 다른 데이터로는 검색 결과들 혹은 검색 결과들의 데이터베이스, 예를 들면, 페이지 설명들과 이미지들이 있다. 암호화 키는 사용자 또는 사용자들 집단 (set)에 미리 제공된 키이다. 검색되는 데이터와 결과로서 제공되는 데이터는 모든 색인 페이지에 대해서 세트로서 함께 묶이고 상기 솔트 및 키 또한 세트이고 서로 대응된다.
예를 들어 한 웹페이지가 “outdoor,” “dog,” 및 “house”이라는 검색어에 대해서 색인이 만들어졌다면, 상기 검색어들은 솔트 n (salt n)을 사용하여 독립적으로 해시 된다. 상기 웹페이지는 URL이 http://xyz.tld/doghousel234.html이고 “The best dog house money can buy”라는 설명이 따른다. 상기 URL과 설명은 key n으로 암호화 된다. salt n과 key n 세트는 함께 묶인다.
또 다른 독립된 그룹인 검색 제공자는 상기 검색 엔진 인터페이스를 운영하고(operate) 해시된 검색 엔진 데이터베이스에 대해서 해시된 검색어들 (단어들)의 검색을 수행하는 소프트웨어를 유지 한다 (maintain). 상기 해시들은, 각각이 하나의 단어를 나타내므로, 단어들로 취급되고, 따라서 신규 또는 추가의 검색 알고리즘은 필요하지 않다.
검색 제공자와 해시 제공자는 사용자가 검색 엔진에 어떤 검색어를 입력했는지도 결코 알지 못할 뿐만 아니라 검색 결과들에 대해서도 알지 못하게 된다.
도 1을 참조하면, 사용자는 해시 제공자 인터페이스에 등록한다 (100). 해시 제공자는 한 세트의 솔트, 암호화 키, 및 고유 임시 번호를 생성한다 (101).
사용자 검색어들에 대한 검색을 위해 검색 엔진 데이터의 솔트되고 해시된 색인 (salted and hashed index) (Data 1’)를 얻기 위해서 해시 제공자는 검색 엔진 데이터 (Data 1)의 색인을 준비하고 (102) 알고리즘 또는 암호식 해시 함수 (f1)와 솔트를 사용하여 검색 엔진 데이터를 해시한다. 해시 제공자는 또한 결과 데이터베이스 (Date 2)를 준비하고 (102) 상기 결과 데이터 베이스 (Data 2)를 알고리즘 또는 대칭형 암호화 함수 (f2)와 키를 사용하여 암호화해서 암호화된 결과 데이터베이스 (Data 2’)를 얻게 하며, 이 암호화된 결과 데이터 베이스는 상기 결과 데이터베이스 (Data 2’)에 제공된 데이터를 암호화 한다. 상기 결과 데이터베이스는 웹사이트 또는 이미지의 URL과 간략한 설명을 포함하는 것이 바람직하다. 웹사이트 또는 이미지의 URL과 간략한 설명은 연관된 색인어가 나타날 때(encountered) 결과 데이터베이스에서 선택된다. 해시 제공자는 솔트, 암호화 키, 및 고유 번호 세트를 사용자에게 전송하고 (103), 해시 제공자는 검색 엔진 데이터의 해시된 색인(Data 1’), 암호화된 결과 데이터베이스 (Data 2'), 및 고유 번호를 검색 엔진에 전송한다 (104).
일단 상기 해시된 색인 (Data 1'), 암호화된 결과 데이터베이스 (Data 2') 및 고유 번호가 검색 제공자에게 전송되면 (104), 사용자는 검색어들 (Word n) - 사용자가 검색되기를 원하는 검색어 - 을 검색 제공자에 의해서 유지되는 “애드온” 또는 “플러그-인”을 갖는 웹 브라우저와 같은 수정 클라이언트 (modified client)에 입력할 수 있다 (106). 수정 클라이언트는 알고리즘 또는 암호식 해시 함수 (f1)를 사용하여 검색어들 (Word n)을 사용자의 솔트와 함께 해시하여 (108) (Word n')을 얻도록 한다. 그런 다음, 수정 클라이언트는 검색어들 (Word n')과 고유 번호를 검색 제공자에 의해 운영되는 검색 엔진 인터페이스에 제출한다 (submit) (110).
검색 제공자에 의해 운영되는 검색 엔진은 해시된 값들 (Word n')을 수신하고 사용자의 고유 번호를 사용하여 해시된 색인들 (Data 1')과 그에 대응되는 암호화된 결과 데이터베이스 (Data 2')를 선택한다 (112). 검색 엔진은 적절하게 해시된 색인 세트에서 해시된 검색어들 (Word n')을 검색하여 (114) 암호화된 결과 데이터베이스 (Data 2')로부터 얻은 암호화된 데이터로부터 암호화된 결과 세트 (Data 3')를 제공한다. 암호화된 데이터 (Data 3')는 그 다음 사용자에게 전송된다 (118).
사용자가 검색 엔진으로부터 Data 3'을 수신 (120)한 후에, 수정 클라이언트는 반송된(returned) 암호화된 검색 결과들 Data 3'을 해독하고 (122) 해독된 결과들 Data 3을 사용자에게 제공한다 (124). 사용자가 추가 검색어를 검색하기로 (126) 결정하면, 사용자는 되돌아가서 또 다른 검색을 입력한다 (106). 사용자가 추가 검색어를 검색하지 않기로 결정하면, 상기 방법은 종료된다.
고유 솔트(unique salt)가 각각의 사용자 또는 사용자들의 집단에 대해서 사용되는 것이 바람직하다. 검색 엔진의 모든 데이터를 매우 빠르게 해시할 수 있는 능력이 있다면, 새로운 솔트가 모든 (또는 거의 모든) 검색 또는 세션 (session)에 대해서 생성될 수 있다, 그러나 이는 성공적인 구현을 위해 필수적인 것은 아니다. 만일 솔트가 사용되지 않는다면, 그러한 구현은 실패할 것인데, 그 이유는 검색어들이 다르게 해석될 수 있기(derived) 때문이다.
상기 해시 함수는 모든 반복적인 암호화 해시 함수가 가능하다. 얻어진 해시(resulting hash), 예를 들어 프리-이미지 저항 (pre-image resistance)의 세기는 선택되는 해시 함수의 특성에 따라서 달라진다. 충분한 해시 알고리즘의 예로는 보안 해시 알고리즘 (a secured hash algorithm), SHA-256이 있으며, SHA-256은 미국 국가안보국 (NSA)에 의해 설계되고 미국 국립표준기술원 (NIST)에 의해 미국 연방 정보 처리 표준으로 발표되었다.
대칭키 암호화 알고리즘 (symmetric-key encryption algorithm)이라면 어느 것이든 사용될 수 있다. 충분한 키 알고리즘의 예로는 미국 연방 정부에 의해 암호화 표준으로 채택된 128 또는 256 비트의 키 길이를 갖는 고급 암호 표준 (AES)이 있다.
동일 임의의 문자열이 솔트와 대칭키 둘 모두에 사용될 수도 있다, 하지만 그렇게 하는 것이 동일한 키가 두 개의 다른 알고리즘에 의해 관련 가능성이 높은 콘텐트를 위해 사용될 때 키 값을 누설할 가능성이 있는 미래의 잠재 공격을 회피하기 위해 제안되는 것은 아니다.
해시 제공자와 검색 제공자 사이의 임무 분할 (separation of duties : SOD)도 일반 임무 분할 (SOD) 요건들과 마찬가지로 감사가 가능 (auditable)해야 한다.
사용자에게로의 해시 제공자에 의한 키들의 분산은 사용자의 클라이언트 혹은 클라이언트 애드온에게로도 SSL (안전 소켓층, Secure Sockets Layer) 또는 TLS (전송 계층 보안, Transport Layer Security)를 통해서 자동화된 방식으로(in an automated fashion) 일어나거나 혹은 SSL 또는 TLS를 통해서 수동으로 다운로드 받는 방식으로(downloaded manually) 일어날 수 있다. 사용자를 잠재적으로 고유하게 식별할 수 있는 더 복잡한 키 분산 방법(a more complex key distribution scheme), 예를 들어 키들을 사용자의 고유 공개키로 암호화 하기 위한PKI(공개 키 하부구조, Public Key Infrastructure)의 사용은 필요하지도 추천되지도 않는다.
본 명세서에 사용되는 용어는 특별한 실시 예들을 설명하기 위한 목적으로만 사용되는 것이고 본 발명을 한정하기 위한 의도로 사용되는 것은 아니다. 본 명세서에 사용되는 바와 같이, 단수 형으로 표현된 용어는, 문맥상 분명히 다르게 지시하지 않는 한, 복수 형태도 포함할 의도로 사용된 것이다. “포함하다” 및/또는 “포함하는”이라는 용어는, 본 명세서에서 사용될 때는, 지정된 특징들, 완전체들 (intergers), 단계들, 공정들, 구성요소들, 및/또는 콤포넌트들이 존재하는 것을 명시하는 것이나, 하나 또는 그 이상의 다른 특징들, 완전체들, 단계들, 공정들, 구성요소들, 콤포넌트들, 및/또는 그룹들의 존재 또는 첨가를 배제하는 것은 아닌 것으로 더 이해될 수 있다.
적합한 컴퓨터 이용가능 또는 컴퓨터 판독가능 매체는 어느 것이든 활용될 수 있다. 컴퓨터 이용가능 또는 컴퓨터 판독가능 매체는, 한정하는 것이 아닌 예로서 전자적, 자기적, 광학적, 전자기적, 적외선 또는 반도체로 된 시스템, 장치 (apparatus), 디바이스, 혹은 전파 매체일 수 있다. 컴퓨터 판독가능 매체의 더 구체적인 예들 (비포괄적인 목록)은 다음을 포함할 수 있다: 하나 또는 그 이상의 와이어들을 가진 전기적 결합체, 휴대용 컴퓨터 디스켓, 하드 디스크, 임의 접근 기억 장치 (RAM), 읽기 전용 기억 장치 (ROM), 프로그램 소거 가능 ROM (EPROM 또는 플래시 메모리), 광섬유, 휴대용 콤팩트 디스크 ROM (CD-ROM), 광학 기억 장치, 인터넷 또는 인트라넷을 지원하는 매체와 같은 전송 매체, 또는 자기 기억 장치. 컴퓨터 이용가능 또는 컴퓨터 판독가능 매체는 프로그램이 인쇄될 수 있는 종이 또는 또 다른 적합한 매체일 수 있다는 것에 유의해야 한다. 프로그램은, 예를 들면, 종이 또는 기타 매체의 광학 스캐닝을 통해서 전자적으로 캡쳐되고, 그 다음 컴파일 되거나, 해석되거나, 또는 필요할 경우 적절한 방식으로 다르게 처리되어, 그 다음 컴퓨터 기억 장치에 저장될 수 있기 때문이다. 본 명세서의 맥락에서 볼 때, 컴퓨터 이용가능 또는 컴퓨터 판독가능 매체는 명령 실행 시스템, 장치, 또는 디바이스에 의해 또는 이들을 결합해서 사용할 수 있는 프로그램을 포함, 저장, 통신, 전파, 또는 전송할 수 있는 매체일 수 있다. 컴퓨터 이용가능 매체는 컴퓨터 이용가능 프로그램 코드가 내장된 전파 데이터 신호 (a propagated data signal)를 포함할 수 있으며, 이는 기저대 (baseband)에 포하될 수 있거나 아니면 반송파의 일부로서 포함될 수 있다. 컴퓨터 이용가능 프로그램 코드는 인터넷, 유선 (wireline), 광섬유 케이블, RF 등을 포함하는 - 그러나 이에 국한되지는 않는다 - 적절한 매체를 사용해서 전송될 수 있다.
본 발명의 연산 (operations)을 수행할 컴퓨터 프로그램 코드는 Java, Smalltalk, C++ 또는 이들과 유사한 객체 지향 프로그래밍 언어로 쓰여질 수 있다. 하지만, 본 발명의 연산들을 수행할 상기 컴퓨터 프로그램 코드는 “C” 프로그래밍 언어 또는 이와 유사한 프로그래밍 언어들과 같은 재래식 절차 프로그래밍 언어들로도 쓰여질 수 있다. 상기 프로그램 코드는 전적으로 사용자의 컴퓨터에서, 부분적으로 사용자의 컴퓨터에서, 독립형의 (stand-alone) 소프트웨어 패키지로서, 부분적으로 사용자의 컴퓨터에서와 부분적으로 원격 컴퓨터에서 또는 전적으로 원격 컴퓨터 또는 서버에서 실행될 수 있다. 상기 마지막의 경우에서, 원격 컴퓨터는 근거리 통신망 (LAN) 또는 광역 통신망 (WAN)을 통해서 사용자의 컴퓨터에 연결될 수 있거나, 또는 상기 연결이 외부 컴퓨터에 (예를 들면, 인터넷 서비스 공급자 (Internet Service Provider)를 이용한 인터넷을 통해서) 연결될 수 있다.
본 발명은 아래에 본 발명의 실시 예들에 따른 방법들, 장치들 (apparatuses) (시스템들) 및 컴퓨터 프로그램 제품들의 예시 흐름도들 및/또는 블록 다이어그램들을 참조하여 설명된다. 흐름 예시도들 및/또는 블록 다이어그램들의 각 블록과, 예시 흐름도들 및/또는 블록 다이어그램들에 있는 블록들의 조합들이 컴퓨터 프로그램 명령들에 의해서 실행될 수 있다는 것을 이해할 수 있을 것이다. 상기 컴퓨터 프로그램 명령들은 범용 컴퓨터, 특수 목적용 컴퓨터, 또는 다른 프로그램 가능 데이터 처리장치 (apparatus)의 프로세서에 제공되어 머신 (machine)을 생성하여, 상기 명령들 - 컴퓨터 또는 다른 프로그램 가능 데이터 처리장치를 통하여 실행됨 - 이 흐름도 및/또는 블록 다이어그램의 블록 또는 블록들에 지정된 기능들/행동들을 실행하기 위한 수단을 생성하도록 한다.
상기 컴퓨터 프로그램 명령들은 - 상기 명령들은 컴퓨터 또는 다른 프로그램가능 데이터 처리장치에 특정한 방식으로 기능하도록 지시를 내린다 - 컴퓨터 판독가능 매체에 또한 저장되어, 상기 컴퓨터 판독가능 매체에 저장된 명령들은 흐름도 및/또는 블록 다이어그램의 블록 또는 블록들에 지정된 기능/동작을 실행하는 명령들을 포함하는 제품들을 생성한다.
상기 컴퓨터 프로그램 명령들은 컴퓨터 또는 다른 프로그램가능 데이터 처리 장치에 또한 로딩되어 일련의 동작 단계들이 컴퓨터 또는 다른 프로그램가능 데이터 처리장치에서 수행될 수 있도록 하여 컴퓨터실행 프로세스를 생성하게 하고, 상기 명령들 - 상기 명령들은 컴퓨터 또는 다른 프로그램가능 장치에서 실행된다 - 이 흐름도 및/또는 블록 다이어그램의 블록 또는 블록들에 지정된 기능들/동작들을 실행하기 위한 단계들을 제공할 수 있도록 한다.
도면에 있는 흐름도 및 블록 다이어그램들은 본 발명의 다양한 실시 예들에 따라서 시스템들, 방법들 및 컴퓨터 프로그램 제품들의 가능한 실시 예들의 아키텍처, 기능, 및 동작에 관해 도시한다. 이러한 점에서, 흐름도 또는 블록 다이어그램들에 있는 각 블록은 특정된 논리 기능(들)을 실행하기 위한 하나 또는 그 이상의 실행 가능한 명령들을 포함하는 모듈, 세그먼트, 또는 코드의 일부를 나타낸다. 일부 다른 실시 예들에서는, 상기 블록에 언급된 기능들이 도면들에 언급된 순서와 다르게 일어날 수도 있다는 것에도 또한 주의할 필요가 있다. 예를 들면, 잇달아 도시되는 두 개의 블록들은, 실제로는, 포함된 기능에 따라서는 실질적으로 동시에 실행될 수 있거나, 또는 상기 블록들이 때로는 역순으로 실행될 수도 있다. 블록 다이어그램들 및/또는 흐름 예시도의 각 블록과, 블록 다이어그램들 및/또는 흐름 예시도에 있는 블록들의 조합들은 특수한 목적의 하드웨어 기반 시스템들에 의해서 실행될 수 있으며, 상기 시스템들은 특정된 기능들이나 행동들, 또는 특수한 목적의 하드웨어와 컴퓨터 명령들의 조합들을 수행한다.
아래의 청구항들에 있는 모든 수단 또는 단계에 기능 요소들을 더한 것에 대응하는 구조들, 물질들, 행동들, 및 그 등가의 것들은 특정적으로 청구된 바와 같이 다른 청구 요소들과 결합하여 기능을 수행하기 위한 구조, 물질, 또는 행동을 포함할 의도로 제공된 것이다. 본 발명의 설명은 예시와 설명의 목적으로 제공되었을 뿐 공개된 형태로 본 발명을 포괄하거나 한정하려는 의도는 없다. 본 기술 분야의 통상적인 기술을 보유한 사람들은 본 발명의 범위와 정신에서 벗어남이 없이 많은 수정과 변경이 가능함을 명확하게 알아볼 수 있을 것이다. 실시 예는 본 발명의 원리들과 실제적인 응용방법을 최대한으로 설명하기 위해서 선택되고 설명되었으며, 본 기술 분야의 통상적인 기술을 보유한 다른 사람들로 하여금 본 발명은 의도하는 바에 따라 특별한 용도에 적합하게 여러 가지 수정이 가능한 다양한 실시 예들이 있을 수 있다는 것을 이해할 수 있도록 하기 위하여 선택되고 설명되었다.
본 애플리케이션의 발명을 상세하게 설명했으므로 그리고 그 실시 예들을 참조한다면, 첨부된 청구항들에 정의된 본 발명의 범위에서 벗어나지 않으면서 수정과 변경이 가능하다는 것을 명백하게 알 수 있을 것이다.

Claims (6)

  1. 해시 제공자를 포함하는 검색 엔진을 사용하여 해시 제공자를 통해서 사용자에 의한 검색들을 안전하게 수행하는 안전한 검색 방법에 있어서, 상기 방법은:
    한 세트의 솔트 (salt), 암호화 키 (encryption key), 및 고유 번호 (unique number)를 생성하는 단계;
    상기 솔트를 사용하여, 검색 엔진 데이터의 솔트되고 해시된 색인 (salted hashed index)을 준비하는 단계;
    상기 암호화 키를 사용하여, 검색 엔진 데이터의 암호화된 결과 데이터 베이스(encrypted result database)를 준비하는 단계 ;
    상기 세트의 솔트, 암호화 키, 및 고유 번호를 상기 사용자에게 전송하는 단계 ; 그리고
    상기 해시된 색인(hashed index), 상기 암호화된 결과 데이터베이스, 및 고유 번호를 검색 엔진에 전송하는 단계를 수행하는 해시 제공자를 포함하는
    방법.
  2. 제 1항에 있어서, 상기 방법은 :
    사용자가 적어도 하나의 검색어를 입력하는 단계;
    상기 솔트를 사용하여 사용자에 의해 입력된 적어도 하나의 검색어를 해시하는 단계; 및
    상기 해시된 적어도 하나의 검색어와 고유 번호를 검색 엔진에 제출하는 단계를 더 포함하는
    방법.
  3. 검색을 실행하는 방법에 있어서, 상기 방법은 검색 제공자를 포함하는 검색 엔진의 수단에 의해 검색을 실행하는 단계를 포함하되 :
    해시된 색인(hashed index), 암호화된 결과 데이터베이스(encrypted result database), 및 고유 번호(unique number)를 해시 제공자로부터 수신하는 단계;
    상기 고유 번호와 연관된 상기 해시된 색인 및 암호화된 결과 데이터베이스를 저장하는 단계;
    적어도 하나의 해시된 검색어 및 고유 번호를 사용자로부터 수신하는 단계;
    상기 고유 번호와 연관된 상기 해시된 색인 및 암호화된 결과 데이터베이스를 선택하는 단계; 및
    상기 해시된 색인을 상기 해시된 검색어들로 검색하고 상기 암호화된 결과 데이터베이스로부터 데이터를 사용자에게 암호화된 결과 세트로 반환하는 단계 (returning)를 수행하는 검색 제공자를 포함하는
    방법.
  4. 제 3항에 있어서, 상기 방법은:
    상기 암호화된 결과 세트를 수신하는 단계;
    상기 키를 사용하여 상기 암호화된 결과 세트를 해독하는 단계; 및
    암호가 해독된(plain) 텍스트 검색 결과들을 디스플레이하는 단계를 더 포함하는
    방법.
  5. 제 3항에 있어서, 상기 방법은, 해시된 색인, 암호화된 결과 데이터베이스, 및 고유 번호를 해시 제공자로부터 수신하기 전에 상기 해시 제공자가 :
    한 세트의 솔트, 암호화 키, 및 고유 번호를 생성하는 단계;
    상기 솔트를 사용하여, 검색 엔진 데이터의 솔트되고 해시된 색인 (a salted hashed index of search engine data)을 준비하는 단계;
    상기 암호화 키를 사용하여, 검색 엔진 데이터의 암호화된 결과 데이터베이스를 준비하는 단계;
    상기 세트의 솔트, 암호화 키, 및 고유 번호를 상기 사용자에게 전송하는 단계; 그리고
    상기 해시된 색인, 상기 암호화된 결과 데이터베이스, 및 고유 번호를 검색 엔진에 전송하는 단계를 수행하는 것을 더 포함하는
    방법.
  6. 프로그램 코드 수단을 포함하는 컴퓨터 프로그램에 있어서, 상기 프로그램이 컴퓨터 상에서 실행될 때 제 1항 내지 5항의 모든 단계들을 수행하도록 구성된(adapted) 프로그램 코드 수단을 포함하는
    컴퓨터 프로그램.
KR1020117017234A 2008-12-30 2009-12-08 해시 알고리즘을 이용한 검색 엔진 서비스 KR101539815B1 (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/345,842 2008-12-30
US12/345,842 US8131738B2 (en) 2008-12-30 2008-12-30 Search engine service utilizing hash algorithms

Publications (2)

Publication Number Publication Date
KR20110119657A true KR20110119657A (ko) 2011-11-02
KR101539815B1 KR101539815B1 (ko) 2015-07-27

Family

ID=42035734

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020117017234A KR101539815B1 (ko) 2008-12-30 2009-12-08 해시 알고리즘을 이용한 검색 엔진 서비스

Country Status (6)

Country Link
US (1) US8131738B2 (ko)
EP (1) EP2335165B1 (ko)
JP (1) JP4898979B1 (ko)
KR (1) KR101539815B1 (ko)
CN (1) CN102246166B (ko)
WO (1) WO2010076130A1 (ko)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8788507B1 (en) * 2011-03-30 2014-07-22 Google Inc. Watermarking of structured results and watermark generation
US8904171B2 (en) 2011-12-30 2014-12-02 Ricoh Co., Ltd. Secure search and retrieval
US8954570B2 (en) * 2011-12-30 2015-02-10 Brightedge Technologies, Inc. System and method for estimating organic web traffic from a secured source
US8521735B1 (en) * 2012-02-27 2013-08-27 Google Inc. Anonymous personalized recommendation method
CN103049466B (zh) * 2012-05-14 2016-04-27 深圳市朗科科技股份有限公司 一种基于分布式密文存储的全文检索方法及系统
US9037856B2 (en) * 2012-07-18 2015-05-19 Nexenta Systems, Inc. System and method for distributed deduplication of encrypted chunks
US9547774B2 (en) 2012-07-18 2017-01-17 Nexenta Systems, Inc. System and method for distributed deduplication of encrypted chunks
CN104704493B (zh) 2012-08-15 2019-06-07 维萨国际服务协会 可搜索的经加密的数据
CN103856458B (zh) * 2012-12-04 2018-12-11 腾讯科技(深圳)有限公司 页面认证方法及装置
US9262457B2 (en) * 2013-08-13 2016-02-16 Sybase, Inc. On-demand hash index
CN104281794A (zh) * 2014-09-23 2015-01-14 北京奇艺世纪科技有限公司 一种密码存储及验证的方法和装置
US10361840B2 (en) * 2014-10-21 2019-07-23 Mitsubishi Electric Corporation Server apparatus, search system, terminal apparatus, search method, non-transitory computer readable medium storing server program, and non-transitory computer readable medium storing terminal program
ES2924347T3 (es) 2015-03-26 2022-10-06 Nagravision Sa Método y sistema para buscar al menos un dato específico en una unidad de usuario
US10091188B2 (en) * 2015-03-30 2018-10-02 Qualcomm Incorporated Accelerated passphrase verification
CN105787387B (zh) * 2016-03-07 2018-09-14 南京邮电大学 一种数据库加密方法及该加密数据库查询方法
CN106060078B (zh) * 2016-07-11 2019-01-01 浪潮(北京)电子信息产业有限公司 应用于云平台的用户信息加密方法、注册方法及验证方法
CN107223253B (zh) 2016-09-05 2020-04-28 华为技术有限公司 用于发送搜索请求的方法和装置
TW201903633A (zh) * 2017-05-31 2019-01-16 高文賢 標準訊號轉換方法及裝置
CN108287901A (zh) * 2018-01-24 2018-07-17 百度在线网络技术(北京)有限公司 用于生成信息的方法和装置
US10783270B2 (en) 2018-08-30 2020-09-22 Netskope, Inc. Methods and systems for securing and retrieving sensitive data using indexable databases
TWI691862B (zh) * 2018-12-18 2020-04-21 華東科技股份有限公司 資料保管方法
US11188670B2 (en) * 2019-03-28 2021-11-30 Snowflake Inc. Secure data joins in a multiple tenant database system
KR102289408B1 (ko) * 2019-09-03 2021-08-12 국민대학교산학협력단 해시 코드 기반의 검색 장치 및 검색 방법
US11334905B2 (en) 2019-10-10 2022-05-17 SheerID, Inc. Systems and methods for gated offer eligibility verification
US11711203B2 (en) 2019-10-10 2023-07-25 SheerID, Inc. Systems and methods for gated offer eligibility verification
US11580246B2 (en) * 2020-05-11 2023-02-14 Amazon Technologies, Inc. Cryptographic data encoding method with enhanced data security
KR20240083872A (ko) 2022-11-23 2024-06-13 진윤겸 개인정보 처리 시스템

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5694593A (en) 1994-10-05 1997-12-02 Northeastern University Distributed computer database system and method
US5864863A (en) 1996-08-09 1999-01-26 Digital Equipment Corporation Method for parsing, indexing and searching world-wide-web pages
US6505191B1 (en) 1998-07-24 2003-01-07 Jarg Corporation Distributed computer database system and method employing hypertext linkage analysis
JP2002215659A (ja) 2001-01-18 2002-08-02 Noriaki Kawamae 情報検索支援方法および情報検索支援システム
JP4006214B2 (ja) 2001-01-26 2007-11-14 株式会社日立製作所 データ検索システム、データ中継サーバ、データベースサーバおよびデータベースのアクセス方法
KR20030032327A (ko) * 2001-10-17 2003-04-26 엘지전자 주식회사 타원 곡선 암호를 이용한 사용자 인증 방법
JP3907184B2 (ja) 2002-06-17 2007-04-18 インターナショナル・ビジネス・マシーンズ・コーポレーション データベース検索システム及びデータ共有システム
US7558970B2 (en) * 2004-01-23 2009-07-07 At&T Corp. Privacy-enhanced searches using encryption
US7620625B2 (en) 2004-05-20 2009-11-17 Ntt Docomo, Inc. Method and apparatus for communication efficient private information retrieval and oblivious transfer
US7716206B2 (en) * 2004-11-01 2010-05-11 At&T Intellectual Property I, L.P. Communication networks and methods and computer program products for performing searches thereon while maintaining user privacy
JP4722620B2 (ja) 2005-08-19 2011-07-13 Kddi株式会社 暗号化文書検索方法および暗号化文書検索システム
JP4837362B2 (ja) 2005-10-31 2011-12-14 株式会社エヌ・ティ・ティ・データ データ検索システム、情報処理装置、データ検索方法、及び、プログラム。
EP1999565A4 (en) 2006-03-03 2012-01-11 Perfect Search Corp HYPER SPACE INDEX
US7984169B2 (en) * 2006-06-28 2011-07-19 Microsoft Corporation Anonymous and secure network-based interaction
CN101217364B (zh) * 2007-12-28 2012-03-21 中国科学院计算技术研究所 媒体接入控制系统中安全上下文的组织结构和维护方法

Also Published As

Publication number Publication date
US8131738B2 (en) 2012-03-06
CN102246166B (zh) 2013-06-26
JP4898979B1 (ja) 2012-03-21
CN102246166A (zh) 2011-11-16
US20100169293A1 (en) 2010-07-01
EP2335165A1 (en) 2011-06-22
WO2010076130A1 (en) 2010-07-08
EP2335165B1 (en) 2015-01-21
JP2012514244A (ja) 2012-06-21
KR101539815B1 (ko) 2015-07-27

Similar Documents

Publication Publication Date Title
KR101539815B1 (ko) 해시 알고리즘을 이용한 검색 엔진 서비스
US11782911B1 (en) Systems and methods for cryptographically-secure queries using filters generated by multiple parties
US9124560B1 (en) Protecting browser-viewed content from piracy
Churches et al. Some methods for blindfolded record linkage
US20160344707A1 (en) Encrypted query-based access to data
JP5742849B2 (ja) 暗号化データベースシステム、クライアント端末、暗号化データベースサーバ、自然結合方法およびプログラム
WO2010024116A1 (ja) 公開された検索エンジンを用いた検索装置、検索方法及び検索プログラム
US20120260108A1 (en) Font encryption and decryption system and method
CN101593196A (zh) 用于快速密文检索的方法、装置和系统
EP2624498A1 (en) Encrypted database system, client terminal, encrypted database server, natural joining method, and program
US20200228308A1 (en) Secure search of secret data in a semi-trusted environment using homomorphic encryption
CN108628867A (zh) 面向云存储的多关键词密文检索方法和系统
US10120870B2 (en) System and method for searching distributed files across a plurality of clients
CN113779597B (zh) 加密文档的存储和相似检索方法、装置、设备及介质
Raj et al. Enhanced encryption for light weight data in a multi-cloud system
KR100945535B1 (ko) 사전 공격의 방지를 위한 키 생성 방법과, 그를 이용한검색 가능 암호문 생성 방법 및 데이터 검색 방법
CN116821056A (zh) 一种基于可信第三方的隐匿查询方法、系统、装置及存储介质
Cai et al. Vizard: A metadata-hiding data analytic system with end-to-end policy controls
Kumari et al. Privacy preserving similarity based text retrieval through blind storage
KR20220011449A (ko) 익명 사용자 속성기반의 데이터 접근 제어 시스템 및 방법
Tan et al. A client-server prototype of a symmetric key searchable encryption scheme using open-source applications
Jiang et al. Protecting source privacy in federated search
Soon et al. Identifying equivalent urls using url signatures
Kumar et al. Fast Phrased Search for Encrypted Cloud Storage
Bhavya et al. EFUMS: Efficient File Upload and Mutli-Keyword Search over Encrypted Cloud Data

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
FPAY Annual fee payment

Payment date: 20180628

Year of fee payment: 4