KR101654246B1 - 위치 기반 서비스에 대해 실제 위치 불명료하게 하기 - Google Patents

위치 기반 서비스에 대해 실제 위치 불명료하게 하기 Download PDF

Info

Publication number
KR101654246B1
KR101654246B1 KR1020167002858A KR20167002858A KR101654246B1 KR 101654246 B1 KR101654246 B1 KR 101654246B1 KR 1020167002858 A KR1020167002858 A KR 1020167002858A KR 20167002858 A KR20167002858 A KR 20167002858A KR 101654246 B1 KR101654246 B1 KR 101654246B1
Authority
KR
South Korea
Prior art keywords
location
client device
offset
pseudo
generated
Prior art date
Application number
KR1020167002858A
Other languages
English (en)
Other versions
KR20160018864A (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 KR20160018864A publication Critical patent/KR20160018864A/ko
Application granted granted Critical
Publication of KR101654246B1 publication Critical patent/KR101654246B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/023Services making use of location information using mutual or relative location information between multiple location based services [LBS] targets or of distance thresholds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/52Network services specially adapted for the location of the user terminal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/02Protecting privacy or anonymity, e.g. protecting personally identifiable information [PII]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/021Services related to particular areas, e.g. point of interest [POI] services, venue services or geofences
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W4/00Services specially adapted for wireless communication networks; Facilities therefor
    • H04W4/02Services making use of location information
    • H04W4/029Location-based management or tracking services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W64/00Locating users or terminals or network equipment for network management purposes, e.g. mobility management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones
    • H04M1/72448User interfaces specially adapted for cordless or mobile telephones with means for adapting the functionality of the device according to specific conditions
    • H04M1/72457User interfaces specially adapted for cordless or mobile telephones with means for adapting the functionality of the device according to specific conditions according to geographic location

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Transfer Between Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Position Fixing By Use Of Radio Waves (AREA)
  • Telephone Function (AREA)

Abstract

클라이언트 디바이스의 위치는 생성된 랜덤 오프셋들 및/또는 영역들의 세트를 사용함으로써 불명료하게 된다. 일 구현예에서, 클라이언트 디바이스의 위치는 제1 랜덤 오프셋 및 제2 랜덤 오프셋을 사용하여 불명료하게 된다. 의사 위치는 클라이언트 디바이스의 위치, 제1 랜덤 오프셋 및 제2 랜덤 오프셋에 기초하여 결정된다. 의사 위치는 위치 기반 서비스를 위해 서드 파티에 전송된다. 다른 구현예에서, 클라이언트 디바이스의 위치는 제1 랜덤 오프셋 및 영역들의 세트를 사용하여 불명료하게 된다. 중간 위치는 클라이언트 디바이스의 위치 및 제1 랜덤 오프셋에 기초하여 결정된다. 영역들의 세트의 영역은 중간 위치에 기초하여 결정된다. 의사 위치는 결정된 영역에 기초하여 위치 기반 서비스를 위해 서드 파티에 전송된다.

Description

위치 기반 서비스에 대해 실제 위치 불명료하게 하기{OBSCURING TRUE LOCATION FOR LOCATION-BASED SERVICES}
관련 출원들
본 출원은 2013년 7월 2일에 출원된, 위치 기반 서비스에 대해 실제 위치 불명료하게 하기라는 명칭을 가진, 미국 특허출원번호 제13/933,971호에 대해 우선권을 주장하며, 그 내용은 본 명세서에 참조로 통합된다.
위치 기반 서비스들은 사용자의 위치에 기초하여 사용자들에게 서비스들을 제공하기 위해 점점 더 사용되고 있다. 예를 들면, 위치 기반 서비스들은 모바일 디바이스들을 가지는 사용자들을 위해 제공된다. 상기 위치 기반 서비스들의 예시들은 (예를 들면, 소셜 미디어 웹사이트 또는 어플리케이션과 같은) 모바일 디바이스의 사용자와 관련된 다른 사용자들을 위해 사용자의 모바일 디바이스의 위치를 표시하는 것, 검색 쿼리에 응답하여 결과들 페이지의 부분으로서 모바일 디바이스의 위치 근처에 상점들을 표시하는 것 또는 모바일 디바이스의 위치에 기초하여 서드 파티 컨텐츠 아이템들 또는 쿠폰들을 전달하는 것을 포함한다.
일 구현예는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 방법에 관련된다. 방법은 제1 랜덤 2차원적 오프셋 및 제2 랜덤 2차원적 오프셋을 생성하는 단계를 포함한다. 방법은 클라이언트 디바이스의 위치를 수신하는 단계를 포함한다. 클라이언트 디바이스에 대한 의사-위치(pseudo-location)는 상기 수신된 위치, 상기 제1 랜덤 2차원적 오프셋 및 상기 제2 랜덤 2차원적 오프셋에 기초하여 결정된다. 의사 위치는 위치 기반 서비스를 위해 전송된다.
다른 구현예는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템에 관련된다. 시스템은 프로세싱 모듈 및 명령들을 저장하는 저장 디바이스를 포함하며, 명령들은 프로세싱 모듈에 의해 실행될 때, 프로세싱 모듈로 하여금 여러 동작들을 수행하게 한다. 상기 동작들은 클라이언트 디바이스의 위치를 수신하는 동작을 포함한다. 제1 랜덤 2차원적 오프셋 벡터 및 제2 랜덤 2차원적 오프셋 벡터가 생성된다. 의사 위치가 상기 수신된 위치, 상기 제1 랜덤 2차원적 오프셋 벡터 및 제2 랜덤 2차원적 오프셋 벡터에 기초하여 결정된다. 의사 위치가 위치 기반 서비스를 위해 서드 파티(third party)에 전송된다.
추가적 구현예는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템에 관련된다. 시스템은 프로세싱 모듈 및 명령들을 저장하는 저장 디바이스를 포함하며, 명령들은 프로세싱 모듈에 의해 실행될 때, 프로세싱 모듈로 하여금 여러 동작들을 수행하게 한다. 상기 동작들은 영역들의 세트 및 클라이언트 디바이스의 위치를 수신하는 동작을 포함한다. 제1 랜덤 2차원적 오프셋이 생성되며 중간 위치가 상기 수신된 위치 및 상기 제1 랜덤 2차원적 오프셋에 기초하여 결정된다. 영역들의 세트 내의 영역은 상기 중간 위치에 기초하여 결정된다. 상기 영역의 결정은 상기 중간 위치가 상기 결정된 영역 내에 있다는 결정을 포함한다. 의사 위치가 상기 결정된 영역에 기초하여 위치 기반 서비스를 위해 서드 파티에 전송된다.
하나 이상의 구현예들의 세부사항이 첨부 도면들과 후술할 설명들에 기술된다. 본 발명의 다른 구성들, 양태들 및 이점들은 설명들, 도면들 및 청구항들로부터 분명해질 것이다.
도 1은 클라이언트 디바이스에 위치 기반 서비스들을 제공하기 위한 예시적 시스템을 도시하는 블록 다이어그램이다.
도 2는 도 1의 클라이언트 디바이스에 의해 구현되는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 예시적 방법을 도시하는 흐름도이다.
도 3는 클라이언트 디바이스에 위치 기반 서비스들을 제공하기 위한 다른 예시적 시스템을 도시하는 다른 블록 다이어그램이다.
도 4는 도 3의 트러스티드 서버(trusted server)에 의해 구현되는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 다른 예시적 방법을 도시하는 다른 흐름도이다.
도 5는 부분적으로 클라이언트 디바이스에 의해 그리고 부분적으로 도 2의 트러스티드 서버에 의해 구현되는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 다른 예시적 방법을 도시하는 또 다른 흐름도이다.
도 6은 영역들(regions)의 세트로 분할되는 지역(area)을 도시하는 개요도이다.
도 7은 구의 분할에 기초하여 영역들의 세트를 생성하는 것을 도시하는 개략도이다.
도 8은 영역들의 세트를 사용하여 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 예시적 방법을 도시하는 흐름도이다.
도 9는 본 명세서에 기술되고 도시된 시스템들 및 방법들의 다양한 엘리먼트들을 구현하는데 이용되는 컴퓨터 시스템을 위한 일반적 아키텍처를 도시하는 블록 다이어그램이다.
도면들의 일부 또는 전부는 도시의 목적을 위한 개략적 표현이라는 것이 인식될 것이다. 도면들이 청구항의 범위 또는 의미를 제한하는데 사용되지 않는다는 명시적인 이해와 함께, 도면들은 하나 이상의 실시예들을 도시하는 목적으로 제공된다.
후술하는 내용은 컴퓨터 네트워크에서 정보를 제공하기 위한 방법들, 장치들 및 시스템들에 관한 다양한 컨셉들의 더 상세한 설명들 및 구현예들이다. 상기 소개된 그리고 아래에서 상세히 논의될 다양한 컨셉들은 임의의 다양한 방식들로 구현되며, 기술된 컨셉들은 임의의 특정 방식의 구현예에 제한되지 않는다. 구체적 구현예들의 및 적용들의 예시들은 주로 도시적인 목적들로 제공된다.
일부 예시에서, 위치 기반 서비스들은 클라이언트 디바이스들의 사용자들을 위해 제공된다. 예를 들면, 상기 위치 기반 서비스들은 (예를 들면, 소셜 미디어 웹사이트 또는 어플리케이션과 같은) 모바일 디바이스의 사용자와 관련된 다른 사용자들을 위해 사용자의 모바일 디바이스의 위치를 표시하는 것, 검색 쿼리에 응답하여 결과들 페이지의 부분으로서 모바일 디바이스의 위치 근처에 상점들을 표시하는 것 또는 모바일 디바이스의 위치에 기초하여 서드 파티(third-party) 컨텐츠 아이템들 또는 쿠폰들을 전달하는 것을 포함한다. 상기 위치 기반 서비스들은 상기 서비스들이 사용가능하도록 인터넷과 같은 네트워크를 통해 위치 기반 서비스 제공자와 같은 서드 파티의 시스템에 전송될 클라이언트 디바이스의 정확한 위치를 요구한다.
클라이언트 디바이스의 정확한 위치는 대부분의 모바일 클라이언트 디바이스들(예를 들면, 스마트폰들, 타블렛들 등)에서 사용가능한 GPS를 사용하여 결정된다. 다른 예시들에서, 클라이언트 디바이스의 정확한 위치는 WiFi 엑세스 포인트(WiFi access point) 위치들을 사용하여 결정된다. 예를 들면, 만약 클라이언트 디바이스가 설치된 WiFi 엑세스 포인트를 통해 인터넷에 연결되고, 설치된 WiFi 엑세스 포인트의 정확한 위치가 알려졌다면, 클라이언트 디바이스의 위치는 약 100 피트(feet) 이내로 결정된다. 추가로, 클라이언트 디바이스의 위치는 위치 이력에 기초하여 추측된다. 예를 들면, 만약 GPS에 의해 이전에 결정되거나 또는 알려진 WiFi 엑세스 포인트에 연결하기와 같이, 클라이언트 디바이스의 정확한 위치가 최근에 알려졌다면, 클라이언트 디바이스는 여전히 이전의 위치 주변 부근에 있을 가능성이 크다. 클라이언트 디바이스의 정확한 위치는 클라이언트 디바이스에 제공될 하나 이상의 전술한 위치 기반 서비스들에 사용된다.
그러나, 상기 정확한 위치 데이터를 제공하는 클라이언트 디바이스의 사용자는 일단 상기 데이터가 (예를 들면, 어떤 목적 등으로 위치 정보에 엑세스할 수 있는) 서드 파티의 시스템에 전송되면 약간의 제어를 가지거나 또는 아무런 제어를 가지지 못한다. 추가로, 상기 정확한 위치 데이터는 서드 파티의 시스템에 라우팅(route)될 때 사용자가 선호하지 않을 방식으로 정확한 위치 데이터를 사용하는 누군가에 의해 가로채어질 수 있다. 정확한 위치 데이터 제공에 관한 상기 우려는 보다 적은 클라이언트 디바이스들의 사용자들이 위치 기반 서비스 제공자들의 위치 기반 서비스들을 활용하게 한다.
따라서, 정확한 위치가 결정될 수 없도록, 그러나 여전히 제공될 위치 기반 서비스들을 허용하면서, 안전한 방식으로 클라이언트 디바이스의 정확한 위치를 불명료하게 하는 것은 유용하다. 불명료하게 된 의사 위치(pseudo-location)가 클라이언트 디바이스의 정확한 위치와 관련하여 결정되는 지역(area)은 하나 이상의 팩터들(factors)에 기초한다. 예를 들면, 불명료하게 된 의사 위치가 위치하는 지역은 선호들, 표준들, 가이드라인들, 로컬 관습들, 로컬 법들 등에 기초하여 소정의 사이즈(예를 들면, 1제곱 킬로미터 또는 다른 사이즈)보다 작지 않게 사이징(size)된다. 다른 예시들에서, 불명료하게 된 의사 위치가 위치하는 지역은 선호들, 표준들, 가이드라인들, 로컬 관습들, 로컬 법들 등에 기초하여 소정의 수의 클라이언트 디바이스들이 주어진 기간의 시간 내에 지역을 통과하도록 사이징된다(예를 들면, 한 달에 적어도 1,000 클라이언트 디바이스들). 또한 불명료하게 된 의사 위치가 위치하는 지역은 위치 기반 서비스들이 여전히 유효하게 제공되도록 사이징된다(즉, 불명료하게 된 의사 위치가 위치하는 지역은 유효하지 않거나 또는 적용될 수 없는 위치 기반 서비스들을 렌더링하지 않도록 너무 크지 않다). 예를 들면, 낮은 유가들을 제공하는 주유소와 관련된 서드 파티 컨텐츠 아이템의 예시에서, 클라이언트 디바이스의 정확한 위치의 2 마일 이내인 불명료하게 된 의사 위치는 클라이언트 디바이스의 정확한 위치만큼 유효하다. 그러나 100 마일 이내인 불명료하게 된 의사 위치는 유효하지 않거나 또는 적용될 수 없다.
전술한 고려사항들은 불명료하게 된 의사 위치가 위치하는 지역과 관련하여 유용하며, 불명료하게 된 의사 위치가 안전한 방식(secure manner)으로 결정되었는지 불명료하게 된 의사 위치가 제공되는 방식도 또한 영향을 준다. 일 구현예에서, 클라이언트 디바이스는 위치 모듈(예를 들면, GPS 모듈, WiFi 엑세스 포인트 위치 모듈 등)을 사용하여 클라이언트 디바이스에 대한 정확한 위치를 획득한다. 클라이언트 디바이스는 클라이언트 디바이스에 대한 의사 위치를 결정하기 위해 정확한 위치의 총합(sum) 및 오프셋 값(offset value)을 계산한다. 일부 예시들에서, 오프셋 값은 불명료진 의사 위치가 위치되는 지역이 하나 이상의 전술한 지역 고려사항들을 만족하도록 제한된다. 의사 위치는 위치 기반 서비스를 위해 클라이언트 디바이스에 의해 사용된다. 상기 내용이 많은 예시들로 적절한 의사 위치를 제공하지만, 일부 예시들에서 오프셋 값은 서드 파티들에 의해 결정된다.
예를 들면, 만약 오프셋 값이 상수이거나 또는 일정 기간 상수이면, 오프셋 값은 2 이상의 의사 위치들에 기초하여 결정된다. 즉, 만약 제1 정확한 위치 P1이 위치 기반 서비스(예를 들면, 네비게이션 어플리케이션, 소셜 미디어 어플리케이션, 위치 어플리케이션 등)를 위해 제1 시간 t1에 제1 서드 파티에 전송되고, 제1 의사 위치 SP1이 제2 시간 t2에 다른 위치 기반 서비스를 위해 제2 서드 파티에 전송되면, 여기서
SP1 = P2 + Offset
여기서 제1 정확한 위치 P1 및 제2 정확한 위치 P2는 |P1-P2|가 최소화되도록 상대적으로 서로 가까우며(예를 들면, 약 10,000 제곱 피트 또는 약 1000 제곱 미터의 지역 이내), 오프셋은
Offset = SP1 - P1
에 의해 결정되며, 여기서 P1≒P2이다. 만약 오프셋이 상수로 남아 있고, 다른 위치 기반 서비스를 위해 제2 의사 위치 SP2가 생성되면, 여기서
SP2 = P3 + Offset
나중에 정확한 위치 P3은 P3이 제1 또는 제2 정확한 위치들 P1 또는 P2 근처가 아니더라도 결정된다.
게다가, 랜덤 오프셋 값이 사용되었다고 하더라도, 만약 오프셋에 대한 랜덤으로 생성된 값이 0 평균(zero-mean)을 가지고, 클라이언트 디바이스가 상대적으로 움직이지 않은 채로 있다면(예를 들면, 약 10,000 제곱 피트의 지역 또는 약 1000 제곱 미터 이내), 클라이언트 디바이스의 정확한 위치가 결정된다. 예를 들면, 만약 클라이언트 디바이스의 정확한 위치 Px가 일정 기간 동안 상대적으로 움직이지 않은 채로 있고 다수의 의사 위치들이 위기 기반 서비스들을 위해 생성되었다면,
예를 들면, SPi = Px + Offset i 이고 i = 1...N
정확한 위치 Px
Figure 112016010753063-pct00001
에 의해 결정되며, 여기서 N이 충분히 크면
Figure 112016010753063-pct00002
이고, 따라서
Figure 112016010753063-pct00003
이 된다.
따라서, 서드 파티들에 의해 결정되는 것으로부터 불명료하게 된 의사 위치를 더 안전하게 하기 위해 추가적 팩터들을 구현하는 것이 유용하다. 일 예시적 구현예에서, 불명료하게 된 의사 위치는 상기 정확한 위치에 기초하여 생성되고 한 쌍의 랜덤하게 생성된 오프셋들이 활용된다. 랜덤하게 생성되는 제1 오프셋는 주기적으로(예를 들면, 매 시간, 매일, 매 주, 매 월 등) 생성되며, 랜덤하게 생성되는 제2 오프셋은 클라이언트 디바이스가 위치 기반 서비스를 요청할 때마다 생성된다. 따라서, 불명료하게 된 의사 위치는 서드 파티들에 의해 결정되는 것으로부터 더 안전해진다. 다른 예시적 구현예에서, 불명료하게 된 의사 위치는 영역들의 세트의 영역을 결정하는데 사용되며, 불명료하게 된 의사 위치가 그 안에 위치한다. 그 후 결정된 영역의 중앙 또는 다른 포인트는 클라이언트 디바이스에 대한 의사 위치로서 사용되며, 그에 의하여 클라이언트 디바이스의 실제 위치가 더 불명료하게 된다. 상기 불명료하게 된 의사 위치들을 생성하는 특정 구현예들 및 그것의 용도들은 이하에서 상세히 논의될 것이다.
도 1은 클라이언트 디바이스(102) 및 위치 기반 서비스 제공자(120)를 가지는 예시적 환경(100)을 도시한다. 클라이언트 디바이스(102)는 네트워크(150)를 통해 위치 기반 서비스 제공자(120)로부터 데이터를 전송하고 수신한다. 네트워크(150)는 클라이언트 디바이스(102)와 위치 기반 서비스 제공자(120)와의 사이에서 정보를 전달하는 임의의 형태의 컴퓨터 네트워크이다. 예를 들면, 네트워크(150)는 인터넷 및/또는 근거리 네트워크(LAN), 광역 네트워크(WAN), 셀룰러 네트워크, 위성 네트워크 또는 다른 타입들의 데이터 네트워크들과 같은 다른 타입들의 데이터 네트워크들을 포함한다. 또한 네트워크(150)는 네트워크(150) 내에서 데이터를 수신하고 및/또는 전송하도록 구성된 임의의 수의 컴퓨팅 디바이스들(예를 들면, 컴퓨터, 서버들, 라우터들, 네트워크 스위치들, 스마트폰들, 타블렛들, 모바일 폰들 등)을 포함한다. 네트워크(150)는 임의의 수의 유선 및/또는 무선 연결들을 더 포함한다. 예를 들면, 클라이언트 디바이스(102)는 네트워크(150)에서 다른 컴퓨팅 디바이스들과 유선으로(예를 들면, 광섬유 케이블, CAT5 케이블 등을 통해) 연결된 트랜스시버(transceiver)와 무선으로(예를 들면, WiFi, 셀룰러, 라디오 등을 통해) 통신한다.
클라이언트 디바이스(102)는 네트워크(150)를 통해 통신하도록 구성된 임의의 수의 서로 다른 타입들의 사용자 전자 디바이스들이다(예를 들면, 랩톱 컴퓨터, 데스크톱 컴퓨터, 타블렛 컴퓨터, 스마트폰, 디지털 비디오 레코더, 텔레비전용 셋톱 박스, 비디오 게임 콘솔, 그것들의 조합들 등). 클라이언트 디바이스(102)는 프로세서(104) 및 메모리(106)를 포함하도록 도시되었다. 메모리(106)는 기계 명령들을 저장하며, 상기 명령들은 프로세서(104)에 의해 실행될 때, 프로세서(104)로 하여금 본 명세서에 기술된 하나 이상의 동작들을 수행하게 한다. 프로세서(104)는 하나 이상의 마이크로프로세서들, ASICs(Application Specific Integrated Circuits), FPGAs(Field Programmable Gate Arrays), 다른 형태들의 프로세싱 회로들 또는 그것들의 조합을 포함한다. 메모리(106)는 프로세서(104)에게 프로그램 명령들을 제공할 수 있는 전자적, 광학적, 자기적 또는 임의의 기타 저장 또는 전송 디바이스를 포함하나, 그에 제한되지 않는다. 메모리(106)는 플로피 디스크, CD-ROM, DVD, 자기 디스크, 메모리칩, ROM, RAM, EEPROM, EPROM, 플래시 메모리, 광학 미디어와 같은 저장 디바이스들 또는 프로세서(104)가 그로부터 명령들을 판독할 수 있는 임의의 기타 적절한 메모리를 포함한다.
클라이언트 디바이스(102)는 하나 이상의 사용자 인터페이스 디바이스들을 포함한다. 사용자 인터페이스 디바이스는 감각적 정보(예를 들면, 디스플레이에서 시각화, 하나 이상의 소리들 등)를 생성함으로써 데이터를 사용자에게 전달하고 및/또는 사용자로부터 수신된 감각적 정보를 전자적 신호들로 전환하는 임의의 전자적 디바이스이다(예를 들면, 키보드, 마우스, 포인팅 디바이스, 터치 스크린 디스플레이, 마이크 등). 다양한 구현예들에 따라, 하나 이상의 사용자 인터페이스 디바이스들은 클라이언트 디바이스(102)의 하우징 내부에 있거나(예를 들면, 빌트인 디스플레이, 마이크 등) 또는 클라이언트 디바이스(102)의 하우징 외부에 있다(예를 들면, 클라이언트 디바이스(102)에 연결된 모니터, 클라이언트 디바이스(102)에 연결된 스피커 등). 예를 들면, 클라이언트 디바이스(102)는 전자적 디스플레이(10)를 포함하며, 이는 웹페이지들, 어플리케이션들에 대한 사용자 인터페이스들 및/또는 다른 디스플레이들을 디스플레이한다. 다양한 구현예들에서, 디스플레이(108)는 프로세서(103) 및/또는 메모리(106)의 하우징과 동일한 하우징의 내부 또는 외부에 위치된다. 예를 들면, 디스플레이(108)는 컴퓨터 모니터, 텔레비전 세트와 같은 외부적 디스플레이 또는 임의의 기타 독립형 형태의 전자적 디스플레이이다. 다른 예시들에서, 디스플레이(108)는 랩톱 컴퓨터, 모바일 디바이스, 스마트폰, 타블렛 또는 통합 디스플레이를 가지는 다른 형태의 컴퓨팅 디바이스의 하우징에 통합된다.
현재 예시의 클라이언트 디바이스(102)는 위치 모듈(118)을 더 포함한다. 위치 모듈(118)은 GPS 데이터를 통해 클라이언트 디바이스(102)의 위치를 결정하기 위해 GPS 디바이스를 포함한다. 다른 구현예들에서, 위치 모듈(118)은 WiFi 엑세스 포인트에 무선으로 연결하도록 WiFi 트랜스시버를 포함한다. 위치 모듈(118)은 클라이언트 디바이스(102)의 위치를 결정하기 위해 WiFi 엑세스 포인트로부터의 이름, MAC 어드레스 및/또는 다른 데이터를 활용한다. 또 다른 구현예들에서, 위치 모듈(118)이 클라이언트 디바이스(102)의 위치를 결정하도록 위치 모듈(118)은 하나 이상의 셀룰러 타워들(cellular towers)로부터의 신호 세기(signal strength)에 대응하는 데이터를 수신한다. 클라이언트 디바이스(102)의 위치를 결정하도록 구성된 또 다른 위치 모듈들(118)이 사용될 수 있다.
현재 예시에서, 클라이언트 디바이스(102)는 위치 기반 서비스 제공자(120)의 위치 기반 서비스를 사용하는 웹 브라우저(110) 및/또는 하나 이상의 어플리케이션들(112, 114)을 메모리(106)를 통해 저장하고, 프로세서(104)를 통해 실행한다. 도시된 바와 같이, 클라이언트 디바이스(102)는 위치 기반 서비스 제공자들(120)일 수 있는 컨텐츠 소스들로부터 사용가능한 웹페이지들을 네트워크(150)를 통해 검색하고 디스플레이하도록 구성된 웹 브라우저(110)를 포함한다(예를 들면, 온라인 검색 엔진의 검색 결과 웹페이지, 방문한 웹페이지 등). 웹 브라우저(110)는 제1 파티(first-party) 웹페이지에 엑세스하고 클라이언트 디바이스(102)의 디스플레이(116)에 제시하기 위해 웹페이지를 제공한다. 웹페이지들의 검색 및 디스플레이는 위치 기반 서비스 제공자(120)의 위치 기반 서비스를 사용한다. 예를 들면, 웹 브라우저(110)를 통해 엑세스된 검색 엔진은 검색 엔진의 검색창에 입력된 검색 쿼리와 관련된 근처 상점들의 리스트 또는 표시를 제공하기 위해 위치 기반 서비스를 포함한다. 클라이언트 디바이스(102)의 사용자가 검색 엔진의 검색 창에 검색 쿼리를 입력할 때, 클라이언트 디바이스(102)의 위치는 클라이언트 디바이스(102)에 의해 제공되거나 또는 검색 엔진의 제공자에 의해 요청된다. 위치 기반 서비스 제공자(120)인 검색 엔진 제공자는 검색 결과들 페이지에서 검색 쿼리와 관련된 근처 상점들의 리스트 또는 다른 표시를 생성하고 제시하기 위해 클라이언트 디바이스(102)의 위치를 활용한다.
다른 구현예들에서, 검색된 제1 파티 웹페이지는 적어도 부분적으로 클라이언트 디바이스(102)의 위치에 기초하여 선택된 서드 파티 컨텐츠 아이템과 함께 제시된다. 예를 들면, 검색된 웹페이지는 웹 브라우저(110)로 하여금 컨텐츠 선택 요청을 컨텐츠 선택 서비스에 보내게 하는 컨텐츠 태그를 포함하며, 컨텐츠 선택 서비스는 위치 기반 서비스 제공자(120)이거나 또는 위치 기반 서비스 제공자(120)와 관련된다. 예를 들면, 컨텐츠 선택 요청은 서드 파티 컨텐츠가 제1 파티 웹페이지와 함께 제시하기 위해 선택되고 서비스되도록 요청한다(예를 들면, 웹페이지에 내장된 컨텐츠로서, 팝업창에서 등). 일부 경우들에서, 컨텐츠 선택 요청은 컨텐츠 선택 서비스(104)에 의한 쿠키 세트와 같은 클라이언트 디바이스(102)에 대한 디바이스 식별자(후술함)를 포함한다. 추가로, 클라이언트 디바이스(102)의 위치는 컨텐츠 선택 요청과 함께 포함된다. 클라이언트 디바이스(102)의 위치는 적어도 부분적으로 클라이언트 디바이스(102)의 위치에 기초하여 서드 파티 컨텐츠를 선택하고 서비스하기 위해 위치 기반 서비스 제공자(120)에게 제공된다. 예를 들면, 위치 기반 서비스 제공자(120)는 제공된 위치 데이터를 사용하여 서드 파티 컨텐츠 아이템을 직접적으로 선택하고 서비스하며 및/또는 서드 파티들로 하여금 클라이언트 디바이스(102)의 위치에 기초하여 선택되고 서비스될 서드 파티 컨텐츠 아이템들에 대한 실시간 입찰들을 제출하게 한다. 컨텐츠 선택 요청에 포함될 수 있는 다른 정보는 웹 브라우저(110)에 의해 엑세스되는 웹페이지의 토픽, 엑세스되는 웹페이지의 주소 또는 다른 정보를 포함한다. 위치 기반 서비스 제공자들(120)로부터의 또 다른 위치 기반 서비스들은 클라이언트 디바이스(102)에서 실행될 때 웹 브라우저(110)를 통해 구현된다.
또한 클라이언트 디바이스(102)는 비-브라우저 어플리케이션들(non-browser applications)(112, 114)을 포함한다(예를 들면, 제1 어플리케이션(112)부터 n번째 어플리케이션(114)). 일반적으로, 웹 브라우저(110)는 클라이언트 디바이스(102)의 사용자에 의해 특정된 URL에 응답하여 웹페이지들을 검색하도록 구성된 점에서, 어플리케이션들(112, 114)은 웹 브라우저(110)와 다르다. 일부 구현예들에서, 어플리케이션들(112, 114)은 단지 특정 웹페이지들을 검색하도록, 미리 정의된 온라인 서비스들에 엑세스하도록(예를 들면, 엑세스된 서비스들은 어플리케이션들(112, 114)의 코드에 포함된다), 웹페이지를 검색하기 위해 웹 브라우저(110)을 런칭(launch)하도록 또는 웹페이지 데이터를 전혀 사용하지 않도록 구성된다. 예를 들면, 어플리케이션들(112, 114)은 통신 어플리케이션들(예를 들면, 이메일 어플리케이션들, 인스턴트 메신저 어플리케이션들 등), 생산성 어플리케이션들(예를 들면, 텍스트 편집기들, 소프트웨어 개발 어플리케이션들, 스프레드시트 어플리케이션들 등), 소셜 미디어 어플리케이션들, 멀티미디어 플레이어들(예를 들면, 음악 플레이어들, 영화 플레이어들 등), 게임들, 네비게이션 어플리케이션들, 또는 임의의 기타 형태의 어플리케이션이다. 일부 구현예들에서, 어플리케이션들(112, 114)은 “체크인(checking in)”을 위한 위치 구성을 구비한 소셜 미디어 어플리케이션과 같이, 위치 기반 서비스 제공자(120)에 의해 제공되는 위치 기반 서비스에 직접적으로 엑세스하고 사용한다. 다른 구현예들에서, 어플리케이션들(112, 114)은 적어도 부분적으로 클라이언트 디바이스(102)의 위치에 기초하여 서드 파티 컨텐츠 아이템들을 제시한다(예를 들면, 제1 파티 웹페이지들과 함께 제시될 서드 파티 컨텐츠 아이템들의 선택과 서비스하기와 유사하게). 따라서, 어플리케이션들(112, 114)은 위치 기반 서비스 제공자(120)의 위치 기반 서비스를 간접적으로 활용한다.
웹 브라우저(110) 및 어플리케이션들(112, 114)의 저장 및 실행에 더하여, 메모리(106) 또한 위치 불명료화 모듈(116)을 저장하고 실행한다. 위치 불명료화 모듈(116)은 위치 기반 서비스 제공자(120)에 의해 제공되는 위치 기반 서비스를 위해 위치 모듈(118)로부터 실제 위치 데이터를 수신하고 실제 위치 대신에 사용될 의사 위치를 출력한다. 위치 불명료화 모듈(116)은 랜덤 오프셋 값들을 생성하는데 사용되는 랜덤 숫자 생성기를 포함하며, 따라서 위치 불명료화 모듈(116)은 위치 모듈(118)로부터의 실제 위치 및 랜덤 오프셋 값들에 기초하여 클라이언트 디바이스(102)에 대한 의사 위치를 생성한다. 위치 불명료화 모듈(116)의 동작은 도 2를 참조하여 아래에서 상세하게 논의될 것이다.
일부 예시들에서, 클라이언트 디바이스(102)는 하나 이상의 디바이스 식별자들의 사용을 통해 위치 기반 서비스 제공자(120) 또는 컨텐츠 선택 서비스에게 자신을 식별한다. 디바이스 식별자들은 쿠키들, UDIDs(Universal Device Identifiers), 디바이스 시리얼 번호들, 전화 번호들 또는 네트워크 주소들을 포함하나, 그에 제한되지 않는다. 예를 들면, 위치 기반 서비스 제공자(120)는 클라이언트 디바이스(102)가 특정 웹페이지를 방문하거나 위치 기반 서비스 제공자(120)에 엑세스하는 특정 어플리케이션을 사용할 때, 클라이언트 디바이스(102)에 쿠키를 셋팅한다. 후속하는 웹페이지 방문들 또는 어플리케이션의 실행들에서, 쿠키는 클라이언트 디바이스(102)에 의해 위치 기반 서비스 제공자(120)에 보내지며, 위치 기반 서비스 제공자(120)는 서로 다른 웹페이지 방문들 또는 어플리케이션 실행들을 동일한 클라이언트 디바이스(102)가 책임지게(attribute) 한다.
본 명세서에서 논의되는 시스템들이 사용자들에 관한 개인 정보를 수집하거나 또는 개인 정보의 이용하는 상황들에서, 사용자들은 프로그램들 또는 구성들이 사용자 정보(예를 들면, 사용자의 소셜 네트워크, 소셜 액션들 또는 활동들, 직업, 사용자의 선호들 또는 사용자의 현재 위치에 관한 정보)를 수집할 지에 관한 제어, 또는 사용자에게 더 관련있는 컨텐츠 서버로부터 컨텐츠를 수신할 지 및/또는 어떻게 수신할 지에 관한 제어를 할 기회를 제공받는다. 추가로, 개인적으로 식별가능한 정보가 제거되도록 특정 데이터는 그것이 저장되거나 또는 사용되기 전에 하나 이상의 방식들로 취급된다. 예를 들면, 사용자의 식별(identity)은 사용자에 대한 개인적으로 식별가능한 정보가 결정될 수 없도록 취급되거나 또는 사용자의 특정 위치가 결정될 수 없도록 사용자의 지리적 위치는 위치 정보가 획득된 곳에서 일반화된다(도시로, 우편번호로 또는 주 단위로와 같이). 따라서, 사용자는 어떻게 정보가 사용자에 관하여 수집되고 컨텐츠 서버에 의해 사용되는지에 관한 제어를 가진다.
위치 기반 서비스 제공자(120)는 네트워크(150)에 연결된 하나 이상의 전자적 디바이스들이며, 위치 기반 서비스 또는 다른 컨텐츠를 네트워크(150)에 연결된 디바이스들에 제공한다. 예를 들면, 위치 기반 서비스 제공자(120)는 컴퓨터 서버(예를 들면, FTP 서버, 파일 공유 서버, 웹 서버 등) 또는 서버들의 조합(데이터 센터들, 클라우드 컴퓨팅 플랫폼들 등)이다. 위치 기반 서비스는 위치 기반 서비스를 제공하는 어플리케이션의 일부, 위치 기반 서비스를 제공하는 웹사이트의 일부, 위치 기반 서비스를 제공하는 검색 엔진, 클라이언트 디바이스(102)의 위치에 기초하여 서드 파티 컨텐츠 아이템들을 전달하는 서비스 및/또는 다른 위치 기반 서비스들이다. 일부 구현예들에서, 위치 기반 서비스는 웹페이지 데이터, 텍스트 파일, 스프레드시트, 이미지들, 검색 결과들과 같은 하나 이상의 컨텐츠 아이템들 및 다른 형태들의 컨텐츠 아이템들을 포함하거나 그와 관련된다. 클라이언트 디바이스(102)와 유사하게, 위치 기반 서비스 제공자(120)는 위치 기반 서비스를 제공하거나 또는 다르게는 네트워크(150)을 통해 클라이언트 디바이스(102)에 데이터를 전송하기 위해 프로세서(122) 및 프로세서(122)에 의해 실행할 수 있는 프로그램 명령들을 저장하는 메모리(124)를 포함한다. 예를 들면, 위치 기반 서비스 제공자(120)의 메모리(124)는 웹 서버 소프트웨어, FTP 서비스 소프트웨어와 같은 소프트웨어 또는 다른 타입들의 소프트웨어를 실행하기 위한 명령들을 포함하며, 위치 기반 서비스 제공자(120)로 하여금 위치 기반 서비스 및/또는 다른 컨텐츠를 네트워크(150)를 통해 클라이언트 디바이스(102)에 제공하게 한다. 프로세서(122) 및 메모리(124)는 프로세싱 모듈을 형성한다.
위치 기반 서비스 제공자(120)는 위치 기반 서비스를 직접적으로 또는 간접적으로 클라이언트 디바이스(102)에게 제공한다. 일부 구현예들에서, 위치 기반 서비스 제공자(120)는 직접적으로 위치 기반 서비스를 제공한다(예를 들면, 소셜 미디어 웹페이지 또는 클라이언트 디바이스(102)의 사용자에 의해 위치들에서 “체크인”하거나 또는 위치를 포스팅과 관련시키기 위해 사용자들에게 위치 기반 서비스를 제공하는 소셜 미디어 어플리케이션의 백엔드(backend)). 다른 구현예들에서, 위치 기반 서비스 제공자(120)는 컨텐츠 소스로부터의 컨텐츠와 함께 위치 기반 서비스를 제공하기 위해 컨텐츠 소스를 활용한다(예를 들면, 위치 기반 서비스 제공자(120)는 서드 파티 컨텐츠 아이템을 선택하고 서비스하거나 또는 서드 파티들이 클라이언트 디바이스(102)의 위치에 기초하여 선택되고 서비스될 그리고 컨텐츠 소스에 의해 제공된 제1 파티 컨텐츠 웹페이지와 함께 제시될 서드 파티 컨텐츠에 대한 실시간 입찰들을 제출하게 한다).
도 2를 참조하면, 위치 기반 서비스에 대해 클라이언트 디바이스(102)의 실제 위치를 불명료하게 하기 위한 방법(200)은 클라이언트 디바이스(102)의 위치 불명료화 모듈(116)에 의해 구현된다. 방법(200)은 (위치 기반 서비스 제공자(120)로부터와 같이) 클라이언트 디바이스(102)에 의해 위치에 대한 요청이 수신되었을 때 또는 (로컬 어플리케이션을 실행하는 때와 같이) 클라이언트 디바이스(102)가 위치를 전송할 때 시작된다. 방법(200)은 제1 랜덤 오프셋을 생성하는 것을 포함한다(블록(202)). 제1 랜덤 오프셋은 클라이언트 디바이스(102)의 위치 불명료화 모듈(116)의 랜덤 번호 생성기에 의해 생성된다. 제1 랜덤 오프셋은 x-축에 대해 랜덤하게 생성된 오프셋 값 및 y-축에 대해 랜덤하게 생성된 오프셋 값에 대응하는 값들을 가지는 2차원적 벡터이다.
일부 구현예들에서, 위치 불명료화 모듈(116)은 도출된 오프셋 거리(resulting offset distance)가 하나 이상의 소정의 값들 이상 또는 이하인지 결정하기 위해 제1 랜덤 오프셋에 대한 2차원적 벡터의 놈(norm)(즉, 위도 및 경도 축들에 대한 오프셋 값들에 기초하여 도출된 오프셋 거리)과 하나 이상의 소정의 값들을 비교한다. 예시적 구현예에서, 하나 이상의 소정의 값들은 약 0 마일(0 포함) 및 약 2.523 마일(2.523 포함)을 나타내는(representative) 값들이다. 랜덤하게 생성된 값들을 가지는 2차원적 벡터는 약 2.523 마일의 반경을 가지고 그리고 랜덤하게 생성된 제1 오프셋이 그 안에 위치하는 약 20 제곱 마일의 지역을 정의하는 오프셋 원(offset circle)을 나타낸다. 물론, 약 0 마일(0 포함) 및 약 1 마일(1 포함)을 나타내는 값들(3.14 제곱 마일 지역의 원), 약 0 마일(0포함) 및 약 2마일(2 포함)을 나타내는 값들(12.56 제곱 마일 지역의 원) 등과 같은 다른 소정의 값들도 사용될 수 있다. 일부 구현예들에서, 소정의 값들은 사용자의 선호들, 로컬 표준들, 로컬 가이드라인들, 로컬 관습들, 로컬 법들 등에 기초하여 결정된다.
다른 구현예들에서, 위치 불명료화 모듈(116)은 각각의 랜덤하게 생성된 오프셋 값이 하나 이상의 소정의 값들 이상 또는 이하인지 결정하기 위해 제1 랜덤 오프셋에 대한 2차원적 벡터의 각각의 랜덤하게 생성된 값의 절대값(absolute value)과 하나 이상의 소정의 값들을 비교한다. 예를 들면, 하나 이상의 소정의 값들은 약 0 마일(0 포함) 및 약 2.236 마일(2.236 포함)을 나타내는 값들이다. 따라서, 랜덤하게 생성된 값들을 가지는 2차원적 벡터는 랜덤하게 생성된 제1 오프셋이 그 안에 위치하는 약 20 제곱 마일의 지역을 정의하는 오프셋 스퀘어(offset square)를 나타낸다. 물론, 약 0마일(0 포함) 및 약 1마일(1 포함)을 나타내는 값(4 제곱 마일 스퀘어 지역), 약 0마일(0 포함) 및 약 2마일(2 포함)을 나타내는 값(16 제곱 마일 스퀘어 지역)등과 같은 다른 소정의 값들도 사용될 수 있다. 일부 구현예들에서, 소정의 값들은 사용자의 선호들, 로컬 표준들, 로컬 가이드라인들, 로컬 관습들, 로컬 법들 등에 기초하여 결정된다.
제1 랜덤 오프셋은 매 시간, 매 일, 매 주, 매 달 등과 같이 주기적 단위(periodic basis)로 생성되며, 메모리(106)와 같은 컴퓨터 판독가능 매체에 저장된다. 제1 랜덤 오프셋을 생성하기 위한 주기는 기간 동안 클라이언트 디바이스(102)의 움직임이 미리 정의된 최소 거리에 비해 현저(significant)하도록 결정된다. 예를 들면, 제1 랜덤 오프셋의 주기적 재생성은 클라이언트 디바이스(102)가 사용자의 선호들, 로컬 표준들, 로컬 가이드라인들, 로컬 관습들, 로컬 법들 등에 기초하여 소정의 거리(예를 들면 1 제곱 킬로미터 또는 다른 거리)보다 더 움직일 가망이 있도록 결정된다. 일 예시적 구현예에서, 제1 랜덤 오프셋은 매일 단위로 재생성된다.
다른 구현예들에서, 제1 랜덤 오프셋에 대한 2차원적 벡터는 반경에 대응하는 랜덤하게 생성된 제1 값 및 각도에 대응하는 랜덤하게 생성된 제2값을 가진다.
또한 방법(200)은 제2 랜덤 오프셋을 생성하는 것을 포함한다(블록(204)). 또한 제2 랜덤 오프셋은 클라이언트 디바이스(102)의 위치 불명료화 모듈(116)의 랜덤 숫자 생성기에 의해 생성된다. 또한 제2 랜덤 오프셋은 x-축에 대해 랜덤하게 생성된 오프셋 값 및 y-축에 대해 랜덤하게 생성된 오프셋 값에 대응하는 값들을 가지는 2차원적 벡터이다.
일부 구현예들에서, 위치 불명료화 모듈(116)은 도출된 오프셋 거리(resulting offset distance)가 하나 이상의 소정의 값들 이상 또는 이하인지 결정하기 위해 제2 랜덤 오프셋에 대한 2차원적 벡터의 놈(norm)(즉, 위도 및 경도 축들에 대한 오프셋 값들에 기초하여 도출된 오프셋 거리)과 하나 이상의 소정의 값들을 비교한다. 예시적 구현예에서, 하나 이상의 소정의 값들은 약 0 마일(0 포함) 및 약 2.523 마일(2.523 포함)을 나타내는(representative) 값들이다. 랜덤하게 생성된 값들을 가지는 2차원적 벡터는 약 2.523 마일의 반경을 가지고 그리고 랜덤하게 생성된 제1 오프셋이 그 안에 위치하는 약 20 제곱 마일의 지역을 정의하는 오프셋 원(offset circle)을 나타낸다. 물론, 약 0 마일(0 포함) 및 약 1 마일(1 포함)을 나타내는 값들(3.14 제곱 마일 지역의 원), 약 0 마일(0포함) 및 약 2마일(2 포함)을 나타내는 값들(12.56 제곱 마일 지역의 원) 등과 같은 다른 소정의 값들도 사용될 수 있다. 일부 구현예들에서, 소정의 값들은 사용자의 선호들, 로컬 표준들, 로컬 가이드라인들, 로컬 관습들, 로컬 법들 등에 기초하여 결정된다.
다른 구현예들에서, 위치 불명료화 모듈(116)은 각각의 랜덤하게 생성된 오프셋 값이 하나 이상의 소정의 값들 이상 또는 이하인지 결정하기 위해 제2 랜덤 오프셋에 대한 2차원적 벡터의 각각의 랜덤하게 생성된 값의 절대값과 하나 이상의 소정의 값들을 비교한다. 예를 들면, 하나 이상의 소정의 값들은 약 0 마일(0 포함) 및 약 2.236 마일(2.236 포함)을 나타내는 값들이다. 따라서, 랜덤하게 생성된 값들을 가지는 2차원적 벡터는 랜덤하게 생성된 제1 오프셋이 그 안에 위치하는 약 20 제곱 마일의 지역을 정의하는 오프셋 스퀘어(offset square)를 나타낸다. 물론, 약 0마일(0 포함) 및 약 1마일(1 포함)을 나타내는 값(4 제곱 마일 스퀘어 지역), 약 0마일(0 포함) 및 약 2마일(2 포함)을 나타내는 값(16 제곱 마일 스퀘어 지역)등과 같은 다른 소정의 값들도 사용될 수 있다. 일부 구현예들에서, 소정의 값들은 사용자의 선호들, 로컬 표준들, 로컬 가이드라인들, 로컬 관습들, 로컬 법들 등에 기초하여 결정된다.
제2 랜덤 오프셋은 위치 기반 서비스를 위해 서드 파티에 보내질 각 요청에 대해 생성된다. 예를 들면, 새로운 위치 데이터가 클라이언트 디바이스(102)로부터 위치 기반 서비스 제공자(120)에게 전송되려고 할 때, 위치 불명료화 모듈(116)은 새로운 제2 랜덤 오프셋을 생성한다.
다른 구현예들에서, 제2 랜덤 오프셋에 대한 2차원적 벡터는 반경에 대응하는 랜덤하게 생성된 제1 값 및 각도에 대응하는 랜덤하게 생성된 제2값을 가진다.
방법(200)은 클라이언트 디바이스(102)의 위치를 수신하는 것을 더 포함한다(블록(206)). 예시적 구현예에서, 위치 불명료화 모듈(116)은 위치 모듈(118)로부터 위치 데이터를 수신한다. 위치 모듈(118)로부터의 위치 데이터는 GPS에 의해 생성되고, WiFi 엑세스 포인트로부터 결정되고, 셀룰러 삼각측량에 의해 결정되는 등의 위도와 경도 좌표들을 나타내는 값들을 포함한다.
위치 불명료화 모듈(116)은 클라이언트 디바이스(102)의 프로세서(104)를 사용하여, 위치 모듈(118)로부터의 위치 데이터, 생성된 제1 랜덤 오프셋 및 생성된 제2 랜덤 오프셋을 사용하는 의사 위치를 결정한다(블록(208)). 한 일시예에서, 의사 위치는 다음 방정식에 의해 결정된다.
SP = P + Offset 1 + Offset 2
여기서 SP는 가상위치, P는 위치 모듈(118)로부터 수신된 위치 데이터, Offset 1은 제1 랜덤 오프셋 그리고 Offset 2는 제2 랜덤 오프셋이다.
결정된 의사 위치는 위치 기반 서비스 제공자(120)에 의한 위치 기반 서비스를 위해 전송된다(블록(210)). 의사 위치에 대한 데이터는 그 자체로 전송되거나 또는 다른 데이터(예를 들면, 컨텐츠 아이템 요청)에 포함된다. 일부 구현예들에서, 위치 기반 서비스는 클라이언트 디바이스(102)에 의해 전송된 의사 위치에 기초한 서드 파티 컨텐츠 아이템들의 선택하기과 서비스하기의 부분과 같이 서드 파티 컨텐츠 아이템과 관련된다. 다른 구현예들에서, 위치 기반 서비스는 입력된 검색 쿼리와 관련되고 클라이언트 디바이스(102)에 의해 전송된 의사 위치에 기초한 근처 상점들의 리스트 또는 다른 표시를 제시하는 것과 같이, 검색과 관련된다. 또 다른 구현예들에서, 위치 기반 서비스는 클라이언트 디바이스(102)에 의해 전송된 의사 위치에 기초하여 위치를 포스팅과 관련시키기 또는 클라이언트 디바이스(102)에 의해 전송된 의사 위치에 기초하여 위치를 “체크인”에 관련시키기와 같이 소셜 미디어 어플리케이션과 관련된다.
일 예시적 구현예에서, 클라이언트 디바이스(102)는 소셜 미디어 어플리케이션을 실행한다. 만약 클라이언트 디바이스(102)의 사용자가 소셜 미디어 어플리케이션을 사용할 때 클라이언트 디바이스(102)의 위치를 불명료하게 하려고 하면, 클라이언트 디바이스(102)의 실제 위치는 위치 모듈(118)에 의해 결정된다. 실제 위치 데이터는 클라이언트 디바이스(102)에 대한 의사 위치를 결정하기 위해 위치 불명료화 모듈(116)에 의해 사용된다. 그 후 의사 위치가 원하는 위치 기반 서비스를 위해 위치 기반 서비스 제공자(120)에게 출력된다(예를 들면, 클라이언트 디바이스(102)의 위치를 포함하는 소셜 미디어 어플리케이션을 사용하여 포스팅을 생성하면, 실제 위치 대신에 의사 위치가 클라이언트 디바이스(102)에 의해 위치 기반 서비스 제공자(120)에게 출력된다). 따라서, 클라이언트 디바이스(102)의 실제 위치는 위치 기반 서비스 제공자(120) 및/또는 클라이언트 디바이스(102)에 의한 의사 위치 출력을 가로챌수 있는 임의의 서드 파티들로부터 불명료하게 된다.
상기 내용이 클라이언트 디바이스(102)의 위치 불명료화 모듈(116)을 사용하여 클라이언트 디바이스(102)의 위치를 불명료하게 하기 위한 구현예를 기술하고 있지만, 트러스티드 서버(trusted server)(130)도 일부 구현예들에서 클라이언트 디바이스(102)의 위치를 불명료하게 하기 위해 사용된다. 도 3은 클라이언트 디바이스(102), 위치 기반 서비스 제공자(120) 및 네트워크(150)를 통해 통신하는 트러스티드 서버(130)를 가지는 환경(300)을 도시한다. 현재 예시에서, 네트워크(150) 및 위치 서비스 제공자(120)는 도 1을 참조하여 기술된 것과 실질적으로 동일하다. 현재 예시에서, 도 5 및 7을 참조하여 아래에서 더 논의될 바와 같이, 클라이언트 디바이스(102)는 선택적으로 위치 불명료화 모듈(116)을 생략하거나 또는 하나 이상의 랜덤 오프셋들을 생성하기 위해 위치 불명료화 모듈(116)을 포함한다.
트러스티드 서버(130)는 컴퓨터 서버 또는 서버들의 조합이다(예를 들면, 데이터 센터들, 클라우드 컴퓨팅 플랫폼들 등). 트러스티드 서버(130)는 프로세서(132) 및 메모리(134)를 포함하도록 도시된다. 메모리(134)는 기계 명령들을 저장하며, 상기 명령들은 프로세서(132)에 의해 실행될 때, 프로세서(132)로 하여금 본 명세서에 기술된 하나 이상의 동작들을 수행하게 한다. 프로세서(132)는 하나 이상의 마이크로프로세서들, ASICs(Application Specific Integrated Circuits), FPGAs(Field Programmable Gate Arrays), 다른 형태들의 프로세싱 회로들 또는 그것들의 조합을 포함한다. 메모리(134)는 프로세서(132)에게 프로그램 명령들을 제공할 수 있는 전자적, 광학적, 자기적 또는 임의의 기타 저장 또는 전송 디바이스를 포함하나, 그에 제한되지 않는다. 메모리(134)는 플로피 디스크, CD-ROM, DVD, 자기 디스크, 메모리칩, ROM, RAM, EEPROM, EPROM, 플래시 메모리, 광학 미디어와 같은 저장 디바이스들 또는 프로세서(132)가 그로부터 명령들을 판독할 수 있는 임의의 기타 적절한 메모리를 포함한다. 프로세서(132) 및 메모리(134)는 프로세싱 모듈을 형성한다.
현재 예시에서, 메모리(134)는 위치 불명료화 모듈(136)을 포함한다. 위치 불명료화 모듈(136)은 위치 기반 서비스 제공자(120)에 의해 제공되는 위치 기반 서비스를 위해 클라이언트 디바이스(102)로부터 위치 데이터를 수신하고 실제 위치 대신에 사용될 의사 위치를 출력한다. 일부 구현예들에서, 클라이언트 디바이스로부터의 위치 데이터는 클라이언트 디바이스(102)의 위치 모듈(118)로부터의 실제 위치 데이터이거나 또는 의사 위치 및 중간 의사 위치(intermediate pseudo-location)인 위치 데이터 및/또는 다르게는 클라이언트 디바이스(102)에 의해 트러스티드 서버(130)에 전송되는 불명료하게 된 위치 데이터이다. 위치 불명료화 모듈(136)은 랜덤 오프셋 값들을 생성하는데 사용되는 랜덤 숫자 생성기를 포함하며, 따라서 위치 불명료화 모듈(136)은 클라이언트 디바이스(102)로부터의 수신된 위치 데이터 및 랜덤 오프셋 값들에 기초하여 의사 위치를 생성한다. 그 후 결정된 의사 위치는 네트워크(150)를 통해 또는 트러스티드 서버(130)에 의해 직접적으로 위치 기반 서비스 제공자(120)에 전송된다. 따라서, 트러스티드 서버(130)는 클라이언트 디바이스(102)와 위치 기반 서비스 제공자(120)과의 사이의 중개자(intermediary)이다.
도 4를 참조하면, 트러스티드 서버(130)의 위치 불명료화 모듈(136)에 의해 구현되는 예시적 방법(400)은 클라이언트 디바이스(102)의 위치를 표시하는 데이터를 수신함으로써 시작한다(블록(402)). 일부 구현예들에서, 클라이언트 디바이스(102)의 위치를 표시하는 데이터는 클라이언트 디바이스(102)의 위치 모듈(118)에 의해 결정된 바와 같은 클라이언트 디바이스(102)의 위치에 대응하는 위도 및 경도 좌표들의 2차원적 벡터를 포함한다. 다른 구현예들에서, 클라이언트 디바이스(102)의 위치를 표시하는 데이터는 데이터의 인코딩된 문자열(encoded string)이며, 이는 클라이언트 디바이스(102)의 위치를 나타네는 데이터로 디코딩(decode)되고 파싱(parse)된다.
방법(400)은 제1 랜덤 2차원적 오프셋 벡터를 생성하는 것을 포함한다(블록(404)). 제1 랜덤 2차원적 오프셋 벡터는 트러스티드 서버(130)의 위치 불명료화 모듈(136)의 랜덤 숫자 생성기에 의해 생성된다. 제1 랜덤 2차원적 오프셋 벡터는 x-축에 대해 랜덤하게 생성된 오프셋 값 및 y-축에 대해 랜덤하게 생성된 오프셋 값에 대응하는 값들을 가진다.
일부 구현예들에서, 위치 불명료화 모듈(136)은 도출된 오프셋 거리(resulting offset distance)가 하나 이상의 소정의 값들 이상 또는 이하인지 결정하기 위해 제1 랜덤 2차원적 오프셋 벡터의 놈(norm)(즉, 위도 및 경도 축들에 대한 오프셋 값들에 기초하여 도출된 오프셋 거리)과 하나 이상의 소정의 값들을 비교한다. 예시적 구현예에서, 하나 이상의 소정의 값들은 약 0 마일(0 포함) 및 약 2.523 마일(2.523 포함)을 나타내는 값들이다. 랜덤하게 생성된 값들을 가지는 2차원적 벡터는 약 2.523 마일의 반경을 가지고 그리고 랜덤하게 생성된 제1 오프셋이 그 안에 위치하는 약 20 제곱 마일의 지역을 정의하는 오프셋 원(offset circle)을 나타낸다. 물론, 약 0 마일(0 포함) 및 약 1 마일(1 포함)을 나타내는 값들(3.14 제곱 마일 지역의 원), 약 0 마일(0포함) 및 약 2마일(2 포함)을 나타내는 값들(12.56 제곱 마일 지역의 원) 등과 같은 다른 소정의 값들도 사용될 수 있다. 일부 구현예들에서, 소정의 값들은 사용자의 선호들, 로컬 표준들, 로컬 가이드라인들, 로컬 관습들, 로컬 법들 등에 기초하여 결정된다.
다른 구현예들에서, 위치 불명료화 모듈(136)은 각각의 랜덤하게 생성된 오프셋 값이 하나 이상의 소정의 값들 이상 또는 이하인지 결정하기 위해 제1 랜덤 2차원적 오프셋 벡터의 각각의 랜덤하게 생성된 값의 절대값과 하나 이상의 소정의 값들을 비교한다. 예를 들면, 하나 이상의 소정의 값들은 약 0 마일(0 포함) 및 약 2.236 마일(2.236 포함)을 나타내는 값들이다. 따라서, 랜덤하게 생성된 값들을 가지는 2차원적 벡터는 랜덤하게 생성된 제1 오프셋이 그 안에 위치하는 약 20 제곱 마일의 지역을 정의하는 오프셋 스퀘어(offset square)를 나타낸다. 물론, 약 0마일(0 포함) 및 약 1마일(1 포함)을 나타내는 값(4 제곱 마일 스퀘어 지역), 약 0마일(0 포함) 및 약 2마일(2 포함)을 나타내는 값(16 제곱 마일 스퀘어 지역)등과 같은 다른 소정의 값들도 사용될 수 있다. 일부 구현예들에서, 소정의 값들은 사용자의 선호들, 로컬 표준들, 로컬 가이드라인들, 로컬 관습들, 로컬 법들 등에 기초하여 결정된다.
제1 랜덤 2차원적 오프셋 벡터는 각 디바이스에 대해 매 시간, 매 일, 매 주, 매 달 등과 같이 주기적 단위(periodic basis)로 생성되며, 메모리(136)와 같은 컴퓨터 판독가능 매체에 저장되고, 클라이언트 디바이스(102)의 디바이스 식별자와 관련된다(예를 들면, 디바이스 식별자를 구비한 벡터로서, 및 제1 랜덤 2차원적 오프셋 벡터를 위해 랜덤하게 생성된 2개의 값들). 제1 랜덤 2차원적 오프셋 벡터를 생성하기 위한 주기는 기간 동안 클라이언트 디바이스(102)의 움직임이 미리 정의된 최소 거리에 비해 현저(significant)하도록 결정된다. 예를 들면, 제1 랜덤 2차원적 오프셋 벡터의 주기적 재생성은 클라이언트 디바이스(102)가 사용자의 선호들, 로컬 표준들, 로컬 가이드라인들, 로컬 관습들, 로컬 법들 등에 기초하여 소정의 거리(예를 들면 1 제곱 킬로미터 또는 다른 거리)보다 더 움직일 가망이 있도록 결정된다. 일 예시적 구현예에서, 제1 랜덤 2차원적 오프셋 벡터는 매일 단위로 재생성된다. 일 예시적 구현예에서, 제1 랜덤 2차원적 오프셋 벡터를 미리 결정된 기간의 시간 동안 저장된다.
다른 구현예들에서, 제1 랜덤 2차원적 벡터는 반경에 대응하는 랜덤하게 생성된 제1 값 및 각도에 대응하는 랜덤하게 생성된 제2값을 가진다.
또한, 방법(400)은 제2 랜덤 2차원적 오프셋 벡터을 생성하는 것을 포함한다(블록(406)). 제2 랜덤 2차원적 오프셋 벡터는 트러스티드 서버(130)의 위치 불명료화 모듈(136)의 랜덤 숫자 생성기에 의해 생성된다. 제2 랜덤 2차원적 오프셋 벡터는 x-축에 대해 랜덤하게 생성된 오프셋 값 및 y-축에 대해 랜덤하게 생성된 오프셋 값에 대응하는 값들을 가진다.
일부 구현예들에서, 위치 불명료화 모듈(136)은 도출된 오프셋 거리(resulting offset distance)가 하나 이상의 소정의 값들 이상 또는 이하인지 결정하기 위해 제2 랜덤 2차원적 오프셋 벡터의 놈(norm)(즉, 위도 및 경도 축들에 대한 오프셋 값들에 기초하여 도출된 오프셋 거리)과 하나 이상의 소정의 값들을 비교한다. 예시적 구현예에서, 하나 이상의 소정의 값들은 약 0 마일(0 포함) 및 약 2.523 마일(2.523 포함)을 나타내는 값들이다. 랜덤하게 생성된 값들을 가지는 2차원적 벡터는 약 2.523 마일의 반경을 가지고 그리고 랜덤하게 생성된 제1 오프셋이 그 안에 위치하는 약 20 제곱 마일의 지역을 정의하는 오프셋 원(offset circle)을 나타낸다. 물론, 약 0 마일(0 포함) 및 약 1 마일(1 포함)을 나타내는 값들(3.14 제곱 마일 지역의 원), 약 0 마일(0포함) 및 약 2마일(2 포함)을 나타내는 값들(12.56 제곱 마일 지역의 원) 등과 같은 다른 소정의 값들도 사용될 수 있다. 일부 구현예들에서, 소정의 값들은 사용자의 선호들, 로컬 표준들, 로컬 가이드라인들, 로컬 관습들, 로컬 법들 등에 기초하여 결정된다.
다른 구현예들에서, 위치 불명료화 모듈(136)은 각각의 랜덤하게 생성된 오프셋 값이 하나 이상의 소정의 값들 이상 또는 이하인지 결정하기 위해 제2 랜덤 2차원적 오프셋 벡터의 각각의 랜덤하게 생성된 값의 절대값과 하나 이상의 소정의 값들을 비교한다. 예를 들면, 하나 이상의 소정의 값들은 약 0 마일(0 포함) 및 약 2.236 마일(2.236 포함)을 나타내는 값들이다. 따라서, 랜덤하게 생성된 값들을 가지는 2차원적 벡터는 랜덤하게 생성된 제1 오프셋이 그 안에 위치하는 약 20 제곱 마일의 지역을 정의하는 오프셋 스퀘어(offset square)를 나타낸다. 물론, 약 0마일(0 포함) 및 약 1마일(1 포함)을 나타내는 값(4 제곱 마일 스퀘어 지역), 약 0마일(0 포함) 및 약 2마일(2 포함)을 나타내는 값(16 제곱 마일 스퀘어 지역)등과 같은 다른 소정의 값들도 사용될 수 있다. 일부 구현예들에서, 소정의 값들은 사용자의 선호들, 로컬 표준들, 로컬 가이드라인들, 로컬 관습들, 로컬 법들 등에 기초하여 결정된다.
제2 랜덤 2차원적 오프셋 벡터는 위치 기반 서비스를 위해 서드 파티에 보내질 각 요청에 대해 생성된다. 예를 들면, 새로운 위치 데이터가 클라이언트 디바이스(102)로부터 위치 기반 서비스 제공자(120)에게 전송되려고 할 때, 클라이언트 디바이스(102)는 새로운 새로운 위치ㅣ 데이터를 트러스티드 서버(130)에 전송한다. 트러스티드 서버(130)의 위치 불명료화 모듈(136)은 위치 기반 서비스 제공자(120)에게 전송될 새로운 의사 위치를 생성할 때 사용될 새로운 제2 랜덤 2차원적 오프셋 벡터를 생성한다.
다른 구현예들에서, 제2 랜덤 2차원적 오프셋 벡터는 반경에 대응하는 랜덤하게 생성된 제1 값 및 각도에 대응하는 랜덤하게 생성된 제2값을 가진다.
위치 불명료화 모듈(136)은 클라이언트 디바이스(102)로부터의 위치 데이터, 생성된 제1 랜덤 2차원적 오프셋 벡터 및 생성된 제2 랜덤 2차원적 오프셋 벡터를 사용하여 의사 위치를 결정한다(블록(408)). 한 예시에서, 의사 위치는 다음 방정식에 의해 결정된다.
SP = P + Offset 1 + Offset 2
여기서 SP는 가상위치, P는 클라이언트 디바이스(102)의 위치 모듈(118)로부터 수신된 위치 데이터, Offset 1은 제1 랜덤 2차원적 오프셋 벡터 그리고 Offset 2는 제2 랜덤 2차원적 오프셋 벡터이다.
결정된 의사 위치는 클라이언트 디바이스(102)에 제공될 위치 기반 서비스를 위해 위치 기반 서비스 제공자(120)에게 전송된다(블록(410)). 의사 위치에 대한 데이터는 그 자체로 전송되거나 또는 다른 데이터(예를 들면, 컨텐츠 아이템 요청)에 포함된다. 일부 구현예들에서, 위치 기반 서비스는 트러스티드 서버(130)에 의해 전송된 의사 위치에 기초한 서드 파티 컨텐츠 아이템들의 선택하기과 서비스하기의 부분과 같이 서드 파티 컨텐츠 아이템과 관련된다. 다른 구현예들에서, 위치 기반 서비스는 입력된 검색 쿼리와 관련되고 트러스티드 서버(130)에 의해 전송된 의사 위치에 기초한 근처 상점들의 리스트 또는 다른 표시를 제시하는 것과 같이, 검색과 관련된다. 또 다른 구현예들에서, 위치 기반 서비스는 트러스티드 서버(130)에 의해 전송된 의사 위치에 기초하여 위치를 포스팅과 관련시키기 또는 트러스티드 서버(130)에 의해 전송된 의사 위치에 기초하여 위치를 “체크인”에 관련시키기와 같이 소셜 미디어 어플리케이션과 관련된다. 일부 구현예들에서, 클라이언트 디바이스(102)가 의사 위치를 위치 기반 서비스 제공자(120)에 전송하게 하기 위해, 트러스티드 서버(130)는 클라이언트 디바이스(102)에 의사 위치를 대신 전송한다.
도 5는 부분적으로 클라이언트 디바이스(102)의 위치 불명료화 모듈(116)에 의해 그리고 부분적으로 트러스티드 서버(130)의 위치 불명료화 모듈(136)에 의해 구현되는 다른 예시적 방법(500)을 도시한다. 방법(500)은 (위치 기반 서비스 제공자(120)로부터와 같이) 위치에 대한 요청이 클라이언트 디바이스(102)에 의해 수신되거나 또는 (로컬 어플리케이션을 실행할 때와 같이) 클라이언트 디바이스(102)가 위치를 전송하려고 할 때 시작한다. 방법(500)은 클라이언트 디바이스(102)의 위치를 수신하는 것을 시작한다(블록(502)). 예시적 구현예에서, 위치 불명료화 모듈(116)은 위치 모듈(118)로부터 위치 데이터를 수신한다. 위치 모듈(118)로부터의 위치 데이터는 GPS에 의해 생성되고, WiFi 엑세스 포인트로부터 결정되고, 셀룰러 삼각측량에 의해 결정되는 등의 위도와 경도 좌표들을 나타내는 값들을 포함한다.
방법(500)은 제1 랜덤 오프셋을 생성하는 것을 포함한다(블록(502)). 제1 랜덤 오프셋은 클라이언트 디바이스(102)의 위치 불명료화 모듈(116)의 랜덤 숫자 생성기에 의해 생성된다. 제1 랜덤 오프셋은 x-축에 대해 랜덤하게 생성된 오프셋 값 및 y-축에 대해 랜덤하게 생성된 오프셋 값에 대응하는 값들을 가지는 2차원적 벡터이다. 제1 랜덤 오프셋의 생성은 도 2의 블록(202)을 참조하여 기술된 것과 실질적으로 유사하다.
제1 랜덤 오프셋은 매 시간, 매 일, 매 주, 매 달 등과 같이 주기적 단위(periodic basis)로 생성되며, 메모리(106)와 같은 컴퓨터 판독가능 매체에 저장된다. 제1 랜덤 오프셋을 생성하기 위한 주기는 기간 동안 클라이언트 디바이스(102)의 움직임이 미리 정의된 최소 거리에 비해 현저(significant)하도록 결정된다. 예를 들면, 제1 랜덤 오프셋의 주기적 재생성은 클라이언트 디바이스(102)가 사용자의 선호들, 로컬 표준들, 로컬 가이드라인들, 로컬 관습들, 로컬 법들 등에 기초하여 소정의 거리(예를 들면 1 제곱 킬로미터 또는 다른 거리)보다 더 움직일 가망이 있도록 결정된다. 일 예시적 구현예에서, 제1 랜덤 오프셋은 매일 단위로 재생성된다.
다른 구현예들에서, 제1 랜덤 오프셋은 위치 기반 서비스를 위해, 위치 기반 서비스 제공자(120)와 같은 서드 파티에 보내질 각 요청에 대해 생성된다. 예를 들면, 새로운 위치 데이터가 클라이언트 디바이스(102)로부터 위치 기반 서비스 제공자(120)에게로 전송되려고 할 때, 위치 불명료화 모듈(116)은 새로운 제1 랜덤 오프셋을 생성한다.
위치 불명료화 모듈(116)은 클라이언트 디바이스(102)의 프로세서(104)를 사용하여, 위치 모듈(118)의 위치 데이터 및 생성된 제1 랜덤 오프셋을 사용하여 중간 의사 위치를 결정한다(블록(506)). 한 예시에서, 중간 의사 위치는 다음 방정식에 의해 결정된다.
ISP = P + Offset 1
여기서 ISP는 중간 의사 위치, P는 위치 모듈(118)로부터 수신된 위치 데이터 그리고 Offset 1은 제1 랜덤 오프셋이다.
결정된 중간 의사 위치는 트러스티드 서버(130)에 전송된다(블록(508)). 일부 구현예들에서, 클라이언트 디바이스(102)의 중간 의사 위치를 표시하는 데이터는 클라이언트 디바이스(102)의 중간 의사 위치에 대응하는 경도 및 위도 좌표들의 2차원적 벡터를 포함한다. 다른 구현예들에서, 클라이언트 디바이스(102)의 중간 의사 위치를 표시하는 데이터는 데이터의 인코딩된 문자열(encoded string)이며, 이는 클라이언트 디바이스(102)의 위치를 나타네는 데이터로 디코딩(decode)되고 파싱(parse)된다.
또한 방법(500)은 제2 랜덤 오프셋을 생성하는 것을 포함한다(블록(510)). 현 예시에서 제2 랜덤 오프셋은 트러스티드 서버(130)의 위치 불명료화 모듈(136)의 랜덤 숫자 생성기에 의해 생성된다. 제2 랜덤 오프셋은 x-축에 대해 랜덤하게 생성된 오프셋 값 및 y-축에 대해 랜덤하게 생성된 오프셋 값에 대응하는 값들을 가지는 2차원적 벡터이다. 제2 랜덤 오프셋의 생성은 도 4의 블록(406)을 참조하여 기술된 것과 실질적으로 유사하다.
만약 제1 랜덤 오프셋이 주기적 단위로 생성되면, 제2 랜덤 오프셋은 위치 기반 서비스를 위해, 위치 기반 서비스 제공자(120)와 같은 서드 파티에 보내질 각 요청에 대해 생성된다. 예를 들면, 새로운 위치 데이터가 클라이언트 디바이스(102)로부터 위치 기반 서비스 제공자(120)에게로 전송되려고 할 때, 트러스티드 서버(130)의 위치 불명료화 모듈(116)은 새로운 제2 랜덤 오프셋을 생성한다.
만약 제1 랜덤 오프셋이 요청이 위치 기반 서비스를 위해 위치 기반 서비스 제공자(120)와 같이 서드 파티로 보내질 때마다 생성되면, 제2 랜덤 오프셋은 매 시간, 매 일, 매 주, 매 달 등과 같이 주기적 단위(periodic basis)로 생성되며, 메모리(134)와 같은 컴퓨터 판독가능 매체에 저장된다. 제2 랜덤 오프셋을 생성하기 위한 주기는 기간 동안 클라이언트 디바이스(102)의 움직임이 미리 정의된 최소 거리에 비해 현저(significant)하도록 결정된다. 예를 들면, 제2 랜덤 오프셋의 주기적 재생성은 클라이언트 디바이스(102)가 사용자의 선호들, 로컬 표준들, 로컬 가이드라인들, 로컬 관습들, 로컬 법들 등에 기초하여 소정의 거리(예를 들면 1 제곱 킬로미터 또는 다른 거리)보다 더 움직일 가망이 있도록 결정된다. 일 예시적 구현예에서, 제2 랜덤 오프셋은 매일 단위로 재생성된다. 제1 랜덤 오프셋 및 제2 랜덤 오프셋 2차원적 벡터들의 평균 길이는 예를 들면, 거의 동일한 거리같이 비교할 수 있다. 일부 예시들에서, 제1 랜덤 오프셋 및 제2 랜덤 오프셋 2 차원적 벡터들은 프라이버시를 보호하기 위한 최소 지역이 설정되도록 사이징된다.
트러스티드 서버(130)의 위치 불명료화 모듈(136)은 클라이언트 디바이스(102)로부터의 중간 의사 위치 데이터 및 생성된 제2 랜덤 오프셋을 사용하는 의사 위치를 결정한다(블록(512)). 한 예시에서, 의사 위치는 다음 방정식에 의해 결정된다.
SP = ISP + Offset 2
여기서 SP는 의사 위치, ISP는 클라이언트 디바이스(102)로부터 수신된 중간 의사 위치 데이터 그리고 Offset 2는 제2 랜덤 오프셋이다.
결정된 의사 위치는 클라이언트 디바이스(102)에게 제공될 위치 기반 서비스를 위해 트러스티드 서버(130)에 의해 위치 기반 서비스 제공자(120)에게 전송된다(블록(514)). 의사 위치에 대한 데이터는 그 자체로 전송되거나 또는 다른 데이터(예를 들면, 컨텐츠 아이템 요청)에 포함된다. 일부 구현예들에서, 위치 기반 서비스는 트러스티드 서버(130)에 의해 전송된 의사 위치에 기초한 서드 파티 컨텐츠 아이템들의 선택하기과 서비스하기의 부분과 같이 서드 파티 컨텐츠 아이템과 관련된다. 다른 구현예들에서, 위치 기반 서비스는 입력된 검색 쿼리와 관련되고 트러스티드 서버(130)에 의해 전송된 의사 위치에 기초한 근처 상점들의 리스트 또는 다른 표시를 제시하는 것과 같이, 검색과 관련된다. 또 다른 구현예들에서, 위치 기반 서비스는 트러스티드 서버(130)에 의해 전송된 의사 위치에 기초하여 위치를 포스팅과 관련시키기 또는 트러스티드 서버(130)에 의해 전송된 의사 위치에 기초하여 위치를 “체크인”에 관련시키기와 같이 소셜 미디어 어플리케이션과 관련된다. 일부 구현예들에서, 클라이언트 디바이스(102)가 의사 위치를 위치 기반 서비스 제공자(120)에 전송하게 하기 위해, 트러스티드 서버(130)는 클라이언트 디바이스(102)에 의사 위치를 대신 전송한다.
도 6은 영역들(610)의 세트로 분할되는 지역(600)의 개요도를 도시한다. 현 예시에서, 지역(600)은 지구 표면의 전체를 포함하거나 또는 지구 표면의 더 작은 지역이다. 지역(600)은 영역들(610)의 세트로 분할된다. 일부 구현예들에서, 영역들(610)은 나라들, 지방들, 도시권들, 우번 번호들 등과 같은 이미 존재하는 구획들에 대응한다. 다른 예시들에서, 영역들(610)은 지역(600)의 임의적인 구획들이다. 다른 구현예들에서, 지역(600)은 영역들(610)의 세트로 세분되며, 따라서 각 영역(610)은 경도의 100분의 1도 (1/100 of a degree of longitude)와 위도의 100분의 1도 (1/100 of a degree of latitude)와 같이 위도 및 경도에 의해 정의된 지역을 가진다.
또 다른 구현예들에서, 각 영역(610)은 실질적으로 구 모양의 지구의 분할들에 기초하여 결정된다. 예를 들면, 도 7을 참조하면, 지구를 나타내는 구(700)는 지구(702)의 최북단 부분에 접하는 상부 표면(712), 지구의 최남단에 접하는 하부 표면(714) 및 적도(706)에서 접하는 4개 표면들(2개는 716, 718로 도시됨) 구비한 큐브(710)에 둘러쌓인다. 구(700)의 표면에서 각 포인트 p는 큐브(710)의 각 표면에 투영(projection)된다. 즉, 구(700)의 중심으로부터 포인트 p를 통과하여 큐브(710)의 표면들 중 한 포인트까지 선을 그림. 각 포인트 p는 좌표들(페이스, u, v)에 의해 표현되며, 여기서 페이스는 p가 투영된 표면에 대응하며, u는 표면에 대한 제1 좌표 그리고 v는 표면에 대한 제2 좌표이다. 그 후 영역들(720, 722)은 실질적으로 구 모양의 지구 표면의 지역들을 정의하는 4개의 포인트들 p1, p2, p3 및 p4 투영들에 기초하여 정의된다. 일부 구현예들에서, 영역들(720, 722)은 각 영역이 인접한 포인트들로부터 동일한 각변위(angular displacement)를 가지도록 정의된다. 즉, 만약 포인트 p1이 영역(722)와 같이 적도에 위치되면, 포인트 p2는 포인트 p1로부터 100분의 1도의 수평적 각변위만큼 떨어진, 그러나 동일한 수직적 각변위인 구(700)의 표면의 포인트에 위치된다. 유사하게, 포인트 p3은 포인트 p1로부터 100분의 1도의 수직적 각변위만큼 떨어진, 그러나 동일한 수평적 각변위인 구(700)의 표면의 포인트에 위치된다. 포인트 p4는 포인트 p1로부터 100분의 1도의 수직적 각변위 및 100분의 1도의 수평적 각변위만큼 떨어진 구(700)의 표면의 포인트에 위치된다. 물론 영역들을 정의하기 위한 다른 각변위들이 사용될 수 있다.
각 영역의 지역은 각 영역이 프라이버시를 보호하기 위한 최소 지역보다 상당히 작지 않도록 그리고 또한 각 영역이 위치 기반 서비스들의 효과없게 렌더링하지 않도록 상당히 크지 않도록 사이징된다.
도 8을 참조하면, 도 6을 참조하여 논의된 영역들(610) 또는 도 7을 참조하여 논의된 영역들(720, 722)과 같은 영역들의 세트가 클라이언트 디바이스(102)의 실제 위치를 불명료하게 하는 동안에 사용된다. 도 8은 영역들의 세트를 수신하는 것을 포함하는 방법(800)을 도시한다(블록(802)). 일부 구현예들에서, 영역들의 세트는 트러스티드 서버(130)에 의해 생성되고 및/또는 저장되며, 또는 영역들의 세트는 클라이언트 디바이스(102)에 의해 생성되고 및/또는 저장된다. 일부 구현예들에서, 영역들의 세트는 나라들, 지방들, 도시권들, 우번 번호들 등과 같은 이미 존재하는 구획들에 대응한다. 다른 예시들에서, 영역들의 세트는 지역의 임의적인 구획들이다. 또 다른 구현예들에서, 영역들의 세트는 경도의 100분의 1도 (1/100 of a degree of longitude)와 위도의 100분의 1도 (1/100 of a degree of latitude)의 지역과 같이 위도 및 경도에 의해 정의된 지역을 가지도록 정의된다. 또 추가로, 영역들의 세트는 각 영역이 인접한 포인트들(예를 들면, 100분의 1도의 각변위)로부터 동일한 각변위를 가지도록 정의된 영역들에 대응한다. 현재 예시에서, 영역들의 세트는 트러스티드 서버(130)에 의해 수신되며, 하지만 방법(800)은 클라이언트 디바이스(102)에 의해 대신 수행될 수 있다는 것이 이해되어야 한다.
클라이언트 디바이스(102)의 위치를 표시하는 데이터가 수신된다(블록(804)). 현재 예시에서, 트러스티드 서버(130)는 클라이언트 디바이스(102)의 위치 모듈(118)에 의해 생성된 클라이언트 디바이스(102)의 위치를 표시하는 데이터를 수신한다. 일부 구현예들에서, 클라이언트 디바이스(102)의 위치를 표시하는 데이터는 클라이언트 디바이스(102)의 위치 모듈(118)에 의해 결정된 바와 같은 클라이언트 디바이스(102)의 위치에 대응하는 위도 및 경도 좌표들의 2차원적 벡터를 포함한다. 다른 구현예들에서, 클라이언트 디바이스(102)의 위치를 표시하는 데이터는 데이터의 인코딩된 문자열(encoded string)이며, 이는 클라이언트 디바이스(102)의 위치를 나타네는 데이터로 디코딩(decode)되고 파싱(parse)된다.
방법(800)은 제1 랜덤 오프셋을 생성하는 것을 포함한다(블록(806)). 제1 랜덤 오프셋은 트러스티드 서버(130)의 위치 불명료화 모듈(136)의 랜덤 숫자 생성기에 의해 생성된다. 제1 랜덤 오프셋은 x-축에 대해 랜덤하게 생성된 오프셋 값 및 y-축에 대해 랜덤하게 생성된 오프셋 값에 대응하는 값들을 가지는 2차원적 벡터이다. 제1 랜덤 오프셋의 생성은 도 4의 블록(406)을 참조하여 기술된 것과 실질적으로 유사하다.
일부 구현예들에서, 제1 랜덤 오프셋은 매 시간, 매 일, 매 주, 매 달 등과 같이 주기적 단위(periodic basis)로 생성되며, 메모리(134)와 같은 컴퓨터 판독가능 매체에 저장된다. 제1 랜덤 오프셋을 생성하기 위한 주기는 기간 동안 클라이언트 디바이스(102)의 움직임이 미리 정의된 최소 거리에 비해 현저(significant)하도록 결정된다. 예를 들면, 제1 랜덤 오프셋의 주기적 재생성은 클라이언트 디바이스(102)가 사용자의 선호들, 로컬 표준들, 로컬 가이드라인들, 로컬 관습들, 로컬 법들 등에 기초하여 소정의 거리(예를 들면 1 제곱 킬로미터 또는 다른 거리)보다 더 움직일 가망이 있도록 결정된다. 일 예시적 구현예에서, 제1 랜덤 오프셋은 매일 단위로 재생성된다.
다른 구현예들에서, 제1 랜덤 오프셋은 위치 기반 서비스를 위해, 위치 기반 서비스 제공자(120)와 같은 서드 파티에 보내질 각 요청에 대해 생성된다. 예를 들면, 새로운 위치 데이터가 클라이언트 디바이스(102)로부터 위치 기반 서비스 제공자(120)에게로 전송되려고 할 때, 트러스티드 서버(130)의 위치 불명료화 모듈(136)은 새로운 제1 랜덤 오프셋을 생성한다.
트러스티드 서버(130)의 위치 불명료화 모듈(136)은 클라이언트 디바이스(102)로부터의 위치 데이터 및 생성된 제1 랜덤 오프셋을 사용하여 중간 의사 위치를 결정한다(블록(808)). 한 예시에서, 중간 의사 위치는 다음 방정식에 의해 결정된다.
ISP = P + Offset 1
여기서 ISP는 중간 의사 위치, P는 위치 모듈(118)로부터 수신된 위치 데이터 그리고 Offset 1은 제1 랜덤 오프셋이다.
중간 의사 위치를 사용하여, 중간 의사 위치에 기초하여 영역들의 세트로부터의 영역이 결정된다(블록(810)). 영역의 결정은 어떤 영역들의 세트의 영역이 중간 의사 위치가 그 안에 위치하는 지역을 정의하는지 결정함으로써 수행된다. 일부 구현예들에서, 중간 의사 위치의 좌표들은 각 영역을 정의하는 좌표들의 세트들과 비교된다.
영역이 결정되면, 결정된 영역에 기초한 의사 위치가 클라이언트 디바이스(102)에 제공될 위치 기반 서비스를 위해 트러스트 서버(130)에 의해 위치 기반 서비스 제공자(120)에게 전송된다(블록(812)). 의사 위치는 센터 포인트, 코너 또는 영역의 임의의 기타 고정된 포인트와 같은 결정된 영역과 관련된다. 따라서, 만약 영역에서 중간 의사 위치가 위치하면, 클라이언트 디바이스(102)의 실제 위치는 영역과 관련된 고정된 포인트를 사용함으로써 더 불명료하게 된다. 영역의 고정된 포인트에 기초하여 도출된 의사 위치에 대한 데이터는 그 자체로 전송되거나 또는 다른 데이터(예를 들면, 컨텐츠 아이템 요청)에 포함된다. 일부 구현예들에서, 위치 기반 서비스는 트러스티드 서버(130)에 의해 전송된 의사 위치에 기초한 서드 파티 컨텐츠 아이템들의 선택하기과 서비스하기의 부분과 같이 서드 파티 컨텐츠 아이템과 관련된다. 다른 구현예들에서, 위치 기반 서비스는 입력된 검색 쿼리와 관련되고 트러스티드 서버(130)에 의해 전송된 의사 위치에 기초한 근처 상점들의 리스트 또는 다른 표시를 제시하는 것과 같이, 검색과 관련된다. 또 다른 구현예들에서, 위치 기반 서비스는 트러스티드 서버(130)에 의해 전송된 의사 위치에 기초하여 위치를 포스팅과 관련시키기 또는 트러스티드 서버(130)에 의해 전송된 의사 위치에 기초하여 위치를 “체크인”에 관련시키기와 같이 소셜 미디어 어플리케이션과 관련된다. 일부 구현예들에서, 클라이언트 디바이스(102)가 의사 위치를 위치 기반 서비스 제공자(120)에 전송하게 하기 위해, 트러스티드 서버(130)는 클라이언트 디바이스(102)에 의사 위치를 대신 전송한다.
도 8에 도시된 방법(800)의 일부 구현예들에서, 중간 의사 위치는 클라이언트 디바이스(102)에 의해 결정되고 트러스트디 서버(130)에 전송되며, 따라서 트러스티드 서버(130)는 단지 영역들의 세트로부터 영역을 결정하고 도출된 의사 위치를 위치 기반 서비스 제공자(120)에게 직접적으로 전송하거나 또는 위치 기반 서비스 제공자(120)에게 보내질 도출된 의사 위치를 클라이언트 디바이스(102)에게 전송한다. 추가로, 일부 구현예들에서, 제2 랜덤 오프셋이 활용될 수 있고, 이는 도 2, 4 및/또는 5를 참조하여 기술된 것과 유사하다.
도 9는 컴퓨터 시스템(900)의 블록 다이어그램이며, 이는 본 명세서에 기술된 클라이언트 디바이스(102), 위치 기반 서비스 제공자(120), 트러스티드 서버(130) 및/또는 임의의 기타 컴퓨팅 디바이스를 구현하는데 사용된다. 컴퓨팅 시스템(900)은 버스(905) 또는 정보를 통신하기 위한 다른 통신 컴포넌트 및 프로세서(910) 또는 정보를 프로세싱하기 위한 버스(905)에 연결된 프로세싱 모듈을 포함한다. 또한 컴퓨팅 시스템(900)은 RAM 또는 기타 동적 저장 디바이스와 같은, 정보 및 프로세서(910)에 의해 실행될 명령들을 저장하기 위한, 버스(905)에 연결된 메인 메모리(915)를 포함한다. 또한 메인 메모리(915)는 위치 정보, 임시적 변수들 또는 프로세서(910)에 의한 명령들의 실행 중에 다른 중간 정보를 저장하는데 사용된다. 컴퓨팅 시스템(900)은 정적 정보 및 프로세서(910)에 대한 명령들을 저장하기 위한 버스(905)에 연결된 ROM(920) 또는 다른 정적 저장 디바이스를 더 포함한다. SSD(Solid State Device), 자기 디스크 또는 광학 디스크와 같은 저장 디바이스(925)는 정보 및 명령들을 지속적으로 저장하기 위해 버스(905)에 연결된다. 컴퓨팅 디바이스(900)는 랩톱들, 데스크톱들, 워크스테이션들, PDA들(Personal Digital Assistants), 서버들, 블레이드 서버들, 메인프레임들, 셀룰러 전화기들, 스마트폰들 모바일 컴퓨팅 디바이스들(예를 들면, 노트패드, e-리더 등) 등과 같은 디지털 컴퓨터들을 포함하나 그에 제한되지 않는다.
컴퓨팅 시스템(900)은 버스(905)를 통해 사용자에게 정보를 디스플레이하기 위해 LCD(Liquid Crystal Display), TFT LCD(Thin-Film-Transistor LCD), OLED(Organic Light Emitting Diode) 디스플레이, LED 디스플레이, 전자 종이 디스플레이, PDP(Plasma Display Panel) 및/또는 다른 디스플레이 등과 같은 디스플레이(935)에 연결된다. 문자 숫자식 또는 다른 키들을 포함하는 키보드와 같은 입력 디바이스(930)는 정보 및 프로세서(910)에 대한 명령 선택들을 통신하기 위한 버스(905)에 연결된다. 다른 구현예에서, 터치 스크린 디스플레이와 같이, 입력 디바이스(930)는 디스플레이(935)에 통합된다. 입력 디바이스(930)는 방향 정보 및 프로세서(910)에 대한 명령 선택들을 통신하기 위해 그리고 디스플레이(935)에서 커서 움직임을 제어하기 위해, 마우스, 트랙볼 또는 커서 방향 키들과 같은 커서 제어를 포함한다.
다양한 구현예들에 따르면, 본 명세서에 기술된 프로세스들 및/또는 방법들은 메인 메모리(915)에 포함된 명령들의 배열을 실행하는 프로세서(910)에 응답하여 컴퓨팅 시스템(900)에 의해 구현된다. 상기 명령들은 저장 디바이스(925)와 같은 다른 컴퓨터 판독가능 매체로부터 메인 메모리(915)로 판독된다. 메인 메모리(915)에 포함된 명령들의 배열의 실행은 컴퓨팅 시스템(900)으로 하여금 본 명세서에 기술된 도시적인 프로세스들 및/또는 방법 단계들을 수행하게 한다. 또한 멀티 프로세싱 장치에서 하나 이상의 프로세서들이 메인 메모리(915)에 포함된 명령들을 실행하는데 이용된다. 대안적인 구현예들에서, 유선 회로가 도시적인 구현예들을 달성하기 위한 소프트웨어 명령들 대신에 또는 그와 조합하여 사용될 수 있다. 따라서, 구현예들은 하드웨어 회로 및 소프트웨어의 임의의 특정 조합에 제한되지 않는다.
또한 컴퓨팅 시스템(900)은 시스템(900)과 네트워크(150)과의 사이에 통신 링크를 제공하기 위해 버스(905)에 연결된 통신 모듈(940)을 포함한다. 이와 같이, 통신 모듈(940)은 프로세서(910)으로 하여금 유선 또는 무선으로 네트워크(150)에 연결된 다른 전자 시스템들과 통신하게 한다. 예를 들면, 통신 모듈(940)은 시스템(900)을 인터넷 또는 다른 네트워크(150)에 연결하는 이더넷 라인에 연결된다. 다른 구현예들에서, 통신 모듈(940)은 안테나(도시되지 않음)에 연결되고 네트워크(150)과의 무선 통신 인터페이스를 통해 정보를 전송하고 수신하는 기능을 제공한다.
다양한 구현예들에서, 통신 모듈(940)은 WLAN 프로토콜들(예를 들면, IEEE 802.11 a/b/g/n/ac/ad, IEEE 802.16, IEEE 802.20 등), PAN 프로토콜들, 로우-레이트 무선 PAN 프로토콜들(예를 들면, ZigBee, IEEE 802.15.4-2003), 적외선 프로토콜들, 블루투스 프로토콜들, 수동 또는 능동 RFID 프로토콜들을 포함하는EMI 프로토콜 및/또는 이와 유사한 것와 같은, 다만 그에 제한되지 않는 하나 이상의 통신 프로토콜들에 따라 데이터 통신들을 수행하도록 구성된 하나 이상의 트랜스시버들(transceivers)을 포함한다.
통신 모듈(940)은 다른 타입들의 프로토콜들, 통신 범위들, 동작 파워 요구사항들(operating power requirements), RF 서브-밴드들, 정보 타입들(예를 들면, 음성 또는 데이터), 사용 시나리오들, 어플리에이션들 및/또는 이와 유사한 것을 사용하여 통신하도록 구성된 하나 이상의 트랜스시버들을 포함한다. 다양한 구현예들에서, 통신 모듈(940)은 임의의 수 또는 조합의 통신 표준들을 사용하여 로컬 디바이스들과의 통신을 지원하도록 구성된 하나 이상의 트랜스시버들을 포함한다.
다양한 구현예들에서, 또한 통신 모듈(940)은 임의의 수 또는 조합의 통신 표준들(예를 들면, GSM, CDMA, TDNM, WCDMA, OFDM, GPRS, EV-DO, WiFi, WiMAX, S02.xx, UWB, LTE, 위성 등)을 사용하여 음성 및 데이터 신호들을 디바이스들과 교환한다. 본 명세서에 기술된 기법들은 CDMA (Code Division Multiple Access) 네트워크들, TDMA (Time Division Multiple Access) 네트워크들, FDMA (Frequency Division Multiple Access) 네트워크들, OFDMA (Orthogonal FDMA) 네트워크들, SC-FDMA (Single-Carrier FDMA) 네트워크들 등과 같은 다양한 무선 통신 네트워크들(150)에 대해 사용된다. CDMA 네트워크는 UTRA(Universal Terrestrial Radio Access), CDMA2000, 등 과 같은 라디오 기술을 구현한다. UTRA는 W-CDMA(Wideband-CDMA) 및 LCR (Low Chip Rate)을 포함한다. CDMA2000은 IS-2000, IS-95, and IS-856 표준들을 커버한다. TDMA 네트워크는 GSM(Global System for Mobile Communications)과 같은 라디오 기술을 구현한다. OFDMA 네트워크는 E-UTRA (Evolved UTRA), IEEE 802.1 1, IEEE 802.16, IEEE 802.20, Flash-OFDM, 등과 같은 라디오 기술을 구현한다. UTRA, E-UTRA, 및 GSM은 UMTS (Universal Mobile Telecommunication System)의 일부이다. LTE (Long Term Evolution)는 E-UTRA을 사용하는 UMTS의 다가오는 릴리즈이며, UTRA, E-UTRA, GSM, UMTS 및 LTE는 본 명세서에서 "3rd Generation Partnership Project" (3 GPP)라고 명명된 단체로부터 기술되었다. CDMA2000는 본 명세서에서 "3rd Generation Partnership Project 2" (3GPP2)라고 명명된 단체로부터 기술되었다.
비록 예시적 컴퓨팅 시스템(900)이 도 9에서 기술되었지만, 본 발명의 구현예들 및 본 명세서에서 기술된 기능적 동작은 본 명세서에 개시된 구조들 및 그들의 구조적 균등물들을 포함하는 다른 타입들의 디지털 전자 회로에서 또는 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 또는 그것들 중 하나 이상의 조합들에서 구현될 수 있다.
본 발명의 구현예들 및 본 명세서에 기술된 동작들은 본 명세서에 개시된 구조들 및 그들의 구조적 균등물들을 포함하는 디지털 전자 회로에서 또는 비일시적 유형적 매체에 수록된 컴퓨터 소프트웨어, 펌웨어 또는 하드웨어에서 또는 그것들 중 하나 이상의 조합들에서 구현될 수 있다. 본 명세서에서 기술된 본 발명은 하나 이상의 컴퓨터 프로그램들로서 즉, 데이터 프로세싱 장치에 의한 실행을 위한 또는 데이터 프로세싱 장치의 동작을 제어하기 위한 하나 이상의 컴퓨터 저장 매체에 인코딩된 컴퓨터 프로그램 명령들의 하나 이상의 모듈로서 구현될 수 있다. 대안적으로 또는 추가로, 프로그램 명령들은 인공적으로 생성된 전파된 신호(propagated signal) 예를 들면, 데이터 프로세싱 장치에 의한 실행을 위해 적절한 수신장치에 전송하기 위한 정보를 인코딩하기 위해 생성된 기계 생성 전기적, 광학적 또는 전자기적 신호에 인코딩될 수 있다. 컴퓨터 저장 매체는 컴퓨터 판독가능 저장 디바이스, 컴퓨터 판독가능 저장 기판, 랜덤 또는 시리얼 엑세스 메모리 어레이 또는 디바이스 또는 그것들의 하나 이상의 조합이거나 그에 포함될 수 있다. 게다가, 컴퓨터 저장 매체가 전파된 신호가 아니면, 컴퓨터 저장 매체는 인공적으로 생성된 전파된 신호에 인코딩된 컴퓨터 프로그램 명령들의 소스 또는 목적지일 수 있다. 또한 컴퓨터 저장 매체는 하나 이상의 별개의 컴포넌트들 또는 매체들(예를 들면, 다수의 CD들, 디스크들 또는 다른 저장 디바이스들)이거나 그에 포함될 수 있다. 따라서, 컴퓨터 저장 매체는 유형적이고 비일시적이다.
본 명세서에 기술된 동작들은 하나 이상의 컴퓨터 판독가능 저장 디바이스들에 저장된 또는 다른 소스들로부터 수신된 데이터에 따라 데이터 프로세싱 장치에 의해 수행된다.
용어 “데이터 프로세싱 장치” 또는 “컴퓨팅 디바이스” 또는 “프로세싱 모듈”은 데이터를 프로세싱하기 위한 모든 종류의 장치, 디바이스들 및 기계들을 포함하며, 예시로서 프로그래머블 프로세서, 컴퓨터, 칩 상의 시스템, 또는 프로그래밍된 프로세서의 부분, 또는 이것들의 조합들을 포함한다. 장치는 전용 논리 회로, 예를 들면, FPGA 또는 ASIC를 포함한다. 또한 장치는 하드웨어에 더하여, 문제되는 컴퓨터 프로그램을 위한 실행 환경을 생성하는 코드를 포함하며, 코드는 예를 들면, 프로세서 펌웨어, 프로토콜 스택, 데이터베이스 관리 시스템, 운영 체제, 크로스 플랫폼 런타임 환경, 가상 머신 또는 이것들의 하나 이상의 조합이다. 장치 및 실행 환경은 웹 서비스들, 분산 컴퓨팅 및 그리드 컴퓨팅 인프라와 같은 다양한 서로 다른 컴퓨팅 모델 인프라들을 실현한다.
컴퓨터 프로그램(프로그램, 소프트웨어, 소프트웨어 어플리케이션, 스크립트 또는 코드로도 알려짐)은 컴파일되 또는 해석된 언어들, 선언적 또는 절차적 언어들을 포함하는 임의의 형태의 프로그래밍 언어로 작성되며, 독립형 프로그램으로서 또는 모듈, 컴포넌트 서브루틴, 오브젝트 또는 컴퓨팅 환경에서 사용하기 적잘한 기타 유닛으로서를 포함하는 임의의 형태로 설치된다. 컴퓨터 프로그램은 파일 시스템에서 파일에 대응하지만, 필수적인 것은 아니다. 프로그램은 다른 프로그램들 또는 데이터를 보유하는 파일의 부분에(예를 들면, 마크업 언어 문서에 저장된 하나 이상의 스크립트들), 문제되는 프로그램 전용 단일 파일에 또는 다수의 조직화된 파일들에(예를 들면, 하나 이상의 모듈들, 서브 프로그램들 또는 코드의 부분들을 저장하는 파일들) 저장된다. 컴퓨터 프로그램은 하나의 사이트에 위치되거나 또는 다수의 사이트들에 거쳐 분산된 하나의 컴퓨터 또는 다수의 컴퓨터들에서 실행되도록 설치되며 통신 네트워크에 의해 상호연결된다.
컴퓨터 프로그램의 실행에 적절한 프로세서들은 예시로, 범용 및 전용 마이크로프로세서들 둘 다, 임의의 종류의 디지털 컴퓨터의 임의의 하나 이상의 프로세서들을 포함한다. 일반적으로, 프로세서는 명령들 및 데이터를 리드 온리 메모리 또는 랜덤 엑세스 메모리 또는 둘 다로부터 수신한다. 컴퓨터의 기초적 엘리먼트들은 명령들에 따라 액션들을 수행하기 위한 프로세서 및 명령들 및 데이터를 저장하기 위한 하나 이상의 메모리 디바이스들이다. 일반적으로, 또한 컴퓨터는 데이터를 저장하기 위한 하나 이상의 대용량 저장 디바이스들 예를 들면, 자기적, 자기 광학 디스크들 또는 광학 디스크들을 포함하거나, 또는 그로부터 데이터를 수신하거나 또는 그에 데이터를 전송하기 위해, 또는 둘 다를 위해 동작할 수 있게 연결된다. 그러나, 컴퓨터는 상기 디바이스들을 가질 필요는 없다. 게다가, 컴퓨터는 다른 디바이스 몇 가지만 예를 들면, 모바일 전화기, PDA, 모바일 오디오 또는 비디오 플레이어, 게임 콘솔, GPS 수신기 또는 이동식 저장 디바이스(예를 들면, USB 플래시 드라이브)에 내장될 수 있다. 컴퓨터 프로그램 명령들 및 데이터를 저장하기에 적절한 디바이스들은 예시로서 반도체 메모리 디바이스들 예를 들면, EPROM, EEPROM, 및 플래시 메모리 디바이스들, 자기 디스크들 예를 들면, 내장형 하드 디스크들 또는 이동식 디스크들, 자기 광학 디스크들 및 CDROM 및 DVD디스크들을 포함하는 모든 형태들의 비 휘발성 메모리, 매체 및 메모리 디바이스들을 포함한다. 프로세서 및 메모리는 전용 논리 회로에 의해 보충되거나 또는 그에 통합된다.
사용자와의 인터렉션을 제공하기 위해, 본 명세서에 기술된 본 발명의 구현예들은 사용자에게 정보를 디스플레이하기 위한 디스플레이 디바이스 예를 들면 CRT 또는 LCD 모니터, 및 키보드 및 포인팅 디바이스 예를 들면, 마우스 또는 트랙볼을 가지는 컴퓨터에서 구현되며, 그에 의해 사용자는 컴퓨터에 입력을 제공한다. 다른 종류의 디바이스들 또한 사용자와의 인터렉션을 제공하기 위해 사용될 수 있다. 예를 들면, 사용자에게 제공되는 피드백은 임의의 형태의 감각적 피드백 예를 들면, 시각적 피드백, 청각적 피드백 또는 촉각적 피드백일 수 있고, 사용자로부터의 입력은 음향적, 음성적 또는 촉각적 입력을 포함하는 임의의 형태로 수신될 수 있다.
본 명세서가 많은 구체적 구현예의 세부사항들을 포함하지만, 이들이 청구된 발명의 범위에 제한으로서 이해되어서는 아니되며, 오히려 특정 실시예들에 대한 구체적인 구성들의 기술들로서 이해되어야 한다. 또한 별개의 실시예들의 맥락에서 본 명세서에 기술된 어떤 구성들은 단일의 구현예에서 조합으로도 구현될 수 있다. 반대로, 또한 단일의 구현예의 맥락에서 기술된 다양한 구성들은 다수의 실시예들에서 별개로 또는 임의의 적절한 하위조합으로 구현될 수 있다. 게다가, 비록 구성들이 특정 조합들 및 심지어 초기적으로 청구된 것에서 동작하는 것으로 앞서 기술되었지만, 청구된 조합으로부터의 하나 이상의 구성들은 일부 경우들에서 조합으로부터 삭제될 수 있고, 청구된 조합은 하위조합 또는 하위조합의 변형을 가리킬 수 있다.
유사하게, 동작들이 도면들에서 특정 순서로 도시되었지만, 이는 상기 동작들이 원하는 결과를 달성하기 위해 도시된 특정 순서로 또는 순차적 순서로 수행되어야 한다거나 또는 모든 도시된 동작들이 수행되어야 함을 요구하는 것으로 이해되어서는 아니된다. 일부 환경들에서, 멀티태스킹 및 병렬 프로세싱은 이점이 있다. 게다가, 상기 기술된 실시예들에서 다양한 시스템 컴포넌트들의 분리는모든 실시예들에서 분리를 요구하는 것으로 이해되어서는 아니되며, 기술된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일의 소프트웨어 제품에 통합되거나 또는 유형적 매체에 수록된 다수의 소프트웨어 제품들에 패키징될 수 있다는 것을 이해해야 한다.
“또는”과 관련하여 “또는”을 사용하는 임의의 용어들은 단일의, 하나 이상의, 모든 기술된 용어들 중 임의의 것을 표시하도록 포괄적으로 이해되어야 한다.
이렇게, 본 발명의 특정 실시예들이 기술되었다. 다른 실시예들은 후술하는 청구항들의 범위 내에 있다. 일부 경우들에서, 청구항들에 기재된 액션들은 다른 순서로 수행될 수 있고, 여전히 원하는 결과들을 달성한다. 추가로, 첨부 도면들에 도시된 프로세스들은 원하는 결과들을 달성하기 위해 도시된 특정 순서 또는 순차적 순서를 필수적으로 요구하지 않는다. 일부 실시예들에서, 멀티태스킹 및 병렬 프로세싱은 이점이 있다.
청구항들은 그 효과에 대한 언급이 없는 한 기술된 순서 또는 엘리먼트들에 대한 제한으로서 읽혀져서는 아니된다. 형태 및 세부사항에서 다양한 변화들이 첨부된 청구항들의 정신과 범위로부터 벗어남 없이 통상의 기술자에 의해 가해질 수 있다는 것을 이해해야 한다. 후술하는 청구항들 및 그에 대한 균등물들의 정신과 범위 내에 있는 모든 실시예들이 청구된다.

Claims (40)

  1. 클라이언트 디바이스의 실제 위치를 불명료하게(obscuring) 하기 위한 방법으로서,
    클라이언트 디바이스의 프로세싱 모듈을 사용하여, 제1 랜덤 2차원적 오프셋(first random two dimensional offset)을 생성하는 단계;
    상기 클라이언트 디바이스의 프로세싱 모듈을 사용하여, 제2 랜덤 2차원적 오프셋을 생성하는 단계;
    상기 클라이언트 디바이스의 프로세싱 모듈에서, 상기 클라이언트 디바이스의 위치를 수신하는 단계;
    상기 클라이언트 디바이스의 프로세싱 모듈을 사용하여, 상기 수신된 위치, 상기 제1 랜덤 2차원적 오프셋 및 상기 제2 랜덤 2차원적 오프셋에 기초하여 상기 클라이언트 디바이스에 대한 의사-위치(pseudo-location)를 결정하는 단계; 및
    위치 기반 서비스를 위해 상기 결정된 의사-위치를 전송하는 단계를 포함하는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 방법.
  2. 제1항에 있어서,
    상기 제1 랜덤 2차원적 오프셋은 제1의 랜덤하게 생성된 값 및 제2의 랜덤하게 생성된 값을 가지는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 방법.
  3. 제1항에 있어서,
    상기 제1 랜덤 2차원적 오프셋은 주기적 단위(periodic basis)로 생성되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 방법.
  4. 제3항에 있어서,
    상기 제2 랜덤 2차원적 오프셋은 위치 기반 서비스를 위해 서드 파티(third-party)에 보내질 각 요청에 대해 생성되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 방법.
  5. 제1항에 있어서,
    상기 위치 기반 서비스는 서드 파티 컨텐츠 아이템(third-party content item)과 관련되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 방법.
  6. 제1항에 있어서,
    상기 위치 기반 서비스는 검색(search)과 관련되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 방법.
  7. 제1항에 있어서,
    상기 위치 기반 서비스는 소셜 미디어 어플리케이션(social media application)과 관련되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 방법.
  8. 클라이언트 디바이스의 실제 위치를 불명료하게(obscuring) 하기 위한 시스템으로서,
    프로세싱 모듈; 및
    상기 프로세싱 모듈에 의해 실행될 때, 상기 프로세싱 모듈로 하여금 동작들을 수행하게 하는 명령들을 저장하는 저장 디바이스를 포함하며, 상기 동작들은
    클라이언트 디바이스의 위치를 수신하는 동작;
    제1 랜덤 2차원적 오프셋 벡터(first random two dimensional offset vector)를 생성하는 동작;
    제2 랜덤 2차원적 오프셋 벡터를 생성하는 동작;
    상기 수신된 위치, 상기 제1 랜덤 2차원적 오프셋 벡터 및 상기 제2 랜덤 2차원적 오프셋 벡터에 기초하여 의사-위치(pseudo-location)를 결정하는 동작; 및
    상기 결정된 의사-위치를 위치 기반 서비스를 위해 서드 파티에 전송하는 동작을 포함하는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  9. 제8항에 있어서,
    상기 제1 랜덤 2차원적 오프셋 벡터는 주기적 단위(periodic basis)로 생성되며, 상기 제2 랜덤 2차원적 오프셋 벡터는 위치 기반 서비스를 위해 서드 파티(third-party)에 보내질 각 요청에 대해 생성되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  10. 제9항에 있어서,
    상기 제1 랜덤 2차원적 오프셋 벡터와 상기 제2 랜덤 2차원적 오프셋 벡터 각각의 값은 랜덤으로 생성되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  11. 제8항에 있어서,
    상기 제1 랜덤 2차원적 오프셋 벡터는 랜덤으로 생성되는 반경(radius) 및 랜덤으로 생성되는 각도(angle)에 기초하는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  12. 제8항에 있어서, 상기 명령들은 상기 프로세싱 모듈로 하여금 동작들을 수행하게 하며, 상기 동작들은
    상기 제1 랜덤 2차원적 오프셋 벡터를 미리 결정된 기간의 시간 동안 저장하는 동작을 더 포함하는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  13. 제8항에 있어서,
    상기 제1 랜덤 2차원적 오프셋 벡터의 놈(norm)은 0 (0을 포함)과 0보다 큰 제2 값 사이의 값을 나타내는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  14. 제8항에 있어서,
    상기 위치 기반 서비스는 서드 파티 컨텐츠 아이템과 관련되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  15. 제8항에 있어서,
    상기 위치 기반 서비스는 검색과 관련되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  16. 클라이언트 디바이스의 실제 위치를 불명료하게(obscuring) 하기 위한 시스템으로서,
    프로세싱 모듈; 및
    상기 프로세싱 모듈에 의해 실행될 때, 상기 프로세싱 모듈로 하여금 동작들을 수행하게 하는 명령들을 저장하는 저장 디바이스를 포함하며, 상기 동작들은
    영역들의 세트(set of regions)를 수신하는 동작;
    클라이언트 디바이스의 위치를 수신하는 동작;
    제1 랜덤 오프셋을 생성하는 동작;
    상기 수신된 위치 및 상기 제1 랜덤 오프셋에 기초하여 중간 위치(intermediate location)를 결정하는 동작;
    상기 중간 위치에 기초하여 영역들의 세트 내에서 영역을 결정하는 동작, 상기 영역들의 세트 내에서 영역의 결정은 상기 중간 위치가 상기 결정된 영역 내에 있다는 결정을 포함하며; 및
    의사 위치(pseudo-location)를 상기 결정된 영역에 기초하여 위치 기반 서비스를 위해 서드 파티에 전송하는 동작을 포함하는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  17. 제16항에 있어서,
    상기 각 영역(region)은 경도(longitude)의 100분의 1도와 위도(latitude)의 100분의 1도로 정의된 지역(area)을 가지는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  18. 제16항에 있어서,
    상기 의사 위치는 상기 결정된 영역의 중심(center)에 대응하는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  19. 제16항에 있어서,
    상기 의사 위치는 상기 결정된 영역의 고정된 포인트(fixed point)에 대응하는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  20. 제16항에 있어서,
    상기 위치 기반 서비스는 서드 파티 컨텐츠 아이템과 관련되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  21. 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 방법에 있어서,
    하나 이상의 데이터 프로세서들에 의해, 클라이언트 디바이스로부터 전송된 중간 의사-위치(intermediate pseudo-location)를 수신하는 단계, 상기 중간 의사-위치는 상기 클라이언트 디바이스의 실제 위치 및 랜덤하게 생성된 제1 오프셋(first randomly generated offset)에 기초하여 생성되며;
    상기 하나 이상의 데이터 프로세서들을 사용하여, 랜덤하게 생성된 제2 오프셋(second randomly generated offset)을 생성하는 단계;
    상기 하나 이상의 데이터 프로세서들을 사용하여, 상기 중간 의사-위치 및 상기 랜덤하게 생성된 제2 오프셋에 기초하여 의사-위치를 생성하는 단계; 및
    상기 생성된 의사-위치를 상기 클라이언트 디바이스 또는 위치 기반 서비스 중 하나에 전송하는 단계를 포함하는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 방법.
  22. 제21항에 있어서,
    상기 랜덤하게 생성된 제2 오프셋은 상기 클라이언트 디바이스에 대한 수신된 중간 의사-위치 각각에 대해 생성되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 방법.
  23. 제22항에 있어서,
    상기 랜덤하게 생성된 제2 오프셋은 2차원적 오프셋 벡터(two dimensional offset vector)를 포함하는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 방법.
  24. 제23항에 있어서,
    상기 랜덤하게 생성된 제2 오프셋은 반경에 대응하는 랜덤하게 생성된 제1 값 및 각도에 대응하는 랜덤하게 생성된 제2값을 포함하는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 방법.
  25. 제23항에 있어서,
    상기 2차원적 오프셋 벡터의 각각의 랜덤하게 생성된 값의 절대값을 미리 결정된 값과 비교하는 단계를 더 포함하는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 방법.
  26. 제21항에 있어서,
    상기 랜덤하게 생성된 제1 오프셋은 상기 클라이언트 디바이스에 대해 주기적 단위(periodic basis)로 생성되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 방법.
  27. 제21항에 있어서,
    상기 클라이언트 디바이스의 상기 실제 위치는 GPS 모듈, WiFi 엑세스 포인트 또는 셀룰러 삼각측량(cellular triangulation) 중 하나 이상에 의해 결정되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 방법.
  28. 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템에 있어서,
    프로세싱 모듈; 및
    명령들을 저장하는 저장 디바이스를 포함하며, 상기 명령들은 상기 프로세싱 모듈에 의해 실행될 때, 상기 프로세싱 모듈로 하여금 동작들을 수행하게 하며, 상기 동작들은:
    랜덤하게 생성되는 제1 오프셋(first randomly generated offset)을 생성하는 동작;
    상기 클라이언트 디바이스의 실제 위치 및 랜덤하게 생성된 제1 오프셋(first randomly generated offset)에 기초하여 중간 의사-위치(intermediate pseudo-location)를 생성하는 동작;
    상기 생성된 중간 의사-위치를 서버에 전송하는 동작; 및
    상기 서버로부터, 상기 중간 의사-위치 및 랜덤하게 생성된 제2 오프셋에 기초하여 생성된 의사-위치를 수신하는 동작을 포함하는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  29. 제28항에 있어서,
    상기 랜덤하게 생성된 제1 오프셋은 클라이언트 디바이스에 대해 주기적 단위로 생성되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  30. 제29항에 있어서,
    상기 랜덤하게 생성된 제2 오프셋은 상기 서버에게로의 생성된 중간 의사-위치의 전송 각각에 대해 생성되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  31. 제28항에 있어서,
    상기 랜덤하게 생성된 제1 오프셋은 상기 서버에게로의 생성된 중간 의사-위치의 전송 각각에 대해 생성되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  32. 제31항에 있어서,
    상기 랜덤하게 생성된 제2 오프셋은 상기 클라이언트 디바이스에 대해 주기적 단위로 생성되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  33. 제28항에 있어서,
    상기 중간 의사-위치는 경도와 위도 좌표들의 2차원적 벡터를 포함하는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  34. 제28항에 있어서,
    상기 중간 의사-위치는 데이터의 인코딩된 문자열(string)을 포함하는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  35. 제28항에 있어서,
    상기 명령들은 상기 프로세싱 모듈로 하여금 동작들을 더 수행하게 하며, 상기 동작들은:
    위치 기반 서비스로부터 위치에 대한 요청을 수신하는 동작; 및
    상기 수신된 요청에 응답하여 상기 수신된 생성된 의사-위치를 상기 위치 기반 서비스에 전송하는 단계를 포함하는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  36. 제35항에 있어서,
    상기 수신된 생성된 의사-위치를 전송하는 동작은 상기 생성된 의사-위치를 가진 컨텐츠 아이템 요청을 포함하는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  37. 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템에 있어서,
    프로세싱 모듈; 및
    명령들을 저장하는 저장 디바이스를 포함하며, 상기 명령들은 상기 프로세싱 모듈에 의해 실행될 때, 상기 프로세싱 모듈로 하여금 동작들을 수행하게 하며, 상기 동작들은:
    클라이언트 디바이스로부터 전송된 중간 의사-위치를 수신하는 동작, 상기 중간 의사-위치는 상기 클라이언트 디바이스의 실제 위치 및 상기 클라이언트 디바이스에 대해 주기적 단위로 생성된 랜덤하게 생성된 제1 오프셋에 기초하여 생성되며;
    상기 중간 의사-위치를 수신하는 것에 응답하여 랜덤하게 생성되는 제2 오프셋을 생성하는 동작;
    상기 중간 의사-위치 및 상기 랜덤하게 생성된 제2 오프셋에 기초하여 의사-위치를 생성하는 동작; 및
    상기 생성된 의사-위치를 상기 클라이언트 디바이스 또는 위치 기반 서비스 중 하나에 전송하는 동작을 포함하는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  38. 제37항에 있어서,
    상기 클라이언트 디바이스의 상기 실제 위치는 GPS 데이터에 기초하여 결정되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  39. 제37항에 있어서,
    상기 클라이언트 디바이스의 상기 실제 위치는 WiFi 엑세스 포인트로부터의 데이터에 기초하여 결정되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
  40. 제37항에 있어서,
    상기 클라이언트 디바이스의 상기 실제 위치는 하나 이상의 셀룰러 타워들(cellular towers)로부터의 신호 세기에 기초하여 결정되는 것을 특징으로 하는 클라이언트 디바이스의 실제 위치를 불명료하게 하기 위한 시스템.
KR1020167002858A 2013-07-02 2014-07-01 위치 기반 서비스에 대해 실제 위치 불명료하게 하기 KR101654246B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/933,971 US8909250B1 (en) 2013-07-02 2013-07-02 Obscuring true location for location-based services
US13/933,971 2013-07-02
PCT/US2014/045113 WO2015002987A1 (en) 2013-07-02 2014-07-01 Obscuring true location for location-based services

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020167023732A Division KR102007941B1 (ko) 2013-07-02 2014-07-01 위치 기반 서비스에 대해 실제 위치 불명료하게 하기

Publications (2)

Publication Number Publication Date
KR20160018864A KR20160018864A (ko) 2016-02-17
KR101654246B1 true KR101654246B1 (ko) 2016-09-05

Family

ID=52001751

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020167023732A KR102007941B1 (ko) 2013-07-02 2014-07-01 위치 기반 서비스에 대해 실제 위치 불명료하게 하기
KR1020167002858A KR101654246B1 (ko) 2013-07-02 2014-07-01 위치 기반 서비스에 대해 실제 위치 불명료하게 하기

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020167023732A KR102007941B1 (ko) 2013-07-02 2014-07-01 위치 기반 서비스에 대해 실제 위치 불명료하게 하기

Country Status (6)

Country Link
US (3) US8909250B1 (ko)
EP (1) EP3017638B1 (ko)
JP (2) JP2016535327A (ko)
KR (2) KR102007941B1 (ko)
CN (1) CN105359601B (ko)
WO (1) WO2015002987A1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9565578B2 (en) * 2014-06-18 2017-02-07 Google Inc. Method for collecting and aggregating network quality data
US10021618B2 (en) 2015-04-30 2018-07-10 Google Technology Holdings LLC Apparatus and method for cloud assisted wireless mobility
US10257782B2 (en) 2015-07-30 2019-04-09 Google Llc Power management by powering off unnecessary radios automatically
CN109214404A (zh) * 2017-07-07 2019-01-15 阿里巴巴集团控股有限公司 基于隐私保护的训练样本生成方法和装置
JP2019071002A (ja) * 2017-10-11 2019-05-09 株式会社Nttドコモ ユーザ特性推定装置及びユーザ特性推定方法
JP7003822B2 (ja) * 2018-04-12 2022-01-21 富士通株式会社 情報処理装置、情報処理システム、及びプライバシ保護プログラム
US10274326B1 (en) * 2018-08-02 2019-04-30 Mapanything, Inc. Utilizing a geo-locator service and zone servers to reduce computer resource requirements for determining high quality solutions to routing problems
CN110267263A (zh) * 2019-05-10 2019-09-20 郑州信大先进技术研究院 基于位置信息加扰的用户隐私保护方法
JP6898679B1 (ja) * 2020-06-08 2021-07-07 株式会社バリューサーチ 人の行動制限によるポイント付加システム
US11337177B2 (en) 2020-09-23 2022-05-17 Glowstik, Inc. System and method for generating amorphous dynamic display icons
FR3127169B1 (fr) * 2021-09-21 2023-08-11 Psa Automobiles Sa Procédé et dispositif de sélection d’une borne de recharge pour un véhicule à motorisation électrique

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7139820B1 (en) 2002-02-26 2006-11-21 Cisco Technology, Inc. Methods and apparatus for obtaining location information in relation to a target device
US20070264974A1 (en) 2006-05-12 2007-11-15 Bellsouth Intellectual Property Corporation Privacy Control of Location Information
US7477905B2 (en) 2003-03-04 2009-01-13 Useful Networks Canada, Ulc Pseudoposition generator

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2360671B (en) * 2000-03-25 2003-09-03 Hewlett Packard Co Providing location data about a mobile entity
US20050250516A1 (en) * 2004-04-14 2005-11-10 Lg Electronics Inc. Location information system reflecting user preferences and service providing method thereof
US9251521B2 (en) * 2006-05-12 2016-02-02 At&T Intellectual Property I, L.P. Location-based alerting
US8571580B2 (en) 2006-06-01 2013-10-29 Loopt Llc. Displaying the location of individuals on an interactive map display on a mobile communication device
EP2145205B1 (en) * 2007-05-01 2019-09-18 QUALCOMM Incorporated Position location for wireless communication systems
US8547903B2 (en) * 2008-03-04 2013-10-01 Lg Electronics Inc. Ranging structure, multiplexing method and signaling method for legacy support mode
JP5257871B2 (ja) * 2008-06-06 2013-08-07 学校法人日本大学 位置情報管理システム
KR101630890B1 (ko) * 2008-09-10 2016-06-15 콤랩스. 인크. 광역 위치 결정 시스템
US8040219B2 (en) * 2008-11-06 2011-10-18 Sony Ericsson Mobile Communications Ab System and method for in-building location determination
CN101742637A (zh) * 2008-11-25 2010-06-16 蔡馥芳 用于提供基于位置的服务的方法
EP2382841B1 (en) * 2009-01-06 2019-07-10 Parallel Limited Base station subsystem multiplexer with support for local switching
US8305264B1 (en) * 2010-02-03 2012-11-06 Sprint Spectrum L.P. GPS enhancement for wireless devices
JP2011197801A (ja) * 2010-03-17 2011-10-06 Sony Corp 情報処理装置、情報処理方法、プログラム、サーバ装置、及び情報処理システム
US20110312320A1 (en) * 2010-06-16 2011-12-22 Qualcomm Incorporated Satellite-assisted positioning in hybrid terrestrial-satellite communication systems
US9116221B2 (en) 2010-08-26 2015-08-25 Apple Inc. Variable precision location sharing
US8723888B2 (en) * 2010-10-29 2014-05-13 Core Wireless Licensing, S.a.r.l. Method and apparatus for determining location offset information
US9144054B2 (en) * 2010-12-03 2015-09-22 Qualcomm Incorporated Distributed A-GNSS positioning of static devices
CN103210320B (zh) 2010-12-21 2016-01-13 英派尔科技开发有限公司 用于基于位置的服务中的位置隐私的虚拟信息
US8429086B2 (en) 2011-01-20 2013-04-23 Csr Technology Inc. System for location based transaction security
EP2673999B1 (en) * 2011-02-09 2014-11-26 Andrew LLC Method for improving the location determination using proximity information
WO2013075274A1 (en) * 2011-11-21 2013-05-30 Telefonaktiebolaget L M Ericsson (Publ) Method and apparatus for relative timing measurements
US8213617B1 (en) * 2011-11-22 2012-07-03 Google Inc. Finding nearby users without revealing own location
US9037408B2 (en) * 2012-06-28 2015-05-19 Intel Corporation Systems and methods for providing variable position precision

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7139820B1 (en) 2002-02-26 2006-11-21 Cisco Technology, Inc. Methods and apparatus for obtaining location information in relation to a target device
US7477905B2 (en) 2003-03-04 2009-01-13 Useful Networks Canada, Ulc Pseudoposition generator
US20070264974A1 (en) 2006-05-12 2007-11-15 Bellsouth Intellectual Property Corporation Privacy Control of Location Information

Also Published As

Publication number Publication date
CN105359601A (zh) 2016-02-24
US9161165B2 (en) 2015-10-13
KR102007941B1 (ko) 2019-08-06
EP3017638A4 (en) 2017-01-18
JP2016535327A (ja) 2016-11-10
US20150087335A1 (en) 2015-03-26
US20160029172A1 (en) 2016-01-28
JP2017142841A (ja) 2017-08-17
US8909250B1 (en) 2014-12-09
EP3017638A1 (en) 2016-05-11
WO2015002987A1 (en) 2015-01-08
CN105359601B (zh) 2019-06-18
US9473894B2 (en) 2016-10-18
EP3017638B1 (en) 2018-12-05
JP6441985B2 (ja) 2018-12-19
KR20160105933A (ko) 2016-09-07
KR20160018864A (ko) 2016-02-17

Similar Documents

Publication Publication Date Title
KR101654246B1 (ko) 위치 기반 서비스에 대해 실제 위치 불명료하게 하기
US20240104156A1 (en) Systems and Methods for Selecting Content Based on Linked Devices
Dinh et al. A survey of mobile cloud computing: architecture, applications, and approaches
JP5925338B2 (ja) 無線ネットワークアクセスポイントの発見
US20120295639A1 (en) Discovering nearby places based on automatic query
JP2015079501A (ja) 位置に基づくコンテンツへのアクセス
Ahmed A privacy‐preserving mobile location‐based advertising system for small businesses
Shekhar et al. From GPS and virtual globes to spatial computing-2020
CN104111981A (zh) 一种用于提供发布信息的方法与设备
Narain et al. Mitigating location privacy attacks on mobile devices using dynamic app sandboxing
EP3092785B1 (en) Systems and methods for contextual caller identification
KR20160066661A (ko) 위치 기반 서비스에서 익명성을 확보하는 방법 및 시스템
Cheng et al. A user sensitive privacy-preserving location sharing system in mobile social networks
JP2022068159A (ja) 集約されたコンバージョンの測定
US20170223119A1 (en) Geospatial aware queueing
Kini et al. Real time implementation of k fake location generation algorithm to protect location privacy in location based services
Atencio et al. How to locate where a device is using a web application
Miura et al. A hybrid method for user location anonymisation based on road mobility model
Gu et al. An Efficient Privacy-Preserving Scheme for Traffic Monitoring Services in Vehicular Networks
Tao et al. Egobile: where social networks go mobile
Patil et al. K-Anonymity: A Big Player in Location Privacy for Mobile Query Processing
Pramkaew et al. GPShare: Grid Position Sharing in Non-trusted Environment
Dunne et al. A frequency based sighting blurring algorithm for use with location based services on the internet
El Sheimy Location-Based Services and Geo-Information Engineering.
KR20120087324A (ko) 부동산 정보 제공 방법 및 시스템

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
GRNT Written decision to grant