Multi-party computation services

US9577829B1 · US · B1

Patent metadata
FieldValue
Publication numberUS-9577829-B1
Application numberUS-201414476635-A
CountryUS
Kind codeB1
Filing dateSep 3, 2014
Priority dateSep 3, 2014
Publication dateFeb 21, 2017
Grant dateFeb 21, 2017

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

A system and method of performing a multi-party computation by determining a function for use in the multi-party computation, receiving a plurality of input values for the function, evaluating the function based at least in part on the plurality of input values to generate a result wherein the result is not usable to determine an input of the plurality of input values, and providing an output based at least in part on the result.

First claim

Opening claim text (preview).

What is claimed is: 1. A system, comprising: one or more processors; memory including instructions that, when executed by the one or more processors, cause the system to: receive a set of web service application programming interface calls that specifies a function and an execution instance for evaluating the function; configure the execution instance to evaluate the function; provide a cryptographically verifiable attestation of the function; receive, from each party of a plurality of parties, a respective input value, thereby resulting in a plurality of input values for the function; cause the execution instance to evaluate the function based at least in part on the plurality of input values, thereby generating an output of the function; and provide the output of the function without revealing any of the plurality of input values for the function. 2. The system of claim 1 , wherein the execution instance corresponds to one or more secure execution environments instantiated on one or more host computer systems, wherein the secure execution environments are operable to compute the function. 3. The system of claim 1 , wherein the memory further includes instructions that cause the system to cause at least one respective input value of the plurality of input values to become inaccessible. 4. The system of claim 1 , wherein the set includes a web service application programming interface call whose fulfillment involves adding a function definition to a library of functions of a computing resource service provider. 5. A computer-implemented method, comprising: under the control of one or more computer systems that execute instructions, determining a function for use in multi-party computation service provided by a computing resource service provider; configuring an execution instance to evaluate the function, the execution instance comprising a set of execution environments each with code for at least partial evaluation of the function; providing, from the execution instance, an attestation of the function, the attestation comprising a cryptographic hash usable at least in part to validate integrity of the function; evaluating, via the execution instance, a plurality of input values to determine an output, the plurality of inputs comprising a first input from a first party and a second input from a second party; and providing the output determined. 6. The computer-implemented method of claim 5 , wherein evaluating the plurality of input values to determine an output and providing the determined output comprises: evaluating the function using a first set of input values to determine a first output; providing the first output; evaluating the function using a second set of input values to determine a second output; and providing the second output. 7. The computer-implemented method of claim 5 , wherein the method further comprises causing the plurality of input values to become inaccessible by terminating the one or more execution environments. 8. The computer-implemented method of claim 5 , wherein determining a function includes receiving an application programming interface call with information that defines the function. 9. The computer-implemented method of claim 5 , wherein the output further comprises an attestation that the plurality of input values have been made inaccessible. 10. The computer-implemented method of claim 5 , wherein the method further comprises: receiving an application programming interface call that defines a set of parameters for the execution instance; and configuring the execution instance in accordance with the set of parameters. 11. The computer-implemented method of claim 5 , wherein: each execution environment of the set of execution environments is a hardware-protected execution environment; and each input of the plurality of inputs is encrypted so as to be decryptable by a respective hardware-protected execution environment using a key unavailable outside of the respective hardware-protected execution environment. 12. The computer-implemented method of claim 5 , wherein: the one or more execution environments comprise a first hardware-protected execution environment and a second hardware-protected execution environment; the plurality of input values comprises a first set of input values and a second set of input values; the function is a composite of at least a first function and a second function; evaluating the function comprises: evaluating the first function in the first hardware-protected execution environment using the first set of input values to generate a first result; and evaluating the second function in the second hardware-protected execution environment using the second set of input values to generate a second result; and providing the output based at least in part on the result comprises providing the output based at least in part on the first result and the second result. 13. The computer-implemented method of claim 5 , wherein the plurality of input values comprise data from a data store and the function comprises one or more functions from a library that have been certified as usable to evaluate the data. 14. A non-transitory computer-readable storage medium having stored thereon executable instructions that, as a result of execution by one or more processors of a computer system, cause the computer system to at least: receive, through a service of a provider, a request specifying a function for a multi-party computation; provide an attestation of the function, the attestation comprising a cryptographic hash usable at least in part to validate integrity of the function; obtain a plurality of input values, the plurality of input values comprising a first input value from a first party and a second input value from a second party, wherein the system prevents the first party from accessing the second input value and prevents the second party from accessing the first input value; determine a result of the function based at least in part on the plurality of input values; cause the plurality of input values to become inaccessible; and provide the result of the function. 15. The non-transitory computer-readable storage medium of claim 14 , wherein the instructions that cause the computer system to receive the request specifying the function, further include executable instructions that cause the computer system to provide an application programming interface for selecting the function from a library of functions provided by the provider. 16. The non-transitory computer-readable storage medium of claim 14 , wherein the instructions that cause the computer system to receive the request specifying the function, further include executable instructions that cause the computer system to provide an application programming interface for receiving a function definition from a party of the one or more parties of the multi-party computation. 17. The non-transitory computer-readable storage medium of claim 14 , wherein the service is configurable to accept input values only from corresponding authorized parties, and an execution of the function is configurable to specify that: the first party is authorized to provide the first input value of the plurality of input values; and the second party is authorized to provide the second input value of the plurality of input values. 18. The non-transitory computer-readable storage medium of claim 14 , wherein the instructions that cause the computer system to provide the result of the function, further include instructions that cause t

Assignees

Inventors

Classifications

  • by executing in a restricted environment, e.g. sandbox or secure virtual machine · CPC title

  • Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities · CPC title

  • Secure multiparty computation, e.g. millionaire problem · CPC title

  • to a system of files or objects, e.g. local or distributed file system or database · CPC title

  • Providing cryptographic facilities or services · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9577829B1 cover?
A system and method of performing a multi-party computation by determining a function for use in the multi-party computation, receiving a plurality of input values for the function, evaluating the function based at least in part on the plurality of input values to generate a result wherein the result is not usable to determine an input of the plurality of input values, and providing an output b…
Who is the assignee on this patent?
Amazon Tech Inc
What technology area does this patent fall under?
Primary CPC classification G06F21/60. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Feb 21 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B1). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 12 related publications on this page (citations in our corpus or others sharing the same primary CPC).