CN112106337B - 具有隐私方面的联系人发现服务 - Google Patents

具有隐私方面的联系人发现服务 Download PDF

Info

Publication number
CN112106337B
CN112106337B CN201980030978.3A CN201980030978A CN112106337B CN 112106337 B CN112106337 B CN 112106337B CN 201980030978 A CN201980030978 A CN 201980030978A CN 112106337 B CN112106337 B CN 112106337B
Authority
CN
China
Prior art keywords
contact
service
client device
hash value
payload
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
CN201980030978.3A
Other languages
English (en)
Other versions
CN112106337A (zh
Inventor
T·阿尔西娜
J·A·蒂森
D·K·海勒
J·M·考斯泰罗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
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 Apple Inc filed Critical Apple Inc
Publication of CN112106337A publication Critical patent/CN112106337A/zh
Application granted granted Critical
Publication of CN112106337B publication Critical patent/CN112106337B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • 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/51Discovery or management thereof, e.g. service location protocol [SLP] or web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
    • H04L9/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0866Generation of secret information including derivation or calculation of cryptographic keys or passwords involving user or device identifiers, e.g. serial number, physical or biometrical information, DNA, hand-signature or measurable physical characteristics
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3239Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3236Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
    • H04L9/3242Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3263Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
    • H04L9/3268Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements using certificate validation, registration, distribution or revocation, e.g. certificate revocation list [CRL]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/42Anonymization, e.g. involving pseudonyms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L61/00Network arrangements, protocols or services for addressing or naming
    • H04L61/45Network directories; Name-to-address mapping
    • H04L61/4594Address books, i.e. directories containing contact information about correspondents
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Power Engineering (AREA)
  • Medical Informatics (AREA)
  • Business, Economics & Management (AREA)
  • Data Mining & Analysis (AREA)
  • Human Resources & Organizations (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Primary Health Care (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • General Business, Economics & Management (AREA)
  • Telephonic Communication Services (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请涉及客户端‑服务器架构,该客户端‑服务器架构使向服务注册的用户账户能够被服务的其他用户发现。发现协议包括访问存储在客户端设备的通讯录中的个人信息数据、使个人信息数据混淆、向服务传输请求以确定所混淆的个人信息数据是否匹配已向该服务注册为可发现的任何潜在联系人,以及将与潜在联系人相关的信息与包括在通讯录中的联系人进行比较,以确定该通讯录中的联系人是否匹配潜在联系人中的任一个潜在联系人。

Description

具有隐私方面的联系人发现服务
技术领域
所述实施方案整体涉及私人信息数据的处理。更具体地讲,本实施方案涉及使用从客户端设备上的通讯录读取的私人信息数据来发现与客户端应用程序的用户相关联的联系人,同时保持通讯录中的私人信息数据的机密性。
背景技术
移动设备诸如蜂窝电话和平板电脑通常存储通讯录,该通讯录包括移动设备的用户已知的各种联系人的信息。通讯录通常存储联系人的名称以及该联系人的电话号码或电子邮件地址中的至少一者。与联系人相关的附加信息诸如住宅地址或图像也可存储在通讯录中。
许多应用程序想要利用该个人信息数据来实现应用程序的社交方面。例如,游戏应用程序可从通讯录读取电子邮件地址,以基于将通讯录中的电子邮件地址与向用户账户注册的电子邮件地址匹配来确定附加用户账户是否可能与特定用户相关。
值得注意的是,这些应用程序通常被设计为请求访问通讯录,使得应用程序可利用通讯录中包含的信息。然而,一旦已授予访问权限,对应用程序可如何使用该个人信息数据通常几乎没有限制。许多用户对允许此类不受限制地访问他们在通讯录中的信息感到不适。因此,此类用户可替代地选择完全拒绝应用程序访问通讯录中的信息,这阻碍了应用程序提供所述社交方面作为应用程序的总体用户体验的一部分的能力。
发明内容
本文描述了涉及客户端-服务器架构的各种实施方案,该客户端-服务器架构使向服务注册的用户账户能够被该服务的其他用户发现。发现协议包括访问存储在客户端设备的通讯录中的个人信息数据、使个人信息数据混淆、向服务传输请求以确定所混淆的个人信息数据是否匹配已向该服务注册为可发现的任何潜在联系人,以及将与潜在联系人相关的信息与包括在通讯录中的联系人进行比较,以确定该通讯录中的联系人是否匹配潜在联系人中的任一个潜在联系人。
在一些实施方案中,客户端设备被配置为访问与存储在客户端设备的通讯录中的一个或多个联系人相关的个人信息数据。客户端设备被配置为生成与针对该一个或多个联系人中联系人的个人信息数据项相对应的标识符,并且生成针对该联系人的个人信息数据项的散列值。客户端设备被配置为将包括标识符和散列值的截短部分的请求传输到服务。客户端设备接收对请求的至少一个响应,每个响应包括标识符和已利用与潜在联系人相关联的散列值作为加密密钥进行加密的有效载荷。客户端设备被配置为利用针对联系人的个人信息数据项的散列值作为解密密钥来尝试解密有效载荷。
在一些实施方案中,服务被配置为将散列值的截短部分与存储在数据库中的零个或多个潜在联系人匹配,该零个或多个潜在联系人向服务注册为可发现的并且与该散列值的截短部分相关联。当有效载荷的解密版本包括与潜在联系人的用户账户相关联的已识别格式的信息时,该潜在联系人匹配通讯录中的联系人。当有效载荷的解密版本不处于已识别格式时,潜在联系人不匹配通讯录中的联系人。在此类情况下,可由客户端设备丢弃包括有效载荷的响应。
在一些实施方案中,个人信息数据项包括电话号码或电子邮件地址。可在生成对应散列值之前归一化PID项。散列值被编码为M位。在一些实施方案中,散列值是利用SHA-256安全散列算法生成的256位值。在一些实施方案中,基于向服务注册的潜在联系人的总数动态地调整包括在散列值的截短部分中的位数。
在一些实施方案中,服务维护分布式数据库,该分布式数据库包括将密钥与向服务注册的零个或多个潜在联系人相关联的密钥值对。在一些实施方案中,密钥对应于与该零个或多个潜在联系人相关联的散列值的N个最高有效位。在一些实施方案中,针对每个潜在联系人预定义加密的有效载荷并将该加密的有效载荷存储在分布式数据库中。在一些实施方案中,包括在加密的有效载荷中的信息包括以下中的至少一者:潜在联系人的名称;针对与潜在联系人相关联的用户账户的标识符;潜在联系人的缩略图;用于潜在联系人的图像的位置的通用资源定位符(URL);或者用于潜在联系人的配置文件的位置的URL。
在一些实施方案中,使用与服务或客户端设备中的至少一者相关联的证书来对请求进行签名。还可使用与服务或客户端设备中的至少一者相关联的证书来对响应进行签名。
在一些实施方案中,发现协议由包括在客户端设备中的客户端应用程序来实现。客户端应用程序可以是音乐共享应用程序,并且服务被配置为经由网络向客户端设备提供音乐内容。在一些实施方案中,客户端应用程序被配置为显示与包括在有效载荷中的潜在联系人相关的信息。
提供本发明内容仅用于概述一些示例性实施方案的目的,以便提供对本文所述主题的一些方面的基本理解。因此,应当理解,上述特征仅为示例,并且不应解释为以任何方式缩窄本发明所描述的主题的范围或实质。本文所描述的主题的其它特征、方面和优点将通过以下具体实施方式、附图和权利要求书而变得显而易见。
附图说明
本公开通过下面结合附图的具体描述将更易于理解,其中类似的附图标记表示类似的结构元件。
图1示出了根据一些实施方案的客户端-服务器架构。
图2是根据一些实施方案的发现协议的概念图。
图3示出了根据一些实施方案的被配置为维护已选择加入能够被其他用户发现的用户账户的分布式数据库的服务器节点的集群。
图4示出了根据一些实施方案的用于处理从通讯录收集的个人信息数据的流程。
图5示出了根据一些实施方案的用于生成发现联系人的用户账户是否向服务注册为可发现的请求的流程。
图6是根据一些实施方案的用于实现发现协议的方法的流程图。
图7示出了根据一些实施方案的用于将用户账户向服务注册为可发现的协议。
图8是根据一些实施方案的用于将用户账户注册为可发现的方法的流程图。
图9是根据一些实施方案的用于实现发现协议的方法的流程图。
图10示出了根据一些实施方案的可被用于实现本文所述的各种装置和/或方法的示例性计算设备的详细视图。
具体实施方式
在该部分中描述了根据本申请的方法与装置的代表性具体实施。提供这些示例仅为了添加上下文并有助于理解所描述的实施方案。因此,对于本领域的技术人员而言将显而易见的是,可在没有这些具体细节中的一些或全部的情况下实践所述实施方案。在其他情况下,为了避免不必要地模糊所述实施方案,未详细描述熟知的处理步骤。其他应用是可能的,使得以下示例不应被当作是限制性的。
在以下具体实施方式中,参考了形成说明书的一部分的附图,并且在附图中以例示的方式示出了根据所述实施方案的具体实施方案。虽然这些实施方案被描述得足够详细,以使本领域的技术人员能够实践所述实施方案,但是应当理解,这些示例不是限制性的;使得可以使用其他实施方案,并且可以在不脱离所述实施方案的实质和范围的情况下作出修改。
下文更详细地描述了一种用于发现客户端设备的通讯录中的任何联系人是否与已向服务注册为可发现的用户账户相关联的技术。本文所述的技术混淆了包括在通讯录中的个人信息数据,使得个人信息数据保持机密并且不在客户端设备之外共享。然而,联系人发现服务可以向客户端设备提供与所混淆信息匹配的多个潜在联系人,使得客户端设备可以确定这些潜在联系人中的任何联系人是否与通讯录内本地存储在客户端设备上的任何联系人匹配。
在一些实施方案中,发现协议由客户端应用程序和联系人发现服务来实现。联系人发现服务维护数据库,该数据库包括与已经向服务注册为能够被其他用户发现的多个用户账户相关的信息。客户端应用程序解析针对通讯录中一个或多个联系人的数据以识别个人信息数据,诸如针对该一个或多个联系人的电话号码或电子邮件地址。然后可将个人信息数据与数据库中针对潜在联系人的对应个人信息数据进行比较。
发现协议通过散列个人信息数据来保持个人信息数据的机密性。此外,仅在客户端设备和联系人发现服务之间共享散列值的一部分。发送到联系人发现服务的散列值的截短部分可在联系人发现服务处匹配多个潜在联系人。一旦针对潜在联系人的信息以一个或多个响应返回到客户端设备,该客户端设备就可将该客户端设备已知的全散列值与从联系人发现服务接收的多个响应进行快速比较,以便确定哪些响应可能是相关的。
在一些实施方案中,联系人发现服务利用与数据库中潜在联系人相关的个人信息数据的散列值作为加密密钥来对响应中的有效载荷进行加密。客户端设备然后通过利用针对通讯录中联系人的个人信息数据的完全散列值作为解密密钥来尝试解密有效载荷,从而确定通讯录中的联系人是否匹配潜在联系人。只有在针对客户端设备的通讯录中联系人的个人信息数据的散列值与针对向服务注册的潜在联系人的个人信息数据的散列值匹配的情况下,解密操作才成功,从而指示通讯录中的联系人与向服务注册为可发现的潜在联系人之间的匹配。
个人信息数据可指联系人的电话号码或电子邮件地址。然而,在发现协议内也可使用其他类型的个人信息数据,诸如街道地址、用户账户的用户名、用户标识符等。
在一些实施方案中,客户端应用程序是音乐共享应用程序,并且服务是音乐共享服务。发现协议用于确定存储在客户端设备的通讯录中的联系人中的任何联系人是否向音乐共享服务注册并已使其用户账户能够被音乐共享服务的其他用户发现。客户端应用程序可以通过例如指示其他已知用户(例如,朋友)正在听或已推荐的音乐来将社交方面结合到音乐共享服务的用户体验中。类似地,客户端应用程序可使得用户能够向音乐共享服务注册他/她的用户账户为可发现的,使得其他用户可以看到用户正在听或已推荐的音乐。其他社交方面也可并入音乐共享服务中,诸如共享与各种用户可能计划参加的音乐会相关的信息、共享与用户配置文件相关的信息以推荐可能被给定用户的联系人偏好的音乐等。应当理解,发现协议可由除音乐共享服务之外的其他类型的服务实现,并且本文所述的服务的类型(包括音乐共享服务)不应理解为限制性的。
以下参考图1至图9讨论这些实施方案和其他实施方案;然而,本领域的技术人员将容易地理解,本文相对于这些附图的所给出的详细描述仅出于说明性目的并且不应理解为限制性的。
图1示出了根据一些实施方案的客户端-服务器架构100。该客户端-服务器架构100包括被配置为通过网络150进行通信的多个独立且不同的计算设备。客户端-服务器架构100包括服务器设备110和客户端设备120。如图1所示,客户端设备120可包括但不限于平板电脑120-1、膝上型计算机120-2和移动设备120-3。应当理解,客户端-服务器架构100可包括其他类型的客户端设备120,诸如台式计算机、可穿戴设备(例如,智能手表)、个人数字助理等。
在一些实施方案中,客户端设备120包括被配置为由客户端设备120的处理器来执行的一个或多个应用程序。这些应用程序可包括提供用于一个或多个附加的应用程序的操作环境的操作系统。客户端设备120上的至少一个应用程序可为被配置为与由一个或多个服务器设备110实现的服务进行交互的客户端应用程序。客户端应用程序的示例可包括电子商务应用程序、音乐共享应用程序、健身应用程序等。在图1中示出三个服务器设备110-1、110-2和110-3,但应当理解,客户端-服务器架构100中可包括更少或更多数量的服务器设备110。
在一些实施方案中,第一服务器设备110-1用作针对一个或多个附加服务器设备诸如服务器设备110-2和110-3的网关设备。在此类实施方案中,客户端设备120可将请求发送到第一服务器设备110-2,该第一服务器设备将请求转发到适当的后端服务器设备110-2或110-3以进行处理。
在一些实施方案中,至少一个服务器设备110托管由包括在各种客户端设备120上的应用程序利用的一个或多个服务。例如,第二服务器设备110-2可托管用于注册已选择加入的用户账户以允许其他用户发现该用户账户的服务。又如,第三服务器设备110-3可托管处理来自各种客户端应用程序的联系人发现请求的服务。在一些实施方案中,应用程序所利用的服务可被托管在多于一个服务器设备110上。
图2是根据一些实施方案的发现协议200的概念图。由在客户端设备120和一个或多个服务器设备110上执行的多个软件组件来实现该发现协议。如图2所示,软件组件可包括客户端应用程序210、服务220、联系人发现服务230以及数据库240。客户端应用程序210可包括在客户端设备120的至少一个存储器中,并且由客户端设备120的至少一个处理器来执行。服务220、联系人发现服务230和数据库240可包括在一个或多个服务器设备110的至少一个存储器中,并且由服务器设备110的至少一个处理器执行。
在一些实施方案中,客户端应用程序210是被配置为至少部分地利用服务220的软件部件。客户端应用程序210可被配置为执行各种操作。例如,客户端应用程序210可以是用于收听、下载和/或购买通过与服务220的基于网络的连接提供的音乐(例如,音频文件)的应用程序。
在一些实施方案中,客户端应用程序210为基于网络的应用程序,该客户端应用程序显示在客户端设备120的浏览器内。客户端应用程序210可包括从与网站相关联的服务器请求的一系列资源(例如,超文本标记语言(HTML)文档、图像、脚本等)。该浏览器接收资源并且对该资源进行解析以将该网站的表示显示在客户端设备120上。因此,客户端应用程序210与平台无关,因为客户端应用程序210被显示在运行不同操作系统的多个不同的客户端设备120上。
在一些实施方案中,服务220使客户端应用程序210能够访问由服务220进行管理的资源。服务220可实现应用编程接口(API),该应用编程接口可由客户端应用程序210用于与服务220进行交互。例如,基于网络的服务可使用简单对象访问协议(SOAP)或表述性状态转移协议(REST)来实现API,该API使客户端应用程序210能够访问和/或操作与服务220相关联的资源。API可使客户端应用程序210能够向服务220传输数据和/或接收来自该服务的数据。API调用还可使得服务220执行各种操作和/或使用附加的API调用来调用附加的后端服务。
在一些实施方案中,客户端应用程序210包括呈现在客户端设备120的显示器上的图形用户界面(GUI)。GUI可使客户端应用程序210的用户能够执行各种功能,包括创建用于服务220的用户账户、将用户账户注册为能够被其他用户发现、发现向服务220注册的其他用户账户等。
在一些实施方案中,客户端应用程序210的用户可利用服务220创建用户账户。服务220可针对向服务220注册的每个用户账户创建用户标识符。用户标识符还可与用于客户端设备120的设备令牌相关联,使得服务220可将针对服务220的用户标识符与在客户端设备120上执行的客户端应用程序210的特定实例相关联。在一些实施方案中,用户标识符可与用于多个客户端设备120的多个设备令牌相关联,使得相同的用户标识符与在不同客户端设备120上执行的客户端应用程序210的多个实例相关联。
在一些实施方案中,服务220可利用被称为联系人发现服务230的后端服务来注册针对已选择加入的用户账户的用户标识符,以使这些用户账户的联系人信息能够被服务220的其他用户发现。在此类实施方案中,联系人发现服务230维护数据库240,该数据库将密钥与针对已注册为可发现的各种用户账户的用户标识符相关联。在一些实施方案中,可从与用户账户的用户相关的个人信息数据导出密钥。个人信息数据可以是与用户相关联的电话号码或与用户相关联的电子邮件地址。可在创建用户账户时将电话号码和/或电子邮件地址注册到该用户账户。在一些实施方案中,可验证电话号码和/或电子邮件地址,诸如通过利用代码向该电话号码发送文本或向电子邮件地址发送确认电子邮件以确认对于用户账户的用户保持对该电话号码或该电子邮件地址的控制。
针对用户账户的用户标识符也可与数据库240内的附加信息相关联。例如,用户标识符可与客户端设备120的一个或多个设备令牌、基于个人信息数据生成的散列值、包括与用户账户相关的信息的加密的数据有效载荷等相关联。在其他实施方案中,联系人发现服务230可利用针对用户账户的用户标识符作为访问该附加信息的密钥来将该附加信息存储在独立的数据库中。
图2中所示的软件组件可用于实现发现协议200,该发现协议使客户端应用程序210能够基于存储在客户端设备120中的通讯录内所包括的联系人信息来识别向服务220注册的其他用户账户。用于向用户提供用户可能已知的其他用户的列表的常规协议的一个问题是个人信息数据可能在客户端应用程序和服务之间交换。许多用户对于共享关于其自身或其联系人的此类个人信息数据感到不适。因此,发现协议200采取步骤来混淆在客户端应用程序210和服务220之间共享的个人信息数据。
在一些实施方案中,客户端应用程序210被配置为访问与客户端设备120的用户先前已存储在客户端设备120的通讯录中的一个或多个联系人相关的信息。通讯录可指存储在客户端设备120的非易失性存储器中的本地数据存储库或数据结构。通讯录可包括与不同联系人相关的条目。每个条目可包括针对特定联系人的个人信息数据,诸如联系人的姓名、住址或办公地址、电话号码、电子邮件地址、生日、到社交媒体资料的链接、与其他联系人的关系等。
通讯录可包括多个联系人,每个联系人与至少一个电话号码和/或至少一个电子邮件地址相关联。发现协议200尝试利用该个人信息数据来确定包括在客户端设备120的通讯录中的联系人中的任一个联系人是否也已向服务220注册用户账户以使所述用户账户能够被其他用户发现。然而,客户端应用程序210不将包括在通讯录中的个人信息数据发送到服务220。这防止服务220获悉用户通讯录的内容,并防止服务220建立服务的用户与尚未向服务220注册用户账户并随后选择加入以使所述用户账户可发现的其他用户之间的关系。
值得注意的是,客户端应用程序210仅向服务220提供存储在客户端设备120中的通讯录的内容的模糊视图。对于通讯录中的每个联系人,客户端应用程序210访问与联系人相关的个人信息数据,生成针对联系人的标识符以跟踪请求,并且识别针对通讯录中联系人的个人信息数据项。然后,对于通讯录中的特定联系人,客户端应用程序210可通过向服务220传输请求来确定该特定联系人是否已向服务220注册用户账户为可发现的,该请求包括标识符和从用于该特定联系人的个人信息数据项导出的密钥。
在一些实施方案中,通过使用安全散列函数生成针对个人信息数据项的散列值来从该个人信息数据项导出密钥。然后通过选择散列值的截短部分来创建密钥,该截短部分包括散列值的N个最高有效位,其中N小于全散列值的M位。在其他实施方案中,使用直接得出N位散列值的自定义散列函数从个人信息数据项导出密钥。可动态地改变自定义散列函数以确保个人信息数据的隐私得以保持。
服务220将该请求转发到联系人发现服务230,该联系人发现服务读取密钥值以查询数据库240,该数据库响应于该查询返回针对与该特定密钥值相关联的潜在联系人的用户账户的零个或多个用户标识符。具体地讲,如果利用针对与用户标识符相对应的潜在联系人的对应个人信息数据来导出用于索引数据库240中的与请求中的密钥值匹配的所述用户标识符的密钥值,则该用户标识符与该请求中的密钥值相关联。
在一些实施方案中,查询的结果返回与向联系人发现服务230注册的零个或多个潜在联系人相关的信息。每个潜在联系人的信息可包括针对用户账户的用户标识符和对应于该潜在联系人的散列值,该散列值匹配包括在请求中的密钥值。联系人发现服务230生成要包括在对客户端应用程序210的响应中的有效载荷。有效载荷基于与用于潜在联系人的用户账户相关的信息。
在一些实施方案中,联系人发现服务230从可用来源(包括数据库240和/或独立的数据库)采集信息,以已识别格式将信息写入数据结构,然后使用与潜在联系人相关联的加密密钥对该数据结构进行加密以生成用于传输到客户端应用程序210的响应的加密的有效载荷。可通过利用安全散列算法散列化与潜在联系人相关的个人信息数据来生成加密密钥。在其他实施方案中,加密的有效载荷被预定义并存储在数据库240中。
在一些实施方案中,有效载荷可包括以下中的至少一者:(1)潜在联系人的名称;(2)针对与潜在联系人相关联的用户账户的标识符;(3)潜在联系人的缩略图;(4)用于潜在联系人的图像的位置的通用资源定位符(URL);和/或(5)用于潜在联系人的配置文件的位置的URL。除上述信息之外或代替上述信息,有效载荷可包括其他信息。例如,有效载荷还可包括针对潜在联系人的个人信息数据,诸如潜在联系人的电子邮件地址或电话号码。
包括请求中包括的标识符和加密的有效载荷的响应从联系人发现服务230直接或间接地通过服务220传输到客户端应用程序210。客户端应用程序210然后可尝试使用针对从通讯录检索的个人信息数据计算的加密密钥来解密响应中的有效载荷,以确定通讯录中的联系人是否匹配向服务220注册的潜在联系人。
在一些实施方案中,从客户端应用程序210传输到服务220或在服务220和联系人发现服务230之间转发的请求可使用与服务220或客户端设备120中的至少一者相关联的证书来签名。可由用于确保客户端应用程序210的真实性的证书授权方维护证书。在一些实施方案中,从联系人发现服务230传输到服务220或在服务220和客户端应用程序210之间转发的响应也可使用与服务220或客户端设备120中的至少一者相关联的证书来签名。还可使用在客户端设备120和服务器设备110之间或者另选地在第一服务器设备110-1和第二服务器设备110-2之间建立的安全通信信道来对签名的请求和/或响应进行加密。
尽管发现协议200被示出为包括服务220作为客户端应用程序210和联系人发现服务230之间的网关,但在一些实施方案中,服务220可被省略,并且客户端应用程序210可与联系人发现服务230直接进行交互。
图3示出了根据一些实施方案的被配置为维护已选择加入能够被其他用户发现的用户账户的分布式数据库240的服务器节点312的集群310。数据库240被配置为维护已向联系人发现服务230注册为可发现的每个用户账户的条目。当数据库240达到阈值大小时,性能可能开始受到影响,因为条目的数量变得太大而不能以有效方式查询。因此,可在集群310中的多个服务器节点312上划分条目,其中每个服务器节点312维护数据库240中条目总数的一部分。
在一些实施方案中,数据库240是分布式数据库(例如,
Figure BDA0002765341320000111
Cassandra分布式数据库),该分布式数据库被划分成数据库的多个不同部分,这可以被称为锐化。数据库240经由网关设备302访问,该网关设备是服务器设备110,该服务器设备被配置为基于包括在API调用中的密钥将从联系人发现服务230接收的API调用重定向到服务器集群310中的各种服务器节点312。在其他实施方案中,网关设备302被省略或选择性地绕过,并且联系人发现服务230将API调用直接传输到服务器集群310。API调用可由集群310中的任何服务器节点312接收并基于包括在API调用中的密钥重定向到正确的服务器节点312。
在一些实施方案中,每个服务器节点312是通过网络150通信地耦接到其他服务器节点312的独立且不同的服务器设备110。在其他实施方案中,每个服务器节点312是托管在服务器设备110上的虚拟机(VM)的实例,其中可在执行被配置为管理VM的多个实例的管理程序的单个服务器设备110上执行多个服务器节点312。多个服务器设备110可各自实现管理程序和一个或多个VM以实现集群310。
在一些实施方案中,添加到数据库240的每个条目是密钥值对。可从个人信息数据项的散列值的截短部分导出用于条目的密钥。针对条目的值包括至少与向服务220注册的用户账户相对应的用户标识符。该值还可包括与用户账户相关联的个人信息数据的散列值、与用户账户相关的附加信息(例如,用户名、与用户账户相关联的缩略图或图像等)或加密的数据有效载荷。
应当理解,相同的用户账户可与数据库240中的多个条目相关联。换句话讲,相同的用户账户可与个人信息数据的多个项相关联,这些个人信息数据可用来导出用于对数据库240中的用户账户进行索引的不同密钥值。例如,可创建针对用户账户的第一条目,该第一条目基于从与用户账户相关联的电话号码生成的散列值的截短部分。可创建针对用户账户的第二条目,该第二条目基于从与用户账户相关联的电子邮件地址生成的散列值的截短部分。因为电话号码和电子邮件地址是个人信息数据的不同项,所以应用于该电话号码和该电子邮件地址的散列函数很可能针对该散列函数的不同输入产生不同的散列值,这将导致电话号码和电子邮件地址中的每一者的不同密钥值被用于针对数据库240中相同用户账户的两个不同条目进行索引。
在一些情况下,即使针对个人信息数据的两个项的全散列值不同,散列值的截短部分(例如,N个最高有效位)也可以是相同的,特别是如果N非常小的情况下。因此,可以使用相同的密钥值将针对相同用户账户的两个不同条目索引到数据库240中。在一些实施方案中,当使用个人信息数据的多个项注册用户账户以在数据库240中对用户账户进行索引时,应格外小心,以便针对每个不同的密钥值仅将一个用户账户条目添加到数据库中。
图4示出了根据一些实施方案的用于处理从通讯录收集的个人信息数据的流程400。可由在客户端设备120内执行的客户端应用程序210执行流程400。如图4所示,通讯录可包括针对多个联系人的个人信息数据。客户端应用程序210读取存储在通讯录内的数据以检索个人信息数据,诸如针对一个或多个联系人的电话号码和电子邮件地址。应当理解,每个联系人可包括零个或更多个电话号码以及与联系人名称相关联的零个或更多个电子邮件地址。客户端应用程序210可针对每个个人信息数据项创建不同的联系人信息记录(CIR)。应当理解,可以针对单个联系人创建多个CIR,其中针对联系人个人信息数据的多个项存储在通讯录中。在一些实施方案中,客户端应用程序210每个联系人仅创建一个CIR,从而在针对联系人选择个人信息数据项时将某些个人信息数据优先于其他个人信息数据。例如,客户端应用程序210可将移动电话号码优先于家庭电话号码优先于办公电话号码,这些电话号码均优先于个人电子邮件地址和工作电子邮件地址,如任选地存储在通讯录中。在一些实施方案中,客户端应用程序210针对每种类型的个人信息数据创建一个CIR,从而在针对联系人选择个人信息数据项时将某些个人信息数据优先于特定类型的其他个人信息数据。例如,即使针对特定联系人的多个电话号码和/或多个电子邮件地址存储在通讯录中,客户端应用程序210也将针对电话号码创建一个CIR并且针对电子邮件地址创建一个CIR。
如图4所示,个人信息数据可包括不同格式的电话号码和电子邮件地址。流程400的第一步骤410包括客户端应用程序210访问通讯录中的联系人信息。在一些实施方案中,通讯录提供用于访问针对通讯录中每个联系人的数据结构的API。客户端应用程序210可以枚举联系人并且为包括在通讯录中的每个联系人创建零个或多个CIR。例如,针对格式化为“555-123-4567”的电话号码创建第一CIR402,针对格式化为“John.Doe@domain.com”的电子邮件地址创建第二CIR404,针对格式化为“(123)456-9876”的电话号码创建第三CIR406,并且针对格式化为“employee@company.net”的电话号码创建第四CIR 408。应当理解,可针对包含在用于单个联系人的相同数据结构或用于多个联系人的不同数据结构中的信息来创建第一CIR 402和第二CIR 404或第三CIR 406和第四CIR 408。例如,用于单个联系人的数据结构可包括针对联系人的电话号码和电子邮件地址两者。以类似的方式,也可针对包含在用于单个联系人的相同数据结构或用于多个联系人的不同数据结构中的信息来创建第一CIR 402和第三CIR 406或第二CIR 404和第四CIR 408。例如,用于单个联系人的数据结构可包括针对联系人的家庭电话号码和工作电话号码或者针对联系人的个人电子邮件地址和办公电子邮件地址两者。另选地,用于单个联系人的数据结构只能列出针对该联系人的电话号码或电子邮件地址中的一者,而不是电话号码和电子邮件地址两者。用于联系人的一些数据结构可既不包括电话号码也不包括电子邮件地址。在这种情况下,客户端应用程序210可以移动到枚举中的下一个数据结构而不创建CIR。
流程400中的第二步骤420包括客户端应用程序210归一化从用于联系人的数据结构解析的个人信息数据。在一些实施方案中,通讯录能够以不同格式存储电话号码或电子邮件地址。例如,可将电话号码存储为包括特殊字符(例如“(”、“)”和/或“-”)的字符串,用于格式化目的以使电话号码更易于阅读。在一些实施方案中,客户端应用程序210通过移除任何特殊字符并生成仅限于电话号码的数字的字符串来归一化电话号码。例如,第一CIR402中的电话号码从“555-123-4567”归一化为“5551234567”,并且第三CIR 406中的电话号码从“(123)456-9876”归一化为“1234569876”。在一些实施方案中,电话号码将被归一化以包括用于电话号码的国家代码和/或国际出口代码。任选地,存储在通讯录中且没有国家代码和/或国际出口代码的本地电话号码可附加有默认国家代码,诸如用于美国的“1”,以及国际出口代码,诸如从美国到北美编号计划(NANP)之外的国家/地区的011。另选地,本地电话号码可用前导零(或任何其他数字或数字集)填充以确保所有归一化的电话号码在字符串中具有相同数量的字符。
在一些实施方案中,客户端应用程序210还通过将电子邮件地址中的任何大写字母更改为小写字母来归一化电子邮件地址。例如,第二CIR 404中的电子邮件地址从“John.Doe@domain.com”归一化为“john.doe@domain.com”。电子邮件地址的归一化能够以归一化格式保持特殊字符,诸如“@”和“.”,因为特殊字符可能涉及两个独立且不同的电子邮件地址。在其他实施方案中,可以在归一化期间丢弃特殊字符。在其他实施方案中,可将Unicode字符转换成规范编码,诸如非组合UTF-8字符。
流程400的第三步骤430包括客户端应用程序210生成用于归一化个人信息数据的散列值。在一些实施方案中,客户端应用程序210使用SHA-256安全散列算法针对归一化的个人信息数据生成256位散列值,该算法被大家熟知并且在美国国家标准与技术研究院(NIST)推出的联邦信息处理标准(FIPS)180-4安全散列标准中进行了定义,该标准全文以引用方式并入本文。
如图4所示,SHA-256散列算法将第一CIR 402中的归一化电话号码散列化,以生成十六进制格式的256位散列值:
0x3C95277DA5FD0DA6A1A44EE3FDF56D20AF6C6D242695A40E18E6E90DC3C5872C
在其他实施方案中,散列值的长度可大于或小于256位。例如,可使用SHA3-384安全散列算法将散列值生成为384位散列值。除了标准散列算法之外,客户端应用程序210还可以实现自定义散列算法以生成特定自定义位长度的散列值。例如,可定义自定义散列算法,该自定义散列算法生成具有N位的散列值,其中选择N的值以便将数据库240中的预期冲突数量保持在尊重个人信息数据的隐私的范围内。
流程400的第四步骤440包括客户端应用程序210生成用于CIR的标识符,该标识符将用于匹配对请求的响应。在一些实施方案中,客户端应用程序210基于由因特网工程任务组(IETF)的网络工作组(IETF)提出的请求注解(RFC)4122标准中定义的统一资源名称(URN)命名空间来生成通用唯一标识符(UUID),该标准全文以引用方式并入本文。基于RFC4122标准生成的UUID是128位值,该UUID对于特定CIR是唯一的,并且因此唯一地与针对包括在通讯录中的特定联系人的特定个人信息数据项相关联。
如图4所示,针对第一CIR 402生成的UUID以十六进制格式(短划线仅出于格式化目的而示出)给出,如:
0xEA39F7F7-F02F-4FE3-9A2C-C51E1B25EC37
客户端应用程序210使用UUID来引用特定联系人的特定CIR,且不向客户端设备120外部的进程公开关于联系人的任何附加细节,诸如服务220或联系人发现服务230。在其他实施方案中,标识符不必是由RFC 4122或任何其他标准定义的UUID,而是应在用于特定客户端应用程序210的发现协议的范围内是唯一的,使得从服务220或联系人发现服务230接收的响应可与通讯录中的特定联系人相关联。
一旦客户端应用程序210已生成归一化个人信息数据的散列值并针对通讯录中的联系人创建针对个人信息数据项的标识符,客户端应用程序210就可生成用于发送到服务220以发现该联系人是否向服务220注册并且已选择加入能够被其他用户发现的请求。
在其他实施方案中,在客户端设备120的操作环境内执行的进程或后台服务执行流程400以用于处理从通讯录收集的个人信息数据。该进程或后台服务实现用于访问通讯录中的个人信息数据的API。客户端应用程序210被拒绝读取对通讯录中数据的访问,并且只能间接地通过API访问通讯录中的个人信息数据。客户端应用程序210可请求进程或后台服务以生成针对联系人的标识符、生成针对联系人的归一化个人信息数据项的散列值,并将该标识符和/或散列值提供给客户端应用程序210。因此,客户端应用程序210即使在客户端设备120上也不具有对底层个人信息数据的访问权限,直到此类数据已被安全散列算法混淆。
图5示出了根据一些实施方案的用于生成用于发现联系人的用户账户是否向服务220注册为可发现的请求的流程500。可由在客户端设备120内执行的客户端应用程序210执行流程500。发现协议200的一个重要方面是客户端应用程序210混淆了来自通讯录的信息,使得服务220和/或联系人发现服务230被阻止对包括在通讯录中的个人信息数据的任何查看。
流程500的第一步骤510包括客户端应用程序210截断用于CIR的散列值以生成用于数据库240的查询的密钥值。在一些实施方案中,散列值的截短部分是指256位散列值的N个最高有效位。作为一个示例,N可被设置为等于24位。应当理解,N可被定制为引起数据库240内的预期冲突数量的位的数量。用于将与联系人相关的条目存储在数据库240中的密钥值的总数等于2N。给定与存储在数据库240中的联系人相关的M个条目,则响应于数据库240的查询利用特定密钥值返回的条目的预期数量将被给定为:
Figure BDA0002765341320000161
在一些实施方案中,基于向服务注册的潜在联系人的总数动态地调整包括在散列值的截短部分中的位数。N的值可以增加以将响应于随机查询返回的条目的预期数量维持在特定范围内(例如,在1和4个条目之间)。在一些实施方案中,联系人发现服务230设置N的值并将N的值传输到客户端应用程序210,使得从客户端应用程序210接收的请求将包括正确位宽度的密钥。
如图5所示,通过将散列值从CIR截断到N个最高有效位来创建用于请求的密钥。例如,通过将散列值从第一CIR 402截断到24位(例如,十六进制格式的0x3C9527)来创建用于第一请求502的密钥,通过将散列值从第二CIR 404截断到24位(例如,十六进制格式的0xA214DE)来创建用于第二请求504的密钥,通过将散列值从第三CIR 406截断到24位(例如,十六进制格式的0x1B1776)来创建用于第三请求506的密钥,并且通过将散列值从第四CIR 408截断到24位(例如,十六进制格式的0xFC8714)来创建用于第四请求508的密钥。
在一些实施方案中,散列值以4位的增量被截断,使得十六进制格式的散列值直接截断为十六进制格式。在其他实施方案中,散列值从十六进制格式转换为二进制格式,并且散列值被截断为任何位长度。然后用前导零将截短的散列值填充至可被4整除的长度,并转换回十六进制格式。
在一些实施方案中,使用密钥散列消息认证码(HMAC)导出密钥值。在此类实施方案中,个人信息数据项在散列之前与密钥组合。在一些实施方案中,密钥可被划分为内密钥和外密钥。个人信息数据项与内密钥组合以在散列算法的第一遍中产生中间散列值。然后将中间散列值与外密钥组合以在散列算法的第二遍中产生最终散列值。可由客户端应用程序210和联系人发现服务230利用任何已知的密钥交换协议来协商密钥。
在一些实施方案中,不需要截断散列值。例如,如果利用自定义散列算法来生成个人信息数据项的散列值,则以被定制成提供特定范围内的预期冲突数量的正确位数(例如,N位)来生成散列值。在此类实施方案中,可在流程500的第一步骤510内利用流程400的第三步骤430中生成的散列值。
流程500的第二步骤520包括客户端应用程序210生成请求,该请求包括用于CIR的标识符(例如,UUID)和对应于该CIR的密钥值(例如,散列值的截短部分)。应当理解,密钥值是以任何方式与包括在通讯录中的个人信息数据相关的唯一信息,并且已被混淆到与任何给定密钥匹配的预期联系人数量可大于一的程度。即使知道密钥,服务220或联系人发现服务230也不能确定地将客户端设备120的通讯录中的个人信息数据与存储在数据库240中的联系人信息进行匹配。即使密钥仅匹配数据库240中的单个条目,该条目也可能不与存储在客户端设备120的通讯录中的联系人匹配。因此,存储在客户端设备的通讯录中的个人信息数据保持私有和机密。只有一旦客户端应用程序210发现通讯录中的联系人与数据库240中的潜在联系人之间的匹配,客户端应用程序210才能够将针对该联系人的用户账户的信息提供给服务220。此时,在客户端应用程序210和服务220之间共享此类个人信息数据是可允许的,因为对于该用户账户的用户已明确地选择加入以允许与服务220共享所述信息。
在一些实施方案中,客户端应用程序210将具有{标识符:密钥}对的请求传输到服务220,以便确定客户端设备120的通讯录中的对应联系人是否匹配与已向服务220注册并选择加入为能够被其他用户发现的用户账户相关的信息。服务220将请求转发到联系人发现服务230,该联系人发现服务从该请求读取密钥并查询数据库240以检索与该特定密钥相关联的任何条目。数据库240向联系人发现服务230返回零个或更多个条目,该联系人发现服务针对该零个或更多个条目中的每个条目生成要发送到客户端应用程序210的响应。
在一些实施方案中,联系人发现服务230从数据库240返回的条目读取与潜在联系人相关联的多个参数。这些参数包括针对潜在联系人的用户账户的用户标识符和基于潜在联系人的个人信息数据项的散列值。这些参数还可包括潜在联系人的名称、针对潜在联系人的用户账户的标识符、针对潜在联系人的缩略图,指定针对潜在联系人的图像的位置的URL、指定针对潜在联系人的社交媒体资料的位置的URL以及可与潜在联系人相关联的任何其他信息。在其他实施方案中,联系人发现服务230可从用于存储参数的一个或多个独立且不同的数据库读取这些参数中的至少一些参数。数据库240中的条目可包括用于存储相关参数的独立且不同的数据库中的对应条目的密钥。例如,针对用户账户的用户标识符可用作访问独立且不同的数据库中的参数的密钥。
联系人发现服务230生成响应于请求而递送的有效载荷。该有效载荷可包括与潜在联系人相关的参数中的一个或多个参数。在一些实施方案中,有效载荷包括具有多个字段的数据结构,每个字段包括用于字段的标签和用于字段的值。该有效载荷可被构造为可扩展标记语言(XML)文档、JavaScript对象表示法(JSON)文档等。例如,有效载荷可格式化为JSON文档,诸如:
{“账户ID”:“12345”,“名称”:“Doe,John”,“缩略图”:“http://a.b.c/images/user12345.jpg”}
联系人发现服务230获取有效载荷并利用从与潜在联系人相关联的个人信息数据项导出的加密密钥对有效载荷进行加密。可通过利用安全散列算法基于个人信息数据项生成散列值来生成加密密钥。用于生成加密密钥的安全散列算法可以是与用于生成用于索引数据库240中的条目的密钥值的算法相同的算法或不同的算法。在一些实施方案中,联系人发现服务230利用AES-256加密算法来对有效载荷进行加密。同样,从用于潜在联系人的个人信息数据导出的散列值可包括在针对数据库240中潜在联系人的条目中。在一些实施方案中,加密的有效载荷可以是预定义的,并且加密的有效载荷可以存储在数据库240的条目中,使得联系人发现服务230仅读取从数据库240的查询返回的加密的有效载荷,并且联系人发现服务230不根据需要构建和加密有效载荷。
在一些实施方案中,加密密钥选自从个人信息数据项导出的散列值的一部分。例如,如果SHA-256安全散列函数用于生成散列值,则散列值具有256位的信息。然而,加密密钥可小于散列值的256位。例如,AES-128加密算法需要128位加密密钥。在此类实施方案中,联系人发现服务230可被配置为选择散列值的一部分作为加密密钥(例如,256位散列值的128个MSB)。
来自请求的标识符和加密的有效载荷被一起封装到响应中并从联系人发现服务230传输到服务220,服务220将响应转发到客户端应用程序210。
响应于接收到响应,客户端应用程序210读取包括在响应中的标识符。该标识符引用特定CIR,该CIR包括针对通讯录的联系人的个人信息数据的散列值。客户端应用程序210尝试利用来自对应于标识符的CIR的散列值作为加密密钥来解密加密的有效载荷。如果由客户端应用程序210创建并且与客户端设备120的通讯录中的联系人相关的CIR中的散列值匹配用于由联系人发现服务230对有效载荷进行加密的散列值,则该加密的有效载荷可被成功解密,这指示通讯录中的联系人匹配已向服务220注册用户账户并选择加入为能够被其他用户发现的潜在联系人。客户端应用程序210可以通过解析解密的数据来确定加密的有效载荷是否被成功解密。由于每个有效载荷是根据可识别格式结构化的,因此解密的数据应包括解密的数据内的特定字符串。在一些实施方案中,如果解密的数据被识别为适当格式的JSON数据,则客户端应用程序210确定包括在数据库240中的潜在联系人匹配通讯录中的联系人。然后,基于在客户端设备120的通讯录中包括潜在联系人的个人信息数据,客户端应用程序210可以将来自解密的有效载荷的潜在联系人信息识别为与客户端设备120的用户具有已建立关系的用户账户。
图6是根据一些实施方案的用于实现发现协议200的方法600的流程图。至少部分地由客户端设备120来执行方法600。可由软件、硬件或者软件和硬件的任何组合来实现方法600。在一些实施方案中,由客户端应用程序210来实现方法600。
在602处,访问与存储在客户端设备的通讯录中的一个或多个联系人相关的个人信息数据。在一些实施方案中,客户端应用程序210提示用户选择授予客户端应用程序210对存储在客户端设备中的通讯录的访问权限。该通讯录包括针对客户端设备的用户已知的一个或多个联系人的个人信息数据,包括至少电话号码和/或电子邮件地址。应当理解,客户端设备120的用户可通过改变客户端设备120的设置中的用户偏好来选择退出以拒绝客户端应用程序210访问通讯录,从而限制客户端应用程序210随时访问通讯录。如果用户限制对通讯录的访问,则方法600可终止。
在604处,生成针对与存储在通讯录中的一个或多个联系人中的联系人的个人信息数据项相对应的标识符。在一些实施方案中,该标识符是基于RFC 4122生成的通用唯一标识符(UUID)。该标识符被客户端应用程序210用于跟踪发送到联系人发现服务230识别向服务注册的任何用户账户是否可能与包括在通讯录中的联系人相关的请求。
在606处,生成针对联系人的个人信息数据项的散列值。在一些实施方案中,根据安全散列算法诸如SHA-256对从通讯录解析的个人信息数据项进行归一化和散列化。散列值为M位长。
在608处,将包括标识符和散列值的截短部分的请求传输到服务。在一些实施方案中,散列值的截短部分包括散列值的N个最高有效位,其中N小于M。
在610处,接收对请求的至少一个响应。在一些实施方案中,联系人发现服务230针对与散列值相关联的每个潜在联系人生成独立的响应,该散列值具有与请求中散列值的截短部分匹配的N个最高有效位。每个响应包括请求的标识符和已利用与潜在联系人相关联的散列值作为加密密钥进行加密的有效载荷。
在612处,利用散列值作为解密密钥来执行解密有效载荷的尝试。如果客户端设备已知的散列值与和潜在联系人相关联的散列值相同,则有效载荷可被成功解密,并且有效载荷的解密版本将包括与针对潜在联系人的用户账户相关联的已识别格式的信息。然而,如果散列值不匹配,则不能解密有效载荷,并且丢弃该有效载荷。
图7示出了根据一些实施方案的用于将用户账户向服务220注册为可发现的协议700。由多个软件组件来实现协议700。在一些实施方案中,这些软件组件可包括客户端应用程序210、服务220、识别服务710、联系人发现服务230和数据库240中的一者或多者。客户端应用程序210可被包括在客户端设备120中,而其他软件组件被包括在一个或多个服务器设备110上。
当用户针对服务220创建用户账户时,客户端应用程序210可提示用户选择加入为能够被其他用户发现的。如果客户端设备120的用户选择加入为可发现的,则客户端应用程序210在将用户账户注册为能够被其他用户发现的请求中将令牌传输到服务220。令牌包括与用户账户相关联的用户标识符或标识客户端设备120的可通过服务220与用户账户相关联的设备令牌中的一者。服务220向ID服务710传输请求以请求针对与用户账户相关的个人信息数据的散列值。该请求可包括令牌。另选地,该请求可包括通过服务220映射到令牌的用户标识符。
ID服务710返回针对与匹配令牌的用户账户相对应的每个个人信息数据项的散列值。应当理解,ID服务710可保持个人信息数据的机密性,并且仅将所述数据的散列值返回到服务220。在其他实施方案中,ID服务710可将个人信息数据返回给服务220,该服务可通过将安全散列算法应用于个人信息数据来生成散列值。
服务220然后将散列值传输到联系人发现服务230以将用户账户注册为可发现的。联系人发现服务230利用散列值的截短部分作为用于对数据库240中的条目进行索引的密钥来针对用户账户向数据库240添加条目。记录可包括针对用户账户的用户标识符和/或针对用户账户的个人信息数据的全散列值。在一些实施方案中,联系人发现服务230生成针对用户账户的加密的有效载荷,并将该加密的有效载荷存储在添加到数据库240的条目中。
在一些实施方案中,ID服务710响应于从服务220接收的每个请求返回针对电话号码或电子邮件地址的单个散列值。在其他实施方案中,ID服务710针对从服务220接收的每个用户令牌返回多个散列值。例如,单个用户账户可具有与之相关联的注册电话号码和电子邮件地址。ID服务710可被配置为响应于请求而向服务返回用于电话号码的第一散列值以及用于电子邮件地址的第二散列值。服务220将多个散列值中的每个散列值转发到联系人发现服务230以针对特定联系人在数据库240中单独生成索引条目。
在一些实施方案中,随着利用服务220创建越来越多的用户账户并注册为可发现的,数据库240中条目的数量将扩展,从而基于限于N位的散列值的截短部分来增加与查询的预期冲突数量。因此,在某些情况下,动态地调整N的值使得预期冲突数量处于特定范围内。同样,可通过将数据库240中条目M的数量除以值2N来计算预期冲突数量。随着M增加,使得预期冲突数量上升到阈值以上,则可增加N以减少针对随机密钥的预期冲突数量。例如,在一些实施方案中,应动态地调整N,使得预期冲突数介于1和4之间。这可通过每当数据库240中的条目数增加四倍时将N增加2来实现。应当理解,每当调整N时,可能需要修改数据库240中的每个条目。例如,每个条目可能需要基于与所述条目相对应的全散列值的不同截短部分使用不同的密钥来索引。
在一些实施方案中,N的大小不太频繁地增加,诸如仅当预期冲突数量在1至16的范围之外时才增加N。换句话讲,每当数据库240中的条目数增加16的倍数时,N仅增加4位而不是2位。在其他实施方案中,N的大小由服务提供方手动增加以定制联系人发现服务230的性能。该服务提供方可确定针对发现协议200的给定具体实施的N的最佳值。
图8是根据一些实施方案的用于将用户账户注册为可发现的方法800的流程图。至少部分地由服务器设备110来执行方法800。可由软件、硬件或者软件和硬件的任何组合来实现方法800。在一些实施方案中,由服务220、ID服务710和/或联系人发现服务230中的一者或多者来实现方法800。
在802处,接收使用户账户能够被服务的其他用户发现的请求。在一些实施方案中,服务220从客户端设备120接收请求。该请求可包括与用户账户相关联的令牌。该令牌可以是标识用户账户的用户标识符,或者另选地,可以是标识客户端设备120的先前已与特定用户账户相关联的设备令牌。
在804处,检索针对与用户账户相关的个人信息数据项的散列值。在一些实施方案中,服务220从ID服务710请求散列值。针对散列值的请求可包括令牌。在一些实施方案中,服务220将令牌映射到由一个或多个服务用来标识客户端-服务器架构100的服务器侧上的用户账户的用户标识符。该用户标识符不与客户端设备120共享。在此类实施方案中,将用户标识符而不是令牌发送到ID服务710。
个人信息数据项可存储在由ID服务710维护的数据结构中。例如,ID服务710可存储针对服务创建的每个用户账户的电话号码和/或电子邮件地址。当用户利用客户端应用程序210创建用户账户时,个人信息数据可被提供给服务220。
在806处,生成加密的有效载荷。该加密的有效载荷包括与根据用于有效载荷的已识别格式包括在数据结构中的用户账户相关的信息。例如,该信息可被包括在JSON文档的字段中。该已识别格式可以是JSON文档中的多个字段的特定次序、数量和类型。
在808处,利用散列值的截短部分作为密钥来将条目添加到数据库240以索引条目。针对用户账户的用户标识符、全散列值和/或加密的有效载荷中的至少一者可包括在条目中,使得对数据库240的针对散列值的截短部分的查询返回针对用户账户的用户标识符、全散列值和/或用于用户账户的加密的有效载荷。
图9是根据一些实施方案的用于实现发现协议200的方法900的流程图。至少部分地由客户端设备120来执行方法900。方法900可由软件、硬件或软件和硬件的任何组合来实现。在一些实施方案中,由客户端应用程序210来实现方法900。
方法900比方法600更通用,因为用于生成用于将通讯录中的联系人与数据库240中的一个或多个潜在联系人匹配的密钥值的散列值不必是用于对发送到客户端应用程序210的响应中的有效载荷进行加密的相同的散列值。密钥值和加密密钥仅从客户端设备120和服务器设备110两者都将知道的个人信息数据项导出。
在902处,访问与存储在客户端设备的通讯录中的一个或多个联系人相关的个人信息数据。在一些实施方案中,客户端应用程序210提示用户选择授予客户端应用程序210对存储在客户端设备中的通讯录的访问权限。该通讯录包括针对客户端设备的用户已知的一个或多个联系人的个人信息数据,包括至少电话号码和/或电子邮件地址。应当理解,客户端设备120的用户可通过改变客户端设备120的设置中的用户偏好来选择退出以拒绝客户端应用程序210访问通讯录,从而限制客户端应用程序210随时访问通讯录。如果用户限制对通讯录的访问,则方法900可终止。
在904处,生成针对与通讯录中联系人的个人信息数据项相对应的标识符。在一些实施方案中,该标识符是基于RFC 4122生成的通用唯一标识符(UUID)。该标识符被客户端应用程序210用于跟踪识别向服务注册的任何用户账户是否可能与包括在通讯录中的联系人相关的请求。
在906处,生成密钥值。从用于联系人的PID项导出密钥值。在一些实施方案中,根据安全散列算法诸如SHA-256对从通讯录解析的个人信息数据项进行归一化和散列化。散列值为M位长,然后将其截断到散列值的N个最高有效位。在其他实施方案中,根据生成N位散列值的自定义散列算法对从通讯录解析的个人信息数据项进行归一化和散列化。然后将散列值直接用作请求中的密钥值。
在908处,将请求传输到服务以识别可与通讯录中的联系人匹配的向服务注册的任何潜在联系人。该请求包括标识符和密钥值。
在910处,从服务接收对请求的响应。在一些实施方案中,联系人发现服务230针对与包括在请求中的密钥值相关联的任何潜在联系人生成响应。如果多个潜在联系人匹配密钥值,则联系人发现服务230可生成针对每个潜在联系人的独立的响应。每个响应包括请求的标识符和已利用从与潜在联系人相关联的个人信息数据项导出的加密密钥进行加密的有效载荷。
在912处,利用从用于通讯录中联系人的个人信息数据项导出的解密密钥来执行解密有效载荷的尝试。在一些实施方案中,通过将与通讯录中的联系人相关联的个人信息数据项散列化来导出解密密钥。用于生成解密密钥的散列算法可与用于生成包括在请求中的密钥值的散列算法相同或不同。在一些实施方案中,由散列算法生成的散列值可被截断以匹配解密算法所需的长度(例如,256位散列值可被截断以匹配128位加密/解密算法诸如AES-128)。
如果由客户端设备导出的解密密钥与和潜在联系人相关联的加密密钥相同,则有效载荷可被成功解密,并且有效载荷的解密版本将包括与针对潜在联系人的用户账户相关联的已识别格式的信息。然而,如果解密密钥不匹配加密密钥,则不能解密有效载荷,并且丢弃该有效载荷。
图10示出了根据一些实施方案的可被用于实现本文所述的各种装置和/或方法的示例性计算设备1000的详细视图。具体地讲,该详细视图示出了可被包括在图1和图3所示和/或本文所述的计算设备中的各种部件。例如,服务器设备110、客户端设备120或包括任何网络设备和/或消费型电子产品的任何其他设备中的一者或多者可包括计算设备1000的部件。
如图10所示,计算设备1000可包括表示用于控制计算设备1000的总体操作的微处理器或控制器的处理器1002。计算设备1000还可包括允许计算设备1000的用户与计算设备1000进行交互的用户输入设备1008。例如,用户输入设备1008可采用多种形式诸如按钮、小键盘、拨号盘、触摸屏、音频输入接口、视觉/图像捕获输入接口、传感器数据形式的输入等。更进一步地讲,计算设备1000可包括可由处理器1002控制以向用户呈现视觉信息的显示器1010(屏幕显示器)。数据总线1016可促进至少存储设备1040、处理器1002和控制器1013之间的数据传输。控制器1013可用于通过装备控制总线1014与不同的装备进行交互并对不同的装备进行控制。计算设备1000还可包括耦接到数据链路1012的网络/总线接口1011。在无线连接的情况下,网络/总线接口1011可包括无线收发器。
计算设备1000还包括存储设备1040,该存储设备可包括单个磁盘或多个磁盘(例如,硬盘驱动器),并且包括管理存储设备1040内的一个或多个分区的存储管理模块。在一些实施方案中,存储设备1040可包括闪存存储器、半导体(固态)存储器等。计算设备1000还可包括随机存取存储器(RAM)1020和只读存储器(ROM)1022。ROM 1022可存储将以非易失性方式执行的程序、实用程序或进程。RAM 1020可提供易失性数据存储并存储与计算设备1000的操作相关的指令。
可单独地或以任何组合使用所述实施方案的各个方面、实施方案、具体实施或特征。可由软件、硬件或硬件与软件的组合来实施所述实施方案的各个方面。所述实施方案还可实施为在非暂态计算机可读介质上的计算机可读代码。非暂态计算机可读介质为可存储数据的任何数据存储设备,该数据之后可由计算机系统读取。非暂态计算机可读介质的示例包括只读存储器、随机存取存储器、CD-ROM、HDD、DVD、磁带和光学数据存储设备。非暂态计算机可读介质也可分布在网络耦接的计算机系统上,使得计算机可读代码以分布方式存储和执行。
如上所述,本技术的一个方面在于采集并使用得自各种来源的数据,以改善应用程序的社交方面。本公开预期,在一些实例中,这些所采集的数据可包括唯一地识别或可用于联系或定位特定人员的个人信息数据。此类个人信息数据可包括人口统计数据、基于定位的数据、电话号码、电子邮件地址、twitter ID、家庭地址、与用户的健康或健身等级相关的数据或记录(例如,生命信号测量、药物信息、锻炼信息)、出生日期、或任何其他识别信息或个人信息。
本公开认识到在本发明技术中使用此类个人信息数据可用于使用户受益。例如,个人信息数据可用于识别与给定用户存在现有关系的个人的其他用户账户。因此,使用此类个人信息数据使得能够发现这些预先存在的关系。此外,本公开还预期个人信息数据有益于用户的其他用途。例如,健康和健身数据可用于向用户的总体健康状况提供见解,或者可用作使用技术来追求健康目标的个人的积极反馈。
本公开设想负责采集、分析、公开、传输、存储或其他使用此类个人信息数据的实体将遵守既定的隐私政策和/或隐私实践。具体地,此类实体应当实行并坚持使用被公认为满足或超出对维护个人信息数据的隐私性和安全性的行业或政府要求的隐私政策和实践。此类政策应该能被用户方便地访问,并应随着数据的采集和/或使用变化而被更新。来自用户的个人信息应当被收集用于实体的合法且合理的用途,并且不在这些合法使用之外共享或出售。此外,应在收到用户知情同意后进行此类采集/共享。此外,此类实体应考虑采取任何必要步骤,保卫和保障对此类个人信息数据的访问,并确保有权访问个人信息数据的其他人遵守其隐私政策和流程。另外,这种实体可使其本身经受第三方评估以证明其遵守广泛接受的隐私政策和实践。此外,应当调整政策和实践,以便采集和/或访问的特定类型的个人信息数据,并适用于包括管辖范围的具体考虑的适用法律和标准。例如,在美国,对某些健康数据的收集或获取可能受联邦和/或州法律的管辖,诸如健康保险流通和责任法案(HIPAA);而其他国家的健康数据可能受到其他法规和政策的约束并应相应处理。因此,在每个国家应为不同的个人数据类型保持不同的隐私实践。
不管前述情况如何,本公开还预期用户选择性地阻止使用或访问个人信息数据的实施方案。即本公开预期可提供硬件元件和/或软件元件,以防止或阻止对此类个人信息数据的访问。例如,就联系人发现服务而言,本发明技术可被配置为在注册服务期间或之后任何时候允许用户选择“选择加入”或“选择退出”参与对个人信息数据的收集。又如,用户可选择不提供对用于发现用户已知的联系人的通讯录的访问。又如,用户可选择限制对通讯录的访问被授予的时间长度或完全禁止对通讯录的访问。除了提供“选择加入”和“选择退出”选项外,本公开设想提供与访问或使用个人信息相关的通知。例如,可在下载应用时向用户通知其个人信息数据将被访问,然后就在个人信息数据被应用访问之前再次提醒用户。
此外,本公开的目的是应管理和处理个人信息数据以最小化无意或未经授权访问或使用的风险。一旦不再需要数据,通过限制数据收集和删除数据可最小化风险。此外,并且当适用时,包括在某些健康相关应用程序中,数据去标识可用于保护用户的隐私。可在适当时通过移除特定标识符(例如,出生日期等)、控制所存储数据的量或特异性(例如,在城市级别而不是在地址级别收集定位数据)、控制数据如何被存储(例如,在用户之间聚合数据)、和/或其他方法来促进去标识。
因此,虽然本公开广泛地覆盖了使用个人信息数据来实现一个或多个各种所公开的实施方案,但本公开还预期各种实施方案也可在无需访问此类个人信息数据的情况下被实现。即,本发明技术的各种实施方案不会由于缺少此类个人信息数据的全部或一部分而无法正常进行。例如,可通过基于非个人信息数据或绝对最低数量的个人信息诸如与用户相关联的设备所请求的内容、对内容递送服务可用的其他非个人信息或公开可用的信息来推断偏好,从而选择内容并将该内容递送至用户。这些服务可仅在不并入如本文所述的此类社交方面的情况下操作。
为了说明的目的,前述描述使用具体命名以提供对所述实施方案的透彻理解。然而,对于本领域的技术人员而言将显而易见的是,不需要具体细节即可实践所述实施方案。因此,具体实施方案的前述描述被呈现用于例示和描述的目的。前述描述不旨在为穷举性的或将所述的实施方案限制为所公开的精确形式。对于本领域的普通技术人员而言将显而易见的是,鉴于上面的教导内容,许多修改和变型是可行的。

Claims (20)

1.一种用于实现包括隐私方面的发现协议的方法,所述方法包括由客户端设备:
访问与存储在所述客户端设备的通讯录中的一个或多个联系人相关的个人信息数据(PID);
生成与所述一个或多个联系人中的联系人的第一PID项相对应的标识符;
生成从所述联系人的所述第一PID项导出的密钥值;
将包括所述标识符和所述密钥值的请求传输到服务;
接收对所述请求的响应,所述响应包括所述标识符和已利用从潜在联系人的第二PID项导出的加密密钥进行加密的有效载荷;以及
响应于确定由所述客户端设备生成的所述标识符匹配包括在所述响应中的所述标识符:
利用从所述联系人的所述第二PID项导出的解密密钥来尝试解密所述有效载荷,其中:
当所述有效载荷能被解密时,那么所述联系人与所述潜在联系人匹配并且所述有效载荷的解密版本包括已识别格式的与所述潜在联系人的用户账户相关联的信息,或者
当所述有效载荷不能被解密时,那么所述联系人与所述潜在联系人不匹配并且所述响应被丢弃。
2.根据权利要求1所述的方法,其中所述第一PID项包括电话号码或电子邮件地址。
3.根据权利要求1所述的方法,其中所述第二PID项包括电话号码或电子邮件地址。
4.根据权利要求1所述的方法,其中生成所述密钥值包括:
利用散列算法对所述第一PID项进行散列化以生成散列值;以及
截短所述散列值以选择所述散列值的N个最高有效位作为所述密钥值,以生成截短的散列值。
5.根据权利要求4所述的方法,其中所述散列值是利用安全散列算法-256(SHA-256)散列算法生成的256位值。
6.根据权利要求4所述的方法,其中基于向所述服务注册的潜在联系人的总数,动态地调整包括在所述截短的散列值中的位数。
7.根据权利要求1所述的方法,其中所述服务维护分布式数据库,所述分布式数据库包括将每个密钥值与向所述服务注册的零个或更多个潜在联系人相关联的键值对。
8.根据权利要求7所述的方法,其中从所述潜在联系人的所述第一PID项导出用于所述潜在联系人的所述密钥值。
9.根据权利要求1所述的方法,其中使用与所述服务或所述客户端设备中的至少一者相关联的证书来对所述请求进行签名。
10.根据权利要求1所述的方法,其中由包括在所述客户端设备中的客户端应用程序来实现所述发现协议。
11.根据权利要求10所述的方法,其中所述客户端应用程序是音乐共享应用程序,并且所述服务被配置为经由网络向所述客户端设备提供音乐内容。
12.根据权利要求10所述的方法,其中所述客户端应用程序被配置为显示包括在所述有效载荷中的与所述潜在联系人相关的信息。
13.一种实现包括隐私方面的发现协议的客户端设备,所述客户端设备包括:
至少一个处理器;和
存储指令的至少一个存储器,所述指令当由所述至少一个处理器执行时使得所述客户端设备执行包括以下的步骤:
针对与存储在所述客户端设备的通讯录中的联系人相关的个人信息数据(PID)项生成标识符和第一散列值;
将包括所述标识符和密钥的请求传输到服务,所述密钥包括所述第一散列值的N个最高有效位;
接收对所述请求的响应,所述响应包括所述标识符和已利用与向所述服务注册的潜在联系人相关联的第二散列值进行加密的有效载荷;以及
响应于确定由所述客户端设备生成的所述标识符匹配包括在所述响应中的所述标识符:
尝试利用所述第一散列值解密所述有效载荷以访问包括在所述有效载荷中的与所述潜在联系人相关的信息,其中:
当所述有效载荷能被解密时,那么所述联系人与所述潜在联系人匹配并且所述有效载荷的解密版本包括已识别格式的与所述潜在联系人的用户账户相关联的信息,或者
当所述有效载荷不能被解密时,那么所述联系人与所述潜在联系人不匹配并且所述响应被丢弃。
14.根据权利要求13所述的客户端设备,其中基于所述PID项的归一化版本来生成所述PID项的所述第一散列值。
15.根据权利要求14所述的客户端设备,其中所述PID项包括电话号码或电子邮件地址中的一者。
16.一种客户端设备,所述客户端设备实现具有隐私方面的发现协议,所述客户端设备包括:
用于生成通用唯一标识符(UUID)的装置;
用于生成从与存储在所述客户端设备的通讯录中的联系人相关联的信息项导出的第一散列值的装置;
用于向联系人发现服务传输请求的装置,所述请求包括所述UUID和所述第一散列值的至少一部分;
用于接收对所述请求的响应的装置,所述响应包括所述UUID和加密的有效载荷,所述加密的有效载荷已利用与潜在联系人相关的对应信息项的第二散列值作为加密密钥进行了加密;以及
用于响应于确定由所述客户端设备生成的所述UUID匹配包括在所述响应中的所述UUID而执行以下操作的装置:
利用从与存储在所述客户端设备的所述通讯录中的所述联系人相关联的所述信息项导出的解密密钥来确定是否能够解密所述加密的有效载荷;以及
当所述加密的有效载荷能被解密时,那么所述联系人与所述潜在联系人匹配并且所述加密的有效载荷的解密版本包括与向所述联系人发现服务注册的所述潜在联系人的用户账户相关的信息,或者
当所述加密的有效载荷不能被解密时,那么所述联系人与所述潜在联系人不匹配并且所述响应被丢弃。
17.根据权利要求16所述的客户端设备,其中响应于所述请求,所述联系人发现服务被配置为查询分布式数据库,所述分布式数据库将N位的每个密钥与零个或更多个潜在联系人相关联。
18.根据权利要求17所述的客户端设备,其中针对每个潜在联系人预定义所述加密的有效载荷并将所述加密的有效载荷存储在所述分布式数据库中。
19.根据权利要求18所述的客户端设备,其中包括在所述加密的有效载荷中的所述信息包括以下中的至少一者:
所述潜在联系人的名字;
所述潜在联系人的所述用户账户的标识符;
所述潜在联系人的缩略图;
用于所述潜在联系人的图像的位置的通用资源定位符(URL);或者
用于所述潜在联系人的概况的位置的URL。
20.根据权利要求16所述的客户端设备,其中所述信息项包括电话号码或电子邮件地址中的一者。
CN201980030978.3A 2018-05-07 2019-04-11 具有隐私方面的联系人发现服务 Active CN112106337B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201862668173P 2018-05-07 2018-05-07
US62/668,173 2018-05-07
US16/137,392 2018-09-20
US16/137,392 US10949564B2 (en) 2018-05-07 2018-09-20 Contact discovery service with privacy aspect
PCT/US2019/027063 WO2019217031A1 (en) 2018-05-07 2019-04-11 Contact discovery service with privacy aspect

Publications (2)

Publication Number Publication Date
CN112106337A CN112106337A (zh) 2020-12-18
CN112106337B true CN112106337B (zh) 2023-07-14

Family

ID=68385306

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201980030978.3A Active CN112106337B (zh) 2018-05-07 2019-04-11 具有隐私方面的联系人发现服务

Country Status (4)

Country Link
US (3) US10949564B2 (zh)
EP (1) EP3791560A4 (zh)
CN (1) CN112106337B (zh)
WO (1) WO2019217031A1 (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10389708B1 (en) * 2019-01-03 2019-08-20 Capital One Services, Llc Secure authentication of a user associated with communication with a service representative
WO2020178771A1 (en) * 2019-03-05 2020-09-10 Textnow, Inc. Systems and methods for suggesting contacts
US11397816B2 (en) * 2019-07-08 2022-07-26 Dell Products L.P. Authenticated boot to protect storage system data by restricting image deployment
US11075905B2 (en) * 2019-12-09 2021-07-27 Google Llc Requesting and transmitting data for related accounts
US11552984B2 (en) * 2020-12-10 2023-01-10 KnowBe4, Inc. Systems and methods for improving assessment of security risk based on personal internet account data
EP4040319B1 (en) * 2021-02-09 2022-12-14 Axis AB Devices and methods for safe storage of media containing personal data and erasure of stored personal data
CN115002269B (zh) * 2021-03-01 2023-03-24 华为技术有限公司 读取通讯录的方法、装置、系统及计算机可读存储介质
CN113536367B (zh) * 2021-06-11 2023-10-10 深圳市优克联新技术有限公司 一种注册方法、隐私服务器、业务信息服务器及注册系统
CN113726764B (zh) * 2021-08-27 2023-03-24 杭州溪塔科技有限公司 一种隐私数据传输方法及装置
US12105848B2 (en) * 2022-08-19 2024-10-01 Telesign Corporation User data deidentification system

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1505309A (zh) * 2002-11-20 2004-06-16 安全地处理被用于基于web的资源访问的客户证书
CN101394403A (zh) * 2007-09-20 2009-03-25 柯尼卡美能达商用科技株式会社 数据传输设备、数据传输系统和地址注册方法
CN105164689A (zh) * 2013-04-30 2015-12-16 令牌一号控股有限公司 用户认证

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1417555A2 (en) * 2001-06-18 2004-05-12 Daon Holdings Limited An electronic data vault providing biometrically protected electronic signatures
US7461263B2 (en) * 2003-01-23 2008-12-02 Unspam, Llc. Method and apparatus for a non-revealing do-not-contact list system
US7606788B2 (en) * 2003-08-22 2009-10-20 Oracle International Corporation Method and apparatus for protecting private information within a database
US8078885B2 (en) * 2007-07-12 2011-12-13 Innovation Investments, Llc Identity authentication and secured access systems, components, and methods
US9183291B2 (en) * 2009-01-27 2015-11-10 Apple Inc. Mobile content capture and discovery system based on augmented user identity
US8285860B2 (en) * 2009-03-16 2012-10-09 Apple Inc. Efficient service discovery for peer-to-peer networking devices
GB2475252A (en) * 2009-11-10 2011-05-18 Skype Ltd A hashing scheme is used to facilitate identifying the presence of matching information items on different network nodes without disclosing the information.
US9603171B2 (en) * 2009-12-10 2017-03-21 Apple Inc. Contact information management methods and apparatus
US20110295721A1 (en) * 2010-03-01 2011-12-01 Apple Inc. User information and distribution system
US8600360B1 (en) * 2010-10-01 2013-12-03 Wallrust, Inc. Method and system for connecting people in a social network
CA3179622A1 (en) * 2010-10-08 2012-04-12 Brian Lee Moffat Private data sharing system
US8909707B2 (en) * 2011-03-24 2014-12-09 Yammer, Inc. Method of virally expanding social networks
EP2506177A1 (de) 2011-04-01 2012-10-03 Palio AG Verfahren und Vorrichtung zum Vergleich von Identifikationsdaten
US8819448B2 (en) * 2011-04-29 2014-08-26 Georgetown University Method and system for managing information on mobile devices
US20120311036A1 (en) * 2011-06-03 2012-12-06 Huhn Derrick S Friend recommendation system and method
US20140006517A1 (en) * 2012-07-02 2014-01-02 WUPIMA, Inc. System and method for social invitations to facilitate playing and sharing of mobile application or mobile game on mobile device
US9106411B2 (en) * 2012-09-30 2015-08-11 Apple Inc. Secure escrow service
CA2887421A1 (en) * 2012-10-05 2014-04-10 David Welford Systems and methods for amplifying light
DE102012111383A1 (de) * 2012-11-23 2014-05-28 comForte 21 GmbH Computerimplementiertes Verfahren zum Ersetzen eines Datenstrings
EP2779016B1 (en) * 2013-03-15 2018-10-31 Qnective AG Automated contact list matching with improved privacy
US9779224B2 (en) * 2014-05-05 2017-10-03 Securekey Technologies Inc. Methods and systems for client-enhanced challenge-response authentication
US11404146B2 (en) * 2014-05-30 2022-08-02 Apple Inc. Managing user information—data type extension
US20160112369A1 (en) * 2014-10-21 2016-04-21 Michael Boodaei System and Method for Validating a Customer Phone Number
CN106302312B (zh) * 2015-05-13 2019-09-17 阿里巴巴集团控股有限公司 获取电子文件的方法及装置
US20170161746A1 (en) * 2015-12-04 2017-06-08 Xor Data Exchange, Inc Compromised Identity Exchange Systems and Methods
EP3414694A4 (en) * 2016-02-12 2019-10-23 Pegasus Media Security, LLC SAFETY IMPROVED PORTABLE DATA STORAGE AND PROCESSOR FOR SAFE AND SELECTIVE ACCESS TO GENOMIC DATA
US10558817B2 (en) * 2017-01-30 2020-02-11 Foley & Lardner LLP Establishing a link between identifiers without disclosing specific identifying information
US11366921B2 (en) * 2017-02-22 2022-06-21 Ringcentral, Inc. Encrypting data records and processing encrypted records without exposing plaintext
DE102017125930A1 (de) * 2017-11-07 2019-05-09 Comforte Ag Computerimplementiertes Verfahren zum Ersetzen eines Datenstrings durch einen Platzhalter
US10819520B2 (en) * 2018-10-01 2020-10-27 Capital One Services, Llc Identity proofing offering for customers and non-customers
US20210326594A1 (en) * 2020-04-17 2021-10-21 James Patrick COSTELLO Computer-generated supplemental content for video
US12039078B2 (en) * 2020-10-27 2024-07-16 Google Llc Cryptographically secure data protection
JP7376727B2 (ja) * 2020-10-27 2023-11-08 グーグル エルエルシー 暗号学的に安全な要求の検証

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1505309A (zh) * 2002-11-20 2004-06-16 安全地处理被用于基于web的资源访问的客户证书
CN101394403A (zh) * 2007-09-20 2009-03-25 柯尼卡美能达商用科技株式会社 数据传输设备、数据传输系统和地址注册方法
CN105164689A (zh) * 2013-04-30 2015-12-16 令牌一号控股有限公司 用户认证

Also Published As

Publication number Publication date
US20240211627A1 (en) 2024-06-27
WO2019217031A1 (en) 2019-11-14
EP3791560A4 (en) 2022-01-26
EP3791560A1 (en) 2021-03-17
US20210224420A1 (en) 2021-07-22
US20190340385A1 (en) 2019-11-07
CN112106337A (zh) 2020-12-18
US11921883B2 (en) 2024-03-05
US10949564B2 (en) 2021-03-16

Similar Documents

Publication Publication Date Title
CN112106337B (zh) 具有隐私方面的联系人发现服务
US11429729B2 (en) Buckets with policy driven forced encryption
JP6838799B2 (ja) キーエクスポート技術
US10735193B1 (en) Decentralized encryption and decryption of blockchain data
US10826879B2 (en) Resource-based cipher suite selection
US10666684B2 (en) Security policies with probabilistic actions
US10090998B2 (en) Multiple authority data security and access
US10097522B2 (en) Encrypted query-based access to data
US8271424B2 (en) Privacy and confidentiality preserving reporting of URLs
US11698986B1 (en) Decentralized encryption and decryption of blockchain data
US9519696B1 (en) Data transformation policies
US9807100B2 (en) System and method for private social networking
US9596263B1 (en) Obfuscation and de-obfuscation of identifiers
TW200817949A (en) Encrypted data search
US11811950B1 (en) Dynamic response signing capability in a distributed system
US11671531B1 (en) Techniques for managing communications between devices
JP6568869B2 (ja) データ保護サービスの加入者のユーザ識別及び/又はユーザデータを保護及び/又は匿名化するための方法及びシステム、移動通信ネットワーク、プログラム及びコンピュータプログラム製品
Ray et al. Design of an efficient mobile health system for achieving HIPAA privacy-security regulations
JP6965885B2 (ja) 情報処理装置、情報処理方法、及び、プログラム
US10389719B2 (en) Parameter based data access on a security information sharing platform
Ribeiro et al. Pseudonymization approach in a health IoT system to strengthen security and privacy results from OCARIoT project
Jneid et al. Cloud Application Model
Kalyanaraman et al. Privacy Preserving Integrated Way with Cloud Security

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant