CN111033506A - 利用匹配操作和差异操作的编辑脚本核实 - Google Patents

利用匹配操作和差异操作的编辑脚本核实 Download PDF

Info

Publication number
CN111033506A
CN111033506A CN201880054311.2A CN201880054311A CN111033506A CN 111033506 A CN111033506 A CN 111033506A CN 201880054311 A CN201880054311 A CN 201880054311A CN 111033506 A CN111033506 A CN 111033506A
Authority
CN
China
Prior art keywords
string
editing
character
current position
computing device
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.)
Granted
Application number
CN201880054311.2A
Other languages
English (en)
Other versions
CN111033506B (zh
Inventor
M·G·韦宁根
B·舍恩马克尔斯
S·阿萨多瓦
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.)
Koninklijke Philips NV
Original Assignee
Koninklijke Philips NV
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 Koninklijke Philips NV filed Critical Koninklijke Philips NV
Publication of CN111033506A publication Critical patent/CN111033506A/zh
Application granted granted Critical
Publication of CN111033506B publication Critical patent/CN111033506B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/3218Cryptographic 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 proof of knowledge, e.g. Fiat-Shamir, GQ, Schnorr, ornon-interactive zero-knowledge proofs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query processing by using string matching techniques
    • 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
    • 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
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/151Transformation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/194Calculation of difference between files
    • 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/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • 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
    • 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/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B30/00ICT specially adapted for sequence analysis involving nucleotides or amino acids
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16BBIOINFORMATICS, i.e. INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR GENETIC OR PROTEIN-RELATED DATA PROCESSING IN COMPUTATIONAL MOLECULAR BIOLOGY
    • G16B50/00ICT programming tools or database systems specially adapted for bioinformatics
    • 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
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/50Oblivious transfer

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Artificial Intelligence (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Medical Informatics (AREA)
  • Data Mining & Analysis (AREA)
  • Stored Programmes (AREA)
  • Document Processing Apparatus (AREA)

Abstract

一些实施例涉及一种计算设备,其被配置为核实编辑脚本用于将第一字符串转换为第二字符串。所述编辑脚本具有匹配操作和差异操作作为允许的编辑操作。所述计算设备获得编辑脚本的表示,并且随后执行验证计算。针对每个匹配操作,所述计算设备:确定第一字符串中的当前位置处的字符和第二字符串中的当前位置处的字符,核实第一字符串中的当前位置处的字符和第二字符串中的当前位置处的字符相匹配,将第一字符串中的当前位置递增一,并且将第二字符串的当前位置递增一。针对每个差异操作,所述计算设备将第一字符串中的当前位置和/或第二字符串中的当前位置递增一。

Description

利用匹配操作和差异操作的编辑脚本核实
相关申请的交叉引用
本申请要求以下美国临时申请号的优先权:于2017年8月24日提交的62/549683以及于2018年5月31日提交的62/678427,其全部公开内容通过引用并入本文,以用于所有目的。
技术领域
本发明涉及一种计算设备、一种核实设备、一种计算方法以及一种计算机可读介质。
背景技术
在如遗传学或自然语言处理的领域中,发现两个字符串(例如,单词)之间的差异是普遍性问题。在两个字符串之间的差异通常被表示为编辑脚本,也被称为编辑路径,其是将一个字符串转换为另一字符串所需的差异操作集合。差异操作可以例如是由一个字符来替换另一字符、插入字符或移除字符。能够通过为编辑脚本中的每个差异操作分配成本或权重,并且将两个字符串之间的所谓编辑距离定义为编辑脚本中用于将字符串中的一个字符串转换为另一字符串的操作的最小总成本,来测量在两个字符串之间的相异度。例如,常用的编辑距离是Levenshtein距离,其具有移除、插入和替换作为差异操作,并且为这些类型的操作中的每种类型的操作分配成本1。
编辑距离和编辑脚本被用在各种设置中。例如,其被用在计算生物学中。一种可能的应用是这样的设备:其对DNA样本进行测序并且测量样本的相似性,例如以使样本与同一个人或家庭成员相匹配。其还被用在例如自然语言处理中,以提供对输入文本中的拼写错误的类似校正。特别地,在参考字符串中搜索目标字符串时使用编辑距离和编辑脚本,同时允许特定数量的不匹配,例如以在参考字符串中找到与目标字符串的编辑距离较小的子字符串。这被用于DNA序列比对,其中,DNA的短样本与参考基因组进行匹配以找到其位置。在此,由于读取错误以及由于人与人之间的DNA略有不同,所以可能发生不匹配。
一旦已经确定了编辑脚本,就需要能够验证该编辑脚本确实用于将第一字符串(例如,参考字符串的子字符串)转换为第二字符串(例如,搜索字符串)。例如,当确定编辑脚本的工作设备与需要确保正确的客户端设备不同时,就是这种情况。例如,这可能是因为客户端设备受到资源约束,例如,其是传感器或智能设备。这也可能是因为客户端设备无法访问第一字符串和/或参考字符串。例如,考虑获得和存储其用户的基因组数据的家庭DNA测序设备,以及充当客户端的保险公司,希望至少近似地了解特定的DNA片段是否出现在用户的基因组数据中。在这样的情况下,基因组数据可以由用户存储,但是保险公司仍然希望知道其接收到关于其对所述数据的查询的正确答案。
遗憾的是,核实编辑脚本是用于将第一字符串转换为第二字符串可能以若干种方式泄漏关于第一字符串和/或第二字符串的数据,这可能是个问题,尤其是在字符串敏感的情况下,例如,如果其是如基因组数据的医学信息。例如,运行在设备上核实编辑脚本的其他应用可能能够观察到关于核实的存储器访问模式的信息,并且尝试使用该信息来导出关于正在被核实的数据的信息。同样地,在第一字符串和/或第二字符串和/或编辑脚本(的部分)来自多个相互不信任方的设置中,核实将要求这些方将其输入共享给需要检查编辑脚本是否正确的任何人。类似地,在客户端设备需要核实由工作设备确定的编辑脚本的正确性的设置中,核实将要求客户端检查如第一字符串、第二字符串或编辑脚本的输入。从隐私的角度来看,这可能是不希望的,例如,在家庭DNA测序应用中,这将意味着让保险公司检查其用户的基因组数据。由于针对客户端设备使用该数据执行核实流程的资源限制,这也可能是根本不希望的,因为这样的计算在其输入(例如,第一字符串或第二字符串,或编辑字符串)的大小上成比例。
发明内容
提出了在权利要求中定义的计算设备。所述计算设备用于核实编辑脚本用于将第一字符串转换为第二字符串。所述计算设备提供了数据遗忘性的优点。数据遗忘性意味着访问模式(例如,所访问的存储器位置或者从远程存储装置中取回的文件的模式)对于不同的输入是等效的。当核实编辑脚本时,这意味着例如访问模式对于具有相同长度但是包含不同差异操作的不同编辑脚本是等效的。因此,减少了信息量,该信息量例如当经由旁通道执行核实时可能泄露第一字符串和/或编辑字符串和/或编辑脚本。所述计算设备被配置为获得编辑脚本的表示,并且随后执行验证计算以核实其正确性。
有趣的是,除了正常的差异操作之外,编辑脚本的允许的编辑操作集合额外地包括匹配操作。添加该匹配操作具有的优势在于:其使得核实能够以更数据遗忘性的方式来执行,因为能够通过以线性方式迭代地通过第一字符串、第二字符串和编辑字符串来执行所述核实,由此针对不同的编辑字符串给出相似的访问模式。在已经获得了这样的编辑脚本后,所述计算设备能够执行验证计算以获得对编辑脚本的正确性的保证,其中,针对编辑脚本中的每个匹配操作或差异操作,第一字符串中的当前位置和/或第二字符串中的当前位置递增一。特别地,许多编辑脚本将产生类似的访问模式。特别地,可以将在第一字符串或第二字符串中的当前位置处的字符计算为在二进制向量与第一字符串或第二字符串的一个或多个字符之间的内积,使得确定所述字符涉及访问第一字符串或第二字符串的多个字符,由于根据观察哪个字符被访问来直接观察当前字符,因此进一步提高了数据遗忘性。
在实施例中,在多方计算系统中使用计算设备。通过使用多方计算(MPC)执行验证计算,相互不信任的多方能够确保编辑脚本的正确性,而无需共享其敏感输入,例如,第一字符串、第二字符串或编辑脚本。在这种设置中,我们的计算设备的数据遗忘性改进是特别有利的,因为其允许验证计算的敏感中间结果(间接泄漏关于输入的信息)对计算设备保持隐藏。在实施例中,第一计算设备将第一字符串作为私有输入提供给多方计算,并且第二计算设备将第二字符串作为私有输入提供给多方计算。在此,计算设备的数据遗忘性特性有助于减少能通过除第二计算设备以外的计算设备导出的关于第一字符串以及能通过除第一计算设备以外的计算设备导出的关于第二字符串的信息量。在实施例中,第一计算设备将第二字符串作为私有输入来提供给多方计算,第一字符串是对多方计算的公共输入。在此,计算设备的数据遗忘性特性有助于减少能通过除第一计算设备以外的计算设备导出的关于第二字符串的信息量。
在实施例中,所述计算设备被配置有在第一字符串与第二字符串之间的最大编辑距离,例如,包括Levenshtein距离。允许的编辑操作集合可以包括哑操作,并且编辑脚本包括的编辑操作的数量可以是第一字符串的长度、第二字符串的长度以及最大编辑距离的函数。因此,通过确保许多不同的第一字符串或不同的第二字符串能够具有相同长度的编辑脚本,进一步减少了例如关于第一字符串或第二字符串的敏感信息的潜在泄漏。在一些实施例中,通过从第一字符串和第二字符串中识别出可允许的编辑操作并且将所述可允许的编辑操作添加到编辑脚本中来生成这样的编辑脚本,如果不匹配操作或插入操作被添加到编辑脚本,则将哑操作添加到编辑脚本中。因此,减少了编辑脚本的中间副本的长度对第一字符串和第二字符串的内容的依赖性,也改善了编辑脚本生成的数据遗忘性特性。
本发明的另外的方面是一种核实设备。在实施例中,在可核实的计算系统中使用计算设备和核实设备。在这样的系统中,所述计算设备:将验证计算作为可核实计算来执行,所述可核实计算生成成功地执行验证计算的密码可核实计算证明;并且将密码证明提供给核实设备,使得核实设备获得对编辑脚本的正确性的保证。所述核实设备接收并且核实证明。这使得核实设备能够将计算外包给计算设备,同时仍然获得正确执行的保证。核实的数据遗忘性特性允许相同的证明生成和核实流程可应用于对不同输入的计算,并且特别地,所述核实设备可以执行相同的核实流程,而与输入的大小无关。核实的数据遗忘性特性还使得能够将一些或所有经处理的信息保持对核实设备隐藏。特别地,在一些实施例中,所述核实设备接收由数据提供设备对第一字符串、第一字符串为其子字符串的较大字符串、或较大字符串是其数据块的Merkle散列树的根的输入表示,其中,数据遗忘性使得第一字符串和/或第二字符串能够对核实设备保持隐藏,而所述核实设备仍能接收对其真实性的某种保证。
本发明的另外的方面是一种计算方法。所述方法的实施例可以作为计算机实施的方法在计算机上实施,或者可以在专用硬件中实施,或者在这两者的组合中实施。针对所述方法的实施例的可执行代码可以被存储在计算机程序产品上。计算机程序产品的示例包括存储器设备、光学存储设备、集成电路、服务器、在线软件等。优选地,所述计算机程序产品包括被存储在计算机可读介质上的非瞬态程序代码,用于在所述程序产品在计算机上运行时执行所述方法的实施例。
在实施例中,所述计算机程序包括计算机程序代码,所述计算机程序代码适于在计算机程序在计算机上运行时执行所述方法的实施例的所有步骤。优选地,所述计算机程序被体现在计算机可读介质上。
本发明的另一方面提供了一种使计算机程序可用于下载的方法。当将计算机程序被上传到例如Apple的App商店、Google的Play商店或Microsoft的Windows商店时,或者当计算机程序可用于从这样的商店下载时,使用该方面。
附图说明
将仅通过示例的方式参考附图来描述本发明的进一步的细节、方面和实施例。附图中的元件是出于简单和清楚的目的而图示的,而不一定按比例绘制。在图中,与已经描述的元件相对应的元件可以具有相同的附图标记。在附图中:
图1a示意性示出了计算设备的实施例的示例,
图1b示意性示出了计算设备的实施例的示例,
图2示意性示出了计算设备的实施例的示例,
图3示意性示出了字符匹配单元的实施例的示例,
图4a示意性示出了多方计算系统的实施例的示例,
图4b示意性示出了多方计算系统的实施例的示例,
图4c示意性示出了多方计算系统的实施例的示例,
图4d示意性示出了多方计算系统的实施例的示例,
图5a示意性示出了可核实计算系统的实施例的示例,
图5b示意性示出了可核实计算系统的实施例的示例,
图5c示意性示出了可核实计算系统的实施例的示例,
图6示意性示出了计算方法的实施例的示例,
图7a示意性示出了根据实施例的具有包括计算机程序的可写部分的计算机可读介质,
图7b示意性示出了根据实施例的处理器系统的表示。
图1a、1b、2、3、4a-4d、5a-5c、7a、7b中的附图标记列表:
110、111 计算设备
120 通讯接口
121 计算机网络
130 存储器
131 编辑脚本表示
131.1、131.2 编辑操作
132 第一字符串中的当前位置的表示
133 第二字符串中的当前位置的表示
134 第一字符串
134.1、134.2 第一字符串的字符
135 第二字符串
135.1、135.2 第二字符串的字符
136 较大字符串
137 Merkle散列树
140 处理器
141 编辑脚本获得器单元
142 验证单元
143 第一位置递增单元
144 第二位置递增单元
145 字符匹配单元
150 第一二进制向量
150.1、150.2 第一二进制向量的元素
151 第一字符串中的当前位置处的字符
160 第二二进制向量
160.1、160.2 第二二进制向量的元素
161 第二字符串中的当前位置处的字符
400、401 多方计算系统
500 可核实的计算系统
510 核实设备
511 数据提供设备
520 通信接口
521 计算机网络
522 密码可核实的计算证明
523 输入表示
530 存储器
540 处理器
1000 计算机可读介质
1010 可写部分
1020 计算机程序
1110 (一个或多个)集成电路
1120 处理单元
1122 存储器
1124 专用集成电路
1126 通信元件
1130 互连
1140 处理器系统
具体实施方式
尽管本发明可以以许多种不同的形式来实现实施例,但是在附图中示出并且将在此详细描述一个或多个特定实施例,应当理解,本公开被认为是本发明的原理的示例,而并不旨在将本发明限于所示和所描述的特定实施例。
在下文中,为了理解,描述了实施例的在操作中的元件。然而,显而易见的是,各个元件被布置为执行被描述为由其执行的功能。
此外,本发明不限于实施例,并且本发明在于在本文中所描述的或者在互不相同的从属权利要求中叙述的每个新颖特征或各特征的组合。
以下呈现的实施例中的一些实施例为被配置为核实编辑脚本是否用于将第一字符串转换为第二字符串的计算设备提供了数据遗忘性的优点。当设备执行计算时,各种信息可能泄漏通过侧通道正在计算的数据。例如,如已经展示的使用推测执行对计算机处理器的最近的Spectre和Meltdown攻击,计算机程序能够通过高速缓存计时侧通道从在相同计算设备上运行的另一计算机程序中提取敏感数据。为了阻止这样的攻击,有利的是:能够使由处理器执行的计算的存储器访问模式更少地依赖于计算过程的任何敏感数据。例如,以这样的方式来设计计算设备是有利的,使得处理器的存储器访问模式仅仅取决于一些或全部经处理的信息的大小,而不取决于其内容。
一些实施例聚焦于在编辑脚本有效的情况下改善数据遗忘性。如果编辑脚本不是用于将第一字符串转换为第二字符串,例如,其是无效的,则数据遗忘性可能不是那么重要的,例如,可能不需要保护来自编辑脚本的无效操作或者第一字符串或第二字符串中的导致编辑脚本无效的字符。例如,在一些实施例中,需要保护第一字符串和/或第二字符串和/或编辑脚本的设备自身已经生成了编辑脚本,并且因此确保该编辑脚本是有效的;其可能执行核实仅仅是为了使他人确信其正确性。如果编辑脚本无效,则这将使其不相干。在一些实施例中,如果编辑脚本无效,则编辑脚本核实流程终止,或者设置指示错误的标志,并且编辑脚本核实流程继续,例如,即使存在错误,核实也继续到编辑脚本的结束。
下文呈现的一些实施例为被配置为核实编辑脚本用于使用多方计算(MPC)将第一字符串转换为第二字符串的计算设备提供了数据遗忘性的优点。在多方计算中,多个计算设备可以以计算设备不学习其他计算设备的一些或全部输入的方式对其各自的输入执行分布式计算。如下文更详细讨论的,能够在下面的实施例中使用本领域技术人员已知的用于执行MPC的各种技术。但是,许多MPC技术的共同特性是:利用MPC执行的计算的控制流(例如,存储器访问模式或条件分支)不应当依赖于敏感数据(例如,计算设备的敏感输入或者已经基于敏感输入计算出的数据)的内容。因此,为了在MPC中隐藏敏感数据,有利的是减小控制流对敏感数据的内容的依赖性,例如,以提高在MPC中执行的计算的数据遗忘性。例如,以这样的方式来设计计算设备是有利的:程序的存储器访问模式取决于一些或全部经处理的信息的大小,而较少取决于其内容。
以下呈现的一些实施例为计算设备以及为核实设备提供了数据遗忘性的优点,所述计算设备被配置为核实编辑脚本用于将第一字符串转换为第二字符串作为生成密码可核实计算证明的可核实计算,所述核实设备被配置为通过核实所述密码可核实计算证明来核实编辑脚本用于将第一字符串转换为第二字符串。在可核实计算中,所述证明向核实者提供关于编辑脚本的正确性的密码保证,而无需核实者自己执行核实。这可以例如节省核实者所需的计算工作量或存储容量。在可核实计算中,计算设备所需的一些或全部密钥材料、核实设备所需的密钥材料或者计算设备执行的核实流程可以取决于作为可核实计算而执行的计算的控制流,例如存储器访问模式或条件分支。因此,为了消除对不同密钥材料和/或不同核实流程的需求,有利的是减小控制流对输入数据的依赖性,例如,提高计算的数据遗忘性。在一些实施例中,密码证明是零知识证明,其隐藏了在核实中所使用的一些或全部数据,例如,可核实计算可以采用零知识的简洁的非交互式知识论证(zk-SNARK)。这可以使核实者能够获得关于编辑脚本的正确性的保证,而不必知道第一字符串和/或第二字符串和/或编辑脚本。在这样的情况下,同样从隐私的角度来看,减少控制流对这些敏感输入的依赖性也是有利的。
图1a示意性示出了计算设备110的实施例。图1a示出了包括存储器130和处理器140的计算设备110。存储器130可以被用于数据和/或指令存储。例如,存储器130可以包括处理器140被配置为对其起作用的软件和/或数据。处理器140可以被实施为一个或多个处理器电路,例如,微处理器、ASIC、FPGA等。存储器130可以包括能由处理器140执行的计算机程序指令。根据计算设备的实施例来配置处理器140,以及可能与存储器130一起。
图1b示意性示出了计算设备110的实施例。图1b示出了计算设备110,计算设备110包括被配置用于与一个或多个其他计算设备进行数字通信的通信接口120、存储器130和处理器140。
计算设备110的执行在处理器140中实施。例如,处理器140可以是微处理器、FPGA、ASIC或者其组合。可以例如在云计算架构等中提供处理器140。在本文中示出了另外的示例。图2示意性示出了可以是处理器140的功能单元的功能单元。例如,图2可以被用作处理器140的可能功能组织的蓝图。例如,在图2中所示的功能单元,例如验证单元142,可以全部或部分地以存储在设备110处(例如,在设备110的电子存储器中)的计算机指令来实施,并且能由设备110的微处理器来执行。在混合实施例中,功能单元部分地实施于硬件中,例如作为协处理器,并且部分地实施于在设备110上存储和执行的软件中。
计算设备110被配置为核实编辑脚本131用于将第一字符串134转换为第二字符串135。编辑脚本131包括一个或多个编辑操作,例如,编辑操作131.1、131.2,所述编辑操作是从允许的编辑操作集合中选择的。如果编辑脚本131用于将第一字符串134转换为第二字符串135,则将操作从编辑脚本131应用到第一字符串134导致第二字符串135。在这种情况下,我们将编辑脚本131称为“有效”,否则称为“无效”。允许的编辑操作集合包括指示在第一字符串134与第二字符串135之间的差异的差异操作。差异操作的示例包括:不匹配操作,其中,来自第一字符串134的字符被另一字符替代以获得第二字符串135;插入操作,其中,字符被插入到第一字符串134中以获得第二字符串135;以及删除操作,其中,从第一字符串134中删除字符以获得第二字符串135。特定计算设备110可以支持这些差异操作的任意子集,例如,计算设备110可以仅支持不匹配,或者计算设备110可以仅支持不匹配和删除;以及计算设备110可以支持除上文提到的那些操作之外的操作,例如,置换操作、合并操作或拆分操作。
存储器130被配置为存储第一字符串134的一个或多个字符(例如,字符134.1、134.2)以及第二字符串135的一个或多个字符(例如,字符135.1、135.2)的表示。表示字符的各种方式是可能的,例如使用ASCII,或者通过在有限字段中为每个字符分配数字,例如,'A'=0,'B'=1等,或者作为在下文针对特定实施例详细讨论的加密或秘密共享。第一字符串134和第二字符串135的所有字符的表示都可以被存储在存储器中,但是这不是必须的。例如,如果第一字符串134非常大,则不必一直使整个第一字符串在存储器中,而是计算设备110可以在核实的不同阶段使第一字符串134的不同部分在存储器130中;类似地,不必一直使整个第二字符串135在存储器130中,而是计算设备110可以在核实的不同阶段使第二字符串135的不同部分在存储器130中。存储器130额外地被配置为存储第一字符串134中的当前位置的表示132和第二字符串135中的当前位置的表示133。最初,位置132和133可以分别指向第一字符串和第二字符串的开始。表示这样的位置的各种方式都是可能的,例如作为字节、整数、字段元素、秘密共享或加密。在一些实施例中,第一字符串134和第二字符串135是核酸序列,例如,包含字符“A”、“C”、“G”和“T”的DNA或RNA序列。在这种情况下,由于所涉及数据的敏感性,特别需要数据遗忘的核实技术。在存储器中表示核酸序列的有效方式在现有技术中是已知的,例如,通过将四个字符包装在单个字节中或者通过执行压缩。
处理器140包括被配置为获得编辑脚本的表示并且将其存储在存储器130中的编辑脚本获得器单元141。
常规地,编辑脚本仅包括差异操作。例如,编辑脚本可以包括三个差异操作:“在2处由C替换A”、“在5处插入C”以及“在8处删除”。该编辑脚本将第一字符串s=“AACTGCTAT”转换为第二字符串t=“ACCTCGCAT”,这能够通过应用编辑脚本的后续差异操作来核实。例如,对s应用差异运算“在2处由C替换A”得出s'=“ACCTGCTAT”;对s'应用差异运算“在5处插入C”得到s”=“ACCTCGCTAT”,并且对s”应用差异运算“在8处删除”得到t=“ACCTCGCAT”。因此,该编辑脚本对于将s转换为t是有效的。尽管应用后续的差异操作允许核实编辑脚本是有效的,但是能够如何以数据遗忘方式执行并不是显而易见的,例如,用于应用删除操作的存储器访问模式可以与用于插入操作的存储器访问模式不同,并且针对在位置1处插入的存储器访问模式可以与针对在位置5处插入的存储器访问模式不同。
然而,有趣的是,针对编辑脚本131的允许的编辑操作集合不仅包含差异操作,而且还包含指示在第一字符串134和第二字符串135中都出现的相同字符的匹配操作。例如,编辑脚本131可以被表示为编辑操作的序列,例如编辑操作131.1、131.2,包括匹配操作,使得针对第一字符串134中未被差异操作寻址(例如,替换或删除)的每个字符,包括匹配操作。例如,以上编辑脚本[在2处由C替换A,在5处插入C,在8处删除]可以被表示为包括匹配操作的编辑操作的以下序列:[匹配;不匹配A/C;匹配;匹配;插入C;匹配;匹配;删除T;匹配;匹配]。在此,针对第一字符串的第一、第三、第四、第五、第六、第八和第九字符包括匹配操作,因为未替换或删除这些字符以便从第一字符串获得第二个字符串。添加这些匹配操作提高了核实编辑脚本131是有效的数据遗忘性,因为其允许例如通过针对编辑脚本中的每个操作(例如,操作131.1、131.2),在操作为匹配操作或差异操作时将第一字符串中的当前位置的表示132和/或第二字符串中的当前位置的表示133递增一,来核实编辑脚本131,因此,针对不同的第一字符串134和/或第二字符串135和/或编辑脚本131的编辑脚本核实可以具有对存储器130的相似访问模式。
在一些实施例中,计算设备110可以仅获得针对每个编辑操作的类型,例如,编辑操作是表示匹配操作、不匹配操作、插入操作还是删除操作。例如,每个操作可以由代码来表示。所述代码可以标识特定类型的操作。在其他实施例中,可以获得关于每个编辑操作(例如,编辑操作131.1或131.2)的额外信息,诸如其出现的位置或者插入或删除的特定字符。如上所述,所获得的关于每个编辑操作(例如,编辑操作131.1或131.2)的信息可以以各种方式(例如,ASCII)表示为一个或多个字段元素,作为秘密共享中的共享或者作为加密。
可以以各种方式来获得编辑脚本131。例如,编辑脚本131可以由计算设备110自身来计算,在这种情况下,可以经由设备内通信接口、功能调用、API、总线等来获得编辑脚本131。备选地,计算设备110可以包括通信接口121,通信接口121被配置用于与另外的通信设备111进行数字通信,并且计算设备110可以经由通信接口来接收编辑脚本131的表示。计算设备110可以对计算编辑脚本131做出贡献或者不做出贡献。例如,另一设备可以计算编辑脚本131并且将其提供给计算设备110,在这种情况下,编辑脚本131可以以明文来表示。备选地,编辑脚本131可以是在计算设备110与其他计算设备(例如,计算设备111)之间的多方计算的结果,在这种情况下,编辑脚本131可以被表示为秘密共享或加密,或者编辑脚本131可以是由另一组计算设备进行多方计算的结果,在这种情况下,编辑脚本131也可以被表示为秘密共享或加密。
处理器140还包括验证单元142,验证单元142在编辑脚本获得器单元141获得并存储编辑脚本131之后执行验证计算。验证单元142自身包括执行涉及字符串134、135以及各个字符串中的当前位置的表示132、133的特定动作的若干单元。特别地,验证单元142包括第一位置递增单元143、第二位置递增单元144以及字符匹配单元145。在一些实施例中,验证单元142取决于编辑脚本131中的每个编辑操作的类型来激活单元143、144和145,例如,验证单元142可以顺序地迭代通过编辑脚本131的各操作(例如,操作131.1或131.2),并且取决于编辑操作的类型来调用单元143、144和145。在其他实施例中,验证单元142为每个编辑操作来调用单元143、144、145,例如,验证单元142可以顺序地迭代通过编辑脚本131,并且针对每个编辑操作来调用每个单元143、144和145。在这样的其他实施例中,单元143、144、145可以被配置为在当前编辑操作不需要其改变存储器的情况下执行哑操作,这对于数据遗忘性可能是有益的。例如,单元142可以确定表示当前编辑操作是否需要单元143、144或145中的任一个单元来改变存储器130的标志,并且如果当前编辑操作要求所述单元改变存储器,则单元143、144和145中的任一个单元可以基于该标志、原始值和新值通过更新存储器130中的一个或多个值来执行其操作,例如,通过计算经更新的值作为原始值与标志和新值与原始值之间的差的乘积之和。
第一位置递增单元143基于编辑脚本131中的编辑操作(例如,编辑操作131.1、131.2)来更新第一字符串中的当前位置的表示132。针对一些类型的编辑操作:针对匹配操作,但是也可能针对一些类型的差异操作,例如,针对不匹配操作或删除操作,第一位置递增单元143对第一字符串中的当前位置132递增一。可以仅针对需要更新第一字符串中的当前位置的编辑操作来激活第一位置递增单元143。备选地,还可以针对其他编辑操作进行激活,这可以改善数据遗忘性,因为其减少了通过观察当前位置132是否被更新而能够获得的信息量。例如,可以针对编辑脚本131中的所有编辑操作(例如,编辑操作131.1、131.2)进行激活,并且通过将其设置为xpos+ismatch+ismismatch+isdeletion来更新第一字符串132中的当前位置,其中,xpos是第一字符串中的当前位置;如果编辑操作为匹配操作,则ismatch为1,否则为0;如果编辑操作为不匹配操作,则ismismatch为1,否则为0;如果编辑操作为删除操作,则isdeletion为1,否则为0。在一些实施例中,第一字符串132中的当前位置被更新为多方计算,其中,ismatch、ismismatch和ideletion可以使用已知的技术(例如,比较协议)以数据遗忘的方式来计算,如下文更详细阐述的。在一些实施例中,第一字符串132中的当前位置被更新为可核实计算,其中,ismatch、ismismatch和edeletion可以使用已知的技术(例如,使用零等门)以数据遗忘的方式来计算,如下文更详细阐述的。
第二位置递增单元144基于编辑脚本131中的编辑操作(例如,编辑操作131.1、131.2)来更新第二字符串中的当前位置的表示133。针对一些类型的编辑操作:针对匹配操作,但是也能够针对一些类型的差异操作,例如,针对不匹配操作或删除操作,第二位置递增单元144将第二字符串中的当前位置133递增一。可以仅针对需要更新第一字符串中的当前位置的编辑操作来激活第二位置递增单元144。备选地,还可以针对其他编辑操作进行激活,这可以改善数据遗忘性,因为其减少了通过观察当前位置133是否被更新而能够获得的信息量。例如,可以针对编辑脚本131中的所有编辑操作(例如,编辑操作131.1、131.2)进行激活,并且通过将其设置为wpos+ismatch+ismismatch+isinsertion来更新第二字符串133中的当前位置,其中,wpos是第二字符串中的当前位置;如果编辑操作为匹配操作,则ismatch为1,否则为0;如果编辑操作为不匹配操作,则ismismatch为1,否则为0;如果编辑操作为插入操作,则isdeletion为1,否则为0。在一些实施例中,第二字符串133中的当前位置被更新为多方计算,其中,ismatch、ismismatch和isinsertion可以使用已知的技术(例如,比较协议)以数据遗忘的方式来计算,如下文更详细阐述的。在一些实施例中,第一字符串133中的当前位置被更新为可核实计算,其中,ismatch、ismismatch和isinsertion可以使用已知的技术(例如,使用零等门)以数据遗忘的方式进行计算,如下文更详细阐述的。
在实施例中,第一位置递增单元143和第二位置递增单元144一起针对编辑操作(例如,编辑操作131.1或131.2)执行以下操作:
-如果编辑操作是匹配操作,则由第一位置递增单元143将第一字符串中的当前位置132递增一,并且由第二位置递增单元144将第二字符串中的当前位置133递增一,
-如果编辑操作是差异操作,则由第一位置递增单元143将第一字符串中的当前位置132递增一,和/或由第二位置递增单元144将第二字符串中的当前位置133递增一,例如:
-如果编辑操作是不匹配操作,则由第一位置递增单元143将第一字符串中的当前位置132递增一,并且由第二位置递增单元144将第二字符串中的当前位置133递增一,
-如果编辑操作是插入操作,则由第二位置递增单元144将第二字符串中的当前位置133递增一,并且
-如果编辑操作是删除操作,则由第一位置递增单元143将第一字符串中的当前位置132递增一。
特别地,针对每个个体的编辑操作,第一字符串中的当前位置132和第二字符串中的当前位置133可以递增零或一,这可以减少存储器访问模式对编辑脚本131的内容的依赖性,由此提高数据遗忘性。
字符匹配单元145当针对匹配操作被激活时,确定第一字符串中的当前位置处的字符x和第二字符串中的当前位置处的字符w,并且核实其是否匹配,例如相等。如果字符不匹配,则这给出编辑脚本131不用于将第一字符串134转换为第二字符串135的指示。不仅针对匹配操作,而且还针对其他编辑操作来激活字符匹配单元145。例如,可以针对所有编辑操作(例如,编辑操作131.1、131.2)进行激活。在这样的情况下,可以从指示当前编辑操作是否为匹配操作的值以及指示字符是否匹配的值中导出错误标准。例如,可以确定值match,如果编辑操作是匹配,则值match为1,否则为0;并且为了获得错误标准,可以将match与表示为(x-w≠0)的布尔值相乘,如果字符x和w相匹配(例如,相等),则其为0,否则为1。如果错误标准为1,则这指示该编辑脚本不是用于将第一字符串134转换为第二字符串135。在这种情况下,例如,编辑脚本核实流程可以终止,或者可以设置指示错误的标志,并且编辑脚本核实流程可以继续。
在一些实施例中,在编辑脚本核实期间的某个时间点,第一字符串中的当前位置132的表示和/或第二字符串中的当前位置133的表示可以是界外的。例如,表示132和/或表示133可以指向各自字符串134、135之外的位置。注意,这不一定意味着编辑脚本131无效:例如,如果第二字符串中的当前位置133指向直接在第二字符串135之后的位置,但是编辑脚本的其余部分仅包含删除操作,则编辑脚本131可能仍然有效。在这样的实施例中,从数据遗忘性的角度来看,可能有益的是:即使表示132和/或表示133在界外,字符匹配单元145也能够导出当前字符x和/或当前字符w。例如,字符匹配单元145可以被配置为在表示132指向直接在第一字符串134之后的位置的情况下,将字符x设置为特殊值,例如A;和/或在表示133指向直接在第二字符串135之后的位置的情况下,将字符w设置为特殊值,例如B。在这样的情况下,字符匹配单元145可以导出错误标准,所述错误标准还考虑了位置132和/或位置133在界外的可能性。例如,所述错误标准可以等于match*((x=A)+(w=B)+(x-w≠0))+mismatch*((x=A)+(w=B)),其中,如果编辑操作为匹配操作,则match为1,否则为0;如果x等于特殊值A,则(x=A)为1,否则为0;如果w等于特殊值B,则(w=B)为1,否则为0;如果x和w不相等,则(x-w≠0)为0,否则为1;以及如果编辑操作是不匹配操作,则mismatch为1,否则为0。特别地,在其他情况下,如果编辑操作是匹配或不匹配,但是x或w等于其各自的特殊值A或B,则满足错误标准。
在一些实施例中,如果表示132和/或表示133指向既不在各自字符串134、135内部也不直接在其之后的位置,则这可以暗示编辑脚本131无效。在这种情况下,字符匹配单元145可以被配置为终止或设置错误标志。特别地,字符匹配单元145可以被配置为针对每个编辑操作来检查当前位置132是恰好在第一字符串134的结尾之后的两个位置,或者当前位置133是恰好在第二字符串135的结尾之后的两个位置。在一些实施例中,当前位置132和133最初在相应的字符串134、135内部,并且仅通过将其递增一来修改,在这种情况下,该检查可以是足够的。
在一些实施例中,验证单元142采取额外步骤以确保编辑脚本是有效的。例如,验证单元142可以核实:在已经执行了针对编辑脚本131中的每个编辑操作的验证计算的步骤之后,第一字符串中的当前位置的表示132准确地指向在第一字符串134的结尾之后的第一字符,指示验证计算已经核实了第一字符串134的所有字符。类似地,验证单元142可以核实:在已经执行了针对编辑脚本131中的每个编辑操作的验证计算的步骤之后,第二字符串中的当前位置的表示133准确地指向第二字符串135的结尾之后的第一字符。
在一些实施例中,计算设备110被配置有在第一字符串134与第二字符串135之间的最大编辑距离。在一些实施例中,所述编辑距离包括Levenshtein距离,其被定义为其中支持的差异操作是不匹配操作、删除操作和插入操作的编辑距离,并且每个差异操作的成本是一,例如,编辑距离可以是将第一字符串134转换为第二字符串135所需的不匹配操作、删除操作和插入操作的最小数量。Levenshtein距离由于其(例如,在遗传学中)广泛用途而引起特别关注。然而,其他编辑距离也是可能的,例如,插入操作可以具有权重二,删除操作可以具有权重三,并且不匹配可以具有权重四。例如,允许的编辑操作集合也能够仅包括不匹配操作,并且这些操作的成本为一,例如,编辑距离可以包括Hamming距离或信号距离,如在电信领域中所使用的那样。或者,允许的编辑操作集合可以仅包括转置操作,并且这些操作的成本可以是一,例如,编辑距离可以是Jaro距离或Jaro-Winkler距离,如在记录链接领域中所使用的那样。针对每种类型的编辑操作的成本通常是预先确定的。
为了提高编辑脚本核实的数据遗忘性,编辑脚本131包括的编辑操作的数量可以是第一字符串的长度、第二字符串的长度以及最大编辑距离的函数。特别地,该数量可以独立于第一字符串134和第二字符串135以及编辑脚本131中的特定编辑操作的特定内容。优选地,所述数量应当使得针对具有给定长度(编辑距离最多为给定最大值)的所有第一字符串134和第二字符串135,存在具有最多为该数量的长度的编辑脚本131。例如,编辑距离可以是Levenshtein距离,并且编辑脚本131的长度可以等于第二字符串135的长度加上最大编辑距离。为了确保存在具有恰好该长度的编辑脚本131,允许的编辑操作集合包括哑操作是有益的。例如,经由具有等于第二字符串的长度加上最大编辑距离的长度的编辑操作集合[匹配,匹配,不匹配,哑操作,哑操作],可以利用最多为二的Levenshtein距离将第一字符串“AAA”转换为第二字符串“AAB”。
在一些实施例中,验证单元142核实在第一字符串134与第二字符串135之间的编辑距离没有超过最大编辑距离。例如,验证单元142可以保持到目前为止遇到的错误的运行总计数nerrors,并且针对被核实的每个编辑操作来更新该值。例如,所述编辑距离可以是Levenshtein距离,并且验证单元142可以将针对nerrors的新值设置为nerrors+ismismatch+isinsertion+isdeletion,其中,nerrors是先前的运行总计数,并且ismismatch、isinsertion和isdeletion指示当前编辑操作是否分别为不匹配操作、插入操作或删除操作。一旦运行总计数超过最大编辑距离,验证单元142就可以终止或设置错误标志;例如,一旦运行总计数等于最大编辑距离加一时,其就可以终止或设置错误标志。
在一些实施例中,第一字符串134可以是较大字符串136的子字符串。例如,这可以允许在第一字符串134表示在较大字符串136中的搜索结果的设置中进行核实。在这样的情况下,第一字符串134中的当前位置132可以被表达为较大字符串136中的当前位置。例如,第一字符串134可以在较大字符串136中的位置11处开始,并且第一字符串134中的第二字符的位置可以被表达为较大字符串136中的位置12。在这种情况下,成功核实编辑脚本131用于将第一字符串134转换为第二字符串135指示第二字符串135出现在具有特定最大编辑距离的较大字符串136中。
在另外的应用中,较大字符串136继而可以是甚至更大的字符串的子字符串,例如,捕获人类的整个基因组的DNA序列。在一些实施例中,所述验证计算还包括:核实较大字符串136作为数据块出现在表示甚至更大的字符串的Merkle散列树137中。尤其是在考虑到验证计算可能按较大字符串的大小进行缩放(尤其是在数据遗忘性设置中),甚至更大的字符串特别大时,这可能是有益的。作为示例,Merkle散列树137可以是二叉树,其中叶节点是数据块,并且每个内部节点是其两个子节点的级联的密码散列。核实较大字符串136作为数据块出现在Merkle散列树137中可以包括获得Merkle散列树137的根的表示以及在Merkle散列树137中从数据块到根的路径上的所有兄妹的表示,重新计算路径上的所有内部节点,最后重新计算根,并且验证结果等于所获得的根。Merkle散列树137不必是二叉树,例如,每个内部节点可以对应于任意数量的子节点的散列,可能包括额外信息。
图3示意性示出了匹配字符的方法的实施例的示例。为了确定第一字符串中的当前位置132处的字符151(C),字符匹配单元145计算在第一字符串134的一个或多个字符
Figure BDA0002388592060000191
(例如,字符134.1、134.2)与第一二进制向量150
Figure BDA0002388592060000192
之间的内积
Figure BDA0002388592060000193
Figure BDA0002388592060000194
所述第一二进制向量指示所述一个或多个字符中的哪个字符是第一字符串中的当前位置132处的字符,例如,如果ci是当前字符,则δi为1,否则为0。所述第一二进制向量通常包括至多一个1。由于除了第一字符串中的当前位置132处的字符之外,内积计算还可以访问其他字符,因此使用内积可以减少存储器访问模式对特定当前位置132的依赖,由此提高了数据遗忘性。所述内积可以是在第一字符串134的所有字符与对应的大二进制向量150的位(例如,位150.1、150.2)之间的内积,但是这不是必须的情况。例如,所述内积可以是在第一字符串134的字符的子集与对应的大二进制向量150的位(例如,位150.1、150.2)之间的内积。可以从到目前为止已核实的编辑操作的数量和/或最大编辑距离来确定字符的子集。例如,如果已经核实了两个编辑操作,则这可以暗示当前字符(C)是第一字符串的前三个字符之一,因此,可以计算仅涉及第一字符串的前三个字符的内积(C=δ1c12c23c3)。类似地,如果已知在第一字符串与第二字符串之间的编辑距离最多为二,并且已经核实了三个编辑操作,则可以知道当前字符必须是第三字符或第四字符,因此,可以计算仅涉及第一字符串的第三字符和第四字符的内积(C=δ3c34c4)。
如果第一字符串134(c1,…,cn)是较大字符串136
Figure BDA0002388592060000195
的子字符串,并且第一字符串中的当前位置132(i)被表示为较大字符串136(ld+i)中的当前位置,则字符匹配单元145可以通过以下操作来确定第一字符串中的当前位置132处的字符151:计算在较大字符串136的零个或多个字符
Figure BDA0002388592060000196
与指示所述一个或多个字符中的哪个字符是当前位置132处的字符的前缀二进制向量
Figure BDA0002388592060000201
之间的内积
Figure BDA0002388592060000202
计算在第一字符串134的一个或多个字符
Figure BDA0002388592060000203
(例如,字符134.1、134.2)与指示所述一个或多个字符中的哪个字符是当前位置处的字符的第一二进制向量150
Figure BDA0002388592060000204
之间的内积
Figure BDA0002388592060000205
如上所述;计算在较大字符串136的零个或多个字符
Figure BDA0002388592060000206
与指示一个或多个字符中的哪个字符是当前位置132处的字符的后缀二进制向量
Figure BDA0002388592060000207
之间的内积
Figure BDA0002388592060000208
Figure BDA0002388592060000209
并且将三个内积相加
Figure BDA00023885920600002010
例如,字符匹配单元145可以计算在例如包括第一字符串134的较大字符串
Figure BDA00023885920600002011
的一个或多个字符与指示一个或多个字符中的哪个字符是当前位置132处的字符二进制向量
Figure BDA00023885920600002012
之间的内积
Figure BDA00023885920600002013
通过包括来自较大字符串136的字符,通过使存储器访问模式更少地依赖于较大字符串136中第一字符串134的位置(ld),来进一步改善数据遗忘性。
为了确定第二字符串135中的当前位置133处的字符161,字符匹配单元145计算在第二字符串135的一个或多个字符
Figure BDA00023885920600002014
(例如,字符135.1、135.2)与第二二进制向量160
Figure BDA00023885920600002015
之间的内积
Figure BDA00023885920600002016
Figure BDA00023885920600002017
第二二进制向量160指示一个或多个字符中的哪个字符是第二字符串中的当前位置133处的字符,例如,如果ci是当前字符,则δi为1,否则为0。关于用于计算字符151的内积,例如,如果已知当前字符必须在该子集中,则该内积可以是在第二字符串135的所有字符或其子集之间的内积,例如,由于目前为止已处理的操作数量,由于编辑距离的界限,或者出于任何其他原因或超集。由于内积计算除了可以访问第二字符串中的当前位置133处的字符之外还可以访问其他字符,使用内积可以减少存储器访问模式对特定当前位置133的依赖性,由此提高数据遗忘性。
各种选项能用于计算二进制向量150和160。例如,如果字符单元145分别对应于第一字符串中的当前位置132或第二字符串中的当前位置133,则字符单元145可以通过将每个二进制向量的每个元素设置为1来个体地明文计算每个元素。在一些实施例中,计算设备110将验证计算作为多方计算来执行,在这种情况下,例如,使用下文详述的秘密索引的已知技术可以被用于计算二进制向量150和/或160。在一些实施例中,计算设备110将验证计算作为可核实计算来执行,在这种情况下,可以使用诸如以下详述的零等式门之类的已知技术来计算二进制向量150和/或160的元素。
如上所述,对于字符匹配单元145,在其各自的当前位置132、133是界外的情况下,例如,如果其指向直接在第一字符串134之后的字符、在第一字符串134是子字符串的较大字符串136之后或者在第二字符串135之后的字符,则将第一字符串的当前位置的字符151和/或第二字符串的当前位置的字符161设置为特殊值会是有益的。字符匹配单元145可以通过以下操作来确定第一字符串中的当前位置132处的字符151:计算在第一字符串134的一个或多个字符与指示所述一个或多个字符中的哪个字符是在当前位置处的字符的二进制向量150之间的内积,如上文所讨论的,加上乘以指示第一字符串中的当前位置132是否在界外的位的特殊值,例如当前位置132是指向直接在第一字符串133之后的字符还是第一字符串133是其子字符串的较大字符串136的字符。例如,字符匹配单元145通过以下操作来确定字符151:计算在第一字符串134的一个或多个字符与指示所述一个或多个字符中的哪个字符是当前位置132处的字符的二进制向量150之间的内积,并且将该结果加上特殊值乘以指示第一字符串134中的当前位置132是否在界外的位,例如,当前位置132是指向直接在第一字符串134之后的字符还是第一字符串134是其子字符串的较大字符串136的字符。
类似地,字符匹配单元145可以通过以下操作来确定第二字符串中的当前位置处的字符161:计算在第二字符串135的一个或多个字符(例如,字符135.1、135.2)和指示所述一个或多个字符中的哪个字符是当前位置133处的字符的二进制向量160之间的内积,如上所述,加上特殊值乘以指示第二字符串中的当前位置133是否在界外的位,例如,其是否指向直接在第二字符串135之后的字符。例如,字符匹配单元145通过以下操作来计算第二字符串中的当前位置的字符161:计算在第二字符串135的一个或多个字符与指示所述一个或多个字符中的哪个字符是当前位置133处的字符的二进制向量160之间的内积,并且将该结果加上特殊值乘以指示第二字符串中的当前位置133是否在界外的位,例如,其是否指向直接在第二字符串135之后的字符。
尽管图3中的字符匹配单元145将第一字符串中的当前位置处的字符x151和第二字符串中的当前位置处的字符w 161两者确定为内积,但是在其他实施例中,x和/或w可以使用备选方法来计算,例如,简单地通过在存储器中存储相关字符的位置处执行直接存储器访问来计算。
多个计算设备可以一起形成用于核实编辑脚本将第一字符串转换为第二字符串的多方计算系统的实施例。图4a-图4c示意性示出了多方计算系统400的实施例的各种示例。
多方计算系统400的各种计算设备(例如,计算设备110、111)可以通过计算机网络121彼此通信。所述计算机网络可以是互联网、内联网、LAN、WLAN等。所述计算机网络可以是互联网。所述计算机网络可以是全部或部分有线的,和/或全部或部分无线的。例如,所述计算机网络可以包括以太网连接。例如,所述计算机网络可以包括无线连接,诸如Wi-Fi、ZigBee等。计算设备110可以包括例如如在图1a中的通信接口120,其被布置为根据需要与系统400的其他设备进行通信。例如,所述通信接口可以包括连接器,例如,有线连接器(例如,以太网连接器),或者无线连接器(例如天线,如Wi-Fi、4G或5G天线)。所述计算机网络可以包括已知元件,诸如,例如路由器、集线器等。通信可以采用数字消息的形式,例如以电子形式来发送和接收。尽管未在图4a-图4c中示出,但是除了计算设备110、111之外,多方计算系统400可以被配置有额外的计算设备。
多方计算系统400的多个计算设备(例如,计算设备110、111)可以被配置为执行MPC或多方计算、协议。例如,所述多个设备中的每个设备可以具有私有数据,多个计算设备可以对该私有数据共同执行计算。例如,所述设备可以被配置为发送和接收值的秘密共享,并且对秘密共享执行计算。特别地,可以将所述验证计算作为在计算设备110与一个或多个其他计算设备(例如,计算设备111)之间的多方计算来执行。有利地,这可以允许在多个互不信任方的多个计算设备之间进行核实,其无需共享其敏感输入,例如,第一字符串或第二字符串。
在一些实施例中,用于执行MPC的已知技术被用于基于秘密共享来执行验证计算,并且第一字符串的一个或多个字符的表示、第二字符串的一个或多个字符的表示、第一字符串中的当前位置的表示、第二字符串中的当前位置的表示以及编辑脚本的表示中的至少一个是在计算设备与一个或多个其他计算设备之间的秘密共享的秘密共享。例如,所述设备可以被配置为基于SPDZ协议(“Multiparty Computation from Somewhat HomomorphicEncryption”,I.Damgard和V.Pastro以及NP Smart和S.Zakarias,CRYPTO 2012的会议记录,通过引用并入本文),或者基于Shamir秘密共享,例如,使用埃因霍温科技大学的S.deHoogh博士论文“Design of large scale applications of secure multipartycomputation:secure linear programming”中的构建块,通过引用包含于本文中,或者其他已知的技术。备选地,可以使用其他MPC技术,例如基于加密布尔电路或加性同态加密。通常,当使用MPC执行计算时,如果计算是数据遗忘性的,则是有利的,因为这允许在保持敏感数据私有(例如,以秘密共享的形式)的同时进行计算。因此,利用MPC执行验证计算是特别有利的。
特别地,在图4b中示意性示出了多方计算系统400的实施例中,第一字符串134是对计算设备110的多方计算的私有输入,而第二字符串135是对计算设备111的多方计算的私有输入。例如,计算设备110可以被配置为将第一字符串134的字符中的一个或多个字符的秘密共享提供给MPC中所涉及的其他计算设备(包括计算设备111),并且从计算设备111接收第二字符串135的字符中的一个或多个字符的秘密共享。备选地,第二字符串135可以是对计算设备110的多方计算的私有输入,而第一字符串134可以是对计算设备111的多方计算的私有输入。例如,计算设备110可以被配置为将第二字符串135的字符中的一个或多个字符的秘密共享提供给MPC中所涉及的其他计算设备(包括计算设备111),并且从计算设备111接收第一字符串134的字符中的一个或多个字符的秘密共享。在一些实施例中,计算设备110、110还被配置为通过以下操作来生成编辑脚本:从第一字符串和第二字符串中识别出可允许的编辑操作,并且将所述识别出的可允许的编辑操作添加到编辑脚本,如果向编辑脚本添加了不匹配操作或插入操作,则将哑操作添加到编辑脚本,如下所述。这可以具有如下优点:各方能够共同确立存在编辑脚本用于将第一字符串转换为第二字符串,例如满足特定所需的属性,而任何一方都不需要访问另一方的输入。
在图4c中示意性示出的多方计算系统400的实施例中,第二字符串135可以是对计算设备110或MPC中所涉及的任何其他计算设备的多方计算的私有输入,并且第一字符串134可以是多方计算的公共输入。例如,计算设备110被配置为发送或接收第二字符串135的字符中的一个或多个字符的秘密共享,而计算设备均具有第一字符串134的字符中的一个或多个字符的明文表示。在一些实施例中,所述编辑脚本也是对计算设备110的多方计算的私有输入。这具有的优点是:所述计算设备获得保证由计算设备所保存的编辑脚本确实用于将第一字符串134转换为第二字符串135,而计算设备110无需共享关于编辑脚本的细节。在其他实施例中,所述编辑脚本由计算设备生成或者由另一计算设备输入。
除了在图4b或图4c中分布输入数据的特定方式之外,对于本领域技术人员而言,各种其他配置将是显而易见的;例如,第一字符串的字符中的一些字符可以是计算设备110的私有输入,而第一字符串的其他字符可以是计算设备111的私有输入;并且类似地,不同的计算设备可以提供第二字符串的不同部分作为私有输入。在一些实施例中,第一字符串或第二字符串的字符中的一些或全部字符不是由任何特定计算设备直接输入的,而是其自身是先前多方计算的结果。
通常,在多方计算系统140中执行编辑脚本核实可以允许计算设备110核实编辑脚本用于将第一字符串转换为第二字符串,而不必需要对整个第一字符串、第二字符串和编辑脚本进行明文访问,由此在需要这样的编辑脚本核实的系统中提供隐私优点。
替代通过数字网络121进行通信,存在其他方式来构成多方计算系统。例如,图4d示意性示出了多方计算系统401的实施例的示例。在系统401中,多个计算设备或单元110、111被包括在单个较大的设备401中。例如,这些可以是应用和/或彼此互不信任的硬件元件。在系统401的情况下,所述通信接口可以是设备内通信接口、功能调用、API、总线等。
图5a-图5c示意性示出了可核实计算系统500的实施例的各种示例,可核实计算系统500用于核实编辑脚本用于将第一字符串转换为第二字符串,包括计算设备110和核实设备510。核实设备510可以包括存储器530和处理器540。存储器530可以被用于数据和/或指令存储。例如,存储器530可以包括处理器540被配置为对其起作用的软件和/或日期。处理器540可以被实施为一个或多个处理器电路,例如,微处理器、ASIC、FPGA等。存储器530可以包括能由处理器540执行的计算机程序指令。根据核实设备的实施例,处理器540可能与存储器530一起进行配置。在图5a-图5c中的任一幅图中,计算设备110、核实设备510以及任选地数据提供设备511可以通过计算机网络521彼此通信。通信网络521可以类似于上述通信网络121来配置。计算设备110和核实设备510的通信接口140、540可以类似于图1b中的通信接口来进行配置。在图5c中示意性示出的实施例中,可核实计算系统102另外地包括数据提供设备511,我们将在下文更详细地讨论。
在一些实施例中,例如,如以上在图5a-图5c中,在计算设备110上执行的验证计算被作为可核实计算来执行,生成验证计算被成功地执行的密码可核实计算证明522。计算设备110还被配置为向核实设备510提供密码证明522。用于执行可核实计算的各种技术是从文献中已知的,例如,Pinocchio系统(B.Parno、J.Howell、C.Gentry和M.Raykova的“Pinochio:Nearly Practical Verifiable Computation”,IEEE安全与隐私2013会议记录,通过引用包含于此)或者Buffet系统(R.Wahby、S.Setty、Z.Ren、A.Blumberg、M.Walfish的“Efficient RAM and control flow in verifiable outsourced computation”),2015年网络和分布式系统安全研讨会的会议记录,通过引用包含于此)。在一些实施例中,生成密码证明522的可核实计算自身以分布式方式来执行,例如,使用从诸如Trinocchio系统之类的文献(B.Schoenmakers、M.Veeningen和N.de Vreede的“Trinocchio:Privacy-Preserving Outsourcing by Distributed Verifiable Computation”,应用密码学和网络安全,ACNS 2016,通过引用包含于此)中已知的技术作为多方计算。使用如Pinocchio、Buffer或Trinocchio之类的系统,数据遗忘性是有利的,因为其允许具有不同输入的计算使用相同的密钥材料和/或证明生成流程和/或证明核实流程,并且允许针对不同输入的证明看起来相似,例如基于上文所引用的系统的零知识变型。因此,根据上文概述的作为可核实计算的实施例中的一些实施例的验证计算是特别有利的。
执行验证计算的密码可核实计算证明522可以关于明文输入和输出。该设置中的明文输入和输出可以包括第一字符串134的一个或多个字符和/或第二字符串135的一个或多个字符和/或编辑脚本131的一个或多个字符。第一字符串也可以是在Merkle散列树中作为数据块出现的较大字符串的子字符串,在这种情况下,明文输入和输出可以包括Merkle散列树的根。注意,第一字符串、第二字符串和编辑脚本不一定是对可核实计算证明的输入或输出,例如,如果所述证明包括额外计算并且发生编辑脚本核实,则获取其输入和/或将其输出提供给这样的额外计算。
除了例如在Pinocchio系统中的明文输入和输出,可核实的计算证明522也可以关于其他输入/输出表示。从文献中已知各种表示输入和/或输出到可核实的计算证明的方式,例如,作为认证数据(“ADSNARK:Nearly Practical and Privacy-Preserving Proofson Authenticated Data”,M.Backes、M.Barbosa、D.Fiore和R.Reiscuk,2015年IEEE安全性和隐私研讨会的会议记录,通过引用包含于此),作为散列(“Hash First,Argue Later:Adaptive Verifiable Computations on Outsourced Data”,D.Fiore、C.Fournet、E.Ghosh、M.Kohlweiss、O.Ohrimenko、B.Parno,2016年ACM SIGSAC计算机和通信安全会议的会议记录,通过引用包含于此),或者作为承诺(“Pinocchio-Based Adaptive zk-SNARKsand Secure/Correct Adaptive Function Evaluation”,M.Veeningen,密码学进展-AFRICACRYPT 2017,通过引用包含于此)。对所述可核实计算证明的任何输入或输出(例如,第一字符串的字符、第二字符串的字符、第一字符串为其子字符串的较大字符串、Markle散列树的根(其中较大字符串作为数据块出现))可以使用这样的表示,例如,其中的任何一个都可以被表示为认证数据、散列、承诺,或者使用任何其他表示。例如,可核实计算证明522可以相对于第一字符串的一个或多个字符的表示,作为承诺、散列或认证数据,并且相对于第二字符串的一个或多个字符的表示,作为明文输入。或者,第一字符串可以是较大字符串的子字符串,较大字符串在Merkle散列树中作为数据块出现,并且可核实计算证明522可以相对于该散列树的根的明文表示,以及第二字符串的字符的承诺表示。
生成密码可核实计算证明522可以使用取决于所执行的验证计算的特定特性的评估密钥。例如,所述评估密钥可以取决于第一字符串的长度和/或第二字符串的长度和/或在第一字符串与第二字符串之间的最大编辑距离。例如,其还可以取决于将哪些表示用于对可核实计算的输入和输出。所述评估密钥可以由核实设备510或者由任何其他设备来生成或提供。其也可以被硬编码到计算设备510中,例如作为系统参数。
在图5a-图5c中示意性示出的核实设备510被配置为从计算设备110接收密码可核实计算证明522并且核实所述证明。从文献中已知用于核实证明522的各种技术,例如,使用前文提到的Pinocchio或Buffet系统。核实证明522可以使用验证密钥,所述验证密钥如评估密钥一样,取决于所执行的验证计算的特定特性,例如,第一字符串和/或第二字符串的长度和/或最大编辑距离。所述评估密钥可以由核实设备510自身生成、由另一设备提供、或者被硬编码到设备510自身中。从计算设备110接收到的密码可核实计算证明522是成功执行验证计算的证明针对编辑脚本中的每个编辑操作,所述验证计算包括:
-如果编辑操作是匹配操作,则确定第一字符串中的当前位置处的字符和第二字符串中的当前位置处的字符,核实其是否匹配,将第一字符串中的当前位置递增一并且将第二字符串中的当前位置递增一,
-如果编辑操作是差异操作,则将第一字符串中的当前位置和/或第二字符串中的当前位置递增一。
结果,核实所述证明可以包括核实编辑脚本是否用于将第一字符串转换为第二字符串。
核实设备510可以使用从上文所指出的文献中已知的技术,相对于各种类型的表示(例如,明文、经认证的数据、散列或承诺)来核实可核实计算证明522。可以以不同的方式来表示不同的输入,例如,第一字符串的字符、第二字符串的字符、编辑脚本、Merkle散列树的根、或者任何其他输入或输出。例如,核实设备510可以相对于第一字符串的字符的承诺表示和第二字符串的字符的明文表示来核实可核实计算证明522。
特别地,可核实计算证明522可以是关于由数据提供设备对第一字符串的、第一字符串为其子字符串的较大字符串的、或者具有作为数据块的较大字符串的Merkle散列数的根的输入表示523。所述输入表示可以是明文输入表示,例如,Merkle散列树的根的明文表示,或者是另一类型的表示,例如第一字符串或较大字符串的散列、承诺或经认证的数据表示。不同的输入表示523可以被用于核实每个计算证明522,或者多个证明522可以关于相同的输入表示523。在图5b中示意性示出的一些实施例中,核实设备510还被配置为:接收输入表示523,并且核实其已经被数据提供设备认证。例如,核实设备510可以相对于所述数据提供设备的公钥来核实输入表示上的数字签名的正确性。核实设备510可以从计算设备110或者从任何其他源(例如,网站)接收输入表示523。在图5c中示意性示出的一些实施例中,核实设备510还被配置为从数据提供设备511接收输入表示523。
返回到图2和图3。下文的细节给出了根据图2和/或图3中示意性示出的一些实施例的执行验证计算的算法VerifyEditScript(算法1)。括号之间的变量表示非公共值,其中相对于这些值,所述算法提高了数据遗忘性。
Figure BDA0002388592060000281
Figure BDA0002388592060000291
可以以隐私保护的方式来执行算法1,例如,使用用于多方计算的任何框架(例如,VIFF)作为多方计算,能例如在http://viff.dk或http://www.win.tue.nl/~berry/TUeVIFF/获得。在这种情况下,可以通过VIFF中可用的公共零测试来执行断言,并且如在例如来自Eindhoven科技大学的S.de Hoogh博士论文“Design of large scaleapplications of secure multiparty computation:secure linear programming”中所描述地进行秘密索引[c]←[A][b]。特别地,可以通过计算在[A]和指示[A]的哪些字符是在位置[b]处的字符的二进制向量之间的内积来计算[c]。
备选地,算法1可以作为可核实计算来执行,例如使用来自以下文献的基于VIFF的框架:“Pinocchio-Based Adaptive zk-SNARKs and Secure/Correct Adaptive FunctionEvaluation”,M.Veeningen,密码学进展-AFRICACRYPT 2017,通过引用包含于此。在这种情况下,可以以隐私保护的方式,例如以使用多方计算的分布式方式,或者不是以这种方式,来执行可核实计算证明522的产生,例如执行可核实计算以生成密码可核实计算证明。注意,“Pinocchio-Based Adaptive zk-SNARKs and Secure/Correct Adaptive FunctionEvaluatioin”详述了用于算术计算的遗忘构造和运算符[b]←[a]≠0,也称为零等式门。基于此,可以如下实施算法1中所使用的操作:
-[a]←([b]=c)可以被计算为[a]←1-([b-c]≠0)
-assert([a]≠b)可以通过计算[x]←[(a-b)≠0]、打开x并且检查其为零来进行
-assert([a]=0)可以通过打开a并且检查其为零来进行
-计算[c]←[A][b]可以通过将[b]转换为单位,例如二进制向量([b1],…,[blen([A])])来进行,其中1在位置[b]处,通过针对所有i检查[bi]等于([b]=i)来提供其正确性,并且计算在[A]的字符[A1],[A2],…与指示字符[A1],[A2],…中的哪个字符是位置[b]处的字符的二进制向量([b1],…,[blen([A])])之间的内积[c]←[b1]·[A1]+[b2]·[A2]。
算法1遍历编辑脚本131的元素[Si]131.1、131.2,保持跟踪第一字符串134中的当前位置[xpos]132(被表示为较大字符串136中的当前位置)和第二字符串135中的[wpos]133。检查错误的数量不超过边界z是有利的;这是通过在循环内部检查到目前为止遇到的错误数量[nerrors]不等于z+1(行10)来完成的。备选地,能够最后核实[nerrors≤z]。检查较大字符串X 136和第二字符串W135中的当前位置不超过其界限也是有利的。然而,例如,在需要在该位置进行读取的编辑脚本131中没有发生匹配或不匹配的情况下,当前位置132、133可以被允许为长度加一。因此,算法1检查当前位置132、133是否未达到长度加二(行11和12)。
然后,算法1在给定位置处计算字符[x]151和[w]161。特别地,可以通过计算在第一字符串134的一个或多个字符(例如,字符134.1、134.2)与指示所述一个或多个字符(例如,字符134.1、134.2)中的哪个字符是当前位置处的字符的第一二进制向量150之间的内积来计算第一字符串134中当前位置[xpos]132处的字符[x]151,其中,该内积与例如当算法1作为多方计算或作为可核实计算执行时的内积相组合。在算法1中,该内积可以作为在二进制向量和附有零的较大字符串[X]136之间的较大内积的一部分进行计算,例如,以允许第一字符串中的当前位置132被表示为较大字符串[X]136中的当前位置,和/或当如上所述当前位置[xpos]132在界外时也允许行13中的操作继续。类似地,可以通过计算在第二字符串135的一个或多个字符[W](例如,字符135.1、135.2)和指示所述一个或多个字符(例如,字符135.1、135.2)中的哪个字符是当前位置的字符的第二二进制向量160之间的内积来计算第二字符串135中当前位置[wpos]133处的字符[w]。在算法1中,该内积可以作为在二进制向量和附有零的第二字符串[W]135之间较大的内积的一部分来计算,以在如上所述当前位置[wpos]133在界外时也允许行14中的操作继续。
然后,算法1检查编辑脚本131中是否存在错误,如果假设存在匹配,而[x]151和[w]161不匹配或者在字符串134、136外部,或者如果假设存在不匹配,而[x]151或[w]161在字符串134、136外部(行16),则是这种情况。最后,算法1检查编辑脚本131是否已到达第二字符串135的末尾(行19)。组合的这些检查可以指示编辑脚本131的有效性,例如,第二字符串135确实出现在较大字符串136中的给定位置,其中第一字符串134是较大字符串136中具有最多z的编辑距离的子字符串。
返回到图2。在一些实施例中,计算设备110还被配置为通过以下操作来生成编辑脚本131:从第一字符串134和第二字符串135中识别出可允许的编辑操作,并且将所述识别出的可允许的编辑操作添加到编辑脚本131,在不匹配操作或插入操作被添加到编辑脚本131的情况下,将哑操作添加到编辑脚本131。例如,计算设备110可以被配置有最大编辑距离,所述编辑距离包括Levenshtein距离,并且允许的编辑操作集合包括匹配操作、不匹配操作、插入操作、删除操作和哑操作。然后,在生成之后,编辑脚本131所包括的编辑操作的数量可以等于第二字符串的长度加上最大编辑距离。在生成编辑脚本131时,计算设备110可以识别出匹配操作是可允许的编辑操作,并且将该操作添加到编辑脚本中。这将编辑脚本131的长度增加一,将第二字符串135的字符的数量消耗一,并且将错误的数量消耗零。类似地,计算设备110可以识别出删除操作是可允许的并且将其添加到编辑脚本131。这将编辑脚本131的长度增加一,将第二字符串135的字符的数量消耗零,并且将错误的数量消耗一。
计算设备110还可以识别出不匹配操作是可允许的,并且将其添加到编辑脚本131中。这将第二字符串135的字符的数量消耗一,而错误的数量消耗一。在这样的情况下,可能有利的是,如果添加了不匹配操作,则可以以更数据遗忘的方式使具有所需长度的编辑脚本131添加哑操作,使得编辑脚本131的长度增加与所消耗的字符和错误的增加相同的量,例如二。计算设备110还可以识别插入操作是允许的,并且将其添加到编辑脚本131。这使第二字符串135的字符的数量被消耗一,而错误的数量被消耗一。因此,可能有利的是,如果添加了插入操作,则使具有适当长度的编辑脚本131添加哑操作,从而可以使编辑脚本131的长度增加与消耗的字符和错误增加相同的量,例如二。
生成的编辑脚本131不必包括不匹配、插入和删除操作,或者编辑距离不必包括Levenshtein距离。例如,编辑脚本131可以仅包括匹配、不匹配和哑操作,或者其可以包括诸如交换操作的额外操作。在任何情况下,计算设备110优选地被配置为使得编辑脚本131中的期望操作数量足以在最大编辑距离内将任何适当的第一字符串134转换为任何适当的第二字符串135。此外,优选地,取决于编辑操作的类型,以在所有识别出的可允许的编辑操作已经被添加到编辑脚本131之后获得在编辑脚本131中操作的正确数量的方式,对于每个添加的编辑操作,将多个哑操作添加到编辑脚本131。
无论如何将编辑脚本131核实为例如多方计算或可核实的计算,都可以以各种方式来执行生成编辑脚本131。例如,可以以隐私保护的方式,例如,使用多方计算,以明文方式或者以分布式方式利用其他计算设备(例如,计算设备111)来执行生成编辑脚本131。在一些实施例中,算法2被用于生成用于将第一字符串134转换为第二字符串135的编辑脚本131,其中,该算法在较大字符串136中搜索第一字符串134。算法2从数据遗忘性的角度提供了优势,例如,通过添加哑操作,这可以帮助确保所生成的编辑脚本131具有的长度是第一字符串134的长度、第二字符串135的长度亦即最大编辑距离的函数。
Figure BDA0002388592060000321
Figure BDA0002388592060000331
Figure BDA0002388592060000341
可以以隐私保护的方式使用用于多方计算的任何框架(例如,VIFF)来执行算法2,所述框架可以在http://viff.dk或http://www.win.tue.nl/~berry/TUeVIFF/可获得。备选地,算法2可以以非隐私保护的方式来实施,以获得用于不精确搜索的算法,所述算法返回包括哑操作的编辑脚本131,以及返回搜索结果。在这种情况下,可以在适当时通过针对匹配或不匹配而调用InexRecur来替换行22中的条件组合。
以上描述没有详细说明在较大字符串136中如何发生实际搜索(行11和行3)。若干种可能性将是显而易见的,例如,使用线性搜索或者利用Burrows-Wheeler矩阵,如在H.Li和R.Durbin的“Fast and accurate short read alignment with Burrows-Wheelertransform”,Bioinformatics,25(14):1754-1760,2009中详述的。算法2特定于包括字符A、C、G和T的字符串,例如,特定于DNA或其他核酸序列。然而,对于本领域技术人员而言,将算法概括为较大的字母以及在搜索其他搜索算法时如何应用计算编辑脚本131的原理将是显而易见的。聚焦于如何计算编辑脚本131,通过其初始化(行4和行6)并且经由递归调用插入(行9)、删除(行14)、匹配(行16)和不匹配(行19)来确保编辑脚本131具有长度len([W])+z。注意,如果将不匹配或插入操作添加至编辑脚本131,则算法向编辑脚本131添加哑操作,但是对于删除操作和不匹配操作则不添加。使用Combine函数来组合多个递归调用的结果,给定两个返回值,如果第一返回值表示匹配,则采用第一返回值,否则采用第二返回值,由此提高了数据遗忘性。对于匹配操作和不匹配操作,通过评估匹配和不匹配分支两者并且将其与CCombine遗忘地组合,提高了数据遗忘性,所述CCombine根据test[w]=b来选择匹配或不匹配的结果,这可能是遗忘性的。
在基于算法2的变型的实施例中,可以使用基于保持X私有的多方计算的搜索算法来生成编辑脚本131。在这样的实施例中,可以基于私有X以隐私保护的方式来评估行11和行3。例如,实施例可以总是评估行12中的“if”分支,然后取决于在[X]中出现的b||R的遗忘条件而忽略其结果。对于本领域技术人员将显而易见的是,能够如何使用已知技术来相应地修改算法2。
图6示意性示出了计算方法600的实施例的示例。计算方法600被布置为用于核实编辑脚本用于将第一字符串转换为第二字符串,所述编辑脚本包括一个或多个编辑操作,所述编辑操作是从允许的编辑操作集合中选择出的,所述允许的编辑操作集合包括匹配操作和差异操作。计算方法600包括:
-存储601第一字符串的一个或多个字符的表示、第二字符串的一个或多个字符的表示、第一字符串中的当前位置的表示以及第二字符串中的当前位置的表示,
-获得602编辑脚本的表示,将所述表示存储603在存储器中,并且随后执行验证计算604,只要不是所有编辑操作都已经被处理631,验证计算604就包括:
-如果编辑操作是匹配操作610,则确定612第一字符串中的当前位置处的字符和第二字符串中的当前位置处的字符,核实613其匹配,并且将第一字符串中的当前位置和第二字符串中的当前位置递增614一。
-如果编辑操作是差异操作620,则将第一字符串中的当前位置和/或第二字符串中的当前位置递增622一。
在一些实施例中,不仅可以在编辑操作是匹配操作610的情况下,而且可以针对其他编辑操作,来执行字符匹配步骤612、613、614。在这样的情况下,计算方法600可以涉及将检查610的结果与步骤612、613、614的结果进行组合,使得可以执行步骤612、613、614,但是对于不匹配操作,可以有效地忽略其的结果。类似地,不仅可以在编辑操作是差异操作620的情况下执行递增步骤622,而且可以在不是差异操作的情况下执行递增步骤622,并且可以组合检查步骤620和递增步骤622的结果,使得即使步骤622被执行,针对非差异操作其结果可能会被忽略。这可以通过减少针对不同编辑操作的存储器访问模式的变化,而改善方法的数据遗忘性。
如本领域技术人员将显而易见的,执行该方法的许多不同方式是可能的。例如,步骤的次序能够改变,或者一些步骤可以并行执行。此外,在步骤之间可以插入其他方法步骤。插入的步骤可以表示例如在本文中所描述的方法的改进,或者可以与该方法无关。例如,核实613和递增614可以至少部分地并行执行。此外,给定步骤在开始下一步骤之前可能尚未完全完成。
所述方法的实施例可以使用软件来执行,所述软件包括用于使处理器系统执行方法600的指令。软件可以仅包括由系统的特定子实体所采取的那些步骤。软件可以被存储在合适的存储介质中,诸如硬盘、软盘、存储器、光盘等。软件可以作为信号沿着线或无线或使用数据网络(例如,互联网)来发送。软件可用于服务器上的下载和/或远程使用。可以使用被布置为配置可编程逻辑(例如,现场可编程门阵列(FPGA))的比特流来执行该方法的实施例,以执行该方法。
将意识到,本发明还扩展到适于将本发明付诸实践的计算机程序、特别是载体上或载体中的计算机程序。所述程序可以是源代码、目标代码、代码中间源和目标代码的形式,诸如部分编译的形式,或者是适合于在实现该方法的实施例时使用的任何其他形式。与计算机程序产品相关的实施例包括与所阐述的方法中的至少一种方法的每个处理步骤相对应的计算机可执行指令。这些指令可以被细分为子例程和/或存储于可以静态或动态地链接的一个或多个文件中。与计算机程序产品相关的另一实施例包括与所阐述的至少一种系统和/或产品的每个单元相对应的计算机可执行指令。
图7a示出了具有包括计算机程序1020的可写部分1010的计算机可读介质1000,计算机程序1020包括用于使处理器系统执行根据实施例的计算方法的指令。计算机程序1020可以作为物理标记或借助于对计算机可读介质1000的磁化而体现在计算机可读介质1000上。然而,任何其他合适的实施例也是可以想到的。此外,将意识到,尽管计算机可读介质1000在此被示为光盘,但是计算机可读介质1000可以是任何合适的计算机可读介质,诸如硬盘、固态存储器、闪存等,并且可以是不可记录的或可记录的。计算机程序1020包括用于使处理器系统执行所述计算方法的指令。
图7b以示意图示出了根据计算设备的实施例的处理器系统1140。所述处理器系统包括一个或多个集成电路1110。在图4b中示意性示出了一个或多个集成电路1110的架构。电路1110包括处理单元1120,例如CPU,用于运行计算机程序部件以执行根据实施例的方法和/或实施其模块或单元。电路1110包括用于存储编程代码、数据等的存储器1122。存储器1122的一部分可以是只读的。电路1110可以包括通信元件1126,例如天线、连接器或者这两者等。电路1110可以包括专用集成电路1124,其用于执行该方法中定义的部分或全部处理。处理器1120、存储器1122、专用IC 1124和通信元件1126可以经由互连1130(例如,总线)彼此连接。处理器系统1110可以被布置用于分别使用天线和/或连接器进行接触和/或无接触通信。
例如,在实施例中,处理器系统1140(例如,计算设备)可以包括处理器电路和存储器电路,所述处理器被布置为执行被存储在存储器电路中的软件。例如,处理器电路可以是Intel Corei7处理器、ARM Cortex-R8等。在实施例中,处理器电路可以是ARM Cortex M0。存储器电路可以是ROM电路,或者非易失性存储器,例如闪存。存储器电路可以是易失性存储器,例如SRAM存储器。在后一种情况下,所述设备可以包括非易失性软件接口,例如,硬盘驱动、网络接口等,其被布置为提供软件。
实施例适用于各种设置,例如:
(A)客户端让第三方执行针对第二字符串的搜索,并且希望获得搜索结果正确的保证,例如,第一字符串作为较大字符串的子字符串出现,并且存在编辑脚本用于以最大编辑距离将第一字符串转换为第二字符串,而无需访问较大字符串。客户端可能访问或不访问第一字符串和/或第二字符串,和/或可能太受资源约束而无法自行执行搜索。在这样的设置中,将客户端的核实设备和第三方的计算设备布置在根据实施例的可核实的计算系统中可能是有利的。
(B)与(A)相同,但是其中使用多方计算以保护隐私的方式执行搜索,使得执行所述搜索的各方无需学习第二字符串和/或第一字符串和/或其搜索的较大字符串。为此,根据实施例,将客户端的核实设备和第三方的计算设备可能与额外的计算设备一起布置在可核实的计算系统中可能是有利的,其中,计算设备被配置为例如使用多方计算以分布式方式来生成密码证明。
(C)与(A)相同,但不是由非交互式可核实计算,而是由客户端与第三方之间的交互式多方计算协议来执行核实。为此,在根据实施例的多方计算系统中布置客户端的计算设备和第三方的计算设备可能是有利的。
(D)在若干方之间以隐私保护的方式执行搜索,例如,一方持有较大字符串,而另一方持有第二字符串,其目的是找到作为较大字符串的子字符串的第一字符串,使得存在以最大编辑距离将第一字符串转换为第二字符串的编辑脚本。出于效率原因,可以使用针对多方计算的协议来执行搜索,所述协议是被动安全但主动私有的,例如,该协议可防止信息泄露给恶意参与者,但是不能保证正确性。为了获得主动安全性,例如,保证结果的正确性,对于各方而言,形成多方计算系统的实施例可能是有利的,所述多方计算系统用于核实编辑脚本将根据实施例将第一字符串转换为第二字符串,其中使用主动安全的多方计算技术。
(E)一方希望以保护隐私的方式证明第二字符串以特定最大编辑距离出现在来自数据提供设备的较大字符串中。例如,所述数据提供设备可以是家庭基因组测序设备,并且该方可以是想要向第三方证明他的或她的基因组数据满足特定性质的人,例如,包含具有到第二字符串的特定最大编辑距离的第一字符串,而不必公开基因组或第一字符串的内容。根据实施例,这样的设置可以受益于在可核实的计算系统中布置用户的计算设备和数据提供设备以及第三方的核实设备。
应当注意,上述实施例说明而非限制本发明,并且本领域技术人员将能够设计许多备选实施例。
在权利要求中,置于括号之间的任何附图标记不应当被解释为对权利要求的限制。动词“包括”及其词形变化的使用并不排除存在权利要求中未提及的其他元素或步骤。元件前面的冠词“一”或“一个”并不排除存在多个这样的元件。本发明可以通过包括若干不同元件的硬件以及通过适当编程的计算机来实现。在列举若干单元的设备权利要求中,这些单元中的几个单元可以由同一硬件项来体现。在互不相同的从属权利要求中记载某些措施的事实并不表示不能够有利地使用这些措施的组合。
在权利要求中,括号中的参考是指示例实施例的附图中的参考符号或实施例的公式,因此增加了权利要求的可理解性。这些参考符号不应被解释为限制权利要求。

Claims (18)

1.一种被配置为核实编辑脚本用于将第一字符串转换为第二字符串的计算设备,所述编辑脚本包括一个或多个编辑操作,所述编辑操作是从允许的编辑操作集合中选择的,所述允许的编辑操作集合包括匹配操作和差异操作,所述计算设备包括:
-存储器,其被配置为存储所述第一字符串的一个或多个字符的表示、所述第二字符串的一个或多个字符的表示、所述第一字符串中的当前位置的表示、以及所述第二字符串中的当前位置的表示,
-处理器,其被配置为:获得所述编辑脚本的表示,将所述表示存储在所述存储器中,并且随后执行验证计算,所述验证计算针对所述编辑脚本中的每个编辑操作包括:
-如果所述编辑操作是匹配操作,则:确定所述第一字符串中的当前位置处的字符和所述第二字符串中的当前位置处的字符,核实所述第一字符串中的当前位置处的字符和所述第二字符串中的当前位置处的字符相匹配,将所述第一字符串中的当前位置递增一,并且将所述第二字符串中的当前位置递增一,
-如果所述编辑操作是差异操作,则将所述第一字符串中的当前位置和/或所述第二字符串中的当前位置递增一。
2.根据权利要求1所述的计算设备,其中,所述差异操作包括不匹配操作、插入操作和删除操作,如果所述编辑操作是差异操作则递增包括:
-如果所述编辑操作是不匹配操作,则将所述第一字符串中的当前位置和所述第二字符串中的当前位置递增一,
-如果所述编辑操作是插入操作,则将所述第二字符串中的当前位置递增一,
-如果所述编辑操作是删除操作,则将所述第一字符串中的当前位置递增一。
3.根据权利要求1或2所述的计算设备,其中:
-确定所述第一字符串中的当前位置处的字符包括:计算在所述第一字符串的一个或多个字符与指示所述一个或多个字符中的哪个字符是当前位置处的字符的第一二进制向量之间的内积,并且/或者
-确定所述第二字符串中的当前位置处的字符包括:计算在所述第二字符串的一个或多个字符与指示所述一个或多个字符中的哪个字符是当前位置处的字符的第二二进制向量之间的内积。
4.根据前述权利要求中的任一项所述的计算设备,其中,所述第一字符串是较大字符串的子字符串,所述第一字符串中的当前位置被表达为所述较大字符串中的当前位置。
5.根据权利要求4所述的计算设备,其中,所述验证计算还包括:核实所述较大字符串作为数据块出现在Merkle散列树中。
6.根据前述权利要求中的任一项所述的计算设备,其中,所述计算设备还包括通信接口,所述通信接口被配置用于与一个或多个其他计算设备进行数字通信,并且所述验证计算作为在所述计算设备与所述一个或多个其他计算设备之间的多方计算来执行。
7.根据权利要求6所述的计算设备,其中,以下中的至少一项是在所述计算设备与所述一个或多个其他计算设备之间的秘密共享的秘密共享:所述第一字符串的一个或多个字符的表示、所述第二字符串的一个或多个字符的表示、所述第一字符串中的当前位置的表示、所述第二字符串中的当前位置的表示、以及所述编辑脚本的表示。
8.根据权利要求6或7所述的计算设备,其中,所述第一字符串是对所述计算设备的多方计算的私有输入,并且所述第二字符串是对所述一个或多个其他计算设备中的一个计算设备的多方计算的私有输入,或者其中,所述第二字符串是对所述计算设备的多方计算的私有输入,并且所述第一字符串是对所述一个或多个其他计算设备中的一个计算设备的多方计算的私有输入。
9.根据权利要求6或7所述的计算设备,其中,所述第二字符串是对所述计算设备的多方计算的私有输入或者是对所述一个或多个其他计算设备中的一个计算设备的多方计算的私有输入,所述第一字符串是对多方计算的公共输入。
10.根据权利要求1-5中的任一项所述的计算设备,其中,所述计算设备还包括通信接口,所述通信接口被配置用于与核实设备进行数字通信,所述验证计算是作为可核实计算来执行的,所述可核实计算生成密码可核实的计算证明:所述验证计算被成功地执行,所述计算设备还被配置为向所述核实设备提供密码证明。
11.根据前述权利要求中的任一项所述的计算设备,其中,所述计算设备被配置有在所述第一字符串与所述第二字符串之间的最大编辑距离,所述允许的编辑操作集合包括哑操作,所述编辑脚本包括的编辑操作的数量是所述第一字符串的长度、所述第二字符串的长度和所述最大编辑距离的函数。
12.根据权利要求11所述的计算设备,其中,所述编辑距离包括Levenshtein距离。
13.根据权利要求12或13所述的计算设备,其中,所述处理器还被配置为:通过从所述第一字符串和所述第二字符串中识别可允许的编辑操作并且将识别出的可允许的编辑操作添加到编辑脚本来生成所述编辑脚本,如果不匹配操作或插入操作被添加到所述编辑脚本,则哑操作被添加到所述编辑脚本。
14.根据前述权利要求中的任一项所述的计算设备,其中,所述第一字符串和所述第二字符串是核酸序列。
15.一种被配置为核实编辑脚本用于将第一字符串转换为第二字符串的核实设备,所述编辑脚本包括一个或多个编辑操作,所述编辑操作是从允许的编辑操作集合中选择的,所述允许的编辑操作集合包括匹配操作和差异操作,所述核实设备包括:
-通信接口,其被配置用于与计算设备进行数字通信,
-处理器,其被配置为从所述计算设备接收证明并且核实所述证明,所述证明是成功地执行了验证计算的密码可核实计算证明,所述验证计算针对所述编辑脚本中的每个编辑操作包括:
-如果所述编辑操作是匹配操作,则:确定所述第一字符串中的当前位置处的字符和所述第二字符串中的当前位置处的字符,核实所述第一字符串中的当前位置处的字符和所述第二字符串中的当前位置处的字符相匹配,将所述第一个字符串中的当前位置递增一,并且将所述第二字符串中的当前位置递增一,
-如果所述编辑操作是差异操作,则将所述第一字符串中的当前位置和/或所述第二字符串中的当前位置递增一。
16.根据权利要求15所述的核实设备,其中,所述证明是相对于由数据提供设备对所述第一字符串的、所述第一字符串为其子字符串的较大字符串的、或者Merkle散列树的根的输入表示的密码可核实计算证明,
-所述核实设备还被配置为接收所述输入表示并且核实所述输入表示已经被所述数据提供设备认证,或者
-所述核实设备还被配置为从所述数据提供设备接收所述输入表示,所述通信接口另外地被配置用于与所述数据提供设备进行数字通信。
17.一种用于核实编辑脚本用于将第一字符串转换为第二字符串的计算方法(600),所述编辑脚本包括一个或多个编辑操作,所述编辑操作是从允许的编辑操作集合中选择的,所述允许的编辑操作集合包括匹配操作和差异操作,所述计算方法包括:
-存储所述第一字符串的一个或多个字符的表示、所述第二字符串的一个或多个字符的表示、所述第一字符串中的当前位置的表示、以及所述第二字符串中的当前位置的表示,
-获得所述编辑脚本的表示,将所述表示存储在存储器中,并且随后执行验证计算,所述验证计算针对所述编辑脚本中的每个编辑操作包括:
-如果所述编辑操作是匹配操作,则:确定所述第一字符串中的当前位置处的字符和所述第二字符串中的当前位置处的字符,核实所述第一字符串中的当前位置处的字符和所述第二字符串中的当前位置处的字符相匹配,并且将所述第一字符串中的当前位置和所述第二字符串中的当前位置递增一,
-如果所述编辑操作是差异操作,则将所述第一字符串中的当前位置和/或所述第二个字符串中的当前位置递增一。
18.一种计算机可读介质(1000),其包括表示用于使处理器系统执行根据权利要求17所述的方法的指令的瞬态或非瞬态数据。
CN201880054311.2A 2017-08-24 2018-08-24 利用匹配操作和差异操作的编辑脚本核实 Active CN111033506B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US201762549683P 2017-08-24 2017-08-24
US62/549,683 2017-08-24
US201862678427P 2018-05-31 2018-05-31
US62/678,427 2018-05-31
PCT/EP2018/072886 WO2019038424A1 (en) 2017-08-24 2018-08-24 EDITING SCRIPT VERIFICATION WITH CORRESPONDENCE OPERATIONS AND DIFFERENCE OPERATIONS

Publications (2)

Publication Number Publication Date
CN111033506A true CN111033506A (zh) 2020-04-17
CN111033506B CN111033506B (zh) 2023-12-05

Family

ID=63557404

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880054311.2A Active CN111033506B (zh) 2017-08-24 2018-08-24 利用匹配操作和差异操作的编辑脚本核实

Country Status (4)

Country Link
US (1) US10848311B2 (zh)
EP (1) EP3673386B1 (zh)
CN (1) CN111033506B (zh)
WO (1) WO2019038424A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021223104A1 (zh) * 2020-05-06 2021-11-11 云图技术有限公司 系统测试方法和装置

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10394716B1 (en) * 2018-04-06 2019-08-27 Arm Limited Apparatus and method for controlling allocation of data into a cache storage
CN110266721B (zh) * 2019-07-05 2020-04-28 西南交通大学 一种基于同态的云辅助动态通用安全多方计算方法
WO2021013813A1 (en) * 2019-07-24 2021-01-28 Koninklijke Philips N.V. Summarizing a genomic data entry
EP3786961A1 (en) * 2019-08-29 2021-03-03 Koninklijke Philips N.V. Summarizing a genomic data entry
US20210295949A1 (en) * 2020-03-17 2021-09-23 Western Digital Technologies, Inc. Devices and methods for locating a sample read in a reference genome
US11837330B2 (en) 2020-03-18 2023-12-05 Western Digital Technologies, Inc. Reference-guided genome sequencing
CN115702560A (zh) * 2020-05-28 2023-02-14 皇家飞利浦有限公司 认证第一人的公共密钥

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106897258A (zh) * 2017-02-27 2017-06-27 郑州云海信息技术有限公司 一种文本差异性的计算方法及装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7313555B2 (en) 2004-04-30 2007-12-25 Anácapa North Method for computing the minimum edit distance with fine granularity suitably quickly
WO2008135951A1 (en) 2007-05-08 2008-11-13 Koninklijke Philips Electronics N.V. Method and a system for performing an oblivious query issued by a first party on a string provided by a second party
US8726151B2 (en) * 2010-04-09 2014-05-13 Sap Ag Comparing encrypted documents having structured data
NZ584534A (en) * 2010-04-09 2013-02-22 Tait Ltd Creating an edit script for conversion of an old data table to a new data table by creating data trees and first and second partial scripts then combining the partial scripts
CA2782391A1 (en) * 2012-06-29 2013-12-29 The Governors Of The University Of Alberta Methods for matching xml documents
US9740798B2 (en) 2013-03-15 2017-08-22 Micron Technology, Inc. Inexact search acceleration
US9317575B1 (en) * 2015-05-20 2016-04-19 Atlassian Pty Ltd. Systems and methods for synchronizing data
WO2017168240A1 (en) * 2016-03-29 2017-10-05 Push Technology Limited Calculating structural differences from binary differences in publish subscribe system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106897258A (zh) * 2017-02-27 2017-06-27 郑州云海信息技术有限公司 一种文本差异性的计算方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2021223104A1 (zh) * 2020-05-06 2021-11-11 云图技术有限公司 系统测试方法和装置

Also Published As

Publication number Publication date
CN111033506B (zh) 2023-12-05
WO2019038424A1 (en) 2019-02-28
EP3673386B1 (en) 2023-07-12
US20190068374A1 (en) 2019-02-28
US10848311B2 (en) 2020-11-24
EP3673386A1 (en) 2020-07-01

Similar Documents

Publication Publication Date Title
CN111033506B (zh) 利用匹配操作和差异操作的编辑脚本核实
EP3693886A1 (en) Optimizations for verification of interactions system and method
Troncoso-Pastoriza et al. Privacy preserving error resilient DNA searching through oblivious automata
EP4333357A2 (en) Hash function attacks
WO2023065632A1 (zh) 数据脱敏方法、数据脱敏装置、设备及存储介质
CN109241484B (zh) 一种基于加密技术的网页数据的发送方法及设备
US20230361984A1 (en) Method and system for confidential string-matching and deep packet inspection
JP6821516B2 (ja) 計算機システム、秘密情報の検証方法、及び計算機
Pulls et al. Balloon: A forward-secure append-only persistent authenticated data structure
CN111444547B (zh) 用于数据完整性证明的方法、设备及计算机存储介质
CN115567188B (zh) 一种多键值隐匿求交方法、装置及存储介质
CN111835526A (zh) 一种生成匿名凭证的方法及系统
Tian et al. Cloud data integrity verification scheme for associated tags
CN112149156B (zh) 用于公开记录的属性和数据条目的系统和选择器及其方法
US11222131B2 (en) Method for a secure storage of data records
US20230252416A1 (en) Apparatuses and methods for linking action data to an immutable sequential listing identifier of a user
Chenli et al. ProvNet: Networked bi-directional blockchain for data sharing with verifiable provenance
US8799754B2 (en) Verification of data stream computations using third-party-supplied annotations
US11748461B1 (en) Apparatus and method for vetting a user using a computing device
JP6467063B2 (ja) 秘密認証符号付加装置、秘密認証符号付加方法、およびプログラム
CN111447072B (zh) 用于生成数据等价零知识证明的方法、设备及存储介质
CN114398648A (zh) 支持动态操作和多用户存储证明的实用云存储方法及系统
Mao et al. A novel privacy-preserving biometric authentication scheme
CN115702560A (zh) 认证第一人的公共密钥
Bruinderink et al. Towards post-quantum bitcoin

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