CN111967038B - 数据处理系统、方法、设备、编辑器及存储介质 - Google Patents

数据处理系统、方法、设备、编辑器及存储介质 Download PDF

Info

Publication number
CN111967038B
CN111967038B CN201911109856.1A CN201911109856A CN111967038B CN 111967038 B CN111967038 B CN 111967038B CN 201911109856 A CN201911109856 A CN 201911109856A CN 111967038 B CN111967038 B CN 111967038B
Authority
CN
China
Prior art keywords
data
computing
calculation
input
computing node
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911109856.1A
Other languages
English (en)
Other versions
CN111967038A (zh
Inventor
王蜀洪
郑文丰
严志恒
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.)
Huakong Tsingjiao Information Technology Beijing Co Ltd
Original Assignee
Huakong Tsingjiao Information Technology Beijing Co Ltd
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 Huakong Tsingjiao Information Technology Beijing Co Ltd filed Critical Huakong Tsingjiao Information Technology Beijing Co Ltd
Publication of CN111967038A publication Critical patent/CN111967038A/zh
Application granted granted Critical
Publication of CN111967038B publication Critical patent/CN111967038B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • Storage Device Security (AREA)

Abstract

本申请提供一种数据处理系统、方法、设备、编辑器及存储介质,所述系统包括:数据输入模块,用于获取输入数据;代码输入模块,用于获取输入的执行代码,执行代码被配置为可调用输入数据;以及计算模块,用于接收到计算指令时令一计算引擎基于执行代码执行多方安全计算,并获取计算引擎的计算结果;展示模块,用于可视化展示数据输入模块的输入数据、代码输入模块输入的执行代码、以及计算模块获取的计算结果。本申请提供的数据处理系统、方法、设备、编辑器及存储介质,通过利用多方安全计算的方式对输入数据和执行代码进行处理以执行计算指令,防止数据泄漏,同时将输入数据和执行代码与计算结果进行可视化展示,更加直观清晰。

Description

数据处理系统、方法、设备、编辑器及存储介质
技术领域
本申请涉及数据处理技术领域,特别是涉及一种数据处理系统、方法、设备、编辑器及存储介质。
背景技术
随着大数据在企业之间、企业与个人之间、个人与个人之间分享,一些私有数据,如银行信用等级、个人身份信息、个人消费信息、个人薪资信息等,会随着数据业务被泄露。随着用户行为、习惯被以数据化收集,用户/企业对私有数据越来越重视。因此,数据业务和私有数据保密成为一对日益凸显的矛盾。
在设计数据业务的过程中,如何保证数据的私密性,同时尽可能地满足设计人员的使用习惯,是目前亟待解决的问题。
发明内容
鉴于以上所述现有技术的缺点,本申请的目的在于提供一种数据处理系统、方法、设备、编辑器及存储介质,用于解决现有技术中存在的问题。
为实现上述目的及其他相关目的,本申请的第一方面提供一种数据处理系统,包括:数据输入模块,用于获取输入数据;代码输入模块,与所述数据输入模块连接,用于获取输入的执行代码,所述执行代码被配置为可调用所述输入数据;以及计算模块,用于接收到计算指令时令一计算引擎基于所述执行代码执行多方安全计算,并获取所述计算引擎的计算结果;展示模块,用于可视化展示所述数据输入模块的输入数据、所述代码输入模块输入的执行代码、以及所述计算模块获取的所述计算结果。
在本申请的第一方面的某些实施方式中,所述输入数据包括:用于参与所述计算模块执行多方安全计算的资源或者所述资源的引用。
在本申请的第一方面的某些实施方式中,所述输入数据包括明文数据及私密数据,所述展示模块用以可视化展示所述明文数据以及所述私密数据的标识。
本申请的第二方面还提供一种数据处理方法,包括:获取输入数据以及输入的执行代码并实时可视化展示,所述执行代码被配置为可调用所述输入数据;接收到计算指令时令一计算引擎基于所述执行代码执行多方安全计算以获得计算结果;以及将所述计算结果进行可视化展示。
在本申请的第二方面的某些实施方式中,所述输入数据包括用于参与所述计算模块执行多方安全计算的资源或者资源的引用。
在本申请的第二方面的某些实施方式中,所述输入数据包括明文数据及私密数据,所述展示模块用以可视化展示所述明文数据以及所述私密数据的标识。
本申请的第三方面还提供一种编辑器,包括如第一方面所述的数据处理系统。
本申请的第四方面还提供一种数据处理设备,包括:接口装置,连接一计算引擎,所述计算引擎包括多个计算节点;存储装置,用于存储至少一个程序;处理装置,连接所述存储装置,用于按照所存储的至少一个程序,执行并实现如第二方面所述的数据处理方法。
本申请的第五方面还提供一种计算机可读存储介质,存储有至少一程序,所述至少一程序在被调用时执行并实现如第二方面所述的数据处理方法。
如上所述,本申请的数据处理系统、方法、设备、编辑器及存储介质,具有以下有益效果:通过获取用户输入的执行代码,利用多方安全计算的方式对输入数据进行秘密计算以执行计算指令,有效防止数据泄露,同时,将输入数据和执行代码与计算结果进行可视化展示,更加直观清晰,便于技术人员进行设计和操作。
附图说明
图1显示为本申请数据处理系统在一实施例中的架构示意图。
图2显示为本申请用于获取执行代码而提供的计算机程序语言编辑界面的示意图。
图3显示为本申请利用树状结构描述循环处理操作的执行代码的示意图。
图4显示为本申请利用树状结构描述提取公因子操作的执行代码的示意图。
图5显示为本申请利用树状结构描述常用表达提取操作的执行代码的示意图。
图6显示为本申请用于获取执行代码而提供的可供选择操作的编辑界面的示意图。
图7显示为本申请数据处理系统在一实施例中的架构示意图。
图8显示为本申请数据处理系统在另一实施例中的架构示意图。
图9显示为本申请数据处理系统在又一实施例中的架构示意图。
图10显示为本申请数据处理系统在再一实施例中的架构示意图。
图11显示为本申请可视化的展示界面在一实施例中的示意图。
图12显示为本申请数据处理方法在一实施例中的流程示意图。
图13显示为本申请编辑器在一实施例中的结构示意图。
图14显示为本申请数据处理设备在一实施例中的结构示意图。
具体实施方式
以下由特定的具体实施例说明本申请的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本申请的其他优点及功效。
虽然在一些实例中术语第一、第二等在本文中用来描述各种元件,但是这些元件不应当被这些术语限制。这些术语仅用来将一个元件与另一个元件进行区分。例如,第一计算节点可以被称作第二计算节点,并且类似地,第二计算节点可以被称作第一计算节点,而不脱离各种所描述的实施例的范围。第一计算节点和计算节点均是在描述一个计算节点,但是除非上下文以其他方式明确指出,否则它们不是同一个计算节点。相似的情况还包括第一私密数据与第二私密数据。
再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在所述的特征、步骤、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、步骤、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元件、功能、步骤或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
为了保护互联网企业和用户的私有数据,一些方式是采用加密方式进行数据传输,以确保数据传输期间的计算机设备不会获得私有数据,然而,该加密数据在处理设备进行数据处理时是需解密的,这使得私有数据在处理设备上不存在隐私可言。在另一些方式中,利用私有数据的数据处理过程采用密码学所使用的多方参与计算的数据处理方式,如秘密分享方式等,这使得处理私有数据的处理设备无需利用解密后的私有数据进行数据处理。该种方式虽然有效解决了私有数据隐私化的问题,但是,对技术人员来说,利用密码学技术进行数据处理具有极高的研发门槛,不利于技术人员在确保私有数据不泄露的情况下使用私有数据进行业务开发的目的。不仅如此,多方参与计算的计算引擎受所选择的计算节点的数量、计算复杂度、计算安全性等多方面制约,导致多方参与计算的数据处理方式带来数据量大、计算效率低等问题。
为此,本申请提供一种数据处理系统。所述数据处理系统旨在一方面确保用户的私有数据不被泄露,另一方面有效降低技术人员使用私有数据进行数据处理的难度。其中,所述私有数据是指以数字化形式存储并且具有不希望被泄露属性的数据。在此,所述以数字化形式存储的方式举例为带有私有数据的标识和/或权限而保存在计算机可读存储介质中的方式,其不希望被泄露的属性表现在所设置的标识和/或权限。其中,所述标识包括但不限于标记在数据库中且对应于数据库中所存储的数据的标志位(如布尔值等)。在一些实施例中,所述私密数据的标识包括占位符,所述占位符通过字符或字符串的形式表示指代的私密数据。通常,可以通过以下任一种或多种方式设置所述占位符:通过百分比方式设置占位符,例如%s、%d、%f、%x等中的一种或多种;通过字典、列表、索引、以及元组等一种或多种方式设置占位符。通过展示私密数据的标识而非私有数据本身,有效地避免了隐私泄露的风险。
所述权限包括但不限于:读写数据的权限、以及获得明文的私有数据的权限等。所述私有数据可通过对数据库进行读操作而获得,或利用存储地址进行读操作而获得。所述私有数据通常由数据持有方生成或运维。例如,所述数据持有方不因注资、人员关系、使用关系等将私有数据提供给数据处理方和获取方,并由数据处理方予以公开、交易等处置。其中,所述数据持有方可以与数据处理方为同一方或为单独一方。例如,某借贷部门藉由一查询平台查证个人A在银行B1和B2的信用记录,则借贷部门为数据结果的获取方,查询平台为数据处理方,银行B1和B2为私有数据持有方。又如,用户P1和P2使用同一企业C的导航软件,用户P1通过企业C获取用户P2的导航数据,则获取方为P1、数据处理方为企业C,私有数据持有方为用户P2。
在一些示例中,所述私有数据可以是个体、群体、或组织的敏感信息。所述私有数据的类型包括信息私有数据、通信私有数据、空间私有数据、以及身份私有数据等中的一种或多种。所述信息私有数据指的是个人的基本信息,包括例如身份证号、银行账号、各类密码、收入和财产状况、婚姻和家庭成员、医疗档案、消费和需求信息(例如购物、购房、购车、购买保险)、以及网络活动踪迹(例如IP地址、浏览踪迹、活动内容)等数据中的一种或多种。所述通信私有数据包括个人和其他人的交流使用的各种通信方式以及通过各种通信方式和其他人交流产生的信息数据,所述通信方式包括例如通过电话、短信、E-mail、QQ、以及微信等通信工具进行通信的方式。所述空间私有数据指的是个人出入的特定空间或区域的信息,例如包括家庭住址、工作单位、以及个人出入的公共场所等数据中的一种或多种。所述身体私有数据指的是与个人身体关联的信息,如虹膜数据、人脸数据、指纹数据、身高、体重、病历、以及药物测试等数据中的一种或多种。
在一些示例中,所述私有数据也可以是个人、群体或组织不愿或不能被外部世界知晓的信息。在一实施例中,所述私有数据包括金融交易数据。所述金融交易数据是指金融机构(例如银行、保险、证券、基金、信贷公司等)知悉或掌握的包括例如个人或企业的身份、各类金融资产状况和交易情况等信息和资料,例如信贷数据、证券交易数据、债券融资数据、以及股票融资数据等中的一种或多种。所述私有数据是银行、股票交易所等能提供金融交易数据的企业或部门需以最高安全级别存储的储蓄用户、交易用户的财产信息。
请参阅图1,图1显示为本申请数据处理系统在一实施例中的架构示意图。如图所示,所述数据处理系统1包括数据输入模块11、代码输入模块12、计算模块13以及展示模块14。
其中:
所述数据输入模块11用于获取输入数据。
在此,所述输入数据为执行多方安全计算所需的数据,其包括但不限于:来自数据处理系统自身生成的数据,来自用户输入数据,来自一个或多个数据源(Data Source)的数据,或者来自互联网等其他可通信计算机设备中的数据中的一种或多种。所述数据输入模块可以通过数据传输的方式获取所述输入数据。所述数据传输包括无线网络传输(例如TDMA、CDMA、GSM、PHS、以及Bluetooth等中的一种或多种)、有线网络传输(例如专用网络、ADSL网络、以及电缆调制解调器网络等中的一种或多种)、或接口传输(例如通过接口从闪存、U盘、移动硬盘、光盘、以及软盘等存储介质获取)等。
在一些示例中,所述输入数据的获取操作可以是基于所述数据输入模块的用户操作界面而获取的,例如,用户在一用户操作界面内输入多个数据,所述数据输入模块由此获得所述输入数据。在一些示例中,所述输入数据的获取操作可以是基于API接口(Application Programming Interface,应用程序接口)获取的。例如,用户通过输入代码调用数据源中存储的数据,从而获得所述输入数据;或通过输入代码调用API接口,调用已经写入所述数据输入模块的数据,从而获得所述输入数据。
在一个示例中,所述数据输入模块11获取的输入数据可以通过用户操作界面予以显示,例如,通过一个应用程序进行显示,比如Excel应用程序的展示界面显示所述输入数据,例如为Excel表格的展示形式。但并不以此为限,本领域技术人员基于自身通常知晓的知识和理解本申请后不经过创造性劳动想到的其他应用程序。
所述数据源可为运行有数据库的计算机设备,或者可与存储有私有数据的数据库进行数据读取的计算机设备。所述计算机设备举例为个人计算机设备或服务器等。所述数据源所在计算机设备可设置在公共或私有的机房内。例如,数据源位于银行的数据运行中心。
所述数据源包含用于将待输出的私有数据进行私密处理的处理装置。该处理装置可包含所述数据源所在计算机设备的处理器(如CPU),和由处理器执行所述私密处理操作的程序。所述处理装置还可以为用于执行私密处理的专用芯片。所述处理装置包含用于读取私有数据的数据接口,以及与计算节点进行数据交互的网络接口。其中,所述数据接口包括但不限于:USB接口、网卡、以及总线接口等中的一种或多种。所述网络接口包括但不限于:网卡、接入移动网络(如3G、4G、以及5G等移动网络中的一种或多种)的网络通信模块、接入局域网的网络通信模块等。
若对不涉及私有数据的任务进行处理,或者,当数据处理任务对保密性并未有所要求时,所述输入数据可以是未经过隐私化处理的明文数据,所述数据处理系统直接对明文数据进行数据处理。
在一些示例中,所述输入数据还可以是私密数据。所述私密数据是通过对私有数据进行隐私化处理后得到的。在一些示例中,所述隐私化处理的方式包括但不限于:将私有数据进行分散处理、将私有数据进行加密、将私有数据进行脱敏处理、以及将多个私有数据进行融合处理等中的一种或多种。
其中,将私有数据进行脱敏处理而得到私密数据的方式包括但不限于以下任一种:将私有数据进行如使用AES加密算法进行数据转换而得到私密数据;利用编码等方式将私有数据变长或变短而得到私密数据;利用预设的映射操作将私有数据进行映射而得到私密数据;利用经机器学习而确定的模型将私有数据进行模型化处理而得到私密数据等。例如,处理装置将用于标识有同态加密计算方式的相关信息以及发送该相关信息的交互方式设置在计算指令中以便藉由计算节点发送给相应数据源,或将所述相关信息和计算节点信息直接发送给数据源;数据源根据所述相关信息向计算节点反馈经加密处理后的私有数据作为私密数据。
所述将多个私有数据进行融合处理而得到私密数据的方式包括但不限于:将各个私有数据进行转换处理后并形成矩阵形式的私密数据,或者利用经机器学习而确定的模型将多个私有数据融合成一个序列化(或称为向量化)的私密数据。
所述将私有数据进行分散处理而得到私密数据的方式包括但不限于:随机分散处理等。所述随机分散处理方式通过随机产生至少一个私密数据,按照所产生的私密数据将输入数据进行分散处理。例如,处理装置将用于标识有采用基于四个计算节点的秘密计算架构的相关信息和发送该相关信息的交互方式设置在计算指令中,以便藉由计算节点发送给相应数据源,数据源根据基于四个计算节点的秘密计算架构所对应的隐私化处理方式,将私有数据随机分散处理成多个私密数据,并根据基于四个计算节点的秘密计算架构所预设的私密数据的节点分配方式,向对应计算节点反馈其中部分私密数据。
在一些示例中,所述随机分散处理方式包括:例如,所述输入数据包含数值X,随机产生两个私密数据x1和x′1,基于所述私密数据x1和x′1将数据X分散成{x1,x′1,x2,x′2,xa,x′a,xb,x′b};其中,x2=X-x1=xa,x1=xb,x′2=X-x′1=x′b,x′1=x′a;各计算节点所获取的私密数据组中对应数据X的私密数据分别为{x1,x′1},{x2,x′2},{xa,x′a},{xb,x′b}。以计算指令为两个数相乘且其中一个输入数据是7为例,经随机分散处理输入数据7被分散成:私密数据包括{2,5}和{3,4};其中,2和3为随机生成的,分配给各计算节点的私密数据分别为{2},{5},{3},{4}。
在一些示例中,所述随机分散处理方式包括:例如,所述输入数据包含比特值C;所述随机分散处理方式包括:随机产生两个比特位的私密数据c1和c′1,基于所述私密数据c1和c′1将输入数据C分散成用比特位表示的私密数据{c1,c′1,c2,c′2,ca,c′a,cb,c′b};其中,c1=cb,/>c′1=c′a;各计算节点所获取的私密数据组中对应输入数据C的私密数据分别为{c1,c′1},{c2,c′2},{ca,c′a},{cb,c′b}。以执行代码包含输入数据C为比特值1为例,将输入数据1随机分解为0和1,并按照上述公式得到{0,1,1,0}四个私密数据,分配给各计算节点的私密数据分别为{0,1},{1,0},{1,0},{0,1}。
在一些示例中,所述输入数据包括用于参与所述计算模块执行多方安全计算的资源。所述资源指的是用以参与多方安全计算的输入数据的数据,所述数据的类型可以是数值、函数、或者模型等中的一种或多种。或者,所述资源也可以是对所述数据进行数据处理后的到的结果,所述数据处理包括但不限于:加减运算、乘积运算、除法运算、对数运算、指数运算等数学运算,或如上所述的隐私化处理等中的一种或多种。例如,小明的基础薪资为5000,可以直接输入5000的数据参与多方安全计算,或输入5000×12(月份)的数据结果参与多方安全计算。
此外,所述输入数据还包括所述资源的引用(Reference),所述资源的引用所引用的资源存储在本地或网络中的至少一数据源中。其中,所述资源的引用指的是可以让所述执行代码间接访问存储于计算机存储器、其他存储设备、或存储介质中的资源的字符或字符串,所述字符或字符串可以是变量、URI(Uniform Resource Identifier,统一资源标识符,简称URI)地址、记录、指针、或者句柄等中的一种或多种。
在一种示例中,所述输入数据可以是“小明的基础薪资”,用以指代基础薪资的明文数据。在一种示例中,员工的基础薪资存储在一表格文件中,则所述输入数据可以为“第三列第五行的数据”以指代在表格中对应位置处的数据。
在一种示例中,员工的基础薪资存储在服务器中,可以通过URI地址路径进行访问,从而获得其明文数据;所述输入数据的格式可以为:[协议方案名]://[用户名]:[密码]@[服务器地址]:[服务器端口号]/[带层次的文件路径]?[查询字符串]#[片段标识符],例如,所述输入数据可以为:http://user:pass@www.example.jp:80/dir/index.htm?uid=1#ch1。当然,所述资源的引用的具体表达形式并不局限于此,此处不作限制。
所述代码输入模块12与所述数据输入模块11连接,用于获取输入的执行代码,所述执行代码被配置为可调用所述输入数据。
在此,所述代码输入模块与所述数据输入模块可以通过总线连接,或通过通信网络进行数据传递。所述执行代码的获取操作可以是基于用户的输入操作而生成的。在一些示例中,所述执行代码可直接地由使用业务逻辑的用户的输入操作而产生。所述业务逻辑是指技术人员利用一个或多个处理操作对包含私有数据进行数据处理、且根据自然规律而得到的流程。例如,一种业务逻辑包括:利用银行B1和B2中用户A的银行存款数量、银行贷款数量、银行还款历史记录等确认用户A的还款能力的评价流程。又如,一种业务逻辑包括:利用用户P1和P2当前的位置信息向用户P1所持终端设备提供P1与P2之间相距距离和相距路线信息的路程提示流程。
在一些示例中,所述代码输入模块包括代码编辑器。所述代码编辑器包括NOTEPAD、ECLIPSE、Nuclide、ATOM、SUBLIME TEXT、以及Visual Studio等中的一种或多种。在一些示例中,所述执行代码包括:藉由所述代码编辑器的计算机程序语言编辑界面而获取的程序模块。其中,所述计算机程序语言可以是任一种可由计算机设备识别的语言,其包括但不限于可经由编译而得到机器语言的计算机程序语言(如Python、Java、或C++等),或者与机器语言一一对应且具有可读性的计算机程序语言(如汇编语言等)。
在此,所述执行代码可以是藉由计算机程序语言来描述数据处理的程序模块(或叫程序段、程序块),其中,所述执行代码调用所述输入数据为经过隐私化处理的方式得到的私密数据,或者,所述执行代码包含涉及对私有数据的数据处理过程的程序模块。
在一些具体示例中,所述执行代码为直接获取自所述编辑界面中用计算机程序语言描述的程序模块。例如,请参阅图2,其显示为用于获取执行代码而提供的计算机程序语言编辑界面的示例,其中,在所述编辑界面中技术人员(或叫程序员)编辑包含下述程序模块的程序包括:
……
x=p.ss(client ID)
def logistic(x,start,iter_cnt);
……
result=logistic(x,0,100)
result.reveal()
……
其中,所述执行代码为由:获取输入参数的程序语句(x=p.ss(client ID)),对所述输入参数进行处理的程序语句(def logistic(x,start,iter_cnt);……result=logistic(x,0,100)),以及获得处理结果的程序语句(result.reveal())构成的程序模块。
其中,client ID为表示持有私有数据的数据源的ID信息,x为经隐私化处理的私有数据,即用于秘密计算的私密数据;logistic()表示对私有数据x进行秘密计算的计算方式,其中,start和iter_cnt为秘密计算所用到的参数;result.reveal()表示对秘密计算结果的反馈。
在又一些具体示例中,所述执行代码为将前述示例中提及的利用计算机程序语言描述的程序模块转换成利用计算算式而描述的程序模块。在此,为实现一完整的业务逻辑可能由计算机程序语言描述成包含条件处理、循环处理、布尔处理、计算处理等处理操作的程序。为进行秘密计算,所述程序被分解成多个可由计算算式执行的程序模块。例如,一个包含循环和计算处理的处理操作可分解为一个或多个程序模块。
在经分解的各程序模块中,所述执行代码包含涉及对私有数据处理操作的程序模块,以便采用秘密计算方式进行数据处理。其中,所述程序模块可由计算机程序语言描述,或者利用源码语法结构来描述。其中,所述源码语法结构举例为抽象语法树(AbstractSyntax Tree,AST)。
例如,请参阅图3,其显示为利用树状结构描述循环处理操作的执行代码的示意图;其中,将循环处理操作的执行代码描述成通过包含乘法计算得到处理结果的树状结构。又如,请参阅图4,其显示为利用树状结构描述提取公因子操作的执行代码的示意图;其中,将提取公因子操作的执行代码描述成通过加法计算和乘法计算级联的方式得到处理结果的树状结构。再如,请参阅图5,其显示为利用树状结构描述常用表达提取操作的执行代码的示意图;其中,将常用表达提取操作的执行代码描述成通过加法计算和乘法计算级联的方式得到处理结果的树状结构。
其中,描述执行代码的程序模块可直接被暂存以便在执行计算指令时被调用。在一些示例中,所述程序模块被反馈到技术人员的编辑界面上,以供技术人员参照使用。
在又一些示例中,所述执行代码可以是基于编辑界面的选择操作、输入操作、拖拽操作、绘图操作等而生成的程序模块。例如,请参阅图6,其显示为可供选择操作的编辑界面的示意图,通过浏览器或客户端内所展示的数据源选项,从被勾选的数据源获取私有数据的程序语句;以及利用所述编辑界面所展示的对私有数据的处理方式的选项,获取处理该私有数据的处理过程及得到相应处理结果的程序语句,故而所述执行代码为包含上述各程序语句的程序模块。
需要说明的是,上述各示例仅为对获取执行代码的举例而非对执行代码的获取方式的限制。事实上,执行代码还可以为结合前述各示例的方式而得到的程序模块。或者所述执行代码还可以在任何执行业务逻辑期间藉由所执行的涉及私有数据处理的程序模块而产生等。
在一个示例中,所述数据输入模块11获取输入数据及所述代码输入模块12获取输入的执行代码是藉由用户对同一用户操作界面的输入操作实现的;在一种具体的实施方式中,针对所述数据输入模块11获取输入数据的操作和所述代码输入模块12获取输入的执行代码的操作可以通过藉由用户对例如为电脑的电子装置的显示屏中显示的同一个用户操作界面(用户交互界面,亦称GUI)来实现,在具体的实现方式中,可以呈现如图6所示的界供选择操作的编辑界面均可对所述数据输入模块11和代码输入模块12进行操作,也可以通过例如为图7所示的,在显示的展示界面中,通过对所述展示界面的操作,使得在同一个界面中的一侧显示为数据输入模块11获取的输入数据71,另一侧显示所述代码输入模块12获取输入的执行代码72,藉此可以实现在同一个界面既可以操作输入数据也可以操作代码,达到实时切换的目的。
所述计算模块13用于接收到计算指令时令一计算引擎基于所述执行代码执行密文计算,并获取所述计算引擎的计算结果。所述密文计算例如可以为多方安全计算等各类密文计算技术的模块,为描述方便,本发明实施例均以多方安全计算为例进行说明。
在此,所述计算指令的获取操作可基于用户的输入操作而生成,或基于输入的执行代码而产生。在一些示例中,所述计算指令可直接地由使用所述业务逻辑的用户的输入操作而产生。例如,用户通过浏览器或客户端输入待查询信用评价结果的用户信息,藉由所述浏览器或客户端将包含用户信息和待反馈评价结果的设备信息封装在一查询请求中,并发送给所述计算模块,所述计算模块基于所获取的查询请求执行相应的业务逻辑,其中所述业务逻辑中包含对私有数据进行处理的计算指令。在又一些示例中,所述计算指令可间接地由使用所述业务逻辑的用户的输入操作而产生、或由设计所述业务逻辑的技术人员的输入操作而产生。例如,用户通过浏览器或客户端输入一时间间隔信息,其用于定期获得对私有数据进行处理的处理结果;或者技术人员根据业务需求在业务逻辑中内置了所述时间间隔,所述计算模块基于所述时间间隔信息执行相应的业务逻辑,其中所述业务逻辑中包含对私有数据进行处理的计算指令。
为此,在一些示例中,所述计算指令包括:藉由计算机程序语言编辑界面而获取的程序模块。在此,所述计算指令可以是藉由计算机程序语言来描述数据处理的程序模块(或叫程序段、程序块),其中需要执行秘密计算的计算指令包含涉及对私有数据处理过程的程序模块。在一些具体示例中,所述计算指令为直接获取自所述编辑界面中用计算机程序语言描述的程序模块。在又一些具体示例中,所述计算指令为将前述示例中提及的利用计算机程序语言描述的程序模块转换成利用计算算式而描述的程序模块。在此,为实现一完整的业务逻辑可能由计算机程序语言描述成包含条件处理、循环处理、布尔处理、计算处理等处理操作的程序。为进行秘密计算,所述程序被分解成多个可由计算算式执行的程序模块。例如,一个包含循环和计算处理的处理操作可分解为一个或多个程序模块。
在经分解的各程序模块中,所述计算指令包含涉及对私有数据处理操作的程序模块,以便采用秘密计算方式进行数据处理。其中,所述程序模块可由计算机程序语言描述,或者利用源码语法结构来描述。
所述计算引擎根据执行代码执行多方安全计算以获得执行所述计算指令后的计算结果。例如,所述计算指令为统计员工的薪资,对于统计人员而言,每个员工的基础工资为保密的,而员工出勤率是公开的数据,员工薪资系数通常为预先设定的固定数据。也就是说,所述员工出勤率和员工薪资系数为明文数据。因此要解决的问题是:如何在所述员工基础工资为私密数据的情况下,根据明文的员工出勤率的数据和预先设定的员工薪资系数,以及所述统计人员输入的执行代码,并通过调用所述计算引擎执行多方安全计算以获取各员工的薪资的统计结果。
所述计算引擎可以设置在所述数据处理系统内,也可以独立于所述数据处理系统而设置在外部的计算设备上。所述计算引擎可以为一实体计算设备,或由实体计算设备承载的虚拟设备。从另一角度来说,所述计算引擎可为单台计算机设备、或基于云架构的服务系统等。其中,所述单台计算机设备可以是自主配置的可执行所述执行代码的计算机设备,其可位于私有机房或位于公共机房中的某个被租用的机位中。所述云架构的服务系统包括公共云(Public Cloud)服务端与私有云(Private Cloud)服务端,其中,所述公共或私有云服务端包括Software-as-a-Service(软件即服务,简称SaaS)、Platform-as-a-Service(平台即服务,简称PaaS)及Infrastructure-as-a-Service(基础设施即服务,简称IaaS)等。所述私有云服务端例如阿里云计算服务平台、亚马逊(Amazon)云计算服务平台、百度云计算平台、腾讯云计算平台等等。
在一些示例中,所述计算模块通过数据源配置以使所述执行代码可通过所述资源的引用调用所述至少一数据源中的资源。其中,通过所述数据源配置调用资源的方式包括以下至少任一种:基于权限认证的方式调用所述数据源中的资源、基于通信加密的方式调用所述数据源中的资源、基于携带校验信息的方式调用所述数据源中的资源、或者基于秘密分享的方式调用所述数据源中的资源等。所述数据源预先设有计算配置及所对应的隐私化处理方式。根据计算配置,计算模块将与获取私密数据相关的相关信息设置在计算指令中,以供相应计算节点执行。其中,所述相关信息用于藉由计算节点向数据源所发送的数据请求,来告知数据源其采用何种数据隐私化处理方式来反馈相应的私密数据。例如所述相关信息包括:获取私密数据的权限信息、便于数据源查询和读取私有数据的索引信息,甚至还可以包含计算节点在秘密计算中的身份信息、计算配置等。根据所述计算配置,各数据源所提供的私密数据可以是利用以下任一种方式得到的:将私有数据进行转换而得到的,将私有数据进行分散处理而得到的,或者将多个私有数据进行融合处理而得到的。
在一些示例中,所述计算引擎可以设置在所述数据处理系统内,所述计算引擎与所述计算模块通信连接。请参阅图7,显示为本申请数据处理系统在一实施例中的架构示意图。如图所示,所述数据处理系统7通过一个展示界面展示所述输入数据71和执行代码72,此外,所述数据处理系统7还包括接口单元74,以及任务管理单元73。所述任务管理单元73用于获取所述计算指令以及处理所述计算指令的计算配置,以使得在本地(即所述数据处理系统7中)实现任务管理。
在此,所述计算模块可为单台计算机设备、或基于云架构的服务系统等。其中,所述单台计算机设备可以是自主配置的可执行所述处理方法的计算机设备,其可位于私有机房或位于公共机房中的某个被租用的机位中。所述云架构的服务系统包括公共云(PublicCloud)服务端与私有云(Private Cloud)服务端,其中,所述公共或私有云服务端包括Software-as-a-Service(软件即服务,简称SaaS)、Platform-as-a-Service(平台即服务,简称PaaS)及Infrastructure-as-a-Service(基础设施即服务,简称IaaS)等。所述私有云服务端例如阿里云计算服务平台、亚马逊(Amazon)云计算服务平台、百度云计算平台、腾讯云计算平台等等。
在一些示例中,所述数据处理系统还包括一接口单元,用于接收所述计算引擎经由各计算节点分别持有的计算结果与所述输入数据相关的计算结果。例如,如图所示,所述数据处理系统7还包括一接口单元74(例如一网络接口),并通过所述接口单元网络连接所述计算引擎75的多个计算节点76(所述连接的方式在图中未示出),从而接收所述计算引擎85经由各计算节点86分别持有的计算结果与所述输入数据81相关的计算结果。
为此,所述网络接口包括但不限于网卡、移动网络接入模块、通过总线与计算引擎相连的总线接口等。所述网络接口还与计算节点通信连接,例如,所述网络接口通过互联网、移动网络、及局域网络中至少一种与各计算节点进行数据通信,以便向各计算节点发送用于秘密计算的计算指令。其中,所述计算节点是由所述计算模块执行所述计算指令而选定的,所述计算节点可以为一个或多个。
所述计算节点可以为一实体计算设备。例如,所述计算节点为一实体服务器、个人计算设备、构成云服务端的服务器、或者设置有专用于秘密计算的专用设备等。例如,所述计算节点包含专用于计算同态加密方式的处理芯片。再如,所述计算节点包含基于秘密分享和SPDZ或基于四个计算节点的秘密计算架构的处理芯片等。其中,上述各示例中的处理芯片举例为包含微处理器的芯片,或包含FPGA的芯片等。又如,所述计算节点包含乱序电路的处理芯片。所述计算节点也可以为虚拟设备,例如由实体计算设备承载的虚拟设备。例如,一实体服务器可提供的多个虚拟设备,以作为对应的多个计算节点,其中,配置在一个实体服务器上的多个计算节点可基于单独管理的方式参与秘密计算。所配置的秘密计算方式为可由虚拟设备执行的软件程序。
为了便于技术人员利用秘密计算方式实现业务逻辑中的计算指令,所述任务管理单元还获取用于处理所计算指令的计算配置。在此,在一些示例中,用于描述业务逻辑的程序中包含可执行秘密计算的接口程序,通过调用相应接口程序来确定执行相应计算指令的计算配置。例如包含x=p.ss(client ID)的执行代码,其中,利用p.ss()接口程序提供了用于执行与私有数据x相关的计算配置,即采用基于四个计算节点的秘密计算方式进行秘密计算。需要说明的是,根据实际设计需要,所述计算模块还可根据执行代码中的参数设置来确定计算配置,例如,所调用的接口程序中设有用于描述使用或不使用秘密计算方式进行数据处理的布尔参数、和/或对应计算配置的参数等。
在又一示例中,技术人员可通过勾选用于描述计算配置的选项,来确定私有数据x执行秘密计算的方式。例如,技术人员通过浏览器或客户端的操作界面在私有数据所在栏勾选一计算配置选项,则计算模块获取处理该私密数据的计算指令的计算配置。
在此,所述计算配置用于指明对私有数据进行秘密计算的方式,其包括但不限于:计算方式、数据通信方式、和隐私化处理方式等。其中,所述计算方式包括采用同态加密计算方式、采用混淆电路计算方式、或多计算节点协同计算的方式等。所述数据通信方式包括采用秘密分享计算方式、基于认证而传输数据的通信方式、利用密钥进行数据通信方式中的至少一种等。其中,秘密分享计算方式举例包含利用秘密分享技术执行基于SPDZ秘密计算架构而确定的秘密计算方式,或者利用秘密分享技术执行基于四选二秘密计算架构而确定的秘密计算方式。其中,所述秘密计算架构还可以举例为三选二等。其中,四选二秘密计算架构和三选二秘密计算架构是指由四个(或三个)计算节点参与秘密计算并由两个计算节点提供计算结果。例如,最多采用四个计算节点的秘密计算架构的秘密计算方式。所述隐私化处理方式参照上述示例,此处不再赘述。
需要说明的是,根据秘密计算架构的设计需要,参与计算节点的数量不限于上述示例,以及提供计算结果的计算节点数量也不限于上述示例。例如,所述计算配置中包含利用秘密分享技术和混淆电路配合的计算方式执行由预设数量的多个计算节点参与计算的秘密计算方式;其中,各计算节点中配置有可执行混淆电路的处理芯片并利用秘密分享技术进行数据交互。
藉由上述各示例可见,所述计算配置包括:执行所述计算指令的秘密计算方式,和按照所述秘密计算方式执行所述计算指令的计算节点数量。其中,所述计算节点数量可由秘密计算方式确定。
所述计算引擎包括多个计算节点,用于根据所述计算配置执行所述计算指令以使所述多个计算节点进行多方安全计算,所述计算节点可以为一实体计算设备,或由实体计算设备承载的虚拟设备。
在此,构成计算引擎的多个计算节点可以是固定配置的。在本申请实施例中,以四个计算节点构成所述计算引擎为例。或者该多个计算节点基于任务管理单元基于选取规则来选择的;其中,所述选取规则举例包括计算节点的属性信息。其中,计算节点的属性信息可存储在任务管理单元中的配置文件(或日志文件等)中。或者,所述属性信息可由任务管理单元维护且可动态更新,其包括但不限于:各计算节点的设备信息,各计算节点所在实体服务器的设备提供商信息等。其中,所述设备信息举例为实体设备的设备信息(如IP地址、MAC地址等)、或者为虚拟设备的设备信息(如虚拟设备ID等)。
从多方安全计算方式方面来说,所述各计算节点可以根据预先对各计算节点执行多方安全计算而配置相应的执行程序或处理芯片。从计算节点的设备配置来说,所述计算节点为单台计算机设备、或基于云架构的服务系统中被使用的实体设备或虚拟设备等。其中,所述单台计算机设备可以是自主配置的可执行所述计算多方安全计算指令的计算机设备,其可位于私有机房或位于公共机房中的某个被租用的机位中。例如,由数据源作为计算节点(或计算节点之一);所述计算节点还可以位于任务管理单元一侧,例如,所述任务管理单元为计算节点(或计算节点之一)。故而计算节点的实体或虚拟设备的形态和所设置的地理位置不做限定。例如,计算节点可以位于同一实体服务器的不同虚拟设备上且通过管理权限进行单独管理。所述云架构的服务系统包括公共云服务端与私有云服务端,其中,所述公共或私有云服务端包括SaaS、PaaS及IaaS等。所述私有云服务端例如阿里云计算服务平台、亚马逊云计算服务平台、百度云计算平台、腾讯云计算平台等等。其中,所述虚拟设备可以是实体服务器通过虚拟技术将一台独占设备虚拟成多台逻辑设备,供多个用户进程同时使用的设备之一。
所述计算节点可包含存储装置、处理装置、网络接口装置等。事实上,根据计算节点实际运行的计算方法的硬件装置,上述各装置可位于单台服务器上,或位于多台服务器中并通过各服务器之间的数据通信完成单一计算节点所执行的多方安全计算指令。
所述任务管理单元用于获取一执行代码,并生成包含有所述执行代码的信息的多方安全计算指令。其中,任务管理单元按照预先构建的对应各执行代码的多方安全计算协议,并生成包含所述执行代码的信息的多方安全计算指令,并发送给计算引擎。其中,所述多方安全计算协议为指示并调度计算引擎中各计算节点执行对应执行代码的多方安全计算的过程,其包括但不限于:描述加法、减法、乘法或除法等数学计算的执行代码的多方安全计算执行过程,描述逻辑和、逻辑或、逻辑非、逻辑异或、逻辑比较等逻辑计算的执行代码的多方安全计算执行过程,描述秘密传输的多方安全计算执行过程等。
所述多方安全计算指令包括:为采用多方安全计算的方式执行或运行执行代码而指示计算引擎中四个计算节点进行本地计算的指令,计算节点之间执行数据交互的指令,获取输入数据的指令,以及生成随机数的指令等中的一种或多种。所述多方安全计算指令还可以包含指示计算节点执行本地计算和数据交互的计算角色的指令。所述多方安全计算指令可以由计算机程序语言来描述,或者由机器语言来描述。
根据前述各生成多方安全计算指令的示例,在一些示例中,所述多方安全计算指令直接来自于任务管理单元。在另一种示例中,所述多方安全计算指令基于所获取的执行代码而生成。
在一些示例中,计算引擎的各计算节点获取对应执行代码的完整的多方安全计算指令,即获取包含有每个计算节点执行的计算指令,为此,为使每个计算节点协同执行,各所述计算节点获取所述多方安全计算指令及计算角色;以供各计算节点按照所分别获取的计算角色执行所述多方安全计算指令。其中,所述计算角色用于标记所述多方安全计算指令中各执行本地计算的计算节点,以及标记所述多方安全计算指令中执行计算节点之间的交互时数据发送方和数据接收方等。
在又一些示例中,计算引擎的各所述计算节点分别获取所述多方安全计算指令中对应本地执行的多方安全计算指令。其中,所述本地执行的多方安全计算指令包含用于执行本地计算的指令,为执行数据交互而发出本地存储的数据的指令,为执行数据交互而将所接收的数据存储本地的指令,获取经处理的输入数据的指令,生成随机数的指令等。例如,所述多方安全计算指令包含计算节点S1执行生成随机数r12的指令P1,计算节点Sa执行生成随机数rab的指令Pa等,则计算节点S1获取指令P1,计算节点Sa获取指令Pa。
为执行或运行执行代码,所述计算引擎中各计算节点还获取私密数据组。其中,所述私密数据组包含来自所述执行代码所需的所有输入数据经随机分散处理而得到的私密数据组成的,例如,执行代码需要两个输入数据X和Y,则各计算节点得到的私密数据组包含{xi,yj},其中,xi和yj分别为X和Y经随机分散后得到的私密数据。在此,私密数据组中对应X的私密数据可以为多个,但不应该多到可通过恢复运算得到输入数据X的程度,同理可类似的还有输入数据Y,在此不予详述。
在此,根据执行代码中输入数据的数据来源,所述计算引擎可从一个或多个数据源获取输入数据。其中,根据包含输入数据为私有数据或非私有数据的执行代码,对应的所述计算引擎还获取作为输入数据的非私有数据;以及多方安全计算指令是基于非私有数据而确定的。换言之,多方安全计算指令不必然一定使用所述计算引擎中的所有计算节点。可根据输入数据为私有数据或非私有数据而设置对应的计算指令。在一些具体示例中,执行代码所涉及的输入数据均为非私有数据,则对应的多方安全计算指令为指令一个计算节点执行各计算指令。在又一些具体示例中,执行代码所涉及的输入数据包含私有数据和非私有数据,则对应的多方安全计算指令包含针对非私有数据的优化多方安全计算的计算指令。例如,输入数据包含私有数据A1和非私有数据A2,执行代码包含计算A1和A2乘积,则多方安全计算指令包含令计算节点S1计算a1×A2的指令,以及令计算节点S2计算a2×A2的指令;其中,a1和a2为A1经随机分散处理后得到的私密数据。在再一些具体示例中,输入数据包含私有数据A1和A3,执行代码包含计算A1和A3乘积,则多方安全计算指令包含令计算节点S1计算a11×a31的指令,令计算节点S2计算a12×a32的指令,计算节点Sa计算a13×a33的指令,计算节点S计算a14×a34的指令,令计算节点S1与Sa进行置换数据的指令,令计算节点S2与Sb进行置换数据的指令,以及令各计算节点基于置换得到的数据和本地计算得到的数据进行计算的指令等;其中,a11和a12,以及a13和a14分别为输入数据A1经随机分散处理得到的私密数据;a31和a32,以及a33和a34分别为输入数据A3经随机分散处理得到的私密数据。由上述各示例可见,所述多方安全计算指令是根据执行代码中输入数据所包含的非私有数据而确定的。
其中,为符合数据源对所述输入数据的隐私性要求,在一些示例中,任务管理单元根据执行代码向相应数据源发出包含对私密数据分配方式的指令信息。其中,所述任务管理单元根据所述执行代码所对应的多方安全计算指令中私密数据组的计算需要,向相应数据源请求将输入数据进行随机分散处理,数据源按照所提供的分配方式将随机分散后的各私密数据分发给所述计算引擎中各计算节点。在又一些示例中,用于执行执行代码的输入数据具有相同的随机分散处理方式,则所述任务管理单元可根据预先与各数据源约定的数据分配规则,提供各计算节点设备信息和所对应的私密数据组的编号,以便数据源根据编号分配所处理后的各私密数据。在另一些示例中,所述私密数据组还可以由计算引擎中的各计算节点直接向数据源请求而被获取。例如,所述计算引擎中各计算节点根据所获取的多方安全计算指令所提供能够的数据源向相应数据源发出包含获取私密数据组中相应私密数据的数据请求,其中,所述数据请求包含数据源基于预设的计算引擎中各计算节点而设置的私密数据组的编号,由此各计算节点各自获得可执行多方安全计算的私密数据组。在再一些示例中,所述输入数据可由计算节点在执行计算指令过程中所产生的中间数据表示,例如,在包含混合计算的多方安全计算指令中,其中一个计算节点按照计算指令将中间数据进行随机分散成私密数据后,分配给另一个或多个计算节点等。
其中,所述输入数据可以为整数类型数据或浮点类型数据。其中,数据源可直接将整数类型数据进行隐私化处理。对于浮点类型数据,数据源将浮点类型数据进行二进制化处理,再进行隐私化处理,由此得到多个私密数据。其中,二进制化处理的方式举例包括IEEE754。例如,数据源所提供的输入数据为125.5,其二进制表示为1111101.1,以写成二进制的科学计数为:1.111101*2^6,E=e+127=133,即E的阶码133的二进制格式为10000101,所以125.5的32位二进制浮点数为0 10000101 11110100000000000000000。其中,第一位0表示数值正负符号,由此将125.5转换成32位二进制数0 1000010111110100000000000000000,并将该32位二进制数进行随机分散处理。当执行代码中进行数据计算的多个输入数据包含浮点类型数据时,可采用上述浮点数转二进制格式整数的方式统一各输入数据,再执行计算。
在此,所述随机分散处理是指将输入数据随机生成多个私密数据[xj],其中,私密数据[xj]通过可恢复的数学计算可得到相应的输入数据。在此基础上,私密数据组为输入数据基于所述计算引擎执行多方安全计算所需的随机分散处理方式而得到的;以及私密数据[xj]的数量是基于计算引擎所执行的多方安全计算指令和/或计算节点的数量而预先设置的。例如,执行代码中加法计算被配置成利用两个计算节点执行,相应输入数据被分散成由随机生成的第一私密数据,以及基于第一私密数据得到的第二私密数据,其中,第一私密数据和第二私密数据可恢复成所述输入数据,该两个私密数据被分配给不同计算节点进行计算。又如,执行代码中包含两个私有的输入数据的乘法计算,待处理的两个输入数据分别被随机分散成四组私密数据,每组私密数据用于分配给一个计算节点以得到各计算节点的私密数据组。
在一些具体示例中,所述随机分散处理方式包括:随机产生至少一个私密数据,按照所产生的私密数据将输入数据进行分散处理。在此,在一些更具体示例中,所述随机分散处理方式可基于执行计算的计算节点的数量而随机产生至少一个私密数据。例如执行代码中包含加法计算,执行该加法计算的计算节点数量为两个,则随机产生一个私密数据a1,并根据该私密数据a1将输入数据进行分散处理得到私密数据a1和a2。在又一些更具体示例中,所述随机分散处理方式可基于统筹执行代码所使用的各种计算而随机产生多个私密数据。例如执行代码中包含输入数据A1和A2的加法计算,以及输入数据A2和A3乘法计算,其中,加法计算由两个计算节点执行,乘法计算由四个计算节点指令,则为减少与数据源的交互次数,可将所有输入数据均随机分散成四个私密数据,由各计算节点根据执行指令提取相应的私密数据。例如,针对每个输入数据,均随机产生两个私密数据,并根据该两个私密数据将相应输入数据进行分散处理得到四个私密数据。在又一些更具体示例中,与前述示例不同的是,所述随机分散处理方式可基于统筹执行代码所使用的各种计算而随机产生一个私密数据,并根据该私密数据将输入数据随机分散成两个私密数据,并分配给不同计算节点,由各计算节点根据所执行的计算指令对所得到的私密数据发送给其他计算节点,或对所接收的私密数据进行再分散后发送给其他计算节点。
在实施例中,所述输入数据的随机分散处理方式包括针对数值的分散处理方式,所述分散处理方式的方式详见前述针对数据输入模块11的描述,在此不再一一赘述。
需要说明的是,上述各示例中对输入数据进行随机分散的方式并非仅择一而用,而是可以根据执行代码进行结合。所述计算引擎中各计算节点从至少一个数据源或获取各输入数据的私密数据,并组成用于执行多方安全计算指令的私密数据组,以执行多方安全计算指令。
另外,借助输入数据包含私有数据A1和A3,执行代码包含计算A1和A3乘积的示例并推广至其他执行代码,为利用四个计算节点对私有数据所产生的私密数据进行在线的多方安全计算,各计算节点利用共享的随机数执行本地计算以得到可供抵消的中间数据或计算结果,由此确保在计算节点之间、计算节点与其他设备之间所传输的数据是无法泄密的。为此,各计算节点配置有产生所述随机数的随机数发生器。例如,根据计算节点所共享的随机数,通过多方安全计算指令向各计算节点配置用于按照同样随机数生成规则生成共享随机数的随机数发生器。例如,根据执行代码所生成的多方安全计算指令,计算节点S1和S2共享随机数r12,则计算节点S1和S2中所配置的随机数发生器共用同样的随机数发生规则,由此有效避免计算节点S1和S2之间对随机数r12的通信操作。
按照所述多方安全计算指令,所述计算引擎中至少部分计算节点根据所述计算配置执行所述执行代码,分别对各自所获取的私密数据组进行本地计算,和/或将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果。
其中,根据执行代码,所述多方安全计算指令可指示部分计算节点仅执行本地计算,并得到计算结果。在一些示例中,所述多方安全计算指令包含基于执行代码中具有同态性的计算而生成的指令;按照所述多方安全计算指令,所述计算引擎中的计算节点执行本地计算并得到相应的计算结果。其中,所述同态性表示可具有一个封闭的具有结合律的运算,例如,加法计算等。在利用所述计算引擎执行加法计算时,多方安全计算指令可指示两个计算节点执行输入数据A1和A2的加法计算,并得到各自持有的计算结果。数据获取设备可通过获取该两个计算节点的计算结果得到A1+A2的处理结果。
在又一些示例中,多方安全计算指令包含指令计算节点分别对各自所获取的私密数据组进行本地计算的指令,以及将本地计算所产生的中间数据进行交互的指令。在一些具体示例中,多方安全计算指令可对应执行代码中所涉及的每个计算。在又一些具体示例中,所述多方安全计算指令包含基于执行代码中多个计算之间的关联关系而设置的指令。其中,所述多个计算之间的关联关系包括但不限于:计算优先级关系、计算同态性、计算可同步性、计算所需的输入数据的随机分散处理方式等。根据所述关联关系,所述任务管理单元或计算引擎优化了各计算节点的本地计算和数据交互,由此各计算节点按照优化后的多方安全计算指令执行本地计算的指令,以及计算节点执行数据交互的指令。例如,执行代码中包含(X+Y)×Z,多方安全计算指令包含:指示两个计算节点执行本地计算得到对应(X+Y)多方安全计算的指令,指示该两个计算节点将各自持有的对应(X+Y)多方安全计算的计算结果作为中间数据,并进行随机分散处理的指令,指示四个计算节点执行对应(X+Y)×Z多方安全计算的指令等。又如,执行代码中包含提取(X-Y)的最高位,多方安全计算指令包含:指示两个计算节点执行本地计算得到对应(X-Y)多方安全计算的指令,指示该两个计算节点将各自持有的对应(X-Y)多方安全计算的计算结果作为中间数据,并进行随机分散处理的指令,指示四个计算节点执行基于所述计算结果执行位提取的多方安全计算的指令等。
在此,在计算引擎得到对应执行代码的计算结果后,数据获取设备从所述四个计算节点中而选取的部分计算节点所持有的计算结果用于生成一处理结果;其中,所述处理结果为所述执行代码处理输入数据的处理结果。
在此,所述计算引擎通过执行多方安全计算指令得到由各计算节点分别持有的计算结果,其中,每个计算节点所持有的计算结果可以为一个或多个。例如,每个计算节点所持有的计算结果为两个。执行代码的数据获取设备按照计算节点的计算角色,从执行执行代码的四个计算节点中选取部分计算节点所持有的计算结果,并执行利用所得到的计算结果生成所述处理结果的计算指令,由此完成对包含输入数据的执行代码,并得到相应的处理结果。又如,各所述计算节点所持有的计算结果为两个,所述计算模块按照计算节点的计算角色从四个计算节点中选取两个计算节点并获取其持有的所有计算结果,再利用对所得到的四个计算结果进行计算,来得到对应执行代码的处理结果。利用上述示例中的处理方式,计算模块所得到的处理结果的数量为两个,若两个处理结果相同,则计算模块可认定计算引擎所执行的执行代码正确,反之,则不正确。由此可见,采用四选二的方式来提取计算结果还具有验证处理结果正确性的作用。
在此,根据实际执行代码的设计需求,所述计算模块可以是输入数据的提供方,如数据源,由此避免输入数据被泄露;所述计算模块还可以是产生执行代码的终端设备,如用户输入程序所使用的计算机设备。
为此,按照多方安全计算协议而生成的多方安全计算指令描述了可提供四选二的多方安全计算方式的多方安全计算过程。
在一些示例中,执行代码中包含对两个输入数据进行数学计算的执行代码,比如,在统计算法中包含汇总两个输入数据的总和的执行代码。再如,在基于输入数据构建的评价算法中包含权重与输入数据进行乘法的执行代码等。
在此,令四个计算节点基于所获取的私密数据组执行本地数学计算,以及令四个所述计算节点利用所述随机数执行本地计算以及利用一次置换数据的数据交互得到分别持有的计算结果。其中所述置换数据的数据操作表示两个计算节点互换中间数据。
在一些具体示例中,所述执行代码包含两个输入数据的乘法执行代码,各计算节点所获取的私密数据组分别为{x1,y1},{x2,y2},{xa,ya},{xb,yb},其中,x1=xa=X-x2且x2=xb,以及y1=ya=Y-y2且y2=yb,其中,X和Y为两个待进行乘法计算的输入数据;各计算节点分别进行基于乘法的本地计算以得到中间数据,以及通过置换的交互方式获取对方的中间数据,并基于本地生成的和置换得到的中间数据,各计算节点得到分别持有的计算结果。
在另一些具体示例中,四个所述计算节点利用两两共享的随机数和各自所获取的私密数据进行本地计算并产生中间数据,并在四个所述计算节点之间执行一次置换中间数据的数据交互;四个所述计算节点基于交互后的中间数据得到分别持有的计算结果。
其中,以所述计算引擎中的第一计算节点、第二计算节点、第三计算节点和第四计算节点依次获取私密数据组{x1,x′1,y1,y′1},私密数据组{x2,x′2,y2,y′2},私密数据组{xa,x′a,ya,y′a},以及私密数据组{xb,x′b,yb,y′b};其中,{x1,x′1,x2,x′2,xa,x′a,xb,x′b}是输入数据X经随机分散处理得到的,{y1,y′1,y2,y′2,ya,y′a,yb,y′b}是输入数据Y经随机分散处理得到的。其中,各私密数据可满足下述示例的随机分散规则:x2=X-x1=xa,x1=xb,x′2=X-x′1=x′b,x′1=x′a
在此,各计算节点得到各自的私密数据组后,执行以下各步骤,以实现在执行一次置换数据的数据交互情况下得到各自持有的计算结果:令所述第一计算节点和第二计算节点共享随机数r12和r′12,以及令所述第三计算节点和第四计算节点共享随机数rab和r′abr′ab。其中,利用共享的随机数可提高计算节点的数据安全性。为了减少各计算节点对于共享的随机数进行数据通信的情况,各随机数可在生成多方安全计算指令时产生,或者多方安全计算指令中包含用于按照同样随机数生成规则生成共享随机数的随机数发生器(又称为“种子”),如此,第一计算节点和第二计算节点得到相同的随机数r12和r′12,以及所述第三计算节点和第四计算节点得到相同的随机数rab和r′ab
然后,令所述第一计算节点和第二计算节点分别对各自所持有的私密数据组进行乘法计算和用于抵消随机数r12和r′12的数学计算,以便第一计算节点得到中间数据t1和t′1,以及第二计算节点得到中间数据t2和t′2
在此,令第一计算节点执行基于公式t1=x1×y′1-r12,和t′1=x′1×y1-r′12的本地计算并得到中间数据t1和t′1;以及令所述第二计算节点进行基于公式t2=x2×y′2+r12,以及基于公式t′2=x′2×y2+r′12本地计算得到中间数据t2和t′2
需要说明的是,上述采用令第一计算节点对随机数做减法,以及令第二计算节点对随机数做加法的方式仅为举例,也可以采用令第一计算节点对随机数做加法,以及令第二计算节点对随机数做减法的方式。
然后,令所述第三计算节点和第四计算节点分别对各自所持有的私密数据组进行乘法计算和用于抵消随机数rab和r′ab的数学计算,以便第一计算节点得到中间数据ta和t′a,以及第二计算节点得到中间数据tb和t′b
在此,令所述第三计算节点执行基于公式ta=xa×y′a-rab,以及基于公式t′a=x′a×ya-r′ab本地计算得到中间数据ta和t′a;以及令所述第四计算节点执行基于公式tb=xb×y′b+rab,以及基于公式t′b=x′b×yb+r′ab本地计算得到中间数据tb和t′b
需要说明的是,上述采用令第三计算节点对随机数做减法,以及令第四计算节点对随机数做加法的方式仅为举例,也可以采用令第三计算节点对随机数做加法,以及令第四计算节点对随机数做减法的方式。
然后,令第一计算节点和第三计算节点置换各自的一个中间数据,以及第一计算节点和第四计算节点置换各自的一个中间数据;令第二计算节点和第三计算节点置换各自的一个中间数据,以及第二计算节点和第四计算节点置换各自的一个中间数据。
在此,利用四个计算节点之间不以抵消随机数为目的而构建的数据交互关系,将参有随机数的中间数据进行置换。
例如,令第一计算节点将中间数据t1发送至第四计算节点,以及将中间数据t′1发送至第三计算节点;令第二计算节点将中间数据t2发送至第三计算节点,以及将中间数据t′2发送至第四计算节点;令第三计算节点将中间数据ta发送至第二计算节点,以及将中间数据t′at′a发送至第一计算节点;以及令第四计算节点将中间数据tb发送至第一计算节点,以及将中间数据t′b发送至第二计算节点。
需要说明的是,上述置换方式是根据于多方乘法计算而设置的,根据实际计算节点执行的乘法本地计算,上述置换方式可做适应性调整,在此不再一一举例。
在此,若私密数据和共享的随机数是在值域内随机得到的,则每个计算节点执行一次置换数据的数据交互,每个计算节点共发出不超过2n位数据。为此,对于包含两个输入数据的数学计算的执行代码来说,所述计算引擎执行所述执行代码期间产生不多于2×4次基于置换数据的数据通信;以及所述计算引擎执行所述执行代码期间产生不多于2n×4比特数据量的数据通信。以两个输入数据均为私有数据为例,所述计算引擎执行所述执行代码期间产生2×4次基于置换数据的数据通信,以及所述计算引擎执行所述执行代码期间产生2n×4比特数据量的数据通信。以两个输入数据中有一个私有数据为例,所述计算引擎执行所述执行代码期间产生少于2×4次基于置换数据的数据通信,以及所述计算引擎执行所述执行代码期间产生少于2n×4比特数据量的数据通信。
然后,令各计算节点分别利用基于置换操作而配对的中间数据执行包含加法的本地计算,以便每个计算节点得到两个包含可抵消随机数的计算结果。
在此,第一计算节点执行基于公式z1=t1+tb和z′1=t′1+t′a的本地计算,得到计算结果z1和z′1;第二计算节点执行基于公式z2=t2+ta和z′2=t′2+t′b的本地计算,得到计算结果z2和z′2;第三计算节点执行基于公式za=ta+t2和z′a=t′a+t′1的本地计算,得到计算结果za和z′a;第四计算节点执行基于公式zb=tb+t1和z′b=t′b+t′2的本地计算,得到计算结果zb和z′b
需要说明的是,上述各计算公式仅为举例。在又一些示例中,根据输入数据的随机分散处理方式,上述部分或全部公式所表示的数学计算还可以由例如基于二进制数的数学计算形式表示。在此不再详述。
所述计算模块可根据上述计算协议所确定的包含可抵消的随机数的两个计算节点,选择第一计算节点和第三计算节点,或者第二计算节点和第四计算节点,并通过加和方式抵消计算节点所生成的随机数,并得到两个对应XY乘法执行代码的处理结果,或处理结果的倍数。按照上述示例所得到的处理结果可以为两个,若两个处理结果相同,则表示得到的XY乘法计算的处理结果,反之,则表示计算出错。
在另一些示例中,所述执行代码包含三个输入数据进行数学计算,例如,在利用神经网络对输入数据进行分类的算法中包含以权重、输入数据和偏置为三个输入数据进行数学计算的执行代码等。在一些示例中,令四个所述计算节点利用第一次置换数据的数据交互得到各自持有的对应输入数据X和Y计算的第一计算结果并将其作为中间数据;以及令四个所述计算节点利用对所述中间数据进行第二次置换数据的数据交互得到各自持有的所述计算结果;以及在两次置换数据前,令四个所述计算节点基于所述随机数执行本地计算。其中,各自持有的所述计算结果用于处理对输入数据X、Y和Z的执行代码。
在一些具体示例中,所述执行代码包含三个输入数据X、Y和Z的乘法执行代码,各计算节点所获取的私密数据组分别为{x1,y1,z1},{x2,y2,z2},{xa,ya,za},{xb,yb,zb},其中,x1=xa=X-x2且x2=xb;y1=ya=Y-y2且y2=yb;以及z1=za=Z-z2且z2=zb;可参考前述示例提供的计算输入数据X和Y的乘法执行代码,四个计算节点利用一次数据交互得到对应输入数据X和Y执行代码的第一计算结果并将其作为中间数据;再以该中间数据和对应Z的私密数据进行基于一次数据交互而执行的多方安全计算,由此得到各自持有的计算结果,其用于生成包含三个输入数据的执行代码的处理结果。
在此,各计算节点得到各自的私密数据组后,执行以下各步骤,以计算三个输入数据的乘法执行代码。其中,各计算节点所获取的私密数据组包括:{x1,y′1,z1},{x2,y′2,z2},{xa,y′a,za},{xb,y′b,zb};其中,x1=xa=X-x2且x2=xb;y′1=y′a=Y-y′2且y′2=y′b;以及z1=za=Z-z2且z2=zb
首先,令所述第一计算节点和第二计算节点共享一随机数r12和r′12,以及令所述第三计算节点和第四计算节点共享一随机数/>rab和r′ab。在此,各随机数的共享方式可与前述示例中提及的方式相同,在此不再重述。
然后,令四个所述计算节点分别对涉及输入数据X和Y的私密数据进行乘法计算和用于抵消随机数和/>的数学计算,以便第一计算节点得到中间数据t1,第二计算节点得到中间数据t2,第三计算节点得到中间数据ta,第四计算节点得到中间数据tb
在此,令所述第一计算节点基于公式本地计算得到中间数据t1;令所述第二计算节点分基于公式/>本地计算得到中间数据t2;令所述第三计算节点基于公式/>本地计算得到中间数据ta;以及令所述第四计算节点基于公式/> 本地计算得到中间数据tb
需要说明的是,上述采用令第一计算节点对随机数做减法,以及令第二计算节点对随机数/>做加法的方式仅为举例,也可以采用令第一计算节点对随机数/>做加法,以及令第二计算节点对随机数/>做减法的方式。上述采用令第三计算节点对随机数/>做减法,以及令第四计算节点对随机数/>做加法的方式也同样为举例,也可以采用令第三计算节点对随机数/>做加法,以及令第四计算节点对随机数/>做减法的方式。
然后,令第一计算节点和第三计算节点置换各自的中间数据;令第二计算节点和第三计算节点置换各自的中间数据。
在此,第一计算节点将中间数据结果t1发送给第三计算节点,以及第三计算节点将中间数据ta发送给第一计算节点;以及第二计算节点将中间数据结果t2发送给第四计算节点,以及第四计算节点将中间数据tb发送给第二计算节点。
需要说明的是,上述置换方式是根据于多方乘法计算而设置的,根据实际计算节点执行的乘法本地计算,上述置换方式可做适应性调整,在此不再一一举例。
然后,令各计算节点利用所持有的各中间数据和对应输入数据Z的私密数据进行乘法的数学计算,以便第一计算节点得到中间数据s1,第二计算节点得到中间数据s2,第三计算节点得到中间数据sa,第四计算节点得到中间数据sb
在此,第一计算节点基于公式s1=(t1+ta)×z1的本地计算;第二计算节点基于公式s2=(t2+tb)×z2的本地计算;第三计算节点基于公式sa=(ta+t1)×za的本地计算;第四计算节点基于公式sb=(t2+tb)×zb的本地计算。
然后,令所述第一计算节点和第二计算节点分别对各自所持有的中间数据s1和s2进行乘法计算和用于抵消随机数h12和r′12的数学计算,以便第一计算节点得到中间数据h1和h′1,以及第二计算节点得到中间数据h2和h′2;以及令所述第三计算节点和第四计算节点分别对各自所持有的中间数据sa和sb进行乘法计算和用于抵消随机数rab和r′ab的数学计算,以便第三计算节点得到中间数据ha和h′a,以及第四计算节点得到中间数据hb和h′b
在此,令第一计算节点执行基于公式h1=s1-r12,和h′1=s1-r′12的本地计算并得到中间数据h1和h′1;以及令所述第二计算节点进行基于公式h2=s2+r12,以及基于公式h′2=s2+r′12本地计算得到中间数据h2和h′2。令第三计算节点执行基于公式ha=sa-rab,和h′a=sa-r′ab的本地计算并得到中间数据ha和h′a;以及令所述第四计算节点进行基于公式hb=sb+rab,以及基于公式h′b=sb+r′ab本地计算得到中间数据hb和h′b
需要说明的是,上述置换方式是根据于多方乘法计算而设置的,根据实际计算节点执行的乘法本地计算,上述置换方式可做适应性调整,在此不再一一举例。
然后,令第一计算节点和第三计算节点置换各自的一个中间数据,以及第一计算节点和第四计算节点置换各自的一个中间数据;令第二计算节点和第三计算节点置换各自的一个中间数据,以及第二计算节点和第四计算节点置换各自的一个中间数据。
在此,令第一计算节点和第四计算节点置换中间数据h1和hb;令第一计算节点和第三计算节点置换中间数据h′1和h′a;令第二计算节点和第三计算节点置换中间数据h2和ha;以及令第二计算节点和第四计算节点置换中间数据h′2和h′b
需要说明的是,上述置换方式是根据于多方乘法计算而设置的,根据实际计算节点执行的乘法本地计算,上述置换方式可做适应性调整,在此不再一一举例。
最后,令各计算节点分别利用基于置换操作而配对的中间数据执行包含加法的本地计算,以便每个计算节点得到两个包含可抵消随机数的计算结果。
在此,第一计算节点执行基于公式z1=h1+hb和z′1=h′1+h′a的本地计算,得到计算结果z1和z′1;第二计算节点执行基于公式z2=h2+ha和z′2=h′2+h′b的本地计算,得到计算结果z2和z′2;第三计算节点执行基于公式za=ha+h2和z′a=h′a+h′1的本地计算,得到计算结果za和z′a;第四计算节点执行基于公式zb=hb+h1和z′b=h′b+h′2的本地计算,得到计算结果zb和z′b
需要说明的是,上述各计算公式仅为举例。在又一些示例中,根据输入数据的随机分散处理方式,上述部分或全部公式所表示的数学计算还可以由例如基于二进制数的数学计算形式表示。在此不再详述。
所述计算模块可根据上述计算协议所确定的包含可抵消的随机数的两个计算节点,选择第一计算节点和第三计算节点,或者第二计算节点和第四计算节点,并通过加和方式抵消计算节点所生成的随机数,并得到两个对应XYZ乘法执行代码的处理结果,或处理结果的倍数。按照上述示例所得到的处理结果可以为两个,若两个处理结果相同,则表示得到的XYZ乘法计算的处理结果,反之,则表示计算出错。
在此,若私密数据和共享的随机数是在值域内随机得到的,则在第一次置换数据时,每个计算节点发出不多于n个比特数据量,以及在第二次置换数据时,每个计算节点发出不多于2n个比特数据量。为此,所述执行代码包含三个输入数据的数学计算的执行代码,所述计算引擎执行所述执行代码期间产生不超过3×4次基于置换数据的数据通信,以及所述计算引擎执行所述执行代码期间产生不多于3n×4比特数据量的数据通信。以三个输入数据均为私有数据为例,所述计算引擎执行所述执行代码期间产生3×4次基于置换数据的数据通信,以及所述计算引擎执行所述执行代码期间产生3n×4比特数据量的数据通信。以三两个输入数据中有至少一个私有数据为例,所述计算引擎执行所述执行代码期间产生少于3×4次基于置换数据的数据通信,以及所述计算引擎执行所述执行代码期间产生少于3n×4比特数据量的数据通信。
在又一些示例中,根据业务逻辑的设计,执行代码中还可能包含位提取。例如按照通信协议提取某一位比特的执行代码。例如包括:四个所述计算节点利用k轮次1比特置换数据的数据交互得到各自持有的计算结果,其中,所述计算结果用于提取输入数据X中二进制位;k为对应所述执行代码中输入数据X的待提取的二进制位数。在此,四个计算节点通过本地进行位计算生成包含有可抵消1比特随机数的中间数据(1比特),并通过k轮次的中间数据的数据交互得到计算结果。
在一些具体示例中,所述多方执行代码包括提取输入数据X中二进制位的执行代码;所述计算引擎中的第一计算节点、第二计算节点、第三计算节点和第四计算节点依次获取私密数据组{x1},私密数据组{x2},私密数据组{xa},以及私密数据组{xb};其中,{x1,x2,xa,xb}是输入数据X经随机分散处理得到的二进制表示的私密数据,其中,各私密数据与输入数据X具有相同的二进制位数k。
在一些实施例中,各计算节点分别初始化用于输出的比特位值{c1,c′1},{c2,c′2},{ca,c′a},{cb,c′b};以及令所述第一计算节点和第二计算节点共享随机数r12和b12;以及令所述第三计算节点和第四计算节点共享随机数bab;其中,初始化的各比特位值举例为0。所述随机数r12、b12和bab是基于提取位数k而生成的二进制随机数。其中,所述随机数共享和生成方式与前述示例中提及的方式相同或相似,在此不再重述。然后,令第一计算节点和第二计算节点利用随机数h12对各自持有的私密数据x1和x2对第k位进行逻辑处理,以得到具有第k位统一的二进制中间数据u1和u2。在此,令第一计算节点进行基于公式的本地计算得到中间数据u1;并提供给第三计算节点;以及令第二计算节点进行基于公式u2=x2[1:k]∧r12本地计算得到中间数据u2
需要说明的是,根据实际设计需要,上述各计算节点的逻辑处理可以被调整,其他为k轮次循环而进行预处理,并得到具有第k位统一的二进制中间数据u1和u2的方式应视为基于本申请所提供的示例而进行数学计算调整得到的一种具体示例。
然后,令第一计算节点将中间数据u1发送给第三计算节点,并由第三计算节点进行基于公式u1∧xa的逻辑计算并得到中间数据ua
然后,基于k值而设置以下循环计算:各计算节点对私密数据x1的第i位和输出比特位置进行带有基于所共享的随机数b12或bab的逻辑计算,并得到第i轮次的中间数据;以及将每轮次得到的中间数据进行置换处理,并赋值相应的输出比特位;其中,第一计算节点与第三计算节点进行中间数据的置换处理,以及第二计算节点与第四计算节点进行中间数据的置换处理。
例如,参见如下利用程序语言习惯来描述的基于k值而设置的循环计算:
For(i=1;i<=k-1;i=i+1){
S1计算并将t′1发送至Sa.
S2计算并将t′2发送至Sb.
Sa计算并将t′a发送至S1
Sb计算并将t′b发送至S2
S1赋值S2赋值/>Sa赋值/>Sb赋值/>}
其中,S1、S2、Sa和Sb依次表示第一计算节点、第二计算节点、第三计算节点和第四计算节点。
然后,各计算节点利用被赋值的输出比特位、随机数对各自持有的私密数据的第k位比特值进行逻辑计算得到计算结果。
例如,第一计算节点基于公式的本地计算得到计算结果c′1;第二计算节点进行基于公式/>本地计算得到计算结果c′2;第三计算节点进行基于公式/>本地计算得到计算结果ca;第四计算节点进行基于公式/> 本地计算得到计算结果cb
需要说明的是,上述示例中的公式与前述k轮次的处理方式相关,并可根据实际k轮次的位处理方式进行调整。
最后,第一计算节点将计算结果c′1提供给第三计算节点;第二计算节点将计算结果c′2提供给第四计算节点;第三计算节点将计算结果ca提供给第二计算节点;第四计算节点将计算结果cb提供给第一计算节点,以便各计算节点持有得到便于校验处理结果的两个计算结果。
当然,在一些示例中,任务管理模块可以配置在本地之外(所述数据处理系统外)的设备上,即,在一个实施例中,所述计算引擎还可以设置在所述数据处理系统外,所述计算引擎与所述数据处理系统通信连接。请参阅图8,显示为本申请数据处理系统在另一实施例中的架构示意图。如图所示,所述数据处理系统7通过一展示界面展示所述输入数据81和所述执行代码82,此外,还包括任务管理模块83,接口单元84,计算引擎85以及多个计算节点86。
所述计算引擎85包括任务管理模块83和多个计算节点86,所述任务管理模块83用于获取所述计算指令以及处理所述计算指令的计算配置;所述多个计算节点86用于根据所述计算配置执行所述执行代码82以使所述多个计算节点86进行多方安全计算。
与前述示例类似,所述计算配置包括:执行所述计算任务的秘密计算方式,和按照所述秘密计算方式执行所述计算任务的计算节点数量。其中,所述计算节点数量可由秘密计算方式确定。其中,所述计算配置已在前述描述,在此不再赘述。
在一些示例中,所述数据处理系统还包括一接口单元,用于接收所述计算引擎经由各计算节点分别持有的计算结果与所述输入数据相关的计算结果。例如,如图所示,所述数据处理系统8包括一接口单元84,并通过所述接口单元84网络连接所述计算引擎85(所述连接的方式在图中未示出),从而接收所述计算引擎85经由各计算节点86分别持有的计算结果与所述输入数据81相关的计算结果。为此,所述网络接口包括但不限于网卡、移动网络接入模块、通过总线与计算引擎相连的总线接口等。所述网络接口还与计算节点通信连接,其中,所述计算节点是由所述计算模块执行所述计算指令而选定的,所述计算节点可以为一个或多个。所述计算节点可以为一实体计算设备,或由实体计算设备承载的虚拟设备。所述网络接口通过互联网、移动网络、及局域网络中至少一种与各计算节点进行数据通信,以便向各计算节点发送用于秘密计算的计算指令。
为了便于技术人员利用秘密计算方式实现业务逻辑中的执行代码,所述任务管理模块还获取用于处理所述执行代码的计算配置。在此,在一些示例中,用于描述业务逻辑的程序中包含可执行秘密计算的接口程序,通过调用相应接口程序来确定执行相应执行代码的计算配置。例如包含x=p.ss(client ID)的执行代码,其中,利用p.ss()接口程序提供了用于执行与私有数据x相关的计算配置,即采用基于四个计算节点的秘密计算方式进行秘密计算。需要说明的是,根据实际设计需要,所述计算模块还可根据执行代码中的参数设置来确定计算配置,例如,所调用的接口程序中设有用于描述使用或不使用秘密计算方式进行数据处理的布尔参数、和/或对应计算配置的参数等。
在又一示例中,技术人员可通过勾选用于描述计算配置的选项,来确定私有数据x执行秘密计算的方式。例如,技术人员通过浏览器或客户端的操作界面在私有数据所在栏勾选一计算配置选项,则计算模块获取处理该私密数据的执行代码的计算配置。
在此,所述计算配置用于指明对私有数据进行秘密计算的方式,其包括但不限于:计算方式、数据通信方式、和隐私化处理方式等。其中,所述计算方式包括采用同态加密计算方式、采用混淆电路计算方式、或多计算节点协同计算的方式等。所述数据通信方式包括采用秘密分享计算方式、基于认证而传输数据的通信方式、利用密钥进行数据通信方式中的至少一种等。其中,秘密分享计算方式举例包含利用秘密分享技术执行基于SPDZ秘密计算架构而确定的秘密计算方式,或者利用秘密分享技术执行基于四选二秘密计算架构而确定的秘密计算方式。其中,所述秘密计算架构还可以举例为三选二等。其中,四选二秘密计算架构和三选二秘密计算架构是指由四个(或三个)计算节点参与秘密计算并由两个计算节点提供计算结果。例如,最多采用四个计算节点的秘密计算架构的秘密计算方式。所述隐私化处理方式参照上述示例,此处不再赘述。
需要说明的是,根据秘密计算架构的设计需要,参与计算节点的数量不限于上述示例,以及提供计算结果的计算节点数量也不限于上述示例。例如,所述计算配置中包含利用秘密分享技术和混淆电路配合的计算方式执行由预设数量的多个计算节点参与计算的秘密计算方式;其中,各计算节点中配置有可执行混淆电路的处理芯片并利用秘密分享技术进行数据交互。
藉由上述各示例可见,所述计算配置包括:执行所述执行代码的秘密计算方式,和按照所述秘密计算方式执行所述执行代码的计算节点数量。其中,所述计算节点数量可由秘密计算方式确定。
所述计算引擎包括多个计算节点,用于根据所述计算配置执行所述执行代码以使所述多个计算节点进行多方安全计算,所述计算节点可以为一实体计算设备,或由实体计算设备承载的虚拟设备。
在此,构成计算引擎的多个计算节点可以是固定配置的。在本申请实施例中,以四个计算节点构成所述计算引擎为例。或者该多个计算节点基于任务管理模块基于选取规则来选择的;其中,所述选取规则举例包括计算节点的属性信息。其中,计算节点的属性信息可存储在任务管理模块中的配置文件(或日志文件等)中。或者,所述属性信息可由任务管理模块维护且可动态更新,其包括但不限于:各计算节点的设备信息,各计算节点所在实体服务器的设备提供商信息等。其中,所述设备信息举例为实体设备的设备信息(如IP地址、MAC地址等)、或者为虚拟设备的设备信息(如虚拟设备ID等)。
从多方安全计算方式方面来说,所述各计算节点可以根据预先对各计算节点执行多方安全计算而配置相应的执行程序或处理芯片。从计算节点的设备配置来说,所述计算节点为单台计算机设备、或基于云架构的服务系统中被使用的实体设备或虚拟设备等。其中,所述单台计算机设备可以是自主配置的可执行所述计算多方安全计算指令的计算机设备,其可位于私有机房或位于公共机房中的某个被租用的机位中。例如,由数据源作为计算节点(或计算节点之一);所述计算节点还可以位于任务管理模块一侧,例如,所述任务管理模块为计算节点(或计算节点之一)。故而计算节点的实体或虚拟设备的形态和所设置的地理位置不做限定。例如,计算节点可以位于同一实体服务器的不同虚拟设备上且通过管理权限进行单独管理。所述云架构的服务系统包括公共云服务端与私有云服务端,其中,所述公共或私有云服务端包括SaaS、PaaS及IaaS等。所述私有云服务端例如阿里云计算服务平台、亚马逊云计算服务平台、百度云计算平台、腾讯云计算平台等等。其中,所述虚拟设备可以是实体服务器通过虚拟技术将一台独占设备虚拟成多台逻辑设备,供多个用户进程同时使用的设备之一。
所述计算节点可包含存储装置、处理装置、网络接口装置等。事实上,根据计算节点实际运行的计算方法的硬件装置,上述各装置可位于单台服务器上,或位于多台服务器中并通过各服务器之间的数据通信完成单一计算节点所执行的多方安全计算指令。
所述任务管理模块用于获取一执行代码,并生成包含有所述执行代码的信息的多方安全计算指令。其中,任务管理模块按照预先构建的对应各执行代码的多方安全计算协议,预先将执行代码转换成所述多方安全计算指令,并生成包含所述执行代码的信息的多方安全计算指令,并发送给计算引擎。其中,所述多方安全计算协议为指示并调度计算引擎中各计算节点执行对应执行代码的多方安全计算的过程,其包括但不限于:描述加法、减法、乘法或除法等数学计算的执行代码的多方安全计算执行过程,描述逻辑和、逻辑或、逻辑非、逻辑异或、逻辑比较等逻辑计算的执行代码的多方安全计算执行过程,描述秘密传输的多方安全计算执行过程等。
所述多方安全计算指令包括:为采用多方安全计算的方式执行或运行执行代码而指示计算引擎中四个计算节点进行本地计算的指令,计算节点之间执行数据交互的指令,获取输入数据的指令,以及生成随机数的指令等中的一种或多种。所述多方安全计算指令还可以包含指示计算节点执行本地计算和数据交互的计算角色的指令。所述多方安全计算指令可以由计算机程序语言来描述,或者由机器语言来描述。
根据前述各生成多方安全计算指令的示例,在一些示例中,所述多方安全计算指令直接来自于任务管理模块。在另一种示例中,所述多方安全计算指令基于所获取的执行代码而生成。
在一些示例中,计算引擎的各计算节点获取对应执行代码的完整的多方安全计算指令,即获取包含有每个计算节点执行的计算指令,为此,为使每个计算节点协同执行,各所述计算节点获取所述多方安全计算指令及计算角色;以供各计算节点按照所分别获取的计算角色执行所述多方安全计算指令。其中,所述计算角色用于标记所述多方安全计算指令中各执行本地计算的计算节点,以及标记所述多方安全计算指令中执行计算节点之间的交互时数据发送方和数据接收方等。
在又一些示例中,计算引擎的各所述计算节点分别获取所述多方安全计算指令中对应本地执行的多方安全计算指令。其中,所述本地执行的多方安全计算指令包含用于执行本地计算的指令,为执行数据交互而发出本地存储的数据的指令,为执行数据交互而将所接收的数据存储本地的指令,获取经处理的输入数据的指令,生成随机数的指令等。例如,所述多方安全计算指令包含计算节点S1执行生成随机数r12的指令P1,计算节点Sa执行生成随机数rab的指令Pa等,则计算节点S1获取指令P1,计算节点Sa获取指令Pa。
为执行或运行执行代码,所述计算引擎中各计算节点还获取私密数据组。其中,所述私密数据组包含来自所述执行代码所需的所有输入数据经随机分散处理而得到的私密数据组成的,例如,执行代码需要两个输入数据X和Y,则各计算节点得到的私密数据组包含{xi,yj},其中,xi和yj分别为X和Y经随机分散后得到的私密数据。在此,私密数据组中对应X的私密数据可以为多个,但不应该多到可通过恢复运算得到输入数据X的程度,同理可类似的还有输入数据Y,在此不予详述。
在此,根据执行代码中输入数据的数据来源,所述计算引擎可从一个或多个数据源获取输入数据。其中,根据包含输入数据为私有数据或非私有数据的执行代码,对应的所述计算引擎还获取作为输入数据的非私有数据;以及多方安全计算指令是基于非私有数据而确定的。换言之,多方安全计算指令不必然一定使用所述计算引擎中的所有计算节点。可根据输入数据为私有数据或非私有数据而设置对应的计算指令。在一些具体示例中,执行代码所涉及的输入数据均为非私有数据,则对应的多方安全计算指令为指令一个计算节点执行各计算指令。在又一些具体示例中,执行代码所涉及的输入数据包含私有数据和非私有数据,则对应的多方安全计算指令包含针对非私有数据的优化多方安全计算的计算指令。例如,输入数据包含私有数据A1和非私有数据A2,执行代码包含计算A1和A2乘积,则多方安全计算指令包含令计算节点S1计算a1×A2的指令,以及令计算节点S2计算a2×A2的指令;其中,a1和a2为A1经随机分散处理后得到的私密数据。在再一些具体示例中,输入数据包含私有数据A1和A3,执行代码包含计算A1和A3乘积,则多方安全计算指令包含令计算节点S1计算a11×a31的指令,令计算节点S2计算a12×a32的指令,计算节点Sa计算a13×a33的指令,计算节点S计算a14×a34的指令,令计算节点S1与Sa进行置换数据的指令,令计算节点S2与Sb进行置换数据的指令,以及令各计算节点基于置换得到的数据和本地计算得到的数据进行计算的指令等;其中,a11和a12,以及a13和a14分别为输入数据A1经随机分散处理得到的私密数据;a31和a32,以及a33和a34分别为输入数据A3经随机分散处理得到的私密数据。由上述各示例可见,所述多方安全计算指令是根据执行代码中输入数据所包含的非私有数据而确定的。
其中,为符合数据源对所述输入数据的隐私性要求,在一些示例中,任务管理模块根据执行代码向相应数据源发出包含对私密数据分配方式的指令信息。其中,所述任务管理模块根据所述执行代码所对应的多方安全计算指令中私密数据组的计算需要,向相应数据源请求将输入数据进行随机分散处理,数据源按照所提供的分配方式将随机分散后的各私密数据分发给所述计算引擎中各计算节点。在又一些示例中,用于执行执行代码的输入数据具有相同的随机分散处理方式,则所述任务管理模块可根据预先与各数据源约定的数据分配规则,提供各计算节点设备信息和所对应的私密数据组的编号,以便数据源根据编号分配所处理后的各私密数据。在另一些示例中,所述私密数据组还可以由计算引擎中的各计算节点直接向数据源请求而被获取。例如,所述计算引擎中各计算节点根据所获取的多方安全计算指令所提供能够的数据源向相应数据源发出包含获取私密数据组中相应私密数据的数据请求,其中,所述数据请求包含数据源基于预设的计算引擎中各计算节点而设置的私密数据组的编号,由此各计算节点各自获得可执行多方安全计算的私密数据组。在再一些示例中,所述输入数据可由计算节点在执行计算指令过程中所产生的中间数据表示,例如,在包含混合计算的多方安全计算指令中,其中一个计算节点按照计算指令将中间数据进行随机分散成私密数据后,分配给另一个或多个计算节点等。
其中,所述输入数据可以为整数类型数据或浮点类型数据。其中,数据源可直接将整数类型数据进行隐私化处理。对于浮点类型数据,数据源将浮点类型数据进行二进制化处理,再进行隐私化处理,由此得到多个私密数据。其中,二进制化处理的方式举例包括IEEE754。例如,数据源所提供的输入数据为125.5,其二进制表示为1111101.1,以写成二进制的科学计数为:1.111101*2^6,E=e+127=133,即E的阶码133的二进制格式为10000101,所以125.5的32位二进制浮点数为0 10000101 11110100000000000000000。其中,第一位0表示数值正负符号,由此将125.5转换成32位二进制数0 1000010111110100000000000000000,并将该32位二进制数进行随机分散处理。当执行代码中进行数据计算的多个输入数据包含浮点类型数据时,可采用上述浮点数转二进制格式整数的方式统一各输入数据,再执行计算。
在此,所述随机分散处理是指将输入数据随机生成多个私密数据[xj],其中,私密数据[xj]通过可恢复的数学计算可得到相应的输入数据。在此基础上,私密数据组为输入数据基于所述计算引擎执行多方安全计算所需的随机分散处理方式而得到的;以及私密数据[xj]的数量是基于计算引擎所执行的多方安全计算指令和/或计算节点的数量而预先设置的。例如,执行代码中加法计算被配置成利用两个计算节点执行,相应输入数据被分散成由随机生成的第一私密数据,以及基于第一私密数据得到的第二私密数据,其中,第一私密数据和第二私密数据可恢复成所述输入数据,该两个私密数据被分配给不同计算节点进行计算。又如,执行代码中包含两个私有的输入数据的乘法计算,待处理的两个输入数据分别被随机分散成四组私密数据,每组私密数据用于分配给一个计算节点以得到各计算节点的私密数据组。
在一些具体示例中,所述随机分散处理方式包括:随机产生至少一个私密数据,按照所产生的私密数据将输入数据进行分散处理。在此,在一些更具体示例中,所述随机分散处理方式可基于执行计算的计算节点的数量而随机产生至少一个私密数据。例如执行代码中包含加法计算,执行该加法计算的计算节点数量为两个,则随机产生一个私密数据a1,并根据该私密数据a1将输入数据进行分散处理得到私密数据a1和a2。在又一些更具体示例中,所述随机分散处理方式可基于统筹执行代码所使用的各种计算而随机产生多个私密数据。例如执行代码中包含输入数据A1和A2的加法计算,以及输入数据A2和A3乘法计算,其中,加法计算由两个计算节点执行,乘法计算由四个计算节点指令,则为减少与数据源的交互次数,可将所有输入数据均随机分散成四个私密数据,由各计算节点根据执行指令提取相应的私密数据。例如,针对每个输入数据,均随机产生两个私密数据,并根据该两个私密数据将相应输入数据进行分散处理得到四个私密数据。在又一些更具体示例中,与前述示例不同的是,所述随机分散处理方式可基于统筹执行代码所使用的各种计算而随机产生一个私密数据,并根据该私密数据将输入数据随机分散成两个私密数据,并分配给不同计算节点,由各计算节点根据所执行的计算指令对所得到的私密数据发送给其他计算节点,或对所接收的私密数据进行再分散后发送给其他计算节点。
基于上述描述,以下举例一些随机分散方式的示例:在一些具体示例中,输入数据的随机分散处理方式包括针对数值的分散处理方式。所述随机分散处理方式包括:随机产生两个私密数据x1和x′1,基于所述私密数据x1和x′1将输入数据X分散成{x1,x′1,x2,x′2,xa,x′a,xb,x′b};其中,x2=X-x1=xa,x1=xb,x′2=X-x′1=x′b,x′1=x′a;各计算节点所获取的私密数据组中对应输入数据X的私密数据分别为{x1,x′1},{x2,x′2},{xa,x′a},{xb,x′b}。以执行代码为两个数相乘且其中一个输入数据是7为例,经随机分散处理输入数据7被分散成:私密数据包括{2,5}和{3,4};其中,2和3为随机生成的,分配给各计算节点的私密数据分别为{2},{5},{3},{4}。在此需要说明的是,该示例仅以其中一个输入数据的随机分散处理为例,而非仅限于两个数相乘的执行代码中仅有一个输入数据被执行随机分散处理。
还需要说明的是,上述随机处理的方式可以数据位n为约束,例如,随机产生的x1和x′1均限制在2n以内,其中,n表示x1和x′1的二进制位数。
在另一些具体示例中,所述输入数据包含比特值C;针对比特值的随机分散处理方式包括:随机产生两个比特位的私密数据c1和c′1,基于所述私密数据c1和c′1将输入数据C分散成用比特位表示的私密数据{c1,c′1,c2,c′2,ca,c′a,cb,c′b};其中,c1=cb,/> c′1=c′a;各计算节点所获取的私密数据组中对应输入数据C的私密数据分别为{c1,c′1},{c2,c′2},{ca,c′a},{cb,c′b}。以执行代码包含输入数据C为比特值1为例,将输入数据1随机分解为0和1,并按照上述公式得到{0,1,1,0}四个私密数据,分配给各计算节点的私密数据分别为{0,1},{1,0},{1,0},{0,1}。
需要说明的是,上述各示例中对输入数据进行随机分散的方式并非仅择一而用,而是可以根据执行代码进行结合。所述计算引擎中各计算节点从至少一个数据源或获取各输入数据的私密数据,并组成用于执行多方安全计算指令的私密数据组,以执行多方安全计算指令。
另外,借助输入数据包含私有数据A1和A3,执行代码包含计算A1和A3乘积的示例并推广至其他执行代码,为利用四个计算节点对私有数据所产生的私密数据进行在线的多方安全计算,各计算节点利用共享的随机数执行本地计算以得到可供抵消的中间数据或计算结果,由此确保在计算节点之间、计算节点与其他设备之间所传输的数据是无法泄密的。为此,各计算节点配置有产生所述随机数的随机数发生器。例如,根据计算节点所共享的随机数,通过多方安全计算指令向各计算节点配置用于按照同样随机数生成规则生成共享随机数的随机数发生器。例如,根据执行代码所生成的多方安全计算指令,计算节点S1和S2共享随机数r12,则计算节点S1和S2中所配置的随机数发生器共用同样的随机数发生规则,由此有效避免计算节点S1和S2之间对随机数r12的通信操作。
按照所述多方安全计算指令,所述计算引擎中至少部分计算节点分别对各自所获取的私密数据组进行本地计算,和/或将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果。
其中,根据执行代码,所述多方安全计算指令可指示部分计算节点仅执行本地计算,并得到计算结果。在一些示例中,所述多方安全计算指令包含基于执行代码中具有同态性的计算而生成的指令;按照所述多方安全计算指令,所述计算引擎中的计算节点执行本地计算并得到相应的计算结果。其中,所述同态性表示可具有一个封闭的具有结合律的运算,例如,加法计算等。在利用所述计算引擎执行加法计算时,多方安全计算指令可指示两个计算节点执行输入数据A1和A2的加法计算,并得到各自持有的计算结果。数据获取设备可通过获取该两个计算节点的计算结果得到A1+A2的处理结果。
在又一些示例中,多方安全计算指令包含指令计算节点分别对各自所获取的私密数据组进行本地计算的指令,以及将本地计算所产生的中间数据进行交互的指令。在一些具体示例中,多方安全计算指令可对应执行代码中所涉及的每个计算。在又一些具体示例中,所述多方安全计算指令包含基于执行代码中多个计算之间的关联关系而设置的指令。其中,所述多个计算之间的关联关系包括但不限于:计算优先级关系、计算同态性、计算可同步性、计算所需的输入数据的随机分散处理方式等。根据所述关联关系,所述任务管理模块或计算引擎优化了各计算节点的本地计算和数据交互,由此各计算节点按照优化后的多方安全计算指令执行本地计算的指令,以及计算节点执行数据交互的指令。例如,执行代码中包含(X+Y)×Z,多方安全计算指令包含:指示两个计算节点执行本地计算得到对应(X+Y)多方安全计算的指令,指示该两个计算节点将各自持有的对应(X+Y)多方安全计算的计算结果作为中间数据,并进行随机分散处理的指令,指示四个计算节点执行对应(X+Y)×Z多方安全计算的指令等。又如,执行代码中包含提取(X-Y)的最高位,多方安全计算指令包含:指示两个计算节点执行本地计算得到对应(X-Y)多方安全计算的指令,指示该两个计算节点将各自持有的对应(X-Y)多方安全计算的计算结果作为中间数据,并进行随机分散处理的指令,指示四个计算节点执行基于所述计算结果执行位提取的多方安全计算的指令等。
在此,在计算引擎得到对应执行代码的计算结果后,数据获取设备从所述四个计算节点中而选取的部分计算节点所持有的计算结果用于生成一处理结果;其中,所述处理结果为所述执行代码处理输入数据的处理结果。
在此,所述计算引擎通过执行多方安全计算指令得到由各计算节点分别持有的计算结果,其中,每个计算节点所持有的计算结果可以为一个或多个。例如,每个计算节点所持有的计算结果为两个。执行代码的数据获取设备按照计算节点的计算角色,从执行执行代码的四个计算节点中选取部分计算节点所持有的计算结果,并执行利用所得到的计算结果生成所述处理结果的计算指令,由此完成对包含输入数据的执行代码,并得到相应的处理结果。又如,各所述计算节点所持有的计算结果为两个,所述计算模块按照计算节点的计算角色从四个计算节点中选取两个计算节点并获取其持有的所有计算结果,再利用对所得到的四个计算结果进行计算,来得到对应执行代码的处理结果。利用上述示例中的处理方式,计算模块所得到的处理结果的数量为两个,若两个处理结果相同,则计算模块可认定计算引擎所执行的执行代码正确,反之,则不正确。由此可见,采用四选二的方式来提取计算结果还具有验证处理结果正确性的作用。
在此,根据实际执行代码的设计需求,所述计算模块可以是输入数据的提供方,如数据源,由此避免输入数据被泄露;所述计算模块还可以是产生执行代码的终端设备,如用户输入程序所使用的计算机设备。
为此,按照多方安全计算协议而生成的多方安全计算指令描述了可提供四选二的多方安全计算方式的多方安全计算过程。
在一些示例中,执行代码中包含对两个输入数据进行数学计算的执行代码,比如,在统计算法中包含汇总两个输入数据的总和的执行代码。再如,在基于输入数据构建的评价算法中包含权重与输入数据进行乘法的执行代码等。
在此,令四个计算节点基于所获取的私密数据组执行本地数学计算,以及令四个所述计算节点利用所述随机数执行本地计算以及利用一次置换数据的数据交互得到分别持有的计算结果。其中所述置换数据的数据操作表示两个计算节点互换中间数据。
在一些具体示例中,所述执行代码包含两个输入数据的乘法执行代码,各计算节点所获取的私密数据组分别为{x1,y1},{x2,y2},{xa,ya},{xb,yb},其中,x1=xa=X-x2且x2=xb,以及y1=ya=Y-y2且y2=yb,其中,X和Y为两个待进行乘法计算的输入数据;各计算节点分别进行基于乘法的本地计算以得到中间数据,以及通过置换的交互方式获取对方的中间数据,并基于本地生成的和置换得到的中间数据,各计算节点得到分别持有的计算结果。
在另一些具体示例中,四个所述计算节点利用两两共享的随机数和各自所获取的私密数据进行本地计算并产生中间数据,并在四个所述计算节点之间执行一次置换中间数据的数据交互;四个所述计算节点基于交互后的中间数据得到分别持有的计算结果。
其中,以所述计算引擎中的第一计算节点、第二计算节点、第三计算节点和第四计算节点依次获取私密数据组{x1,x′1,y1,y′1},私密数据组{x2,x′2,y2,y′2},私密数据组{xa,x′a,ya,y′a},以及私密数据组{xb,x′b,yb,y′b};其中,{x1,x′1,x2,x′2,xa,x′a,xb,x′b}是输入数据X经随机分散处理得到的,{y1,y′1,y2,y′2,ya,y′a,yb,y′b}是输入数据Y经随机分散处理得到的。其中,各私密数据可满足下述示例的随机分散规则:x2=X-x1=xa,x1=xb,x′2=X-x′1=x′b,x′1=x′a
在此,各计算节点得到各自的私密数据组后,执行以下各步骤,以实现在执行一次置换数据的数据交互情况下得到各自持有的计算结果:令所述第一计算节点和第二计算节点共享随机数r12和r′12,以及令所述第三计算节点和第四计算节点共享随机数rab和r′abr′b。其中,利用共享的随机数可提高计算节点的数据安全性。为了减少各计算节点对于共享的随机数进行数据通信的情况,各随机数可在生成多方安全计算指令时产生,或者多方安全计算指令中包含用于按照同样随机数生成规则生成共享随机数的随机数发生器(又称为“种子”),如此,第一计算节点和第二计算节点得到相同的随机数r12和r′12,以及所述第三计算节点和第四计算节点得到相同的随机数rab和r′ab
然后,令所述第一计算节点和第二计算节点分别对各自所持有的私密数据组进行乘法计算和用于抵消随机数r12和r′12的数学计算,以便第一计算节点得到中间数据t1和t′1,以及第二计算节点得到中间数据t2和t′2
在此,令第一计算节点执行基于公式t1=x1×y′1-r12,和t′1=x′1×y1-r′12的本地计算并得到中间数据t1和t′1;以及令所述第二计算节点进行基于公式t2=x2×y′2+r12,以及基于公式t′2=x′2×y2+r′12本地计算得到中间数据t2和t′2
需要说明的是,上述采用令第一计算节点对随机数做减法,以及令第二计算节点对随机数做加法的方式仅为举例,也可以采用令第一计算节点对随机数做加法,以及令第二计算节点对随机数做减法的方式。
然后,令所述第三计算节点和第四计算节点分别对各自所持有的私密数据组进行乘法计算和用于抵消随机数rab和r′ab的数学计算,以便第一计算节点得到中间数据ta和t′a,以及第二计算节点得到中间数据tb和t′b
在此,令所述第三计算节点执行基于公式ta=xa×y′a-rab,以及基于公式t′a=x′a×ya-r′ab本地计算得到中间数据ta和t′a;以及令所述第四计算节点执行基于公式tb=xb×y′b+rab,以及基于公式t′b=x′b×yb+r′ab本地计算得到中间数据tb和t′b
需要说明的是,上述采用令第三计算节点对随机数做减法,以及令第四计算节点对随机数做加法的方式仅为举例,也可以采用令第三计算节点对随机数做加法,以及令第四计算节点对随机数做减法的方式。
然后,令第一计算节点和第三计算节点置换各自的一个中间数据,以及第一计算节点和第四计算节点置换各自的一个中间数据;令第二计算节点和第三计算节点置换各自的一个中间数据,以及第二计算节点和第四计算节点置换各自的一个中间数据。
在此,利用四个计算节点之间不以抵消随机数为目的而构建的数据交互关系,将参有随机数的中间数据进行置换。
例如,令第一计算节点将中间数据t1发送至第四计算节点,以及将中间数据t′1发送至第三计算节点;令第二计算节点将中间数据t2发送至第三计算节点,以及将中间数据t′2发送至第四计算节点;令第三计算节点将中间数据ta发送至第二计算节点,以及将中间数据t′at′a发送至第一计算节点;以及令第四计算节点将中间数据tb发送至第一计算节点,以及将中间数据t′b发送至第二计算节点。
需要说明的是,上述置换方式是根据于多方乘法计算而设置的,根据实际计算节点执行的乘法本地计算,上述置换方式可做适应性调整,在此不再一一举例。
在此,若私密数据和共享的随机数是在值域内随机得到的,则每个计算节点执行一次置换数据的数据交互,每个计算节点共发出不超过2n位数据。为此,对于包含两个输入数据的数学计算的执行代码来说,所述计算引擎执行所述执行代码期间产生不多于2×4次基于置换数据的数据通信;以及所述计算引擎执行所述执行代码期间产生不多于2n×4比特数据量的数据通信。以两个输入数据均为私有数据为例,所述计算引擎执行所述执行代码期间产生2×4次基于置换数据的数据通信,以及所述计算引擎执行所述执行代码期间产生2n×4比特数据量的数据通信。以两个输入数据中有一个私有数据为例,所述计算引擎执行所述执行代码期间产生少于2×4次基于置换数据的数据通信,以及所述计算引擎执行所述执行代码期间产生少于2n×4比特数据量的数据通信。
然后,令各计算节点分别利用基于置换操作而配对的中间数据执行包含加法的本地计算,以便每个计算节点得到两个包含可抵消随机数的计算结果。
在此,第一计算节点执行基于公式z1=t1+tb和z′1=t′1+t′a的本地计算,得到计算结果z1和z′1;第二计算节点执行基于公式z2=t2+ta和z′2=t′2+t′b的本地计算,得到计算结果z2和z′2;第三计算节点执行基于公式za=ta+t2和z′a=t′a+t′1的本地计算,得到计算结果za和z′a;第四计算节点执行基于公式zb=tb+t1和z′b=t′b+t′2的本地计算,得到计算结果zb和z′b
需要说明的是,上述各计算公式仅为举例。在又一些示例中,根据输入数据的随机分散处理方式,上述部分或全部公式所表示的数学计算还可以由例如基于二进制数的数学计算形式表示。在此不再详述。
所述计算模块可根据上述计算协议所确定的包含可抵消的随机数的两个计算节点,选择第一计算节点和第三计算节点,或者第二计算节点和第四计算节点,并通过加和方式抵消计算节点所生成的随机数,并得到两个对应XY乘法执行代码的处理结果,或处理结果的倍数。按照上述示例所得到的处理结果可以为两个,若两个处理结果相同,则表示得到的XY乘法计算的处理结果,反之,则表示计算出错。
在另一些示例中,所述执行代码包含三个输入数据进行数学计算,例如,在利用神经网络对输入数据进行分类的算法中包含以权重、输入数据和偏置为三个输入数据进行数学计算的执行代码等。在一些示例中,令四个所述计算节点利用第一次置换数据的数据交互得到各自持有的对应输入数据X和Y计算的第一计算结果并将其作为中间数据;以及令四个所述计算节点利用对所述中间数据进行第二次置换数据的数据交互得到各自持有的所述计算结果;以及在两次置换数据前,令四个所述计算节点基于所述随机数执行本地计算。其中,各自持有的所述计算结果用于处理对输入数据X、Y和Z的执行代码。
在一些具体示例中,所述执行代码包含三个输入数据X、Y和Z的乘法执行代码,各计算节点所获取的私密数据组分别为{x1,y1,z1},{x2,y2,z2},{xa,ya,za},{xb,yb,zb},其中,x1=xa=X-x2且x2=xb;y1=ya=Y-y2且y2=yb;以及z1=za=Z-z2且z2=zb;可参考前述示例提供的计算输入数据X和Y的乘法执行代码,四个计算节点利用一次数据交互得到对应输入数据X和Y执行代码的第一计算结果并将其作为中间数据;再以该中间数据和对应Z的私密数据进行基于一次数据交互而执行的多方安全计算,由此得到各自持有的计算结果,其用于生成包含三个输入数据的执行代码的处理结果。
在此,各计算节点得到各自的私密数据组后,执行以下各步骤,以计算三个输入数据的乘法执行代码。其中,各计算节点所获取的私密数据组包括:{x1,y′1,z1},{x2,y′2,z2},{xa,y′a,za},{xb,y′b,zb};其中,x1=xa=X-x2且x2=xb;y′1=ya=Y-y′2且y′2=y′b;以及z1=za=Z-z2且z2=zb
首先,令所述第一计算节点和第二计算节点共享一随机数r12和r′12,以及令所述第三计算节点和第四计算节点共享一随机数/>rab和rab。在此,各随机数的共享方式可与前述示例中提及的方式相同,在此不再重述。
然后,令四个所述计算节点分别对涉及输入数据X和Y的私密数据进行乘法计算和用于抵消随机数和/>的数学计算,以便第一计算节点得到中间数据t1,第二计算节点得到中间数据t2,第三计算节点得到中间数据ta,第四计算节点得到中间数据tb
在此,令所述第一计算节点基于公式本地计算得到中间数据t1;令所述第二计算节点分基于公式/>本地计算得到中间数据t2;令所述第三计算节点基于公式/>本地计算得到中间数据ta;以及令所述第四计算节点基于公式/> 本地计算得到中间数据tb
需要说明的是,上述采用令第一计算节点对随机数做减法,以及令第二计算节点对随机数/>做加法的方式仅为举例,也可以采用令第一计算节点对随机数/>做加法,以及令第二计算节点对随机数/>做减法的方式。上述采用令第三计算节点对随机数/>做减法,以及令第四计算节点对随机数/>做加法的方式也同样为举例,也可以采用令第三计算节点对随机数/>做加法,以及令第四计算节点对随机数/>做减法的方式。
然后,令第一计算节点和第三计算节点置换各自的中间数据;令第二计算节点和第三计算节点置换各自的中间数据。
在此,第一计算节点将中间数据结果t1发送给第三计算节点,以及第三计算节点将中间数据ta发送给第一计算节点;以及第二计算节点将中间数据结果t2发送给第四计算节点,以及第四计算节点将中间数据tb发送给第二计算节点。
需要说明的是,上述置换方式是根据于多方乘法计算而设置的,根据实际计算节点执行的乘法本地计算,上述置换方式可做适应性调整,在此不再一一举例。
然后,令各计算节点利用所持有的各中间数据和对应输入数据Z的私密数据进行乘法的数学计算,以便第一计算节点得到中间数据s1,第二计算节点得到中间数据s2,第三计算节点得到中间数据sa,第四计算节点得到中间数据sb
在此,第一计算节点基于公式s1=(t1+ta)×z1的本地计算;第二计算节点基于公式s2=(t2+tb)×z2的本地计算;第三计算节点基于公式sa=(ta+t1)×za的本地计算;第四计算节点基于公式sb=(t2+tb)×zb的本地计算。
然后,令所述第一计算节点和第二计算节点分别对各自所持有的中间数据s1和s2进行乘法计算和用于抵消随机数r12和r′12的数学计算,以便第一计算节点得到中间数据h1和h′1,以及第二计算节点得到中间数据h2和h′2;以及令所述第三计算节点和第四计算节点分别对各自所持有的中间数据sa和sb进行乘法计算和用于抵消随机数rab和r′ab的数学计算,以便第三计算节点得到中间数据ha和h′a,以及第四计算节点得到中间数据hb和h′b
在此,令第一计算节点执行基于公式h1=s1-r12,和h′1=s1-r′12的本地计算并得到中间数据h1和h′1;以及令所述第二计算节点进行基于公式h2=s2+r12,以及基于公式h′2=s2+r′12本地计算得到中间数据h2和h′2。令第三计算节点执行基于公式ha=sa-rab,和h′a=sa-r′ab的本地计算并得到中间数据ha和h′a;以及令所述第四计算节点进行基于公式hb=sb+rab,以及基于公式h′b=sb+r′ab本地计算得到中间数据hb和h′b
需要说明的是,上述置换方式是根据于多方乘法计算而设置的,根据实际计算节点执行的乘法本地计算,上述置换方式可做适应性调整,在此不再一一举例。
然后,令第一计算节点和第三计算节点置换各自的一个中间数据,以及第一计算节点和第四计算节点置换各自的一个中间数据;令第二计算节点和第三计算节点置换各自的一个中间数据,以及第二计算节点和第四计算节点置换各自的一个中间数据。
在此,令第一计算节点和第四计算节点置换中间数据h1和hb;令第一计算节点和第三计算节点置换中间数据h′1和h′a;令第二计算节点和第三计算节点置换中间数据h2和ha;以及令第二计算节点和第四计算节点置换中间数据h′2和h′b
需要说明的是,上述置换方式是根据于多方乘法计算而设置的,根据实际计算节点执行的乘法本地计算,上述置换方式可做适应性调整,在此不再一一举例。
最后,令各计算节点分别利用基于置换操作而配对的中间数据执行包含加法的本地计算,以便每个计算节点得到两个包含可抵消随机数的计算结果。
在此,第一计算节点执行基于公式z1=h1+hb和z′1=h′1+h′a的本地计算,得到计算结果z1和z′1;第二计算节点执行基于公式z2=h2+ha和z′2=h′2+h′b的本地计算,得到计算结果z2和z′2;第三计算节点执行基于公式za=ha+h2和z′a=h′a+h′1的本地计算,得到计算结果za和z′a;第四计算节点执行基于公式zb=hb+h1和z′b=h′b+h′2的本地计算,得到计算结果zb和z′b
需要说明的是,上述各计算公式仅为举例。在又一些示例中,根据输入数据的随机分散处理方式,上述部分或全部公式所表示的数学计算还可以由例如基于二进制数的数学计算形式表示。在此不再详述。
所述计算模块可根据上述计算协议所确定的包含可抵消的随机数的两个计算节点,选择第一计算节点和第三计算节点,或者第二计算节点和第四计算节点,并通过加和方式抵消计算节点所生成的随机数,并得到两个对应XYZ乘法执行代码的处理结果,或处理结果的倍数。按照上述示例所得到的处理结果可以为两个,若两个处理结果相同,则表示得到的XYZ乘法计算的处理结果,反之,则表示计算出错。
在此,若私密数据和共享的随机数是在值域内随机得到的,则在第一次置换数据时,每个计算节点发出不多于n个比特数据量,以及在第二次置换数据时,每个计算节点发出不多于2n个比特数据量。为此,所述执行代码包含三个输入数据的数学计算的执行代码,所述计算引擎执行所述执行代码期间产生不超过3×4次基于置换数据的数据通信,以及所述计算引擎执行所述执行代码期间产生不多于3n×4比特数据量的数据通信。以三个输入数据均为私有数据为例,所述计算引擎执行所述执行代码期间产生3×4次基于置换数据的数据通信,以及所述计算引擎执行所述执行代码期间产生3n×4比特数据量的数据通信。以三两个输入数据中有至少一个私有数据为例,所述计算引擎执行所述执行代码期间产生少于3×4次基于置换数据的数据通信,以及所述计算引擎执行所述执行代码期间产生少于3n×4比特数据量的数据通信。
在又一些示例中,根据业务逻辑的设计,执行代码中还可能包含位提取。例如按照通信协议提取某一位比特的执行代码。例如包括:四个所述计算节点利用k轮次1比特置换数据的数据交互得到各自持有的计算结果,其中,所述计算结果用于提取输入数据X中二进制位;k为对应所述执行代码中输入数据X的待提取的二进制位数。在此,四个计算节点通过本地进行位计算生成包含有可抵消1比特随机数的中间数据(1比特),并通过k轮次的中间数据的数据交互得到计算结果。
在一些具体示例中,所述多方执行代码包括提取输入数据X中二进制位的执行代码;所述计算引擎中的第一计算节点、第二计算节点、第三计算节点和第四计算节点依次获取私密数据组{x1},私密数据组{x2},私密数据组{xa},以及私密数据组{xb};其中,{x1,x2,xa,xb}是输入数据X经随机分散处理得到的二进制表示的私密数据,其中,各私密数据与输入数据X具有相同的二进制位数k。
在一些实施例中,各计算节点分别初始化用于输出的比特位值{c1,c′1},{c2,c′2},{ca,c′a},{cb,c′b};以及令所述第一计算节点和第二计算节点共享随机数r12和b12;以及令所述第三计算节点和第四计算节点共享随机数bab;其中,初始化的各比特位值举例为0。所述随机数r12、b12和bab是基于提取位数k而生成的二进制随机数。其中,所述随机数共享和生成方式与前述示例中提及的方式相同或相似,在此不再重述。然后,令第一计算节点和第二计算节点利用随机数r12对各自持有的私密数据x1和x2对第k位进行逻辑处理,以得到具有第k位统一的二进制中间数据u1和u2。在此,令第一计算节点进行基于公式的本地计算得到中间数据u1;并提供给第三计算节点;以及令第二计算节点进行基于公式u2=x2[1:k]∧r12本地计算得到中间数据u2
需要说明的是,根据实际设计需要,上述各计算节点的逻辑处理可以被调整,其他为k轮次循环而进行预处理,并得到具有第k位统一的二进制中间数据u1和u2的方式应视为基于本申请所提供的示例而进行数学计算调整得到的一种具体示例。
然后,令第一计算节点将中间数据u1发送给第三计算节点,并由第三计算节点进行基于公式u1∧xa的逻辑计算并得到中间数据ua
然后,基于k值而设置以下循环计算:各计算节点对私密数据x1的第i位和输出比特位置进行带有基于所共享的随机数b12或bab的逻辑计算,并得到第i轮次的中间数据;以及将每轮次得到的中间数据进行置换处理,并赋值相应的输出比特位;其中,第一计算节点与第三计算节点进行中间数据的置换处理,以及第二计算节点与第四计算节点进行中间数据的置换处理。
例如,参见如下利用程序语言习惯来描述的基于k值而设置的循环计算:
For(i=1;i<=k-1;i=i+1){
S1计算并将t′1发送至Sa.
S2计算并将t′2发送至Sb.
Sa计算并将t′a发送至S1.
Sb计算并将t′b发送至S2.
S1赋值S2赋值/>Sa赋值/>Sb赋值/>}
其中,S1、S2、Sa和Sb依次表示第一计算节点、第二计算节点、第三计算节点和第四计算节点。
然后,各计算节点利用被赋值的输出比特位、随机数对各自持有的私密数据的第k位比特值进行逻辑计算得到计算结果。
例如,第一计算节点基于公式的本地计算得到计算结果c′1;第二计算节点进行基于公式/>本地计算得到计算结果c′2;第三计算节点进行基于公式/>本地计算得到计算结果ca;第四计算节点进行基于公式/> 本地计算得到计算结果cb
需要说明的是,上述示例中的公式与前述k轮次的处理方式相关,并可根据实际k轮次的位处理方式进行调整。
最后,第一计算节点将计算结果c′1提供给第三计算节点;第二计算节点将计算结果c′2提供给第四计算节点;第三计算节点将计算结果ca提供给第二计算节点;第四计算节点将计算结果cb提供给第一计算节点,以便各计算节点持有得到便于校验处理结果的两个计算结果。
在一些示例中,根据实际秘密计算方式的设计,所述计算节点还可以位于数据源一侧,例如,由数据源作为计算节点(或计算节点之一);又如,所述计算模块为计算节点(或计算节点之一)。故而计算节点的实体或虚拟设备的形态和所设置的地理位置不做限定。
以计算配置采用单一计算节点进行秘密计算为例,请参阅图9,其显示为本申请数据处理系统在又一实施例中的架构示意图,任务管理单元(任务管理模块)91将包含私有数据业务处理流程的程序进行分解,得到多个计算指令,其中,使用私有数据进行数据处理的计算指令参阅前述的处理方式进行秘密计算。所述任务管理单元(任务管理模块)91得到所述计算指令,并通过计算指令所使用的接口程序确定计算配置为同态加密计算方式;根据所述同态加密计算方式,所述任务管理单元(任务管理模块)91从所维护的计算节点92中选取可执行同态加密计算的一个计算节点92;任务管理单元(任务管理模块)91根据所述计算指令中所涉及的私有数据的定义语句,生成指令计算节点92获取相应私密数据的计算指令,以及根据同态加密计算方式将计算指令转换成利用具有同态属性的计算方式顺序执行的计算指令,并将所得到的计算指令发送给所选取的计算节点92;所述计算节点92通过执行所述计算指令,向数据源93发送包含私密数据的相关信息的数据请求,其中,所述相关信息包括:取私密数据的权限信息、便于数据源93查询和读取私有数据的索引信息,以及计算配置中的同态加密计算方式等;数据源93基于所述相关信息将私有数据进行加密处理以得到私密数据,以及将其反馈给计算节点92;所述计算节点92利用所得到的私密数据执行计算指令以进行同态加密计算,并得到仍然处于加密状态的计算结果,所述计算结果按照计算指令将该计算结果发送至计算指令所指令的计算设备,由该计算设备通过解密操作得到对应计算指令的处理结果。
在一个实施例中,以计算配置采用四个计算节点进行秘密计算为例,请参阅图10,其显示为本申请数据处理系统在再一实施例中的架构示意图,如图所示,用户通过WEB端所提供的页面输入包含持有私有数据的数据源信息、用于获取私有数据的索引信息、以及对私有数据的业务处理方式等,并由WEB端提供给任务管理单元(任务管理模块)101;任务管理单元(任务管理模块)101将包含私有数据的业务处理方式的程序进行分解,得到多个计算指令,其中,使用私有数据进行数据处理的计算指令参阅前述的处理方式进行秘密计算,比如,所述任务管理单元(任务管理模块)101得到所述计算指令,并通过计算指令所使用的接口程序确定计算配置为采用四选二秘密计算架构的秘密计算方式;根据所述秘密计算方式,所述任务管理单元(任务管理模块)根据所维护的计算节点中的monitor模块所提供的计算节点的属性信息,从所维护的计算节点中选取可执行四选二秘密计算架构的四个计算节点102;任务管理单元(任务管理模块)根据所述计算指令中所涉及的私有数据的定义语句,以及四选二秘密计算架构,生成指令各计算节点102分别获取相应私密数据的计算指令,以及根据四选二秘密计算架构将计算指令转换成由四个计算节点102顺序计算的计算指令,并将所得到的四组计算指令分别发送给四个计算节点102;各所述计算节点102通过执行相应计算指令,向数据源103中的处理装置DS发送包含私密数据的相关信息的数据请求,其中,所述相关信息包括:计算节点102在秘密计算中的身份信息、获取私密数据的权限信息、便于处理装置DS从数据库Data中查询和读取私有数据的索引信息,以及计算配置中的四选二秘密计算架构等;其中,所述获取私密数据的权限信息可预设在任务管理单元(任务管理模块)或由用户通过WEB提供;数据源103基于所述相关信息将私有数据进行随机分解处理,并按照四各计算节点102的身份信息将分解后的私密数据分成四组,并根据数据请求中的身份信息将相应分组的私密数据反馈给相应计算节点102;各所述计算节点102利用所得到的私密数据执行计算指令以协同进行秘密计算,并得到各自的计算结果,根据计算指令,四个计算节点102中两个计算节点将各计算结果发送至计算指令所指令的计算设备(如提供WEB页面的设备端),由该计算设备通过执行计算指令的最后操作得到对应计算指令的处理结果。
在获得所述计算引擎的计算结果后,所述计算模块13将所述计算结果发送给展示模块14,所述展示模块14用于可视化展示所述数据输入模块11的输入数据、所述代码输入模块12输入的执行代码、以及所述计算结果。
在一些示例中,所述展示模块用以可视化展示所述数据输入模块的输入数据,所述输入数据可以是明文数据,也可以是私密数据的标识。在一些示例中,所述展示模块还用于可视化展示所述代码输入模块输入的执行代码。在一些示例中,所述展示模块包括文本编辑器、图表编辑器、或网页编辑器。所述编辑器通过向用户提供可编辑内容的展示界面,藉由用户输入的文本、图表、网页元素等内容并将其转化为所述数据处理系统能够识别的计算机代码以执行,从而向用户提供实时可编辑的展示界面。在一些示例中,所述展示模块还可以接收所述计算模块发送的计算结果,并将所述计算结果进行可视化展示。
在不同的情况下,用于可视化展示的展示界面可以有不同的组合或选择,通过一个或多个展示界面提供不同的展示效果、展示权限、以及展现方式等,向用户提供直观、清晰的展示内容。例如,在一些示例中,所述展示模块可以在同一个展示界面内,通过多个子界面同时可视化展示所述数据输入模块的输入数据、所述代码输入模块输入的执行代码、所述计算模块获取的所述计算结果、以及任务状态,提供多种数据的分析和比较。所述任务状态用于表示所述计算指令完成的状态。例如,所述展示模块显示“未完成”或“已完成”来表示所述计算指令是否完成。容易理解,所述展示模块可以根据实际需要选择展示上述一种内容或多种内容。请参阅图11,显示为本申请可视化的展示界面在一实施例中的示意图。如图所示,在所述展示界面的不同位置分别通过不同的子界面分别展示所述输入数据111、所述执行代码112以及所述计算结果113。以这种方式将输入数据、执行代码和计算结果同时展示,能够提供实时、直观的计算结果,便于技术人员应理解,当然,所述展示模块也可以在多个界面内分别展示多种数据,此处不作限制。
在一些示例中,所述可视化展示包括文本展示、动画展示、地图展示、以及图表展示的一种或多种的结合。所述文本展示的内容例如为计算结果、数据源信息、统计数据、以及日期等内容中的一种或多种。所述图表展示的内容包括流程图、树状图、饼状图、条状图、以及折线图等图表中的一种或多种。所述动画展示例如播放一段动态图、视频、动态PPT等中的一种或多种。所述地图展示例如在地图上展示各地区同类型数据的差异等。在很多情况下,可以同时提供多种形式,以获得更加清晰直观、美观以及多样化的展示。
在一些示例中,所述展示模块还包括权限控制单元,用于根据不同的操作权限可视化展示所述数据输入模块的输入数据、所述代码输入模块输入的执行代码、以及所述计算模块获取的所述计算结果。在一些示例中,所述操作权限可以分为完全操作权限和部分操作权限,不同的操作权限分别对应的是用以可视化展示的所述数据输入模块的输入数据、所述代码输入模块输入的执行代码、以及所述计算模块获取的所述计算结果的全部或部分内容;或者,在一些示例中,所述权限控制单元还可以根据不同的操作权限,可视化展示所述数据输入模块的输入数据、所述代码输入模块输入的执行代码、以及所述计算模块获取的所述计算结果的私密数据或明文。
例如,所述展示模块根据完全操作权限,可视化展示所述数据输入模块的输入数据、所述代码输入模块输入的执行代码、以及所述计算模块获取的所述计算结果的全部内容;或者,所述展示模块根据部分操作权限,仅可视化展示所述数据输入模块的输入数据,或仅可视化展示所述代码输入模块输入的执行代码,或仅可视化展示所述计算模块获取的所述计算结果;或者,所述展示模块根据部分操作权限,仅可视化展示所述数据输入模块的输入数据的部分内容等。
在一个具体的示例中,某公司职员A拥有完全操作权限,职员B拥有部分操作权限。所述计算指令为计算职员C的第一季度的薪资,对应的,所述数据输入模块的输入数据为职员C的基础薪资和第一季度的通勤率,所述计算结果为职员C的第一季度的薪资。职员B根据部分操作权限,可以获得职员C的第一季度的通勤率的输入数据,也可以获得所述代码输入模块的执行代码;而其他数据对于职员C不可见,或向其展示的为加密的私密数据。职员A根据完全操作权限,能够获得全部的数据。在一些示例中,职员A还可以根据需要的数据进行选择性可视化展示,尽管职员A拥有完全操作权限,能够查看全部的数据,其仍可以通过选择仅查看部分数据。
在另一个具体的示例中,所述数据输入模块的输入数据为职员C的基础薪资和第一季度的通勤率,所述计算结果为职员C的第一季度的薪资。职员B根据部分操作权限,获得的是职员C的各种数据的私密数据;职员A根据完全操作权限获得的是职员C的各种数据的明文数据。
本申请提供的数据处理系统,一方面通过计算模块对私有数据进行调用,并利用多方安全计算的方式执行计算指令,以获得对用户输入的数据的处理结果,能够有效防止数据泄露,保证数据的私密性,解决了技术人员难于利用复杂的密码学方式处理涉及私有数据的数据处理逻辑的技术难题;另一方面,将输入数据和执行代码与计算结果进行可视化展示,更加直观清晰,实现了技术人员的可视化编程和数据业务设计。
本申请还提供一种数据处理方法,请参阅图12,显示为本申请数据处理方法在一实施例中的流程示意图。如图所示,所述方法包括:
步骤S1,获取输入数据以及输入的执行代码并实时可视化展示,所述执行代码被配置为可调用所述输入数据。
在此,所述输入数据为执行多方安全计算所需的数据,其包括但不限于:来自数据处理系统自身生成的数据,来自用户输入数据,来自一个或多个数据源(Data Source)的数据,或者来自互联网等其他可通信计算机设备中的数据中的一种或多种。所述数据输入模块可以通过数据传输的方式获取所述输入数据。所述数据传输包括无线网络传输(例如TDMA、CDMA、GSM、PHS、以及Bluetooth等中的一种或多种)、有线网络传输(例如专用网络、ADSL网络、以及电缆调制解调器网络等中的一种或多种)、或接口传输(例如通过接口从闪存、U盘、移动硬盘、光盘、以及软盘等存储介质获取)等。在一些示例中,所述输入数据的获取操作可以是基于一用户操作界面而获取的,例如,用户在一用户操作界面内输入多个数据,由此获得所述输入数据。在一些示例中,所述输入数据的获取操作可以是基于API接口(Application Programming Interface,应用程序接口)获取的。例如,用户通过输入代码调用数据源中存储的数据,从而获得所述输入数据;或通过输入代码调用API接口,调用已经写入所述数据输入模块的数据,从而获得所述输入数据。
在一个示例中,所述获取的输入数据可以通过用户操作界面予以显示,例如,通过一个应用程序进行显示,比如Excel应用程序的展示界面显示所述输入数据,例如为Excel表格的展示形式。但并不以此为限,本领域技术人员基于自身通常知晓的知识和理解本申请后不经过创造性劳动想到的其他应用程序。
所述数据源可为运行有数据库的计算机设备,或者可与存储有私有数据的数据库进行数据读取的计算机设备。所述计算机设备举例为个人计算机设备或服务器等。所述数据源所在计算机设备可设置在公共或私有的机房内。例如,数据源位于银行的数据运行中心。
所述数据源包含用于将待输出的私有数据进行私密处理的处理装置。该处理装置可包含所述数据源所在计算机设备的处理器(如CPU),和由处理器执行所述私密处理操作的程序。所述处理装置还可以为用于执行私密处理的专用芯片。所述处理装置包含用于读取私有数据的数据接口,以及与计算节点进行数据交互的网络接口。其中,所述数据接口包括但不限于:USB接口、网卡、以及总线接口等中的一种或多种。所述网络接口包括但不限于:网卡、接入移动网络(如3G、4G、以及5G等移动网络中的一种或多种)的网络通信模块、接入局域网的网络通信模块等。
若对不涉及私有数据的任务进行处理,或者,当数据处理任务对保密性并未有所要求时,所述输入数据可以是未经过隐私化处理的明文数据。在一些示例中,所述输入数据还可以是私密数据。所述私密数据是通过对私有数据进行隐私化处理后得到的。在一些示例中,所述隐私化处理的方式包括但不限于:将私有数据进行转换、将私有数据进行分散处理、以及将多个私有数据进行融合处理等中的一种或多种。在一些示例中,所述隐私化处理的方式包括加密、脱敏、以及分散中的至少一种方式。所述技术领域的技术人员能够清楚地理解,有关所述隐私化处理的方式的描述可以参考前述系统实施例中的对应描述,在此不再赘述。
在一些示例中,所述输入数据包括用于参与所述计算模块执行多方安全计算的资源。所述资源指的是用以参与多方安全计算的输入数据的数据,所述数据的类型可以是数值、函数、或者模型等中的一种或多种。或者,所述资源也可以是对所述数据进行数据处理后的到的结果,所述数据处理包括但不限于:加减运算、乘积运算、除法运算、对数运算、指数运算等数学运算,或如上所述的隐私化处理等中的一种或多种。此外,所述输入数据还包括所述资源的引用(Reference),所述资源的引用所引用的资源存储在本地或网络中的至少一数据源中。其中,所述资源的引用指的是可以让所述执行代码间接访问存储于计算机存储器、其他存储设备、或存储介质中的资源的字符或字符串,所述字符或字符串可以是变量、URI(Uniform Resource Identifier,统一资源标识符)地址、记录、指针、或者句柄等中的一种或多种。所述资源的引用的具体实例请参照前述系统实施例中的对应描述,在此不再赘述。
所述执行代码的获取操作可基于用户的输入操作而生成的。在一些示例中,所述执行代码可直接地由使用所述业务逻辑的用户的输入操作而产生。所述业务逻辑是指技术人员利用一个或多个处理操作对包含私有数据进行数据处理、且根据自然规律而得到的流程。
在一些示例中,所述执行代码包括:藉由计算机程序语言编辑界面而获取的程序模块。其中,所述计算机程序语言可以是任一种可由计算机设备识别的语言,其包括但不限于可经由编译而得到机器语言的计算机程序语言(如Python、Java、C++等),或者与机器语言一一对应且具有可读性的计算机程序语言(如汇编语言等)。在此,所述执行代码可以是藉由计算机程序语言来描述数据处理的程序模块(或叫程序段、程序块),其中,所述执行代码调用所述输入数据为经过隐私化处理的方式得到的私密数据,或者,所述执行代码包含涉及对私有数据处理过程的程序模块。
在一个示例中,所述获取输入数据及所述获取输入的执行代码是藉由用户对同一用户操作界面的输入操作实现的;在一种具体的实施方式中,针对获取输入数据的操作和获取输入的执行代码的操作可以通过藉由用户对例如为电脑的电子装置的显示屏中显示的同一个用户操作界面(用户交互界面,亦称GUI)来实现,在具体的实现方式中,可以呈现如图6所示的界供选择操作的编辑界面均可对获取输入数据或获取执行代码进行操作,也可以通过例如为图7所示的,在显示的展示界面中,通过对所述展示界面的操作,使得在同一个界面中的一侧显示为获取的输入数据71,另一侧显示获取输入的执行代码72,藉此可以实现在同一个界面既可以操作输入数据也可以操作代码,达到实时切换的目的。
步骤S2,接收到计算指令时令一计算引擎基于所述执行代码执行多方安全计算以获得计算结果;以及将所述计算结果进行可视化展示。
在此,获取一计算指令,并根据执行代码将所述计算指令转换成多方安全计算指令。所述计算指令用于对输入数据进行数据处理。在一些示例中,所述输入数据为一种私有数据;技术人员预先存储包含处理私有数据的业务逻辑的程序,所述业务逻辑是藉由计算机程序语言来描述对私有数据的处理过程,该处理过程可包含一个或多个计算指令。所述计算指令是按照业务逻辑中输入数据和输出数据之间的逻辑顺序而划分的。例如,业务逻辑包含将输入数据A1和A2进行乘法计算的处理逻辑并得到处理结果B1,以及将处理结果B1作为又一输入数据A3和输入数据A4进行比较计算的处理逻辑得到处理结果B2;其中,所述计算指令可划分为利用输入数据A1和A2执行乘法计算的计算指令,以及利用输入数据A3和A4执行比较计算的计算指令。
需要说明的是,上述示例仅为举例,根据实际设计需要,业务逻辑中可包含更复杂的计算指令,而应理解,复杂的计算指令可由一个或多个计算单元来执行。其中,所述计算单元包括但不限于:加、减、乘、除等数字计算处理,以及与、或、非等逻辑计算等。
根据所述计算引擎中计算节点的数量,将计算指令转换成由计算引擎中各计算节点协同执行的多方安全计算指令。在此,构成计算引擎的四个计算节点可以是固定配置的,或者该四个计算节点是基于选取规则来选择的。具体实施例请参照前述实施例,此处不再赘述。
从多方安全计算方式方面来说,所述各计算节点可以根据预先对各计算节点执行多方安全计算而配置相应的执行程序或处理芯片。从计算节点的设备配置来说,所述计算节点为单台计算机设备、或基于云架构的服务系统中被使用的实体设备或虚拟设备等。其中,所述单台计算机设备可以是自主配置的可执行所述计算方法的计算机设备,其可位于私有机房或位于公共机房中的某个被租用的机位中。所述计算节点的实体或虚拟设备的形态和所设置的地理位置不做限定。例如,计算节点可以位于同一实体服务器的不同虚拟设备上且通过管理权限进行单独管理。所述云架构的服务系统包括公共云服务端与私有云服务端,其中,所述公共或私有云服务端包括SaaS、PaaS及IaaS等。所述私有云服务端例如阿里云计算服务平台、亚马逊云计算服务平台、百度云计算平台、腾讯云计算平台等等。其中,所述虚拟设备可以是实体服务器通过虚拟技术将一台独占设备虚拟成多台逻辑设备,供多个用户进程同时使用的设备之一。
所述计算节点可包含存储装置、处理装置、网络接口装置等。事实上,根据计算节点实际运行的计算方法的硬件装置,上述各装置可位于单台服务器上,或位于多台服务器中并通过各服务器之间的数据通信完成单一计算节点所执行的计算指令。
本领域技术人员能够清楚地理解,所述数据处理方法的技术方案与所述数据处理系统的技术方案一一对应,具体步骤和流程请参照前述系统的实施例,此处不再赘述。
在一示例中,所述计算引擎基于所述执行代码执行多方安全计算以获得计算结果的步骤包括:
步骤S110,所述计算引擎获取对应所述计算指令的多方安全计算指令,以及获取私密数据组。
步骤S120,按照所述多方安全计算指令,所述计算引擎中至少部分计算节点分别对各自所获取的私密数据组进行本地计算,和/或将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果。
在此,所述步骤S120包括:令四个计算节点基于所获取的私密数据组执行本地数学计算,以及令四个所述计算节点利用所述随机数执行本地计算以及利用一次置换数据的数据交互得到分别持有的计算结果。其中所述置换数据的数据操作表示两个计算节点互换中间数据。在此,各计算节点得到各自的私密数据组后,执行以下各步骤,以实现在执行一次置换数据的数据交互情况下得到各自持有的计算结果:步骤S121,令所述第一计算节点和第二计算节点共享随机数r12和r’12,以及令所述第三计算节点和第四计算节点共享随机数rab和r’ab;步骤S122,令所述第一计算节点和第二计算节点分别对各自所持有的私密数据组进行乘法计算和用于抵消随机数r12和r’12的数学计算,以便第一计算节点得到中间数据t1和t’1,以及第二计算节点得到中间数据t2和t’2;步骤S123,令所述第三计算节点和第四计算节点分别对各自所持有的私密数据组进行乘法计算和用于抵消随机数rab和r’ab的数学计算,以便第一计算节点得到中间数据ta和t’a,以及第二计算节点得到中间数据tb和t’b;步骤S124,令第一计算节点和第三计算节点置换各自的一个中间数据,以及第一计算节点和第四计算节点置换各自的一个中间数据;令第二计算节点和第三计算节点置换各自的一个中间数据,以及第二计算节点和第四计算节点置换各自的一个中间数据;步骤S125,令各计算节点分别利用基于置换操作而配对的中间数据执行包含加法的本地计算,以便每个计算节点得到两个包含可抵消随机数的计算结果。为描述的方便和简洁,上述描述的方法、步骤的原理和具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在另一些示例中,所述计算指令包含三个输入数据进行数学计算,例如,在利用神经网络对输入数据进行分类的算法中包含以权重、输入数据和偏置为三个输入数据进行数学计算的计算指令等。所述步骤S120包括:令四个所述计算节点利用第一次置换数据的数据交互得到各自持有的对应输入数据X和Y计算的第一计算结果并将其作为中间数据;以及令四个所述计算节点利用对所述中间数据进行第二次置换数据的数据交互得到各自持有的所述计算结果;以及在两次置换数据前,令四个所述计算节点基于所述随机数执行本地计算。其中,各自持有的所述计算结果用于处理对输入数据X、Y和Z的计算指令。步骤S121’,令所述第一计算节点和第二计算节点共享一随机数r12和r’12,以及令所述第三计算节点和第四计算节点共享一随机数/>rab和r’ab。在此,各随机数的共享方式可与前述示例中提及的方式相同,在此不再重述。步骤S122’,令四个所述计算节点分别对涉及输入数据X和Y的私密数据进行乘法计算和用于抵消随机数/>和/>的数学计算,以便第一计算节点得到中间数据t1,第二计算节点得到中间数据t2,第三计算节点得到中间数据ta,第四计算节点得到中间数据tb。步骤S123’,令第一计算节点和第三计算节点置换各自的中间数据;令第二计算节点和第三计算节点置换各自的中间数据。步骤S124’,令各计算节点利用所持有的各中间数据和对应输入数据Z的私密数据进行乘法的数学计算,以便第一计算节点得到中间数据s1,第二计算节点得到中间数据s2,第三计算节点得到中间数据sa,第四计算节点得到中间数据sb。步骤S125’,令所述第一计算节点和第二计算节点分别对各自所持有的中间数据s1和s2进行乘法计算和用于抵消随机数r12和r’12的数学计算,以便第一计算节点得到中间数据h1和h’1,以及第二计算节点得到中间数据h2和h’2;以及令所述第三计算节点和第四计算节点分别对各自所持有的中间数据sa和sb进行乘法计算和用于抵消随机数rab和r’ab的数学计算,以便第三计算节点得到中间数据ha和h’a,以及第四计算节点得到中间数据hb和h’b;步骤S126’,令第一计算节点和第三计算节点置换各自的一个中间数据,以及第一计算节点和第四计算节点置换各自的一个中间数据;令第二计算节点和第三计算节点置换各自的一个中间数据,以及第二计算节点和第四计算节点置换各自的一个中间数据。步骤S127’,令各计算节点分别利用基于置换操作而配对的中间数据执行包含加法的本地计算,以便每个计算节点得到两个包含可抵消随机数的计算结果。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的方法、步骤的原理和具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
基于上述描述,本实施例所提供的由四个计算节点构成的计算引擎及多方安全计算方法,利用适用于计算指令的私密数据进行本地和节点间交互,由此实现多方安全计算。其中,利用计算节点之间共享随机数参与计算的方式,使得各计算节点所得到的计算结果不会以明码形式返回,由此保证了数据安全性。另外,利用本申请所描述的多方安全计算指令进行多方安全计算有效减少了计算节点之间传输的数据量。
在获得所述计算引擎的计算结果后,将所述计算结果进行可视化展示。在一些示例中,所述可视化展示输入数据,所述输入数据可以是明文数据,也可以是私密数据的标识。在一些示例中,还可以可视化展示获取的输入的执行代码。在一些示例中,还可以接收所述计算引擎发送的计算结果,并将所述计算结果进行可视化展示。
在不同的情况下,用于可视化展示的展示界面可以有不同的组合或选择,通过一个或多个展示界面提供不同的展示效果、展示权限、以及展现方式等,向用户提供直观、清晰的展示内容。例如,在一些示例中,可以在同一个展示界面内,通过多个子界面同时可视化展示所述输入数据、所述执行代码、以及所述计算结果,提供多种数据的分析和比较。以这种方式将输入数据、执行代码和计算结果同时展示,能够提供实时、直观的计算结果,便于技术人员应理解,当然,也可以在多个界面内分别展示多种数据,此处不作限制。
在一些示例中,所述可视化展示包括文本展示、动画展示、地图展示、以及图表展示的一种或多种的结合。所述文本展示的内容例如为计算结果、数据源信息、统计数据、以及日期等内容中的一种或多种。所述图表展示的内容包括流程图、树状图、饼状图、条状图、以及折线图等图表中的一种或多种。所述动画展示例如播放一段动态图、视频、动态PPT等中的一种或多种。所述地图展示例如在地图上展示各地区同类型数据的差异等。在很多情况下,可以同时提供多种形式,以获得更加清晰直观、美观以及多样化的展示。
在一些示例中,所述可视化展示的步骤还包括根据不同的操作权限可视化展示所述输入数据、所述执行代码、以及所述计算结果。在一些示例中,所述操作权限可以分为完全操作权限和部分操作权限,不同的操作权限分别对应的是用以可视化展示的所述输入数据、所述执行代码、以及所述计算结果的全部或部分内容;或者,在一些示例中,还可以根据不同的操作权限,可视化展示所述输入数据、所述执行代码、以及所述计算结果的私密数据或明文。
例如,可以根据完全操作权限可视化展示所述输入数据、所述执行代码、以及所述计算结果的全部内容;或者,可以根据部分操作权限,仅可视化展示所述输入数据,或仅可视化展示所述执行代码,或仅可视化展示所述计算结果;或者,可以根据部分操作权限,仅可视化展示所述输入数据的部分内容等。
在一个具体的示例中,某公司职员A拥有完全操作权限,职员B拥有部分操作权限。所述计算指令为计算职员C的第一季度的薪资,对应的,所述输入数据为职员C的基础薪资和第一季度的通勤率,所述计算结果为职员C的第一季度的薪资。职员B根据部分操作权限,可以获得职员C的第一季度的通勤率的输入数据,也可以获得所述执行代码;而其他数据对于职员C不可见,或向其展示的为加密的私密数据。职员A根据完全操作权限,能够获得全部的数据。在一些示例中,职员A还可以根据需要的数据进行选择性可视化展示,尽管职员A拥有完全操作权限,能够查看全部的数据,其仍可以通过选择仅查看部分数据。
在另一个具体的示例中,所述输入数据为职员C的基础薪资和第一季度的通勤率,所述计算结果为职员C的第一季度的薪资。职员B根据部分操作权限,获得的是职员C的各种数据的私密数据;职员A根据完全操作权限获得的是职员C的各种数据的明文数据。
本申请所述的数据处理方法通过实时可视化展示用户输入的数据和执行代码,并将计算指令转换为计算节点的多方安全计算指令,解决了技术人员难于利用复杂的密码学方式处理涉及私有数据的数据处理逻辑,同时由于计算节点仅获取经隐私处理后的私密数据,因此计算节点无法对私有数据进行泄露,安全性高。最后,所述数据处理方法还能够对计算指令的计算结果进行可视化展示,相较于专业的数据分析更加清晰直观,易于技术人员进行比较分析。
本申请还提供一种编辑器。请参阅图13,显示为本申请编辑器在一实施例中的结构示意图,如图所示,所述编辑器13包括如图1至图8对应所述的数据处理系统131,用于向用户提供编辑界面进行输入和编辑,通过一计算引擎根据用户输入的数据和执行代码执行计算指令,并将计算处理所述计算指令获得的计算结果进行可视化展示。在一些示例中,所述编辑器为基于浏览器的编辑器或者应用程序。所述浏览器可以为例如IE浏览器、谷歌浏览器(Google Chrome)、百度浏览器、火狐浏览器(Firefox)、360浏览器、Safari浏览器等中的一种或多种。所述应用程序可以为例如WEB编辑器、Microsoft Office Excel、Numbers、Tableau、或可视化编程软件等中的一种或多种。
通过用户在所述编辑器提供的编辑界面进行输入和编辑,所述编辑器可以获得所述用户输入的数据或用户输入的执行代码中的一种或多种。在一些示例中,所述执行代码可以是用户基于编辑界面的选择操作、输入操作、拖拽操作、绘图操作等而生成的程序模块。例如,通过浏览器或客户端内所展示的数据源选项,从被勾选的数据源获取私有数据的程序语句;以及利用所述编辑界面所展示的对私有数据的处理方式的选项,获取处理该私有数据的处理过程及得到相应处理结果的程序语句,故而所述执行代码为包含上述各程序语句的程序模块。通过所述计算引擎根据所述输入数据和执行代码执行计算指令,获取所述计算结果,并通过编辑器进行可视化展示。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请所述的编辑器通过向用户提供可编辑的展示界面,同时利用数据处理系统对私有数据进行调用,并利用多方安全计算的方式执行计算指令以获得对用户输入的数据的处理结果,能够有效防止数据泄露,保证数据的私密性;另一方面,将输入数据和执行代码与计算结果进行可视化展示,更加直观清晰,实现了技术人员的可视化编程和数据业务设计。
本申请还提供一种数据处理设备,用以执行前述的数据处理方法。请参阅图14,显示为本申请数据处理设备在一实施例中的结构示意图,如图所示,所述数据处理设备14包括:接口装置141,存储装置142,以及处理装置143。
所述接口装置141连接一计算引擎,所述计算引擎包括多个计算节点。
所述存储装置142用于存储至少一个程序。
所述处理装置143连接所述存储装置142,用于按照所存储的至少一个程序,执行并实现如图12所示的数据处理方法。
其中,所述计算节点为单台计算机设备、或基于云架构的服务系统中被使用的实体设备或虚拟设备等。其中,所述单台计算机设备可以是自主配置的可执行所述计算方法的计算机设备,其可位于私有机房或位于公共机房中的某个被租用的机位中。所述云架构的服务系统包括公共云服务端与私有云服务端,其中,所述公共或私有云服务端包括SaaS、PaaS及IaaS等。所述私有云服务端例如阿里云计算服务平台、亚马逊云计算服务平台、百度云计算平台、腾讯云计算平台等等。其中,所述虚拟设备可以是实体服务器通过虚拟技术将一台独占设备虚拟成多台逻辑设备,供多个用户进程同时使用的设备之一。
所述接口装置与处理装置数据连接,其可以通过总线连接,或通过通信网络进行数据传递。为此,所述接口装置包括但不限于网卡、移动网络接入模块、通过总线与处理装置相连的总线接口等。
所述存储装置用于存储可执行所述数据处理方法的至少一个程序。所述存储装置可与处理装置位于同一实体服务器上,或位于不同实体服务器中并通过各服务器的接口装置将计算指令传递给运行所述计算的处理装置。所述存储装置可包括高速随机存取存储器,并且还可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。在某些实施例中,存储器还可以包括远离一个或多个处理器的存储器,例如经由RF电路或外部端口以及通信网络(未示出)访问的网络附加存储器,其中所述通信网络可以是因特网、一个或多个内部网、局域网(LAN)、广域网(WLAN)、存储局域网(SAN)等,或其适当组合。所述存储装置还包括存储器控制器,其可控制设备的诸如CPU和外设接口之类的其他组件对存储器的访问。其中,存储在存储装置中的软件组件包括操作系统、通信模块(或指令集)、文本输入模块(或指令集)、以及应用(或指令集)。
所述处理装置可操作地与存储装置耦接。更具体地,处理装置可执行在存储器和/或非易失性存储设备中存储的程序以在数据处理设备中执行操作。如此,处理装置可包括一个或多个通用微处理器、一个或多个专用处理器(ASIC)、一个或多个现场可编程逻辑阵列(FPGA)、或它们的任何组合。其中,所述处理装置所包含的多个CPU可位于同一实体服务器中或分散在多个实体服务器中,并借助于接口装置实现数据通信,以协同地执行所述数据处理方法。
所述处理装置通过调用存储装置所存储的程序执行所述数据处理方法,所述数据处理方法包括:获取输入数据以及输入的执行代码并实时可视化展示,所述执行代码被配置为可调用所述输入数据;接收到计算指令时令一计算引擎基于所述执行代码执行多方安全计算以获得计算结果;以及将所述计算结果进行可视化展示。
本申请提供的数据处理设备,通过执行前述数据处理方法对私有数据进行调用和处理,有效地保证了数据的私密性,解决了技术人员难于利用复杂的密码学方式处理涉及私有数据的数据处理逻辑的技术难题;另一方面,将输入数据和执行代码与计算结果进行可视化展示,更加直观清晰,实现了技术人员的可视化编程和数据业务设计。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请还提供一种计算机可读写存储介质,存储有数据处理方法的计算机程序,所述数据处理方法的计算机程序被执行时实现上述实施例关于图12中所述的数据处理方法。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
于本申请提供的实施例中,所述计算机可读写存储介质可以包括只读存储器、随机存取存储器、EEPROM、CD-ROM或其它光盘存储装置、磁盘存储装置或其它磁存储设备、闪存、U盘、移动硬盘、或者能够用于存储具有指令或数据结构形式的期望的程序代码并能够由计算机进行存取的任何其它介质。另外,任何连接都可以适当地称为计算机可读介质。例如,如果指令是使用同轴电缆、光纤光缆、双绞线、数字订户线(DSL)或者诸如红外线、无线电和微波之类的无线技术,从网站、服务器或其它远程源发送的,则所述同轴电缆、光纤光缆、双绞线、DSL或者诸如红外线、无线电和微波之类的无线技术包括在所述介质的定义中。然而,应当理解的是,计算机可读写存储介质和数据存储介质不包括连接、载波、信号或者其它暂时性介质,而是旨在针对于非暂时性、有形的存储介质。如申请中所使用的磁盘和光盘包括压缩光盘(CD)、激光光盘、光盘、数字多功能光盘(DVD)、软盘和蓝光光盘,其中,磁盘通常磁性地复制数据,而光盘则用激光来光学地复制数据。
在一个或多个示例性方面,本申请所述数据处理方法的计算机程序所描述的功能可以用硬件、软件、固件或者其任意组合的方式来实现。当用软件实现时,可以将这些功能作为一个或多个指令或代码存储或传送到计算机可读介质上。本申请所公开的方法或算法的步骤可以用处理器可执行软件模块来体现,其中处理器可执行软件模块可以位于有形、非临时性计算机可读写存储介质上。有形、非临时性计算机可读写存储介质可以是计算机能够存取的任何可用介质。
本申请上述的附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这根据所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以通过执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以通过专用硬件与计算机指令的组合来实现。
本申请提供的数据处理系统、方法、设备及存储介质,一方面通过计算模块对私有数据进行调用,并利用多方安全计算的方式执行计算指令,以获得对用户输入的数据的处理结果,能够有效防止数据泄露,保证数据的私密性,解决了技术人员难于利用复杂的密码学方式处理涉及私有数据的数据处理逻辑的技术难题;另一方面,将输入数据和执行代码与计算结果进行可视化展示,更加直观清晰,实现了技术人员的可视化编程和数据业务设计。
上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本申请。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。

Claims (35)

1.一种数据处理系统,其特征在于,包括:
数据输入模块,用于获取输入数据;所述输入数据包括用于参与执行多方安全计算的资源或者所述资源的引用,所述资源是用以参与多方安全计算的输入数据的数据,所述数据的类型是数值、函数、或者模型等中的一种或多种;
代码输入模块,与所述数据输入模块连接,用于获取输入的执行代码,所述执行代码被配置为可调用所述输入数据;所述执行代码调用所述输入数据为经过隐私化处理的方式得到的私密数据;以及
计算模块,用于接收到计算指令时令一计算引擎基于所述执行代码执行多方安全计算,并获取所述计算引擎的计算结果;所述计算引擎包括:
任务管理模块,用于获取所述计算指令以及处理所述计算指令的计算配置;所述计算配置包括:执行所述计算指令的秘密计算方式,和按照所述秘密计算方式执行所述计算指令的计算节点数量;
多个计算节点,用于根据所述计算配置执行所述执行代码以使所述多个计算节点进行多方安全计算;
展示模块,用于可视化展示所述数据输入模块的输入数据、所述代码输入模块输入的执行代码、以及所述计算模块获取的所述计算结果。
2.根据权利要求1所述的数据处理系统,其特征在于,所述输入数据的获取方式是基于所述数据输入模块的用户操作界面或者API接口获取的。
3.根据权利要求1所述的数据处理系统,其特征在于,所述数据输入模块获取输入数据及所述代码输入模块获取输入的执行代码是藉由用户对同一用户操作界面的输入操作实现的。
4.根据权利要求1所述的数据处理系统,其特征在于,所述输入数据包括明文数据及私密数据,所述展示模块用以可视化展示所述明文数据以及所述私密数据的标识。
5.根据权利要求4所述的数据处理系统,其特征在于,所述私密数据的标识包括占位符。
6.根据权利要求4所述的数据处理系统,其特征在于,所述计算指令为统计员工的薪资,所述明文数据包括员工出勤率以及员工薪资系数;所述私密数据包括员工基础工资。
7.根据权利要求1所述的数据处理系统,其特征在于,所述资源的引用所引用的资源存储在本地或网络中的至少一数据源中。
8.根据权利要求7所述的数据处理系统,其特征在于,所述计算模块通过数据源配置以使所述执行代码可通过所述资源的引用调用所述至少一数据源中的资源。
9.根据权利要求1所述的数据处理系统,其特征在于,所述隐私化处理的方式包括加密、分散、以及脱敏中的至少一种方式。
10.根据权利要求1所述的数据处理系统,其特征在于,所述计算模块包括一网络接口,网络连接所述计算引擎的多个计算节点。
11.根据权利要求1所述的数据处理系统,其特征在于,所述计算引擎执行根据所述计算配置执行所述执行代码以进行多方安全计算的方式为:所述计算引擎中至少部分计算节点分别对各自所获取的输入数据进行本地计算,和/或将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果。
12.根据权利要求1所述的数据处理系统,其特征在于,还包括一接口单元,用于接收所述计算引擎经由各计算节点分别持有的计算结果与所述输入数据相关的计算结果。
13.根据权利要求1所述的数据处理系统,其特征在于,所述可视化展示包括文本展示、动画展示、地图展示、及图表展示的一种或多种的结合。
14.根据权利要求1所述的数据处理系统,其特征在于,所述展示模块包括文本编辑器或图表编辑器或网页编辑器。
15.根据权利要求1所述的数据处理系统,其特征在于,所述代码输入模块包括代码编辑器。
16.根据权利要求1所述的数据处理系统,其特征在于,所述展示模块在一界面中同时可视化展示所述数据输入模块输入数据、所述代码输入模块输入的执行代码、所述计算模块获取的所述计算结果、以及任务状态。
17.根据权利要求1所述的数据处理系统,其特征在于,所述展示模块还包括权限控制单元,用于根据不同的操作权限可视化展示所述数据输入模块的输入数据、所述代码输入模块输入的执行代码、以及所述计算模块获取的所述计算结果。
18.一种数据处理方法,其特征在于,包括以下步骤:
获取输入数据以及输入的执行代码并实时可视化展示,所述执行代码被配置为可调用所述输入数据;所述输入数据包括用于参与计算模块执行多方安全计算的资源或者资源的引用,所述资源是用以参与多方安全计算的输入数据的数据,所述数据的类型是数值、函数、或者模型等中的一种或多种;所述执行代码调用所述输入数据为经过隐私化处理的方式得到的私密数据;
接收到计算指令时令一计算引擎基于所述执行代码执行多方安全计算以获得计算结果;所述计算引擎包括多个计算节点,基于所述执行代码执行多方安全计算包括:
获取到所述计算指令时处理所述计算指令的计算配置;所述计算配置包括:执行计算任务的秘密计算方式;以及按照所述秘密计算方式执行所述计算任务的计算节点数量;
根据所述计算配置执行所述执行代码以使所述多个计算节点进行多方安全计算;
以及将所述输入数据、输入的执行代码、以及计算结果进行可视化展示。
19.根据权利要求18所述的数据处理方法,其特征在于,所述输入数据的获取方式是基于用户操作界面或者API接口获取的。
20.根据权利要求18所述的数据处理方法,其特征在于,所述获取输入数据及获取输入的执行代码的步骤是藉由用户对同一用户操作界面的输入操作实现的。
21.根据权利要求18所述的数据处理方法,其特征在于,所述输入数据包括明文数据及私密数据,展示模块用以可视化展示所述明文数据以及所述私密数据的标识。
22.根据权利要求18所述的数据处理方法,其特征在于,所述私密数据的标识包括占位符。
23.根据权利要求21所述的数据处理方法,其特征在于,所述计算指令为统计员工的薪资,所述明文数据包括员工出勤率以及员工薪资系数;所述私密数据包括员工基础工资。
24.根据权利要求18所述的数据处理方法,其特征在于,所述资源的引用其引用的资源存储在本地或网络中的至少一数据源中。
25.根据权利要求24所述的数据处理方法,其特征在于,所述接收到计算指令时令一计算引擎基于所述执行代码执行多方安全计算以获得计算结果的步骤包括:令所述计算引擎通过数据源配置以使所述执行代码可通过所述资源的引用调用所述至少一数据源中的资源。
26.根据权利要求18所述的数据处理方法,其特征在于,所述隐私化处理的方式包括加密、分散、以及脱敏中的至少一种方式。
27.根据权利要求18所述的数据处理方法,其特征在于,所述接收到计算指令时令一计算引擎基于所述执行代码执行多方安全计算以获得计算结果的步骤包括:所述计算引擎在执行所述执行代码时,调用所述输入数据的方式为加密调用或分散调用。
28.根据权利要求18所述的数据处理方法,其特征在于,所述接收到计算指令时令一计算引擎基于所述执行代码执行多方安全计算以获得计算结果的步骤包括:所述计算引擎中至少部分计算节点分别对各自所获取的输入数据进行本地计算,和/或将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果。
29.根据权利要求18所述的数据处理方法,其特征在于,所述将所述计算结果进行可视化展示的步骤包括,通过一接口单元接收所述计算引擎经由各计算节点分别持有的计算结果,并将所述计算结果传输给所述数据输入及展示模块进行可视化展示与所述输入数据相关的计算结果。
30.根据权利要求18所述的数据处理方法,其特征在于,所述可视化展示包括文本展示、动画展示、地图展示、以及图表展示的一种或多种的结合。
31.根据权利要求18所述的数据处理方法,其特征在于,所述将所述计算结果进行可视化展示的步骤还包括:根据不同的操作权限可视化展示所述输入数据、所述执行代码、以及所述计算结果。
32.一种编辑器,其特征在于,包括如权利要求1-17中任一所述的数据处理系统。
33.根据权利要求32所述的编辑器,其特征在于,所述编辑器为基于浏览器的编辑器或者应用程序。
34.一种数据处理设备,其特征在于,包括:
接口装置,连接一计算引擎,所述计算引擎包括多个计算节点;
存储装置,用于存储至少一个程序;
处理装置,连接所述存储装置,用于按照所存储的至少一个程序,执行并实现如权利要求18-31中任一所述的数据处理方法。
35.一种计算机可读存储介质,其特征在于,存储有至少一程序,所述至少一程序在被调用时执行并实现如权利要求18-31中任一所述的数据处理方法。
CN201911109856.1A 2019-09-30 2019-11-14 数据处理系统、方法、设备、编辑器及存储介质 Active CN111967038B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN2019109450181 2019-09-30
CN201910945018 2019-09-30

Publications (2)

Publication Number Publication Date
CN111967038A CN111967038A (zh) 2020-11-20
CN111967038B true CN111967038B (zh) 2023-12-15

Family

ID=73358360

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911109856.1A Active CN111967038B (zh) 2019-09-30 2019-11-14 数据处理系统、方法、设备、编辑器及存储介质

Country Status (1)

Country Link
CN (1) CN111967038B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113111327B (zh) * 2021-04-27 2024-02-13 北京赛博云睿智能科技有限公司 基于PaaS的服务门户管理系统的资源管理方法及装置
CN114024960B (zh) * 2021-09-22 2023-10-31 医渡云(北京)技术有限公司 多方安全计算方法、装置、系统、存储介质及设备
TWI776760B (zh) * 2021-12-27 2022-09-01 財團法人工業技術研究院 神經網路之處理方法及其伺服器與電子裝置
US12021986B2 (en) 2021-12-27 2024-06-25 Industrial Technology Research Institute Neural network processing method and server and electrical device therefor
CN114726514B (zh) * 2022-03-21 2024-03-22 支付宝(杭州)信息技术有限公司 数据的处理方法和装置
CN114861112B (zh) * 2022-07-05 2022-09-20 广州趣米网络科技有限公司 基于数据存取和大数据分类的信息分发方法及系统
CN117667322A (zh) * 2022-08-22 2024-03-08 腾讯云计算(北京)有限责任公司 数据处理方法、装置、设备及可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105474575A (zh) * 2013-08-22 2016-04-06 日本电信电话株式会社 多方安全认证系统、认证服务器、中间服务器、多方安全认证方法以及程序
CN107924445A (zh) * 2015-09-25 2018-04-17 英特尔公司 保留隐私的计算的相互认可
CN108521325A (zh) * 2018-03-27 2018-09-11 林喆昊 一种适用于系统数据全生命周期的防侧信道攻击算法
CN110019283A (zh) * 2019-01-31 2019-07-16 阿里巴巴集团控股有限公司 极值确定方法及装置、电子设备、存储介质
JP2019144405A (ja) * 2018-02-20 2019-08-29 学校法人東京理科大学 入力者装置、演算支援装置、装置、秘匿演算装置、及びプログラム

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9170782B2 (en) * 2012-03-27 2015-10-27 Microsoft Technology Licensing, Llc Extensible mechanism for providing suggestions in a source code editor

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105474575A (zh) * 2013-08-22 2016-04-06 日本电信电话株式会社 多方安全认证系统、认证服务器、中间服务器、多方安全认证方法以及程序
CN107924445A (zh) * 2015-09-25 2018-04-17 英特尔公司 保留隐私的计算的相互认可
JP2019144405A (ja) * 2018-02-20 2019-08-29 学校法人東京理科大学 入力者装置、演算支援装置、装置、秘匿演算装置、及びプログラム
CN108521325A (zh) * 2018-03-27 2018-09-11 林喆昊 一种适用于系统数据全生命周期的防侧信道攻击算法
CN110019283A (zh) * 2019-01-31 2019-07-16 阿里巴巴集团控股有限公司 极值确定方法及装置、电子设备、存储介质

Also Published As

Publication number Publication date
CN111967038A (zh) 2020-11-20

Similar Documents

Publication Publication Date Title
CN111967038B (zh) 数据处理系统、方法、设备、编辑器及存储介质
Archer et al. From keys to databases—real-world applications of secure multi-party computation
US10771240B2 (en) Dynamic blockchain system and method for providing efficient and secure distributed data access, data storage and data transport
CN111931250A (zh) 多方安全计算一体机
CN104426973B (zh) 一种云数据库加密方法、系统及装置
CN108154038B (zh) 数据处理方法及装置
CN116843334A (zh) 基于区块链的合并式数据传输控制方法和系统
WO2017173271A1 (en) Systems and methods for providing data privacy in a private distributed ledger
CN111310204B (zh) 数据处理的方法及装置
CN111753324B (zh) 私有数据的处理方法、计算方法及所适用的设备
CA3014727A1 (en) Method and system for efficient transfer of cryptocurrency associated with a payroll on a blockchain that leads to an automated payroll method and system based on smart contracts
US20200167484A1 (en) Private analytics using multi-party computation
WO2022156594A1 (zh) 联邦模型训练方法、装置、电子设备、计算机程序产品及计算机可读存储介质
US9860219B2 (en) Runtime instantiation of broadcast encryption schemes
US11764941B2 (en) Decision tree-based inference on homomorphically-encrypted data without bootstrapping
CN112600830B (zh) 业务数据处理方法、装置、电子设备及存储介质
CN112000979B (zh) 隐私数据的数据库操作方法、系统及存储介质
US11568076B2 (en) Computer-implemented method of transferring a data string from an application to a data protection device
WO2022238426A1 (en) Efficiently batching pre-encrypted data for homomorphic inference
CN111753315A (zh) 输入数据的计算方法、计算引擎及存储介质
Kumar et al. Data security and encryption technique for cloud storage
CN115758432A (zh) 一种基于机器学习算法的全方位数据加密方法及系统
US20220164712A1 (en) Systems and methods for federated learning using distributed messaging with entitlements for anonymous computation and secure delivery of model
US11539521B2 (en) Context based secure communication
CN114580002A (zh) 数据处理方法、装置、设备、介质和程序产品

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