具体实施方式
本发明按如下方式定义了用于对敏感数据进行安全处理的方法:
a)在对敏感数据进行处理的过程中合作的各方首先建立一种关系,在该关系中,它们就构成处理过程的功能步骤以及就应该在单个处理步骤中使用的数据项。
b)各方就处理的形式说明和数据的使用协商一致,这在合同中进行声明。除了信息之外,合同还定义了处理的单个处理步骤,哪些数据项应该用作单个处理步骤的输入以及处理步骤将哪些输出提供到处理状态。
c)服务是合同的解释器。它保证了系统准确地执行由合同所定义的功能,并以计划的方式使用数据项。特别地,这意味着,处理过程和所使用的数据项无法被观察或从外部进行篡改。
对于审查方案,涉及的各方可以是经营审查服务的服务提供商,希望对个人进行检查的审查者,提供审查列表数据的多个信息提供商,以及诸如执法部门、机场安全或人力资源之类的各方,在审查列表中找到被审查的个人的情况下,应该通知这些部门。
信息提供商希望将他的审查列表数据保密,即,他允许将该数据用于审查,但有关该列表的信息不能泄漏到系统的外部。审查者希望保证被审查的个人的基本保密性,只要它们不在审查列表中显示出来。具体来说,他不希望允许信息提供商基于审查请求跟踪任意的个人。在匹配的情况下审查者和信息提供商只希望通知执法部门,在其它情况下不希望泄漏信息。没有哪一方希望信息泄漏给服务提供商或入侵者。
图1显示了根据本发明的实施例的参与各方之间的一般工作流。一般而言,所有处理都由下列方案表示:请求者101向安全请求处理系统102发送服务请求110。请求处理系统102确定管辖此请求的处理的合同,并基于该合同执行处理步骤序列。请求处理系统102基于服务合同从一方103接收数据。单个处理步骤的应用程序使用处理状态的子集作为输入。处理步骤的输出用来延长处理状态。在合同中定义了输入和输出说明。处理的初始状态包括来自触发了处理的请求的信息。当执行了所有适用的处理步骤之后,请求处理系统102为涉及请求的处理的各方101、103和104产生响应消息111。各方的消息的内容在合同中说明。
每一个请求都可以具有不同的请求者。例如,在请求110在图1中被处理之后,一方103可以承担请求者的角色并发送其自己的服务请求112。不同种类的服务请求调用不同的合同,而不同的合同又向客户端提供不同的服务功能。
在典型的应用中,信息提供商103将不时地发送服务请求112,以更新他向服务提供的信息。控制这种类型的请求的合同说明了如何使用来自信息提供商的请求中的数据来改变服务内部的信息。此后,将使用更新的信息来处理其他服务请求。
系统允许不同的各方基于不同的合同同时进行交互。例如,在审查应用中,可以有多个不同的审查方、不同的信息提供商,以及不同的执法部门。发送到系统的每一个请求都基于指定的合同来调用处理。合同确定了在对此请求的处理过程中哪些方将进行交互操作。为了方便起见,我们还定义了复合的合同,有关详情,请参见下文。
由于处理是由合同进行控制的,并且参与各方控制了合同,因此它们对处理以及使用它们的数据的方式具有完全控制权。在安全计算环境中执行合同保证了信息不会泄漏,并且没有人可以篡改数据的处理。
图2显示了由根据本发明的实施例的合同定义和控制的安全数据处理的系统的总体结构的方框图。一般来说,处理开始时,服务器201通过网络连接204接收服务请求200。请求200由合同引擎203进行处理,合同引擎203包括请求处理程序205、任务处理程序208和应答程序209。所有三个组件都处理处理状态207并由合同206进行控制。
请求处理程序205首先检查传入的请求是否有效,并允许进行处理。通过对照合同206中定义的信息对请求的内容和发送了请求的那一方进行检查来完成此项工作,合同206定义并控制对此特定服务请求的处理。
在本发明所描述的系统中,对服务请求的处理是合同206进行控制的。合同(参见图6)是由对服务请求的处理过程中合作的各方相互协商一致的形式说明。合同准确地定义和控制服务器如何处理请求以及在此处理期间在单个处理步骤之间如何公开和综合信息。
合同规定:
a)在对请求进行处理过程中合作的各方;
b)在请求消息中提供的数据项;
c)在请求的处理过程中必须执行的单个操作;
d)作为执行操作的结果产生的数据项,以及这些数据项的所有权;
e)控制单个操作的应用的工作流;以及
f)允许数据项的所有者准确地控制他希望向哪些处理步骤公开他的数据,以及他不向哪些处理步骤公开的单个操作之间的受控制的数据流。
下面将给出形式数据模型和有关合同的更多细节。
如果请求处理程序205对传入的服务请求200的检查失败,则请求将关闭。否则,如果一切都是可以接受的,则在任务处理程序208中对请求处理的单个任务的处理继续进行。
任务处理程序208使用两个数据结构。处理所依据的合同206,累积了在请求处理的过程中由单个处理任务所产生的数据项的处理状态207。处理状态207是叫做ItemSet的名称/值对的有序集,参见图3。
最初,任务处理程序208的处理状态207只包括由传入的服务请求200所提供的数据项。任务处理程序208使用合同206来确定应该执行的任务的序列,以处理服务请求。任务处理程序208还根据合同确定处理状态的哪一部分应该输入构成服务请求的处理的单个任务中。然后使用也是在合同中定义的任务的结果来延长处理状态,因此,也可用于下一个任务。虽然任务处理程序只读取合同,但是,它实质上还读取和修改处理状态207。当合同指定的所有任务都被按指定的顺序处理时,任务处理程序208结束。
在所有任务都被任务处理程序208进行处理之后,控制转到应答程序209。应答程序主要产生发送到合作各方的响应消息210。响应是从处理状态产生的。事实上,应答程序209类似于任务处理程序208。主要区别是,由应答程序209执行的任务是特殊的,因为它们具有预定义的语义。
合同206的电子形式可以由计算机程序来解释和执行。如果在安全计算环境202中执行,则合同的电子执行保证了所有步骤都按指定顺序处理,信息准确地流动到合同所指出的位置。
安全计算环境202是被密封的计算机,因此,其内部处理不能从外面观察到,在没有适当的授权的情况下,外面没有人能够修改计算或设备内部的数据。这样的设备检测打开、侵入或探测它的企图。如果检测到这些窜改企图的话,则安全计算环境销毁存储在内部的敏感数据并完全停止操作。可编程IBM 4758加密协同处理器是这样的安全计算环境的一个示例。
安全计算环境202的安全功能可以延伸到通过计算机网络的通信。这可以通过使用网络通信上的标准密码技术在两个安全计算环境之间实现。
如此保护的通信会话,也称为通道204可以防止攻击者读取通过通道传递的数据。它们还可以检测何时攻击者试图修改消息,插入他自己的消息或模仿某一个安全计算环境。当然,网络是不受信任的,所有密码技术都必须在安全计算环境内实现。有关通道的详细细节,请参见图5的描述。
值得注意的是,如果本发明中所描述的系统不能在安全计算环境内实现,则很容易遭到各种各样的攻击。具体来说,在不安全的环境中,合同的电子执行不能保证,信息只流向指定的任务,并且决不会被泄密或修改,因为请求200和处理状态207将可以被攻击者访问到。
图3a作为统一建模语言(UML)中的类图表显示了根据本发明的实施例的合同的结构。每一个合同307都具有合同标识(contractId),该标识唯一地区别此合同与系统中的所有其他合同。合同307指定将在履行服务请求过程中合作的一方或多方。描述了单一方面的Party类301包括系统中的一方面的唯一标识(id),以及服务响应对服务请求的处理向其发送消息的网络访问点。服务访问点可以由Internet地址和端口号,或由统一资源定位器(URL)进行定义。它还包括该方的名称。在一个实施例中,某一方的此最小定义很可能通过进一步的属性来增强,如对请求的安全处理所不需要的街道地址,但对于维护各方之间的更多的关系也可能需要。
合同307进一步指定单个操作(触发器),这表示应该处理的服务请求的到达。RequestArrival类304的对象描述了传入的请求,该请求触发如此合同定义和控制的处理。
合同307更进一步地指定了在对请求处理过程中执行的零个或更多处理步骤(任务)。任务是作为Task对象305建模的任务说明的有序列表给出的。此外,它还指定零个或更多传出的消息(响应),系统在对请求处理之后用这些消息响应合作的各方。响应是作为Response说明306的有序列表给出的。Action 302是RequestArrival 304、Task 305和Response 306的通用抽象。每一个操作都具有名称(name),以及它在完成之后提供的数据项的有序集(ItemSpecset)的说明(outputSpec)。它由单一方面(所有者)拥有。
有多个操作可以执行。第一种类型的操作是新服务请求的到达RequestArrival 304。这里,所有者定义了请求者,即,可以发送这种类型的请求的一方。RequestArrival操作的outputSpec描述了在请求中出现的数据项。每一个请求都至少具有一个必需的项目,叫做“contractId”,它用于唯一地标识定义和控制对此请求的处理的合同。
第二种类型的操作是Function 303。函数以数据项的有序集作为输入(inputSpec)并返回数据项的有序集作为输出(outputSpec)。函数的执行由布尔表达式(谓词)进行控制。布尔表达式是由特殊常量“true”和“false”,布尔运算符“not”、“and”和“or”,关系运算符<、<=、=、/=、>、>=,任意常量,以及处理状态中的项目的名称构成的表达式,参见图2。如果其谓词返回true,才执行函数。
Task 305是由合作各方中的一方(其所有者)定义的并可以执行任意功能的函数。要执行的功能是通过引用实现任务的代码进行定义的。
Response 306类似于任务,但由响应提供的功能是预定义的,并且是固定的。它无法由合作的各方改变。同样,Response的输出说明中的项目数量固定为一个。然而,此返回代码的名称可以随意地进行定义。
图3b显示了根据本发明的实施例的ItemSet和ItemSpecSet的UML说明。ItemSpecSet 311用于定义inputSpec和outputSpec。ItemSpecSet定义了叫做ItemSpec 312的数据项说明的有序集。数据项说明按其名称标识数据项。Item类314定义的数据项是名称/值对。ItemSet 313是数据项的有序集。
图4显示了根据本发明的实施例的Request Handler、TaskProcessing和Responder的处理的流程图。传入的请求可以是如图3定义的项目集。当服务器在步骤400中接收新服务请求时,请求处理程序首先从构成请求的项目集中提取必需的项目contractId。contractId项目的值在步骤401中允许请求处理程序检索控制对传入的服务请求的处理的合同。然后在步骤402中,请求处理程序检查它是否从此发送者接受请求。对于此检查,请求处理程序选择拥有合同的触发器的那一方,并将它与通过其接收请求的信道的另一端的那一方进行比较。如果两个值表示同一方,则考虑请求以便进行进一步的处理;否则,在步骤403中用错误处理程序终止。
在步骤404中,下一个检查判断请求是否完成,即,它是否提供合同所需的所有项目。此检查是这样进行的:断言触发器的输出说明中定义的所有名称在请求的项目集中正好出现一次,并且它们都具有定义的值。项目出现的顺序,无关紧要。如果请求具有在触发器输出说明中没有描述的其他项目,这不被视为错误。由于下列处理步骤中没有一个可以访问那些项目,它们将被请求处理忽视,并决不会被损坏。在错误的情况下,请求处理在步骤403中终止。
如果两个检查都通过,则请求处理程序在步骤405中初始化任务处理的处理状态S。初始处理状态正好包含其名称已在触发器输出说明中指定的项目。
任务处理从步骤410开始。尽管在合同的有序任务列表中有较多的任务,但是,任务处理在步骤411中按顺序选择下一个任务T。
步骤412对照处理状态S对T的谓词进行评估。任务谓词被允许访问处理状态的所有项目。由于被评估的表达式各方从合同中可以很明显地看出,为对给定的谓词进行评估,它们显然已经对处理状态中的项目的特定使用协商一致。如果谓词产生false,则任务T被忽视,在步骤410中,对任务列表中的下一个任务继续进行处理。如果任务谓词评估为true,则步骤413建立新项目集s。处理将处理状态S中项目插入到新项目集s,(如果它在任务T的输入说明中找到它们的名称)。
步骤414从T地任务说明判断任务实现方式,然后用新项目集s作为其唯一的参数调用它。此调用的结果是项目集r。步骤415从r中取其名称出现在任务T的输出说明中的所有项目并将它们插入到处理状态S中。步骤415决不用r中的新值覆盖S中的现有值。如果已经存在具有相同名称的项目,则它也必须具有相同值;否则,合同非法。然而,多个任务可以在它们的输出说明中指定相同的项目说明,如果任务的谓词或它们的实现方式保证,两个激活的任务决不为相同项目名称产生不同的值。
一旦所有任务都已经处理完毕,任务处理单元就将控制权传递到应答程序。这在步骤420中进行了显示。对响应的处理与任务处理具有相同的基本结构。
尽管有未处理的响应说明,但是,应答程序按顺序对它们进行处理。在步骤421和422中获取响应并对它们的谓词进行评估与任务处理的步骤411和412中的处理相同,步骤423类似于413。在步骤423中从处理状态S和实际响应R的输入说明产生新项目集之后,步骤424从在响应说明中被定义为R的所有者的P方获取网络访问点,并使用它将s作为响应消息发送到P。
每一个响应说明的输出说明是具有单个元素的集合。此元素的值是布尔值,并声明响应是否成功地提供给P方。此项目的名称可以随意地进行定义。该项目被添加到处理状态S,因此,尚未处理的其他响应也可以对其进行访问。这特别可能发送响应,具体情况取决于另一个反应是失败还是成功,或在其他消息中包括以前的响应的返回代码。一旦处理完所有响应,则整个请求处理成功地在步骤426中终止。
尽管对任务和响应的顺序处理具有简单的优点,但是,也不一定总是进行非常有效的处理。一个实施例选择确定操作之间的依赖性,并且一旦在它们的输入说明中给出的所有项目都可用,将并行地执行独立的操作。
图5显示了根据本发明的实施例的与网络和安全数据库的集成。同一台主机计算机上的一个或多个安全计算环境506、网络处理程序503、大容量存储处理程序505、一个或多个安全本地数据库504的聚合也叫做服务单元或简而言之:单元。诸如IBM 4758可编程加密协同处理器之类的安全计算环境可能没有办法直接访问数据库或网络。图5显示了安全计算环境506内的应用程序代码如何可以安全地访问数据库504和网络502。发送到网络502的所有消息都采用密码技术进行保护,如数据库504中存储的所有数据项目那样,如合同和审查列表。
主机计算机501托管了安全计算环境506、网络处理程序503、大容量存储处理程序505和数据库504。网络处理程序503使用对主机计算机501的操作系统的调用来访问网络502,处理来自安全计算环境内的网络请求。大容量存储处理程序505使用诸如SQL之类的标准数据库接口来访问数据库504,处理来自安全计算环境内的数据库请求。
网络处理程序503往返于网络502之间发送和接收消息。消息是使用密码技术(即,加密、身份验证、消息摘要和序列号)来进行保护的。这就确保了在不被检测到情况下观察者既不能解释也不能改变消息的内容。网络处理程序503从网络502接收传入的加密消息,并将它提供给安全计算环境506内的信道处理程序507。信道处理程序507检查加密校验和,删除序列号,并将数据解密。安全计算环境506内的合同引擎508现在可以访问明文形式的数据了。
当合同引擎508希望通过网络发出消息时,它将它发送到信道处理程序507,而信道处理程序507对其进行加密,并添加序列号并消息摘要。然后,信道处理程序507将加密消息发送到网络处理程序503,而网络处理程序503位于主机501上,但在安全计算环境506的外部,又将它发送到网络。
如果合同引擎508希望访问数据库504,它将明文请求发送到信道处理程序507,而信道处理程序507将请求中的数据加密,并将它发送大容量存储处理程序505,大容量存储处理程序505位于主机501上,但在安全计算环境506的外部。大容量存储处理程序可以直接访问数据库504,并将结果从数据库返回到卡内的信道处理程序507,在此,将回答解密,并返回到合同引擎。
作为优化,合同引擎508可以将数据库504中的部分数据存储到安全计算环境506内的缓存509中。这可以避免开销大的从信道处理程序507、大容量存储处理程序505、数据库504,以及从大容量存储处理程序505和信道处理程序507的来回传输。
图6显示了根据本发明的实施例的其中对照审查列表对个人进行安全检查的应用程序的示例合同。图6给出了可以用来对照罪犯的审查列表检查个人的合同601的示例。表中给出的信息对应于图4中的UML类图表中定义的变量。在此示例中,合同标识符602是“471185”,涉及的各方603,名称为A、B和C,有机场603A,它希望对申请人进行审查、政府机构603B,它提供要对照核对的审查列表,执法机关603C,当发现匹配时,应该通知该机关。
表中的行列出了由合同中定义的操作所产生的单个数据项。对于每一个数据项区块,第一列描述了产生数据项的操作,此操作的所有者和执行该操作的条件。列描述了每一个处理步骤和响应,哪些数据项作为输入传递。
行604定义了服务请求。字段605声明只有A方可以发送请求。行604的第二列中的字段606声明哪些数据项必须存在于请求中。行607定义了此合同的处理任务。在此示例中,有三个处理步骤:“1:n匹配”、行608,“生物特征匹配”行609和“假目标生成”,行610。行608的第二列中的字段611定义了任务“1:n匹配”的输出说明中的数据项。行609和610的第二列中的字段定义了输出说明,它们的任务只有一个数据项。行612定义了此合同的四个可能的响应。行612的第一列中的字段定义了响应的名称、所有者和谓词,即,响应叫什么,向哪一方发送,以及在什么条件下发送。行612的第二列中的字段定义了响应的输出说明中的单个返回值。
列608定义了任务和响应的输入说明。每一个任务都有一列,每一个响应也都有一列。字段中的加号(+)指出由加号所在的行标识的数据项是列所属的任务或响应的输入说明的一部分。行a,列b中的斜线(/)指出行a的数据项不属于列b的任务或响应的输入说明。空白项()表示判断数据项是否应该包括在此输入说明中没有意义,因为数据项还没有计算。
示例合同按如下方式解释:处理由A方所发送的请求604触发,该请求包含合同ID、名字、姓氏、出生日期、指纹数据、地点和事务号。
第一个处理步骤是对照名为XYZ的审查列表608进行1:n匹配。此处理步骤由B方拥有并无条件地执行(谓词=True)。名为“1:n匹配”的列用+号定义了此处理步骤的输入:名字、姓氏和出生日期。输出在行608中进行定义:声明匹配是否成功的值、名字、姓氏、出生日期、怀疑等级、文件中的指纹数据、有关前科的信息和反应建议。
下一个处理步骤609使用了生物特征匹配。它由C方拥有,只有在1:n匹配成功的情况下才执行。输入是实际指纹数据和1:n匹配步骤中的指纹数据。输出是声明这两个指纹之间的关联的值。
接下来,如果1:n匹配不成功,则Decoy Generation处理步骤610产生假目标消息。
合同在行612中给C方定义了三个备选的响应,给A方定义了一个响应,给B方没有定义响应。所有响应都具有单一的输出值,声明接收者是否确认响应。如果1:n匹配成功,某个人的怀疑等级为<=5,则向C发送响应1。它包含名字、姓氏、出生日期、地点以及生物特征匹配的输出。如果1:n匹配成功,怀疑等级为>5,则向C发送响应2。它与响应1包含相同的字段,另外还包含反应建议。在1:n匹配失败的情况下,发送响应3。它只包含假目标消息,但不包含有关被检查的个人的数据。响应4被发送到A方。它只包含与实际请求一起提供的事务号和声明在通知C方时服务是否成功的值。
从图6可以清楚地看出,根据此合同,有关前科的信息没有透露给任何一方。还很清楚,在失败的1:n匹配的情况下,不发送有关个人的信息。(假目标消息中不含有实际数据,发送的目的只是为了向可以观察服务和C方之间的通信的攻击者隐瞒有匹配或无匹配的事实真相)。
在各方可以在对服务请求进行处理的过程中合作之前,它们首先必须就合同进行协议一致,该合同定义和控制基本的,最初定义的和协商一致的对这种类型请求的处理过程。只有在所有各方都同意之后,才在服务器中激活基于此合同的处理过程。所激活的合同集可以动态地由各方延伸。通过安装和激活新合同,服务了解如何处理新的请求类型。
合同可以被视为是形式说明,可以以数据结构、以电子文档来代表。在一个实施例中,经各方同意激活合同是以这样的方式来实现的:所有各方将合同的以电子方式签名的副本上传到服务器。在服务器从所有各方接收到这样的签名副本,验证电子签名,并验证所有副本的确指的是同一个合同之后,处理自动激活。
同样,以电子方式提交的合同也可以在任何时间或当它们过期时撤销。如果各方同意,某一方也可以撤销合同,或者在合同过期的情况下,系统停止认可受此合同管辖的请求。
如果请求者具有他希望一起执行的多个合同,则可以将这些合同组合起来,并代表单个请求执行。捆绑了多个其他合同的合同叫做复合合同。复合合同的结构非常类似于基本合同的结构。区别是,复合合同优选情况下不定义处理步骤和响应,而是枚举应该组合的合同的标识符。类似于基本合同,复合合同也具有触发器。此触发器的输出说明定义了应该合并到此复合合同中的基本合同的输出说明的联合。合同引擎通过调用接收到的请求上的子合同来处理复合合同。
例如,在审查应用中,这可使审查者具有从机构A对照审查列表进行审查的合同和从机构B对照审查列表进行审查的另一份合同。组合合同将代表发往系统的单个请求调用两个搜索。其他复合合同可以允许对照其他组合进行检查。
在入口点扫描的生物特征信息可以放在请求内发送到一个或多个服务器,这些服务器对数据进行处理并可以对照多个数据库进行检查。工作流程完全由参与的各方决定,包括向执法机构发送报警,而不是将有关被审查的个人的数据返回审查者。
所建议的处理过程的实现方式的正确性的形式证明要求验证合同引擎和单个处理步骤的代码。由于以这种方式构建的所有系统使用相同的合同引擎,因此,验证合同引擎是一次性的任务。当单个处理步骤的代码被引入到系统时,必须对其进行验证。单个处理步骤的代码可以被不同合同重复使用,这就最大限度地减少了总的验证工作。
可以通过使单个处理步骤的代码成为合同的一部分,而不是只提供它们的名称,来进一步增大所描述的系统的动态特征。有关可以将代码安全下载到服务的技术,请参见(2000年12月26日Smith等人提出的美国专利No.6,167,521“Securely downloading andexecuting code from mutually suspicious authorities”),这里对其全部内容进行了引用。提供处理步骤的代码可使各方动态地延伸服务的功能,验证过程可以在本地完成。
图7显示了根据本发明的实施例的参与各方之间的工作流的具体示例。如图7所示,图1的特定示例,审查者101向安全请求处理系统102发送服务请求110。请求处理系统102确定管辖此请求的处理的合同,并基于该合同执行处理步骤序列。单个处理步骤的应用程序使用处理状态的子集作为输入。处理步骤的输出用来延长处理状态。在合同中定义了输入和输出说明。处理的初始状态包括来自触发了处理的请求的信息。当执行了所有适用的处理步骤之后,使用处理状态来为涉及请求的处理的各方101、103和104′产生响应消息111。合同中也指出了通知哪些方面以及发送给它们的响应包含哪些信息。
图8显示了根据本发明的实施例的可能的分布的示例。本发明的服务包括多个互相连接的服务单元。一个单元可以包含一个或多个安全计算环境、网络处理程序、大容量存储处理程序和一个或多个安全的数据库,也参见图5。多个单元可以安装在一个物理位置,但将会有一个以上的物理位置,如图8所示。单元801-806可以驻留在如图8所示的不同位置。客户端可以连接到可用的单元的子集。
此布局提供足够的资源量,并对单故障提供高度的综合服务的容错。此外,它还提供轻松地根据地理位置和/或国家(法律)问题轻松地划分服务和数据的能力。
尽管本发明可以在较小的方案中实现,但是,体系结构是为全局服务准备的。
图9显示了根据本发明的实施例的不同安全方面。密码协同处理器907、910位于客户端A和B中,以及服务中的(908、909、911)。协同处理器907-911在物理上位于安全存储器和通信段901-906内,所有这些通信段都在外单元周边920-924内。
因此,所有敏感的操作都限制在安全加密协同处理器907-911内。数据库内容一直是加密的,完整性通过消息摘要来进行保护。单元间通信是加密的,并经过身份验证,以防止修改和重放。最后,外单元周边920-924用防火墙和系统级别的访问控制来保护。
图10显示了根据本发明的实施例的审查方案。第一个,开始时从审查者1101向服务器单元1103发送审查请求1110。单元1103通过其网络处理程序1106接收请求,并将其传递给协同处理器1108以便进行处理。如果在此单元中有用于审查的审查列表可用,则协同处理器1108查询数据库1109以查找有关某个人的信息。然后,它使用网络处理程序来通知执法部门1107。此通知在任何情况下都会发送。如果没有匹配,则通知包含假目标,这不在执法部门作为告警显示。在接收到执法部门1107的确认之后,通知审查者1101,他的请求已被处理。
另一个方案也是可能的。这里,主要区别是,审查列表不在审查者的客户端单元1103上本地可用。在此情况下,单元将请求转发到具有要求的表的单元1105。此单元1105也通知执法部门1107,并返回转发的请求的通知,而该通知又返回到审查者1101。
图11显示了根据本发明的实施例的一般结构。尽管大多数处理可能在如图11所示的协同处理器内执行,但是,本发明的某些部分可以在主机1204上实现,因为PCI总线1210和串行端口是卡与其环境进行通信的仅有的方式。
宿主应用程序必须提供网络访问1224和大容量存储1226。它也必须实现卡/主机通信1220的主机部分。不安全的主机1204包括主机/卡接口1220、网络处理程序1224、大容量存储处理程序1226和数据库1228。然而,安全的计算环境1202包括协同处理器1206及其他协同处理器1208,用于处理安全处理的主要部分。
图12显示了根据本发明的实施例的功能模块化图表。图12显示了包括不同接口和多个单元格1510、1510′等等的基本组件体系结构。对系统的请求是通过用户界面产生的。对于不同的客户端,有不同的接口。服务提供商具有配置接口SP Config 1570,以及计费接口1571,用于控制和管理服务的计费。审查方也具有配置界面SC Config1572,和用于发送审查请求的图形用户界面SC GUI。很可能审查方已经拥有IT系统、SC后端,这可以自动产生请求。在此情况下,需要集成组件SC BE Integr将该系统与服务挂钩。信息提供商各方也需要各种界面1573、集成组件IP BE Integr,以将它们现有的系统IP后端与服务挂钩。对于服务配置,有专门的接口,IP Config。执法部门也具有配置接口LE Config 1574,以及图形用户界面,LE Notif.GUI,在该界面上显示警告消息。或者,也可以将警告消息从GUI,LE Notif.GUI转发到执法部门后端系统LE Backend。
每一个单元,单元1510,另一个单元1510′,都包括宿主应用程序1520和一个或多个协同处理器(协同处理器1540,另一个协同处理器)。宿主应用程序1520接口所连接的网络处理程序1523接收请求。网络处理程序1523通过主机卡通信组件1524将请求转发到此单元1510中的协同处理器1540,1540′中的一个。宿主应用程序的另一个组件是存储器处理程序1522,该处理程序通过主机卡通信组件1524从协同处理器1540接收数据库查询,并将它们提供到本地或远程数据库1521。在协同处理器1540内,来自网络处理程序1523的请求由网络信道处理程序1541进行处理,该处理实现加密/解密,身份验证,和会话,并将明文请求转发到请求处理程序1573。请求处理程序1573检查对完整性和正确性的请求,然后将它委派给其中一个专门的处理程序。审查请求处理程序1546对审查请求进行处理,配置请求处理程序1545允许对服务内的控制结构进行更新,更新请求处理程序1544可以改变用于进行审查的审查列表的内容,单元间处理程序1550用于将请求转发到另一个单元1510′,并将数据分发到其他单元。单元间处理程序1550受全局单元模型1549的控制,该全局单元模型1549从请求处理程序1573获取有关网络质量的反馈,从而动态地了解网络中的最佳路由。大多数处理程序需要访问由配置处理程序1547所提供的配置信息,并访问主机上的数据库1521,这是由存储桶处理程序1548提供的,而存储桶处理程序1548又使用数据库信道处理程序1542。数据库信道处理程序1542处理来往于数据库1521的数据的所有加密/解密和身份验证过程。
图13A-13C显示了根据本发明的其他实施例的可能的不同设计。图13A到13C显示了单个单元的可能的不同设计:单层,图13A,双层,图13B,双层,并带有复制的应用程序服务器,图13C。在单层环境中,单元将包括防火墙2011和宿主应用程序服务器2010。在双层的情况下,使用了防火墙2011和2021,数据库服务器2040与宿主应用程序服务器2020分开。图13C所示的配置包括多个宿主应用程序服务器2020。
本发明的另一个实施例也可以减少合同的动态特征。在极端的情况下,可以完全使系统专门针对一个合同或少数不同合同进行服务。从技术上来讲,这可以对具有已知合同的合同引擎进行部分评估并对所产生的代码进行优化来完成。这可以使用(1997年7月22日由Gafter提出的美国专利No.5,650,948“Method and system fortranslating a software implementation with data-dependent conditionsto a data flow graph with conditional expressions”)的方法完成,这里对其全部内容进行了引用。结果相当于静态实现方式,其中,合同不是显式的数据对象,其中,各方之间的协议的执行被硬连接到程序代码中。在这样的实施例中,解除合同和有关新合同的协议要求重新生成或重新实现软件的某些部分,重新安装,并重新启动服务。
应该理解,所提供的说明性示例绝对没有详尽地列出本发明的许多可能的用途。
那些精通本技术的人从前面的描述中可以轻松地确定本发明的基本特征,在不偏离本发明的精神和范围的情况下,可以对本发明进行各种改变和修改,以使其适应各种用途和条件。
应该理解,本发明不仅限于上文所描述的单个实施例,而是包含在下列权利要求的范围内的任何实施例: