一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

认证第一人的公共密钥的制作方法

2023-03-06 13:12:47 来源:中国专利 TAG:


1.本发明涉及一种用于使用基于基因组学的亲属关系来认证公共密钥的加密认证系统。本发明还涉及一种在这类系统中使用的加密认证设备、加密密钥生成设备和加密验证设备。本发明还涉及一种对应于各个设备的加密认证方法、加密密钥生成方法和加密验证方法。本发明还涉及一种计算机可读存储介质。


背景技术:

2.当存储和处理基因组数据,例如人的基因组序列时,出现至少两个重要且相互关联的数据安全问题。
3.第一个问题是基因组数据是高度敏感的信息。人的基因组数据可提供关于该人的大量个人信息,例如头发或眼睛的颜色。这些信息中的一些可能非常敏感,例如,人是否有可能患上某种疾病。而且,基因组数据是高度可鉴定的:给定两条部分重叠的基因组信息,通常易于确定它们是否指同一个人。由于这个原因,难以在匿名化基因组数据的同时至少保留一些它的效用。第二个相关的问题是存储和处理特定人的基因组信息不仅影响该人的私密性,而且影响他们的家庭成员的私密性,因为他们的基因组信息是高度相互关联的。
4.因此,在存储和处理基因组信息的领域中,期望朝着尊重共享其基因组信息的受试者及其家庭成员的私密性的私密性保护解决方案发展。
5.例如,期望获得和处理待存储或处理遗传信息的个体的家族成员的同意。例如,这类同意可由家庭成员以数字签署的同意声明的形式提供,指示给予的同意。家庭成员可使用加密私有密钥来对同意声明进行数字签署,并且可使用对应的加密公共密钥来验证数字签名。


技术实现要素:

6.期望具有用于认证属于与另一个人具有给定亲属关系程度的人的公共密钥(例如,用于数字签署同意声明的公共密钥)的技术手段。
7.这类认证可例如由共同物理地访问医院或公证处的两个人来执行;使用他们的护照鉴定自己,并且声明他们是家庭成员。然后,医院或公证处可发出第一人确实是第二人的亲属并拥有给定公共密钥的声明。然后,第一人可使用这一公共密钥来签署同意声明。
8.本发明由独立权利要求定义。从属权利要求定义了有利的实施例。
9.发明人认识到,如果对属于与另一个人具有给定亲属关系程度的人的数字密钥的这类认证可替代地以数字方式执行,则这将是有益的。例如,例如,如果不需要亲自去医院或公证处等,则这将是有益的。如果能够改进这类认证的私密性,则这也将是有益的。例如,如果公共密钥的认证可在不涉及第三方(诸如医院或公证处)的情况下进行,并且特别地,在这类第三方不能够将公共密钥链接到特定人(例如,通过密码或通过基因组信息)的情况下进行,则这将是有益的。类似地,如果可向一方认证公共密钥而该方不能够将公共密钥链接到特定的人,则这将是有益的。例如,这将允许在被认证方实际上可为任何人的设置中
(例如在区块链环境中)应用认证技术。
10.为了解决这些和其他问题,提出了一种如权利要求所定义的加密认证系统。此外,提出了如权利要求所定义的加密认证设备、加密密钥生成设备和加密验证设备。设备中的每一个具有有助于本文所描述的各种优势的特定特征。
11.认证可涉及加密认证设备(简称为“认证者”)向加密验证设备(简称为“验证者”)认证公共密钥。认证可用于证明公共密钥属于与第二人具有给定亲属关系程度的第一人。认证设备可由第一人或代表第一人操作。验证设备可代表第三人(例如公证处或审计员)操作。然后可使用公共密钥,例如,对同意声明或其他类型的文档或数字数据进行数字签署。
12.发明人设想认证者可相对于第一人的基因组数据认证第一人的公共密钥。为此,认证者可持有表示第一人的基因组序列的基因组数据。在整个说明书中,基因组数据可为dna数据,并且基因组序列可为dna序列,尽管例如rna数据和序列也是可能的。基因组序列可由验证者信任的外部方(例如,医院、测序公司、证实机构,公证处等)以在由该外部方签署的第一基因组数据上的数字签名的形式来证实。
13.有趣的是,不是让认证者向验证者提供第一基因组数据和数字签名以将其与表示第二个人的基因组序列的第二基因组数据进行比较,本发明人设想使用本文称为加密证明的密码原语。使用加密证明,认证者可相对于第二人的第二基因组数据证明第一基因组数据属于与第二人具有给定亲属关系程度的人。验证证明可使验证者确信公共密钥确实属于具有给定亲属关系程度的人。然而,有趣的是,证明典型地不允许验证者导出第一基因组数据。
14.一般而言,“加密证明”可指证明者(在这种情况下为认证者)和验证者之间的密码协议。在该证明中,证明者证明了满足给定声明的一组值的知识,称为“见证”。这类证明也称为“知识证明”。典型地,证明满足完整性的属性,这意指知道正确值的证明者设法使验证者确信。典型地,证明也满足有效性,这意指如果证明者使验证者确信,则他可能知道正确的值。具体地,本文所使用的证明可为零知识证明,在这种情况下,证明可能泄漏很少或没有泄漏关于使用了满足该声明的特定值集合的信息。因此,零知识证明具有令人惊讶的属性,即允许证明者证明满足特定属性的值的知识,例如对应于给定公共密钥的私有密钥,而不揭示那些值是什么。
15.在各种实施例中,加密证明可通过证明若干种声明的组合来证明待认证的公共密钥确实属于与第二人具有给定亲属关系程度的人。
16.可证明的一种声明是第一基因组数据和第二基因组数据具有给定亲属关系程度,如由关于第一和第二基因组数据的亲属关系函数所计算的。因此,加密证明的证明可包含第一基因组数据。验证者可相对于第二基因组数据或其表示(提供了其若干个示例)来验证该声明。这样,加密证明可在认证者已知但验证者未知的第一基因组数据和验证者已知其表示的第二基因组数据之间建立连接。
17.可证明的另一种声明是,认证者已知的第一基因组数据上的数字签名确实成功地验证了第一基因组数据和验证密钥。因此,对于该声明,见证可包含数字签名和第一基因组数据。这样,加密证明可在第一基因组数据和验证密钥之间建立连接,指示对应于验证密钥的一方(例如,验证者信任的第三方)已经证实第一基因组数据。因此,验证密钥可被视为认证中的信任源。
18.优选地,验证者相对于验证密钥验证该声明,换句话说,验证者将验证密钥输入到验证过程。然而,这不是必须的:例如,验证密钥也可被硬编码到认证者被配置为证明的声明中(例如,它可被硬编码到由加密密钥生成设备生成的密钥材料中)。然而,输入验证密钥的验证者提供了更多的灵活性。
19.可证明的另一种声明是对应于公共密钥的私有密钥被输入到加密证明。对于该声明,见证可包含私有密钥。验证者可针对待被认证的公共密钥来验证该声明。因此,加密证明可链接到待被认证的公共密钥。特别地,如果证明了私有密钥的知识,则这可防止潜在的攻击,在该攻击中,攻击者将采用认证公共密钥的加密证明,并且将该证明操纵为认证不同公共密钥的证明。
20.然而,不必证明私有密钥被输入到加密证明中。这还有可能将公共密钥链接到加密证明,例如,通过使用所谓的“知识签名”来证明拥有见证(例如,第一基因组数据和其上的签名)的人已经签署了公共密钥。例如,知识签名在m.chase等人的“论知识签名”(可在https://eprint.iacr.org/2006/184获得并通过引用并入本文)中定义。在任何情况下,验证者典型地相对于公共密钥来验证加密证明。
21.因此,通过链接第一人的第一基因组数据、第二人的第二基因组数据、公共密钥、验证密钥和第一基因组数据上的数字签名(可相对于验证密钥验证),认证者可向验证者证明公共密钥属于与第二人具有给定亲属关系程度的第一人;或者至少属于能够访问第一人的基因组数据的一方。为了确信这一点,验证者可能只需要信任验证密钥,换句话说,信任相对于验证密钥成功地验证的基因组数据是正确的。然后证明提供了第一基因组数据确实成功地验证的保证,并且与第二基因组数据具有给定亲属关系程度。
22.有趣的是,所提供的技术可允许完全数字地认证公共密钥。有效地,对公共密钥的信任可从第一基因组数据上存在数字签名的事实导出,该数字签名可相对于验证密钥进行验证。因此,一旦认证者获得了这类数字签名,认证者就可通过与验证者交换消息来执行认证,而不需要在这一点上涉及附加方。特别地,在没有提供数字签名的一方的情况下,从而作为不可信的源进行操作。此时可能不需要认证者的标识,无论它是物理的还是数字的,也无论它是对验证者还是对第三方。在加密证明是非交互式证明的情况下,认证甚至可仅涉及认证者生成和共享加密证明(例如,将证明上传到区块链或其他存储装置);然后,任何一方均可在将来的某个时间点验证加密证明以建立公共密钥的真实性。
23.此外,该技术可允许以改进的私密性来执行这类认证。一个原因是可避免认证者的标识。例如,验证者可只接收公共密钥和加密证明;加密证明本身可能不允许验证者建立认证者所代表的人的身份。特别是如果证明是零知识,这可按数学上强有力的方式来保证。
24.有趣的是,也可不涉及已经发布数字签名的一方,并且因此不需要知道基因组数据被用于认证公共密钥。并且即使在稍后的时间点发布数字签名的一方观察到加密证明和公共密钥,该一方也可能无法将这些链接到它已经为其发布签名的特定基因组数据。事实上,即使验证者和一起发布数字签名的一方典型地也不能将公共密钥链接到发布数字签名所针对的基因组数据。同样,如果使用相同的基因组数据来认证两个不同的公共密钥,即使对于相同的验证者,也不可能基于证明来确定是否使用相同的基因组数据,例如证明是不可链接的。
25.因此,还可避免外部方需要存储或访问第一人和第二人的基因组。例如,不需要可
信的第三方来验证第一和第二基因组数据具有给定亲属关系程度。例如,第一和第二基因组数据可能已经由不同的组织测序。因此,可完全避免基因组数据的集中存储。只有认证者可使用第一和第二基因组数据两者来计算亲属关系函数,但是由于认证者代表第一方进行动作,因此这优于让外部方访问两个人的基因组数据。
26.因此,认证可导致公共密钥被认证为属于与第二人具有给定亲属关系程度的第一人,同时泄漏很少或没有泄漏关于第一人的其他信息。因此,第一人可保持匿名(除了已知该人是与第二基因组数据相关的第二个人的亲属之外)。私有密钥/公共密钥典型地是特别为了被认证和用作属于具有给定程度的人的目的而生成的。第一人典型地不使用他们的常规公共密钥,该常规公共密钥也用于例如签署揭示其身份的数据。在一个实施例中,私有密钥/公共密钥对是临时密钥对,其被生成、认证、使用一次(例如,用于签署文档),然后被丢弃。然而,公共密钥也可多次使用,例如,以随着时间签署多个同意声明。
27.应注意,第二基因组数据所涉及的第二人的私密性也可得到改进。验证者典型地相对于第二基因组数据的表示来验证加密证明。在一些实施例中,该表示可为第二基因组数据本身。在这种情况下,验证者因此需要知道第二基因组数据来验证加密证明。然而,也有可能例如相对于第二基因组数据的散列来验证加密证明,或者证明第二基因组满足特定属性,例如含有特定变异。在这类情况下,验证者不需要第二基因组数据,并且可能不需要知道第二人是谁。这在加密证明由第三方(例如,由外部审计员或监管者)验证的情况下,或者在加密证明是数字分类账(例如,区块链)上的交易的一部分的情况下尤其相关。
28.应注意,尽管所提供的技术可改进私密性,但是在这种设置中可实现的私密性也存在固有的限制。例如,如果所论述的第二人具有非常少的近亲,则这固有地意指已知第一人属于一个小组。例如,在近亲必须同意只剩下一个近亲的个人的数据共享的情况下,则该近亲的身份虽然由于这里提供的技术而没有被明确地揭示,但是可以从方法控制之外的上下文信息中推断出来。尽管如此,在这些限度内,私密性是可改进的。
29.一些实施例还涉及加密密钥生成。用于生成和验证加密证明的各种技术分别依赖于计算评估密钥和计算验证密钥的使用。这些评估和验证密钥取决于将由加密证明证明的声明。例如,加密证明可为零知识非交互式知识论证,诸如zk-snark,也如别处所描述;这类证明典型地需要计算评估和验证密钥。加密密钥生成设备可生成该密钥材料。
30.任选地,第一和第二基因组数据均可包含指示相应基因组序列如何偏离参考基因组的一个或多个变异。亲属关系函数可通过比较包含在第一和第二基因组数据中的相应对应变异来计算。不同人的基因组序列典型地在很大程度上重叠;因此,依据与参考基因组的偏差,它们可被更有效地存储。第一和第二基因组数据的这种较小表示还使得计算第一和第二基因组数据上的亲属关系函数在计算上更有效,从而产生更有效的证明,并且还可能产生更有效的验证和更小的证明大小,以及更小且更有效地可生成密钥材料(如果使用的话)。
31.如果还不知道第一和第二基因组数据均描述了与相同参考基因组的偏差,则加密证明可例如通过证明相应基因组数据中的参考基因组的标识符匹配来证明这一事实。
32.任选地,包含在第一基因组数据中的一个或多个变异以散列树(也称为merkle树)表示。一般而言,散列树是用于相对于其根有效地验证特定内容是否包括在其中的数据结构。在实施例中,包括变异的散列树的根可由数字签名签署,从而有效地签署所有包括的变
异。因此,可避免必须在包括所有变异的消息上证明常规数字签名算法的正确性;可证明数字签名仅相对于散列树是正确的。
33.通过使用散列树,可有效地证明由亲属关系函数所使用的特定变异被包括在第一基因组数据中。因此,可挑选出特定的变异,而不必通过完整的第一基因组数据。使用散列树,因此可避免必须在加密证明中证明涉及所有第一基因组数据的计算的正确性。类似地,第二基因组数据的变异也可在第二散列树中表示,因此也可证明第二基因组数据的变异包含在第二散列树中。然后例如可比较相应的变异。这样,可有效地从第一和第二基因组数据中挑出变异,然后进行比较。
34.任选地,作为计算亲属关系函数的一部分,仅将包含在第一基因组数据中的变异的子集与包含在第二基因组数据中的相应变异进行比较。这样,可获得显著的性能改进,特别是与证明这些变异包含在散列树或避免必须处理完整的第一和第二基因组数据的类似机制中相结合。这是重要的,特别是考虑到执行加密证明所需要的计算开销,这将使处理完整的第一和第二基因组数据变得昂贵。
35.然而,如发明人所认识到的,当仅比较变异的子集时,避免认证者能够选择有利于计算亲属关系函数的变异的特定子集将是有益的。否则,可能存在亲属关系函数指示第一和第二基因组属于亲属的风险,而事实上并非如此。
36.为了避免认证者能够选择特定子集,认证者可在加密证明中证明所比较的变异包含在适合于亲属关系推断的给定变异集合中。这样,认证者不能仅仅选择任何变异,而是被迫使用包含在该组中的变异,从而降低了亲属关系被错误指示的风险。
37.替代地或附加地,第一基因组数据的变异的子集不仅可与第二基因组数据中的相应变异进行比较,而且可与包含在另外的基因组数据中的相应变异进行比较。这样,可证明第一基因组数据与另外的基因组数据不具有给定亲属关系程度。通过根据偏差可能性的统计模型向第二基因组数据引入偏差,可从第二基因组数据生成另外的基因组。
38.这降低了认证者通过靶向不太独特的变异来错误地证明亲属关系的风险,这些变异因此更有可能在第一和第二基因组之间匹配,即使它们不是亲属关系。通过根据它们的偏差可能性(例如,相对于参考基因组)将偏差添加到另外的基因组数据中,在另外的基因组数据中将更可能出现不太独特的变异,并且因此将可能不有助于证明第一和另外的基因组数据不具有给定亲属关系程度。另一方面,更独特的变异将更不可能出现在另外的基因组数据中,因此将可能有助于证明第一和另外的基因组数据不具有给定亲属关系程度。因此,这些措施不鼓励使用不太独特的变异。
39.任选地,认证者还获得文档(例如,同意声明),并且在文档上生成可使用正被认证的公共密钥来验证的数字签名。该文档可用对应于该公共密钥的私有密钥来签署。加密证明和签名一起向验证者提供证据,证明与第二人具有给定亲属关系程度的人已经签署了该文档,相对于该第二个人的基因组信息,该证明被验证。验证者仅需要信任验证密钥仅相对于真实的基因组数据成功地验证。认证者可生成专用于签署文档的私有密钥/公共密钥对,并且可在以后至少删除私有密钥,例如,私有密钥/公共密钥对可为用于签署文档的临时密钥对。当使用非交互式加密证明时,证明和文档上的数字签名一起可被视为形成相对于第二基因组数据的“亲属关系签名”:证明该文档已经由具有第二基因组数据的人的亲属(具有给定亲属关系程度)签署的签名。
40.加密证明可为零知识证明。零知识属性是有益的,因为它在数学意义上提供了关于所使用的见证的信息(例如,第一基因组数据和其上的数字签名)不从加密证明泄漏的保证。
41.代替地或附加地,加密证明可为非交互式证明。非交互式证明可由认证者构造并被发送到验证者,验证者可在不与认证者进一步交互的情况下验证证明。在许多情况下,任何人均可验证该证明。因此,相同的非交互式证明可用于使多个验证者确信。这例如在诸如区块链的分布式分类账设置中可能特别有用,其中各种参与者可以充当验证者,或者在稍后可验证加密证明(例如,处理基因组信息的同意)的设置中特别有用。如果在生成加密证明时不知道谁将是验证者,例如谁将是审计员,则这也是有用的。然而,指定验证者非交互式证明也是可能的。
42.一般而言,本文所使用的证明可为所谓的“知识论证”,在这种情况下,可允许错误地使验证者确信的小概率。
43.具体地,加密证明可为零知识非交互式知识论证。各种这类加密证明在文献中是已知的,其中从性能的观点来看,它们中的许多提供吸引人的属性。一个示例是是b.b
ü
nz等人在《bulletproof:机密交易的简短证明等》(可在https://eprint.iacr.org/2017/1066获得并通过引用并入本文)中公开的bulletproof系统。该证明可更具体地是零知识简洁的非交互式知识论证(zk-snark),例如在b.parno等人的《pinocchio:近乎实用的可验证计算》(可在https://eprint.iacr.org/2013/279获得并通过引用并入本文)或类似文献中所公开的。zk-snark从证明大小和验证工作的观点来看是特别吸引人的,但是典型地需要由验证者信任的一方操作的密钥生成设备生成的计算评估和验证密钥。
44.任选地,加密证明可相对于多个验证密钥的集合来证明数字签名相对于这些密钥中的至少一个来成功地验证。该证明可能不揭示使用了哪个密钥,因此,相对于第一基因组数据是用验证密钥中的哪一个数字签署的,它可对验证者隐藏。类似于使用单个验证密钥,证明可相对于验证密钥组是可验证的,或者验证密钥组例如可为硬编码的。这可进一步提高第一基因组数据的私密性。例如,验证密钥可为属于诸如基因组测序服务、医院等特定方的密钥。不知道哪一方签署第一基因组数据可有助于使第一人保持匿名,这可能是重要的,尤其是因为第一和第二人具有给定亲属关系程度的事实已经极大地限制了第一人可为谁。
45.任选地,可使用与执行认证相同的设备和/或以与执行认证相同的方法来生成公共密钥。因此,公共密钥/私有密钥对可为新密钥对。这优于使用先前已经使用过的和/或外部生成的公共密钥,因为这使得将公共密钥链接到第一人更加困难。
46.该方法的实施例可作为计算机实施的方法在计算机上实施,或者在专用硬件中实施,或者在两者的组合中实施。用于该方法的实施例的可实行代码可存储在计算机程序产品上。计算机程序产品的示例包括存储器设备、光存储设备、集成电路、服务器、在线软件等。优选地,计算机程序产品包含存储在计算机可读介质上的非瞬态程序代码,用于当所述程序产品在计算机上实行时执行本方法的实施例。
47.在一个实施例中,所述计算机程序包含计算机程序代码,当计算机程序在计算机上运行时,该计算机程序代码适于执行该方法的实施例的所有步骤。优选地,计算机程序体现在计算机可读介质上。
48.本发明的另一方面提供了一种使计算机程序可供下载的方法。当计算机程序被上
传到例如苹果的appstore、谷歌的playstore或微软的windowsstore时,以及当计算机程序可用于从这类商店下载时,使用这一方面。
附图说明
49.将参考附图仅以示例的方式描述本发明的进一步细节、方面和实施例。附图中的元件是为了简单和清楚而示出的,并且不必按比例绘制。在附图中,与已经描述的元件相对应的元件可具有相同的附图标记。在附图中:
50.图1示意性地示出了认证系统的示例;
51.图2a示意性地示出了加密认证设备的实施例的示例;
52.图2b示意性地示出了加密验证设备的实施例的示例;
53.图3示意性地示出了表示为散列树的基因组数据的示例;
54.图4示意性地示出了相对于另外的基因组数据验证非亲属关系的示例;
55.图5示意性地示出了加密认证方法的实施例的示例;
56.图6示意性地示出了加密验证方法的实施例的示例;
57.图7示意性地示出了加密密钥生成方法的实施例的示例;
58.图8示意性地示出了根据实施例的具有包含计算机程序的可写部分的计算机可读介质,
59.图9示意性地示出了根据实施例的处理器系统的表示。
60.附图标记列表:
61.100认证系统
62.110、210加密认证设备
63.111、211、411加密验证设备
64.112加密密钥生成设备
65.113基因组数据证实设备
66.130、131、132存储器
67.140、141、142处理器
68.150、151、152网络接口
69.160计算机网络
70.070验证私有密钥
71.071验证公共密钥
72.072属于第一人的私有密钥
73.073属于第一人的公共密钥
74.074第一基因组数据上的数字签名
75.075文档
76.076文档上的数字签名
77.077加密证明
78.078密钥材料(计算评估 验证密钥)
79.080第一人的第一基因组数据
80.081第二人的第二基因组数据
81.082另外的基因组数据
82.241密钥生成单元
83.242签署单元
84.243证明单元
85.244、444证明验证单元
86.245签名验证单元
87.446偏差生成单元
88.300散列树
89.310、320-321、330-333散列树的节点
90.341变异位置
91.342偏差
92.800计算机可读介质
93.810可写部分
94.820计算机程序
95.910集成电路(一个或多个)
96.920处理单元
97.922存储器
98.924专用集成电路
99.926通信元件
100.930互连件
101.940处理器系统
具体实施方式
102.尽管本发明容许许多不同形式的实施例,但在附图中示出并将在本文详细描述一个或多个特定实施例,应理解,本公开应被认为是本发明原理的示例,而不旨在将本发明限制于所示出和所描述的特定实施例。
103.在下文中,为了便于理解,在操作中描述实施例的元件。然而,显而易见的是,各个元件被布置为执行被描述为由它们执行的功能。
104.此外,本发明不限于这些实施例,并且本发明在于本文所描述的或在相互不同的从属权利要求中列举的每个新颖特征或特征的组合。
105.图1示意性地示出了用于认证公共密钥073的加密认证系统100的实施例的示例。该认证可用于证明公共密钥073属于与第二人具有给定亲属关系程度的第一人。系统100可至少包含在系统中使用的加密认证设备110和在系统中使用的加密验证设备111。系统100可任选地包含基因组数据证实设备113。系统100可任选地包含用于系统中的加密密钥生成设备112。
106.出于说明的目的,图1示出了可由系统100的设备在其操作的各个阶段存储的各种元件。在图中,密钥符号用于表示加密密钥;黑色钥匙表示公共密钥,而白色钥匙表示私有密钥,索引用于指示哪些公共密钥和私有密钥一起形成私有密钥/公共密钥对。例如,密钥070和071分别是一个密钥对的私有密钥和公共密钥;密钥072和074分别是另一密钥对的私
有密钥和公共密钥。数字签名074、076在图中被示为具有文本“s(a;b)”的框。在此,a表示用于签署的私有密钥,并且b表示被签署的消息。
107.加密认证设备110可用于认证公共密钥073。加密认证设备110可包括存储器130和处理器140。存储器130可用于数据和/或指令存储。例如,存储器130可包含处理器140被配置为在其上动作的软件和/或数据。存储器130还可被布置用于存储表示第一人的基因组序列的第一基因组数据080。存储器130还可被布置用于存储相对于第一基因组数据080的数字签名074,其可相对于验证密钥071验证。存储器130还可被布置用于存储表示第二个人的基因组序列的第二基因组数据081。存储器130还可被布置用于存储设备110所需的附加信息,例如待被认证的公共密钥073和/或对应的私有密钥072。
108.处理器140可被实施为一个或多个处理器电路,例如微处理器、asic、fpga等。存储器130可包含可由处理器140执行的计算机程序指令。处理器140可能与存储器130一起根据加密认证设备的实施例来配置。加密认证设备110还可包含通信接口150,该通信接口被布置为与其他设备,特别是加密验证设备111通信。例如,通信接口可包含连接器,例如有线连接器,例如以太网连接器,或者无线连接器,例如天线,例如wi-fi、4g或5g天线。通信接口还可为到内部或外部数据存储器的存储接口、键盘、应用接口(api)等。
109.加密认证设备110可被配置为生成加密证明077。加密证明077可至少相对于公共密钥073是可验证的。加密证明077可证明公共密钥073属于与第二人具有给定亲属关系程度的人。为此,加密证明077可证明第一基因组数据080和第二基因组数据081具有给定亲属关系程度,如由关于第一和第二基因组数据080、081的亲属关系函数所计算的。加密证明077还可证明数字签名074相对于第一基因组数据080和验证密钥071成功地验证。
110.加密证明077在图中被可视化为由加密认证设备110提供给加密验证设备111的框077。加密证明077可由设备110在单个消息中提供给设备111,例如,证明可为非交互式加密证明。然而,加密证明也可为交互证明,其中各方110和111均向彼此发送数据,例如,3通协议,其中设备110发送证明077的第一消息;设备111通过发送第二消息(常常称为质询)来应答;并且设备110通过发送第三消息(常常称为响应)来应答。
111.加密证明077的内容在图中由文本“zk(a;b)”表示,其中a表示关于证明077可验证的信息,并且b表示被证明满足关于信息a的某些属性的信息。信息b典型地被称为证明077的“见证”。验证者典型地不知道见证b。证明077可为零知识证明,在这种情况下,从数学上保证证明077不会泄漏关于证人的信息。待被证明的属性的定义和关于该属性被证明的信息被称为证明的“声明”。
112.如图所示,该证明至少相对于公共密钥073是可验证的。该证明还可任选地相对于验证密钥071是可验证的。因此,验证设备111可基于相信所提供的验证密钥071仅用于对真实基因组数据进行签署来验证公共密钥073的认证;在这种情况下,基因组数据080。典型地,该证明相对于第二基因组数据的表示也是可验证的。该图示出了第二基因组数据081本身被包括在证明077的声明中,但这并不是必须的;全文论述了替代方案。
113.如图所示,证明的见证可包括第一基因组数据080和第二基因组数据081;和第一基因组数据080上的签名074。在该图所示的示例中,公共密钥073通过将对应的私有密钥072包括在见证中来认证;证明077然后可证明对应于公共密钥073的私有密钥072被输入到加密证明,换句话说,认证设备110知道私有密钥072。如在别处所论述的,这不是必须的,并
且也可使用其他手段将公共密钥073链接到证明077,例如,通过使用作为知识签名的证明077,也如在别处所论述的。
114.加密验证设备111可用于验证公共密钥071的认证。加密验证设备111可包含存储器131和处理器141。存储器131可用于数据和/或指令存储。例如,存储器131可包含处理器141被配置为在其上动作的软件和/或数据。存储器131还可被布置用于存储待被认证的公共密钥073。存储器131还可任选地被布置用于存储验证密钥071,该验证密钥适合于验证表示第一人的基因组序列的第一基因组数据080上的数字签名074。存储器131还可被布置用于存储第二基因组数据081,或者用于验证加密证明077的第二基因组数据081的表示。
115.处理器141可被实施为一个或多个处理器电路,例如微处理器、asic、fpga等。存储器131可包含可由处理器141实行的计算机程序指令。处理器141可能与存储器131一起根据加密验证设备的实施例来配置。加密验证设备111还可包含通信接口151,该通信接口被布置为与其他设备,特别是加密验证设备111通信。例如,通信接口可包含连接器,例如有线连接器,例如以太网连接器,或者无线连接器,例如天线,例如wi-fi、4g或5g天线。通信接口还可为到内部或外部数据存储器的存储接口、键盘、应用接口(api)等。
116.加密认证设备111可被配置为获得加密证明077,并且至少相对于公共密钥073验证加密证明。如图所示,证明077可另外相对于验证密钥071和/或相对于第二基因组数据081或第二基因组数据的表示来验证。
117.如图所示,认证设备110可向验证设备111提供加密证明077。这可为到验证设备111的消息或与验证设备111的交互证明的形式。认证设备110还可通过将证明077上传到存储器来提供证明077,例如用于稍后的验证。此时,认证设备110甚至可能不知道稍后将验证证明077的验证设备111的身份,因此可能不将证明发送到任何特定的验证者。与加密证明一起,认证设备110还可提供待认证的公共密钥073;例如,认证设备110可自己生成私有密钥072、073的私有密钥/公共密钥对。
118.如图所示,认证设备110还可任选地向验证设备111提供文档075(例如,同意声明)和/或该文档上的数字签名076,该数字签名用私有密钥072签署且可用对应的公共密钥073验证。因此,公共密钥073、签名076和加密证明077可一起提供文档075由与对应于第二基因组数据081的第二人具有给定亲属关系程度的人签名的认证。然而,公共密钥073不需要用于签署文档,例如,其可用于认证,例如登录。
119.图中还示出了基因组数据证实设备113。如所论述的,证明077可为相对于用于验证第一基因组数据080上的数字签名074的验证密钥071。数字签名可由基因组数据证实设备113使用对应于公共验证密钥071的私有密钥070来生成。基因组数据证实设备113可为用于签署数字消息的常规设备,例如由基因组测序服务、医院、公证处或验证者信任的另一方操作的设备。基因组数据证实设备113可向认证设备110提供(直接或间接地)第一基因组数据080上的数字签名074。基因组数据证实设备113还可向认证设备110提供第一基因组数据080,但是相反地,认证设备110还可向基因组数据证实设备113提供第一基因组数据080用于签署。基因组数据证实设备113还可向验证设备111提供(直接或间接地)验证密钥071。
120.注意,有趣的是,尽管基因组数据证实设备113在一些点访问第一基因组数据080以对其进行签署,但是基因组数据证实设备113不需要访问第二基因组数据081以进行验证。此外,除了在认证之前的一些点提供密钥071和签名074之外,基因组数据证实设备典型
地不涉及认证本身。实际上,给定它所具有的信息,基因组数据证实设备113在一些实施例中不能将第一基因组数据080链接到加密证明077,也不能基于证明077将第一基因组数据080链接到密钥073或文档075。
121.图中还示出了用于生成用于认证公共密钥的密钥材料078的加密密钥生成设备112。设备112可与设备111组合,例如,以生成稍后用于验证证明的密钥材料。加密密钥生成设备112可包含存储器132和处理器142。存储器132可用于数据和/或指令存储。例如,存储器132可包含处理器142被配置为在其上动作的软件和/或数据。存储器132还可用于存储所生成的密钥材料。密钥材料可包含用于生成加密证明的计算评估密钥(也称为证明密钥)和用于验证加密证明的计算验证密钥(也称为验证密钥)。
122.处理器142可被实施为一个或多个处理器电路,例如微处理器、asic,fpga等。存储器132可包含可由处理器142实行的计算机程序指令。处理器142可能与存储器132一起根据加密密钥生成设备的实施例来配置。加密密钥生成设备112还可包含通信接口152,该通信接口被布置为与其他设备通信,具体地,向认证设备110提供计算评估密钥和/或向验证设备111提供计算验证密钥。例如,通信接口可包括连接器,例如有线连接器,例如以太网连接器,或者无线连接器,例如天线,例如wi-fi、4g或5g天线。通信接口还可为到内部或外部数据存储器的存储接口、键盘、应用接口(api)等。
123.加密密钥生成设备112可被配置为生成适合于生成和验证加密证明077的密钥材料078。密钥材料被示意性地示为由问题标记指示的模板,其中可填充加密证明077。至少第一基因组数据080、第二基因组数据081和公共密钥073典型地可改变,例如是要使用密钥材料078生成和验证的证明的输入(见证或验证输入)。因此,该基因组数据和公共密钥典型地不输入到密钥生成过程中。尽管如果验证密钥071也可改变,这对于灵活性是有益的,但是也可在密钥材料078中对验证密钥071进行硬编码。在这种情况下,加密密钥生成设备112可获得验证密钥071作为输入。
124.加密密钥生成设备112可使用用于生成密钥材料078的技术来生成和验证本身已知的加密证明。这类技术典型地将计算的描述作为输入,该计算的正确实行可使用生成的密钥材料来证明。例如,该描述可为依据待执行的计算的电路(例如,算术电路或二进制电路)或待验证的方程组(例如,二次方程)的低级描述。该描述也可为由密钥材料生成器的编译器组件编译成这类低级描述的高级描述。基于这类描述,可生成密钥材料。可使用各种已知的密钥材料生成技术,诸如在论文《pinocchio:近乎实用的可验证计算》中描述的pinocchio原型;麻省理工学院的libsnark库与诸如xjsnark的高级逻辑电路编译器的组合;或者可在https://github.com/charterhouse/pysnark获得的pysnark库。
125.一般而言,这类密钥材料生成技术支持宽范围的计算,因此,使用密钥生成材料,可生成和验证宽范围计算的证明。具体地,各种已知的密钥材料生成技术支持基本原语,用于证明数据出现在散列树中,数字签名正确验证,对应于公共密钥的私有密钥是已知的,等等。本文所描述的各种证明可依据这些基本原语来实施。
126.具体地,对于加密密钥生成设备112,输入到密钥生成技术中的计算可为验证第一基因组数据和第二基因组数据具有给定亲属关系程度的计算,如由关于第一和第二基因组数据的亲属关系函数所计算的;以及验证数字签名相对于第一基因组数据和验证密钥成功地验证。
127.加密密钥生成设备112可向其他方提供所生成的密钥材料078,例如,它可向认证设备110提供计算评估密钥和/或向验证设备111提供计算验证密钥。有趣的是,在许多情况下,所生成的密钥材料078不需要保密,例如,它可由多个认证设备和/或验证设备使用,并且可为公开可用的,例如,所生成的密钥材料078可通过将其上传到可公开访问的存储器而提供给其他方。
128.系统100的各种设备通过计算机网络160彼此通信。计算机网络可为互联网、内联网、lan、wlan等。计算机网络160可为互联网。计算机网络可为全部或部分有线的,和/或全部或部分无线的。例如,计算机网络可包含以太网连接。例如,计算机网络可包含无线连接,诸如wi-fi、zigbee等。计算机网络160可包含附加元件,例如路由器、集线器。
129.图1的各种设备可具有各自的用户接口,其可包括公知的元件,诸如一个或多个按钮、键盘、显示器、触摸屏等。例如,验证者设备112的用户接口可被布置用于适应用户交互,以启动对公共密钥073或由其签署的文档075的验证。
130.图2a示意性地示出了用于认证公共密钥073的加密认证设备210的实施例的示例。该认证可用于证明公共密钥073属于与第二人具有给定亲属关系程度的第一人。例如,认证设备可由想要如此认证的第二人的家庭成员操作,例如用于基于该家庭成员提供同意。加密认证设备可用于根据实施例的认证系统,例如图1的认证系统100。即例如:加密认证设备可基于图1的加密验证设备110。
131.图2a示意性地示出了可为加密认证设备210的处理器的功能单元的功能单元(未单独示出)。例如,图2a可用作处理器的可能功能组织的蓝图。例如,图2中所示的功能单元,例如单元241-243,可全部或部分地用存储在设备210处,例如设备210的电子存储器中的计算机指令来实施,并且可由设备210的微处理器来实行。在混合实施例中,功能单元部分在硬件中实施,例如作为协处理器,并且部分地在设备210上存储和执行的软件中实施。出于说明的目的,图2a还示出了可由设备210在其操作的各个阶段存储的各种元件。
132.图中所示的是待认证的公共密钥073。公共密钥073可为任何类型的常规公共密钥,例如dsa公共密钥、ecdsa公共密钥、rsa公共密钥等。优选使用基于椭圆曲线的数字签名方案,诸如ecdsa、ed 25519,或基于椭圆曲线的elgamal或schnorr,以允许相对有效地证明签名验证和/或私有密钥的知识。例如,可使用secp256r1曲线。图中还示出了对应于公共密钥073的私有密钥072,例如,私有密钥072和公共密钥073可形成私有密钥/公共密钥对。然而,在一些实施例中,加密认证设备210不需要访问私有密钥072来执行认证。
133.还示出了密钥生成单元241。密钥生成单元241可被配置为生成私有密钥072和公共密钥073作为私有密钥/公共密钥对。可使用常规的密钥生成单元。密钥生成单元241是任选的,例如加密认证设备210可替代地使用外部生成的公共密钥073。然而,在同一设备中将密钥生成与认证相结合可能是有益的,尤其是在密钥对072、073被用作临时密钥的情况下,因为这可意指私有密钥072不需要离开设备210。
134.还示出了签署单元242。签署单元242可被配置为获得文档075(例如,同意声明)并在文档075上生成数字签名076。可使用传统的签署单元。文档可使用私有密钥072签署,并且因此可使用公共密钥073验证。签署单元242也是任选的,例如,公共密钥073可被认证以供另一个设备使用,和/或公共密钥073可被认证以用于除签署文档之外的用途。
135.还示出了检验单元243。证明单元243可被配置为生成加密证明077。一般而言,加
密证明可证明满足给定声明的见证的知识。声明可包括验证者在验证证明时待输入的信息。见证和声明将在下面进一步论述。
136.可使用常规的证明单元243,其被配置用于证明用于认证公共密钥073的声明。这类单元可至少接收证明的见证作为输入。该单元典型地还接收待证明的声明的描述作为输入,例如待被证明其正确实行的计算的描述。然而,该描述也可为硬编码的,或者它可为或包括在如下所描述的计算评估密钥中。
137.为了生成加密证明077,证明单元243可使用计算评估密钥078。计算评估密钥078可由根据实施例的加密密钥生成设备(例如,图1的加密密钥生成设备112)生成。例如,加密证明078可为零知识非交互式知识论证,在这种情况下典型地使用这类计算评估密钥。用于实施用于生成这种类型的证明的证明单元243的技术可从例如libsnark库或pysnark的《pinocchio:近乎实用的可验证计算》获得。
138.然而,其他类型的验证技术也是可用的,包括不需要依赖于计算的计算评估密钥078的验证技术。然而,在这种情况下,仍然可使用与计算无关的密钥材料。尽管常常效率较低,但是这些技术的优势在于不需要依赖可信方来生成依赖于计算的密钥材料。这类技术的示例在例如《bulletproof:机密交易的简短证明等》中公开;或者在m.jawurek等人的《使用混淆电路的零知识:如何有效证明非代数声明》(可在https://eprint.iacr.org/2013/073获得并通过引用并入本文)中公开。还可使用用于非零知识证明的已知技术,例如交互式证明系统。
139.一般而言,证明077可为非交互式证明或交互式证明。在后一种情况下,证明单元243可在一轮或多轮中从验证者获得交互式证明协议的一个或多个消息,并且确定一个或多个相应的响应。
140.关于加密证明077的见证和声明,例如,证明077证明的计算被正确执行以及所使用的私有输入,加密证明077可通过证明几个声明来证明公共密钥073属于与第二人具有给定亲属关系程度的人。声明可组合成单个加密证明,或者证明077可包含用于各种声明的多个子证明。
141.证明077可证明第一基因组数据080和第二基因组数据081具有给定亲属关系程度。亲属关系程度可通过对第一和第二基因组数据的亲属关系函数来计算。这可为指示与基因组数据相关的人的亲属关系程度的预定函数。例如,亲属关系程度可为亲属关系重叠程度。计算亲属关系的各种方式本身是已知的,并且可通过将它们包括在要证明的声明中而在此使用。例如,这类技术论述在k.ritland,“成对相关度和个体近交系数的估计值”,《遗传学研究(genetics research)》,67,175

185,1996;在j.yang等人,“常见的snp解释了人类身高遗传力的很大一部分”,《自然遗传学(nature genetics)》42,565

569,2010;以及a.manichaikul等人,“全基因组关联研究中的稳健关系推断”,《生物信息学(bioinformatics)》,26 2867,2010(所有三篇论文均以引用方式并入本文)中。
142.特别地,计算亲属关系的一种方式是依据与相同参考基因组的偏差来表达第一和第二基因组。然后可通过比较包含在第一和第二基因组数据中的相应对应的变异(例如,出现在相同位置的变异)来计算亲属关系函数。第一和第二基因组数据还可任选地包含所使用的相应参考基因组的标识符,并且具有证明这些标识符匹配的证明。可由验证者将亲属关系程度(例如,第一和第二基因组数据之间的最大差异)输入到声明中,但是也可对其进
行硬编码。各种特别有利的选择将在本说明书的其他地方进一步论述。
143.第一基因组数据080典型地是认证设备210的见证。也就是说,验证者不需要第一基因组数据来验证证明077,并且如果证明077是零知识证明,则它没有泄漏关于第一基因组数据080的信息,除了关于它被证明的声明所暗示的之外。
144.第一基因组数据080上的数字签名074也可为认证设备210的见证。数字签名074可相对于验证密钥071验证。验证键071典型地是声明的一部分,或者作为验证者的输入,或者硬编码到声明中。对于验证密钥071,相对于公共密钥073论述的数字签名方案选项也适用。
145.证明077然后可证明数字签名074相对于第一基因组数据080和验证密钥071成功地验证。例如,其正确性由加密证明077验证的计算可包括用于验证相对于验证密钥的签名的签名验证算法,例如ecdsa或schnorr签名验证。还有可能具有包含在声明中的多个验证密钥的集合(硬编码的和/或由验证者输入的),该证明证明多个验证密钥中的一个可用于成功地验证数字签名074,而无需向验证者指定它是哪个验证密钥。这将相对于图3进一步论述。
146.签名可为表示第一基因组数据080的散列树的根上的签名(例如,依据参考基因组的变异,也在别处论述)。然后,可通过验证散列树的根被正确地签署,并且通过证明第一基因组数据080的正在亲属关系函数中使用的那些部分(例如,变异的子集)被包含在散列树中,来验证签名。这具有这样的优势,即不用于计算亲属关系的第一基因组数据080的部分也不需要被考虑用于验证签名。
147.典型地,第二基因组数据081的表示由证明077的验证者输入,并且因此包括在声明中。例如,第二基因组数据本身可为验证者的公共输入。还存在各种其他选项,例如,由验证者输入的第二基因组数据081的表示可为表示第二基因组数据的散列树的根,类似于第一基因组数据。参考图2b给出另外的示例。证明可包含证明用于计算亲属关系函数的第二基因组数据081匹配由验证者输入的第二基因组数据的表示,例如,亲属关系函数中使用的第二基因组数据的部分出现在散列树中。
148.任选地,对应于待被认证的公共密钥073的私有密钥072也可为对证明077的证明。然后证明可证明该私有密钥的知识。因此,可向验证者保证确定证明的一方也持有私有密钥。取决于所使用的证明技术,使用私有密钥作为见证还可使另一方更难取得证明077并将其修改成相对于不同公共密钥的证明。因此,在证明077中验证的计算可包含从私有密钥072计算公共密钥073,或者公共密钥073和私有密钥072形成私有密钥/公共密钥对的另一类型的验证。
149.作为具体示例,加密证明可证明由以下伪代码表示的计算被正确地执行:
[0150][0151][0152]
图2b示意性地示出了用于验证公共密钥073的认证的加密验证设备211的实施例的示例。认证可用于证明公共密钥属于与第二人具有给定亲属关系程度的第一人。例如,加密验证设备211可由审计员或监管者操作以验证是否同意处理第二人的基因组信息。加密验证设备可用于根据一个实施例的认证系统(例如,图1的认证系统100)中。例如,加密验证设备可基于图1的加密验证设备111。
[0153]
图2b示意性地示出了可为加密验证设备211的处理器的功能单元的功能单元(未单独示出)。例如,图2b可用作处理器的可能功能组织的蓝图。例如,图2中所示的功能单元(例如单元244-245)可全部或部分地以存储在设备211处(例如在设备211的电子存储器中)的计算机指令来实施,并且可由设备211的微处理器实行。在混合实施例中,功能单元部分地在硬件中实施,例如作为协处理器,并且部分地在设备211上存储和实行的软件中实施。出于说明的目的,图2b还示出了可由设备211在其操作的各个阶段存储的各种元件。
[0154]
图中所示的是可由加密验证设备211获得的加密证明077,以及可用于验证加密证明的证明验证单元244。一般而言,加密证明077可证明某个声明为真,该声明包括由验证者211输入的数据。具体地,证明077可证明生成证明的一方知道满足该声明的某个见证(相对于验证者的输入)。
[0155]
基于加密证明077和验证者输入(一个或多个),证明验证单元244可按常规方式相对于声明验证证明077。任选地,类似于认证设备210的证明单元243,证明验证单元可使用
对要验证的声明的描述。例如,这可为基于bulletproof或基于“使用混淆电路的零知识”的证明验证单元244的情况。替代地或附加地,证明验证单元243可任选地使用计算验证密钥078,例如由根据实施例的加密密钥生成设备作为密钥材料与计算评估密钥一起生成。例如,当使用pinocchio、pysnark等时可能是这种情况。
[0156]
证明077可为非交互式的或交互式的;在后一种情况下,证明验证单元244可被激活多次以处理由证明者提供的多个消息(例如,生成待发送到证明者的附加消息和/或基于迄今为止发送和接收的消息来执行验证操作)。在任何情况下,验证证明077可产生指示验证设备211是否确信证明者的声明和/或知识的验证输出。
[0157]
具体地,证明077典型地具有待被认证为验证者输入的公共密钥073,并且可证明公共密钥073属于与第二人具有给定亲属关系程度的人。为此,证明077可证明数字签名相对于表示第一人的基因组序列的第一基因组数据(例如,作为证明者的证人输入)以及相对于验证密钥071成功地验证。验证密钥071可为验证者信任的一方的密钥,以保证基因组数据。因此,相对于验证密钥可验证的数字签名存在的事实可使验证者211确信基因组材料的真实性。有趣的是,验证者典型地看不到数字签名和/或第一基因组数据,并且因此不能使用两者来将经认证的公共密钥073链接到个人。
[0158]
如图所示,验证键071可由验证设备211输入到证明验证单元244;但是也有可能将验证密钥硬编码到声明中,例如,如果使用的话,则将其并入计算验证密钥078中。
[0159]
证明077可进一步证明第一基因组数据表示具有给定亲属关系程度的第一人的基因组序列,而第二基因组数据081表示第二人的基因组序列,例如,如由关于第一和第二基因组数据的亲属关系函数所计算的。可由验证者211将亲属关系程度输入到证明中,但是也可对其进行硬编码。
[0160]
典型地,第二基因组数据的表示也被输入到证明验证单元244。对此有若干种选择。该表示可为第二基因组数据081本身,也如图所示。该表示还可为例如表示第二基因组数据的散列树的根,例如,依据参考基因组的变异。其他可能的表示包括第二基因组的散列;相对于(硬编码或输入的)另外的验证密钥可验证的第二基因组的数字签名;等等。数字签名可为散列树的根上的数字签名、叶节点的签名的散列树等。另一表示可为具有表示基因组数据的部分的条目(例如,相对于参考基因组的变异)的密码累加器。
[0161]
这些不同的可能性可特别地允许第二基因组数据的内容对验证者保持隐藏,这对于区块链应用和类似应用是重要的。使用比数据本身更小的第二基因组数据的这些或其他表示还可具有减少验证工作的优势,这典型地在由验证者所提供的输入的大小上直接缩放,但是在计算的大小上较少或根本不缩放。
[0162]
图中还示出了任选的签名验证单元245。给定经认证的公共密钥073、文档075和可用该公共密钥073验证的该文档075上的数字签名076,签名验证单元245可被布置为验证数字签名。单元244的证明验证和单元245的签名验证的结果的组合可指示该文档是否由与持有第二基因组数据081的人具有给定亲属关系程度的人正确地签名,如基因组数据所指示的。为了提高性能,如果数字签名076无效,可跳过对证明077的验证,或者如果证明077无效,可跳过对数字签名076的验证。
[0163]
图3示意性地示出了用于表示第一或第二基因组数据的散列树300的实施例的示例,例如,用于由加密认证设备110或210或加密验证设备111或211使用。例如,如本文所描
述的加密认证设备使用的第一基因组数据上的数字签名可为散列树300上的签名;特别是其根节点上的签名。替代地或附加地,用于由如本文所描述的加密验证设备验证加密证明的第二基因组数据的表示可基于散列树300,特别是基于其根节点。散列树通常也称为merkle树。
[0164]
具体地,在该图所示的实施例中,基因组数据可依据指示基因组序列如何偏离参考基因组的变异来表示人的基因组序列。例如,变异可为所谓的单核苷酸多态性(snp或snip)或类似的。因此,第一和第二基因组数据之间的亲属关系函数可通过比较包含在第一和第二基因组数据中的相应对应变异来计算。
[0165]
例如,变异可由变体调用格式(vcf)文档的行表示,或者从其导出。如生物信息学中已知的,vcf文档可用于存储相对于参考基因组的基因序列变异。任选地,vcf文档也可存储表型信息。vcf文档的一部分如下所示:
[0166][0167]
例如,vcf文档的每行可对应于一个变异。散列树300然后可通过含有包含在基因组数据中的参考基因组的一个或多个变异来表示基因组数据。当在亲属关系函数的计算中使用变异时,可证明该变异包含在散列树中。
[0168]
作为说明,示出了散列树300。散列树300的叶节点,在这种情况下,叶节点330、331、332和333可表示基因组数据的变异。例如,基因组数据可包含至少500个、至少1000个或至少10000个变异,因此,散列树可包含至少这么多叶节点。叶节点不需要全部出现在散列树的相同层。还可存在表示除了变异之外的其他信息(例如,表型信息等)的叶节点。散列树可包含标识所使用的参考基因组的叶节点;在加密证明中,可使用该叶节点证明第一和第二dna数据使用相同的参考基因组和/或在第一和/或第二dna数据中使用了特定的参考基因组。
[0169]
变异可由位置341和偏差342表示,偏差342指示在位置341处所表示的基因组序列是否偏离参考基因组,并且如果是,任选地,偏差是什么。变异可表示为vcf文档的一行,例如,也如别处所论述。典型地,叶节点330将其变异341-342表示为表示该变异的信息的散列,例如vcf线的散列。
[0170]
有可能仅包括其中存在与散列树300中的参考基因组的偏差的变异,但也有可能还包括其中不存在偏差的变异,这对于能够显示在某一位置处不存在偏差是有用的(否则
这可能需要例如通过包括所包括的位置的索引来显示在散列树中没有出现变异)。
[0171]
散列树的非叶节点可将以节点为根的子树表示为其子节点的散列。例如,节点320可由叶节点330、331的散列来表示;节点321可由叶节点332、333的散列来表示;并且根节点310可由非叶节点320和321的散列来表示。可使用诸如sha-256的常规散列。一个节点的子节点数不必是2:也可为1个或2个以上。所示的散列树具有三层,但一般来说,任何数目的层是可能的,例如,至少8层、至少12层或至少16层。
[0172]
因此,散列树的根节点310可表示完整的散列树。使用已知技术,可在加密证明中有效地证明由给定叶节点表示的变异基于沿着从叶节点到根节点的路径的节点的兄弟节点而出现在散列树中。例如,可证明,通过散列变异341-342,基于节点331和321的散列,变异341-342出现在具有根310的散列树中;将结果与节点331串接并对结果进行散列;将此与节点321串接;散列结果并检查其对应于根节点310。
[0173]
基于散列树的实施例可允许解决以下问题:基因组数据可能相对较大,并且因此,生成和/或验证与这类基因组数据相关的证明可能是低效的。特别地,将第二基因组数据表示为散列树可允许验证者避免将完整的第二基因组数据输入到验证中。这在验证者必须验证许多证明的设置中(例如在区块链应用中)尤其重要。此外,将第一和/或第二基因组数据表示为散列树可允许证明者更有效地证明亲属关系函数的计算的正确性,特别是如果亲属关系函数不使用包含在第一和/或第二基因组数据中的所有变异。这是重要的,因为加密证明的各种性能度量,诸如证明大小、证明时间和/或计算评估密钥大小,典型地在计算的大小上缩放,例如线性地或更差地。
[0174]
有趣的是,发明人设想使用仅基于包含在第一和/或第二基因组数据中的变异的子集计算亲属关系函数。例如,在实施例中,至多10%、至多5%或甚至至多1%的变异可用于计算亲属关系函数。替代地或附加地,使用基因组信息的重叠子范围的20%至60%之间或更优选地30%至50%之间。这在与散列树结合的性能方面是特别有益的,因为这意指在加密证明中,可完全避免在变异的总数中的计算缩放。
[0175]
有趣的是,即使当采用变异的子集时,也可确定精确的亲属关系程度。文献中已知亲属关系推断很大程度上由非常具体的变异中的重叠决定,例如,参见g kale等人,“用于保护基因组数据库中的亲属关系的效用最大化和私密性保护方法”,doi:10.1093/bioinformatics/btx568(通过引用并入本文)。因此,亲属关系函数的计算可基于第一和第二基因组数据的最相关变异的子集,其中散列树300用于证明这些变异包含在基因组数据中。
[0176]
作为说明,使用散列树300,可证明以下计算在加密证明中被正确地实行:
[0177][0178][0179]
如在该示例中所示,由加密证明证明正确的计算可代替将完整的第一和第二基因组序列作为输入,而将相应基因组数据的散列树300的散列树根310以及执行亲属关系计算所需的变异(例如,snip)作为输入。对于每个变异,计算可采用从变异到散列树根(例如,rm_dna、rm_dna2)的路径(例如,path)作为输入(例如,包含在见证中)。为了证明该变异包含在散列树中,可将例如从美国专利申请us 4309569中已知的散列树认证算法应用于变异(例如,snip)、其路径和散列树根。对于变异,该计算可仅在散列树的大小上以对数方式缩放。
[0180]
尽管在上述伪代码中未示出,但是该计算还可证明第一基因组数据的所有变异和/或第二基因组数据的所有变异是相互不同的,以避免认证者在计算中总是使用相同变异的若干个副本。例如,该检查可包括在亲属关系函数中。
[0181]
发明人认识到,通过仅比较亲属关系函数中的变异的子集,可能存在恶意认证者
试图通过仅选择引导亲属关系函数确定存在给定亲属关系程度的特定变异来证明假亲属关系的风险。为了解决这个问题,可能需要认证者证明所比较的变异包含在适合于亲属关系推断的给定变异集合中。例如,给定变异集合可由验证者输入,或者硬编码到密钥材料中用于产生证明。例如,给定变异集合可由变异位置的一个或多个间隔、由允许位置的散列树等来定义。这在以下伪代码中示出:
[0182][0183]
图4示意性地示出了用于验证公共密钥的认证的加密验证设备411的实施例的示例。加密验证设备可基于图2b的加密验证设备211。如图2b所示,在该图中示出了功能单元以及可由设备411在其操作的各个阶段存储的各种元件。
[0184]
还如参考图3所述,加密验证设备411可验证加密证明077,其中该加密证明077证明第一基因组数据(未示出)和第二基因组数据081具有给定亲属关系程度。第一和第二基因组数据均可包含指示与参考基因组的偏差的一个或多个变异,并且亲属关系函数可比较相应对应变异。图3的各种选项,例如,用于表示散列树中的第一和/或第二基因组数据,在
此也适用。
[0185]
类似于图3所描述的,在该图中也使用了仅基于包含在第一和/或第二基因组数据中的变异的子集来计算亲属关系程度的亲属关系函数。然而,在该图中,为了解决恶意认证者证明假亲属关系的风险,使用了另外的基因组数据082。在该示例中,加密验证设备411包含偏差生成单元446,其被布置为通过根据偏差可能性的统计模型向第二基因组数据081引入偏差来确定另外的基因组数据082。
[0186]
加密验证设备411可包含验证加密证明077的证明验证单元444,例如基于图2b的证明验证单元244。有趣的是,该证明077不仅可证明第一基因组数据和第二基因组数据081具有第一给定亲属关系程度,而且可证明第一基因组数据和另外的基因组数据082不具有第二给定亲属关系程度。
[0187]
具体地,通过这种方式,认证者可通过靶向不太独特的变异来证明亲属关系的尝试被挫败。另外的基因组数据082包括根据某一偏差因子的原始基因组数据081的统计偏差。在加密证明077中被证明是正确的计算现在可检查第一基因组数据显示与原始基因组数据081的亲属关系,而不是偏差082。因此,认证者可能被迫输入真正与亲属关系计算相关的变异。
[0188]
本文所描述的加密证明设备可适于生成这类证明,例如证明第一基因组数据与另外的基因组数据不具有给定亲属关系程度。加密验证设备不必生成另外的基因组数据082;它还可从其他地方获得所生成的另外的基因组数据082。类似于第二基因组数据081,另外的基因组数据的表示也可被输入到由证明验证单元444进行的加密证明的验证中,例如散列树的根或相对于图2b所论述的其他选项中的一个。
[0189]
作为说明,可使用以下伪代码:
[0190][0191][0192]
图5示意性地示出了认证公共密钥的计算机实施的加密认证方法500的实施例的示例。该认证可用于证明公共密钥属于与第二人具有给定亲属关系程度的第一人。
[0193]
方法500可包含存储510:表示第一人的基因组序列的第一基因组数据和/或第一基因组数据上的数字签名,其可相对于验证密钥和/或表示第二人的基因组序列的第二基因组数据来验证。
[0194]
方法500可包含生成520加密证明。加密证明可至少相对于公共密钥是可验证的。加密证明可证明公共密钥属于与第二人具有给定亲属关系程度的人。为此,该证明可证明
第一基因组数据和第二基因组数据具有给定亲属关系程度,如由关于第一和第二基因组数据的亲属关系函数所计算的。最后,证明可进一步证明数字签名相对于第一基因组数据和验证密钥成功地验证。
[0195]
图6示意性地示出了生成用于认证公共密钥的密钥材料的计算机实施的加密密钥生成方法600的实施例的示例。该认证可用于证明公共密钥属于与第二人具有给定亲属关系程度的第一人。
[0196]
方法600可包含存储610:所生成的密钥材料。密钥材料可包含用于生成加密证明的计算评估密钥和用于验证加密证明的计算验证密钥。
[0197]
方法600可包含生成620用于加密证明的密钥材料。加密证明可至少相对于公共密钥是可验证的。加密证明可证明公共密钥属于与第二人具有给定亲属关系程度的人。为此,证明可证明表示第一人的基因组序列的第一基因组数据和表示第二人的基因组序列的第二基因组数据具有给定亲属关系程度,如由关于第一和第二基因组数据的亲属关系函数所计算的。最后,证明可证明第一基因组数据上的数字签名相对于第一基因组数据和验证密钥成功地验证。
[0198]
图7示意性地示出了验证公共密钥的认证的计算机实施的加密验证方法700的实施例的示例。该认证可用于证明公共密钥属于与第二人具有给定亲属关系程度的第一人。
[0199]
方法700可包含存储710:待被认证的公共密钥。
[0200]
方法700可包含获得720和验证730加密证明。加密证明可至少相对于公共密钥是可验证的。加密证明可证明公共密钥属于与第二人具有给定亲属关系程度的人。为此,加密证明可证明表示第一人的基因组序列的第一基因组数据与表示第二个人的基因组序列的第二基因组数据具有给定亲属关系程度,如由关于第一和第二基因组数据的亲属关系函数所计算的。为了相同的目的,加密证明可进一步证明第一基因组数据上的数字签名相对于第一基因组数据和验证密钥成功地验证。
[0201]
实行这些方法的许多不同方式是可能的,这对于本领域技术人员来说是显而易见的。例如,可改变方法500、600和/或700的步骤的顺序,或者可并行实行一些步骤。此外,在步骤之间可插入其他方法步骤。所插入的步骤可表示诸如本文所描述的方法的改进,或者可与该方法无关。例如,方法500的步骤510和520可至少部分地并行实行。此外,给定步骤在下一步骤开始之前可能还没有完全完成。可组合这些方法,例如,密钥生成方法600之后可为使用所生成的密钥材料的验证方法700。
[0202]
所述方法的实施例可使用软件来实行,该软件包含用于促使处理器系统执行方法500、600或700的指令。软件可仅包括由系统的特定子实体采取的那些步骤。软件可存储在合适的存储介质中,诸如硬盘、软盘、存储器、光盘等。软件可作为信号沿着有线或无线或使用数据网络(例如互联网)发送。该软件可用于下载和/或在服务器上远程使用。该方法的实施例可使用被布置为配置可编程逻辑(例如,现场可编程门阵列(fpga))以执行该方法的比特流来实行。
[0203]
应理解,本发明还扩展到计算机程序,特别是载体上或载体中的计算机程序,适于将本发明付诸实践。该程序可为源代码、目标代码、代码中间源和目标代码的形式,诸如部分编译的形式,或者是适用于实施该方法的实施例的任何其他形式。涉及计算机程序产品的实施例包含对应于该方法中的至少一种的处理步骤中的每一个的计算机可实行指令。这
些指令可被细分成子例程和/或被存储在可静态或动态链接的一个或多个文档中。涉及计算机程序产品的另一个实施例包含对应于所阐述的系统和/或产品中的至少一个的装置中的每一个的计算机可实行指令。
[0204]
图8示出了具有可写部分810的计算机可读介质800。可写部分810可包含计算机程序820,该计算机程序包含用于促使处理器系统执行如本文所描述的一种或多种方法的指令;根据所描述的方法生成的加密证明;和/或用于根据所描述的方法生成的加密证明的密钥材料。计算机程序820可作为物理标记或借助于计算机可读介质800的磁化而体现在计算机可读介质800上。然而,也可设想任何其他合适的实施例。此外,应理解,尽管计算机可读介质800在此被示为光盘,但是计算机可读介质800可为任何合适的计算机可读介质,诸如硬盘、固态存储器、闪存等,并且可为不可记录的或可记录的。
[0205]
图9示出了根据实施例的处理器系统940的示意性表示。处理器系统包含一个或多个集成电路910。图7b中示意性地示出了一个或多个集成电路910的结构。电路910包含处理单元920,例如cpu,用于运行计算机程序组件以实行根据实施例的方法和/或实施其模块或单元。电路910包含用于存储编程代码、数据等的存储器922。存储器922的部分可为只读的。电路910可包含通信元件926,例如天线、连接器或两者等。电路910可包含专用集成电路924,用于执行本方法中定义的部分或全部处理。处理器920、存储器922、专用ic 924和通信元件926可经由比如总线的互连件930彼此连接。处理器系统910可被布置用于分别使用天线和/或连接器进行接触和/或无接触通信。
[0206]
举例来说,在一个实施例中,处理器系统940(例如,加密认证设备、加密验证设备或加密密钥生成设备)可包含处理器电路和存储器电路,该处理器被布置为执行存储在存储器电路中的软件。例如,处理器电路可为intel core i7处理器、arm cortex-r8等。在一个实施例中,处理器电路可为arm cortex m0。存储器电路可为rom电路或非易失性存储器,例如闪存。存储器电路可为易失性存储器,例如sram存储器。在后一种情况下,该设备可包含用于提供软件的非易失性软件接口,例如硬盘驱动器、网络接口等。
[0207]
典型地,这些设备各自包含微处理器,该微处理器执行存储在这些设备处的适当软件;例如,该软件可被下载和/或存储在对应的存储器中,例如诸如ram的易失性存储器或者诸如闪存的非易失性存储器。另选地,这些设备可整体或部分地在可编程逻辑(例如,作为现场可编程门阵列(fpga))中实施。这些设备可整体或部分地实施为所谓的专用集成电路(asic),例如针对其特定用途定制的集成电路(ic)。例如,电路可例如使用诸如verilog、vhdl等的硬件描述语言以cmos实施。
[0208]
在一个实施例中,加密认证设备包含密钥生成电路、签名电路和证明电路。在一个实施例中,加密验证设备包含证明验证电路和签名验证电路。该设备可包含附加电路,例如偏差生成电路。这些电路实施本文所描述的对应单元。电路可为处理器电路和存储电路,处理器电路实行以电子方式表示在存储电路中的指令。处理器电路可按分布式方式实施,例如,作为多个子处理器电路。存储器的一部分可为只读的。电路也可为fpga、asic等。存储器可分布在多个分布式子存储器上。存储器的一部分或全部可为电子存储器、磁存储器等。例如,存储器可具有易失性和非易失性部分。
[0209]
应注意,上述实施例说明而非限制本发明,且本领域技术人员将能够设计许多替代实施例。
[0210]
在权利要求中,置于括号中的任何附图标记均不应解释为对权利要求的限制。动词

包含(comprise)’及其变形的使用不排除权利要求中所述之外的元件或步骤的存在。元件之前的冠词

一(a)’或

一个(an)’不排除多个这类元件的存在。本发明可借助于包含若干个不同元件的硬件以及通过适当编程的计算机来实施。在列举了若干个装置的设备权利要求中,这些装置中的若干个可由同一个硬件来实施。在相互不同的从属权利要求中列举的措施可有利地组合。
[0211]
在权利要求中,括号中的附图标记表示示例性实施例的附图中的附图标记或实施例的公式,从而增加权利要求的可理解性。这些参考文献不应被解释为限制权利要求。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献