Auditable and verifiable transparency software
The use of a trusted execution environment for secure auditing and remote attestation addresses the challenge of verifying that audited software matches deployed software, enhancing transparency and trust through verifiable measurements.
Patent Information
- Application Number
- PCT/CN2024/096690
- Authority / Receiving Office
- WO · WO
- Patent Type
- Applications
- Current Assignee / Owner
- Filing Date
- 2024-05-31
- Publication Date
- 2025-12-04
AI Technical Summary
Existing methods for ensuring software transparency, such as open sourcing code or third-party audits, do not guarantee that the audited code is the same as the deployed code, lacking verifiable measurements and integrity.
Utilizing a trusted execution environment (TEE) for secure auditing and remote attestation to generate reference and runtime measurements, ensuring the integrity of the auditing process and verifying that the deployed code matches the audited code.
Provides secure and trustworthy verification of deployed software by comparing reference and runtime measurements, ensuring the code used in production is the same as audited, enhancing transparency and trust without relying on trust relationships.
Smart Images

Figure CN2024096690_04122025_PF_FP_ABST
Abstract
Description
AUDITABLE AND VERIFIABLE TRANSPARENCY SOFTWAREBACKGROUND
[0001] This specification relates to computer software.
[0002] Computer software can be made available to various user devices. For example, users can download software applications from an application store to install and run on a user device such as a mobile device. To aid in the trust of the software, e.g., by users, government regulators, or the public generally, software providers may undertake attempts at software transparency. Software transparency relates to the ability of the public to evaluate the software in a way that promotes trustworthiness of the software, e.g., as being free of malicious or undisclosed code.SUMMARY
[0003] This specification describes technologies for providing auditable and verifiable software transparency. Transparency can be facilitated, for example, by open sourcing the software code to the public so that members of the public can review or audit the code. Another way to provide a level of transparency is to invite a third party auditor to evaluate the code and provide an endorsement of the trustworthiness of the software. However, these forms of transparency do not guarantee that the code made available to the auditor or an open source repository is the same code as is being deployed in production.
[0004] Specifically, this specification describes technologies for both ensuring the auditing process and results are secure and trustworthy and verifying that the audited code is the same as actually being deployed in production. A secure auditing process means that the integrity of the auditing process is not compromised. To provide the secure and trustworthy auditing and verification of deployed software, this specification describes the use of trusted execution environments to implement a system that provides an auditable and verifiable software transparency.
[0005] In general, one innovative aspect of the subject matter described in this specification can be embodied in methods that include the actions of performing a secure auditing of source code for particular software, the performing the secure auditing comprising securely compiling the source code and generating reference measurements from the resulting software artifacts; performing attestation of a deployed version of the software, the performing attestation comprising generating runtime measurements from the deployed version of the software; and validating the software including comparing the reference measurements with the runtime measurements. Other embodiments of this aspect include corresponding computer systems, apparatus, and computer programs recorded on one or more computer storage devices, each configured to perform the actions of the methods.
[0006] This specification uses the term “configured” in connection with systems, apparatus, and computer program components. For a system of one or more computers to be configured to perform particular operations or actions means that the system has installed on it software, firmware, hardware, or a combination of them that in operation cause the system to perform the operations or actions. For one or more computer programs to be configured to perform particular operations or actions means that the one or more programs include instructions that, when executed by data processing apparatus, cause the apparatus to perform the operations or actions. For special-purpose logic circuitry to be configured to perform particular operations or actions means that the circuitry has electronic logic that performs the operations or actions.
[0007] The subject matter described in this specification can be implemented in particular embodiments so as to realize one or more of the following advantages.
[0008] Conventional auditing often involves a written plain text report by an auditor that details, for example, the methodology for reviewing the source code. The report does not provide any verifiable measurements or other technical guarantees. By contrast, by computing reference measurements from the compiled software artifacts, the production version of the software can be validated by comparing computer runtime measurements with the reference measurements of the audited version. This improves software transparency by providing a way to validate the production software in a technical manner by comparing different measurements conducted on the software.
[0009] Trusted auditing using a trusted execution environment ensures that source code is auditable by third party auditors and that the integrity of the auditing process and results cannot be compromised. Similarly, a runtime attestation report by a remote attestation system can provide hardware-endorsed proof of the identity of the software being deployed and used in production. By comparing reference measurements and runtime measurements, the code used in the audit can be proved to be the same as the software deployed and used in production. This proof can be performed by public individuals without having a trust relationship with the software provider.
[0010] The details of one or more embodiments of the subject matter of this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will become apparent from the description, the drawings, and the claims.BRIEF DESCRIPTION OF THE DRAWINGS
[0011] FIGS. 1 is a block diagram of an example software transparency system.
[0012] FIG. 2 is a flow diagram of an example process for providing software transparency.
[0013] FIG. 3 is a flow diagram of an example process for performing trusted auditing.
[0014] FIG. 4 is a flow diagram of an example process for performing independent verification.
[0015] FIG. 5 is a block diagram of an example computing system.
[0016] Like reference numbers and designations in the various drawings indicate like elements.DETAILED DESCRIPTION
[0017] A software transparency system described in this specification contains three components: trusted auditing, remote attestation, and independent verification. Trusted auditing provides a secure environment for auditors to review the source code. In particular a trusted execution environment (TEE) can be used to ensure the integrity of the code building process whether from private code or open source code. Auditors can endorse and sign reference measurements of the built, i.e., compiled, software and publish the results to the public.
[0018] Remote attestation is a process carried out on deployed code on secure hardware, e.g., a separate TEE. The remote attestation computes non-forgeable runtime measurements endorsed by the TEE hardware, which can be used for verification.
[0019] The independent verification allows individual members of the public to retrieve and compare the endorsed reference measurements from the auditor and the runtime measurements issued from the remote attestation. If the two are consistent, it indicates that the code that was audited is the same as the code that is deployed in production.
[0020] FIG. 1 is a block diagram of an example software transparency system 100. The system 100 includes trusted auditing 102, remote attestation 104, and independent verification 106.
[0021] The trusted auditing 102 can represent a virtual environment in which an independent third party auditor can review particular source code. In one example, the source code corresponds to an application that, when deployed, is made available for individual users to download and execute on their individual devices, e.g., a mobile application downloaded to a mobile phone or tablet.
[0022] The auditor 103 can use a virtual transparency clean room 108 to perform code evaluations. For example, the auditor can audit source code itself as obtained from a source code repository 110. For example, the auditor can compare the internal source code with an open sourced version of the code to ensure that they are consistent. The auditor 103 can also evaluate compiled artifacts 114 and corresponding measurements 116 in response to building the code.
[0023] Within the virtual environment, different building pipelines 120 can be implemented within a TEE 118. For example, in some implementations, the software building, or compiling, is based on internal source code from the source code repository 110. In some other implementations, the software building is based on open source code from an open source repository 112. The TEE 118 is a hardware security solution in which a secure area of a processor executes specific code. The hardware isolates the executable code so that it cannot be accessed by unauthorized entities. Additionally, the code being run can be cryptographically verified to ensure that the code in the secure execution stage corresponds to the expected code.
[0024] Using the TEE 118 ensures that the integrity of the software building pipeline is guaranteed by secure hardware and that the secure hardware will provide evidence to the auditor that the integrity of the building pipeline is not compromised. The build process compiles the source code, whether open-source or internal, into artifacts 114. Artifacts describe compiled files and / or executables that correspond to a deployable version of the software. In other words, the artifacts represent the software files after compiling and before they are launched at runtime.
[0025] In response to the auditing, the auditor can publish auditor endorsements 120, which include a public report that contains reference measurements computed from the compiled artifacts. In some implementations, the reference measurements correspond to a one or more hash values generated from the compiled software artifacts, e.g., by applying a corresponding hash function to particular file data. For example, there can be a hash value for each software file or a hash value generated from multiple or all software files. The auditor publishes the reference measurements, which can then be obtained by the public for use in the independent verification described below.
[0026] During remote attestation 104, a copy of the software as deployed 122 is evaluated using trusted hardware 124, e.g., a TEE. The received software can be a collection of compiled files. These compiled files should, if the software is the same, correspond to the artifacts generated during the build process in the trusted auditing 102. The trusted hardware 124 can generate runtime measurements from executing the software. The remote attestation service can generate an signed remote attestation report 126 that contains the runtime measurements. The runtime measurements can correspond to the result of applying one or more hash functions to respective portions, or the entirety, of the software files and the signature is a signature of the trusted hardware vendor or manufacturer.
[0027] During independent verification 106, individuals 128 can obtain auditing information and attestation information for comparison. For example, an individual can obtain the reference measurements 120 from the auditor and the runtime measurements 126 endorsed by the remote attestation 104. In some implementations, the software provider can provide the third party attestation report with the included runtime measurement. In some other implementations, the third party attestation report can be provided by the third party.
[0028] Since both measurements purport to represent a unique identifier for the software, if the measurements match the software evaluated by the auditor and the deployed software as evaluated by the remote attestation should be identical. For example, the reference measurement may be a hash of the software build artifacts and the runtime measurements may be a hash of the deployed software files. If the measurements do not match, then the software deployed is not the same as evaluated by the auditor and / or as open-sourced. This can indicate that there may be some functions in the deployed version that have not been disclosed to the public.
[0029] The individual 128 can perform additional evaluation to validate the measurements as being authentic. For example, before comparing the measurement values, signatures can first be validated. For example, the cryptographic signature of the reference measurement can be compared to a certificate of the auditor. Similarly, a cryptographic signature of the runtime measurements in the attestation report can be compared to a certificate of the trusted computing environment. An attestation verifier 130 can be associated with the TEE hardware used by the attestation service and capable of providing validation of the attestation report 126.
[0030] The independent verification allows individuals to verify the deployed software without having to trust the software provider.
[0031] FIG. 2 is a flow diagram of an example process 200 for providing software transparency. For convenience, the process 200 will be described as being performed by a system of one or more computers, located in one or more locations, and programmed appropriately in accordance with this specification. For example, a software transparency system, e.g., the software transparency system 100 of FIG. 1, appropriately programmed, can perform the process 200.
[0032] The system facilitates software auditing (202) . In particular, an auditor can perform trusted auditing of the software. As described above, this can include auditing the code as well as using a trusted execution environment to build software artifacts and compute reference measurements from the software artifacts.
[0033] The system performs attestation of the deployed software (204) . The attestation can be performed, for example, by the remote attestation system 104 of FIG. 1.
[0034] The system verifies deployed software as consistent with audited software (206) . The verification includes a comparison of measurements generated during the software auditing and runtime measurements generated during the remote attestation.
[0035] FIG. 3 is a flow diagram 300 of an example process for performing trusted auditing. For convenience, the process 300 will be described as being performed by a system of one or more computers, located in one or more locations, and programmed appropriately in accordance with this specification. For example, a software transparency system, e.g., the software transparency system 100 of FIG. 1, appropriately programmed, can perform the process 300.
[0036] In particular, process 300 can be performed by an auditor as part of a secure auditing process. The auditor can provide instructions for system components to perform different operations of the auditing process.
[0037] The system performs auditing of source code (302) . The system can make the source code available to the auditor to perform review or analysis according to various methodologies. For example, the auditor can execute one or more analysis applications to evaluate the source code.
[0038] In some optional implementations, there is also an open source version of the source code. The system can obtain the open source version and perform a comparison of the source code and the open source code to confirm that they match (304) . Not all internal source code needs to be available as open source, so this step is not necessarily performed as part of the auditing process and is dependent upon the particular software being evaluated
[0039] The system builds software artifacts and generates reference measurements (306) . Secure hardware, such as a trusted execution environment, can be used to build the source code to generate compiled artifacts of the software. In some implementations, the reference measurements correspond to a hash of the artifacts, e.g., representing a unique identifier of the compiled software.
[0040] FIG. 4 is a flow diagram of an example process 400 for performing independent verification. For convenience, the process 400 will be described as being performed by a system of one or more computers, located in one or more locations, and programmed appropriately in accordance with this specification. For example, a software transparency system, e.g., the software transparency system 100 of FIG. 1, appropriately programmed, can perform the process 400.
[0041] In particular, process 400 can be performed by an individual user or member of the public as part of an independent verification process. The user can provide instructions for system components to perform different operations of the verification process.
[0042] The system obtains reference measurements from the auditor (402) . The obtained reference measurements can be obtained electronically, e.g., by requesting the reference measurements for the particular software from a website associated with the auditor. The reference measurements correspond to a measure representing the compiled software e.g., a unique value representing the identity of the software as a whole. The reference measurement can be, for example, a hash value generated from the compiled software artifacts. The reference measurements include a signature or other cryptographic identifier of the auditor.
[0043] The system obtains runtime measurements from an attestation system (404) . The runtime measurements correspond to results of an attestation process that evaluates a deployed version of the software and can be performed within a trusted execution environment. The runtime measurements correspond to a measure representing the compiled software, e.g., a unique value representing the identity of the software as a whole. The reference measurement can be, for example, a hash value generated from the deployed software files. The reference measurements include a signature or other cryptographic identifier of the attestation system.
[0044] The system validates obtained measurements (406) . The validation can include performing an authentication of the obtained measurements. For example, the cryptographic signature of the reference measurement can be compared to a certificate of the auditor. Similarly, a cryptographic signature of the runtime measurements in the attestation report can be compared to a certificate of the trusted computing environment.
[0045] The system compares the values of the measurements (408) . Since the deployed software should be identical to the compiled build of the source code evaluated by the auditor, the measurements obtained by the auditor and the attestation system should match. For example, the hash of the compiled software files should be the same.
[0046] The system determines verification of the software based on the comparison (410) . If the measurements match, the deployed software is verified as being the same as the software generated from the audited source code. Additionally, if opened source, the verification indicates that the open source code corresponds to the software as deployed. If the measurements do not match, it is an indication that the deployed software is modified from the software as evaluated by the auditor. It does not necessarily mean the deployed software is malicious, but simply that the deployed software is different from what was audited. This may indicate that the software should not be trusted.
[0047] Consequently, using the described combination of secure auditing and remote attestation, trust of each individual operation as executed in trusted hardware ensures that the evaluation is valid. Furthermore, by validating the results generated by the auditor the attestation service provides additional trust and transparency by proving that the software in production corresponds to the software that was audited.
[0048] FIG. 5 is a block diagram of a schematic diagram of an example computing system 500. The system 500 can be used for the operations described in association with the implementations described herein. For example, the system 500 may be included in any or all of the components of the content delivery system or video processing systems discussed in this specification. The system 500 includes a processor 510, a memory 520, a storage device 530, and an input / output device 540. The components 510, 520, 530, and 540 are interconnected using a system bus 550. The processor 510 is capable of processing instructions for execution within the system 500. In some implementations, the processor 510 is a single-threaded processor. The processor 510 is a multi-threaded processor. The processor 510 is capable of processing instructions stored in the memory 520 or on the storage device 530 to display graphical information for a user interface on the input / output device 540.
[0049] The memory 520 stores information within the system 500. In some implementations, the memory 520 is a computer-readable medium. The memory 520 can be a volatile memory unit or a non-volatile memory unit. The storage device 530 is capable of providing mass storage for the system 500. The storage device 530 is a computer-readable medium. The storage device 530 may be a floppy disk device, a hard disk device, an optical disk device, or a tape device. The input / output device 540 provides input / output operations for the system 500. The input / output device 540 includes a keyboard and / or pointing device. The input / output device 540 includes a display unit for displaying graphical user interfaces.
[0050] In this specification, the term “database” will be used broadly to refer to any collection of data: the data does not need to be structured in any particular way, or structured at all, and it can be stored on storage devices in one or more locations. Thus, for example, the index database can include multiple collections of data, each of which may be organized and accessed differently.
[0051] Similarly, in this specification the term “engine” will be used broadly to refer to a software-based system, subsystem, or process that is programmed to perform one or more specific functions. Generally, an engine will be implemented as one or more software modules or components, installed on one or more computers in one or more locations. In some cases, one or more computers will be dedicated to a particular engine; in other cases, multiple engines can be installed and running on the same computer or computers.
[0052] Embodiments of the subject matter and the actions and operations described in this specification can be implemented in digital electronic circuitry, in tangibly-embodied computer software or firmware, in computer hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Embodiments of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions encoded on a tangible non-transitory storage medium for execution by, or to control the operation of, data processing apparatus. Alternatively or in addition, the program instructions can be encoded on an artificially-generated propagated signal, e.g., a machine-generated electrical, optical, or electromagnetic signal, that is generated to encode information for transmission to suitable receiver apparatus for execution by a data processing apparatus. The computer storage medium can be or be part of a machine- readable storage device, a machine-readable storage substrate, a random or serial access memory device, or a combination of one or more of them. A computer storage medium is not a propagated signal.
[0053] The term “data processing apparatus” encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, or multiple processors or computers. Data processing apparatus can include special-purpose logic circuitry, e.g., an FPGA (field programmable gate array) , an ASIC (application-specific integrated circuit) , or a GPU (graphics processing unit) . The apparatus can also include, in addition to hardware, code that creates an execution environment for computer programs, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, or a combination of one or more of them.
[0054] A computer program, which may also be referred to or described as a program, software, a software application, an app, a module, a software module, an engine, a script, or code, can be written in any form of programming language, including compiled or interpreted languages, or declarative or procedural languages; and it can be deployed in any form, including as a stand-alone program or as a module, component, engine, subroutine, or other unit suitable for executing in a computing environment, which environment may include one or more computers interconnected by a data communication network in one or more locations.
[0055] A computer program may, but need not, correspond to a file in a file system. A computer program can be stored in a portion of a file that holds other programs or data, e.g., one or more scripts stored in a markup language document, in a single file dedicated to the program in question, or in multiple coordinated files, e.g., files that store one or more modules, sub-programs, or portions of code.
[0056] The processes and logic flows described in this specification can be performed by one or more computers executing one or more computer programs to perform operations by operating on input data and generating output. The processes and logic flows can also be performed by special-purpose logic circuitry, e.g., an FPGA, an ASIC, or a GPU, or by a combination of special-purpose logic circuitry and one or more programmed computers.
[0057] Computers suitable for the execution of a computer program can be based on general or special-purpose microprocessors or both, or any other kind of central processing unit. Generally, a central processing unit will receive instructions and data from a read-only memory or a random access memory or both. The essential elements of a computer are a central processing unit for executing instructions and one or more memory devices for storing instructions and data. The central processing unit and the memory can be supplemented by, or incorporated in, special-purpose logic circuitry.
[0058] Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to one or more mass storage devices. The mass storage devices can be, for example, magnetic, magneto-optical, or optical disks, or solid state drives. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA) , a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device, e.g., a universal serial bus (USB) flash drive, to name just a few.
[0059] To provide for interaction with a user, embodiments of the subject matter described in this specification can be implemented on, or configured to communicate with, a computer having a display device, e.g., a LCD (liquid crystal display) monitor, for displaying information to the user, and an input device by which the user can provide input to the computer, e.g., a keyboard and a pointing device, e.g., a mouse, a trackball or touchpad. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user’s device in response to requests received from the web browser, or by interacting with an app running on a user device, e.g., a smartphone or electronic tablet. Also, a computer can interact with a user by sending text messages or other forms of message to a personal device, e.g., a smartphone that is running a messaging application, and receiving responsive messages from the user in return.
[0060] Embodiments of the subject matter described in this specification can be implemented in a computing system that includes a back-end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front-end component, e.g., a client computer having a graphical user interface, a web browser, or an app through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back-end, middleware, or front-end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (LAN) and a wide area network (WAN) , e.g., the Internet.
[0061] The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some embodiments, a server transmits data, e.g., an HTML page, to a user device, e.g., for purposes of displaying data to and receiving user input from a user interacting with the device, which acts as a client. Data generated at the user device, e.g., a result of the user interaction, can be received at the server from the device.
[0062] In addition to the embodiments of the attached claims and the embodiments described above, the following numbered embodiments are also innovative:
[0063] Embodiment 1 is a method, the method comprising: performing a secure auditing of source code for particular software, the performing the secure auditing comprising securely compiling the source code and generating reference measurements from the resulting software artifacts; performing attestation of a deployed version of the software, the performing attestation comprising generating runtime measurements from the deployed version of the software; and validating the software including comparing the reference measurements with the runtime measurements.
[0064] Embodiment 2 is the method of embodiment 1, wherein performing the secure auditing comprises auditing the source code directly and prior to compiling.
[0065] Embodiment 3 is the method of any one of embodiments 1 through 2, wherein the secure auditing further comprising: comparing the source code with an open source version of the source code.
[0066] Embodiment 4 is the method of any one of embodiments 1 through 3, wherein the secure compiling is performed on secure hardware of a trusted execution environment.
[0067] Embodiment 5 is the method of any one of embodiments 1 through 4, wherein the reference measurements comprise one or more hash values derived from the software artifacts.
[0068] Embodiment 6 is the method of any one of embodiments 1 through 5, wherein the attestation is performed on secure hardware of a trusted execution environment, and wherein the runtime measurements comprise one or more hash values derived from the files of the deployed software.
[0069] Embodiment 7 is the method of any one of embodiments 1 through 6, wherein the validation further comprises: obtaining the reference measurements from the a system associated with the auditor; obtaining the runtime measurements from the remote attestation system; and performing a verification of the reference measurements and the runtime measurements based on cryptographic signatures associated with the respective measurements.
[0070] Embodiment 8 is the method of any one of embodiments 1 through 7, wherein in response to the comparison indicating the reference measurements and the runtime measurements match, determining that the deployed version of the software is consistent with the audited source code.
[0071] Embodiment 9 is a system comprising: one or more computers and one or more storage devices storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform the method of any one of embodiments 1 to 8.
[0072] Embodiment 10 is a computer storage medium encoded with a computer program, the program comprising instructions that are operable, when executed by data processing apparatus, to cause the data processing apparatus to perform the method of any one of embodiments 1 to 8.
[0073] While this specification contains many specific implementation details, these should not be construed as limitations on the scope of any invention or on the scope of what is being or may be claimed, but rather as descriptions of features that may be specific to particular embodiments of particular inventions. Certain features that are described in this specification in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Moreover, although features may be described above as acting in certain combinations and even initially be claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claim may be directed to a subcombination or variation of a subcombination.
[0074] Similarly, while operations are depicted in the drawings and recited in the claims in a particular order, this should not be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of various system modules and components in the embodiments described above should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrated together in a single software product or packaged into multiple software products.
[0075] Particular embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. For example, the actions recited in the claims can be performed in a different order and still achieve desirable results. As one example, the processes depicted in the accompanying figures do not necessarily require the particular order shown, or sequential order, to achieve desirable results.In some cases, multitasking and parallel processing may be advantageous.
Claims
1.A method comprising:performing a secure auditing of source code for particular software, the performing the secure auditing comprising securely compiling the source code and generating reference measurements from the resulting software artifacts;performing attestation of a deployed version of the software, the performing attestation comprising generating runtime measurements from the deployed version of the software; andvalidating the software including comparing the reference measurements with the runtime measurements.2.The method of claim 1, wherein performing the secure auditing comprises auditing the source code directly and prior to compiling.3.The method of claim 2, wherein the secure auditing further comprising:comparing the source code with an open source version of the source code.4.The method of claim 1, wherein the secure compiling is performed on secure hardware of a trusted execution environment.5.The method of claim 1, wherein the reference measurements comprise one or more hash values derived from the software artifacts.6.The method of claim 1, wherein the attestation is performed on secure hardware of a trusted execution environment, and wherein the runtime measurements comprise one or more hash values derived from the files of the deployed software.7.The method of claim 1, wherein the validation further comprises:obtaining the reference measurements from the a system associated with the auditor;obtaining the runtime measurements from the remote attestation system; andperforming a verification of the reference measurements and the runtime measurements based on cryptographic signatures associated with the respective measurements.8.The method of claim 1, wherein in response to the comparison indicating the reference measurements and the runtime measurements match, determining that the deployed version of the software is consistent with the audited source code.9.A system comprising:one or more computers and one or more storage devices on which are stored instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising:performing a secure auditing of source code for particular software, the performing the secure auditing comprising securely compiling the source code and generating reference measurements from the resulting software artifacts;performing attestation of a deployed version of the software, the performing attestation comprising generating runtime measurements from the deployed version of the software; andvalidating the software including comparing the reference measurements with the runtime measurements.10.The system of claim 9, wherein performing the secure auditing comprises auditing the source code directly and prior to compiling.11.The system of claim 10, wherein the secure auditing further comprising:comparing the source code with an open source version of the source code.12.The system of claim 9, wherein the secure compiling is performed on secure hardware of a trusted execution environment.13.The system of claim 9, wherein the reference measurements comprise one or more hash values derived from the software artifacts.14.The system of claim 9, wherein the attestation is performed on secure hardware of a trusted execution environment, and wherein the runtime measurements comprise one or more hash values derived from the files of the deployed software.15.The system of claim 9, wherein the validation further comprises:obtaining the reference measurements from the a system associated with the auditor;obtaining the runtime measurements from the remote attestation system; andperforming a verification of the reference measurements and the runtime measurements based on cryptographic signatures associated with the respective measurements.16.The system of claim 9, wherein in response to the comparison indicating the reference measurements and the runtime measurements match, determining that the deployed version of the software is consistent with the audited source code.17.One or more computer-readable storage media encoded with instructions that, when executed by one or more computers, cause the one or more computers to perform operations comprising:performing a secure auditing of source code for particular software, the performing the secure auditing comprising securely compiling the source code and generating reference measurements from the resulting software artifacts;performing attestation of a deployed version of the software, the performing attestation comprising generating runtime measurements from the deployed version of the software; andvalidating the software including comparing the reference measurements with the runtime measurements.18.The computer-readable storage media of claim 17, wherein performing the secure auditing comprises auditing the source code directly and prior to compiling.19.The computer-readable storage media of claim 18, wherein the secure auditing further comprising:comparing the source code with an open source version of the source code.20.The computer-readable storage media of claim 17, wherein the secure compiling is performed on secure hardware of a trusted execution environment.