WO2020199784A1 - 输入数据的计算方法、计算引擎及存储介质 - Google Patents

输入数据的计算方法、计算引擎及存储介质 Download PDF

Info

Publication number
WO2020199784A1
WO2020199784A1 PCT/CN2020/076313 CN2020076313W WO2020199784A1 WO 2020199784 A1 WO2020199784 A1 WO 2020199784A1 CN 2020076313 W CN2020076313 W CN 2020076313W WO 2020199784 A1 WO2020199784 A1 WO 2020199784A1
Authority
WO
WIPO (PCT)
Prior art keywords
calculation
data
computing node
computing
input data
Prior art date
Application number
PCT/CN2020/076313
Other languages
English (en)
French (fr)
Inventor
李艺
Original Assignee
华控清交信息科技(北京)有限公司
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 华控清交信息科技(北京)有限公司 filed Critical 华控清交信息科技(北京)有限公司
Publication of WO2020199784A1 publication Critical patent/WO2020199784A1/zh

Links

Images

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/602Providing cryptographic facilities or services
    • 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
    • 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

Definitions

  • This application relates to the field of data processing technology, and in particular to a calculation method, calculation engine and storage medium for input data.
  • the intelligence of electronic equipment + the Internet promotes the development of big data services.
  • people's living habits are also changing due to the more convenient and operational guidance of big data services.
  • the credit rating of the user/enterprise in each bank can facilitate the lender to evaluate the borrower's ability to repay the loan.
  • sharing the navigation route with multiple people during a group trip is conducive to contact with each other.
  • companies share data for data processing in order to provide customers with more accurate statistical information and so on.
  • the purpose of this application is to provide a calculation method, calculation engine and storage medium for input data, which are used to solve the problem that the calculation efficiency of multi-party calculation in the prior art is far lower than user needs.
  • the first aspect of this application provides a method for calculating input data, using a calculation engine that is coordinated by four computing nodes to calculate a multi-party calculation instruction corresponding to a calculation task.
  • the calculation task is used to perform data processing on input data
  • the multi-party calculation method includes: the calculation engine obtains a multi-party calculation instruction, and obtains a private data group; wherein each of the private data groups is the input data based on the According to the multi-party calculation instruction, at least some of the computing nodes in the calculation engine respectively perform local calculations on the private data groups obtained by each, and/or locally Interacting the intermediate data generated by the calculation to obtain the calculation results respectively held by each calculation node; wherein, the calculation results held by a part of the calculation nodes selected from the four calculation nodes are used to generate a processing result; Wherein, the processing result is a processing result of the input data processed by the computing task.
  • the random decentralized processing method includes: randomly generating at least one private data based on the number of computing nodes performing computing tasks, and inputting data X according to the generated private data Disperse processing.
  • the input data comprises X-value
  • the input data includes floating-point data; the private data is obtained by randomly dispersing binary data of floating-point data.
  • the calculation engine also obtains non-private data as input data; the multi-party calculation instruction is determined based on the non-private data.
  • the multi-party calculation instruction includes an instruction set based on an association relationship between multiple calculations in a calculation task
  • each computing node uses shared random numbers to perform local calculations to obtain intermediate data or calculation results that can be offset; wherein, each computing node is configured to generate the random number Random number generator.
  • the calculation task includes two mathematical calculation tasks of input data; in accordance with the multi-party calculation instruction, each calculation node performs local calculation on the private data group respectively obtained.
  • interacting the intermediate data generated by the local calculation to obtain the calculation results respectively held by each calculation node includes: making the four calculation nodes use the random number to perform local calculations and use the data of one replacement data Interactively obtain the calculated results held separately.
  • the calculation task includes a multiplication calculation task of two input data; according to the multi-party calculation instruction, each calculation node performs local calculation on the private data group respectively obtained , And interacting the intermediate data generated by the local calculation to obtain the calculation results respectively held by each calculation node includes: the first calculation node, the second calculation node, the third calculation node and the first calculation node in the calculation engine
  • the four computing nodes sequentially obtain the private data group ⁇ x 1 ,x' 1 ,y 1 ,y' 1 ⁇ , the private data group ⁇ x 2 ,x' 2 ,y 2 ,y' 2 ⁇ , the private data group ⁇ x a , x 'a, y a, y ' a ⁇ , and the private data set ⁇ x b, x 'b, y b, y'b ⁇ ; wherein, ⁇ x 1, x '1 , x 2, x' 2, x a ,x' a
  • the calculation engine executes the following steps: make the first calculation node and the second calculation node share a random number r 12 and r '12, and so that the third computing node and the fourth computing nodes share the random number r ab and r' ab; enabling the first computing node and the second node, respectively, calculated for the respective data set held private calculated by multiplying the random number, and for canceling 12 and R & lt r '12 the mathematical calculations to obtain a first intermediate computing node data t 1 and t' 1, a second computing node and intermediate data obtained t 2 and t '2; order The third computing node and the fourth computing node respectively perform multiplication calculations and mathematical calculations for offsetting the random numbers r ab and r'ab on the private data sets held by each, so that the first computing node obtains intermediate data t a and t 'a
  • the calculation task includes two calculation tasks of mathematical calculation of input data, and during the execution of the calculation task by the calculation engine, no more than 2 ⁇ 4 replacements are generated. Data communication of data.
  • the calculation engine generates data communications with no more than 2n ⁇ 4 bits of data during the execution of the calculation task, where n is the value of the private data and the shared random number area
  • the calculation task includes three calculation tasks for mathematical calculation of input data; according to the multi-party calculation instruction, each calculation node performs a local operation on the private data group obtained by each calculation node.
  • the steps of calculating and interacting with the intermediate data generated by the local calculation to obtain the calculation results respectively held by each computing node include: making the four computing nodes use the data exchange of the first replacement data to obtain the respective holdings Corresponding to the first calculation result calculated from the input data X and Y and use it as intermediate data; and make the four calculation nodes use the data interaction of performing the second replacement data on the intermediate data to obtain the calculations held by each Result; and before replacing the data twice, let the four computing nodes perform local calculations based on the random number.
  • each computing node respectively performs local calculation on the private data group obtained by each, and interacts the intermediate data generated by the local calculation to obtain
  • the step of separately holding the calculation results via each calculation node includes: the first calculation node, the second calculation node, the third calculation node, and the fourth calculation node in the calculation engine sequentially obtain the private data group ⁇ x1, y1', z1 ⁇ , private data group ⁇ x2,y2',z2 ⁇ , private data group ⁇ xa,ya',za ⁇ , and private data group ⁇ xb,yb',zb ⁇ ; among them, ⁇ x1,x2,xa,xb ⁇ Is the input data X obtained by random dispersion processing, ⁇ y1',y2',ya',yb' ⁇ is the input data Y obtained by random dispersion processing, and ⁇ z1,z2,za,zb ⁇ is the input data Z Obtained by random dispersion processing; in
  • the calculation task includes three calculation tasks of mathematical calculation of input data, and the calculation engine generates no more than 3 ⁇ 4 times based on the replacement data during the execution of the calculation task. Data communication.
  • the calculation engine generates data communications of no more than 3n ⁇ 4 bits of data during the execution of the calculation task, where n is the value of the private data and the shared random number area
  • the calculation task includes a calculation task of extracting binary bits in the input data X; according to the calculation instruction, each calculation node performs a local operation on the private data group obtained respectively.
  • the steps of calculating and interacting the intermediate data generated by the local calculation to obtain the calculation results respectively held by each computing node include: the four computing nodes use k rounds of 1-bit replacement data to obtain their own The calculation result, wherein the calculation result is used to extract the binary digits of the input data X; k is the binary digits to be extracted corresponding to the input data X in the calculation task.
  • each computing node generates no more than k+1 data communications.
  • each computing node generates data communications with no more than 2k bits of data.
  • the calculation task includes a calculation task of extracting binary bits in the input data X; according to the calculation instruction, each calculation node performs a local operation on the private data group obtained respectively.
  • the steps of calculating and interacting the intermediate data generated by the local calculation to obtain the calculation results respectively held by each computing node include: the first computing node, the second computing node, the third computing node and The fourth computing node sequentially obtains the private data group ⁇ x 1 ⁇ , the private data group ⁇ x 2 ⁇ , the private data group ⁇ x a ⁇ , and the private data group ⁇ x b ⁇ ; among them, ⁇ x 1 ,x 2 ,x a ,x b ⁇ is the binary representation of the private data obtained by random dispersion processing of the input data X, wherein each private data has the same binary digits as the input data X; according to the calculation instructions, the calculation engine performs the following steps:
  • Each computing node initializes the bit value ⁇ c 1 ,c' 1 ⁇ , ⁇ c 2 ,c' 2 ⁇ , ⁇ c a ,c' a ⁇ , ⁇ c b ,c' b ⁇ for output respectively; and let The first computing node and the second computing node share the random numbers r 12 and b 12 ; and the third computing node and the fourth computing node share the random numbers b ab ; wherein, the random numbers r 12 and b 12 And b ab are binary random numbers generated based on extracting the number of bits k; let the first computing node and the second computing node use the random number r 12 to perform logical processing on the k-th bit of the private data x 1 and x 2 held by each , In order to obtain unified binary intermediate data u 1 and u 2 with the k-th bit; let the first computing node send the intermediate data u 1 to the third computing node, and the third computing node will perform the calculation based on the formula u
  • each computing node generates no more than 1.5k bits of data communication.
  • the calculation task includes a calculation task that compares two input data, and according to a multi-party calculation instruction set based on the subtraction calculation task of the two input data and the bit extraction calculation task, let The four computing nodes execute local calculations and data interactions to obtain the bit values held by each.
  • each computing node performs local calculations on the private data sets obtained by themselves, and interacts the intermediate data generated by the local calculations to obtain the
  • the steps of the calculation results respectively held by each computing node include: using four computing nodes to execute multi-party calculation instructions set based on the inadvertent transmission protocol and obtain the calculation results held by each.
  • the step of using four computing nodes to execute a multi-party calculation instruction set based on an inadvertent transmission protocol and obtain the calculation results held by each includes: making four calculations Nodes perform local calculations and data interactions based on the shareable random bit value used to indicate transmission/non-transmission of the corresponding private data, and obtain the calculation results held by each; wherein, the calculation results include the results used to indicate the transmission of the corresponding private data , Or used to indicate the result of not transmitting the corresponding private data.
  • the calculation task includes a calculation task of inadvertently transmitting the input data X; according to the calculation instruction, each calculation node performs local calculations on the private data group respectively acquired, And the step of interacting the intermediate data generated by the local calculation to obtain the calculation results respectively held by each computing node includes: the private data obtained by each computing node in the computing engine is ⁇ x 1 ,x' 1 ⁇ , ⁇ x 2 ,x' 2 ⁇ , ⁇ x a ,x' a ⁇ , ⁇ x b ,x' b ⁇ ; among them, private data ⁇ x 1 ,x' 1 ,x 2 ,x' 2 ,x a ,x' a ,x b ,x' b ⁇ are the input data X obtained by random and distributed processing; each computing node obtains the shareable random bit value ⁇ c 1 ,c' 1 ⁇ set based on the private data to be shared.
  • the calculation engine performs the following steps:
  • each computing node uses its configured bit value to determine whether to transmit private data There are mathematical calculations of the first type of random numbers, and the use of the respective configured bit values to perform mathematical calculations with the second type of random numbers on whether to transmit the first type of random numbers to obtain intermediate data and intermediate random numbers; let the first computing node The second computing node and the third computing node perform the replacement operation of the intermediate data and the intermediate
  • the calculation engine generates no more than 4 ⁇ 4 data communications based on replacement data during the execution of the calculation task.
  • the calculation engine generates data communications with no more than 4n ⁇ 4 bits of data during the execution of the calculation task, where n is the value of the private data and the shared random number area
  • each computing node obtains the shared random number based on the same random number generator.
  • the step of the computing engine obtaining the multi-party computing instruction corresponding to the computing task includes: each of the computing nodes obtains the multi-party computing instruction and the computing role; The computing nodes execute the multi-party computing instructions according to the respectively acquired computing roles.
  • the step of the calculation engine obtaining the multi-party calculation instruction corresponding to the calculation task includes: each of the computing nodes respectively obtains the corresponding locally executed calculation in the multi-party calculation instruction instruction.
  • it further includes sending calculation results held by two of the four computing nodes to the data acquisition device, so that the data acquisition device is based on the obtained The calculation result of generates a processing result corresponding to the calculation task.
  • the multi-party calculation instruction includes an instruction obtained by optimizing the multi-party calculation based on the correlation between multiple calculations in the calculation task; wherein, the multi-party calculation instruction Contains instructions to perform calculations using fewer than four computing nodes.
  • a second aspect of the present application provides a computing engine, including: four computing nodes, which are used for collaboratively computing multi-party computing instructions corresponding to a computing task; wherein the computing task is used for data processing on input data;
  • the four computing nodes execute the multi-party calculation method according to any one of the first aspect based on the obtained multi-party calculation instruction and the obtained private data group; wherein each of the private data groups is the input data based on the Obtained by the random distributed processing method corresponding to the calculation task.
  • a third aspect of the present application provides a readable medium in a computing node, characterized in that at least one program is stored, and when called, the at least one program participates in executing the multi-party calculation described in any one of the first aspect. method.
  • the calculation method, calculation engine, and storage medium of the input data of the present application have the following beneficial effects: the calculation engine and multi-party calculation method composed of four calculation nodes provided by the present application utilize the privacy applicable to calculation tasks. Data is exchanged locally and between nodes, which effectively increases the data transmission volume of the four computing nodes for multi-party calculations and reduces the computational complexity. Among them, the method of sharing random numbers between computing nodes to participate in the calculation is used, so that the calculation results obtained by each computing node will not be returned in clear code, thereby ensuring data security. In addition, the use of the multi-party calculation instructions described in this application for multi-party calculation effectively reduces the amount of data transmitted between computing nodes.
  • FIG. 1 shows a schematic diagram of the present application using a tree structure to describe the calculation task of the loop processing operation.
  • Fig. 2 shows a schematic diagram of optimizing the computing task shown in Fig. 1.
  • FIG. 3 shows a schematic diagram of this application using a tree structure to describe the calculation task of extracting common factors.
  • FIG. 4 shows a schematic diagram of optimizing the computing task shown in FIG. 3.
  • FIG. 5 shows a schematic diagram of the present application using a tree structure to describe the computing tasks of common expression extraction operations.
  • FIG. 6 shows a schematic diagram of optimizing the computing task shown in FIG. 5.
  • FIG. 7 shows a schematic block diagram of the process of the multi-party calculation method of this application.
  • Figures 8a and 8b respectively show a schematic diagram of a computing architecture in which a computing engine uses a scattered scattered data of the private data X and Y for data distribution.
  • first, second, etc. are used herein to describe various elements in some instances, these elements should not be limited by these terms. These terms are only used to distinguish one element from another element.
  • the first computing node may be referred to as the second computing node, and similarly, the second computing node may be referred to as the first computing node without departing from the scope of the various described embodiments, but unless the context is otherwise The method clearly states that otherwise they are not the same computing node.
  • A, B or C or "A, B and/or C” means "any of the following: A; B; C; A and B; A and C; B and C; A, B and C” .
  • An exception to this definition will only occur when the combination of elements, functions, steps or operations is inherently mutually exclusive in some way.
  • some methods use encryption for data transmission to ensure that the computer equipment during data transmission does not obtain private data.
  • the encrypted data needs to be decrypted when the processing equipment performs data processing. of.
  • the data processing process using private data adopts the data processing method in which multiple parties participate in the calculation used in cryptography, such as the secret sharing method, which makes the processing equipment processing private data need not use the decrypted private data for data processing. deal with.
  • this method effectively solves the problem of private data privacy, for technical personnel, the use of cryptographic technology for data processing has a very high R&D threshold, which is not conducive to technical personnel to ensure that private data is not leaked.
  • this application provides a calculation method.
  • the calculation method uses a calculation engine that is coordinated by four calculation nodes to calculate a calculation task generated by the task management platform, wherein the calculation task is used to perform data processing on input data.
  • the task management platform may be a single computer device, or a service system based on cloud architecture, etc.
  • the single computer device may be an autonomously configured computer device that can execute the processing method, and it may be located in a private computer room or in a leased computer room in a public computer room.
  • the service system of the cloud architecture includes a public cloud (Public Cloud) server and a private cloud (Private Cloud) server, where the public or private cloud server includes Software-as-a-Service (Software-as-a-Service, referred to as SaaS), Platform-as-a-Service (Platform-as-a-Service, PaaS for short) and Infrastructure-as-a-Service (Infrastructure-as-a-Service, IaaS for short), etc.
  • the private cloud service terminal is for example Facebook Cloud Computing Service Platform, Amazon Cloud Computing Service Platform, Baidu Cloud Computing Platform, Tencent Cloud Computing Platform, etc.
  • the task management platform may include a storage device, a processing device, a network interface device, and the like.
  • each of the above-mentioned devices can be located on a single server, or located in multiple servers and completed through data communication between the servers.
  • the interface device is connected to the processing device for data, which can be connected through a bus or through a communication network for data transmission.
  • the interface device includes, but is not limited to, a network card, a mobile network access module, a bus interface connected to a processing device through a bus, and the like.
  • the interface device is also in communication connection with a computing node, wherein the computing node is selected by the processing device to execute the processing method, and the computing node may be one or more.
  • the computing node may be a physical computing device or a virtual device carried by the physical computing device.
  • the interface device performs data communication with each computing node through at least one of the Internet, a mobile network, and a local area network, so as to send computing instructions for secret computing to each computing node.
  • the storage device is used to store at least one program that can execute the processing method.
  • the storage device and the processing device may be located on the same physical server, or located in different physical servers and transfer the program to the processing device running the program through the interface device of each server.
  • the storage device may include a high-speed random access memory, and may also include a non-volatile memory, such as one or more magnetic disk storage devices, flash memory devices, or other non-volatile solid-state storage devices.
  • the memory may also include a memory remote from one or more processors, such as a network-attached memory accessed via an RF circuit or an external port and a communication network (not shown), wherein the communication network may be the Internet , One or more intranets, local area networks (LAN), wide area networks (WLAN), storage local area networks (SAN), etc., or appropriate combinations thereof.
  • the storage device also includes a memory controller, which can control access to the memory by other components of the device, such as a CPU and a peripheral interface.
  • the software components stored in the storage device include an operating system, a communication module (or an instruction set), a text input module (or an instruction set), and an application (or an instruction set).
  • the processing device is operatively coupled with the storage device. More specifically, the processing device can execute a program stored in a memory and/or a non-volatile storage device to perform operations in the task platform.
  • the processing device may include one or more general-purpose microprocessors, one or more special-purpose processors (ASIC), one or more field programmable logic arrays (FPGA), or any combination thereof.
  • ASIC special-purpose processors
  • FPGA field programmable logic arrays
  • the multiple CPUs included in the processing device may be located in the same physical server or dispersed in multiple physical servers, and realize data communication with the aid of the interface device, so as to coordinately execute the calculation task and convert it into four calculations.
  • the node performs multi-party calculation instructions for multi-party calculations, and provides them to each computing node for execution.
  • the task management platform is used to obtain a calculation task and convert the calculation task into a multi-party calculation instruction.
  • the input data is data required to perform a computing task, which includes, but is not limited to: data generated by the task management platform itself, data input from a user, data from a data source, or other communicable data such as the Internet At least one of the data in the computer equipment.
  • the input data is a kind of private data.
  • the private data refers to data that is stored in digital form and has attributes that are not expected to be leaked, which includes, but is not limited to: personal/enterprise identity information, personal/enterprise account information, personal physical characteristics information, and personal/enterprise consumption information (E.g.
  • the digital form storage is exemplified as data stored in a computer-readable storage medium with private data tags and/or permissions, and its undesirable attributes are reflected in the set tags and/or permissions.
  • the tag includes, but is not limited to, a flag bit (such as a Boolean value, etc.) marked in the database and corresponding to the data stored in the database.
  • the authority includes, but is not limited to: the authority to read and write data, the authority to obtain plaintext private data, and so on.
  • the calculation task is used to perform data processing on input data.
  • the input data is a kind of private data; technicians store a program containing business logic for processing private data in the task management platform in advance, and the business logic is described by a computer program language.
  • the processing process which can include one or more computing tasks.
  • the business logic refers to a process obtained by a technician using one or more computing tasks to perform data processing on private data, and according to natural laws.
  • a kind of business logic includes an evaluation process of confirming the repayment ability of user A by using the amount of bank deposits, the amount of bank loans, and the bank repayment history of user A in banks B1 and B2.
  • a business logic includes: using the current location information of the users P1 and P2 to provide the terminal device held by the user P1 with the distance prompting process of the distance between P1 and P2 and the distance route information.
  • the calculation tasks are divided according to the logical sequence between input data and output data in business logic.
  • the business logic includes the processing logic of multiplying the input data A1 and A2 to obtain the processing result B1, and the processing logic of using the processing result B1 as another input data A3 and the input data A4 for comparing and calculating the processing logic to obtain the processing result B2;
  • the calculation tasks can be divided into calculation tasks that use input data A1 and A2 to perform multiplication calculations, and calculation tasks that use input data A3 and A4 to perform comparison calculations.
  • the calculation unit includes, but is not limited to: digital calculation processing such as addition, subtraction, multiplication, and division, and logical calculation such as AND, OR, and NOT.
  • the calculation task includes: a program module obtained through a computer program language editing interface.
  • the task management platform provides an editing interface for obtaining computer language programs describing business logic; technicians perform business logic design according to the program toolkit (such as API, etc.) provided by the editing interface, and submit it to the task management Platform, the task management platform decomposes the program into multiple computing tasks.
  • the task management platform provides an editing interface for acquiring data source information of the input data and processing methods for the input data.
  • the task management platform provides an editing interface including an input edit box, a selection edit box, etc.; technicians perform business logic design according to the input prompts provided by the editing interface, and submit it to the task management platform, the task management platform
  • the program generated based on the obtained editing interface is decomposed into multiple calculation tasks.
  • the calculation task is to convert the program described in the computer program language mentioned in the foregoing example into a processing procedure described in a calculation formula.
  • the processing procedure can be described by a computer program language, or by using a source code syntax structure.
  • the source code syntax structure is an abstract syntax tree (Abstract Syntax Tree, AST).
  • AST Abstract Syntax Tree
  • FIG. 1 shows a schematic diagram of a calculation task using a tree structure to describe a loop processing operation; wherein the calculation task of a loop processing operation is described as a tree structure including a multiplication calculation to obtain a processing result.
  • the task management platform can optimize the tree structure shown in FIG. 1 according to the multi-party processing method provided by the present application.
  • FIG. 2 shows a schematic diagram of optimizing the computing task shown in FIG. 1;
  • the calculation task corresponding to the loop processing operation is optimized into a calculation task that uses matrix multiplication to perform the loop processing operation, and the calculation instruction is generated according to the optimized calculation task.
  • Figure 3 shows a schematic diagram of using a tree structure to describe the calculation task of extracting the common factor operation; among them, the calculation task of extracting the common factor operation is described as calculating through addition and multiplication.
  • the tree structure of the processing result is obtained by the way of association.
  • Figure 4 shows a schematic diagram of optimizing the computing task shown in Figure 3; wherein, according to the multi-party processing method provided in this application, the computing task corresponding to the operation of extracting common factors is optimized into a calculation obtained by adding The calculation tasks of each calculation result are cascaded and multiplied, and calculation instructions are generated according to the optimized calculation tasks.
  • Figure 5 shows a schematic diagram of using a tree structure to describe the calculation tasks of common expression extraction operations; among them, the calculation tasks of common expression extraction operations are described as being processed through a cascade of addition calculations and multiplication calculations The resulting tree structure.
  • Figure 6 shows a schematic diagram of the optimization processing of the computing task shown in Figure 5; wherein, according to the multi-party processing method provided by this application, the computing task corresponding to the extraction operation of common expressions is optimized into the calculation by matrix addition Tasks, and generate multi-party calculation instructions based on the optimized calculation tasks.
  • the task management platform converts computing tasks into multi-party computing instructions that are executed cooperatively by the computing nodes in the computing engine.
  • the computing engine provided by this application includes four computing nodes.
  • the calculation method utilizes four computing nodes to collaboratively calculate the computing tasks and computing roles directly provided by the terminal device.
  • the corresponding computing node converts the computing tasks into multi-party computing instructions and executes the calculations.
  • the terminal device may be a computer device operated by the user, such as a personal computer.
  • the terminal device directly sends the computing tasks to be calculated by multiple parties and their respective computing roles in the multi-party computing to four designated computing nodes, and the data acquisition device used to return the calculation results may also be sent together.
  • Each computing node performs translation processing on the received computing task based on a multi-party computing protocol and obtains a multi-party computing instruction, and each computing node executes the computing method by executing the multi-party computing instruction.
  • the computing task is the same or similar to the computing task obtained by the task management platform, and will not be repeated here.
  • the four computing nodes constituting the computing engine may be fixedly configured. Or the four computing nodes are selected based on the selection rules based on the task management platform; wherein, the selection rules include the attribute information of the computing nodes.
  • the attribute information of the computing node can be stored in a configuration file (or log file, etc.) in the task management platform.
  • the attribute information can be maintained by a task management platform and can be dynamically updated, which includes but is not limited to: equipment information of each computing node, equipment provider information of the physical server where each computing node is located, and the like.
  • the device information is, for example, device information of a physical device (such as an IP address, MAC address, etc.), or device information of a virtual device (such as a virtual device ID, etc.).
  • each computing node may be configured with a corresponding execution program or processing chip according to the multi-party computing performed on each computing node in advance.
  • the computing node is a single computer device or a physical device or virtual device used in a cloud-based service system.
  • the single computer device may be an autonomously configured computer device that can execute the calculation method, and it may be located in a private computer room or in a leased computer room in a public computer room.
  • the data source is used as the computing node (or one of the computing nodes); the computing node may also be located on the side of the task management platform, for example, the task management platform is the computing node (or one of the computing nodes).
  • the form of the physical or virtual device of the computing node and the geographical location set are not limited.
  • the computing nodes can be located on different virtual devices of the same physical server and managed separately through management authority.
  • the service system of the cloud architecture includes a public cloud service end and a private cloud service end, wherein the public or private cloud service end includes SaaS, PaaS, IaaS, and the like.
  • the private cloud service terminal is, for example, Facebook Cloud Computing Service Platform, Amazon Cloud Computing Service Platform, Baidu Cloud Computing Platform, Tencent Cloud Computing Platform, etc.
  • the virtual device may be one of the devices in which a physical server virtualizes an exclusive device into multiple logical devices through virtual technology for simultaneous use by multiple user processes.
  • the computing node may include a storage device, a processing device, a network interface device, and so on.
  • each of the above-mentioned devices can be located on a single server, or located in multiple servers and complete the computing instructions executed by a single computing node through data communication between the servers.
  • FIG. 7 shows a schematic block diagram of the flow of the multi-party calculation method of this application.
  • the multi-party calculation method is executed cooperatively by four calculation nodes in the calculation engine.
  • step S110 the calculation engine obtains a multi-party calculation instruction corresponding to the calculation task, and obtains a private data group.
  • the multi-party calculation instruction is designed to perform a calculation task based on a multi-party calculation method executed by four computing nodes.
  • the task management platform converts the calculation task into the multi-party calculation instruction in advance according to the pre-built multi-party calculation protocol corresponding to each calculation task, and sends it to the calculation engine.
  • the multi-party computing protocol is a process of instructing and scheduling each computing node in the computing engine to perform multi-party computing of corresponding computing tasks, which includes, but is not limited to: multi-party computing that describes computing tasks such as addition, subtraction, multiplication, or division.
  • the execution process describes the multi-party calculation execution process of logical calculation tasks such as logical sum, OR, NOT, XOR, and comparison, and describes the multi-party calculation execution process of secret transmission.
  • the multi-party calculation instructions include: instructions for instructing four computing nodes in the calculation engine to perform local calculations in order to perform calculation tasks in a multi-party calculation manner, instructions for performing data interaction between the computing nodes, instructions for obtaining input data, and generating random numbers Instructions etc.
  • the multi-party computing instruction may also include instructions for instructing the computing node to perform local computing and computing roles of data interaction.
  • the multi-party calculation instructions may be described by computer program language, or by machine language.
  • the multi-party calculation instructions directly come from the task management platform.
  • the multi-party calculation instruction is generated based on the acquired calculation task.
  • each computing node of the computing engine acquires a complete multi-party computing instruction corresponding to a computing task, that is, acquiring a computing instruction that contains the execution of each computing node. For this reason, in order for each computing node to perform cooperatively, the steps It includes that each of the computing nodes obtains the multi-party computing instruction and the computing role; so that each computing node executes the multi-party computing instruction according to the respectively acquired computing role.
  • the computing role is used to mark each computing node that performs local calculation in the multi-party computing instruction, and to mark the data sender and data receiver when the interaction between computing nodes is executed in the multi-party computing instruction.
  • each of the computing nodes of the computing engine respectively obtains corresponding locally executed computing instructions among the multi-party computing instructions.
  • the calculation instructions of the local execution order include instructions for executing local calculations, instructions for issuing locally stored data for performing data interaction, instructions for storing received data locally for executing data interaction, and obtaining processed Commands for inputting data, commands for generating random numbers, etc.
  • the instructions comprising party computation computing node generates a random number r S1 execution of instructions 12 P1
  • Sa perform computing node generates a random number r ab & instruction Pa like
  • the acquisition instruction computing node S1 P1 computing node acquisition instruction Sa Pa.
  • each computing node in the computing engine also obtains a private data group.
  • the private data group includes private data obtained from all the input data required by the computing task through random and distributed processing. For example, if the computing task requires two input data X and Y, the data obtained by each computing node
  • the private data group contains ⁇ xi,yj ⁇ , where xi and yj are the private data obtained after X and Y are randomly dispersed.
  • there can be multiple private data corresponding to X in the private data group but it should not be so large that the input data X can be obtained through the recovery operation.
  • there is also input data Y which will not be detailed here. .
  • the calculation engine may obtain the input data from one or more data sources.
  • the corresponding calculation engine also obtains the non-private data as the input data; and the multi-party calculation instruction is determined based on the non-private data.
  • multi-party computing instructions do not necessarily use all computing nodes in the computing engine.
  • the corresponding calculation instruction can be set according to whether the input data is private data or non-private data.
  • the input data involved in the computing task is all non-private data
  • the corresponding multi-party computing instruction is to designate a computing node to execute each computing instruction.
  • the input data involved in the computing task is all non-private data
  • the corresponding multi-party computing instruction is a computing instruction that specifies multiple computing nodes to execute independently, without data interaction.
  • the corresponding multi-party calculation instructions include calculation instructions that optimize multi-party calculations for non-private data.
  • the calculation task that includes private data and non-private data Take the calculation task that includes private data and non-private data as an example. For example, if the input data includes private data A1 and non-private data A2, and the calculation task includes calculating the product of A1 and A2, then the multi-party calculation instruction includes the calculation node S1 The instruction of a1 ⁇ A2, and the instruction of making the computing node S2 calculate a2 ⁇ A2; among them, a1 and a2 are the private data obtained after A1 is randomly distributed.
  • non-private data includes A5 and A6
  • the private data includes A7
  • the calculation task R2 is (B+A7)
  • the multi-party calculation instructions include: the calculation node S1 calculates (A5*A6) instructions, the calculation result B is divided into b1 and b2 instructions, and the calculation (b2 +a72) and the instruction to send b1 to the computing node S2;
  • the multi-party computing instruction also includes: the computing node S2 to calculate (b1+a71).
  • a71 and a72 are the private data obtained after A7 is randomly distributed.
  • the input data includes private data A1 and A3, and the calculation task includes calculating the product of A1 and A3, and the multi-party calculation instruction includes the instruction to make the calculation node S1 calculate a11 ⁇ a31, and the calculation node S2 to calculate the a12 ⁇ a32 Instruction, calculation node Sa calculates a13 ⁇ a33 instruction, calculation node S calculates a14 ⁇ a34 instruction, makes calculation node S1 and Sa perform data replacement instructions, makes calculation nodes S2 and Sb perform data replacement instructions, and makes each calculation The node calculates instructions based on the data obtained by the replacement and the data obtained by the local calculation; among them, a11 and a12, and a13 and a14 are the private data obtained by randomly distributed processing of the input data A1; a31 and a32, and a33 and a34, respectively They are the private data obtained by randomly distributed processing of input data A3. It can be seen from the above examples that the multi-party calculation instruction is determined based on the non-private data contained in the
  • the task management platform sends instruction information containing the way of distributing private data to the corresponding data source according to the computing task.
  • the task management platform requests the corresponding data source to randomly distribute the input data according to the calculation needs of the private data group in the multi-party calculation instruction corresponding to the calculation task, and the data source is randomly distributed according to the provided distribution method Each subsequent private data is distributed to each computing node in the computing engine.
  • the input data used to perform the computing task has the same random distributed processing method, then the task management platform can provide the device information of each computing node and the corresponding data according to the data distribution rules agreed with each data source in advance.
  • the private data group may also be obtained by directly requesting from the data source by each computing node in the computing engine. For example, each computing node in the computing engine sends a data request including obtaining corresponding private data in the private data group to the corresponding data source according to the data source provided by the obtained multi-party computing instruction, wherein the data request includes the data source Based on the preset number of the private data group set by each computing node in the computing engine, each computing node obtains a private data group that can perform multi-party calculations.
  • the input data may be represented by intermediate data generated by the computing node during the execution of the computing instruction. For example, in a multi-party computing instruction including hybrid computing, one of the computing nodes randomly performs the intermediate data according to the computing instruction. After being distributed into private data, it is distributed to another or multiple computing nodes.
  • the input data may be integer type data or floating point type data.
  • the data source can directly process the integer type data randomly.
  • the data source binarizes the floating-point data, and then performs random dispersion processing to obtain multiple private data.
  • examples of binarization processing include IEEE754.
  • the input data provided by the data source is 125.5, and its binary representation is 1111101.1.
  • the first bit 0 represents the positive and negative sign of the value, thereby converting 125.5 into a 32-bit binary number 0 10000101 11110100000000000000000, and performing random dispersion processing on the 32-bit binary number.
  • the multiple input data for data calculation in the calculation task contains floating-point data
  • the above-mentioned floating-point number to binary format integer method can be used to unify the input data, and then perform the calculation.
  • the random dispersion processing refers to randomly generating a plurality of private data [xj] from the input data, wherein the private data [xj] can obtain corresponding input data through recoverable mathematical calculations.
  • the private data group is the input data obtained based on the random decentralized processing method required by the calculation engine to perform multi-party calculation; and the number of private data [xj] is based on the multi-party calculation instructions executed by the calculation engine and/ Or the number of computing nodes is preset.
  • the addition calculation in the calculation task is configured to be performed using two computing nodes, and the corresponding input data is dispersed into first private data generated randomly, and second private data obtained based on the first private data, where the first private The data and the second private data can be restored to the input data, and the two private data are allocated to different computing nodes for calculation.
  • the calculation task includes the multiplication calculation of two private input data.
  • the two input data to be processed are randomly scattered into four groups of private data. Each group of private data is used to allocate to a computing node to obtain each computing node. The private data group.
  • the random distributed processing method includes: randomly generating at least one piece of private data, and performing distributed processing on the input data according to the generated private data.
  • the random distributed processing method may randomly generate at least one piece of private data based on the number of computing nodes performing calculations.
  • the calculation task includes addition calculation, and the number of calculation nodes performing the addition calculation is two, then a private data a1 is randomly generated, and the input data is distributed according to the private data a1 to obtain private data a1 and a2.
  • the random decentralized processing method may randomly generate a plurality of private data based on various calculations used in the overall planning of calculation tasks.
  • the calculation task includes the addition calculation of input data A1 and A2, and the multiplication calculation of input data A2 and A3.
  • the addition calculation is performed by two calculation nodes, and the multiplication calculation is performed by four calculation nodes. This is to reduce the data source
  • the number of interactions can randomly disperse all input data into four private data, and each computing node extracts the corresponding private data according to the execution instructions. For example, for each input data, two private data are randomly generated, and the corresponding input data is distributed according to the two private data to obtain four private data.
  • the random decentralized processing method can randomly generate a piece of private data based on various calculations used in the overall planning of computing tasks, and randomly disperse the input data into Two private data are distributed to different computing nodes, and each computing node sends the obtained private data to other computing nodes according to the executed computing instructions, or redistributes the received private data and sends it to other computing nodes .
  • the random dispersion processing method of input data includes a numerical value dispersion processing method.
  • the input data 7 is dispersed into: private data including ⁇ 2,5 ⁇ and ⁇ 3,4 ⁇ ; among them, 2 and 3 It is randomly generated, and the private data allocated to each computing node are ⁇ 2 ⁇ , ⁇ 5 ⁇ , ⁇ 3 ⁇ , ⁇ 4 ⁇ .
  • this example only takes the random dispersion processing of one of the input data as an example, and is not limited to the calculation task of multiplying two numbers, and only one input data is subjected to random dispersion processing.
  • n constraints e.g., x 1 and a randomly generated x '1 are limited to less than 2 n, where, n represents x 1 and x' is the number of bits 1 .
  • the input data comprises a bit value C
  • the private data corresponding to the input data C in the private data group obtained by each computing node are ⁇ c 1 ,c' 1 ⁇ , ⁇ c 2 ,c' 2 ⁇ , ⁇ c a ,c' a ⁇ , ⁇ c b , c 'b ⁇ .
  • the input data 1 is randomly decomposed into 0 and 1, and according to the above formula, four private data ⁇ 0,1,1,0 ⁇ are obtained, which are allocated to each computing node
  • the private data are ⁇ 0,1 ⁇ , ⁇ 1,0 ⁇ , ⁇ 1,0 ⁇ , ⁇ 0,1 ⁇ .
  • Each computing node in the computing engine obtains private data of each input data from at least one data source or, and forms a private data group for executing multi-party computing instructions to execute multi-party computing instructions.
  • the calculation task includes an example of calculating the product of A1 and A3 and is extended to other calculation tasks.
  • each Computing nodes use shared random numbers to perform local calculations to obtain intermediate data or calculation results that can be offset, thereby ensuring that data transmitted between computing nodes and between computing nodes and other devices cannot be leaked.
  • each computing node is equipped with a random number generator that generates the random number.
  • each computing node is configured with a random number generator for generating shared random numbers according to the same random number generation rule through multi-party computing instructions.
  • the calculation nodes S1 and S2 share the random number r 12 , and the random number generators configured in the calculation nodes S1 and S2 share the same random number generation rules, thereby effectively avoiding calculation The communication operation of the random number r 12 between the nodes S1 and S2.
  • step S120 according to the multi-party calculation instruction, at least some of the computing nodes in the computing engine respectively perform local calculations on the private data sets they have obtained, and/or interact with the intermediate data generated by the local calculations to obtain The calculation results held by each computing node.
  • the multi-party computing instruction may instruct some computing nodes to perform only local computing and obtain the computing result.
  • the multi-party calculation instruction includes an instruction generated based on a calculation with homomorphism in a computing task; according to the multi-party calculation instruction, a computing node in the calculation engine performs local calculations and obtains corresponding calculation results .
  • the homomorphism means that there may be a closed operation with associative law, for example, addition calculation.
  • the multi-party calculation instruction may instruct the two calculation nodes to perform the addition calculation of the input data A1 and A2, and obtain the calculation results held by each.
  • the data acquisition device can obtain the processing result of A1+A2 by acquiring the calculation results of the two computing nodes.
  • the multi-party computing instructions include instructions for instructing computing nodes to respectively perform local calculations on the private data groups obtained by each, and instructions for interacting intermediate data generated by local calculations.
  • a multi-party calculation instruction may correspond to each calculation involved in the calculation task.
  • the multi-party calculation instruction includes an instruction set based on an association relationship between multiple calculations in a calculation task.
  • the association relationship between the multiple calculations includes but is not limited to: calculation priority relationship, calculation homomorphism, calculation synchronization, random dispersion processing of input data required for calculation, and the like.
  • the task management platform or computing engine optimizes the local computing and data interaction of each computing node, whereby each computing node executes local computing instructions according to the optimized multi-party computing instructions, and the computing nodes execute data interaction Instructions.
  • the calculation priority includes the order determined based on the calculation formula, and/or the complexity of multi-party calculations.
  • the shares of scattered data and intermediate data between various calculation levels are adjusted in the order determined by the calculation formula.
  • the calculation task contains (X+Y) ⁇ Z
  • the multi-party calculation instructions include: instruct two computing nodes to perform local calculations to obtain the corresponding (X+Y) multi-party calculation instructions, and instruct the two computing nodes to hold their own
  • the calculation result corresponding to the (X+Y) multi-party calculation is used as the intermediate data, and the instructions are randomly distributed, and the four computing nodes are instructed to execute the instruction corresponding to the (X+Y) ⁇ Z multi-party calculation.
  • the calculation task includes extracting the highest order of (XY), and the multi-party calculation instructions include: instruct two computing nodes to perform local calculations to obtain the corresponding (XY) multi-party calculation instructions, and instruct the two computing nodes to hold the corresponding (XY)
  • the calculation result of the multi-party calculation is used as intermediate data, and the instructions are randomly distributed, and the four computing nodes are instructed to execute the multi-party calculation instruction based on the calculation result to perform bit extraction.
  • high-complexity multi-party calculations are optimized to obtain corresponding multi-party calculation instructions; among them, ways to optimize high-complexity multi-party calculations include but Not limited to: reduce the number of communications and/or the number of calculations between computing nodes according to the calculation protocol before optimization. The specific example will be illustrated according to the description of the subsequent calculation protocol.
  • the optimized multi-party calculation effectively reduces the redundant communication and redundant calculation between the computing nodes.
  • the calculation engine obtains the calculation result of the corresponding calculation task
  • the calculation result held by a part of the calculation node selected by the data acquisition device from the four calculation nodes is used to generate a processing result; wherein, the processing The result is the processing result of the input data processed by the computing task.
  • the calculation engine obtains calculation results respectively held by each calculation node by executing multi-party calculation instructions, where each calculation node may hold one or more calculation results. For example, each calculation node holds two calculation results.
  • the data acquisition device for the computing task selects some of the calculation results held by the computing node from the four computing nodes that perform the computing task, and executes the calculation instruction that uses the obtained calculation result to generate the processing result , Thus complete the calculation task containing the input data, and get the corresponding processing result.
  • each calculation node holds two calculation results
  • the data acquisition device selects two calculation nodes from four calculation nodes according to the calculation role of the calculation node and obtains all calculation results held by them, and then uses The four calculation results obtained are calculated to obtain the processing result of the corresponding calculation task.
  • the number of processing results obtained by the data acquisition device is two. If the two processing results are the same, the data acquisition device can determine that the calculation task performed by the calculation engine is correct, otherwise, it is incorrect. It can be seen that the method of selecting two from four to extract the calculation result also has the effect of verifying the correctness of the processing result.
  • the data acquisition device may be a provider of input data, such as a data source, thereby avoiding the leakage of input data; the data acquisition device may also be a terminal device that generates a computing task , Such as a computer device used by a user to input a program; the data acquisition device also uses the processing result of the calculation task as a new computing task execution device for input data, such as a task management platform or other computer equipment.
  • the multi-party calculation instructions generated in accordance with the multi-party calculation protocol describe a multi-party calculation process that can provide a multi-party calculation method that selects two from four.
  • the calculation task includes a calculation task that performs mathematical calculations on two input data.
  • a statistical algorithm includes a calculation task that summarizes the sum of two input data.
  • the evaluation algorithm constructed based on input data includes calculation tasks such as multiplication of weights and input data.
  • the step S120 includes: ordering the four computing nodes to perform local mathematical calculations based on the obtained private data set, and ordering the four computing nodes to perform local calculations using the random numbers and use a data exchange of replacement data Obtain the calculated results held separately.
  • the data operation of replacing data means that two computing nodes exchange intermediate data.
  • the calculation task includes a multiplication calculation task of two input data
  • the four computing nodes use the random numbers shared in pairs and the private data obtained by each to perform local calculations and generate intermediate data, and perform a replacement of the intermediate data between the four computing nodes. Data interaction; the four computing nodes obtain the calculation results respectively held based on the intermediate data after the interaction.
  • the first computing node, the second computing node, the third computing node, and the fourth computing node in the computing engine obtain the private data group ⁇ x 1 ,x' 1 ,y 1 ,y' 1 ⁇ in sequence, and the private Data group ⁇ x 2 ,x' 2 ,y 2 ,y' 2 ⁇ , private data group ⁇ x a ,x' a ,y a ,y' a ⁇ , and private data group ⁇ x b ,x' b ,y b ,y' b ⁇ ; where ⁇ x 1 ,x' 1 ,x 2 ,x' 2 ,x a ,x' a ,x b ,x' b ⁇ are obtained by randomly dispersing input data X, ⁇ y 1, y '1, y 2, y' 2, y a, y 'a, y b, y' b ⁇ is an input data Y obtained by the random dispersion treatment.
  • each computing node After each computing node obtains its own private data group, it executes the following steps to achieve the calculation results held by each in the case of performing a data exchange of replacement data:
  • step 121 enabling the first node and the second computing node calculates the shared random number r 12 and r '12, and so that the third computing node and the fourth computing nodes share the random number r ab and r' ab.
  • the use of shared random numbers can improve the data security of computing nodes.
  • each random number can be generated when a multi-party calculation instruction is generated, or the multi-party calculation instruction includes a random number generation used to generate a shared random number according to the same random number generation rule (also known as "seed"), thus, the first computing node and the second node is calculated to obtain the same random number r 12 and r '12, and the third computing node and the fourth node is calculated to obtain the same random numbers r ab and r'ab .
  • the same random number generation rule also known as "seed”
  • step S122 the computing node so the first node and the second computing each respective group of private data held by multiplying the random number calculation, and for canceling r 'mathematical calculation 12 and 12 r, to the first computing to give the intermediate node and the data t 1 t '1, a second computing node and intermediate data obtained t 2 and t' 2.
  • step S123 so that the third computing node and the fourth node are calculated for the respective set of private data held by multiplying a mathematical calculation and canceling the random number r ab and r 'ab is calculated, so that the first computing to give the intermediate nodes and data t a t 'a, the second computing node and intermediate data obtained t b and t' b.
  • step S124 let the first computing node and the third computing node replace each of their intermediate data, and the first computing node and the fourth computing node will replace each of their intermediate data; let the second computing node and the third computing node replace Each piece of intermediate data, and the second computing node and the fourth computing node replace each piece of intermediate data.
  • the data interaction relationship constructed between the four computing nodes not for the purpose of offsetting the random number is used to replace the intermediate data with the random number.
  • t 't 1 transmits a fourth intermediate data transmitted to a computing node, and the third intermediate data to the computing node; a second computing node so that the intermediate computing node transmits data to the third t 2, and the intermediate data t '2 is sent to a fourth computing node; order third computing node sends data t a to a second intermediate computing node, and the intermediate data t' a is sent to the first computing node; and computing a fourth order the intermediate node transmits the data to the first computing node t b, and the t 'b intermediate data transmitted to the second computing node.
  • the above-mentioned replacement method is set based on multi-multiplication calculation. According to the local calculation of the multiplication performed by the actual computing node, the above-mentioned replacement method can be adjusted adaptively, and no examples are given here.
  • each computing node performs a data exchange for replacing the data, and each computing node sends out no more than 2n bits of data.
  • the calculation engine generates no more than 2 ⁇ 4 data communications based on replacement data during the execution of the calculation task; and the calculation engine executes all data communications.
  • data communication with no more than 2n ⁇ 4 bits of data is generated.
  • the calculation engine generates 2 ⁇ 4 data communications based on replacement data during the execution of the calculation task, and the calculation engine generates 2n ⁇ 4 bits during the execution of the calculation task.
  • Data communication of data volume Taking one of the two input data as an example, the calculation engine generates less than 2 ⁇ 4 data communications based on replacement data during the execution of the calculation task, and the calculation engine generates less data communication during the execution of the calculation task. Data communication with a data volume of 2n ⁇ 4 bits.
  • each computing node is made to use the intermediate data paired based on the permutation operation to perform local calculations including addition, so that each computing node obtains two calculation results including offset random numbers.
  • the data acquisition device can select the first computing node and the third computing node, or the second computing node and the fourth computing node according to the two computing nodes containing the offsetable random numbers determined by the above computing protocol, and use the sum method Offset the random number generated by the computing node, and obtain the processing results of two corresponding XY multiplication calculation tasks, or multiples of the processing results.
  • the processing results obtained according to the above example can be two. If the two processing results are the same, it means the processing result of the XY multiplication calculation obtained, and vice versa, it means the calculation is wrong.
  • the calculation task includes three input data to perform mathematical calculations.
  • an algorithm that uses neural networks to classify input data includes weight, input data, and bias as three input data to perform mathematical calculations.
  • Calculation tasks, etc. The step S120 includes: making the four computing nodes use the data exchange of the first replacement data to obtain the first calculation result calculated by the corresponding input data X and Y held by each of them, and use it as intermediate data; The computing node obtains the calculation results held by each of them by performing a second data exchange on the intermediate data; and before the two data replacements, the four computing nodes are executed based on the random number Local calculation. Wherein, the calculation results held by each are used to process the calculation tasks of the input data X, Y, and Z.
  • the calculation task includes three multiplication calculation tasks of input data X, Y, and Z
  • step S121' let the first computing node and the second computing node share a random number r 12 and r '12, and so that the third computing node and the fourth computing nodes sharing a random number r ab and r'ab .
  • the sharing method of each random number can be the same as the method mentioned in the foregoing example, and will not be repeated here.
  • step S122' the four computing nodes are made to perform multiplication calculations on the private data related to the input data X and Y and to offset the random numbers.
  • Mathematical calculations to obtain a first intermediate computing node data t 1, to give a second intermediate computing node data t 2, to give the third intermediate node data calculated t a, to give the fourth intermediate data computing node t b.
  • the intermediate data t 1 is obtained by local calculation; the second calculation node is based on the formula The intermediate data t 2 is obtained by local calculation; the third calculation node is based on the formula The intermediate data t a is obtained by local calculation; and the fourth calculation node is based on the formula The intermediate data t b is calculated locally.
  • the above adoption makes the first computing node to Do subtraction, and make the second calculation node pair random numbers
  • the method of adding is only an example, and it can also be used to make the first computing node pair the random number Do addition, and make the second computing node pair random numbers The way to do subtraction.
  • the above adoption makes the third computing node pair the random number Do subtraction, and make the fourth calculation node pair random numbers
  • the method of addition is also an example, and the third calculation node can also Do addition, and make the fourth calculation node pair random numbers The way to do subtraction.
  • step S123' let the first computing node and the third computing node replace their respective intermediate data; let the second computing node and the third computing node replace their respective intermediate data.
  • the first computing node sends the intermediate data result t 1 to the third computing node, and the third computing node sends the intermediate data t a to the first computing node; and the second computing node sends the intermediate data result t 2 to The fourth computing node and the fourth computing node send the intermediate data t b to the second computing node.
  • the above-mentioned replacement method is set based on multi-multiplication calculation. According to the local calculation of the multiplication performed by the actual computing node, the above-mentioned replacement method can be adjusted adaptively, and no examples are given here.
  • each computing node is made to use each intermediate data it holds and the private data corresponding to the input data Z to perform multiplication mathematical calculations, so that the first computing node obtains the intermediate data s 1 and the second computing node obtains the intermediate data s 2, a third intermediate data obtained compute node s a, to give the fourth intermediate data computing node s b.
  • step S125 ' let the first computing node and the second node, respectively, calculated for the respective intermediate data held by the s 1 and s 2 is calculated by multiplying the random number, and for canceling 12 and R & lt r' mathematical calculations 12 so as to obtain a first intermediate computing node data h 1 and h '1, and a second intermediate computing node data obtained h 2 and h' 2; and to make the third computing node and fourth nodes, respectively calculating respective holders and intermediate data s a s b is calculated by multiplying the random number for canceling and R & lt ab and r 'ab mathematical calculation, to obtain a third intermediate data computing node h a and h' a, to give the intermediate computing node and the fourth data h b and h 'b;
  • the above-mentioned replacement method is set based on multi-multiplication calculation. According to the local calculation of the multiplication performed by the actual computing node, the above-mentioned replacement method can be adjusted adaptively, and no examples are given here.
  • step S126' let the first computing node and the third computing node replace each of their intermediate data, and the first computing node and the fourth computing node will replace their respective intermediate data; let the second computing node and the third computing node Each piece of intermediate data is replaced, and the second computing node and the fourth computing node are replaced with each piece of intermediate data.
  • first computing node and a fourth node replacing intermediate data computing h 1 and h b; make a first computing node and the third intermediate data computing node replacement h '1 and h' a; make a second computing node and three intermediate computing node data replacement h 2 and h a; and a second computing node and a fourth order computing node replacing intermediate data h '2 and h' b.
  • the above-mentioned replacement method is set based on multi-multiplication calculation. According to the local calculation of the multiplication performed by the actual computing node, the above-mentioned replacement method can be adjusted adaptively, and no examples are given here.
  • each computing node is made to use the paired intermediate data based on the permutation operation to perform local calculations including addition, so that each computing node obtains two calculation results including offsetting random numbers.
  • the data acquisition device can select the first computing node and the third computing node, or the second computing node and the fourth computing node according to the two computing nodes containing the offsetable random numbers determined by the above computing protocol, and use the sum method Offset the random number generated by the computing node, and obtain two processing results corresponding to the XYZ multiplication calculation task, or multiples of the processing results.
  • the processing results obtained according to the above example can be two. If the two processing results are the same, it means the processing result of the XYZ multiplication calculation obtained, and vice versa, it means the calculation is wrong.
  • each computing node sends no more than n bits of data when the data is replaced for the first time, and each computing node sends no more than 2n bits of data when the data is replaced for the second time .
  • the calculation task includes three calculation tasks of mathematical calculation of input data, the calculation engine generates no more than 3 ⁇ 4 data communications based on replacement data during the execution of the calculation task, and the calculation engine performs all During the calculation task, data communication of no more than 3n ⁇ 4 bits of data is generated.
  • the calculation engine Taking three input data as private data as an example, the calculation engine generates 3 ⁇ 4 data communications based on replacement data during the execution of the calculation task, and the calculation engine generates 3n ⁇ 4 bits during the execution of the calculation task. Data communication of data volume. Taking at least one private data in three or two input data as an example, the calculation engine generates less than 3 ⁇ 4 data communications based on replacement data during the execution of the calculation task, and during the execution of the calculation task by the calculation engine Produce data communication with less than 3n ⁇ 4 bit data volume.
  • the calculation task may also include bit extraction.
  • the step S120 includes: the four computing nodes use k rounds of data exchange of 1-bit replacement data to obtain their own calculation results, where the calculation results are used to extract binary bits in the input data X; k is the corresponding The binary digits to be extracted of the input data X in the calculation task.
  • four computing nodes perform bit calculation locally to generate intermediate data (1 bit) containing a 1-bit random number that can be offset, and obtain the calculation result through k rounds of intermediate data data interaction.
  • the multi-party calculation task includes a calculation task of extracting binary bits in the input data X; the first calculation node, the second calculation node, the third calculation node, and the fourth calculation node in the calculation engine obtain in turn Private data group ⁇ x 1 ⁇ , private data group ⁇ x 2 ⁇ , private data group ⁇ x a ⁇ , and private data group ⁇ x b ⁇ ; among them, ⁇ x 1 ,x 2 ,x a ,x b ⁇ are inputs
  • Data X is a binary representation of private data obtained by random dispersion processing, wherein each private data has the same binary digits as the input data X.
  • the step S120 includes the following steps:
  • each computing node initializes the bit value for output ⁇ c 1 ,c' 1 ⁇ , ⁇ c 2 ,c' 2 ⁇ , ⁇ c a ,c' a ⁇ , ⁇ c b ,c' b ⁇ ; and let the first computing node and the second computing node share the random numbers r 12 and b 12 ; and let the third computing node and the fourth computing node share the random numbers b ab ; wherein, the initialized bits An example of the bit value is 0.
  • the random numbers r 12 , b 12 and b ab are binary random numbers generated based on extracting the number of bits k. Wherein, the random number sharing and generating method is the same or similar to the method mentioned in the foregoing example, and will not be repeated here.
  • step S1212 let the first computing node and the second computing node use the random number r 12 to perform logical processing on the k-th bit of the private data x 1 and x 2 held by each to obtain a unified binary intermediate with the k-th bit. Data u 1 and u 2 .
  • step S1213 the first computing node is made to send the intermediate data u 1 to the third computing node, and the third computing node performs a logical calculation based on the formula u 1 ⁇ x a to obtain the intermediate data u a .
  • step S1214 the following cyclic calculation is set based on the value of k: each computing node performs a logical calculation with the shared random number b 12 or b ab on the i-th bit of the private data x 1 and the output bit position, and obtains The intermediate data of the i-th round; and the intermediate data obtained in each round are replaced, and the corresponding output bits are assigned; wherein the first computing node and the third computing node perform the intermediate data replacement processing, and the second The computing node and the fourth computing node perform intermediate data replacement processing.
  • S1, S2, Sa, and Sb denote the first computing node, the second computing node, the third computing node, and the fourth computing node in sequence.
  • each computing node uses the assigned output bits and random numbers to perform logical calculations on the k-th bit value of the private data held by each computing node to obtain a calculation result.
  • the first calculation node is based on the formula The calculation result obtained local computing c '1; second computing node based on the formula Local calculated calculation result c '2; the third computing node based on the formula
  • the calculation result c a is obtained by local calculation; the fourth calculation node is based on the formula
  • the calculation result c b is obtained by local calculation.
  • step S1216 the first computing node provides the calculation result c′ 1 to the third computing node; the second computing node provides the calculation result c′ 2 to the fourth computing node; the third computing node provides the calculation result c a to The second computing node; the fourth computing node provides the calculation result c b to the first computing node, so that each computing node holds two calculation results that are convenient for verifying processing results.
  • the data acquisition device can select the calculation results of a pair of calculation nodes according to the calculation node pair determined by the calculation protocol above, and offset the random number generated by the calculation node by logical calculation, and obtain the k-th bit of the input data X Calculate the processing result of the task, or the multiple of the processing result obtained.
  • the obtained processing results can be two, if the two processing results are the same, it means that the processing result is correct, otherwise, it means that the calculation is wrong.
  • each computing node generates no more than k+1 data communications; and each computing node generates no more than 2k-bit data communications.
  • the data communication in step S1213 it can be known that each of the computing nodes sends out k bits in total during k rounds of data exchange of 1-bit replacement data.
  • the first computing node also generates a data communication with a data volume of k bits, so the first computing node generates a total of k+1 data communication and a data communication with a data volume of 2 k bits. .
  • each computing node generates no more than 1.5k bits of data communication.
  • Multi-party calculation instructions using bit extraction can be used for calculation tasks including calculation tasks that compare two input data.
  • the calculation task of comparing two input data A1 and A3 is first converted into a calculation task of calculating (A1-A3) and a calculation task of extracting the highest value in the calculation result of the binary representation (A1-A3).
  • the calculation engine in accordance with the multi-party calculation instructions set based on the two input data subtraction calculation tasks and the bit extraction calculation task, causes the four calculation nodes to perform local calculations and calculations. Data exchange, get the bit value held by each.
  • the data of bit position exchange performs the highest bit extraction interactively, and the calculation result of bit extraction is obtained.
  • the calculation result extracted by this bit can be fed back to the data acquisition party as the calculation result used to obtain the comparison result of A1 and A3.
  • the calculation engine can obtain the calculation result of the bit extraction used to represent the comparison result and inadvertently transmit it through the calculation engine The corresponding input data is transmitted. This avoids the possibility of information leakage from the data acquirer and the computing engine.
  • the step S120 includes using four computing nodes to execute the multi-party calculation instructions set based on the inadvertent transmission protocol and obtain the calculation results held by each.
  • the inadvertent transmission protocol is a two-party communication protocol that can protect privacy, enabling both parties to communicate in a way that makes choices obscure.
  • the inadvertent transmission protocol is a basic protocol of cryptography, which enables the receiver of the service to get some messages input by the sender of the service in an inadvertent way, so that the privacy of the receiver can be protected from the sender.
  • the use of four computing nodes to execute a multi-party calculation instruction set based on an inadvertent transmission protocol and obtain the calculation results held by each includes: making the four computing nodes determine to indicate transmission/non-transmission corresponding The weight of the private data is obtained by using local calculation and data interaction to obtain the calculation result held by each; wherein, the calculation result includes the result of transmitting the corresponding private data or the result of not transmitting the corresponding private data.
  • Each computing node uses the obtained bit value as a weight, uses local calculations to perform mathematical calculations on transmission or non-transmission of private data, and uses data interaction to obtain their own calculation results.
  • each computing node obtains the corresponding number of calculation results, which are used to indicate whether to transmit or not to transmit the private data.
  • the data are ⁇ x 1 ,x' 1 ⁇ , ⁇ x 2 ,x' 2 ⁇ , ⁇ x a ,x' a ⁇ , ⁇ x b ,x' b ⁇ .
  • the execution process of this step S120 is as follows:
  • step S1211 ' let the first computing node share the first and second computing node class random number r 12 and r' 12 is; the first computing node and the second type of the third computing node shared random number r ' 1a ; the first computing node and the fourth computing node share the second type of random number r 1b ; let the second computing node and the third computing node share the second type of random number r 2a ; the second computing node and The fourth computing node shares the second type of random numbers r'2b ; let the third computing node and the fourth computing node share the first type of random numbers r ab and r'ab .
  • the sharing manner of each random number can be the same or similar to the foregoing sharing manner, and will not be repeated here.
  • step S1212' each computing node is asked to use their configured bit values to perform mathematical calculations with the first type of random numbers on whether to transmit private data, and use their configured bit values to perform mathematical calculations on whether to transmit the first type of random numbers. There is a second type of mathematical calculation of random numbers.
  • step S1213' the first computing node and the second computing node are allowed to perform the intermediate data and intermediate random number replacement operations with the third computing node and the fourth computing node, respectively.
  • the first computing node and the third computing node replace ⁇ t' 1 ,e 1 ⁇ and ⁇ t' a ,e a ⁇
  • the first computing node and the fourth computing node replace ⁇ t 1 ,e' 1 ⁇ and ⁇ t b ,e' b ⁇
  • the second computing node and the third computing node replace ⁇ t' 2 ,e 2 ⁇ and ⁇ t a ,e' a ⁇
  • the second computing node and the fourth computing node replace ⁇ t 2 ,e' 2 ⁇ and ⁇ t' b ,e b ⁇ .
  • each computing node is made to perform mathematical calculations including offsetting the second type of random numbers, and obtain their own calculation results.
  • the data acquisition device can select the calculation results of a pair of computing nodes according to the two computing nodes determined by the above computing protocol, and use logic calculation to offset the first type of random numbers generated by the computing nodes, and obtain the inadvertently transmitted input data X
  • the processing result of the calculation task or the multiple of the processing result.
  • the obtained processing results can be two, if the two processing results are the same, it means that the processing result is correct, otherwise, it means that the calculation is wrong.
  • the calculation engine generates no more than 4 ⁇ 4 data communications based on replacement data during the execution of the calculation task; and the calculation engine generates no more than 4n ⁇ 4 bit data during the execution of the calculation task. data communication.
  • the multi-party computing instructions executed by the computing engine are based on the high priority computing and low priority computing tasks in the computing task.
  • the number of pieces of data to be processed between priority calculations is obtained by optimizing high-priority calculations or low-priority calculations.
  • Figures 8a and 8b respectively show a schematic diagram of a computing architecture in which the computing engine uses one-time scattered scattered data of private data X and Y for data distribution, where X is scattered into ⁇ x 1 , x 2 ⁇ and Y is scattered It becomes ⁇ y' 1 ,y' 2 ⁇ , where ⁇ x 1 ,y' 1 ⁇ is allocated to the first computing node S1, and ⁇ x 2 ,y' 2 ⁇ is allocated to the second computing node S2.
  • the first computing node S1 received ⁇ x 1, y '1 ⁇ is transmitted as x 1 x b to the fourth computing node Sb, and the y' 1 Sa is transmitted to the third computing node as y 'a; first the two computing node S2 received ⁇ x 2, y '2 ⁇ of a x a x 2 to the third computing node transmits Sa, and the y' 2 as y 'b is sent to a fourth computing node Sb.
  • each computing node performs corresponding calculations according to the received scattered data, so as to achieve the purpose of multi-party calculations using the scattered data obtained by one-time dispersion.
  • each computing node holds a calculation result, and uses the obtained calculation results to perform subsequent multi-party calculation operations. Such optimization can reduce the amount of data calculation and data communication of each computing node.
  • the first computing node S1 send the intermediate data t 1 to the fourth computing node Sb; let the second computing node S2 send the intermediate data t 2 to the third computing node Sa; let the third computing node Sa send the intermediate data t a is sent to the second computing node S2; and the fourth computing node Sb is made to send the intermediate data t b to the first computing node S1.
  • the first computing node S1 obtains the scattered data m 1.
  • the first computing node and the second computing node in the calculation engine can use the calculation results obtained from the multi-party calculation of the multiplication that they participate in to continue to perform the multi-party calculation of addition without causing redundancy. I data.
  • the computing engine and multi-party computing method composed of four computing nodes provided in this application utilize private data suitable for computing tasks to interact locally and between nodes, thereby realizing multi-party computing.
  • the method of sharing random numbers between computing nodes to participate in the calculation is used so that the calculation results obtained by each computing node will not be returned in clear code, thereby ensuring data security.
  • the use of the multi-party calculation instructions described in this application for multi-party calculation effectively reduces the amount of data transmitted between computing nodes.
  • a computer-readable storage medium stores at least one program, and the at least one program participates in executing the multi-party computing method when called .
  • the computer is any computing node mentioned above.
  • the multi-party calculation method please refer to FIG. 7 and the related description about FIG. 7, which will not be repeated here.
  • the storage medium stores at least one program, and the program executes any of the aforementioned navigation methods when called.
  • the technical solution of the present application essentially or the part that contributes to the prior art can be embodied in the form of a software product.
  • the computer software product can include one or more machine executable instructions stored thereon.
  • a machine-readable medium when these instructions are executed by one or more machines, such as a computer, a computer network, or other electronic devices, can cause the one or more machines to perform operations according to the embodiments of the present application. For example, perform the steps in the robot positioning method.
  • Machine-readable media may include, but are not limited to, floppy disks, optical disks, CD-ROM (compact disk-read only memory), magneto-optical disks, ROM (read only memory), RAM (random access memory), EPROM (erasable Except programmable read-only memory), EEPROM (electrically erasable programmable read-only memory), magnetic or optical cards, flash memory, or other types of media/machine-readable media suitable for storing machine-executable instructions.
  • the storage medium may be located in a server or a third-party server, for example, located in an Facebook Cloud service system.
  • This application can be used in many general or special computing system environments or configurations. For example: large computers, distributed computing environments including any of the above systems or equipment, etc.
  • program modules include routines, programs, objects, components, data structures, etc. that perform specific tasks or implement specific abstract data types.
  • This application can also be practiced in distributed computing environments. In these distributed computing environments, remote processing devices connected through a communication network perform tasks.
  • program modules can be located in local and remote computer storage media including storage devices.

Landscapes

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

Abstract

一种输入数据的计算方法、计算引擎及存储介质,计算方法利用由四个计算节点的计算引擎来执行计算任务,计算引擎获取对应计算任务的多方计算指令,以及获取私密数据组;各私密数据组为输入数据基于计算引擎执行多方计算所需的随机分散处理方式而得到的;按照多方计算指令,各计算节点分别对各自所获取的私密数据组进行本地计算,以及将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果;其中,从四个计算节点中而选取的部分计算节点所持有的计算结果用于生成一处理结果;其中,处理结果为计算任务处理输入数据的处理结果。

Description

输入数据的计算方法、计算引擎及存储介质 技术领域
本申请涉及数据处理技术领域,特别是涉及一种输入数据的计算方法、计算引擎及存储介质。
背景技术
电子设备的智能化+互联网推动大数据业务的发展,同时,受大数据业务更具便捷性、操作性的引导,人们的生活习惯也在发生变化。例如,用户/企业在各银行的信用评级,可便于贷款方评价借款方的还贷能力。再如,集体出行时多人分享导航路线有利于彼此联系。又如,企业之间藉由分享数据进行数据处理以便于为客户提供更准确的统计信息等等。
随着大数据在企业之间、企业与个人之间、个人与个人之间分享,一些私有数据,如银行信用等级、个人身份信息、个人消费信息等,会随着数据业务被泄露。随着用户行为、习惯被以数据化收集,用户/企业对私有数据越来越重视。因此,数据分享业务和私有数据保密成为一对日益凸显的矛盾。
发明内容
鉴于以上所述现有技术的缺点,本申请的目的在于提供一种输入数据的计算方法、计算引擎及存储介质,用于解决现有技术中多方计算的计算效率远低于用户需求的问题。
为实现上述目的及其他相关目的,本申请的第一方面提供一种输入数据的计算方法,利用由四个计算节点协同计算的计算引擎来计算对应一计算任务的多方计算指令,其中,所述计算任务用于对输入数据进行数据处理,其中所述多方计算方法包括:所述计算引擎获取多方计算指令,以及获取私密数据组;其中,各所述私密数据组为所述输入数据基于所述计算引擎执行多方计算所需的随机分散处理方式而得到的;按照所述多方计算指令,所述计算引擎中至少部分计算节点分别对各自所获取的私密数据组进行本地计算,和/或将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果;其中,从所述四个计算节点中而选取的部分计算节点所持有的计算结果用于生成一处理结果;其中,所述处理结果为所述计算任务处理所述输入数据的处理结果。
在本申请的第一方面的某些实施方式中,所述随机分散处理方式包括:基于执行计算任务的计算节点的数量,将随机产生至少一个私密数据,按照所产生的私密数据将输入数据X进行分散处理。
在本申请的第一方面的某些实施方式中,所述输入数据包含数值X;所述随机分散处理方式包括:随机产生两个私密数据x 1和x' 1,基于所述私密数据x 1和x' 1将输入数据X分散成{x 1,x' 1,x 2,x' 2,x a,x' a,x b,x' b};其中,x 2=X-x 1=x a,x 1=x b,x' 2=X-x' 1=x' b,x' 1=x' a;各计算节点所获取的私密数据组中对应输入数据X的私密数据分别为{x 1,x' 1},{x 2,x' 2},{x a,x' a},{x b,x' b}。
在本申请的第一方面的某些实施方式中,所述输入数据包含比特值C;所述随机分散处理方式包括:随机产生两个比特位的私密数据c 1和c' 1,基于所述私密数据c 1和c' 1将输入数据C分散成用比特位表示的私密数据{c 1,c' 1,c 2,c' 2,c a,c' a,c b,c' b};其中,
Figure PCTCN2020076313-appb-000001
c 1=c b
Figure PCTCN2020076313-appb-000002
c' 1=c' a;各计算节点所获取的私密数据组中对应输入数据C的私密数据分别为{c 1,c' 1},{c 2,c' 2},{c a,c' a},{c b,c' b}。
在本申请的第一方面的某些实施方式中,所述输入数据包含浮点类型数据;所述私密数据为将经二进制化处理后的浮点类型数据随机分散处理得到的。
在本申请的第一方面的某些实施方式中,所述计算引擎还获取作为输入数据的非私有数据;所述多方计算指令是依据所述非私有数据而确定的。
在本申请的第一方面的某些实施方式中,所述多方计算指令包含基于计算任务中多个计算之间的关联关系而设置的指令
在本申请的第一方面的某些实施方式中,各计算节点利用共享的随机数执行本地计算以得到可供抵消的中间数据或计算结果;其中,各计算节点配置有产生所述随机数的随机数发生器。
在本申请的第一方面的某些实施方式中,所述计算任务包含两个输入数据的数学计算任务;所述按照多方计算指令,各计算节点分别对各自所获取的私密数据组进行本地计算,以及将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果的步骤包括:令四个所述计算节点利用所述随机数执行本地计算以及利用一次置换数据的数据交互得到分别持有的计算结果。
在本申请的第一方面的某些实施方式中,所述计算任务包含两个输入数据的乘法计算任务;所述按照多方计算指令,各计算节点分别对各自所获取的私密数据组进行本地计算,以及将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果的步骤包括:所述计算引擎中的第一计算节点、第二计算节点、第三计算节点和第四计算节点依次获取私密数据组{x 1,x' 1,y 1,y' 1},私密数据组{x 2,x' 2,y 2,y' 2},私密数据组{x a,x' a,y a,y' a},以及 私密数据组{x b,x' b,y b,y' b};其中,{x 1,x' 1,x 2,x' 2,x a,x' a,x b,x' b}是输入数据X经随机分散处理得到的,{y 1,y' 1,y 2,y' 2,y a,y' a,y b,y' b}是输入数据Y经随机分散处理得到的。
其中,按照利用四个计算节点执行输入数据X和Y的乘法计算任务而生成的多方计算指令,所述计算引擎执行以下步骤:令所述第一计算节点和第二计算节点共享随机数r 12和r' 12,以及令所述第三计算节点和第四计算节点共享随机数r ab和r' ab;令所述第一计算节点和第二计算节点分别对各自所持有的私密数据组进行乘法计算和用于抵消随机数r 12和r' 12的数学计算,以便第一计算节点得到中间数据t 1和t' 1,以及第二计算节点得到中间数据t 2和t' 2;令所述第三计算节点和第四计算节点分别对各自所持有的私密数据组进行乘法计算和用于抵消随机数r ab和r' ab的数学计算,以便第一计算节点得到中间数据t a和t' a,以及第二计算节点得到中间数据t b和t' b;令第一计算节点和第三计算节点置换各自的一个中间数据,以及第一计算节点和第四计算节点置换各自的一个中间数据;令第二计算节点和第三计算节点置换各自的一个中间数据,以及第二计算节点和第四计算节点置换各自的一个中间数据;令各计算节点分别利用基于置换操作而配对的中间数据执行包含加法的本地计算,以便每个计算节点得到两个包含可抵消随机数的计算结果。
在本申请的第一方面的某些实施方式中,所述计算任务包含两个输入数据的数学计算的计算任务,所述计算引擎执行所述计算任务期间产生不多于2×4次基于置换数据的数据通信。
在本申请的第一方面的某些实施方式中,所述计算引擎执行所述计算任务期间产生不多于2n×4比特数据量的数据通信,其中n为私密数据和共享的随机数的值域
Figure PCTCN2020076313-appb-000003
在本申请的第一方面的某些实施方式中,所述计算任务包含三个输入数据数学计算的计算任务;所述按照多方计算指令,各计算节点分别对各自所获取的私密数据组进行本地计算,以及将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果的步骤包括:令四个所述计算节点利用第一次置换数据的数据交互得到各自持有的对应输入数据X和Y计算的第一计算结果并将其作为中间数据;以及令四个所述计算节点利用对所述中间数据进行第二次置换数据的数据交互得到各自持有的所述计算结果;以及在两次置换数据前,令四个所述计算节点基于所述随机数执行本地计算。
在本申请的第一方面的某些实施方式中,所述按照多方计算指令,各计算节点分别对各自所获取的私密数据组进行本地计算,以及将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果的步骤包括:所述计算引擎中的第一计算节点、第二计算 节点、第三计算节点和第四计算节点依次获取私密数据组{x1,y1’,z1},私密数据组{x2,y2’,z2},私密数据组{xa,ya’,za},以及私密数据组{xb,yb’,zb};其中,{x1,x2,xa,xb}是输入数据X经随机分散处理得到的,{y1’,y2’,ya’,yb’}是输入数据Y经随机分散处理得到的,以及{z1,z2,za,zb}是输入数据Z经随机分散处理得到的;按照利用四个计算节点执行输入数据X、Y和Z的乘法计算任务而生成的多方计算指令,所述计算引擎执行以下步骤:
令所述第一计算节点和第二计算节点共享一随机数
Figure PCTCN2020076313-appb-000004
以及令所述第三计算节点和第四计算节点共享一随机数
Figure PCTCN2020076313-appb-000005
令四个所述计算节点分别对涉及输入数据X和Y的私密数据进行乘法计算和用于抵消随机数
Figure PCTCN2020076313-appb-000006
Figure PCTCN2020076313-appb-000007
的数学计算,以便第一计算节点得到中间数据t 1,第二计算节点得到中间数据t 2,第三计算节点得到中间数据t a,第四计算节点得到中间数据t b;令第一计算节点和第三计算节点置换各自的中间数据;令第二计算节点和第三计算节点置换各自的中间数据;令各计算节点利用所持有的各中间数据和对应输入数据Z的私密数据进行乘法的数学计算,以便第一计算节点得到中间数据s 1,第二计算节点得到中间数据s 2,第三计算节点得到中间数据s a,第四计算节点得到中间数据s b;令所述第一计算节点和第二计算节点分别对各自所持有的中间数据s 1和s 2进行乘法计算和用于抵消随机数r 12和r' 12的数学计算,以便第一计算节点得到中间数据h 1和h' 1,以及第二计算节点得到中间数据h 2和h' 2;令所述第三计算节点和第四计算节点分别对各自所持有的中间数据s a和s b进行乘法计算和用于抵消随机数r ab和r' ab的数学计算,以便第三计算节点得到中间数据h a和h' a,以及第四计算节点得到中间数据h b和h' b;令第一计算节点和第三计算节点置换各自的一个中间数据,以及第一计算节点和第四计算节点置换各自的一个中间数据;令第二计算节点和第三计算节点置换各自的一个中间数据,以及第二计算节点和第四计算节点置换各自的一个中间数据;令各计算节点分别利用基于置换操作而配对的中间数据执行包含加法的本地计算,以便每个计算节点得到两个包含可抵消随机数的计算结果。
在本申请的第一方面的某些实施方式中,所述计算任务包含三个输入数据的数学计算的计算任务,所述计算引擎执行所述计算任务期间产生不超过3×4次基于置换数据的数据通信。
在本申请的第一方面的某些实施方式中,所述计算引擎执行所述计算任务期间产生不多于3n×4比特数据量的数据通信,其中n为私密数据和共享的随机数的值域
Figure PCTCN2020076313-appb-000008
在本申请的第一方面的某些实施方式中,所述计算任务包括提取输入数据X中二进制位的计算任务;所述按照计算指令,各计算节点分别对各自所获取的私密数据组进行本地计算, 以及将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果的步骤包括:四个所述计算节点利用k轮次1比特置换的数据交互得到各自持有的计算结果,其中,所述计算结果用于提取输入数据X中二进制位;k为对应所述计算任务中输入数据X的待提取的二进制位数。
在本申请的第一方面的某些实施方式中,每个计算节点产生不多于k+1次数据通信。
在本申请的第一方面的某些实施方式中,每个计算节点产生不多于2k比特数据量的数据通信。
在本申请的第一方面的某些实施方式中,所述计算任务包括提取输入数据X中二进制位的计算任务;所述按照计算指令,各计算节点分别对各自所获取的私密数据组进行本地计算,以及将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果的步骤包括:所述计算引擎中的第一计算节点、第二计算节点、第三计算节点和第四计算节点依次获取私密数据组{x 1},私密数据组{x 2},私密数据组{x a},以及私密数据组{x b};其中,{x 1,x 2,x a,x b}是输入数据X经随机分散处理得到的二进制表示的私密数据,其中,各私密数据与输入数据X具有相同的二进制位数;按照计算指令,所述计算引擎执行以下步骤:
各计算节点分别初始化用于输出的比特位值{c 1,c' 1},{c 2,c' 2},{c a,c' a},{c b,c' b};以及令所述第一计算节点和第二计算节点共享随机数r 12和b 12;以及令所述第三计算节点和第四计算节点共享随机数b ab;其中,所述随机数r 12、b 12和b ab是基于提取位数k而生成的二进制随机数;令第一计算节点和第二计算节点利用随机数r 12对各自持有的私密数据x 1和x 2对第k位进行逻辑处理,以得到具有第k位统一的二进制中间数据u 1和u 2;令第一计算节点将中间数据u 1发送给第三计算节点,并由第三计算节点进行基于公式u 1∧x a的逻辑计算并得到中间数据u a;基于k值而设置以下循环计算:各计算节点对私密数据x 1的第i位和输出比特位置进行带有基于所共享的随机数b 12或b ab的逻辑计算,并得到第i轮次的中间数据;以及将每轮次得到的中间数据进行置换处理,并赋值相应的输出比特位;其中,第一计算节点与第三计算节点进行中间数据的置换处理,以及第二计算节点与第四计算节点进行中间数据的置换处理;各计算节点利用被赋值的输出比特位、随机数对各自持有的私密数据的第k位比特值进行逻辑计算得到计算结果;第一计算节点将计算结果c' 1提供给第三计算节点;第二计算节点将计算结果c' 2提供给第四计算节点;第三计算节点将计算结果c a提供给第二计算节点;第四计算节点将计算结果c b提供给第一计算节点,以便每个计算节点持有两个计算结果。
在本申请的第一方面的某些实施方式中,每个计算节点产生不多于1.5k比特位的数据通 信。
在本申请的第一方面的某些实施方式中,所述计算任务包括比较两个输入数据的计算任务,按照基于两个输入数据减法计算任务和位提取计算任务而设置的多方计算指令,令四个所述计算节点执行本地计算和数据交互,得到各自持有的比特值。
在本申请的第一方面的某些实施方式中,所述按照计算指令,各计算节点分别对各自所获取的私密数据组进行本地计算,以及将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果的步骤包括:利用四个计算节点执行基于不经意传输协议而设置的多方计算指令并得到各自持有的计算结果。
在本申请的第一方面的某些实施方式中,所述利用四个计算节点执行基于不经意传输协议而设置的多方计算指令并得到各自持有的计算结果的步骤包括:令四个所述计算节点基于用于表示传输/不传输相应私密数据的可分享随机比特值进行本地计算和数据交互,并得到各自持有的计算结果;其中,所述计算结果包含用于表示传输相应私密数据的结果,或用于表示不传输相应私密数据的结果。
在本申请的第一方面的某些实施方式中,所述计算任务包括不经意传输输入数据X的计算任务;所述按照计算指令,各计算节点分别对各自所获取的私密数据组进行本地计算,以及将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果的步骤包括:所述计算引擎中的各计算节点所获取的私密数据依次为{x 1,x' 1},{x 2,x' 2},{x a,x' a},{x b,x' b};其中,私密数据{x 1,x' 1,x 2,x' 2,x a,x' a,x b,x' b}为输入数据X经随机分散处理得到的;各计算节点获取分别基于待分享的私密数据而设置的可分享随机比特值{c 1,c' 1},{c 2,c' 2},{c a,c' a},{c b,c' b};按照利用四个计算节点执行不经意传输输入数据X的计算任务而生成的多方计算指令,所述计算引擎执行以下步骤:
令所述第一计算节点和第二计算节点共享第一类随机数r 12和r' 12;所述第一计算节点和第三计算节点共享第二类随机数r' 1a;所述第一计算节点和第四计算节点共享第二类随机数r 1b;令所述第二计算节点和第三计算节点共享第二类随机数r 2a;所述第二计算节点和第四计算节点共享第二类随机数r' 2b;令所述第三计算节点和第四计算节点共享第一类随机数r ab和r' ab;令各计算节点利用各自配置的比特值对是否传输私密数据进行带有第一类随机数的数学计算,以及利用各自配置的比特值对是否传输第一类随机数进行带有第二类随机数的数学计算以得到中间数据和中间随机数;令第一计算节点和第二计算节点分别与第三计算节点和第四计算节点进行中间数据和中间随机数的置换操作;令各计算节点执行包含抵消第二类随机数的数学计算,并得到各自持有的计算结果。
在本申请的第一方面的某些实施方式中,所述计算引擎执行所述计算任务期间产生不多于4×4次基于置换数据的数据通信。
在本申请的第一方面的某些实施方式中,所述计算引擎执行所述计算任务期间产生不多于4n×4比特数据量的数据通信,其中n为私密数据和共享的随机数的值域
Figure PCTCN2020076313-appb-000009
在本申请的第一方面的某些实施方式中,各计算节点基于同样的随机数发生器得到所共享的随机数。
在本申请的第一方面的某些实施方式中,所述计算引擎获取对应所述计算任务的多方计算指令的步骤包括:各所述计算节点获取所述多方计算指令及计算角色;以供各计算节点按照所分别获取的计算角色执行所述多方计算指令。
在本申请的第一方面的某些实施方式中,所述计算引擎获取对应所述计算任务的多方计算指令的步骤包括:各所述计算节点分别获取所述多方计算指令中对应本地执行的计算指令。
在本申请的第一方面的某些实施方式中,还包括将所述四个计算节点中的两个计算节点所持有的计算结果发送给数据获取设备,以便所述数据获取设备基于所得到的计算结果生成对应所述计算任务的处理结果。
在本申请的第一方面的某些实施方式中,所述多方计算指令包含基于计算任务中多个计算之间的关联关系而将多方计算进行优化后得到的指令;其中,所述多方计算指令包含利用少于四个的计算节点执行计算的指令。
本申请第二方面提供一种计算引擎,包括:四个计算节点,用于协同计算对应一计算任务的多方计算指令;其中,所述计算任务用于对输入数据进行数据处理;
所述四个计算节点基于所获取的多方计算指令,以及获取私密数据组执行如第一方面中任一所述的多方计算方法;其中,各所述私密数据组为所述输入数据基于所述计算任务所对应的随机分散处理方式而得到的。
本申请第三方面提供一种计算节点中的可读介质,其特征在于,存储有至少一个程序,所述至少一种程序在被调用时参与执行如第一方面中任一所述的多方计算方法。
如上所述,本申请的输入数据的计算方法、计算引擎及存储介质,具有以下有益效果:本申请所提供的由四个计算节点构成的计算引擎及多方计算方法,利用适用于计算任务的私密数据进行本地和节点间交互,有效提高了四计算节点进行多方计算的数据传输量并减小了计算复杂度。其中,利用计算节点之间共享随机数参与计算的方式,使得各计算节点所得到的计算结果不会以明码形式返回,由此保证了数据安全性。另外,利用本申请所描述的多方计算指令进行多方计算有效减少了计算节点之间传输的数据量。
附图说明
图1显示为本申请利用树状结构描述循环处理操作的计算任务的示意图。
图2显示为将图1所示的计算任务优化处理的示意图。
图3显示为本申请利用树状结构描述提取公因子操作的计算任务的示意图。
图4显示为将图3所示的计算任务优化处理的示意图。
图5显示为本申请利用树状结构描述常用表达提取操作的计算任务的示意图。
图6显示为将图5所示的计算任务优化处理的示意图。
图7显示为本申请多方计算方法的流程示意框图。
图8a和8b分别显示为计算引擎使用私密数据X和Y的一次分散的分散数据进行数据分配的计算架构示意图。
具体实施方式
以下由特定的具体实施例说明本申请的实施方式,熟悉此技术的人士可由本说明书所揭露的内容轻易地了解本申请的其他优点及功效。
虽然在一些实例中术语第一、第二等在本文中用来描述各种元件,但是这些元件不应当被这些术语限制。这些术语仅用来将一个元件与另一个元件进行区分。例如,第一计算节点可以被称作第二计算节点,并且类似地,第二计算节点可以被称作第一计算节点,而不脱离各种所描述的实施例的范围,但是除非上下文以其他方式明确指出,否则它们不是同一个计算节点。
再者,如同在本文中所使用的,单数形式“一”、“一个”和“该”旨在也包括复数形式,除非上下文中有相反的指示。应当进一步理解,术语“包含”、“包括”表明存在所述的特征、步骤、操作、元件、组件、项目、种类、和/或组,但不排除一个或多个其他特征、步骤、操作、元件、组件、项目、种类、和/或组的存在、出现或添加。此处使用的术语“或”和“和/或”被解释为包括性的,或意味着任一个或任何组合。因此,“A、B或C”或者“A、B和/或C”意味着“以下任一个:A;B;C;A和B;A和C;B和C;A、B和C”。仅当元件、功能、步骤或操作的组合在某些方式下内在地互相排斥时,才会出现该定义的例外。
为了保护互联网企业和用户的私有数据,一些方式是采用加密方式进行数据传输,以确保数据传输期间的计算机设备不会获得私有数据,然而,该加密数据在处理设备进行数据处理时,是需解密的。这使得私有数据在处理设备上不存在隐私可言。在另一些方式中,利用私有数据的数据处理过程采用密码学所使用的多方参与计算的数据处理方式,如秘密分享方式等,这使得处理私有数据的处理设备无需利用解密后的私有数据进行数据处理。该种方式 虽然有效解决了私有数据隐私化的问题,但是,对技术人员来说,利用密码学技术进行数据处理具有极高的研发门槛,不利于技术人员在确保私有数据不泄露的情况下使用私有数据进行业务开发的目的。不仅如此,多方参与计算的计算引擎受所选择的计算节点的数量、计算复杂度、计算安全性等多方面制约,导致多方参与计算的数据处理方式带来数据量大、计算效率低等问题。
为此,本申请提供一种计算方法。在一些示例中,该计算方法利用由四个计算节点协同计算的计算引擎来计算任务管理平台所生成的计算任务,其中,所述计算任务用于对输入数据进行数据处理。
其中,所述任务管理平台可为单台计算机设备、或基于云架构的服务系统等。其中,所述单台计算机设备可以是自主配置的可执行所述处理方法的计算机设备,其可位于私有机房或位于公共机房中的某个被租用的机位中。所述云架构的服务系统包括公共云(Public Cloud)服务端与私有云(Private Cloud)服务端,其中,所述公共或私有云服务端包括Software-as-a-Service(软件即服务,简称SaaS)、Platform-as-a-Service(平台即服务,简称PaaS)及Infrastructure-as-a-Service(基础设施即服务,简称IaaS)等。所述私有云服务端例如阿里云计算服务平台、亚马逊(Amazon)云计算服务平台、百度云计算平台、腾讯云计算平台等等。
所述任务管理平台可包括存储装置、处理装置、网络接口装置等。事实上,根据任务管理平台实际运行所述处理方法的硬件装置,上述各装置可位于单台服务器上,或位于多台服务器中并通过各服务器之间的数据通信协同完成。
为此,所述接口装置与处理装置数据连接,其可以通过总线连接,或通过通信网络进行数据传递。为此,所述接口装置包括但不限于网卡、移动网络接入模块、通过总线与处理装置相连的总线接口等。所述接口装置还与计算节点通信连接,其中,所述计算节点是由处理装置执行所述处理方法而选定的,所述计算节点可以为一个或多个。所述计算节点可以为一实体计算设备,或由实体计算设备承载的虚拟设备。所述接口装置通过互联网、移动网络、及局域网络中至少一种与各计算节点进行数据通信,以便向各计算节点发送用于秘密计算的计算指令。
所述存储装置用于存储可执行所述处理方法的至少一个程序。所述存储装置可与处理装置位于同一实体服务器上,或位于不同实体服务器中并通过各服务器的接口装置将程序传递给运行所述程序的处理装置。所述存储装置可包括高速随机存取存储器,并且还可包括非易失性存储器,例如一个或多个磁盘存储设备、闪存设备或其他非易失性固态存储设备。在某些实施例中,存储器还可以包括远离一个或多个处理器的存储器,例如经由RF电路或外部 端口以及通信网络(未示出)访问的网络附加存储器,其中所述通信网络可以是因特网、一个或多个内部网、局域网(LAN)、广域网(WLAN)、存储局域网(SAN)等,或其适当组合。所述存储装置还包括存储器控制器,其可控制设备的诸如CPU和外设接口之类的其他组件对存储器的访问。其中,存储在存储装置中的软件组件包括操作系统、通信模块(或指令集)、文本输入模块(或指令集)、以及应用(或指令集)。
所述处理装置可操作地与存储装置耦接。更具体地,处理装置可执行在存储器和/或非易失性存储设备中存储的程序以在任务平台中执行操作。如此,处理装置可包括一个或多个通用微处理器、一个或多个专用处理器(ASIC)、一个或多个现场可编程逻辑阵列(FPGA)、或它们的任何组合。其中,所述处理装置所包含的多个CPU可位于同一实体服务器中或分散在多个实体服务器中,并借助于接口装置实现数据通信,以协同地执行将计算任务转换成可供四个计算节点进行多方计算的多方计算指令,并提供给各计算节点以供执行。
所述任务管理平台用于获取一计算任务,并将所述计算任务转换成多方计算指令。其中,所述输入数据为执行计算任务所需的数据,其包括但不限于:来自任务管理平台自身生成的数据,来自用户输入的数据,来自一数据源的数据,或者来自互联网等其他可通信计算机设备中的数据中的至少一种。在一些示例中,所述输入数据为一种私有数据。其中,所述私有数据是指以数字化形式存储并且具有不希望被泄露属性的数据,其包括但不限于:个人/企业身份信息、个人/企业账户信息、个人体貌特征信息、个人/企业消费信息(如账单)、个人/企业因使用软件的行为而产生的信息(如移动路线、浏览时长等)、企业收集到的具有商业价值的评价信息、以及企业根据至少上述各信息进行分析后得到的信息等。在此,所述数字化形式存储举例为带有私有数据标签和/或权限而保存在计算机可读存储介质中的数据,其不希望被泄露的属性表现在所设置的标签和/或权限。其中,所述标签包括但不限于标记在数据库中且对应于数据库中所存储的数据的标志位(如布尔值等)。所述权限包括但不限于:读写数据的权限、获得明文的私有数据的权限等。
所述计算任务用于对输入数据进行数据处理。在一些示例中,所述输入数据为一种私有数据;技术人员预先将包含处理私有数据的业务逻辑的程序存储在任务管理平台中,所述业务逻辑是藉由计算机程序语言来描述对私有数据的处理过程,该处理过程可包含一个或多个计算任务。所述业务逻辑是指技术人员利用一个或多个计算任务对包含私有数据进行数据处理、且依据自然规律而得到的流程。例如,一种业务逻辑包括:利用银行B1和B2中用户A的银行存款数量、银行贷款数量、银行还款历史记录等确认用户A的还款能力的评价流程。又如,一种业务逻辑包括:利用用户P1和P2当前的位置信息向用户P1所持终端设备提供P1与P2之间相距距离和相距路线信息的路程提示流程。
所述计算任务是按照业务逻辑中输入数据和输出数据之间的逻辑顺序而划分的。例如,业务逻辑包含将输入数据A1和A2进行乘法计算的处理逻辑并得到处理结果B1,以及将处理结果B1作为又一输入数据A3和输入数据A4进行比较计算的处理逻辑得到处理结果B2;其中,所述计算任务可划分为利用输入数据A1和A2执行乘法计算的计算任务,以及利用输入数据A3和A4执行比较计算的计算任务。
需要说明的是,上述示例仅为举例,根据实际设计需要,业务逻辑中可包含更复杂的计算任务,而应理解,复杂的计算任务可由一个或多个计算单元来执行。其中,所述计算单元包括但不限于:加、减、乘、除等数字计算处理,以及与、或、非等逻辑计算等。
为此,在一些示例中,所述计算任务包括:藉由计算机程序语言编辑界面而获取的程序模块。例如,所述任务管理平台提供用于获取描述业务逻辑的计算机语言程序的编辑界面;技术人员按照编辑界面所提供的程序工具包(如API等)进行业务逻辑设计,并提交给所述任务管理平台,所述任务管理平台将程序分解成多个计算任务。在又一些示例中,所述任务管理平台提供用于获取输入数据的数据源信息及对该输入数据的处理方式的编辑界面。例如,所述任务管理平台提供包含输入编辑框、选择编辑框等的编辑界面;技术人员按照编辑界面所提供的输入提示进行业务逻辑设计,并提交给所述任务管理平台,所述任务管理平台将基于所获取的编辑界面而生成的程序分解成多个计算任务。在另一些示例中,所述计算任务为将前述示例中提及的利用计算机程序语言描述的程序转换成利用计算算式而描述的处理过程。例如,所述处理过程可由计算机程序语言描述,或者利用源码语法结构来描述。其中,所述源码语法结构举例为抽象语法树(Abstract Syntax Tree,AST)。例如,请参阅图1,其显示为利用树状结构描述循环处理操作的计算任务的示意图;其中,将循环处理操作的计算任务描述成通过包含乘法计算得到处理结果的树状结构。所述任务管理平台可根据本申请所提供的多方处理方法来优化图1所示的树状结构,例如,请参阅图2,其显示为将图1所示的计算任务优化处理的示意图;其中,根据本申请所提供的多方处理方法,将对应循环处理操作的计算任务优化成利用矩阵乘法计算执行循环处理操作的计算任务,并依据优化后的计算任务生成计算指令。
与此类似地,又如,请参阅图3,其显示为利用树状结构描述提取公因子操作的计算任务的示意图;其中,将提取公因子操作的计算任务描述成通过加法计算和乘法计算级联的方式得到处理结果的树状结构。请参阅图4,其显示将图3所示的计算任务优化处理的示意图;其中,根据本申请所提供的多方处理方法,将对应提取公因子操作的计算任务优化处理成通过加法计算所得到的各计算结果级联和乘法计算的计算任务,并依据优化后的计算任务生成计算指令。
再如,请参阅图5,其显示为利用树状结构描述常用表达提取操作的计算任务的示意图;其中,将常用表达提取操作的计算任务描述成通过加法计算和乘法计算级联的方式得到处理结果的树状结构。请参阅图6,其显示为将图5所示的计算任务优化处理的示意图;其中,根据本申请所提供的多方处理方法,将对应常用表达提取操作的计算任务优化成通过矩阵加法计算的计算任务,并依据优化后的计算任务生成多方计算指令。
所述任务管理平台按照本申请所提供的计算引擎中计算节点的数量,将计算任务转换成由计算引擎中各计算节点协同执行的多方计算指令。其中,本申请所提供的计算引擎包含四个计算节点。
在另一些示例中,所述计算方法利用四个计算节点协同计算由终端设备直接提供的计算任务及计算角色,按照计算角色,相应计算节点将计算任务转换成多方计算指令,并执行所述计算方法。其中,所述终端设备可为用户操作的计算机设备,如个人电脑等。例如,终端设备将待多方计算的计算任务,以及各自在多方计算中的计算角色等内容直接发送给指定的四个计算节点,一并发送的还可以包含用于返回计算结果的数据获取设备。各计算节点基于多方计算协议对所接收的计算任务进行翻译处理并得到多方计算指令,各计算节点通过执行所述多方计算指令执行所述计算方法。其中,计算任务与任务管理平台所获得的计算任务相同或相似,在此不再重述。
在此,构成计算引擎的四个计算节点可以是固定配置的。或者该四个计算节点基于任务管理平台基于选取规则来选择的;其中,所述选取规则举例包括计算节点的属性信息。其中,计算节点的属性信息可存储在任务管理平台中的配置文件(或日志文件等)中。或者,所述属性信息可由任务管理平台维护且可动态更新,其包括但不限于:各计算节点的设备信息,各计算节点所在实体服务器的设备提供商信息等。其中,所述设备信息举例为实体设备的设备信息(如IP地址、MAC地址等)、或者为虚拟设备的设备信息(如虚拟设备ID等)。
从多方计算方式方面来说,所述各计算节点可以根据预先对各计算节点执行多方计算而配置相应的执行程序或处理芯片。从计算节点的设备配置来说,所述计算节点为单台计算机设备、或基于云架构的服务系统中被使用的实体设备或虚拟设备等。其中,所述单台计算机设备可以是自主配置的可执行所述计算方法的计算机设备,其可位于私有机房或位于公共机房中的某个被租用的机位中。例如,由数据源作为计算节点(或计算节点之一);所述计算节点还可以位于任务管理平台一侧,例如,所述任务管理平台为计算节点(或计算节点之一)。故而计算节点的实体或虚拟设备的形态和所设置的地理位置不做限定。例如,计算节点可以位于同一实体服务器的不同虚拟设备上且通过管理权限进行单独管理。所述云架构的服务系统包括公共云服务端与私有云服务端,其中,所述公共或私有云服务端包括SaaS、PaaS及IaaS 等。所述私有云服务端例如阿里云计算服务平台、亚马逊云计算服务平台、百度云计算平台、腾讯云计算平台等等。其中,所述虚拟设备可以是实体服务器通过虚拟技术将一台独占设备虚拟成多台逻辑设备,供多个用户进程同时使用的设备之一。
所述计算节点可包含存储装置、处理装置、网络接口装置等。事实上,根据计算节点实际运行的计算方法的硬件装置,上述各装置可位于单台服务器上,或位于多台服务器中并通过各服务器之间的数据通信完成单一计算节点所执行的计算指令。
请参阅图7,其显示为本申请多方计算方法的流程示意框图。所述多方计算方法由所述计算引擎中的四个计算节点协同执行。
在步骤S110中,所述计算引擎获取对应所述计算任务的多方计算指令,以及获取私密数据组。
其中,所述多方计算指令是基于四个计算节点协同执行的多方计算方式来执行计算任务而设计的。其中,任务管理平台按照预先构建的对应各计算任务的多方计算协议,预先将计算任务转换成所述多方计算指令,并发送给计算引擎。其中,所述多方计算协议为指示并调度计算引擎中各计算节点执行对应计算任务的多方计算的过程,其包括但不限于:描述加法、减法、乘法或除法等数学计算的计算任务的多方计算执行过程,描述逻辑和、或、非、异或、比较等逻辑计算的计算任务的多方计算执行过程,描述秘密传输的多方计算执行过程等。
所述多方计算指令包括:为采用多方计算的方式执行计算任务而指示计算引擎中四个计算节点进行本地计算的指令,计算节点之间执行数据交互的指令,获取输入数据的指令,生成随机数的指令等。所述多方计算指令还可以包含指示计算节点执行本地计算和数据交互的计算角色的指令。所述多方计算指令可以由计算机程序语言来描述,或者由机器语言来描述。
根据前述各生成多方计算指令的示例,在一种示例中,所述多方计算指令直接来自于任务管理平台。在另一种示例中,所述多方计算指令基于所获取的计算任务而生成。
在一些示例中,计算引擎的各计算节点获取对应计算任务的完整的多方计算指令,即获取包含有每个计算节点执行的计算指令,为此,为使每个计算节点协同执行,所述步骤包括各所述计算节点获取所述多方计算指令及计算角色;以供各计算节点按照所分别获取的计算角色执行所述多方计算指令。其中,所述计算角色用于标记所述多方计算指令中各执行本地计算的计算节点,以及标记所述多方计算指令中执行计算节点之间的交互时数据发送方和数据接收方等。
在又一些示例中,计算引擎的各所述计算节点分别获取所述多方计算指令中对应本地执行的计算指令。其中,所述本地执行令的计算指令包含用于执行本地计算的指令,为执行数据交互而发出本地存储的数据的指令,为执行数据交互而将所接收的数据存储本地的指令, 获取经处理的输入数据的指令,生成随机数的指令等。例如,所述多方计算指令包含计算节点S1执行生成随机数r 12的指令P1,计算节点Sa执行生成随机数r ab的指令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经随机分散处理后得到的私密数据。以计算任务包含非私有数据与非私有数据进行计算的任务,以及非私有数据与私有数据进行计算的任务为例,例如,非私有数据包括A5和A6,计算任务R1为B=(A5*A6),私有数据包括A7,计算任务R2为(B+A7),则多方计算指令包括:计算节点S1计算(A5*A6)的指令,将计算结果B分散为b1和b2的指令,计算(b2+a72)的指令,以及将b1发送给计算节点S2的指令;多方计算指令还包括:计算节点S2计算(b1+a71)的指令。其中,a71和a72为A7经随机分散处理后得到的私密数据。
在再一些具体示例中,输入数据包含私有数据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 10000101 11110100000000000000000,并将该32位二进制数进行随机分散处理。当计算任务中进行数据计算的多个输入数据包含浮点类型数据时,可采用上述浮点数转二进制格式整数的方式统一各输入数据,再执行计算。
在此,所述随机分散处理是指将输入数据随机生成多个私密数据[xj],其中,私密数据[xj]通过可恢复的数学计算可得到相应的输入数据。在此基础上,私密数据组为输入数据基于所述计算引擎执行多方计算所需的随机分散处理方式而得到的;以及私密数据[xj]的数量是基于计算引擎所执行的多方计算指令和/或计算节点的数量而预先设置的。例如,计算任务中加法计算被配置成利用两个计算节点执行,相应输入数据被分散成由随机生成的第一私密数据,以及基于第一私密数据得到的第二私密数据,其中,第一私密数据和第二私密数据可恢复成所述输入数据,该两个私密数据被分配给不同计算节点进行计算。又如,计算任务中包含两个私有的输入数据的乘法计算,待处理的两个输入数据分别被随机分散成四组私密数据,每组私密数据用于分配给一个计算节点以得到各计算节点的私密数据组。
在一些具体示例中,所述随机分散处理方式包括:随机产生至少一个私密数据,按照所产生的私密数据将输入数据进行分散处理。在此,在一些更具体示例中,所述随机分散处理方式可基于执行计算的计算节点的数量而随机产生至少一个私密数据。例如计算任务中包含加法计算,执行该加法计算的计算节点数量为两个,则随机产生一个私密数据a1,并根据该私密数据a1将输入数据进行分散处理得到私密数据a1和a2。在又一些更具体示例中,所述随机分散处理方式可基于统筹计算任务所使用的各种计算而随机产生多个私密数据。例如计算任务中包含输入数据A1和A2的加法计算,以及输入数据A2和A3乘法计算,其中,加法计算由两个计算节点执行,乘法计算由四个计算节点指令,则为减少与数据源的交互次数,可将所有输入数据均随机分散成四个私密数据,由各计算节点根据执行指令提取相应的私密数据。例如,针对每个输入数据,均随机产生两个私密数据,并根据该两个私密数据将相应输入数据进行分散处理得到四个私密数据。在又一些更具体示例中,与前述示例不同的是,所述随机分散处理方式可基于统筹计算任务所使用的各种计算而随机产生一个私密数据,并根据该私密数据将输入数据随机分散成两个私密数据,并分配给不同计算节点,由各计算节点根据所执行的计算指令对所得到的私密数据发送给其他计算节点,或对所接收的私密数据进行再分散后发送给其他计算节点。
基于上述描述,以下举例一些随机分散方式的示例:在一些具体示例中,输入数据的随机分散处理方式包括针对数值的分散处理方式。所述随机分散处理方式包括:随机产生两个私密数据x 1和x' 1,基于所述私密数据x 1和x' 1将输入数据X分散成{x 1,x' 1,x 2,x' 2,x a,x' a,x b,x' b};其中,x 2=X-x 1=x a,x 1=x b,x' 2=X-x' 1=x' b,x' 1=x' a;各计算节点所获取的私密数据组中对应输入数据X的私密数据分别为{x 1,x' 1},{x 2,x' 2},{x a,x' a},{x b,x' b}。以计算任务为两个数相乘且其中一个输入数据是7为例,经随机分散处理输入数据7被分散成:私 密数据包括{2,5}和{3,4};其中,2和3为随机生成的,分配给各计算节点的私密数据分别为{2},{5},{3},{4}。在此需要说明的是,该示例仅以其中一个输入数据的随机分散处理为例,而非仅限于两个数相乘的计算任务中仅有一个输入数据被执行随机分散处理。
还需要说明的是,上述随机处理的方式可以数据位n为约束,例如,随机产生的x 1和x' 1均限制在2 n以内,其中,n表示x 1和x' 1的二进制位数。
在另一些具体示例中,所述输入数据包含比特值C;针对比特值的随机分散处理方式包括:随机产生两个比特位的私密数据c 1和c' 1,基于所述私密数据c 1和c' 1将输入数据C分散成用比特位表示的私密数据{c 1,c' 1,c 2,c' 2,c a,c' a,c b,c' b};其中,
Figure PCTCN2020076313-appb-000010
c 1=c b
Figure PCTCN2020076313-appb-000011
各计算节点所获取的私密数据组中对应输入数据C的私密数据分别为{c 1,c' 1},{c 2,c' 2},{c a,c' a},{c b,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共享随机数r 12,则计算节点S1和S2中所配置的随机数发生器共用同样的随机数发生规则,由此有效避免计算节点S1和S2之间对随机数r 12的通信操作。
在步骤S120中,按照所述多方计算指令,所述计算引擎中至少部分计算节点分别对各自所获取的私密数据组进行本地计算,和/或将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果。
其中,根据计算任务,所述多方计算指令可指示部分计算节点仅执行本地计算,并得到计算结果。在一些示例中,所述多方计算指令包含基于计算任务中具有同态性的计算而生成的指令;按照所述多方计算指令,所述计算引擎中的计算节点执行本地计算并得到相应的计 算结果。其中,所述同态性表示可具有一个封闭的具有结合律的运算,例如,加法计算等。在利用所述计算引擎执行加法计算时,多方计算指令可指示两个计算节点执行输入数据A1和A2的加法计算,并得到各自持有的计算结果。数据获取设备可通过获取该两个计算节点的计算结果得到A1+A2的处理结果。
在又一些示例中,多方计算指令包含指令计算节点分别对各自所获取的私密数据组进行本地计算的指令,以及将本地计算所产生的中间数据进行交互的指令。在一些具体示例中,多方计算指令可对应计算任务中所涉及的每个计算。在又一些具体示例中,所述多方计算指令包含基于计算任务中多个计算之间的关联关系而设置的指令。其中,所述多个计算之间的关联关系包括但不限于:计算优先级关系、计算同态性、计算可同步性、计算所需的输入数据的随机分散处理方式等。根据所述关联关系,所述任务管理平台或计算引擎优化了各计算节点的本地计算和数据交互,由此各计算节点按照优化后的多方计算指令执行本地计算的指令,以及计算节点执行数据交互的指令。
其中,所述计算优先级包括基于计算公式确定的顺序,和/或多方计算的复杂度等。在一些示例,按照计算公式所确定的顺序调整各级计算之间分散数据和中间数据的份额。例如,计算任务中包含(X+Y)×Z,多方计算指令包含:指示两个计算节点执行本地计算得到对应(X+Y)多方计算的指令,指示该两个计算节点将各自持有的对应(X+Y)多方计算的计算结果作为中间数据,并进行随机分散处理的指令,指示四个计算节点执行对应(X+Y)×Z多方计算的指令等。又如,计算任务中包含提取(X-Y)的最高位,多方计算指令包含:指示两个计算节点执行本地计算得到对应(X-Y)多方计算的指令,指示该两个计算节点将各自持有的对应(X-Y)多方计算的计算结果作为中间数据,并进行随机分散处理的指令,指示四个计算节点执行基于所述计算结果执行位提取的多方计算的指令等。在又一些示例中,按照低复杂度的多方计算所需的分散数据的份额,优化高复杂度的多方计算,以得到相应的多方计算指令;其中,优化高复杂度的多方计算的方式包括但不限于:根据优化前的计算协议减少各计算节点之间的通信次数和/或计算次数。其具体示例将根据后续计算协议的描述而举例说明。
由上述示例可见,经过优化的多方计算与必须四个计算节点参与的多方计算相比,经过优化的多方计算有效减少了计算节点之间的冗余通信和冗余计算。
在此,在计算引擎得到对应计算任务的计算结果后,数据获取设备从所述四个计算节点中而选取的部分计算节点所持有的计算结果用于生成一处理结果;其中,所述处理结果为所述计算任务处理输入数据的处理结果。
在此,所述计算引擎通过执行多方计算指令得到由各计算节点分别持有的计算结果,其 中,每个计算节点所持有的计算结果可以为一个或多个。例如,每个计算节点所持有的计算结果为两个。计算任务的数据获取设备按照计算节点的计算角色,从执行计算任务的四个计算节点中选取部分计算节点所持有的计算结果,并执行利用所得到的计算结果生成所述处理结果的计算指令,由此完成对包含输入数据的计算任务,并得到相应的处理结果。又如,各所述计算节点所持有的计算结果为两个,数据获取设备按照计算节点的计算角色从四个计算节点中选取两个计算节点并获取其持有的所有计算结果,再利用对所得到的四个计算结果进行计算,来得到对应计算任务的处理结果。利用上述示例中的处理方式,数据获取设备所得到的处理结果的数量为两个,若两个处理结果相同,则数据获取设备可认定计算引擎所执行的计算任务正确,反之,则不正确。由此可见,采用四选二的方式来提取计算结果还具有验证处理结果正确性的作用。
在此,根据实际计算任务的设计需求,所述数据获取设备可以是输入数据的提供方,如数据源,由此避免输入数据被泄露;所述数据获取设备还可以是产生计算任务的终端设备,如用户输入程序所使用的计算机设备;所述数据获取设备还以该计算任务的处理结果为输入数据的新的计算任务执行设备,如任务管理平台或其他计算机设备。
为此,按照多方计算协议而生成的多方计算指令描述了可提供四选二的多方计算方式的多方计算过程。
在一些示例中,计算任务中包含对两个输入数据进行数学计算的计算任务,比如,在统计算法中包含汇总两个输入数据的总和的计算任务。再如,在基于输入数据构建的评价算法中包含权重与输入数据进行乘法的计算任务等。
在此,所述步骤S120包括:令四个计算节点基于所获取的私密数据组执行本地数学计算,以及令四个所述计算节点利用所述随机数执行本地计算以及利用一次置换数据的数据交互得到分别持有的计算结果。其中所述置换数据的数据操作表示两个计算节点互换中间数据。
在一些具体示例中,所述计算任务包含两个输入数据的乘法计算任务,各计算节点所获取的私密数据组分别为{x 1,y 1},{x 2,y 2},{x a,y a},{x b,y b},其中,x 1=x a=X-x 2且x 2=x b,以及y 1=y a=Y-y 2且y 2=y b,其中,X和Y为两个待进行乘法计算的输入数据;各计算节点分别进行基于乘法的本地计算以得到中间数据,以及通过置换的交互方式获取对方的中间数据,并基于本地生成的和置换得到的中间数据,各计算节点得到分别持有的计算结果。
在另一些具体示例中,四个所述计算节点利用两两共享的随机数和各自所获取的私密数据进行本地计算并产生中间数据,并在四个所述计算节点之间执行一次置换中间数据的数据 交互;四个所述计算节点基于交互后的中间数据得到分别持有的计算结果。
其中,以所述计算引擎中的第一计算节点、第二计算节点、第三计算节点和第四计算节点依次获取私密数据组{x 1,x' 1,y 1,y' 1},私密数据组{x 2,x' 2,y 2,y' 2},私密数据组{x a,x' a,y a,y' a},以及私密数据组{x b,x' b,y b,y' b};其中,{x 1,x' 1,x 2,x' 2,x a,x' a,x b,x' b}是输入数据X经随机分散处理得到的,{y 1,y' 1,y 2,y' 2,y a,y' a,y b,y' b}是输入数据Y经随机分散处理得到的。其中,各私密数据可满足下述示例的随机分散规则:x 2=X-x 1=x a,x 1=x b,x' 2=X-x' 1=x' b,x’ 1=x’ a
在此,各计算节点得到各自的私密数据组后,执行以下各步骤,以实现在执行一次置换数据的数据交互情况下得到各自持有的计算结果:
在步骤121中,令所述第一计算节点和第二计算节点共享随机数r 12和r' 12,以及令所述第三计算节点和第四计算节点共享随机数r ab和r' ab。其中,利用共享的随机数可提高计算节点的数据安全性。为了减少各计算节点对于共享的随机数进行数据通信的情况,各随机数可在生成多方计算指令时产生,或者多方计算指令中包含用于按照同样随机数生成规则生成共享随机数的随机数发生器(又称为“种子”),如此,第一计算节点和第二计算节点得到相同的随机数r 12和r' 12,以及所述第三计算节点和第四计算节点得到相同的随机数r ab和r' ab
在步骤S122中,令所述第一计算节点和第二计算节点分别对各自所持有的私密数据组进行乘法计算和用于抵消随机数r 12和r' 12的数学计算,以便第一计算节点得到中间数据t 1和t' 1,以及第二计算节点得到中间数据t 2和t' 2
在此,令第一计算节点执行基于公式t 1=x 1×y 1'-r 12,和t 1'=x 1'×y 1-r' 12的本地计算并得到中间数据t 1和t' 1;以及令所述第二计算节点进行基于公式t 2=x 2×y' 2+r 12,以及基于公式t 2'=x' 2×y 2+r' 12本地计算得到中间数据t 2和t' 2
需要说明的是,上述采用令第一计算节点对随机数做减法,以及令第二计算节点对随机数做加法的方式仅为举例,也可以采用令第一计算节点对随机数做加法,以及令第二计算节点对随机数做减法的方式。
在步骤S123中,令所述第三计算节点和第四计算节点分别对各自所持有的私密数据组进行乘法计算和用于抵消随机数r ab和r' ab的数学计算,以便第一计算节点得到中间数据t a和t' a,以及第二计算节点得到中间数据t b和t' b
在此,令所述第三计算节点执行基于公式t a=x a×y' a-r ab,以及基于公式 t a'=x' a×y a-r' ab本地计算得到中间数据t a和t' a;以及令所述第四计算节点执行基于公式t b=x b×y' b+r ab,以及基于公式t b'=x' b×y b+r' ab本地计算得到中间数据t b和t' b
需要说明的是,上述采用令第三计算节点对随机数做减法,以及令第四计算节点对随机数做加法的方式仅为举例,也可以采用令第三计算节点对随机数做加法,以及令第四计算节点对随机数做减法的方式。
在步骤S124中,令第一计算节点和第三计算节点置换各自的一个中间数据,以及第一计算节点和第四计算节点置换各自的一个中间数据;令第二计算节点和第三计算节点置换各自的一个中间数据,以及第二计算节点和第四计算节点置换各自的一个中间数据。
在此,利用四个计算节点之间不以抵消随机数为目的而构建的数据交互关系,将参有随机数的中间数据进行置换。
例如,令第一计算节点将中间数据t 1发送至第四计算节点,以及将中间数据t' 1发送至第三计算节点;令第二计算节点将中间数据t 2发送至第三计算节点,以及将中间数据t' 2发送至第四计算节点;令第三计算节点将中间数据t a发送至第二计算节点,以及将中间数据t' a发送至第一计算节点;以及令第四计算节点将中间数据t b发送至第一计算节点,以及将中间数据t' b发送至第二计算节点。
需要说明的是,上述置换方式是依据于多方乘法计算而设置的,根据实际计算节点执行的乘法本地计算,上述置换方式可做适应性调整,在此不再一一举例。
在此,若私密数据和共享的随机数是在值域
Figure PCTCN2020076313-appb-000012
内随机得到的,则每个计算节点执行一次置换数据的数据交互,每个计算节点共发出不超过2n位数据。为此,对于包含两个输入数据的数学计算的计算任务来说,所述计算引擎执行所述计算任务期间产生不多于2×4次基于置换数据的数据通信;以及所述计算引擎执行所述计算任务期间产生不多于2n×4比特数据量的数据通信。以两个输入数据均为私有数据为例,所述计算引擎执行所述计算任务期间产生2×4次基于置换数据的数据通信,以及所述计算引擎执行所述计算任务期间产生2n×4比特数据量的数据通信。以两个输入数据中有一个私有数据为例,所述计算引擎执行所述计算任务期间产生少于2×4次基于置换数据的数据通信,以及所述计算引擎执行所述计算任务期间产生少于2n×4比特数据量的数据通信。
在步骤S125中,令各计算节点分别利用基于置换操作而配对的中间数据执行包含加法的本地计算,以便每个计算节点得到两个包含可抵消随机数的计算结果。
在此,第一计算节点执行基于公式z 1=t 1+t b和z' 1=t' 1+t' a的本地计算,得到计算结 果z 1和z' 1;第二计算节点执行基于公式z 2=t 2+t a和z' 2=t' 2+t b'的本地计算,得到计算结果z 2和z' 2;第三计算节点执行基于公式z a=t a+t 2和z' a=t' a+t 1'的本地计算,得到计算结果z a和z' a;第四计算节点执行基于公式z b=t b+t 1和z' b=t' b+t 2'的本地计算,得到计算结果z b和z' b
需要说明的是,上述各计算公式仅为举例。在又一些示例中,根据输入数据的随机分散处理方式,上述部分或全部公式所表示的数学计算还可以由例如基于二进制数的数学计算形式表示。在此不再详述。
数据获取设备可依据上述计算协议所确定的包含可抵消的随机数的两个计算节点,选择第一计算节点和第三计算节点,或者第二计算节点和第四计算节点,并通过加和方式抵消计算节点所生成的随机数,并得到两个对应XY乘法计算任务的处理结果,或处理结果的倍数。按照上述示例所得到的处理结果可以为两个,若两个处理结果相同,则表示得到的XY乘法计算的处理结果,反之,则表示计算出错。
在另一些示例中,所述计算任务包含三个输入数据进行数学计算,例如,在利用神经网络对输入数据进行分类的算法中包含以权重、输入数据和偏置为三个输入数据进行数学计算的计算任务等。所述步骤S120包括:令四个所述计算节点利用第一次置换数据的数据交互得到各自持有的对应输入数据X和Y计算的第一计算结果并将其作为中间数据;以及令四个所述计算节点利用对所述中间数据进行第二次置换数据的数据交互得到各自持有的所述计算结果;以及在两次置换数据前,令四个所述计算节点基于所述随机数执行本地计算。其中,各自持有的所述计算结果用于处理对输入数据X、Y和Z的计算任务。
在一些具体示例中,所述计算任务包含三个输入数据X、Y和Z的乘法计算任务,各计算节点所获取的私密数据组分别为{x 1,y 1,z 1},{x 2,y 2,z 2},{x a,y a,z a},{x b,y b,z b},其中,x 1=x a=X-x 2且x 2=x b;y 1=y a=Y-y 2且y 2=y b;以及z 1=z a=Z-z 2且z 2=z b;可参考前述示例提供的计算输入数据X和Y的乘法计算任务,四个计算节点利用一次数据交互得到对应输入数据X和Y计算任务的第一计算结果并将其作为中间数据;再以该中间数据和对应Z的私密数据进行基于一次数据交互而执行的多方计算,由此得到各自持有的计算结果,其用于生成包含三个输入数据的计算任务的处理结果。
在此,各计算节点得到各自的私密数据组后,执行以下各步骤,以计算三个输入数据的乘法计算任务。其中,各计算节点所获取的私密数据组包括:{x 1,y' 1,z 1},{x 2,y' 2,z 2},{x a,y' a,z a},{x b,y' b,z b};其中,x 1=x a=X-x 2且x 2=x b;y' 1=y' a=Y-y' 2且y' 2=y' b; 以及z 1=z a=Z-z 2且z 2=z b
在步骤S121’中,令所述第一计算节点和第二计算节点共享一随机数
Figure PCTCN2020076313-appb-000013
r 12和r' 12,以及令所述第三计算节点和第四计算节点共享一随机数
Figure PCTCN2020076313-appb-000014
r ab和r' ab。在此,各随机数的共享方式可与前述示例中提及的方式相同,在此不再重述。
在步骤S122’中,令四个所述计算节点分别对涉及输入数据X和Y的私密数据进行乘法计算和用于抵消随机数
Figure PCTCN2020076313-appb-000015
Figure PCTCN2020076313-appb-000016
的数学计算,以便第一计算节点得到中间数据t 1,第二计算节点得到中间数据t 2,第三计算节点得到中间数据t a,第四计算节点得到中间数据t b
在此,令所述第一计算节点基于公式
Figure PCTCN2020076313-appb-000017
本地计算得到中间数据t 1;令所述第二计算节点分基于公式
Figure PCTCN2020076313-appb-000018
本地计算得到中间数据t 2;令所述第三计算节点基于公式
Figure PCTCN2020076313-appb-000019
本地计算得到中间数据t a;以及令所述第四计算节点基于公式
Figure PCTCN2020076313-appb-000020
本地计算得到中间数据t b
需要说明的是,上述采用令第一计算节点对随机数
Figure PCTCN2020076313-appb-000021
做减法,以及令第二计算节点对随机数
Figure PCTCN2020076313-appb-000022
做加法的方式仅为举例,也可以采用令第一计算节点对随机数
Figure PCTCN2020076313-appb-000023
做加法,以及令第二计算节点对随机数
Figure PCTCN2020076313-appb-000024
做减法的方式。上述采用令第三计算节点对随机数
Figure PCTCN2020076313-appb-000025
做减法,以及令第四计算节点对随机数
Figure PCTCN2020076313-appb-000026
做加法的方式也同样为举例,也可以采用令第三计算节点对随机数
Figure PCTCN2020076313-appb-000027
做加法,以及令第四计算节点对随机数
Figure PCTCN2020076313-appb-000028
做减法的方式。
在步骤S123’中,令第一计算节点和第三计算节点置换各自的中间数据;令第二计算节点和第三计算节点置换各自的中间数据。
在此,第一计算节点将中间数据结果t 1发送给第三计算节点,以及第三计算节点将中间数据t a发送给第一计算节点;以及第二计算节点将中间数据结果t 2发送给第四计算节点,以及第四计算节点将中间数据t b发送给第二计算节点。
需要说明的是,上述置换方式是依据于多方乘法计算而设置的,根据实际计算节点执行的乘法本地计算,上述置换方式可做适应性调整,在此不再一一举例。
在步骤S124’中,令各计算节点利用所持有的各中间数据和对应输入数据Z的私密数据进行乘法的数学计算,以便第一计算节点得到中间数据s 1,第二计算节点得到中间数据s 2,第三计算节点得到中间数据s a,第四计算节点得到中间数据s b
在此,第一计算节点基于公式s 1=(t 1+t a)×z 1的本地计算;第二计算节点基于公式s 2=(t 2+t b)×z 2的本地计算;第三计算节点基于公式s a=(t a+t 1)×z a的本地计算;第 四计算节点基于公式s b=(t 2+t b)×z b的本地计算。
在步骤S125’中,令所述第一计算节点和第二计算节点分别对各自所持有的中间数据s 1和s 2进行乘法计算和用于抵消随机数r 12和r' 12的数学计算,以便第一计算节点得到中间数据h 1和h' 1,以及第二计算节点得到中间数据h 2和h' 2;以及令所述第三计算节点和第四计算节点分别对各自所持有的中间数据s a和s b进行乘法计算和用于抵消随机数r ab和r' ab的数学计算,以便第三计算节点得到中间数据h a和h' a,以及第四计算节点得到中间数据h b和h' b
在此,令第一计算节点执行基于公式h 1=s 1-r 12,和h' 1=s 1-r' 12的本地计算并得到中间数据h 1和h' 1;以及令所述第二计算节点进行基于公式h 2=s 2+r 12,以及基于公式h 2'=s 2+r' 12本地计算得到中间数据h 2和h' 2。令第三计算节点执行基于公式h a=s a-r ab,和h' a=s a-r' ab的本地计算并得到中间数据h a和h' a;以及令所述第四计算节点进行基于公式h b=s b+r ab,以及基于公式h b'=s b+r’ ab本地计算得到中间数据h b和h' b
需要说明的是,上述置换方式是依据于多方乘法计算而设置的,根据实际计算节点执行的乘法本地计算,上述置换方式可做适应性调整,在此不再一一举例。
在步骤S126’中,令第一计算节点和第三计算节点置换各自的一个中间数据,以及第一计算节点和第四计算节点置换各自的一个中间数据;令第二计算节点和第三计算节点置换各自的一个中间数据,以及第二计算节点和第四计算节点置换各自的一个中间数据。
在此,令第一计算节点和第四计算节点置换中间数据h 1和h b;令第一计算节点和第三计算节点置换中间数据h' 1和h' a;令第二计算节点和第三计算节点置换中间数据h 2和h a;以及令第二计算节点和第四计算节点置换中间数据h' 2和h' b
需要说明的是,上述置换方式是依据于多方乘法计算而设置的,根据实际计算节点执行的乘法本地计算,上述置换方式可做适应性调整,在此不再一一举例。
在步骤S127’中,令各计算节点分别利用基于置换操作而配对的中间数据执行包含加法的本地计算,以便每个计算节点得到两个包含可抵消随机数的计算结果。
在此,第一计算节点执行基于公式z 1=h 1+h b和z' 1=h' 1+h a'的本地计算,得到计算结果z 1和z' 1;第二计算节点执行基于公式z 2=h 2+h a和z' 2=h' 2+h b'的本地计算,得到计算结果z 2和z' 2;第三计算节点执行基于公式z a=h a+h 2和z' a=h' a+h 1'的本地计算,得到计算结果z a和z' a;第四计算节点执行基于公式z b=h b+h 1和z' b=h' b+h 2'的本地计算,得到计算结果z b和z' b
需要说明的是,上述各计算公式仅为举例。在又一些示例中,根据输入数据的随机分散处理方式,上述部分或全部公式所表示的数学计算还可以由例如基于二进制数的数学计算形式表示。在此不再详述。
数据获取设备可依据上述计算协议所确定的包含可抵消的随机数的两个计算节点,选择第一计算节点和第三计算节点,或者第二计算节点和第四计算节点,并通过加和方式抵消计算节点所生成的随机数,并得到两个对应XYZ乘法计算任务的处理结果,或处理结果的倍数。按照上述示例所得到的处理结果可以为两个,若两个处理结果相同,则表示得到的XYZ乘法计算的处理结果,反之,则表示计算出错。
在此,若私密数据和共享的随机数是在值域
Figure PCTCN2020076313-appb-000029
内随机得到的,则在第一次置换数据时,每个计算节点发出不多于n个比特数据量,以及在第二次置换数据时,每个计算节点发出不多于2n个比特数据量。为此,所述计算任务包含三个输入数据的数学计算的计算任务,所述计算引擎执行所述计算任务期间产生不超过3×4次基于置换数据的数据通信,以及所述计算引擎执行所述计算任务期间产生不多于3n×4比特数据量的数据通信。以三个输入数据均为私有数据为例,所述计算引擎执行所述计算任务期间产生3×4次基于置换数据的数据通信,以及所述计算引擎执行所述计算任务期间产生3n×4比特数据量的数据通信。以三两个输入数据中有至少一个私有数据为例,所述计算引擎执行所述计算任务期间产生少于3×4次基于置换数据的数据通信,以及所述计算引擎执行所述计算任务期间产生少于3n×4比特数据量的数据通信。
在又一些示例中,根据业务逻辑的设计,计算任务中还可能包含位提取。例如按照通信协议提取某一位比特的计算任务。所述步骤S120包括:四个所述计算节点利用k轮次1比特置换数据的数据交互得到各自持有的计算结果,其中,所述计算结果用于提取输入数据X中二进制位;k为对应所述计算任务中输入数据X的待提取的二进制位数。在此,四个计算节点通过本地进行位计算生成包含有可抵消1比特随机数的中间数据(1比特),并通过k轮次的中间数据的数据交互得到计算结果。
在一些具体示例中,所述多方计算任务包括提取输入数据X中二进制位的计算任务;所述计算引擎中的第一计算节点、第二计算节点、第三计算节点和第四计算节点依次获取私密数据组{x 1},私密数据组{x 2},私密数据组{x a},以及私密数据组{x b};其中,{x 1,x 2,x a,x b}是输入数据X经随机分散处理得到的二进制表示的私密数据,其中,各私密数据与输入数据X具有相同的二进制位数。所述步骤S120包括以下步骤:
在步骤S1211中,各计算节点分别初始化用于输出的比特位值{c 1,c' 1},{c 2,c' 2},{c a,c' a}, {c b,c' b};以及令所述第一计算节点和第二计算节点共享随机数r 12和b 12;以及令所述第三计算节点和第四计算节点共享随机数b ab;其中,初始化的各比特位值举例为0。所述随机数r 12、b 12和b ab是基于提取位数k而生成的二进制随机数。其中,所述随机数共享和生成方式与前述示例中提及的方式相同或相似,在此不再重述。
在步骤S1212中,令第一计算节点和第二计算节点利用随机数r 12对各自持有的私密数据x 1和x 2对第k位进行逻辑处理,以得到具有第k位统一的二进制中间数据u 1和u 2
在此,令第一计算节点进行基于公式
Figure PCTCN2020076313-appb-000030
的本地计算得到中间数据u 1;并提供给第三计算节点;以及令第二计算节点进行基于公式u 2=x 2[1:k]∧r 12本地计算得到中间数据u 2
需要说明的是,根据实际设计需要,上述各计算节点的逻辑处理可以被调整,其他为k轮次循环而进行预处理,并得到具有第k位统一的二进制中间数据u 1和u 2的方式应视为基于本申请所提供的示例而进行数学计算调整得到的一种具体示例。
在步骤S1213中,令第一计算节点将中间数据u 1发送给第三计算节点,并由第三计算节点进行基于公式u 1∧x a的逻辑计算并得到中间数据u a
在步骤S1214中,基于k值而设置以下循环计算:各计算节点对私密数据x 1的第i位和输出比特位置进行带有基于所共享的随机数b 12或b ab的逻辑计算,并得到第i轮次的中间数据;以及将每轮次得到的中间数据进行置换处理,并赋值相应的输出比特位;其中,第一计算节点与第三计算节点进行中间数据的置换处理,以及第二计算节点与第四计算节点进行中间数据的置换处理。
例如,参见如下利用程序语言习惯来描述的基于k值而设置的循环计算:
For(i=1;i<=k-1;i=i+1){
S1计算
Figure PCTCN2020076313-appb-000031
并将t' 1发送至Sa.
S2计算
Figure PCTCN2020076313-appb-000032
并将t' 2发送至Sb.
Sa计算
Figure PCTCN2020076313-appb-000033
并将t' a发送至S1
Sb计算
Figure PCTCN2020076313-appb-000034
并将t' b发送至S2
S1赋值
Figure PCTCN2020076313-appb-000035
S2赋值
Figure PCTCN2020076313-appb-000036
Sa赋值
Figure PCTCN2020076313-appb-000037
Sb赋值
Figure PCTCN2020076313-appb-000038
其中,S1、S2、Sa和Sb依次表示第一计算节点、第二计算节点、第三计算节点和第四计算节点。
在步骤S1215中,各计算节点利用被赋值的输出比特位、随机数对各自持有的私密数据的第k位比特值进行逻辑计算得到计算结果。
例如,第一计算节点基于公式
Figure PCTCN2020076313-appb-000039
的本地计算得到计算结果c' 1;第二计算节点进行基于公式
Figure PCTCN2020076313-appb-000040
本地计算得到计算结果c' 2;第三计算节点进行基于公式
Figure PCTCN2020076313-appb-000041
本地计算得到计算结果c a;第四计算节点进行基于公式
Figure PCTCN2020076313-appb-000042
本地计算得到计算结果c b
需要说明的是,上述示例中的公式与前述k轮次的处理方式相关,并可根据实际k轮次的位处理方式进行调整。
在步骤S1216中,第一计算节点将计算结果c' 1提供给第三计算节点;第二计算节点将计算结果c' 2提供给第四计算节点;第三计算节点将计算结果c a提供给第二计算节点;第四计算节点将计算结果c b提供给第一计算节点,以便各计算节点持有得到便于校验处理结果的两个计算结果。
例如,第一计算节点将计算结果c' 1提供给第三计算节点,使得第三计算节点的计算结果包含c a和c' a,其中,令c' a=c' 1;第二计算节点将计算结果c' 2提供给第四计算节点,使得第四计算节点的计算结果包含c b和c' b,其中,令c' b=c' 2;第三计算节点将计算结果c a提供给第二计算节点,使得第二计算节点的计算结果包含c 2和c' 2,其中,令c' 2=c a;第四计算节点将计算结果c b提供给第一计算节点,使得第一计算节点的计算结果包含c 1和c' 1,其中,令c’ 1=c b
数据获取设备可依据上述计算协议所确定的计算节点对,选择一对计算节点的计算结果,并通过逻辑计算的方式抵消计算节点所生成的随机数,并得到提取输入数据X的第k位的计算任务的处理结果,或者所得到的处理结果的倍数。其中,所得到的处理结果可以为两个,若两个处理结果相同,则表示处理结果正确,反之,则表示计算出错。
在此,每个计算节点产生不多于k+1次数据通信;以及每个计算节点产生不多于2k比特数据量的数据通信。其中,根据步骤S1213的数据通信可知,每个所述计算节点在k轮次1比特置换数据的数据交互时,每个计算节点共发出k比特。另外,第一计算节点还产生k比特数据量的一次数据通信,故而第一计算节点总共产生k+1次数据通信和2k比特数据量的数据通信。。
在一些更具体示例中,根据前述步骤S1211-S1215的描述,我们通过让S1和Sb在步骤S1211-S1213中共享x 1[1:k]∧x 2[1:k]中一半份额来进一步优化通信复杂性。在这种情况 下,每个计算节点产生不多于1.5k比特位的数据通信。
利用位提取的多方计算指令可用于计算任务包括比较两个输入数据的计算任务。在一些示例中,比较两输入数据A1和A3的计算任务先被转换成计算(A1-A3)的计算任务以及提取二进制表示(A1-A3)的计算结果中最高位值的计算任务。为此,按照转换后的计算任务所生成的多方计算指令,计算引擎按照基于两个输入数据减法计算任务和位提取计算任务而设置的多方计算指令,令四个所述计算节点执行本地计算和数据交互,得到各自持有的比特值。例如,计算引擎依据多方计算指令,利用部分计算节点执行减法计算,并得到各自持有的减法计算结果,再以各自持有的减法计算结果作为位提取计算的私密数据,利用一次(k=1)比特位置换的数据交互执行最高位提取,得到位提取的计算结果。该位提取的计算结果可作为用于得到A1和A3比较结果的计算结果反馈给数据获取方。
在另一些示例中,根据计算任务获得比较结果中数据较大(或较小)者,则可以在计算引擎得到用于表示比较结果的位提取的计算结果的基础上,通过计算引擎的不经意传输将相应输入数据进行传输。由此避免数据获取方和计算引擎有信息泄露的可能。所述步骤S120包括利用四个计算节点执行基于不经意传输协议而设置的多方计算指令并得到各自持有的计算结果。
在此,不经意传输协议是一种可保护隐私的双方通信协议,能使通信双方以一种选择模糊化的方式传送消息。不经意传输协议是密码学的一个基本协议,它使得服务的接收方以不经意的方式得到服务发送方输入的某些消息,这样就可以保护数接收方的隐私不被发送方所知道。
在一些具体示例中,所述利用四个计算节点执行基于不经意传输协议而设置的多方计算指令并得到各自持有的计算结果包括:令四个所述计算节点确定用于表示传输/不传输相应私密数据的权值,并利用本地计算和数据交互得到各自持有的计算结果;其中,所述计算结果包含用于表示传输相应私密数据的结果,或用于表示不传输相应私密数据的结果。例如,所述计算任务包括不经意传输输入数据X的计算任务,利用输入的比特值c,随机初始化各计算节点的比特值{c 1,c' 1},{c 2,c' 2},{c a,c' a},{c b,c' b},并分配给各计算节点;其中,
Figure PCTCN2020076313-appb-000043
c 2=c a,c' 1=c' a,c' 2=c' b,c 1=c b。以初始化比特值c=1为例,基于比特值c,分配给第一计算节点的随机比特值c 1=1和c' 1=0,则分配给第二计算节点的比特值{0,1},分配给第三计算节点的比特值{0,0},分配给第四计算节点的比特值{1,1}。各计算节点以所得到的比特值为权值,利用本地计算对传输或不传输私密数据进行数学计算,并利用数据交互得到各自持有的计算结果。
根据每个计算节点所获得的私密数据的数量,每个计算节点得到对应数量计算结果,用于表示传输或不传输其中的私密数据。以每个计算节点获得两个私密数据为例,其中,输入数据X随机分散处理成多个私密数据{x 1,x' 1,x 2,x' 2,x a,x' a,x b,x' b},其中,x 2=X-x 1=x a,x 1=x b,x' 2=X-x' 1=x' b,x' 1=x' a;各计算节点所获取的私密数据依次为{x 1,x' 1},{x 2,x' 2},{x a,x' a},{x b,x' b}。本步骤S120的执行过程如下:
在步骤S1211’中,令所述第一计算节点和第二计算节点共享第一类随机数r 12和r' 12;所述第一计算节点和第三计算节点共享第二类随机数r' 1a;所述第一计算节点和第四计算节点共享第二类随机数r 1b;令所述第二计算节点和第三计算节点共享第二类随机数r 2a;所述第二计算节点和第四计算节点共享第二类随机数r' 2b;令所述第三计算节点和第四计算节点共享第一类随机数r ab和r' ab。在此,各随机数的共享方式可与前述的共享方式相同或相似,在此不再重述。
在步骤S1212’中,令各计算节点利用各自配置的比特值对是否传输私密数据进行带有第一类随机数的数学计算,以及利用各自配置的比特值对是否传输第一类随机数进行带有第二类随机数的数学计算。
例如,第一计算节点基于公式t 1=x 1×c 1'-r 12、t' 1=x 1'×c 1-r' 12本地计算得到携带有第一类随机数的中间数据t 1和t' 1,以及基于公式e 1=(1-2c 1')×r 12+r 1a和e' 1=(1-2c 1)×r' 12+r' 1a本地计算得到携带有第二类随机数的中间随机数e 1和e' 1。类似地,第二计算节点基于公式t 2=x 2×c' 2-r 12和t' 2=x 2'×c 2-r 2'得到中间数据t 2和t' 2,基于公式e 2=(1-2c' 2)×r 12+r 2a和e' 2=(1-2c 2)×r' 12+r' 2a得到中间随机数e 2和e' 2。第三计算节点基于公式t a=x a×c' a-r ab和t' a=x' a×c a-r' ab得到中间数据t a和t' a,基于公式e a=(1-2c' a)×r ab+r 2a和ea'=(1-2ca)×rab'+r1a'得到中间随机数e a和e' a。第四计算节点基于公式t b=x b×c' b-r ab和t' b=x' b×c b-r' ab得到中间数据t b和t' b,基于公式e a=(1-2c' a)×r ab+r 2a和e' a=(1-2c a)×r' ab+r' 1a得到中间随机数e b和e' b
在步骤S1213’中,令第一计算节点和第二计算节点分别与第三计算节点和第四计算节点进行中间数据和中间随机数的置换操作。
例如,令第一计算节点和第三计算节点置换{t' 1,e 1}和{t' a,e a},第一计算节点和第四计算节点置换{t 1,e' 1}和{t b,e' b};令第二计算节点和第三计算节点置换{t' 2,e 2}和{t a,e' a},以及第二计算节点和第四计算节点置换{t 2,e' 2}和{t' b,e b}。
在步骤S1214’中,令各计算节点执行包含抵消第二类随机数的数学计算,并得到各自持 有的计算结果。
例如,令第一计算基于公式y 1=(1-2c 1')t b+c 1'x 1+e a-r 1b和y' 1=(1-2c 1)t' a+c 1x 1'+e’ b-r' 1a得到计算结果y 1和y' 1;令第二计算基于公式y 2=(1-2c 2')t a+c 2'x 2+e b-r 2a和y' 2=(1-2c 2)t' b+c 2x 2'+e' a-r' 2b得到计算结果y 2和y' 2;令第三计算基于公式y a=(1-2c' a)t 2+c' ax a+e 1-r 2a和y' a=(1-2c a)t 1'+c ax' a+e 1'-r' 1a得到计算结果y a和y' a;令第四计算基于公式y b=(1-2c' b)t 1+c' bx b+e 2-r 1b和y' b=(1-2c b)t2' 1+c bx' b+e 2'-r' 2b得到计算结果y b和y’ b
数据获取设备可依据上述计算协议所确定的两个计算节点,选择一对计算节点的计算结果,并通过逻辑计算的方式抵消计算节点所生成的第一类随机数,并得到不经意传输输入数据X的计算任务的处理结果,或处理结果的倍数。其中,所得到的处理结果可以为两个,若两个处理结果相同,则表示处理结果正确,反之,则表示计算出错。
需要说明的是,上述各公式仅为举例,事实上,基于上述示例可通过调整实际权值设置规则或者调整随机数的正负符号来调整数学计算以及数据交互,在上述示例的基础上的数学变形应视为基于本方案技术思想下的具体示例。在此不一一详述。
在此,若私密数据和共享的随机数是在值域
Figure PCTCN2020076313-appb-000044
内随机得到的,则每个计算节点在执行一次置换数据时所发出的数据量不超过2n,每个计算节点执行两次置换数据的操作,故而每个计算节点在执行一次不经意传输协议时发出不超过4n个比特数据量。为此,所述计算引擎执行所述计算任务期间产生不多于4×4次基于置换数据的数据通信;以及所述计算引擎执行所述计算任务期间产生不多于4n×4比特数据量的数据通信。
当利用上述计算协议处理复杂计算任务时,根据前述提及的多个计算之间的关联关系,在一些示例中,计算引擎所执行的多方计算指令是根据计算任务中的高优先级计算与低优先级计算之间所需处理的数据份数而对高优先级计算的或低优先级计算的多方计算进行优化处理后得到的。请参阅图8a和8b,其分别显示为计算引擎使用私密数据X和Y的一次分散的分散数据进行数据分配的计算架构示意图,其中,X被分散成{x 1,x 2},Y被分散成{y' 1,y' 2},其中,{x 1,y' 1}被分配给第一计算节点S1,{x 2,y' 2}被分配给地二计算节点S2。第一计算节点S1将所接收的{x 1,y' 1}中的x 1作为x b发送至第四计算节点Sb,以及将y' 1作为y' a发送至第三计算节点Sa;第二计算节点S2将所接收的{x 2,y' 2}中的x 2作为x a发送至第三计算节点Sa,以及将y' 2作为y' b发送至第四计算节点Sb。按照上述各示例所提供的协议,各计算节点根据所接收 的分散数据执行相应计算,从而实现利用一次分散而得到的各分散数据进行多方计算的目的。在此,各计算节点各自持有一个计算结果,利用所得到的各计算结果执行后续多方计算操作。如此优化可减少各计算节点的数据计算量和数据通信量。
以如图8a和8b所示的计算引擎执行(X*Y+M)计算任务为例,其中,M被分散成{m 1,m 2}。第一计算节点S1根据公式t 1=x 1×y 1'-r 12执行本地计算得到中间数据t 1;第二计算节点S2根据公式t 2=x 2×y' 2+r 12执行本地计算得到中间数据t 2;第三计算节点Sa根据公式t a=x a×y' a-r ab执行本地计算得到中间数据t a;第四计算节点Sb根据公式t b=x b×y' b+r ab执行本地计算得到中间数据t b。接着,令第一计算节点S1将中间数据t 1发送至第四计算节点Sb;令第二计算节点S2将中间数据t 2发送至第三计算节点Sa;令第三计算节点Sa将中间数据t a发送至第二计算节点S2;以及令第四计算节点Sb将中间数据t b发送至第一计算节点S1。第一计算节点S1基于公式z 1=t 1+t b执行本地计算,得到计算结果z 1;第二计算节点S2基于公式z 2=t 2+t a执行本地计算,得到计算结果z 2;第三计算节点Sa基于公式z a=t a+t 2执行本地计算,得到计算结果z a;第四计算节点Sb基于公式z b=t b+t 1执行本地计算,得到计算结果z b。至此,计算引擎的四个计算节点完成X*Y的多方安全计算,其中,利用第一计算节点和第二计算节点各自持有的计算结果z 1和z 2可恢复出X*Y的值,即X*Y=z 1+z 2;同样的,利用第三算节点和第二计算节点各自持有的计算结果z a和z b可恢复出X*Y的值,即X*Y=z a+z b。接着,计算引擎中的第一计算节点S1和第二计算节点S2(也可以选择第三计算节点Sa和第四计算节点Sb)继续执行加法计算,具体地,第一计算节点S1获取分散数据m 1,第二计算节点S2获取分散数据m 2,第一计算节点S1根据公式r 1=z 1+m 1执行本地计算,以及第二计算节点S2根据公式r 2=z 2+m 2执行本地计算。所得到的计算结果r 1和r 2可被恢复成计算任务(X*Y+M)的处理结果,即(X*Y+M)=r 1+r 2。利用经优化后的乘法的多方计算方式,计算引擎中的第一计算节点和第二计算节点可利用各自参与的乘法的多方计算而得到的计算结果继续执行加法的多方计算,而不会产生冗余数据。
需要说明的是,上述乘法的优化示例仅为举例,其他各多方计算协议均可在复杂的计算任务中进行适应性优化处理,在此不一一举例。
基于上述描述,本申请所提供的由四个计算节点构成的计算引擎及多方计算方法,利用适用于计算任务的私密数据进行本地和节点间交互,由此实现多方计算。其中,利用计算节点之间共享随机数参与计算的方式,使得各计算节点所得到的计算结果不会以明码形式返回, 由此保证了数据安全性。另外,利用本申请所描述的多方计算指令进行多方计算有效减少了计算节点之间传输的数据量。
本申请另一实施例中,还公开一种计算机可读的存储介质,所述计算机可读的存储介质存储至少一种程序,所述至少一种程序在被调用时参与执行所述多方计算方法。其中,所述计算机为前述提及的任一计算节点。所述多方计算方法参阅图7及关于图7的相关描述,在此不加赘述。另外需要说明的是,通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请的部分或全部可借助软件并结合必需的通用硬件平台来实现。基于这样的理解,所述存储介质存储有至少一个程序,所述程序在被调用时执行前述的任一所述的导航方法。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可包括其上存储有机器可执行指令的一个或多个机器可读介质,这些指令在由诸如计算机、计算机网络或其他电子设备等一个或多个机器执行时可使得该一个或多个机器根据本申请的实施例来执行操作。例如执行机器人的定位方法中的各步骤等。机器可读介质可包括,但不限于,软盘、光盘、CD-ROM(紧致盘-只读存储器)、磁光盘、ROM(只读存储器)、RAM(随机存取存储器)、EPROM(可擦除可编程只读存储器)、EEPROM(电可擦除可编程只读存储器)、磁卡或光卡、闪存、或适于存储机器可执行指令的其他类型的介质/机器可读介质。其中,所述存储介质可位于服务器也可位于第三方服务器中,例如位于阿里云服务系统中。本申请可用于众多通用或专用的计算系统环境或配置中。例如:大型计算机、包括以上任何系统或设备的分布式计算环境等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
上述实施例仅例示性说明本申请的原理及其功效,而非用于限制本申请。任何熟悉此技术的人士皆可在不违背本申请的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本申请所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本申请的权利要求所涵盖。

Claims (35)

  1. 一种输入数据的计算方法,其特征在于,利用由四个计算节点协同计算的计算引擎来计算对应于一计算任务的多方计算指令,其中,所述计算任务用于对输入数据进行数据处理,所述计算方法包括:
    所述计算引擎获取所述多方计算指令,以及获取私密数据组;其中,各所述私密数据组为所述输入数据基于所述计算引擎执行多方计算所需的随机分散处理方式而得到的;
    按照所述多方计算指令,所述计算引擎中至少部分计算节点分别对各自所获取的私密数据组进行本地计算,和/或将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果;
    其中,从所述四个计算节点中而选取的部分计算节点所持有的计算结果用于生成一处理结果;其中,所述处理结果为所述计算任务处理所述输入数据的处理结果。
  2. 根据权利要求1所述的输入数据的计算方法,其特征在于,所述随机分散处理方式包括:随机产生至少一个私密数据,按照所产生的私密数据将输入数据进行分散处理。
  3. 根据权利要求2所述的输入数据的计算方法,其特征在于,所述输入数据包含数值X;所述随机分散处理方式包括:随机产生两个私密数据x 1和x' 1,基于所述私密数据x 1和x' 1将输入数据X分散成{x 1,x' 1,x 2,x' 2,x a,x' a,x b,x' b};其中,x 2=X-x 1=x a,x 1=x b,x' 2=X-x' 1=x' b,x' 1=x' a;各计算节点所获取的私密数据组中对应输入数据X的私密数据分别为{x 1,x' 1},{x 2,x' 2},{x a,x' a},{x b,x' b}。
  4. 根据权利要求2所述的输入数据的计算方法,其特征在于,所述输入数据包含比特值C;所述随机分散处理方式包括:随机产生两个比特位的私密数据c 1和c' 1,基于所述私密数据c 1和c' 1将输入数据C分散成用比特位表示的私密数据{c 1,c' 1,c 2,c' 2,c a,c' a,c b,c' b};其中,
    Figure PCTCN2020076313-appb-100001
    各计算节点所获取的私密数据组中对应输入数据C的私密数据分别为{c 1,c' 1},{c 2,c' 2},{c a,c' a},{c b,c' b}。
  5. 根据权利要求1所述的输入数据的计算方法,其特征在于,所述输入数据包含浮点类型数据;所述私密数据为将经二进制化处理后的浮点类型数据随机分散处理得到的。
  6. 根据权利要求1所述的输入数据的计算方法,其特征在于,所述计算引擎还获取作为输入 数据的非私有数据;所述多方计算指令是依据所述非私有数据而确定的。
  7. 根据权利要求1所述的输入数据的计算方法,其特征在于,所述多方计算指令包含基于计算任务中具有同态性的计算而生成的指令;按照所述多方计算指令,所述计算引擎中的计算节点执行本地计算并得到相应的计算结果。
  8. 根据权利要求1所述的输入数据的计算方法,其特征在于,所述多方计算指令包含基于计算任务中多个计算之间的关联关系而设置的指令。
  9. 根据权利要求1所述的输入数据的计算方法,其特征在于,各计算节点利用共享的随机数执行本地计算以得到可供抵消的中间数据或计算结果;其中,各计算节点配置有产生所述随机数的随机数发生器。
  10. 根据权利要求9所述的输入数据的计算方法,其特征在于,所述计算任务包含两个输入数据的数学计算任务;所述按照多方计算指令,各计算节点分别对各自所获取的私密数据组进行本地计算,以及将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果的步骤包括:令四个所述计算节点利用所述随机数执行本地计算以及利用一次置换数据的数据交互得到分别持有的计算结果。
  11. 根据权利要求10所述的输入数据的计算方法,其特征在于,所述计算任务包含两个输入数据的乘法计算任务;所述按照多方计算指令,各计算节点分别对各自所获取的私密数据组进行本地计算,以及将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果的步骤包括:
    所述计算引擎中的第一计算节点、第二计算节点、第三计算节点和第四计算节点依次获取私密数据组{x 1,x' 1,y 1,y' 1},私密数据组{x 2,x' 2,y 2,y' 2},私密数据组{x a,x' a,y a,y' a},以及私密数据组{x b,x' b,y b,y' b};其中,{x 1,x' 1,x 2,x' 2,x a,x' a,x b,x' b}是输入数据X经随机分散处理得到的,{y 1,y' 1,y 2,y' 2,y a,y' a,y b,y' b}是输入数据Y经随机分散处理得到的;
    按照利用四个计算节点执行输入数据X和Y的乘法计算任务而生成的多方计算指令,所述计算引擎执行以下步骤:
    令所述第一计算节点和第二计算节点共享随机数r 12和r’ 12,以及令所述第三计算 节点和第四计算节点共享随机数r ab和r' ab
    令所述第一计算节点和第二计算节点分别对各自所持有的私密数据组进行乘法计算和用于抵消随机数r 12和r' 12的数学计算,以便第一计算节点得到中间数据t 1和t' 1,以及第二计算节点得到中间数据t 2和t' 2
    令所述第三计算节点和第四计算节点分别对各自所持有的私密数据组进行乘法计算和用于抵消随机数r ab和r' ab的数学计算,以便第一计算节点得到中间数据t a和t' a,以及第二计算节点得到中间数据t b和t' b
    令第一计算节点和第三计算节点置换各自的一个中间数据,以及第一计算节点和第四计算节点置换各自的一个中间数据;令第二计算节点和第三计算节点置换各自的一个中间数据,以及第二计算节点和第四计算节点置换各自的一个中间数据;
    令各计算节点分别利用基于置换操作而配对的中间数据执行包含加法的本地计算,以便每个计算节点得到两个包含可抵消随机数的计算结果。
  12. 根据权利要求10所述的输入数据的计算方法,其特征在于,所述计算任务包含两个输入数据的数学计算的计算任务,所述计算引擎执行所述计算任务期间产生不多于2×4次基于置换数据的数据通信。
  13. 根据权利要求10所述的输入数据的计算方法,其特征在于,所述私密数据和共享的随机数均为值域
    Figure PCTCN2020076313-appb-100002
    中的数值,所述计算引擎执行所述计算任务期间产生不多于2n×4比特数据量的数据通信。
  14. 根据权利要求9所述的输入数据的计算方法,其特征在于,所述计算任务包含三个输入数据数学计算的计算任务;所述按照多方计算指令,各计算节点分别对各自所获取的私密数据组进行本地计算,以及将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果的步骤包括:令四个所述计算节点利用第一次置换数据的数据交互得到各自持有的对应输入数据X和Y计算的第一计算结果并将其作为中间数据;令四个所述计算节点利用对所述中间数据进行第二次置换数据的数据交互得到各自持有的所述计算结果;以及在两次置换数据前,令四个所述计算节点基于所述随机数执行本地计算。
  15. 根据权利要求14所述的输入数据的计算方法,其特征在于,所述按照多方计算指令,各 计算节点分别对各自所获取的私密数据组进行本地计算,以及将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果的步骤包括:
    所述计算引擎中的第一计算节点、第二计算节点、第三计算节点和第四计算节点依次获取私密数据组{x1,y1’,z1},私密数据组{x2,y2’,z2},私密数据组{xa,ya’,za},以及私密数据组{xb,yb’,zb};其中,{x1,x2,xa,xb}是输入数据X经随机分散处理得到的,{y1’,y2’,ya’,yb’}是输入数据Y经随机分散处理得到的,以及{z1,z2,za,zb}是输入数据Z经随机分散处理得到的;
    按照利用四个计算节点执行输入数据X、Y和Z的乘法计算任务而生成的多方计算指令,所述计算引擎执行以下步骤:
    令所述第一计算节点和第二计算节点共享一随机数
    Figure PCTCN2020076313-appb-100003
    以及令所述第三计算节点和第四计算节点共享一随机数
    Figure PCTCN2020076313-appb-100004
    令四个所述计算节点分别对涉及输入数据X和Y的私密数据进行乘法计算和用于抵消随机数
    Figure PCTCN2020076313-appb-100005
    Figure PCTCN2020076313-appb-100006
    的数学计算,以便第一计算节点得到中间数据t 1,第二计算节点得到中间数据t 2,第三计算节点得到中间数据t a,第四计算节点得到中间数据t b
    令第一计算节点和第三计算节点置换各自的中间数据;令第二计算节点和第三计算节点置换各自的中间数据;
    令各计算节点利用所持有的各中间数据和对应输入数据Z的私密数据进行乘法的数学计算,以便第一计算节点得到中间数据s 1,第二计算节点得到中间数据s 2,第三计算节点得到中间数据s a,第四计算节点得到中间数据s b
    令所述第一计算节点和第二计算节点分别对各自所持有的中间数据s 1和s 2进行乘法计算和用于抵消随机数r 12和r' 12的数学计算,以便第一计算节点得到中间数据h 1和h' 1,以及第二计算节点得到中间数据h 2和h' 2
    令所述第三计算节点和第四计算节点分别对各自所持有的中间数据s a和s b进行乘法计算和用于抵消随机数r ab和r' ab的数学计算,以便第三计算节点得到中间数据h a和h' a,以及第四计算节点得到中间数据h b和h' b
    令第一计算节点和第三计算节点置换各自的一个中间数据,以及第一计算节点和第四计算节点置换各自的一个中间数据;令第二计算节点和第三计算节点置换各自的一个中间数据,以及第二计算节点和第四计算节点置换各自的一个中间数据;
    令各计算节点分别利用基于置换操作而配对的中间数据执行包含加法的本地计 算,以便每个计算节点得到两个包含可抵消随机数的计算结果。
  16. 根据权利要求14所述的输入数据的计算方法,其特征在于,所述计算任务包含三个输入数据的数学计算的计算任务,所述计算引擎执行所述计算任务期间产生不超过3×4次基于置换数据的数据通信。
  17. 根据权利要求14所述的输入数据的计算方法,其特征在于,所述私密数据和共享的随机数均为值域
    Figure PCTCN2020076313-appb-100007
    中的数值,所述计算引擎执行所述计算任务期间产生不多于3n×4比特数据量的数据通信。
  18. 根据权利要求9所述的输入数据的计算方法,其特征在于,所述计算任务包括提取输入数据X中二进制位的计算任务;所述按照计算指令,各计算节点分别对各自所获取的私密数据组进行本地计算,以及将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果的步骤包括:四个所述计算节点利用k轮次1比特置换数据的数据交互得到各自持有的计算结果,其中,所述计算结果用于提取输入数据X中二进制位;k为对应所述计算任务中输入数据X的待提取的二进制位数。
  19. 根据权利要求18所述的输入数据的计算方法,其特征在于,每个计算节点产生不多于k+1次数据通信。
  20. 根据权利要求18所述的输入数据的计算方法,其特征在于,每个计算节点产生不多于2k比特数据量的数据通信。
  21. 根据权利要求18所述的输入数据的计算方法,其特征在于,每个计算节点产生不多于1.5k比特位的数据通信。
  22. 根据权利要求18所述的输入数据的计算方法,其特征在于,所述计算任务包括提取输入数据X中二进制位的计算任务;所述按照计算指令,各计算节点分别对各自所获取的私密数据组进行本地计算,以及将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果的步骤包括:
    所述计算引擎中的第一计算节点、第二计算节点、第三计算节点和第四计算节点依次 获取私密数据组{x 1},私密数据组{x 2},私密数据组{x a},以及私密数据组{x b};其中,{x 1,x 2,x a,x b}是输入数据X经随机分散处理得到的二进制表示的私密数据,其中,各私密数据与输入数据X具有相同的二进制位数;
    按照计算指令,所述计算引擎执行以下步骤:
    各计算节点分别初始化用于输出的比特位值{c 1,c' 1},{c 2,c' 2},{c a,c' a},{c b,c' b};以及令所述第一计算节点和第二计算节点共享随机数r 12和b 12;以及令所述第三计算节点和第四计算节点共享随机数b ab;其中,所述随机数r 12、b 12和b ab是基于提取位数k而生成的二进制随机数;
    令第一计算节点和第二计算节点利用随机数r 12对各自持有的私密数据x 1和x 2对第k位进行逻辑处理,以得到具有第k位统一的二进制中间数据u 1和u 2
    令第一计算节点将中间数据u 1发送给第三计算节点,并由第三计算节点进行基于公式u 1∧x a的逻辑计算并得到中间数据u a
    基于k值而设置以下循环计算:各计算节点对私密数据x 1的第i位和输出比特位置进行带有基于所共享的随机数b 12或b ab的逻辑计算,并得到第i轮次的中间数据;以及将每轮次得到的中间数据进行置换处理,并赋值相应的输出比特位;其中,第一计算节点与第三计算节点进行中间数据的置换处理,以及第二计算节点与第四计算节点进行中间数据的置换处理;
    各计算节点利用被赋值的输出比特位、随机数对各自持有的私密数据的第k位比特值进行逻辑计算得到计算结果;
    第一计算节点将计算结果c' 1提供给第三计算节点;第二计算节点将计算结果c' 2提供给第四计算节点;第三计算节点将计算结果c a提供给第二计算节点;第四计算节点将计算结果c b提供给第一计算节点,以便每个计算节点持有两个计算结果。
  23. 根据权利要求18所述的输入数据的计算方法,其特征在于,所述计算任务包括比较两个输入数据的计算任务,按照基于两个输入数据减法计算任务和位提取计算任务而设置的多方计算指令,令四个所述计算节点执行本地计算和数据交互,得到各自持有的比特值。
  24. 根据权利要求9所述的输入数据的计算方法,其特征在于,所述按照计算指令,各计算节点分别对各自所获取的私密数据组进行本地计算,以及将本地计算所产生的中间数据进行 交互,得到经由各计算节点分别持有的计算结果的步骤包括:利用四个计算节点执行基于不经意传输协议而设置的多方计算指令并得到各自持有的计算结果。
  25. 根据权利要求24所述的输入数据的计算方法,其特征在于,所述利用四个计算节点执行基于不经意传输协议而设置的多方计算指令并得到各自持有的计算结果的步骤包括:令四个所述计算节点基于用于表示传输/不传输相应私密数据的可分享随机比特值进行本地计算和数据交互,并得到各自持有的计算结果;其中,所述计算结果包含用于表示传输相应私密数据的结果,或用于表示不传输相应私密数据的结果。
  26. 根据权利要求24所述的输入数据的计算方法,其特征在于,所述计算任务包括不经意传输输入数据X的计算任务;所述按照计算指令,各计算节点分别对各自所获取的私密数据组进行本地计算,以及将本地计算所产生的中间数据进行交互,得到经由各计算节点分别持有的计算结果的步骤包括:
    所述计算引擎中的各计算节点所获取的私密数据依次为{x 1,x' 1},{x 2,x' 2},{x a,x' a},{x b,x' b};其中,私密数据{x 1,x' 1,x 2,x' 2,x a,x' a,x b,x' b}为输入数据X经随机分散处理得到的;
    各计算节点获取分别基于待分享的私密数据而设置的可分享随机比特值{c 1,c' 1},{c 2,c' 2},{c a,c' a},{c b,c' b};
    按照利用四个计算节点执行不经意传输输入数据X的计算任务而生成的多方计算指令,所述计算引擎执行以下步骤:
    令所述第一计算节点和第二计算节点共享第一类随机数r 12和r' 12;所述第一计算节点和第三计算节点共享第二类随机数r' 1a;所述第一计算节点和第四计算节点共享第二类随机数r 1b;令所述第二计算节点和第三计算节点共享第二类随机数r 2a;所述第二计算节点和第四计算节点共享第二类随机数r' 2b;令所述第三计算节点和第四计算节点共享第一类随机数r ab和r' ab
    令各计算节点利用各自配置的比特值对是否传输私密数据进行带有第一类随机数的数学计算,以及利用各自配置的比特值对是否传输第一类随机数进行带有第二类随机数的数学计算以得到中间数据和中间随机数;
    令第一计算节点和第二计算节点分别与第三计算节点和第四计算节点进行中间数据和中间随机数的置换操作;
    令各计算节点执行包含抵消第二类随机数的数学计算,并得到各自持有的计算结果。
  27. 根据权利要求24所述的输入数据的计算方法,其特征在于,所述计算引擎执行所述计算任务期间产生不多于4×4次基于置换数据的数据通信。
  28. 根据权利要求24所述的输入数据的计算方法,其特征在于,所述私密数据和共享的随机数均为值域
    Figure PCTCN2020076313-appb-100008
    中的数值,所述计算引擎执行所述计算任务期间产生不多于4n×4比特数据量的数据通信。
  29. 根据权利要求1所述的输入数据的计算方法,其特征在于,所述计算引擎获取对应所述计算任务的多方计算指令的步骤包括:各所述计算节点获取所述多方计算指令及计算角色;以供各计算节点按照所分别获取的计算角色执行所述多方计算指令。
  30. 根据权利要求1所述的输入数据的计算方法,其特征在于,所述计算引擎获取对应所述计算任务的多方计算指令的步骤包括:各所述计算节点分别获取所述多方计算指令中对应本地执行的计算指令。
  31. 根据权利要求1所述的输入数据的计算方法,其特征在于,还包括将所述四个计算节点中的两个计算节点所持有的计算结果发送给数据获取设备,以便所述数据获取设备基于所得到的计算结果生成对应所述计算任务的处理结果。
  32. 根据权利要求1所述的输入数据的计算方法,其特征在于,所述多方计算指令包含基于计算任务中多个计算之间的关联关系而将多方计算进行优化后得到的指令;其中,所述多方计算指令包含利用少于四个的计算节点执行计算的指令。
  33. 一种计算引擎,其特征在于,包括:四个计算节点,用于协同计算对应一计算任务的多方计算指令;其中,所述计算任务用于对输入数据进行数据处理;
    所述四个计算节点基于所获取的多方计算指令,以及获取私密数据组执行如权利要求1-32中任一所述的输入数据的计算方法;其中,各所述私密数据组为所述输入数据基于所述计算任务所对应的随机分散处理方式而得到的。
  34. 一种计算节点中的可读介质,其特征在于,存储有至少一个程序,所述至少一种程序在被调用时参与执行如权利要求1-32中任一所述的输入数据的计算方法。
  35. 一种任务管理平台,其特征在于,包括:
    存储装置,用于存储至少一个程序;
    接口装置,用于与计算引擎进行通信;
    处理装置,用于调用所述至少一个程序并协调所述存储装置和接口装置执行以下方法:
    获取一计算任务;其中,所述计算任务用于对输入数据进行数据处理;
    将所述计算任务转换成可供所述计算引擎执行如权利要求1-32中任一所述的输入数据的计算方法的多方计算指令,并发送给所述计算引擎。
PCT/CN2020/076313 2019-03-29 2020-02-22 输入数据的计算方法、计算引擎及存储介质 WO2020199784A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910252632.X 2019-03-29
CN201910252632.XA CN111753315B (zh) 2019-03-29 2019-03-29 输入数据的计算方法、计算引擎及存储介质

Publications (1)

Publication Number Publication Date
WO2020199784A1 true WO2020199784A1 (zh) 2020-10-08

Family

ID=72664891

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2020/076313 WO2020199784A1 (zh) 2019-03-29 2020-02-22 输入数据的计算方法、计算引擎及存储介质

Country Status (2)

Country Link
CN (1) CN111753315B (zh)
WO (1) WO2020199784A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113761469A (zh) * 2021-08-10 2021-12-07 支付宝(杭州)信息技术有限公司 一种保护数据隐私的最高位进位计算方法

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112100642B (zh) * 2020-11-13 2021-06-04 支付宝(杭州)信息技术有限公司 在分布式系统中保护隐私的模型训练方法及装置
CN113254956A (zh) * 2021-05-07 2021-08-13 华控清交信息科技(北京)有限公司 一种数据处理方法、装置和用于数据处理的装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120233460A1 (en) * 2011-03-09 2012-09-13 Microsoft Corporation Server-aided multi-party protocols
CN109446828A (zh) * 2018-11-07 2019-03-08 北京邮电大学 一种安全多方计算方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
AU1199888A (en) * 1987-03-13 1988-09-15 Northern Telecom Limited Communications system and components and methods for use therein
EP4220464A1 (en) * 2017-03-22 2023-08-02 Visa International Service Association Privacy-preserving machine learning
CN109255247B (zh) * 2018-08-14 2020-08-14 阿里巴巴集团控股有限公司 多方安全计算方法及装置、电子设备
CN109241016B (zh) * 2018-08-14 2020-07-07 阿里巴巴集团控股有限公司 多方安全计算方法及装置、电子设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120233460A1 (en) * 2011-03-09 2012-09-13 Microsoft Corporation Server-aided multi-party protocols
CN109446828A (zh) * 2018-11-07 2019-03-08 北京邮电大学 一种安全多方计算方法及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
LI, YI ET AL.: "PrivPy: Enabling Scalable and General Privacy-Preserving Machine Learning", HTTPS://ARXIV.ORG/ABS/1801.10117V3, 24 May 2018 (2018-05-24), XP081556972, DOI: 20200514161402PX *
LI, YI ET AL.: "PrivPy: Enabling Scalable and General Privacy-Preserving Machine Learning", HTTPS://ARXIV.ORG/ABS/1801.10117V4, 5 December 2019 (2019-12-05), XP081556972, DOI: 20200514160940PX *
LI, YI ET AL.: "PrivPy: General and Scalable Privacy-Preserving Data Mining", 25TH ACM SIGKDD INTERNATIONAL CONFERENCE ON KNOWLEDGE DISCOVERY & DATA MINING (KDD), 8 August 2019 (2019-08-08), XP058466168, DOI: 20200514161819PX *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113761469A (zh) * 2021-08-10 2021-12-07 支付宝(杭州)信息技术有限公司 一种保护数据隐私的最高位进位计算方法
CN113761469B (zh) * 2021-08-10 2024-05-17 支付宝(杭州)信息技术有限公司 一种保护数据隐私的最高位进位计算方法

Also Published As

Publication number Publication date
CN111753315A (zh) 2020-10-09
CN111753315B (zh) 2023-10-13

Similar Documents

Publication Publication Date Title
CN111931250B (zh) 多方安全计算一体机
Yang et al. A quasi-newton method based vertical federated learning framework for logistic regression
US20230028606A1 (en) Method and apparatus for vertical federated learning
WO2020199784A1 (zh) 输入数据的计算方法、计算引擎及存储介质
Bonawitz et al. Practical secure aggregation for federated learning on user-held data
US12001569B2 (en) Model training method, model using method, system, trusted node and device
CN110073633A (zh) 使用同态加密的区块链数据保护
CN111027087B (zh) 应用区块链助记词加密的企业信息管理系统及方法
Zhang et al. BC-EdgeFL: A defensive transmission model based on blockchain-assisted reinforced federated learning in IIoT environment
CN111967038B (zh) 数据处理系统、方法、设备、编辑器及存储介质
WO2020199785A1 (zh) 私有数据的处理方法、计算方法及所适用的设备
CN113922957B (zh) 一种基于隐私保护计算的虚拟云钱包系统
Nagarajan et al. Blockchain single and interval valued neutrosophic graphs
CN111914264A (zh) 索引创建方法及装置、数据验证方法及装置
Rizk et al. A graph federated architecture with privacy preserving learning
CN110149323A (zh) 一种具有千万级tps合约处理能力的处理装置
CN114548418A (zh) 一种基于秘密分享的横向联邦iv算法
WO2023236628A1 (zh) 一种隐私保护的神经网络预测系统
Luo et al. SVFL: Efficient secure aggregation and verification for cross-silo federated learning
Wolfe et al. Secret sharing MPC on FPGAs in the datacenter
Kabulov et al. Systematic analysis of blockchain data storage and sharing technology
Song et al. Pmpl: A robust multi-party learning framework with a privileged party
Leung et al. Tight bounds on communication complexity of symmetric xor functions in one-way and smp models
CN117349685A (zh) 一种通信数据的聚类方法、系统、终端及介质
CN112003690B (zh) 密码服务系统、方法及装置

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 20784284

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 20784284

Country of ref document: EP

Kind code of ref document: A1