一种向用户提供产品和/或服务而不损害其隐私的基于软件的开关的制作方法

文档序号:17534480发布日期:2019-04-29 13:50阅读:196来源:国知局
一种向用户提供产品和/或服务而不损害其隐私的基于软件的开关的制作方法

本申请是2017年8月7日提交的第15/671021号美国专利申请的一部分延续,并主张2016年9月9日提交的第62/385515号临时申请的优先权,两项申请的内容以引用方式并入本文中。

背景

互联网和网络上有丰富的服务体验。新发明,如基于区块链的系统,设想了称为智能合约的计算机程序,为智能设备如自动驾驶汽车提供服务。进一步设想,整体服务体验可以分解为多个组件,其中多个服务供应商可以提供各自的组件。许多智能设备、智能计算机程序和服务体验还利用从位于用户计算设备中的传感器设备或用户设备所在附近的物理环境中获取的数据。因此,需要使用自动驾驶汽车的服务体验可能会收集越来越多的用户数据。大多数服务体验也基于用户提供的信息。消费者越来越表现出关心保护用户数据隐私的迹象。对于在线网络中通过传感器设备收集大量用户数据过程中提供保护用户数据隐私的服务系统将具有巨大的社会价值和商业效益。



技术实现要素:

根据本发明所述主题的一个方面,提供了一种便于向用户交付产品和/或服务的系统和方法。根据该方法,将第一可执行计算机代码插入到建立用户会话的计算环境中。第一可执行计算机代码与提供产品和/或服务的实体相关联。在计算环境中建立一个用户会话。为了响应插入到用户会话中的第一可执行计算机代码,在用户会话中创建了第一虚拟机。第一可执行计算机代码是在第一虚拟机上执行,执行第一可执行计算机代码包括通过通信网络和从用户的用户计算设备获取完成产品和/或服务交付所需的用户计算设备必须的所有信息的第一适当子集。所有信息的第一适当子集小于完成产品和/或服务交付所需的来自用户计算设备的所有信息的完整集合。信息的第一适当子集由第一可执行计算机代码处理。第一可执行计算机代码产生第一输出数据。通过在第一可执行计算机代码获得第一信息之前模糊用户的用户信息属性的实体,选择性地启用或禁用信息的第一适当子集中的信息中介。在执行完第一可执行计算机代码后终止第一虚拟机。第二可执行计算机代码至少基于由第一可执行计算机代码产生的第一输出数据的第一部分而获得。第二可执行计算机代码被插入到计算环境中建立的用户会话中。为了响应插入到用户会话中的第二可执行计算机代码,在用户会话中创建第二虚拟机。第二可执行计算机代码在第二虚拟机上执行,执行第二可执行计算机代码包括通过通信网络和从用户计算设备获取完成产品和/或服务交付所需的用户计算设备必须的所有信息的第二适当子集。所有信息的第二适当子集小于完成产品和/或服务交付所需的来自用户计算设备的所有信息的完整集合,并且还包括有不属于第一适当子集中的信息。信息的第二适当子集由第二可执行计算机代码处理。第二可执行计算机代码产生第二输出数据。通过在第二可执行计算机代码获得第二信息之前模糊用户的用户信息属性的实体,选择性地启用或禁用信息的第二适当子集中的信息中介。第二虚拟机在执行完第二可执行计算机代码后终止。至少部分基于由第二可执行计算机代码产生的第二输出数据,产品和/或服务被交付给用户计算设备的用户。

根据本发明所述主题的另一个方面,提供了一种通过通信网络进行交易的系统和方法。根据该方法,响应通过通信网络接收到的用户请求,在计算环境中建立用户会话。多个可执行计算机代码在计算环境中执行,每个执行交易的一部分,其中执行每一个可执行计算机代码包括通过通信网络和从用户计算设备获取完成交易所需的用户计算设备必须的所有信息的不同的适当子集。所有信息的每个适当子集都小于完成交易所需的来自用户计算设备需要的所有信息的完整集合。每个可执行计算机代码处理它所获得的信息的相应子集。通过实体选择性地启用或禁用不同适当信息子集中的信息中介,该实体在可执行计算机代码获取信息之前,模糊用户的用户信息属性。在每个可执行计算机代码的执行过程中,信息仅在多个可执行计算机代码之间交换,其交换方式是获取之前其中一个可执行计算机代码输出的加密输出信息。对加密的输出信息进行的加密操作使用户需要一个或多个解密密匙才能解密输出信息。在完成交易所需的最后一个可执行计算机代码的执行之后,将终止用户会话,从而使计算环境中不再存在信息的每个子集。

根据本发明所述主题的另一方面,为在一个或多个处理器上运行的计算机仿真系统提供系统和方法,以便于服务提供商通过通信网络向用户交付产品和/或服务。根据该方法,通过创建会话来启动产品/服务交付过程。会话中运行第一虚拟机。第一虚拟机配置为仅支持预先确定的操作集。第一虚拟机运行第一计算机程序。用户计算设备被邀请进入与第一计算机程序的会话。模糊的用户数据通过通信网络从用户计算设备获取。模糊的用户数据是第一计算机程序向用户交付产品和/或服务所需的用户数据。响应来自第一计算机程序的请求,将导致验证模糊用户数据中包含的用户数据。验证是在不披露模糊用户数据中包含的任何用户数据的情况下完成的,这样,第一计算机程序能够向用户交付产品和/或服务,在产品和/或服务完成交付后不具有任何关于用户的、在交付供应过程开始前第一计算机程序所不具备的信息。在收到来自用户计算设备的请求后用户计算设备将从包含第一计算机程序的会话删除。

附图说明

图1显示了在线购买图书时分散交易的要素。

图2显示了分散交易中隐含的示例性链接信息。

图3显示了本发明的整体操作环境的一个示例。

图4a显示了传统的dh算法。

图4b显示了dh算法的一种说明性扩展。

图5a、5b和5c说明了扩展到dh算法的操作。

图6显示了目录中可能包含的内容的示例。

图7显示了数据库处理器对包含单一vm的单一会话的工作。

图8a显示了示例性计算机程序。

图8b显示了计算机程序指令及其语义的示例。

图9显示了在数据库程序的操作中隐含的图8a程序的示例性重写。

embodiment.

图10显示用于说明性实施例的示例性系统架构。

图11a、11b和11c描述说明性实施例的操作细节。

图12显示第一说明性商业实施例。

图13a和13b显示第二说明性商业实施例。

图14显示了从一个服务供应商到另一个服务供应商的示例性服务可移植性。

图15a是图10的副本。

图15b显示了图15a中用户计算设备100和计算环境200的扩展视图,其中计算机/应用程序,cp,已注入(分布式)计算环境中。

图15c显示了一个新的逻辑网络元素,即隐私开关,旨在为消费者提供隐私保护服务。

图15d显示了图15c的隐私开关的一个实施例。

图16显示了ups/用户计算设备、sps和计算环境200之间的通信路径。

图17a显示了认证提供者的一般架构。

图17b显示了向用户计算设备提供凭据的一般方法。

图17c总结了图17b的方法。

图18a是说明生成加密密匙和对象密匙的生成引擎(kge)的操作的功能框图。

图18b是说明生成密码证明的证明生成引擎(pge)的操作的功能框图。

图18c是说明验证加密凭据准确性的验证引擎(pve)的操作的功能框图。

图19a、19b和19c显示了输入到kge并由kge输出的说明性组件。

图20a和20b显示了pge输入和输出的说明性组件。

图21显示了pve的说明性工作。

图22a显示了身份验证提供者生成的密匙。

图22b显示了身份验证提供者生成的凭据。

图22c显示了由用户计算设备生成的凭据。

图22d显示了服务供应商的凭据验证。

图23显示了示例性近似对象。

图24a、24b和24c说明使用本发明所述方法的示例性服务。

一些图显示了描述计算机程序之间示例性交互的消息序列图。一般来说,这些图形并不描绘这些程序(即计算实体)可能运行的物理计算机。

具体实施方式

动机

web服务和web商业模型非常依赖于从消费者处收集的关于消费者的数据。定制的、个性化的服务和用户体验使用从消费者收集的数据构建,在某些情况下,是从第三方提供商处获取的数据来构建的。广告、内容和服务营销、建议等都部分基于用户数据及其分析结果。随着网络的发展能够支持传感器和基于传感器的设备,如智能汽车、智能家用电器等,用户数据的收集有望增加。

与此同时,用户群体意识到网络企业存储大量个人数据的事实,这种意识导致许多用户质疑用户数据的存储和使用。有关数据隐私的担忧正在上升。企业数据的中断和泄露以及企业软件系统的黑客行为加剧了这种担忧。

在一些实施例中,本发明描述了一种系统和方法,通过该系统和方法可以构建一个开放的、分散的市场,该市场提供了解决这些问题的若干特征。术语“开放”是指多个服务供应商在没有专有接口的情况下进行交互的可能性。“分散”一词是指没有一个单独的实体处于控制之中,并且各个实体可以联合起来提供一个整体服务的概念。

本文所述的发明允许用户向一个或多个服务提供商揭示个人数据的选定元素并获得服务。但是,这种用户数据的提供是由用户控制的,该用户将其数据透露给计算实体,而计算实体被设计为无法保留提供的数据或其存储。也就是说,计算结构接收用户数据,在稍后描述的“无菌”环境中执行自己,然后终止自己。

一个或多个服务提供商可被组织为执行不同功能的单独实体,这些功能共同构成向用户提供的产品和/或服务。作为这种安排的一个例子,考虑一个在线图书销售商、支付处理平台和托运人,他们签订了一项业务安排,用户可以通过该安排从销售商购买图书,使用支付处理平台支付图书费用,并由托运人管理的运输物流接收图书。

在本发明中,图书销售商、支付处理平台和托运人由可执行计算机代码表示,例如计算机程序或应用程序,这些程序或应用程序经过特殊配置(稍后更详细地描述),并由用户设备接收(例如下载)。然后,用户设备将程序注入到包含数据库处理器的(分布式)计算环境中。为了便于说明,个别可执行计算机代码将被称为计算机程序,但更一般地说,可以使用以本文所述方式配置的任何适当类型的计算机代码。

在继续之前,定义将在整个描述中使用的一些术语将会很有帮助。

如本文所用,术语“虚拟机”应具有本领域普通技术人员所使用的常规含义。通常,虚拟机是使用硬件、固件、软件或它们的组合来模拟物理计算机系统。例如,“操作系统级虚拟化”是实现虚拟机的一种已知技术。在这种技术中,一台物理计算机在操作系统级别被虚拟化,使多台“隔离”和“安全”的“来宾”(软件)计算机(即虚拟机)能够在一台物理计算机上运行。术语“安全”意味着只有预先确定的操作才能在来宾计算机中执行。术语“隔离”意味着操作可能无法访问其他来宾机中的资源。所有来宾计算机共享同一内核,但可能有单独的用户空间。因此,在来宾/虚拟机中运行的计算机/应用程序将其视为独立的计算机系统。使用操作系统级虚拟化技术的软件系统示例包括solariscontainers,icorevirtualaccounts,linux-vserver等。

我们注意到支持虚拟机的另一种已知技术使用一个管理程序或虚拟机监视器,允许来宾机运行自己的内核。例如,管理程序可以支持三个来宾机/虚拟机,分别在一台物理计算机上运行macos、windows和linux。主要的unix供应商销售虚拟化硬件,如sunmicrosystems、hp等。

在后面的描述中,计算环境(或简单地说,环境)是硬件、软件和/或固件的可编程安排。术语“分布式计算环境”是指硬件、固件和软件的互连可编程配置。术语“数据库处理器”可在一个实施例中表示(分布式)计算环境的操作系统(os),所述操作系统经适当配置以支持如本文所述的虚拟机、会话管理等功能。

本文所使用的术语“会话”是指两个或多个通信设备或计算机程序之间的信息交互过程,在该过程中,交互使用的信息可以存储在一个特定的存储器或一组寄存器中,这些存储器或寄存器随后被清除(“拆卸”或“终止”)。设备和/或计算机程序也可以从会话中被邀请和删除,或者可以在会话期间启动或终止一个或多个对话框,其中对话框是设备和/或计算机程序之间交互的数据项序列。

某些常用操作(如登录、登出、注册、注销等)可能包含或涉及会话概念的一个或多个方面。因此,登录到服务器的来宾机设备可能包含在来宾机和服务器之间建立会话。计算机程序可以向提供即时消息服务的服务器注册;这种操作也可能需要建立会话。

我们还将有机会使用“短暂”一词。该术语表示在由计算机程序创建的会话中出现的数据项,在会话终止之前或作为会话终止过程的一部分清除。例如,在会话中运行的计算机程序可以从用户接收和存储输入数据项,也可以从存储器单元读取数据项。然后,计算机程序可以完成执行,会话可以终止、清除或拆卸。作为会话终止过程的一部分,存储单元和计算机系统的任何内部寄存器也被清除。这样,数据项就被认为是短暂的。

应该注意的是,数据处理器执行的各种操作不是由传统的数据库处理器执行的。尤其是,数据库处理器被配置为执行三个操作。

首先,当连接到正在寻求服务的用户计算设备时,数据库处理器在用户计算设备与其自身之间创建一个会话。在一些实施例中,用于在用户设备和数据库处理器之间交换数据的通信通道优选是安全的。接下来的讨论会有一个可以使用的安全协议的例子。

其次,数据库处理器生成一个或多个虚拟机(vm),这些虚拟机配备有上述计算机程序之一。虚拟机可以按顺序或并行方式生成。每个虚拟机执行已提供的计算机程序之一,每个程序都可能产生限制的输出,后文会进一步解释。虚拟机被配置为在所提供的计算机程序执行结束时自行终止。

最后,数据库处理器终止用户设备和数据库处理器之间建立的会话。如果有以下情况则可能发生此操作,例如数据库处理器确定已满足来自用户设备的服务请求,或者数据库处理器收到来自用户设备的特殊命令。数据库处理器清除会话期间各个虚拟机输出的任何数据。我们可以说会话已被“清除”,或者我们“关闭”会话以表示清除输出数据的操作。

因此,尽管现有技术已知“数据库处理器”一词,但可以看出,在本发明中使用它需要一些新的创新和特性,例如虚拟机的创建和管理等。

示例(在线购买图书)

我们首先考虑web服务提供商(如在线书店)的示例。目前有几个这样的机构存在,它们通常允许消费者通过内部支付系统浏览和选择图书并购买标的物。然后,购买的图书可以由另一个内部运输操作交付。因此,在线书店提供“一站式”服务。

消费者需要向服务提供商提供的信息可能包括用户名、账单地址、送货地址、电话号码、信用卡信息、电子邮件地址和用户id/密码。(服务提供商还可以从第三方提供商处获取有关消费者及其行为的其他信息,这些第三方提供商通过cookies和其他机制收集有关用户的信息。)

消费者可有权询问是否需要提供所有此类信息。如果我们假设企业被分散到不同的实体中,例如卖方、支付和托运人实体,那么消费者可以只向各个实体提供适当的信息子集。例如,可以给不需要任何其他信息的托运人只提供他的托运地址。同样,如果标的物的支付可以被验证,卖方只需要知道被购买的标的物。支付处理平台只需要验证消费者和资金。

因此,通过将在线服务提供商分散到单独的实体中,消费者可以根据需要向各个实体提供其信息的子集。

然而,消费者现在承担着管理“链接信息”的执行操作的负担,所述链接信息将单个操作(或子事务)绑定到单个交易中。换言之,单独的子事务可能包括选择一本书、支付和安排托运。链接信息告诉支付处理平台购买的是哪个卖方和标的物。另一条链接信息告诉托运人提货的标的物和地点。支付处理平台需要告知卖方支付的标的物以及其是代表谁支付的等。

由于消费者不希望受到此类行为的负担,在线系统允许在实体之间传递状态信息,如卖方、支付方和托运人。状态信息包含上下文信息,允许将子事务链接到单个交易中。在现有技术中,标记或令牌等术语已用于描述包含共享状态信息的计算构造。

在业务实体之间自动共享令牌和标签可以使消费者免于管理与单个子事务相关的“链接信息”。但是,不利的是,第三方可以使用共享令牌/标记重新构造整个交易,从而将用户信息收集到用户配置文件中。例如,浏览器“cookies”中包含的用户信息通常用于构建用户的集成配置文件。

一个相关问题是,接收和使用共享令牌/标记的实体必须信任这些工具。恶意用户可能会将虚假或恶意信息插入到令牌或标记中,例如,将资金或托运重新定向到恶意地址。

因此,将服务提供商分散到不同的实体似乎仍然允许第三方企业聚合用户信息。它还引入了关于共享信息的其他安全和信任问题。

因此,需要一项发明,能够提供具有以下特征的系统和方法。

·在线服务由一组计算机程序提供,这些程序组织成开放的、分散的市场,即分布式计算环境或计算机程序网络。也就是说,业务实体由计算机程序表示,这些程序通过开放的网络环境相互连接。

·用户信息分为两类(i)显式信息和(ii)潜在信息。消费者向计算机程序提供显式信息,使其可以执行其功能,例如,程序需要消费者提供的送货地址,以便消费者可以在指定的地址接收货物。潜在信息,例如位置信息,由与用户设备相关联的传感器设备提供。

·不能通过链接计算机程序输出的信息以获得集成的用户配置文件。

·尽管有上述要求,但用户仍能获得集成体验。

消费者购买图书并将其交付至其地址的典型在线交易包括以下内容。(以下描述中以大写字母开头的名称表示计算机程序。)

·卖方要求客户在订购时必须位于预先确定的地理区域内,例如纽约州。(这种限制的一个原因可能是当地税法。)

·客户必须从在线支付处理平台安排支付。卖方需要支付证明,即支付金额和标的物。

·支付处理平台需要对用户进行身份验证。

·卖方将提供购买的标的物,以便托运人提取。托运人需要一个令牌(在一个实施例中由消费者提供)来获得提货和交货地址信息。托运人需要确认卖方已授权提取的标的物。

我们假设消费者在计算环境中使用设备(例如智能手机,以下简称用户计算设备)与计算机程序进行交互。因此,消费者也可以被认为是由运行在其计算设备上的计算机程序表示的。消费者john希望利用现有技术从卖方处购买一个标的物,可采取以下步骤(参见图1)。

在步骤1中,john访问支付处理平台,并根据需要向支付处理平台提供信息以建立帐户。(注意:此操作可能被视为初始设置阶段的一部分。)john将获得一个帐号以供将来使用。

在步骤2中,john访问了位置认证机构(lca),并从其支持gps的移动设备提供数据。lca向john发出一个表示其位置的令牌(令牌-1)。

在步骤3中,john访问卖方并向卖方提供令牌-1,卖方验证令牌是否有效以及john的位置是否满足卖方的限制。john选择要购买的标的物。卖方给他发了一张令牌(令牌-2)。

在步骤4中,john向支付处理平台提供令牌-2,支付处理平台验证令牌是否有效,对john进行身份验证,并向john提供令牌(令牌-3),表明他已根据令牌-2中包含的信息处理了支付。

在第5步中,john再次拜访卖方并出示令牌-3。卖方确认令牌-3有效,并已收到所选标的物的付款。作为验证的副产品,卖方收到关于购买的标的物、付款金额和买方的一些信息,例如john的姓名或客户编号。卖方向john发行新令牌(令牌-4)。

在步骤6中,john访问托运人并出示令牌-4。托运人验证令牌是否有效,以及托运货物是否准备就绪,并获得作为验证过程副产品的交货地址(如后文所述)。

在步骤7中,托运人使用令牌-4从卖方处提货,并将货物交付到步骤6中提供的交货地址。

(为了说明的目的,我们假设了上述服务提供实体的某种分布式安排;实际上,在不限制本发明的情况下,一个或多个服务提供实体可以合并或进一步分割。)

上述过程值得注意的是以下观察结果。

·用户必须执行七个步骤中的六个(包括初始设置步骤)。

·无论消费者是由单个提供者提供服务还是由一组提供者提供服务,用户提供的信息总量都是相同的。

还应注意,计算机程序可以使用各种令牌来验证信息。首先,卖方可以使用令牌-1验证买方是否满足位置约束。接下来,卖方可以验证买方已经支付了购买费用(使用令牌-3),并且买方满足位置限制(令牌-1)。作为链接现象的另一个例子,请注意,托运人可以验证一批货物是否已准备好,该批货物是否已付款,以及买方是否满足位置限制。图2中标记a、b、c和d的箭头描述了链接现象。

换句话说,一个可以访问所有令牌的实体可以有效地重新构建整个交易,从而获得一个集成的用户配置文件。

值得注意的是,先进的分散和开放系统以及环境(如比特币和基于分类记账的区块链系统)报告说,某些实体能够从计算机程序(如智能合约或交易)链接信息创建复合用户配置文件。

因此,为了保护用户的私有数据,需要有一种解决方案,防止第三方使用客户数据构建此类集成/复合用户配置文件,例如,将图2中的链接信息a、b、c和d组合在一起。这是本发明的目标。

在以下说明中,我们注意到两种情况。

1.用户数据可通过计算机程序从位于用户设备内的传感器获取,例如,来自智能手机的gps位置数据,或从用户设备外部的传感器设备获取,例如,与用户智能手机关联的健身手环。

2.消费者可以通过用户输入向服务提供商提供信息,例如通过输入送货地址,或者用户的设备可以通过用户设备上运行的一个或多个应用程序提供用户数据。

本文所述主题的一些实施例涉及上述两种情况。

发明的总体系统和方法

图3描绘了可实施本文所述主题的操作环境的一个示例的高级示意图。说明性的用户计算设备100和150可与内部传感器(例如传感器51)或外部传感器(例如传感器52)关联。外部传感器可以通过蓝牙、wi-fi等通信链路与其各自的用户设备通信。用户计算设备的示例包括但不限于移动通信设备(例如,移动电话、智能电话)、个人计算机、笔记本电脑、平板电脑、智能手表、可穿戴计算机(例如,健身手环)、个人数字助理(pda)、可穿戴的医疗设备(如智能绷带)等。

用户计算设备可以使用无线和/或有线网络链接连接到包含执行提供给它的计算机程序的数据库处理器203的分布式计算环境200,所述数据库处理器203即运行计算机程序的硬件处理器,类似于执行计算机程序的编译器。为了进行类比,编译器执行使用计算机编程或规范语言(如fortran)编写的程序。数据库处理器使用下面描述的规范语言执行计算机程序。

当请求执行适当的指定计算机程序时,数据库处理器203生成一个称为会话的计算对象,如图3所示的会话202-1和202-2。在分布式计算环境200中,数据库处理器203可以在任何给定时间运行任意数量的会话。会话可以包含一个或多个虚拟机vm。在图3的示例中,两个会话202-1和202-2包含多个vm204。

会话还包含数据存储,其中数据被分类为两个列表,称为tl(令牌列表)和pl(程序列表)。例如,会话202-1包括数据存储201-1,会话202-2包括数据存储201-2。通常每个会话只创建一个数据存储。之后将提供数据库处理器对tl和pl列表中的数据执行的操作的详细信息。

在实践中,在一些实施例中,数据库处理器可以实现为计算机虚拟化程序,其中操作系统的内核允许创建和终止一个或多个用户空间,用户空间中可以创建一个或多个会话对象。数据库处理器在会话对象中创建一个或多个虚拟机,这些虚拟机对会话中数据存储中的tl和pl列表进行操作。计算机软件虚拟化在现有技术中是众所周知的。

来自传感器设备的数据

用户计算设备是包含一个或多个处理器的设备,这些处理器具有一个或多个网络连接(固定和/或无线),并且可能有一个或多个传感器检测设备或其所在环境的状态。如前所述,用户计算设备的例子包括智能手机、平板电脑、笔记本电脑/台式电脑、智能汽车、智能家用电器、可穿戴电脑等。

参考图3中的说明性示例,我们注意到传感器51可产生分布式计算环境200从用户设备100接收并存储在数据存储201中的数据,例如地理位置数据、环境温度、用户运动数据等。

对此类传感器数据进行操作的计算机程序可能需要确保数据由受信任的传感器生成。为了实现信任模型,一个实现过程如下。

我们要求向计算机程序提供数据的用户计算设备相关联的传感器(内部或外部)必须首先在计算机程序中注册。

在两个实体之间建立安全连接在现有技术中是众所周知的。例如,我们可以使用diffie-hellman(dh)方法。dh算法通过构造一种由两个通信方共享的秘密来操作。其工作原理如下。

让双方称为a和b。(我们可以假定a和b是计算机程序。)a和b同意两个素数,“g”和“p”。接下来,a生成一个秘密号码,称为“a”,b生成一个秘密号码“b”。“a”计算为:

ga(modp)=x

b计算为:

gb(modp)=y

a和b交换计算出的数字“x”和“y”。“a”发现他从“b”收到的数字“y”等于他生成的数字,即“x”。同样地,b发现他从a收到的数字“x”等于他生成的数字“y”。双方一致的发现基于整数乘法的求幂性和交换性的数学性质:

(gamodp)b(modp)=gab(modp)

(gbmodp)a(modp)=gba(modp)

图4a显示了两个名为alice和bob的计算机程序,它们使用传统的dh协议/方法来保护开放通道。我们简要描述了dh协议,以使读者熟悉协议的概念。

在步骤1中,alice和bob都同意整数“g”和“p”,在步骤2中,使用标准的dh算法在它们之间建立了一个安全通道。在步骤3中,alice选择一个随机整数“a”,计算(gamodp)并将结果发送到步骤4中的bob。bob在步骤5中选择一个随机整数“b”,计算(gbmodp)并在步骤6中将结果发送给alice。在步骤7a和7b中,alice和bob都计算k=(gabmodp)。在步骤8中,双方都同意将计算出的“k”用作将来在它们之间交换的消息的加密密匙。

使用dh协议可以确保程序alice和bob,如果使用计算出的密匙“k”,它们可以在开放的公共通道上安全地交换消息。也就是说,alice希望向bob发送消息“m1”,并使用函数encrypt(m1,k)=m2对其进行加密。bob收到“m2”后,可以使用函数decrypt(m2,k)=m1对其进行解密。

鉴于双方安全通信的dh算法是众所周知的,它也可以扩展到第三方或更多方。但是,此类扩展可能涉及参与方执行的额外求幂/加密步骤。在某些情况下,我们可能还需要在所有通信实体之间广播多条消息。因为求幂是一个昂贵的过程,而且我们可能有许多与用户设备相关联的传感器设备,因此对dh的这种扩展可能会变得非常昂贵。此外,传感器设备中可能没有能够执行求幂运算(或快速执行求幂运算)的硬件。因此,当考虑在具有多个传感器设备的信道中使用dh时,我们可能希望使用计算成本更低的方法。

众所周知,dh算法在某些情况下存在漏洞。(也知道有技术可以用来缓解这些漏洞。)但是,我们将传感器设备与已与第二方建立安全通道的第一方关联的方法并不依赖于使用dh算法来建立安全通道;任何在两方之间建立安全通道的算法都可以使用。

因此,我们对上述dh算法的描述纯粹是教学性的,且是一个可能的例子。任何在双方之间建立安全通道的方法都可以与我们的方法一起使用。

我们现在介绍了我们的方法,并注意到它体量轻,允许将多个传感器设备与用户计算设备相关联。也就是说,我们考虑传感器设备(s1、s2、s3等)可能与用户计算设备“ud”相关联的通道,而用户计算设备“ud”又与存储在数据库“db”中的数据上的计算机程序“a”有安全连接。我们可以将这种情况描述如下。

[s1,s2,s3,…]---ud---db---a

我们的方法一般可描述为以下步骤顺序(图4b)。图中显示了注册到计算机程序中的单个传感器设备。在实践中,几个传感器设备可以用一个计算机程序注册。传感器设备也可以注册到多个计算机程序中。

1.在“ud”、“db”和计算机程序“a”之间建立会话。

2.使用合适的算法在“ud”和“db”之间建立安全连接。在一个实施例中,我们使用dh算法建立安全连接,因此“ud”和“db”同意一个加密函数,比如基于“g”和模量“p”的k(基于共享秘密)。

3.程序“a”要求传感器设备注册自身,并向传感器设备发出注册标识符。传感器设备向用户设备提供哈希化的标识符。请注意,此处使用的函数与上面步骤2中商定的哈希函数不同。

4.传感器设备将传感器数据发送至“db”,使其被存储。

5.“a”从“db”请求传感器数据,并与某些参数一起重新定向到“ud”。

6.“a”根据步骤5中的参数及其先前发布的标识符(只有“a”和传感器设备“s1”获知)请求并接收“ud”的授权。

7.授权后,“a”从“db”访问数据。

8.上述步骤1中建立的会话被清除。

我们现在参考图5a,对上述过程进行更全面的描述。

在步骤1a中,我们在用户设备、第一计算机程序(在一些实施例中可能是本文所述的数据库处理器)和第二计算机程序之间建立会话。在步骤1b中,用户设备和第一计算机程序在“g”(基底)和“p”(基本模量)上达成一致。

在步骤2中,我们在用户设备和第一计算机程序之间建立了一个安全通道。可以使用dh或一些合适的算法。我们假设使用dh用于说明目的。

在步骤3中,传感器设备初始化,即触发或启动其软件逻辑,在步骤4a中,第二程序向传感器设备发出注册请求。我们可以假设第二计算机程序需要传感器数据。请求被发送到用户设备,因为第二计算机程序可能不知道传感器设备的地址。用户设备将请求连同第二计算机程序的地址转发给传感器设备。

在步骤4b中,传感器设备请求第二计算机程序提供标识符,并提供步骤5中标记为“d”的标识符。它还提供加密函数的名称,例如h(或加密函数的可执行代码)。(例如,传感器设备可能由其制造商预先配置了一个或多个加密功能)。在步骤6a中,传感器设备使用“h”函数哈希化“d”,并将结果发送给用户设备。请注意,用户设备不知道“d”,它只接收h(d)。要求加密功能“h”与步骤2中的加密功能“k”不同。

在步骤6b中,用户设备计算g^h(d)(“^”表示求幂运算)并将结果发送到数据库处理器。在步骤7中,传感器设备开始生成传感器数据,并将其发送到数据库处理器,由数据库处理器存储,以供其他计算机程序检索。

预期一个或多个计算机程序可以请求访问传感器数据,并且会利用用户设备授权这些计算机程序的请求,数据库处理器生成一个身份验证标识符a,并将其发送给用户设备(步骤8a和8b,参见图5b)。

用户设备现在执行步骤9所示的一系列计算(图5b)。这些步骤的目标是双重的。首先,我们希望将传感器设备标识符和身份验证标识符合并成一个秘密。这将允许用户设备在数据库处理器请求时验证传感器设备。

第二,将认证标识符合并成一个秘密,允许用户设备在被请求时(如下所示),将传感器设备验证到第二计算机程序(不同于数据库处理器)。

步骤9(参见图5b)中所示的计算导致3个参数t、u和v的推导,这些参数与数据库处理器生成的身份验证标识符以及分配给传感器设备的标识符“d”相关。(请注意,所有标识符都必须是整数,以便我们可以执行指定的计算。)

在步骤10中,用户设备将参数t、u和v发送到数据库处理器进行存储。需要注意的是,在设置dh安全通道时,数据库处理器和用户设备先前已经商定了基底“g”,并且对于不知道“g”的实体(如图5b中所示的计算机程序)来说得出参数t、u和v在计算上是困难的。还要注意,验证计算参数需要数据库处理器提供给用户设备的标识符“a”。

设置通道并存储各种派生参数后,我们现在考虑第二计算机程序请求访问传感器数据的情况(步骤11,图5c)。根据本发明的原则之一,数据库处理器需要用户设备的许可。同时,第二计算机程序希望确保传感器设备被授权提供所需的信息。

为了实现这两个目标,计算机程序被重新定向(步骤12a)以从用户设备获得许可。重新定向指令通过向其提供先前与传感器设备关联并由用户设备存储在数据库中的参数a、t、u和v而过载,如图5b所示。

在步骤12b中,第二计算机程序向用户设备发送标识符“d”(仅为第二计算机程序和传感器设备所知)和参数a、t、u和v。后者(步骤13c和13d)使用u和v以及基底(仅为它和数据库处理器所知)来派生z(如图所示),并将其与t(从第二计算机程序接收)的值进行比较。(请注意,z依赖于u和v的知识,进而取决于得知u、v、a等)。成功的匹配确保用户设备的a、t、u和v参数由数据库处理器提供给第二计算机程序。(回想一下,在不知道“g”和加密密匙k的情况下,计算机程序很难生成t、u和v。)

此外,用户设备在步骤13a和步骤13b中计算h(d),并将其与步骤6a中从传感器设备接收的散列值“d”进行比较。成功匹配表明第二计算机程序向传感器设备提供了标识符。

在步骤14中,用户设备将标识符“d”标记为已通过身份验证,并将其发送给数据库处理器,后者在步骤15中允许访问第二计算机程序。在步骤16中,第二计算机程序可以使用数据库处理器提供的授权向数据库处理器发出数据访问请求。

一旦数据访问完成,可以清除步骤1a中建立的会话(步骤17)。

涉及传感器装置的说明性实施例

作为使用上述方法的一个实际示例,考虑一个拥有智能车(例如,自动驾驶车辆)的人,该智能车配备有一个密匙串,允许该人控制车辆的各种功能,例如,解锁车辆、将车辆召唤到车主等待的位置等。

我们假设以下信函使用上述描述中的某些术语。

1.车辆的遥控钥匙与传感器装置相对应。

2.用户智能手机对应用户计算设备。

3.在计算机环境中运行的计算机程序称为“第一计算机程序”。

4.在智能车内的一个或多个处理器上运行的应用程序称为第二程序。

作为传感器设备(不同于遥控钥匙)的另一个例子,智能车可以安装一个设备来管理对收费站的支付,即收费车道上的设备触发过路缴费装置,该装置与设备交互,以根据预先设置的银行/信用卡帐户付款。也就是说,在这种情况下,我们可能有两个传感器设备(i)安装在车内的过路缴费装置,以及(ii)车主/驾驶员携带的遥控钥匙。如上所述,两个传感器设备可以与第二计算机程序(即在汽车处理器中运行的程序)建立独立的注册。

当前的通行费支付设备,例如纽约的ez通行证,与用户的银行账户永久相连,无关谁在任何特定时刻驾驶或控制车辆。使用本文所述的发明,可以优先将适当配置的通行费支付设备安装在汽车中并与驾驶员携带的用户设备连接。然后,用户设备授权通行费支付设备使用用户设备的用户/所有者指定的银行帐户。因此,如果用户john驾驶汽车并随身携带智能手机,则收费设备将向john的帐户收费。如果同一辆车是由不同的用户驾驶的,例如mary,她携带着她的智能手机,那么mary的银行账户将被收取通行费。因此,例如,汽车制造商可以向汽车提供预先安装的收费设备。此外,汽车租赁公司可以使用此类汽车,因为在当前实践中,租赁公司有责任支付通行费,因为他们“拥有”了通行费支付设备,即租赁汽车中的通行费支付设备与租赁公司的银行账户或信用卡相关联。

上述协议将传感器设备(例如,遥控钥匙或付费设备)与用户计算设备相关联。用户计算设备、第一和第二计算机程序在用户设备和第一计算机程序之间建立具有安全通道的会话。第一计算机程序可由汽车制造商的云计算环境执行,第二计算机程序,例如,可在智能汽车中提供的处理器上运行。(在某些实施例中,云计算环境可以定期提供——例如,下载操作可执行代码用于汽车中的一个或多个处理器,以便不需要时刻连接到云计算环境。)第二程序需要来自传感器设备的数据,以向驾驶员/所有者提供服务。在某些情况下,第二程序可能需要确定遥控钥匙在车的一定距离内。在其他情况下,第二程序可能需要确保密匙串得到授权,例如,用户设备是否授权密匙串进行通行费支付?

密匙串可用于启动车主/驾驶员不在车内的各种服务。例如,从遥控钥匙发出的命令可能会导致汽车行驶到指定的位置,或将汽车内部加热到一定的温度等。

重要的是要注意,车主/驾驶员信息不存储在车辆处理器中运行的第二程序中。第二程序可以读取第一程序存储的数据并使用该数据。(这方面在后面的描述中有进一步的解释。)在第二程序执行结束时,执行后一个程序的处理器的内存被清除。在车主/驾驶员会话结束时,会话数据也将被清除,接下来会有所描述。

因此,当车辆的处理器为用户执行服务时,车辆的设备只能访问用户的数据,而这些处理器在执行后不保留用户的数据。

关于加密密匙的说明

除了数据库处理器和用户计算设备根据上述说明商定的加密密匙外,我们假定用户设备还提供了一个或多个额外的加密/解密密匙。在后面提供的示例中,我们将有机会讨论加密或解密数据的必要性。为此,这些程序需要从用户设备中寻找相关密匙,而用户设备又可以使用内部策略提供密匙,例如,从已提供密匙的列表中随机选择提供密匙,或选择提供一个未在预定时间内使用的密匙等。

数据库处理器和虚拟机

处理完传感器数据后,我们现在开始描述用户提供信息的处理。例如,对在线服务提供商是在线书店的例子中,用户提供的信息将包括送货地址、付款帐号等。为此,我们需要进一步描述数据库处理器创建和管理的详细信息,即会话、虚拟机和可执行计算机代码(如计算机程序)。

一个或多个服务提供商使用稍后描述的规范语言创建计算机程序或应用程序,这些规范语言存储在目录中。在一个实施例中,目录是分布式计算环境200的内部组件,如图3。在其他实施例中,目录可以作为独立系统实现。在一个实施例中,目录包含可从中访问计算机程序的在线位置(服务器、网站等)的地址。因此,目录可能包含计算机程序的可搜索列表。

示例性计算机程序可以执行“图书销售商”或“支付处理平台”、“托运人”等操作。其他示例性服务提供商可以提供启用“智能汽车服务”或“医疗服务”等的程序。图6显示了计划程序目录中的一些示例性条目。

列标题为“程序名称匹配”的列表示计算机程序的名称。列标题“总体服务描述”表示描述命名程序提供的服务的通用短语。“用户信息列表”列提供了所有用户数据属性的列表,如果需要,用户将需要这些属性来提供服务。需要注意的是,这些用户数据属性的适当子集将提供给向用户提供服务所需的不同计算机程序。也就是说,任何单个程序,包括用户最初向其请求服务的在线服务提供商(如图书销售商)提供的程序,都不会接收图6“用户信息列表”中包含的所有用户数据属性。后者将在下面进一步讨论。

预计目录的组织方式可使数据库处理器进行在线搜索。例如,“程序名匹配”列可以组织为可搜索的数据结构,使数据库处理器能够有效地搜索和验证目录中是否存在条目,即计算机程序。标有“供应商名称和地址”的栏用于描述供应商的名称及其在线位置,例如ip地址、网站地址等,可从中获取指定的计算机程序。预计用户可以搜索目录以查找计算机程序,例如,通过供应商的名称。

在目录中搜索和发现程序进一步意味着用户可以声明可搜索的属性,例如,找到能够购买图书的程序。例如,假设目录中有一个名为“book”的程序。它可能具有相关的搜索属性,如“买书”、“廉价书”等。图6表格中的“搜索属性”列旨在传达这一概念。

我们还将有机会让计算机程序在目录中找到“匹配”的名称或计算机程序的其他标识符,例如,给定一个程序的名称,n,在目录中找到一个与名称“n”匹配的计算机程序。因此,我们假设目录包含计算机程序名称或其他标识符的条目。图6中的“程序名匹配”一栏旨在传达这个概念。

在实践中,上述各种搜索机制都可以使用and、or以及not等布尔连接符进行组合。因此,例如,找到供应商-3提供的名为n、属性为“购买图书”的程序等。

用户可以搜索目录,找到程序,并将程序下载到其用户计算设备。当从服务供应商寻求服务时,用户可以请求数据库处理器启动一个会话,并将发现的程序注入到会话数据存储的pl列表中(图3)。或者,用户可以在搜索导致数据库处理器创建会话并将发现的计算机程序注入该会话的pl列表的目录时采取操作或发出命令。我们使用短语“用户设备导致计算机程序的注入”来表示这些实施例中的任何一个。

为了获得服务或产品或执行任何在线事务,用户设备向数据库处理器发出请求。该请求使数据库处理器启动一个会话,创建一个或多个虚拟机,例如vm1、vm2等,并初始化会话中数据存储区中的tl和pl列表(图3)。请注意,最初的tl和pl列表是空的。用户设备将发现的程序的名称注入到列表pl中。

数据库处理器进一步配置为开始监控列表pl中的程序名称,如后文所述。如果在列表pl中找到了一个名称,数据库将尝试在目录中查找一个或多个计算机程序,这些程序的名称与插入到pl列表中的名称匹配。

由于数据库处理器正在监视pl列表,因此它可以在目录中找到一个或多个计算机程序,这些程序的名称与用户设备注入的名称相匹配。

数据库处理器获取目录中的一个或多个匹配程序,并将每个此类程序插入会话中的一个虚拟机中,并请求每个虚拟机执行注入的程序。当注入的程序在vm1、vm2中开始执行时,它们可能产生输出。如后文所示,此类程序的输出通常被限制为两种形式:包含加密数据的令牌和代表计算机程序的名称或其他标识符。名称或其他标识符已清除。

数据库处理器配置为存储(加密)令牌,这些令牌可由在vm中执行的程序输出到该会话的tl列表中。任何vm中正在执行的程序输出的名称都存储在该会话的pl列表中。

因此,我们可以说明指定数据库处理器操作的监控条件:

【监控条件,mc】:数据库处理器在每个会话的pl列表中搜索计算机程序的名称,并在pl列表中名称匹配的目录中查找计算机程序。

例如,考虑目录中名为“p”的计算机程序,即,

program:name=“p”

现在假设pl包含名称“p”。在这种情况下,匹配条件将得到满足。

当在虚拟机中执行的程序终止其执行时,该程序及其执行的虚拟机均被清除。当一个会话中的所有虚拟机都被清除后,该会话将终止。

上述监控程序列表、创建会话和虚拟机(其中程序运行并生成填充pl和tl等的输出)的过程将继续进行,直到使用mc条件找不到新的匹配项为止。我们可以用以下方法来封装上述过程,即方法rm:

1.接收用户请求。创建一个包含列表pl和tl的会话及其数据存储。

2.用户使程序名被注入到pl中。

3.数据库处理器使用条件mc运行监控进程。

4.如果找到成功的匹配项,则从目录中提取匹配的计算机程序,将每个程序插入为此目的创建的虚拟机中,并将虚拟机配置为执行插入的程序。程序可以对tl列表中的数据进行操作。它们的输出可能包括插入到pl列表中的程序的名称,或者插入到tl列表中的令牌。

5.已与目录内容匹配的pl列表中的名称将从pl列表中删除,这样就不会出现重复匹配。

6.如果在虚拟机中执行的程序完成了执行,则虚拟机被清除。

7.重复步骤4、5和6,直到pl表变为空。

8.清除会话。

因此,对于单个会话,数据库处理器的上述操作可以如图7所示进行描述。会话对象202包含一个vm204,它执行一个程序205,在tl41中操作和存储令牌,并将程序名输出到pl31。数据库处理器203可以访问目录服务器500。请注意,目录服务器500也可以由希望搜索或发现上述计算机程序的用户计算设备访问。数据库处理器203配置为按照上述方法rm操作。

仍然描述在由数据库处理器创建的虚拟机中执行的计算机程序。我们首先描述一个典型案例。

考虑图8a中的三个计算机程序,即图书(book)、付款(payment)和托运(shipment)。

程序“图书(book)”包含的说明大多是不言而喻的。因此,“向用户显示图书列表”是指当计算机程序执行指示时,在用户设备上显示图书列表。请注意,假定列表中的数据是预先提供给计算机程序的,例如,程序最初可能会提供这样的列表。(用户设备的规范将在运行时“绑定”,计算机指令中变量与特定实体的绑定在现有技术中是众所周知的。)另一个例子是,指令“向用户索要书名”寻求用户设备的输入。这些信息由用户在运行时提供。

指令“获取用户设备位置”是执行类似于前面描述的程序的指令,通过该程序可以访问来自用户设备的传感器数据。

指令“令牌:位置”有进一步说明。该指令旨在指示将数据“位置”封装成加密形式,并输出到tl41(图7)。通常,令牌指令包含要加密的数据元素列表,然后输出到列表41。从启动程序执行会话的用户设备获取加密密匙,例如,使用指令“get”作为子例程。

指令“output:payment”与上述令牌指令类似,只是名称”payment”未加密。

图8a中标记为”payment”的程序包含“输入:标的物,位置”指令,该指令传达从令牌列表41(图7)中读取令牌“标的物”和“位置”的指令,并且由于所示元素按照上述方式加密,因此使用从用户设备获取的密匙解密所示元素。例如,使用“get”指令作为子例程)。注意,程序“支付”为列表41中以加密形式存储的“amount”和“pay”创建令牌(图7)。此外,虽然程序从用户设备获取数据“用户名”,但它不会为其创建令牌。这是本文所述的程序规范语言的设计特征,即,程序获取或计算的数据不可选择性地输出。

程序“托运(shipment)”的说明可以类似地描述。需要注意的是,”shipment”不会创建任何令牌,也没有任何“输出”指令。

图8b总结了图8a示例程序中显示的新类型指令及其语义。

鉴于上述计算机程序的示例性描述,可指导适合本发明目的的计算机程序的规范语言。所讨论的语言由类似于大多数常规编程语言的编程指令组成,但新指令“token”、“display”、“get”、“ask”、“output”和“input”除外,这些新指令的一般操作已经在上文中描述过,并且可以使用常规的子程序、加密和解密设计方法来实现。

从用户设备获取信息的“获取”和“询问”说明具有以下附加功能。

两条指令的执行都由数据库处理器监控。可以启用这种监视,例如,通过确保在尝试访问用户设备时,两个指令都配置为首先访问数据库处理器,而后者访问用户计算设备。也就是说,数据库处理器将“get”和“ask”的访问请求传递给用户设备。

对“get”和“ask”指令的监控进一步配置,以确保以下两个条件。

1.由“get”和“ask”指令请求的用户设备信息属性包含在与服务相关的指定“用户信息列表”中(参见图5)。

2.任何单个计算机程序都不能从用户设备请求获取所有信息。

上述两个条件迫使服务提供商提供使用多个计算机程序的服务,并限制单个计算机程序可能从用户设备接收的信息总量。以上两个条件,加上对令牌列表中的标识符进行加密的操作,以及对虚拟机和会话对象的终止和清除,构成了数据库处理器向用户社区提供的信任模型。

数据库处理器以保留信任模型的方式运行。从这个意义上讲,后者代表了用户社区和数据库处理器之间的契约,即信任模型指定了短语“用户数据隐私”的含义,即由数据库处理器强制执行的契约。

现在可以在图9中进一步描述数据库处理器的操作,并对图8a中所示的程序进行如下描述。

用户设备向数据库处理器发出一个请求,该数据库处理器建立一个会话并开始监视pl和tl列表。用户设备在程序列表中注入名为“book”的程序。数据库处理器监视程序列表pl,试图在目录中找到匹配的条目。当它找到一个成功的匹配,即条件mc满足时,它执行方法rm。

方法rm的执行导致创建一个vm,其中名为“book”的程序开始执行。程序的输出,即令牌“位置”和“书的标题”以加密形式存储在tl中,字符串”payment”(在明文中)存储在pl中。

程序“图书(book)”终止,数据库处理器终止vm。由于pl表不是空的,即它包含名称”payment”,因此监控过程将继续。监控现在发现目录条目与pl中的名称”payment”匹配。

由于发现符合mc,数据库处理器创建第二个vm,其中名为”payment”的程序开始执行,生成tl中的令牌“amount”和“pay”(加密形式)以及pl中的明文”shipment”。在程序“付款(payment)”结束后,其vm终止。

由于pl仍然是非空的,数据库处理器的监控继续进行,并发现mc成功符合,通过创建一个vm来执行名为”shipment”的程序,操作令牌“amount”和“pay”。当”shipment”结束执行时,此虚拟机也将终止。”shipment”程序不输出程序名称。因此,列表pl变为空,找不到更多匹配项。数据库处理器可以终止并清除会话。

数据库处理器技术说明

可以提供数据库处理器工作的技术说明。为了从服务供应商接收其提供的服务,用户设备将计算机程序注入到计算机程序可以执行的计算环境中。计算机程序的运行以请求用户数据或产生输出的方式进行控制,例如,计算机程序的输出被限制为写入令牌列表的令牌或写入pl列表的计算机程序的名称或其他标识符。

此外,从重写系统的意义上来说,计算机程序重写自身[参见emilpost(1947),《图厄问题的递归不可解性》,《符号逻辑杂志》,第12卷(1947)第1-11页。再版于martindavised.(1965),《不可决定:关于不可决定命题、不可解决问题和可计算函数的基础论文》,raven出版社,纽约,第239ff页]。也就是说,在给定数据上下文“u”和“v”(分别称为上文和下文)的情况下,计算机程序s将自身重写为计算机程序t。记号法

usv→utv

表示上述概念。

这样一个重写系统的实现因此没有保留“存储”,因为状态utv可能不会被重写为usv,也就是说,“箭头”只能从左到右而不是反向的,并且上下文,即“u”和“v”在上述记号法左右两边保持不变。

随着时间的推移,我们将把tl列表(41,参见7)中的数据元素与上下文相关联,即上述符号中的“u”和“v”。我们将把用大写字母表示的计算机程序(如“s”和“t”等)与程序列表pl(31,参见图7)中的程序名称相关联。因此,符号“usv→utv”可以解释为“如果在输入“u”上运行的程序产生输出“v”,则s可以重写为t(具有相同的输入和输出数据内容)”。

在本发明中,由服务供应商等提供的计算机程序或应用程序由用户设备注入计算环境中。环境生成一个用于虚拟机的会话,用于执行注入的计算机程序,每个计算机程序都在其自己的虚拟机中执行。假设一个注入的计算机程序,比如s,有输入“u”。s执行,即在虚拟机中运行,并生成输出,即标记“v”和程序名t。输出(和输入)元素与会话关联,而不是会话中的虚拟机。

此时,会话包含数据“u”、数据“v”和程序s。计算环境终止并清除程序s及其相关虚拟机,并访问目录以获取注入会话的程序,如t。会话现在包含程序t和上下文“u”和“v”。因此,我们可以用“usv→utv”规则将计算环境重写为t来表示计算环境的上述操作。考虑到图8a所示的示例程序,我们可以将数据库处理器的工作描述为以下两个重写规则中隐含的重写。请注意“<>”表示空上下文。

其中,数据库处理器提供了一个包含程序book、payment和shipment的合适目录。图9显示了标签r1和r2重写过程的图形再现。此外,图9显示了包含所示上下文元素的tl41和pl31列表。

前面的段落描述了一个过程r1(图9),在该过程中,为执行名为book的程序创建了第一个vm,vm1。数据库处理器使用此程序生成的输出作为匹配条件来定位第二程序“付款(payment)”。然后数据库处理器创建第二个vm2,导致在vm2中执行程序“付款(payment)”。程序“图书(book)”和“付款(payment)”之间的因果关系被称为重写操作,封装在上述描述中,由后逻辑的重写规则r1表示。

同样,操作r2表示将程序量重写为程序shipment,重写显示为标签r2。

需要注意的是,重写操作没有明确描述或包含在数据库处理器的任何组件中。它隐含在数据库处理器的操作中,即,它是监控条件和数据库处理器操作方法rm的副作用。

因此,由数据库处理器执行的条件mc和方法rm用于隐式描述程序重写的操作。重写过程的这种隐式工作是设计实现的。由于重写过程从未被明确声明,因此它永远不可供第三方访问,因此它可能不用于识别将不同数据元素链接在一起的信息。

说明性实施例

我们现在提供本发明的说明性实施例的说明(参见图10)。

各种传感器设备10(图10)可位于包含用户设备100的环境中,该用户设备100可包含一个或多个(内部)传感器设备11。设备10可通过链路3与用户设备100关联。或者,它们可以通过链路5聚合到与用户设备100通过链路105关联的服务器30。用户设备100通过链路95连接到分布式计算环境200。它还可以访问目录服务器。上述数据库处理器程序(203,参见图3)在环境200中运行。

环境200还链接到目录服务器500和应用程序服务器600。后者也可以选择连接到目录服务器。

如上文所述,数据库处理器创建会话对象和虚拟机等。图10中没有显示这些内容,因为它们已在上面进行了描述并显示在图3中。

我们考虑一个应用程序,它允许用户在线购买一本书,支付费用并安排托运。整个过程对用户来说是一个端到端或单一的事务,尽管它可能由多个相互作用的实体(即由不同提供者提供的计算机程序)执行。用户使用其用户设备并根据需要提供信息,如书名、付款等。一些信息,例如位置,可以从设备中的传感器中收集。所有信息都提供给数据库处理器,其操作方式是为了在单一事务的各个组件在不链接以获得关于用户的全部信息的意义上保留用户的信息。此外,接收用户信息的单一事务的各个组件是计算实体,它们被创建并停止存在以执行计算,然后停止存在。

使用应用程序服务器的服务提供商创建计算机程序,为用户计算设备和智能设备的用户提供各种服务。智能设备通常指包含一个或多个处理器、一个或多个网络接口和一个或多个传感器的设备,用于从周围环境中感知环境迹象。智能设备的例子包括智能电器、智能车辆等。目录服务器这样创建并提供给使用者的计算机程序填充。使用用户计算设备(如智能手机)的消费者浏览或搜索目录服务器500并发现一个程序,使其能够在线购买图书。(例如,该程序可能被宣传为保护用户数据隐私。)用户设备下载并可能稍后启动该程序。

图11a描述了用户设备选择计算机程序的情况。它向数据库处理器发出请求(步骤1a),以建立会话(步骤1b),并将所选程序的名称book存储在pl(步骤1c)中。在步骤1d中,数据库处理器从目录中提取计算机程序“图书(book)”。如上所述,这会导致数据库处理器创建一个虚拟机vm100(步骤2),该虚拟机执行程序“图书(book)”(步骤3)的逻辑。执行结果显示一个图书列表,用户向程序提供(选定)图书的标题(步骤4a和4b)。在步骤5中,程序还从设备的传感器获取用户设备的位置。(本次购买过程的细节已在上文中描述。)

接下来,在步骤6a中,程序从用户设备请求加密密匙,在步骤6b中,为数据元素“title”和“location”创建令牌。令牌存储在tl中。在步骤6c中,程序向pl输出”payment”。程序“图书(book)”结束执行,因此vm100终止。

在步骤8a(图11b)中,数据库处理器在pl中找到”payment”,在步骤8b中,从目录中获取程序“付款(payment)”。在步骤9中,它创建一个虚拟机vm200。在步骤10a中,程序开始执行,在步骤10b中从tl读取令牌“title”和“location”。在步骤10c中,它从用户设备请求解密密匙来解密令牌“title”和“location”。步骤11导致从用户处获取支付信息,并在步骤12中进行处理。在步骤13a中,程序从用户设备获取解密密匙,在步骤13b中创建令牌“pay”和“amount”,并将它们存储在tl中。在步骤13c中,程序将”shipment”输出到pl。

程序现在终止执行,导致vm200终止。

图11c同样描述了在虚拟机vm300中执行程序“托运(shipment)”,其结论是没有向pl提供输出。

重要的是要注意步骤19a“安排运输(oob)”,其中程序“托运(shipment)”将用户地址发送给托运人。缩写oob(带外)代表一种被认为是“特殊”的通信,即它将用户数据传递给外部实体。

数据库处理器标记从用户设备获取的数据与外部实体通信的所有通信。然后,数据库处理器可以跟踪标记的(oob)通信,并向用户设备发出警报。步骤19b显示由数据库处理器生成的用户设备警报。也就是说,只要数据库处理器检测到与用户提供的信息元素相关的明文输出,就会向用户设备生成警报消息。

继续图11c,由于”shipment”没有产生到pl的输出,pl列表变为空。此外,shipment结束。因此,可以终止vm300,并且监视进程没有找到任何新的匹配项。因此,可以清除会话。在这个意义上,数据元素,即列表pl和tl的内容是短暂的。

因此,我们说明,在向用户提供总体服务期间提供的用户信息不会导致其任何信息保留在系统中。例如,通过参考图2,这意味着在本文所述的发明中不可能链接来自整体服务提供基础结构的不同组件的用户信息。

熟练的读者会理解,上述用户体验的分散化可能会有许多不同的变化,在这些变化中,不同的服务提供商可以提供整体服务的组成部分。

注意的一个方面是,程序在虚拟机环境中的数据库处理器中运行,使用来自用户设备的加密密匙将加密信息写入数据存储中的相应列表中。因此,没有其他进程可以读取列表中的数据并构建集成的用户配置文件。此外,当程序终止时,数据存储中没有状态信息。

当然,服务提供商可以保留由于用户接收到整体服务而获取的某些信息。例如,托运人可以记录运输的地址。但是托运人不知道消费者的名字。

因此,使用带外通信过程可能会向一个或多个服务提供商揭示用户数据的片段。本发明设想由数据库处理器向用户突出显示这种带外通信。因此,用户会意识到可能向服务提供商透露其数据片段。

鉴于上述实施例假定整体服务(例如,在线购买图书)由多个相互作用的实体实现,在其他实施例中,单个提供者可以提供服务的所有组件(例如,通过提供所有必要的计算机程序)。这并不限制本发明,因为计算机程序的执行使用了如上所述保留用户数据隐私的系统。

在这方面,适当地提及,并且本文所述的发明设想使用区块链系统来实现由多个实体提供的智能合约服务。智能合约可以抽象地被视为某种形式的计算机程序,对存储在区块链系统账簿中的数据进行操作。也就是说,账簿类似于数据存储,而智能程序类似于本文所述的计算机程序。从这个意义上讲,支持数据库处理器操作的重写过程可以看作是为智能合约提供操作系统组件。

熟练的实践者会注意到,数据库处理器的示例性描述在其操作中假定了一种不确定性。也就是说,列表pl可以包含多个程序名,或者pl中的一个名称可以匹配目录中的多个程序名。

本文所述的发明设想如下过载上述“output”程序指令。我们不仅可以使用输出语句来指定程序的名称,还可以使用其他属性,例如供应商的名称和各种程序属性,以缩小目录的搜索范围。

其他说明性实施例

虽然本次阐述的重点是卖方-托运人支付服务经验,但也有许多其他服务经验的例子可以从本文所述的发明中受益。例如,智能汽车等自主车辆预计将包含许多内部传感器设备,这些设备将报告各种数据。本发明设想,此类汽车的用户可以从本文所述的技术中获得好处,其中来自汽车的传感器数据触发计算机程序(由服务提供商提供);然后,此类程序可以使用本文所述的系统和方法向此类汽车提供服务,而不会危及车主的数据隐私。

作为另一个例子,用户的身体活动可以通过用户穿戴的智能设备或用户附近的设备例如,安装在锻炼机器中的进行监控和分析。然后,可以对活动进行分析、评级和评分,并将这些分析的数据传达给医疗保健提供者或保险提供者。

用户数据可移植性

在传统的电信系统中,用户拥有自己的电话号码是很常见的。消费者在从一个服务提供商切换到另一个服务提供商时,可以保留其电话号码。这种变化是法规所必需的,被称为本地号码可移植性。

可以设想几个原因,包括立法,可能需要用户拥有其数据并能够转换提供者,将其用户数据从旧提供者带到新提供者。个人病历提供了一个令人信服的例子。消费者可以将其医疗数据存储在其用户计算设备上,或者存储在服务提供商可访问的专用存储系统中,前提是提供了仅可从用户设备获得的必要凭据。然后,消费者可以通过其用户设备请求医疗服务来访问其医疗数据。

社交图一词常用于社交网络实例。这个术语指的是由用户及其朋友和追随者组成的数据。社会图表的可移植性可能是必需的或可授权的。在这种情况下,用户可以从一个服务提供商切换到另一个服务提供商,并从下面描述的意义上获取他的社交图。

考虑当今在线网络中的现状,消费者比其他服务提供商更信任某些服务提供商。例如,许多消费者信任谷歌提供自己的用户名和密码凭据。消费者支持这种行为的一个假设可能是,谷歌的服务更安全,不太可能被恶意方渗透。这一假设的证据是许多服务提供商支持的工具,这些服务提供商允许消费者使用谷歌凭据访问他们的帐户。因此,举例来说,用户可以使用自己的谷歌凭据登录twitter或facebook。

作为最后一个例子,互联网上的“赢家通吃”现象被称为创造了提供多种服务的更加强大的企业。然后可以设想,他们可以自愿或根据立法要求,创建一个(业务)单位或实体,处理用户数据,并提供特殊处理或法律要求的保证。这意味着所有用户数据都必须在单元的控制下,因此,可以从一个服务供应商移植到另一个服务供应商。

我们现在描述如何使用本文描述的主题来支持用户数据可移植性。这可以通过在上述描述中添加以下附加要求来实现。

·我们将上述条件mc扩展如下。除了将列表pl中包含的名称与目录中程序的名称匹配之外,还允许用户声明取消一个或多个服务供应商的匹配条件。因此,例如,可以允许用户陈述不合格标准,例如,“不得选择与列表pl上的名称相匹配的供应商-1中的任何程序”,以修改条件mc,从而修改数据库处理器的行为。

返回图1所示的实施例。11a、11b和11c,对mc条件的修改可能会取消某个供应商的项目资格,以获得成功的匹配。因此,用户设备从未从不合格供应商提供的程序接收任何服务。

同样地,可以由mc条件选择指定一个供应商。

本文所述的各种实施例可提供关于计算技术的各种优势。其中一些优势可能包括:

1.用户计算设备可以不运行计算机程序,例如应用程序,从而节省处理资源、电力等。对于移动用户计算设备(如智能手机)而言,这一点尤为重要,因为在智能手机中,节约电池电量非常重要。

2.应用程序可能不需要下载到用户计算机设备。相反,当用户从目录服务器(500,参见图7)中选择一个应用程序时,可以选择直接将所选应用程序注入数据库处理器,而无需中间下载操作。这将使用户从其用户计算设备上管理应用程序中解放出来。因此,简化了用户对设备的处理和管理。这也意味着用户计算设备上的应用程序不需要定期更新,从而节省网络带宽和容量。此外,可以向用户推荐应用程序,用户无需将应用程序下载到自己的设备上即可根据建议采取行动。

3.目录服务器(图6)代表应用商店技术的重新架构。后者目前被许多服务提供商使用。通过删除应用商店技术目前提供的下载和更新功能,我们改进和简化了应用商店的技术和操作。

4.通过扩展著名的dh算法及其相似替代,通过单用户计算设备安全处理来自多个传感器设备的数据通信,我们扩展并简化了网络协议的范围和工作,以处理新出现的智能设备(如自动汽车、智能家用电器等技术)广泛使用此类传感器设备。由于dh(及其相似替代)在工业上的广泛应用,这种扩展将提高网络协议的效率、操作和成本。

特定说明性商业实施例

我们提供本文所述发明的一些商业实施例。

图12显示了一个实施例,其中智能设备300(例如,智能汽车、家用冰箱或家庭智能门锁等)配置为通过有线/无线连接53向消费者提供服务。(术语“智能”的使用旨在表示包含一个或多个处理器的设备,这些处理器可能配置有可执行代码。)智能设备可以从一个或多个计算机程序400获取其可执行代码,获取的可以是预先配置的、定期配置的或按需提供的。程序400还可以提供具有可执行代码的设备(键100)。最后,用户设备200可由程序400提供可执行代码。同样,这种供应可能是需求驱动的,也可能包含周期性带外过程。

作为一个商业示例,设备300需要密匙100和用户设备200共同提供服务。因此,只有当用户设备200和密匙100一起使用时,智能车300才可以提供编程服务,因为如上图所示,除非用户设备200授权,否则密匙的数据可能无法访问到汽车300。在这个意义上,连接51和52(图12)分别描述了设备300对设备200和100的依赖性,以提供其编程服务。

在这个意义上,使用密匙100和用户设备200可以被称为类似于设备300提供的编程服务的双因素授权,而且,服务是隐私保护的。上述发明保证了密匙100收集并提供给设备300的数据的隐私。

最后,本发明的一个明确结果是密匙100和设备300之间的关联由用户设备200控制。也就是说,另一个用户设备(比如500)可以与键100建立关联,如果成功,则调用设备300的服务。因此,控制设备300和键100之间的关联的是用户设备200。这允许将设备300提供的服务移植到不同的用户。

图13a和13b显示了不同的商业实施方式。图13a提供了本文所述发明强制的服务分解的抽象视图。服务供应商,例如图书的在线销售商,是由本发明的指令产生的,以将其服务供应商分解为多个计算机程序、多个计算机程序相互作用,并且用户设备是相互作用的组件之一。

也就是说,图13a将服务供应400显示为“黑盒”操作,而图13b将服务400分解为组件401、402和403。(本发明规定了不止一个组件。)例如,一个在线图书购买服务400可以被分解为组件book401、payment402和shipment403。此外,组件401、402和403之间的交互必须涉及用户设备200。

因此,用户设备200成为服务提供过程的一个组件,而不仅仅是请求和接收服务的设备。用户设备作为服务提供的组件时,提供和控制服务提供所需的用户数据。从这个意义上讲,用户设备成为服务提供的控制组件。

图14显示了跨服务供应商的服务可移植性,其中用户可以将其服务从第一提供者移植到第二提供者。如上文所述,通过强制将服务分解,然后利用用户设备选择第一服务供应商未提供的组件,从而实现这种移植。这种服务可移植性的概念之所以成为可能,是因为用户设备控制用户的数据,因此可能导致后者仅提供给选定的服务供应商。

隐私开关

我们首先总结上述发明的一些方面,并在图15a中进行说明,这是图10的副本。计算环境200可用于运行其他选定的计算机程序,所述选择由服务供应商或使用用户计算设备100的消费者执行。在一些实施例中,选择可以通过编程方式执行,例如通过由一个或多个传感器设备触发的计算机程序执行。所选的计算机程序可以从用户计算设备获取用户数据。在一个方面,本发明描述了所选计算机程序在不损害用户数据隐私的情况下运行和提供服务的方法。

图15b扩展了图15a的两个元素,即用户计算设备100通过连接95与计算环境200交互。计算环境由数据库处理器或虚拟操作系统创建和管理。可能会要求数据库处理器创建一个会话对象,其中可以运行一个或多个虚拟机(vm)。应用程序可以在虚拟机中运行;这样的应用程序(或简单地说,程序)可以从用户计算设备100(图15b)请求和接收用户数据进行计算。

我们使用短语“使程序注入环境”或“将程序注入环境”作为缩写,以表示计算机程序、用户计算设备或服务提供商可以选择并使应用程序在由数据库处理器或虚拟操作系统创建和管理的会话中的虚拟机中运行。例如,服务提供商可能会导致一个乘坐共享程序被注入或注入一个乘坐共享程序到一个环境中。图15b显示了注入计算环境200的示例程序cp,通过连接95与用户计算设备100交互。

本文所述的发明表明,注入到环境中的计算机程序可以以这样的方式向用户计算设备提供服务:在服务结束时,服务供应商不保留用户计算设备提供的任何用户属性信息。同时,向服务供应商提供的用户数据是可验证和准确的。从这个意义上讲,注入程序提供的服务被称为隐私保护。

也就是说,下文所述的用户计算设备和相关的计算机程序的运行方式,在向用户交付产品和/或服务的同时,强制执行用户的隐私问题和服务提供商的数据完整性问题。本发明提出了如图15c所示的系统或布置,其中一些细节将在下面的介绍中进一步描述。

一般来说,图15c描述了在图15b的排列中引入逻辑网络元件隐私开关400。在一个实施例中,隐私开关由两部分组成:用户隐私开关(ups)50和服务器隐私开关(sps)300。隐私开关可以作为软件实体的集合来实现。在一个实施例中,ups作为运行在用户计算设备100(图15d中标记为ups50)中的软件程序的集合来实现,而sps300在独立的服务器复合体中实现,例如,基于云的计算环境,该环境反过来连接到计算环境200。在一些实施例中,sps300可以作为计算环境200的一部分实现。

在用户的控制下,隐私开关ups50有两个设置,开或启用以及关或禁用。当设置为“开”时,ups和sps的作用是在服务提供期间保护用户的隐私,具体说明如下。当设置为“关”时,ups和sps将不起作用,用户计算设备将恢复到常规行为。在后面的描述中,假设ups设置为“开”。请注意,在服务提供期间,以常规方式运行的用户计算设备可能不会保护用户数据隐私。为了利用隐私保护服务,用户可以将ups设置为“开”。

在本发明的一个实施例中,ups和sps在虚拟机中执行。

简单来说,我们可以说隐私开关ps是ups和sps的组合(图15c和15d)允许用户计算设备在ups“启用”或设置为“开”位置时以保密的方式与服务提供商交互并接收服务。

我们现在进一步描述和表征隐私开关提供的功能和执行的操作(与数据库处理器或虚拟操作系统创建的计算环境结合)。

我们观察到,由提供用户信息的计算机程序所代表的服务提供商可能需要处理接收到的用户信息,这种处理超出了复制和保存接收信息的操作范围。我们考虑了一些可能的处理需求,并观察到它们会导致用户信息的进一步分类,如下所示。

1.化名信息:化名的一个示例是用户选择的用户名的常用用法。服务供应商使用用户名将用户提供的信息与以前的历史使用模式相关联。示例:用户可以提供一个用户名或化名,如@john,该用户名或化名是他过去使用的,以便历史事务可以与当前事务关联来确定建议。

2.身份信息:服务提供商需要处理用户提供的身份信息,对用户进行身份验证。示例:生物识别信息可用于验证用户的身份。

3.基于个人属性或历史数据的断言/偏好:服务供应商需要验证用户提供的信息的准确性。例如,用户可以根据已知算法处理用户的驾驶执照数据集,断言其“年龄大于21”。通过已知算法处理用户的历史购买数据可以断言他喜欢古典音乐。

4.近似信息:服务供应商仅需要解决近似用户实际信息/数据的信息。示例:用户提供其位置的邮政编码,但服务供应商需要街道地址,例如,将物品交付给用户。

隐私开关(400,参见图15c)解决了上述四个服务供应商的需求,同时确保了用户的隐私问题。在下面的描述中清楚地说明了细节。以下描述中提及的“用户计算设备”应解释为包含ups50的用户设备100(参见图15c或图15d)。

在一个实施例中,本发明提出了将用户信息,即化名、身份、断言/偏好和近似信息(统称为模糊对象)提供给服务供应商的方法,服务供应商随后可以验证所述对象。验证过程为服务供应商带来了具体的好处,被称为真实性、可解决性和起源,稍后将进一步描述。

化名/用户名信息

对于服务供应商来说,使用用户的历史使用数据(由用户名等标识符索引)来定制用户的服务体验是司空见惯的。因此,许多服务根据用户以前访问时保存的历史数据向用户提供建议和广告。保留用户的身份或其他服务供应商提供的隐私属性信息可能会对服务供应商个性化用户服务体验的能力产生负面影响。

另一方面,用户名不是唯一可能危害用户隐私的用户属性信息。例如,一个标识符(如电话号码)可用于以后联系用户。如先前技术所述,可以使用地理数据库将ip地址映射到物理位置,利用用户的ip地址来获得物理位置。

因此,用户和服务供应商都有需要解决的问题。

在一些实施例中,本发明通过要求1)通过不可解释的标识符指明用户标识符,以及2)用户计算设备和外部计算环境之间的通信由一个模糊用户标识符和其他用户属性信息的实体进行中介。由于用户可以自行更改标识符,与标识符相关联的任何解释都将是短暂的。我们有时会使用术语“化名”来表示不可解释的标识符。

在一个实施例中,使会话中用户计算设备之间的通信变得模糊的实体是以如下所述的特定方式操作的隐私开关。

图16显示了该安排的操作,通过该安排,sps300充当用户计算设备100(相当于ups50)和示例性计算机程序cp200之间的通信媒介。也就是说,cp200和ups50在数据库处理器创建的会话中。ups50发送一个由sps300接收并转发给cp的请求。在相反方向上,来自cp的数据由sps300接收并转发给ups50。在一个实施例中,ups50可使用通常所知的从sps300“提取”信息的方法。

如后文所述,从ups50到cp200(通过sps300)的请求可能包括各种类型的服务请求,包括身份验证、信用卡交易和其他用户属性信息。

我们注意到,上述混淆的要求可通过要求sps300在将ups50的请求转发给cp200之前,为从ups50收到的请求分配一个标识符来实现。我们用子系统sps300描述这种处理,如下所示。

带有ups50的用户设备100被邀请或“发现”(在不同频道通信过程中)由计算机程序cp200提供的服务。如上所述,我们假设ups已启用。用户设备100(相当于,ups50)选择一个标识符,例如“@john”,并发送一个请求(或启动一个对话框),该请求到达sps300,进而创建第二个标识符,称为“@john123”,并将接收到的请求转发给cp200,将标识符@john替换为@john123。因此,cp200假设请求来自于一个标识为@john123的实体。cp200从标识为“@john123”的用户计算设备/ups收到请求,而通过保存关联列表(@john,@john123),sps300知道用户计算设备标识为“@john”。

因此,cp200可以与用户名为“john123”的sps300进行会话。实际上,cp200使用用户名“@john”与用户计算设备100进行会话,因为sps300充当用户计算设备100的中介或代理。

通过维护关联列表(@john,@john123),sps300可以继续充当用户计算设备100和cp200之间的中介,用于将来会话中的对话。sps300可以使用标识符“@john123”保存与用户计算设备100相关的事务数据,并将其用于从用户计算设备100收到的后续请求。

将标识符分配给用户计算设备和维护包含标识符的关联列表以保护用户隐私的此类操作提供了图15d中的sps300执行的操作的一个示例。

sps可以帮助ups创建另一种类型的关联列表,包括凭据和用户名,然后由ups存储和管理。在这种实施例中,sps为ups提供用于生成关联列表的特定算法(稍后详述),例如(a3、a4),其中a3是一个称为“凭据”的加密对象,a4是一个用户名(清晰的),例如“@john123”。

包含凭据和用户名的关联列表,例如(a3、a4),可以多种方式使用,例如,用户计算设备可以使用它登录到计算机程序或网站。然后,后者可以执行一项操作来“验证”凭据a3的真实性(后面将介绍该过程的详细信息)。验证成功后,用户设备可以被授权登录计算机程序或网站。(在一个实施例中,所示验证操作中使用了sps。)

因此,在这种实施例中,ups创建包含凭据和用户名的关联列表并维护关联列表,而在上一实施例中,sps创建并维护关联列表。使用由凭据和用户名组成的相关列表,用户计算设备可以直接与服务提供程序通信,即,不使用sps作为中介。

因此,我们展示了两个实施例。在一个实施例中,用户计算设备通过sps与服务提供程序通信,后者创建和维护一种类型的关联列表。在另一实施例中,用户计算设备在sps的帮助下创建和维护第二类关联列表,但可以直接与提供服务的程序通信,而不使用sps作为中介。

身份信息

互联网/网络上的大多数用户可用服务都要求用户输入用户身份信息。我们可以将身份信息分类为唯一标识用户的用户信息的子集。例如,虽然姓名或地址不能唯一地标识一个人,但社会保险号码和指纹是唯一的标识符。用户名/密码组合提供了另一个用户独有的身份信息示例。由于身份信息对用户来说是唯一的,因此在考虑用户隐私时,它值得特别注意。

我们提出了一种公开身份信息的方法,该方法可用于由用户计算设备向请求程序提供信息。

·用户计算设备将身份信息转换为代表性数据集,然后将其编码为加密对象,称为凭据。凭据具有对所有实体不透明的属性。凭据可以由称为验证器的计算实体验证(在下面描述的意义上)。但是,验证程序无法重新派生用户的身份信息。

因此,可以将用户的身份信息转换为凭据,该凭据可以提供给计算机程序。接收计算机程序可以请求验证实体验证凭据的真实性,而不需要知道关于用户的任何更多信息。验证实体能够验证凭据,而不能够从凭据重新获取用户信息。

我们提供了以下方法的详细信息。

在当前实践中,用户可以向服务供应商注册以获得服务。注册过程可能需要用户选择服务供应商用来验证用户身份的用户名和密码。由于密码可能被恶意实体入侵,因此建议考虑加密凭据。

在当前的技术趋势中,生物特征信息(如指纹数据、面部图像数据等)已被用作认证用户的凭据。例如,移动或智能手机可以使用来自用户的指纹数据向设备或一个或多个服务供应商进行身份验证。但是,由于隐私问题,用户通常不希望他们的生物特征数据与服务供应商共享。

为了避免这个问题,智能手机将指纹数据保存在处理器的本地存储器中,处理器的操作系统生成一个令牌,供参与的服务供应商识别。通常,这些服务供应商需要有软件,例如所谓的“app”,驻留在智能手机上,接受来自智能手机(操作系统)的令牌并将其(或表示)传输给参与的服务供应商。这种方法产生了一个封闭的服务供应商系统,所有的服务供应商都参与接受一组通用的令牌(或者由他们的应用程序生成的令牌的表示)。

简而言之,用户可以通过自己的操作系统(如智能手机)进行身份验证,而智能手机则提供一个令牌,该令牌的有效性随后被其他服务供应商接受。因此,允许用户访问参与服务供应商的系统,因为服务供应商信任智能手机的操作系统。

智能手机和其他用户计算设备已经开发出一种技术,为存储用户数据(如生物特征数据)提供安全的内部存储区域。此类内部存储区域只能由智能设备的操作系统访问,外部第三方软件可能无法访问。我们受到这些发明的启发,并在本发明中使用它们,如下所述。

在一个方面,本文所述的主题允许用一种方法替换置于企业令牌的托管,即由一个或多个(可能是分布式)计算实体操作加密对象执行的步骤或操作序列。这样的方法就可以独立于任何服务供应商、操作系统、设备或平台进行验证。

因此,验证可以以独立于设备和平台的方式进行。这种独立性对其安全影响至关重要。依赖单个企业的托管模型本质上是不安全的,并且容易受到攻击,因为它是单一的故障点。在分布在多个计算实体之间的独立于设备和平台的方法中,不同的实体可以检查其他实体,并且该方法可以继续执行其功能,即使某些部分受到攻击。例如,应该注意的是,因特网传输或路由的健壮性依赖于在源和目标(ip)地址之间有多条路径。再举一个例子,电信网络通常使用分布式计算实体来实现期望的可靠性水平。同样,数据中心将其数据分布在地理上分离的实体中。

此外,将用户数据封装为可安全验证的凭据(不侵犯用户数据隐私),可使用户免于创建和记住用户名和密码、已知的隐私入侵源和计算机操作安全问题。

图17a显示了操作环境的一个示例的一般结构,在该操作环境中可以实施所公开主题的各个方面。

在服务供应商处使用标识符(如@john)建立帐户的用户可能会被要求提供一个凭据,该凭据随后可用于验证将来的访问。或者,用户可以成对提供凭据和用户名。

要使用生物特征指纹信息生成凭据,用户可以按照以下步骤进行操作。

在一个实施例中,用户计算装置集成指纹扫描器。扫描器能够扫描/捕获用户的指纹,将其转换为数据矩阵,并将指纹和数据矩阵存储在用户计算设备的存储器中,以供以后计算使用。在一个实施例中,指纹和数据矩阵存储在用户计算设备的安全存储区域中,该安全存储区域仅可供操作系统或操作系统允许的选定应用程序访问。现代智能手机代表了一个集成指纹扫描仪的用户计算设备的例子。

指纹扫描仪是一种方便捕获和使用用户生物特征数据的设备示例。还有其他一些用户生物特征数据的例子,如视网膜扫描、捕捉面部特征的摄像头传感器、语音签名印记等,也可用于识别用户。本发明中指纹生物特征数据的使用纯粹是示例性的,并不打算以任何方式限制本文所公开的本发明。

用户的指纹(生物特征)数据可以由用户计算设备捕获和处理,或者传输到服务器,在服务器上,用户计算设备和服务器执行的计算活动的组合可以对其进行处理。在本文所公开的主题中,我们假设(但不限于)指纹数据是通过用户计算设备和服务器中发生的计算活动组合处理的。

图17a显示了一个用户计算设备,该设备包含软件逻辑101(本文称为凭据创建器),该软件逻辑101可用于创建称为凭据的加密数据对象。创建凭据的过程的详细信息如下所述。我们简要地注意到,凭据创建器101执行的功能可以描述为处理输入数据集或凭据,以生成输出数据集或凭据,然后这些数据集或凭据将呈现给一个或多个服务供应商。

服务供应商可以使用下面描述的基于软件的方法验证出示的凭据。在一个实施例中,验证可能需要求助于第三方,即所谓的验证器。在第二个实施例中,验证程序集成到隐私开关的sps组件中(参见图15d)。我们假设后一个实施例,不受限制。

现在转到凭据的创建、表示和验证,我们从图17a开始。身份验证提供者是一个实体,它为用户计算设备提供算法,可用于创建和表示凭据。在一个实施例中,隐私开关的sps组件(参见图15d)充当身份验证提供者。在图17a中,身份验证提供者2000包含组件201、202和203,这些组件表示能够执行各种功能的软件程序,稍后将详细介绍这些功能。这些函数统称为200,并假定可以访问分布式存储和数据库系统300。如图所示,标记为200的功能参与生成认证用户的凭据,用户指纹数据的加密版本可能存储在存储系统300的记录375中。

在一个实施例中,数据库系统300(2000,参见图17a)实现为区块链账簿系统,并将标记为200的功能作为一组智能合约来操作账簿中的数据。

假设身份验证提供者希望允许用户计算设备创建并向服务供应商提供凭据;然后,服务供应商可以向身份验证提供者求助,以验证所提供的凭据。为了达到这个目的,认证提供者开发或获取软件程序,允许他执行图17a中的密匙生成器201、证明生成器202和验证器203所示的功能。我们首先描述执行这些功能的一般方法,然后给出更详细的解释。参考图17b描述了一般方法。

[方法m1]:

·在配置步骤中,为用户计算设备配置称为凭据创建器101的特定软件,如图17a所示。

·在步骤1a(图17b)中,用户计算设备选择标识符@john并从身份验证提供者请求其身份验证凭据。

·在步骤1b中,身份验证提供者在特定输入上运行一个称为密匙生成器201(图17a)的软件程序,创建凭据算法。输出是一组计算对象(称为密匙),pk1和vk1。本软件程序的详细信息和按键的属性如下所述。认证提供者还使用第二个输入凭据匹配算法运行密匙生成程序,该算法作为输出生成一组称为pk2和vk2的两个密匙。

·在步骤2中,身份验证提供者从用户计算设备请求和接收指纹数据矩阵的加密版本(但不是指纹本身)。用户计算设备可以使用作为设置步骤的结果接收的软件程序凭据创建器101。101功能的更多细节将在后面解释。

·在步骤3中,身份验证提供者使用从用户计算设备接收的数据矩阵和一个名为证明生成器202(图17a)的软件程序生成两个对象证明-1和编码数据1,统称为凭据,凭据1。或者,对证明生成器202的输入还可以包含稍后讨论的其他数据集。

·在步骤4中,生成的凭据、凭据-1和密匙pk1、vk1和pk2被发送到用户计算设备。请注意,vk2没有传输;它由身份验证提供程序保存,以供以后在验证凭据时使用。

·在步骤5a中,当用户计算设备希望出示凭据时,用户计算设备生成一个新的凭据,凭据-2(使用软件程序凭据创建器101,参见图17a),并将其呈现给服务供应商/环境(200,参见图15d),后者可以请求认证提供者验证出示的凭证(步骤6)。

·在步骤7a和7b中,身份验证提供者使用一个名为验证器203(图17a)的软件程序(连同先前保存的vk2作为输入)来验证所提供的凭据凭据凭据-2作为用户身份验证,并相应地响应服务供应商/环境。

图17c总结了方法m1,其中我们假设,但不限于,sps用作身份验证提供者。注意,图17c中的服务供应商200可以将认证提供者300集成为某些实施例中的子组件。

现在,我们将继续详细解释上述各种计算对象(即密匙、证明、凭据等)的推导和验证方法。

我们假设存在三个软件引擎kge(密匙生成引擎)、pge(证明生成引擎)和pve(证明验证引擎)。(如图17a所示的认证提供者的组件密匙生成器201、证明生成器202和验证器203可以将这些引擎封装为计算机程序。)如先前技术所知,这些引擎中的每一个都可以在执行特殊软件逻辑的一台或多台计算机上实现。描述各种引擎功能的一种方便方法是将它们分别视为图18a、18b、18c和18d所示的“方框”装置。

kge(111,参见图18a)接受计算机程序l,100作为输入。它生成两个密匙,分别是pk300和vk400,分别称为证明密匙和验证密匙。

作为一个例子,处理计算机程序并生成关键对象的互联网提供商已经在公共领域发布了软件逻辑(例如,参见elibensasson等人的《c的陷阱:简洁地和零知识地验证程序执行》,可从网站eprint(dot)iacr(org)(slash)2013(slash)507(dot)pdf通过安全http,即https,连接。

重要的是要注意,由kge生成的密匙pk和vk是输入软件逻辑的函数。对软件逻辑的任何更改都会产生不同的pk和vk。此外,pk和vk的互补性还取决于输入软件逻辑。也就是说,输出密匙唯一地表示输入算法的特征,即输入算法的任何更改都需要更改输出密匙。

术语“密匙或加密密匙”是指满足以下属性的数字数据对象。

·(p1)如果显示在显示屏上,输出密匙可能以二进制(十六进制)数字的随机序列出现。

·(p2)没有两种不同的kge输入算法产生相同的输出密匙。

pge(222,图18b)接受编码对象eo500(即,根据以下描述生成的数据集)和证明密匙pk300(由上述kge生成),并生成称为证明,p(555)的加密对象和作为输入eo500函数的新数据集编码对象(eo-2550)。加密对象“p555”满足上面的属性p1,即,如果显示,它将显示为(十六进制)数字的随机集合。

pve(333,图18c)接受由kge生成的验证密匙vk(400)、pge生成的验证对象p(555)和数据集eo-2(550)作为输入,并输出“真”或“假”。只有当且仅当以下所有条件都为真时,它才会生成响应“真”;否则,它将生成响应“假”。

·数据集550和证明对象p(555)由pge222生成(参见图18b);

·密匙vk由kge生产;

需要注意的是,可以使用pve(图18c)来验证对象“证明”和“编码数据”(图18b)是使用输入到kge的算法“l”(图18a)生成的。如果对象“证明”和“编码数据”一起被称为“凭据”或“卡”,那么我们可以声明该凭据或卡是由给定的算法l生成的。

我们重申,使用验证密匙验证凭据也可以确保通过使用给定算法运行引擎kge生成凭据。我们将此功能称为验证凭据的来源,即凭据来自已知且不变的算法。

我们现在展示并讨论构建和使用kge、pge和pve的启用实施例。

在现有技术中众所周知,当用户的指纹数据被指纹传感器/扫描仪捕获时,可以表示为一个数据矩阵,通常是一个1000x1000矩阵(例如,参见j.chu等人,美国国家研究所的“使用chebyshev不等式确定指纹数据生物测定中的样本大小”。国家标准与技术,马里兰州盖瑟斯堡)。为了便于讨论,我们将启用示例限制为具有9个样本的数据集,即如图19a所示的正方形3x3矩阵。(同样,用户的面部数据也可以捕获为数据集;可以理解,面部数据集的大小大于指纹数据集。)

引擎的功能kge和pge现在可以通过参考图19a、19b、19c、20a和20b来解释。

从输入数据集生成一对互补密匙在现有技术中是众所周知的(例如,参见paar等人,understandingcryptography,springer,newyork,isbn:978-3-642-04100-6;elibensasson等人的文章。上面引用的例子说明了如何有效地生成密匙);因此,可以相应地构造kge。

现在转到pge的启用实施例,图19a显示了作为3x3矩阵的用户指纹数据的示例性数据集。矩阵的单元格使用罗马数字(i、ii等)从1到9进行编号;单元格值显示为整数37、42等。在图19b中,我们将每个单元格值及其位置映射为整数1、2或3中的一个,如图所示。这些对代表单元号和单元值,因此(i,37)表示矩阵单元“i”中的样本值37等。

我们现在用整数1、2和3构造一个3x3数独问题(也称为拉丁方)。其中一种排列如图19c所示。众所周知,数独难题满足每行和每列之和相等的约束。(在图19c所示的示例中,每一行和每一列的单元格值加起来为6。)

虽然数独游戏被选为3x3顺序(即尺寸),并且输入数据集也被假设为3x3顺序的矩阵,但这只是巧合。我们可以选择任意顺序的数独问题,只要它的单元数大于或等于映射表中的条目数,即图19b。注意数独问题的顺序与它的计算难处理性有关。因此,工程师可能希望据此确定订单。

需要注意的是,如果没有图19b的数据,图19c的数独排列知识就不能用于推导图19a的矩阵。也就是说,从图19a到图5c再到图19b是计算上容易的,但在不知道图19b的情况下,从图19c推导图19a是计算上难处理的。

(计算简便性和难处理性的概念是指计算机操作的效率,在现有技术中是众所周知的。)

因此,pge的功能可以描述为以指纹数据集和算法l为输入的软件程序(引擎)。算法“l”操纵输入数据集以生成映射(如图19b所示),并从中生成完整/解决的数独问题,如图19c所示。

使用图19c的数据集,即完整/已解数独问题,pge将其分为两部分,如图20a和20b所示。注意,将两个分割部分放在一起,如图2所示。20a和20b加在一起得到原始完成的表(图19c)是容易计算的;但是,从图20a中导出完成的表(图19c)是很难计算的。例如,据估计,一个9x9数独游戏有数十万亿个可能的解决方案(6670903752021072936960)。

因此,pge可以被描述为一个引擎,它将编码的数据集和算法作为输入,并作为输出生成(1)一个加密的数据集(“证明组件”),表示一个部分解决的数独问题(图20a),以及(2)清晰的数独问题的“缺失”部分(图20b,“缺失组件”)。

现在,借助图21,我们描述了一个pve的启用示例,如下所示。

pve解密证明组件(图20a),将其与清晰的缺失组件(图20b)结合,得到满足数独约束的完整表。如果表是完整的并且满足约束,那么pve输出“真”;否则输出“假”。

请注意,数独难题的计算难处理性意味着,当我们将一个数独难题分成两部分并将它们分配给不同的实体时,我们依赖于这样一个事实:任何拥有一个数独难题的实体都需要巨大的计算能力来“解决”问题,即,共同解决问题。计算缺失的部分;然而,拥有两个拼图块的实体可以将它们与相对较小的计算工作结合起来。

我们现在应用上述对kge、pge和pve的描述来更全面地描述图17b中所示的方法,即,我们提供了供应操作的细节以及步骤1b、3、5a和7a。

身份验证提供程序将两种算法(创建凭据和匹配凭据)封装到称为凭据创建器的软件包中,以及使用算法的逻辑。在图17b的设置步骤中,凭据创建器被提供给用户计算设备。

创建凭据算法是生成证明和验证密匙的计算机算法,如上所述。“匹配凭据算法”是一种计算机算法,它匹配两个(实际)指纹并生成“是/否”响应。一些互联网服务供应商,例如亚马逊,已经提供指纹数据和人脸图像数据匹配算法作为开源软件。

在步骤1b(参见图17b)中,认证提供者根据凭据生成算法生成密匙pk1和vk1作为kge的输入。接下来,它生成密匙pk2和vk2,并使用匹配凭据算法作为kge的输入。这两种情况如图22a所示。

在步骤3(参见图17b)中,认证提供者使用pge生成凭据c1,由证明对象和编码对象组成。如图22b所示。pge的输入是凭据创建器101派生的指纹数据矩阵(参见图17a)。在某些实施例中,在可选操作中,还可以提供额外的数据集作为pge的输入。例如,用户可以提供一个名称或短语,该名称或短语将被编码到凭据中。这个特性让人想起了双因素认证,即凭据封装了两个项目来认证用户、指纹数据和用户名或阶段。因此,凭据生成和表示阶段需要两项信息。

pge(图22b)生成一个证明对象和一个作为输出的编码数据版本。这些对象的组合称为卡c1。需要注意的是,术语“卡”只是表示计算对象(即证明和编码数据集)组合的名称。它不引用物理实体。(术语“凭据”和“卡”是同义词。)

在步骤5a(参见图17b)中,用户计算设备使用凭据创建器软件包来执行图22c所示的过程。执行时的过程生成第二个凭据/卡c2。

图22c的过程可描述如下。回想一下,用户计算设备拥有“c1”,并从认证提供者处接收到vk1(如图17b所述)。我们使用c1和vk1作为pve的输入,并使用pve验证c1。如果c1被验证(即,pve输出“是”),我们按照以下步骤进行;否则我们报告故障并终止流程。

图22c的过程现在要求用户提供其指纹(实际)和用户输入(如果有,例如用户名)。它们作为匹配凭据算法的输入,以检查提供的指纹是否与用户存储的指纹匹配。不匹配报告为失败。在匹配时,我们使用输入pk2和用户数据(如果有)调用pge来生成卡c2。

在步骤7a(参见图17b)中,认证提供者使用pve和vk2验证c2,如图22d所示。

值得注意的是,c1编码指纹数据矩阵和用户指定输入之间的关系,而c2编码两个事实:

1.(1)c1的验证建立了指纹数据矩阵与用户输入之间的关系;

2.(2)c2的验证建立了用户输入和用户实际指纹之间的关系。

根据事实(1)和(2),用户输入数据“链接”指纹数据矩阵到用户的实际指纹。

因此,c2的验证确定生成c1的用户与生成c2的用户相同。还需要注意的是,没有向认证提供者和它可能存储、生成或验证的数据对象披露用户身份。注意,由于用户输入被编码到指纹数据矩阵中,身份验证提供者不知道用户输入。身份验证提供程序获得的所有数据对象(由用户计算设备或服务提供程序提供)都是加密对象。

提供信息的准确性

以上讨论展示了如何使用kge和pge引擎,使用用户的指纹或其他生物特征数据来创建凭据。(然后可以使用引擎pve验证凭据。)这些引擎的输入是一对称为创建凭据和匹配凭据的算法。

我们可以使用kge、pge和pve引擎从不仅与指纹相关的数据集创建和验证凭据,还可以从其他生物特征数据集(如面部图像)创建和验证凭据。如上所述,面部图像可以被视为像素数据矩阵,可以被编码为适合于算法操作的数据矩阵。就像创建凭据和匹配凭据算法处理指纹数据矩阵一样,我们需要处理面部图像数据矩阵的算法。我们可以假定两种算法,并将它们作为创建人脸凭据和匹配人脸凭据算法来命名。

在某些实施例中,还允许用户通过在用户计算设备上使用合适的api添加(作为用户输入)选定的属性信息,例如“@john”、“喜欢古典音乐”、“地址=10主街”等字符串。这在图22c中显示为pge的可选输入(99)。

除了指纹和图像数据集之外,用户的财务信息(如信用卡)或驾驶执照在被视为数据集时,也可作为输入数据集。请注意,典型的驾驶执照包含用户的面部图像和用户属性,如街道地址、出生日期等。如果用户驾驶执照或信用卡中的用户属性信息编码为可验证的凭据,则服务供应商就可以确定用户信息的准确性。

因此,例如,根据从用户的驾驶执照中获得的凭据,用户可以向服务供应商提供表明用户年龄大于21岁的凭据。也就是说,可以为用户计算设备提供适当的软件,模仿图17a所示的凭据创建器101,以处理驾驶执照的图像数据集。

更具体地说,我们可以使用两种算法创建dl凭据和匹配dl凭据作为kge的输入,分别导出两组密匙(pk1、vk1)和(pk2、vk2),如图22a所示,即kge引擎被送入创建dl和匹配dl算法,这两种算法不同于图22a所示的算法。

继续进行步骤2a(参见图17b)中的描述,向用户计算设备提供适当修改的创建凭据软件包(参见图17a)。

要从驾驶执照数据集生成凭据,我们现在可以使用上面描述的方法m1。请注意,方法m1处理驾驶执照数据集而不是指纹数据集所需的唯一更改是使用不同的算法,即创建dl和匹配dl凭据算法。

请注意,由于用户的驾驶执照包含用户面部特征和出生日期的图像,因此从中获得的凭据可用于验证用户及其年龄。同样,由于驾驶证包含用户的街道地址,基于驾驶证的凭据也可以验证用户的街道地址等(用户添加到输入数据集的其他信息属性的准确性也可以以类似的方式建立)。

类似地,包含用户指纹和/或面部图像数据以及其他信息属性(如帐号等)的信用卡可作为加密凭据的基础。同样,这可以通过使用操作信用卡数据集的算法来实现。

现在,我们回到上面描述的实施例中,在该实施例中,我们先前断言,sp可以创建和存储表示用户名的关联对象。我们提供以下描述以支持该断言。

我们假设存在两种算法,例如创建用户名和匹配用户名。前一种算法的操作如下。

要求用户提供或选择第一个用户名。该算法根据提供的用户名生成唯一的数据集,即数据表。也就是说,数据集是输入的函数。如上所述,可以使用数据集和第一个用户名生成存储在sps中的第一个凭据/卡c1。

匹配用户名算法的操作如下。要求用户提供第二个用户名。该算法生成与所提供的第二个用户名相关的第二个数据集。我们现在可以匹配第一个和第二个用户名(等价地,我们可以匹配第一个和第二个数据集)。成功匹配后,我们可以生成第二个凭据/卡c2,如上所述。注意,c2将包含一个加密对象和一个清晰的数据对象,后者是第一个或第二个用户名。

接收卡c2的服务供应商可以将其视为关联对象,因为它包含加密对象和清晰对象。为了验证其真实性,服务供应商可以向sps请求相同的信息(如上所述)。

因此,驾驶员执照、信用卡和其他包含消费者身份验证和其他属性信息的此类工具可用于通过使用以下算法创建认证和验证用户身份、用户信息属性和用户断言准确性的凭据:处理与这些仪器相关的数据集以及kge、pge和pve引擎。

需要进一步注意的是,pve对凭据的验证还需要一个事实,即生成凭据的输入算法(例如,图22a的创建凭据算法等)是不变的,否则pve的验证将失败。也就是说,通过pve的成功验证需要将算法输入密匙生成引擎。

因此,与上述ups创建和维护的用户名相对应的模糊对象也可以使用pve引擎验证其真实性和起源。

上述凭据生成和呈现过程中使用的各种软件引擎和算法可由向消费者提供工具(如驾驶执照或信用卡)的实体提供。在某些实施例中,与上述各种凭据相关联的验证功能可被提供实体的此类工具集成并纳入其中。

近似对象

在一些实施例中,服务供应商可能需要用户数据通过注入到环境中的应用程序来提供服务,例如,应用程序可能在与用户计算设备的会话中,并且可能需要用户的位置来向后者提供服务。我们提出一个用户的属性信息可以通过将属性的奇异值转换为一系列值的近似对象来表示。

也就是说,我们采用数据类型“t”的属性值“v”,通过添加相同类型的附加元素(v1、v2等)并通过算法过程选择,从中派生一个近似对象。例如,值为“21”的属性年龄(即“年龄=21”)可以转换为近似对象“年龄=(15、18、21、45、54,…)”;值为“姓名=john”的属性/值可以转换为“姓名=(john、peter、smith,…)等。请注意,该属性的值包含在范围内。

我们要求一个近似对象的范围,即其基数是有限的和预先确定的。

mccarthy在现有技术中引入了近似对象的概念(参见j.mccarthy,近似对象和近似理论,知识表示和推理原理,proc.第7届国际会议,科罗拉多州,2000年)以及zadeh(参见l.zadeh,从数字计算到文字计算,ieeetrans.在电路和系统上,45(1)105:119,1999)捕捉各种近似信息。在麦卡锡的公式中,所有信息都是近似的。例如,在某些域中,“john在附近”语句可能是正确的,而在其他域中则是错误的。

如本文所用,近似对象“x=(a1,a2,…)”表示属性“x”的值为集合中的一个且只有一个元素为=(a1,a2,…)。也就是说,存在一个元素“z∈as”,对于该元素,判断“x=z”为真,而对于as的每个元素y≠z,判断“x=y”为假。

在mccarthy的处理中,所有信息都是近似的,只能通过特定领域的方法来确定,即通过合适的“近似理论”。在我们的用法中,用户计算设备具有转换为近似对象的精确信息。只有创建近似对象的用户计算设备才能执行反向过程,从而精确地呈现近似对象。

也就是说,用户知道或可能使用其用户计算设备来确定上述“z”值。例如,用户计算设备的gps传感器可用于确定用户的位置。然后我们可以说,我们公式中的一个近似对象可以通过用户计算设备产生的理论来解决,即精确地呈现出来。

例如,mccarthy公式中的属性/值“附近=2miles”在某些领域(理论)中可以解释为真,而在其他领域则可以解释为假。在我们的用法中,“附近=2miles”属性/值可能被运行在用户计算设备上的用户或计算机程序解释为真/假,可能使用了用户计算设备可用的传感器。简单地说,mccarthy的近似理论(或领域)的概念需要解决一个近似对象是由一个用户计算设备及其传感器实现的。

可以使用上述方法验证近似对象的真实性和起源,方法是使用所代表的服务供应商提供的算法(如上所述)将其转换为凭据。在收到此类凭据后,服务供应商可以(通过求助于拥有pve引擎的实体)对其进行验证,验证有两个目的,即用户提供了近似对象,即真实性,并且生成凭据所提供的算法是已知的且未经修改的(起源)。

要显示近似对象的效用,考虑将计算机程序,例如rp(零售程序)注入计算环境。假设rp提供服务供应商的零售位置,该位置最接近用户的给定位置。以下步骤是示例。

3.rp查询用户计算设备ud的位置。

1.ud提供近似对象alo,表示ud所在的位置。

2.rp使用近似对象alo计算3个最近的位置,如x、y和z。

3.rp向ud提供x、y和z。

4.由于ud知道其确切位置,因此它计算到x、y和z组中每个成员的距离,并相应地选择距离其最小的成员/位置。

用户计算设备现在可能希望直接连接到所选位置,例如,它可能希望获取到所选位置的路由。然而,要计算这样一条路径,我们需要用户计算设备的确切起始位置;这个近似对象不足以达到这个目的。

也就是说,我们需要将近似对象解析为其“精确”值。而且,根据本发明的规定,这种决议必须是隐私保护的。我们提出以下方法来解决可解决性问题,并通过返回到上述示例中的程序rs的行为来举例说明,即用户希望找到从其位置到程序rs提供的位置的路线。

我们假设服务供应商拥有一个表tr,其中包含按其位置索引的所有零售店的列表。

[方法:可分辨性(m2)]

1.让属性l对应的近似对象用alo表示。注意,alo的基数是有限的,并且是预先确定的。

2.服务供应商将接收器注入环境中。在rs和用户计算设备ud之间建立会话。

3.ud发起与最近零售店的位置对话或请求rs。

4.rs询问用户计算设备ud的位置。

5.ud回应它可以提供alo。

6.rs要求alo的基数,如5(不限于)。在某些实施例中,基数可以在ud和rs之间协商。

7.ud为alo提供基数5。

8.rs搜索表,tr,以确定(例如)三家离alo元素所限定区域最近的零售店。

rs将这3家商店的位置告知ud。

9.rs根据rs提供的3个商店列表计算最近的商店。

10.rs将一个路线发现计划加入会话,并将其重新指导给ud。

11.ud启动与寻路程序的对话,并将其确切位置传送给它。

12.寻路程序计算路线并通知ud。

13.ud终止与寻路程序的交互/对话,并通知rs。

14.rs清除会话中的所有虚拟机。

图23显示了作为用户位置属性的两个示例性近似对象。“点”表示近似对象的元素,其中一个点是用户计算设备的确切位置,并且仅为用户计算设备所知。

我们在下一节的说明性实施例中进一步解释本发明的这一方面。

说明性实施例(私人乘坐共享服务)

在以图15d所示的隐私保护方式描述了各种用户提供的信息及其处理之后,我们提出了一个包含上述各种技术的说明性实施例。也就是说,我们通过下面的说明性实施例展示了本文提出并在图15d中描述的本发明的实用性。

在下面的示例性实施例中,我们考虑提供乘坐共享服务的服务供应商。当然,更一般的情况是,可以使用类似的技术来交付任何服务或产品或执行交易。组成乘坐共享服务的要素可列举如下。

1.用户使用用户计算设备请求乘坐。

2.服务供应商将提供乘坐服务的设备(如汽车或其他车辆)发送到用户所在地。

3.用户上车被带到目的地。

4.用户使用用户计算设备支付服务费用。

用户的一些顾虑可以列举如下。

1.用户希望自己的身份和用户名保密。

2.用户希望自己的上车和目的地位置保密。

3.用户希望对其信用卡/支付数据保密。

服务供应商可能也有一些顾虑,其中一些可能如下所示。

1.司机是在最接近用户位置的基础上向用户提供的,以最小化用户的“等待”时间。

2.提供商希望对用户进行身份验证,即没有恶意用户。

3.供应商希望得到付款验证的保证。

图24a、24b和24c显示了一种实现私人乘坐共享服务的方法(根据上述服务描述),并解决了用户和服务供应商的问题。实施例是示例性的,旨在描述本发明的技术可用于实施该服务的一种方式。

虽然本具体实施例在一个会话中使用三个计算机程序,但更一般地说,在一个会话中可以使用任何适当数量的计算机程序。其他实施例可以使用涉及多个设备、计算机和程序的多个会话。

我们假设私人乘坐共享服务供应商决定由一个乘坐共享计算机程序rs代表,该程序将驾驶员与想要乘坐的用户进行匹配。服务提供程序有一个由数据库处理器dbp管理的计算环境。后者适当地配置为在虚拟机中创建会话、虚拟机、虚拟机和运行注入的计算机程序,如本发明中所述。

关于图24a,说明性实施例的描述如下。

服务供应商从称为司机设备(例如,司机使用的移动通信设备)的一组设备接收位置更新。从司机设备接收到的位置更新存储在数据库中。服务供应商希望提供隐私保护乘坐共享服务,开发或收购计算机程序rs。

在初始化步骤init-1中,用户计算设备分别从sps请求和接收认证和信用卡凭据acr和ccr。用户计算设备通过选择适当的用户名将凭据封装到关联列表中,例如(acr,@john123)和(ccr,@john123)。

在初始化步骤init-2中,服务提供程序启动由数据库处理器dbp管理的计算环境,并请求后者创建与第一虚拟机vm1的会话,其中将执行rs。(为了便于理解,程序rs对应于图17c中的示例程序cp。)

因此,会话包含运行计算机程序rs的vm,vm1。我们将这种情况表示为步骤init-3中显示的“环境vm1/(rs)”。

请注意,服务供应商可以在一个会话中运行多个虚拟机,每个虚拟机都可以运行rs程序的副本以支持多个同时用户请求。

在另一实施例中,用户计算设备可以在目录中发现程序rs,并将其注入计算环境中。

在又一实施例中,将计算机程序rs注入计算环境可能是由运行在用户计算设备上的计算机程序接收到的触发器引起的,该触发器可用于用户计算设备。

假设rs已预先设置并配置为访问“司机设备位置更新”数据库。

希望使用隐私保护乘坐共享服务的用户计算设备可以向程序rs请求相同的请求。这样的请求可能需要用户计算设备打开帐户、接收特定的服务逻辑等。我们将这些操作统称为“注册”步骤,如init-4所示。

注册步骤完成后,rs邀请用户计算设备进入会话。然后我们可以将上下文表示为vm1/(rs,ups),如步骤init-5所示。

重要的是要注意,我们假设上述实施例,其中ups和rs在一个会话中,而这两个会话之间的通信不是由sps进行中介的。

步骤init-5结束初始化阶段。我们现在继续对示范性实施例的剩余解释。

在步骤1中,ups使用关联列表(acr,@john123)向rs发出登录请求。或者,ups可以响应从rs收到的登录请求,并向其提供acr和用户名。

在步骤2a中,rs请求sps验证出示的凭据,并在步骤2b中收到确认。请注意,服务供应商确信出示的凭据是真实的,但不知道与用户相关的任何身份信息,除了标识符@john123之外,该信息可用于先前的历史记录数据。例如,服务供应商可以检查其历史数据,以确定@john123更喜欢在使用共享服务时播放某些类型的音乐,或者更喜欢具有一定容量的智能车。另外,请注意,用户使用标识符@john启动请求,但可能会为将来的请求更改此标识符。

在步骤3中,ups从rs请求乘坐。

在步骤4中,rs请求ups提供其位置。

在步骤5a中,ups以接近其位置(alo)的数据对象响应。rs可以使用上述方法验证alo的准确性;我们认为此步骤是可选的。

在步骤5b中,程序rs根据从司机设备接收到的位置更新和从ups接收到的alo对象,计算并选择离rs最近的三个(不限于)司机设备。请进一步注意,由于服务供应商的原因,rs知道用户是@john123,并且可以访问@john123的历史数据。因此,它对司机设备的选择可能会受到历史数据的影响,例如,它可以根据@john123和其他用户提供的额定值来调整其对附近司机设备的选择。

在步骤6中,三个所选司机设备的位置通过rs与ups通信。在步骤6b中,由于ups知道自己的精确位置,因此它计算并选择三个司机设备中的一个,即x。也就是说,ups解析alo并根据分辨率选择设备“x”。在步骤7a中,ups将其决定传达给rs。

我们根据图24b继续上述描述。

在步骤7b中,程序rs在收到ups关于后者选择司机设备“x”的决定后,邀请设备“x”进入会话,并请求设备“x”启动第二个虚拟机vm2(步骤7c)。

会话环境现在是vm1/(rs,ups,x),如步骤7d所示。设备“x”的(操作系统)正在运行自己的虚拟机vm2。

在步骤7e中,rs将ups重新引导至设备x。

请注意,在现有技术中,程序将未来请求重新定向到另一个程序的概念是众所周知的。例如,当网站更改其地址时,传入旧地址的请求将被重新定向到新地址。请进一步注意,此类重定向请求可能会在稍后中止。

在步骤8a中,ups将其精确位置与司机设备x通信,以启动上车请求。请注意,由于ups在步骤7e中被重新定向到设备x,因此用户计算设备对其精确位置的揭示是针对设备“x”而不是针对rs。

步骤8b显示了ups作为司机设备x的上车和下车流程主体的流程。我们省略了这些操作的详细信息,因为这些操作特定于底层服务供应商,并且受制于用户界面和自定义。

在步骤9中,设备“x”请求ups付款。在步骤10中,ups向设备“x”提供信用卡凭据、ccr和用户名@john123。在步骤11a中,设备“x”请求sps对ccr进行身份验证,而在步骤11b中收到确认指示。

在步骤12a中,设备“x”使用带外过程记录从ups收到的凭据ccr付款。请记住,ccr不向设备“x”传送任何用户信息。它仅仅提供了一个保证,即凭据是真实的,支付处理器可以继续处理来自未知来源的支付。

在步骤12b中,设备“x”向ups发送终止当前对话的请求。在步骤12c中,ups通知rs“x”可能会从会话中清除。在步骤12d中,rs请求x清除vm2。在步骤13中,rs从会话中删除“x”。

我们根据图24c继续上述描述。

在步骤13之后,当前环境是“vm1/(rs,ups)”。这在步骤14中指出。

在步骤15中,程序rs通知ups设备“x”不再在会话中。在步骤16中,ups通知程序rs,它已完成其乘坐共享请求。

在步骤17中,程序rs从会话中移除ups。请注意,从会话中删除ups可能需要注销程序ups。

在步骤17之后,在当前环境中,程序rs没有与之通信的其他程序vm1(rs),并且根据其设计,可以配置为等待来自ups的请求(第18步)。

我们观察到步骤7b请求司机设备“x”启动虚拟机。此请求的目的是确保x与ups的交互具有额外的隐私级别。然而,在某些实施例中,这种额外的隐私级别可以视为可选的,并且司机设备“x”可能不需要运行虚拟机,即“x”可以与ups交互,而不需要这样的软件层干预。

重新考虑上面的步骤12a是有指导意义的,其中设备“x”使用频道外方法来处理用户计算设备使用信用卡凭据支付的款项。如上所述,凭据是安全的,并且保留了用户的隐私。

然而,热心读者可能会观察到ups在步骤8a中将其精确位置传送到设备“x”。设备x还知道@john123的下落位置。也就是说,设备x在上述过程之后对用户的总体了解包括以下元素:“标识符=@john123”、凭据ccr以及上车和目的地位置。标识@john123与凭据ccr一样保留了用户的隐私;但是,x对上车和下车位置的了解可能会被视为对用户隐私的问题。我们观察如下。

首先,设备“x”知道它从第一个位置接到了@john123,并把他放到了第二个位置,而不知道此人的身份。

第二,设备“x”获取用户在虚拟机vm2中的取放位置信息,该信息在设备注销时被清除,即“x”所知是短暂的。

第三,从包含rs和ups的会话中删除设备“x”。

最后,一旦设备“x”从会话中清除,ups也将从会话中清除。与用户有关的任何可能保留在rs中的信息只包含模糊对象。因此,除了模糊的标识符和不透明的加密对象之外,服务供应商不保留使用者在服务提供期间提供的任何用户属性信息。

在另一个实施例中,由于程序rs在dbp创建的会话中运行,因此也可以删除该程序rs。此外,可能会要求dbp关闭会话本身。然后,dbp可以启动一个新的会话,运行接受新的乘坐共享请求的计算机程序rs的新副本。因此,服务供应商不能保留任何用户属性信息。

说明性计算环境

本文所述主题的各个方面可以在由计算机执行的计算机可执行指令(例如程序模块)的一般内容中描述。通常,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本文所述主题的各个方面也可在分布式计算环境中实施,其中任务由通过通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可以位于本地和远程计算机存储介质中,包括内存存储设备。

此外,还注意到一些实施例被描述为流程图或框图。虽然每个操作都可以描述为一个连续的过程,但许多操作可以并行或并发地执行。此外,可以重新排列操作顺序。流程可能有图中未包含的其他步骤。

所要求保护的权利要求可以使用标准编程和/或工程技术来生产软件、固件、硬件或其任何组合以控制计算机以实现所公开的权力要求的方法、装置或制造物品来实现。例如,所要求保护的权利要求可以实现为嵌入计算机可执行程序的计算机可读存储介质,所述计算机可执行程序包括可从任何计算机可读存储设备或存储介质访问的计算机程序。例如,计算机可读存储介质可以包括但不限于磁盘存储设备(例如,硬盘、软盘、磁条……),光盘(例如,光盘(cd)、数字多功能光盘(dvd)……)智能卡和闪存设备(如卡、记忆棒、密匙驱动器……)但是,计算机可读存储媒体不包括短暂的存储形式,例如传播信号。当然,本领域技术人员将认识到,可以对该配置进行许多修改,而不背离所述权利要求的范围或精神。

此外,本申请中使用的术语“组件”、“模块”、“引擎”、“系统”、“装置”、“接口”等通常是指计算机相关实体,硬件、硬件和软件、软件或执行中的软件的组合。例如,组件可以是但不限于运行在处理器、处理器、对象、可执行文件、执行线程、程序和/或计算机上的进程。举例来说,在控制器上运行的应用程序和控制器都可以是组件。一个或多个组件可以驻留在一个进程和/或执行线程中,并且一个组件可以在一台计算机上本地化和/或分布在两台或多台计算机之间。

上述实施例描述了包含在不同其他组件内或与不同其他组件连接的不同组件。需要理解的是,这样描述的架构仅仅是示例性的,事实上,可以实现许多实现相同功能的其他架构。从概念上讲,实现相同功能的任何组件排列都有效地“关联”,从而实现所需的功能。因此,本文中结合以实现特定功能的任何两个组件可以视为彼此“关联”,从而实现所需功能,而不考虑体系结构或中间组件。同样,任何两个相关的组件也可以被视为“可操作连接”或“可操作耦合”,以实现所需的功能。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1