In some Internet of Things (IoT) and edge computing environments, numerous devices interoperate to perform various operations, such as manufacturing, data collection, and workflow processing. In such settings, it is desirable to remotely appraise the integrity of these devices to ensure they will perform their tasks correctly.
One method of integrity verification is the use of remote attestation protocols, which request evidence of a running system's configuration linked to a device identity.
Various features of the present disclosure will be apparent from the detailed description which follows, taken in conjunction with the accompanying drawings, which together illustrate features of the present disclosure, and wherein:
In the following description, for purposes of explanation, numerous specific details of certain examples are set forth. Reference in the specification to “an example” or similar language means that a particular feature, structure, or characteristic described in connection with the example is included in at least that one example, but not necessarily in other examples.
Remote verification of a device's integrity is useful for understanding whether a remote device will behave as expected. Trusted computing hardware may enable a protocol, called remote attestation, for allowing a device to “attest” to its software configuration. Such trusted computing hardware may provide the capabilities for reliably and verifiably presenting evidence to be used to establish trust in the device.
Remote attestation is a mechanism to allow a remote device to determine over a network and without direct access to an attestor device whether the attestor device can be trusted to operate according to certain desired parameters. For example, a publisher may use remote attestation to identify unauthorized changes to software executing on the device, for example to circumvent licensing or copyright protection measures incorporated into the software. The determination may be based on integrity measurements of software components as they are loaded as software instances on the attestor.
The attestation itself may take the form of a signed statement, or “Quote.” This is a set of configuration data and a value for freshness signed by a key tied to the platform's identity and a mechanism trusted for producing the values. As a result, protocols that use this structure may follow a challenge-response pattern. For example, a verifier sends the attestor a randomly generated value, called a nonce. The attestor then takes its measurements of the configuration and returns to the verifier its measurements and a signature on both the measurements and the received nonce. If the nonce is fresh and the measurements are signed by the expected device, then the verifier can make a trust decision based on the contents of the measurements.
Attestation techniques may be applied to settings where there are multiple, lightweight devices (for example, in a factory environment or an IoT setting). These devices may have limited computational and memory capabilities, which can lead to scalability issues.
An attestation protocol may be performed between two parties, an attestor device and a verifier device to allow the verifier device to verify one or more aspects of operation of the attestor device. An example attestation protocol may include the verifying device generating a random number, or nonce, and providing the nonce to the attestor device as part of a request to provide relevant measurements of the operation of the attestor device.
In response to receiving the nonce, the attestor device collects the relevant integrity measurements from its system and generates a digital signature based on both the measurement values and the received nonce. The digital signature may be produced using an asymmetric cryptographic scheme based on a private signing key of a public-private cryptographic key pair associated with the attestor device. The attestor then sends the measurements and the signature to the verifier device.
The verifier device is then able to authenticate the origin of the received measurements using the public key of the public-private key pair associated with the attestor device and the signature. Furthermore, freshness of the measurements is assured by checking that the nonce provided by the verifier device was used to generate the signature. The verifier can then make a trust decision based on the authenticated measurements.
The above described attestation protocol can be considered to comprise the following procedure, with the verifier V, the attestor P, and skp/pkp, the asymmetric secret and public key pair of P trusted by V:
Attestation protocols may leverage a hardware root of trust (RoT) to record and authenticate the attested properties. In particular, a hardware security module, such as a trusted platform module (TPM), may be provided at the attestor device to measure aspects of the attestor device operation and generate the signature.
Attestation protocols that operate in line with the above description provide a simple and effective mechanism for remote attestation between one attestor and one verifier. However, this approach may not scale well as the number of verifier devices rises, as each verifier device would provide a nonce value to be used to generate a signature value for the measurements that is unique to that verifier device. Thus, each request from a verifier device results in a separate iteration of the above described attestation protocol.
Each run of an attestation protocol consumes resources, such as power or CPU cycles. Furthermore, hardware security modules such as provided by a TPM or a smart card may often be provided with limited processing capabilities and therefore executing multiple iterations of the attestation protocol may take significant time. Thus, for a lightweight device wishing to attest its operation to multiple different verifiers, participating in multiple attestation protocols may not be practical, given the computational complexity, bandwidth and power requirements involved.
One approach to provide an efficient method of providing attestation measurements to multiple verifiers is to use a trusted agent on the attestor to communicate the requested measurements over a trusted and authenticated channel with the verifiers. However, generating the trusted channel may itself be based on the verifiers determining whether to trust the trusted agent through operation of an attestation protocol as described above.
Certain examples described herein provide methods and devices to allow multiple verifiers to simultaneously appraise a single attestor device in a scalable fashion. This is achieved through use of a group nonce value generated from inputs by each of the verifiers taking part in an attestation protocol that keeps the complexity for the attestor down to that of an attestation protocol with a single verifier.
Considering a scenario in which n verifiers wish to appraise a single device through remote attestation. As discussed above, having the device participate in n runs of the attestation protocol, once with each verifier (O(n) complexity on the attestor), may be impractical for very large n for example a web server responding to a large number of client requests, and/or for lightweight devices, such as for example an IoT device in an edge compute environment. The energy expended to receive n nonces, to compute n signatures and then send n copies of the integrity measurements and all signatures will incur timing delays and constant energy consumption. Moreover, these protocols may rely on a hardware secure key management solution, which may be performance limited due to cost concerns.
Assuming a set of n verifiers V1, . . . , V7who all want to appraise a single, lightweight device (the attestor) P, and assuming the verifiers have a (signature verification) public key for the device P. When appraising the device, the verifiers each want to know two things:
The verifiers are given assurance that the measurements were generated by P by the use of a signature (which provides authenticity on the measurements) and by knowledge the signing key on the attestor device will only be used to sign measurements generated by the device. While freshness of the measurements may be determined by using a fresh nonce: the verifier sends a nonce, which the device signs along with the measurements, to show the signature and measurements were generated recently and not replayed.
Now, naively, to attest to all n verifiers, the device could participate in n attestation protocols with each verifier and each verifier would then be satisfied. However, it may be impractical for the device to do this due to resource constraints. Instead, according to examples of the disclosure, a method is provided for the attestor device to participate in one attestation protocol, whilst satisfying each verifier simultaneously.
Each verifier wants to individually verify the freshness of the received measurements to avoid replay attacks, and they each do this by inserting their own nonce into the protocol. If the nonce used to generate the signature were to be generated by a different verifier, other verifiers may not trust that the nonce was recently randomly generated. For example, a malicious verifier in charge of generating nonces on behalf of the group of n verifiers may corrupt the device and then send old nonces, replaying past measurements and signatures.
To address this, a single nonce is generated for the attestor device to sign, which allows all verifiers to be satisfied that their input is included in the single nonce. The single, or group nonce, is generated collaboratively by the verifiers such that:
Each verifier computes 208 the same group nonce value by applying a predetermined deterministic function to the random values r1, r2, and r3. This could be any deterministic function dependent on the random values received: nonce=ƒ(r1, . . . , rn). For example, nonce:=Hash(r1∥ . . . ∥rn) or nonce:=KDF(r1∥ . . . ∥rn). The first verifier device 102a then transmits the group nonce 210 to the attestor device 114, for example as part of an attestation protocol request. In some examples, the group nonce may be transmitted by any number of verifier devices. Alternatively, a third party may be responsible for computing the group nonce dependent on the random nonce values provided by the verifier devices.
In response to the group nonce, the attestor device 114 generates a cryptographic signature for measurements as discussed above using the group nonce. The measurements and signature are then transmitted 212 to each of the verifier devices. Each verifier device is then able to verify 214 the measurements by verifying that the signature has been generated using the expected private key and using the group nonce value that was calculated by the verifier device.
Thus, the attestor 114 is able to generate a single set of measurements and a single signature value that each of the n verifiers are able to determine to be fresh using the group nonce value.
The method 200 illustrated in
However, depending on the predetermined deterministic function ƒ (defined in Step 3), a dishonest verifier device could compute their nonce based on the other verifiers' random values in such a way as to compromise the uniqueness of the generated nonce. One option to address this issue is to select a collision resistant function, such as a cryptographic hash function or a key derivation function (KDF), to be used as the predetermined deterministic function ƒ.
A further approach to limit the ability of a dishonest verifier device to compromise the generation of the group nonce is for each verifier to transmit a commitment value Cr prior to broadcasting the random values r. The commitment value allows other verifier devices to cryptographically verify that the transmitting device has not changed its random value r after receiving the random values transmitted by other verifier devices.
Once the commitment values have been received by the verifying devices, the method 300 proceeds similar to method 200 with first verifier device 102a transmitting 302 the random value r1 to V2 102b and V3 102c, second verifier device 102b transmitting 304 the random value r2 to V1 102a and V3 102c and third verifier device 102c transmitting 306 the random value r3 to V1 102a and V2 102b. Following this exchange, each verifier has knowledge of the random values and commitment values generated by each of the other verifier devices participating in the group attestation protocol.
Each verifier device validates each of the received random values based on the corresponding commitment value and then computes 308 the same group nonce value by applying a predetermined deterministic function to the random values r1, r2, and r3. This could be any deterministic function dependent on the random values received: nonce=ƒ(r1, . . . , rn). For example, nonce:=Hash(r1∥ . . . ∥rn), or nonce:=KDF(r1∥ . . . ∥rn). The first verifier device 102a then transmits 310 the group nonce to the attestor device 114, for example as part of an attestation protocol request. In some examples, the group nonce may be transmitted by any number of verifier devices. Alternatively, a third party may be responsible for computing the group nonce dependent on the random nonce values provided by the verifier devices.
In response to the group nonce, the attestor device 114 generates a cryptographic signature for measurements as discussed above using the group nonce. The measurements and signature are then transmitted 312 to each of the verifier devices. Each verifier device is then able to verify 314 the measurements by verifying that the signature has been generated using the expected private key and using the group nonce value that was calculated by the verifier device.
While the methods of
According to an example, a cryptographic accumulator may be used to generate the group nonce value from the random values generated by the verifier devices.
Cryptographic accumulators represent multiple values (called members). Witness values can be computed by an accumulator holder as a proof that a value is a member of the accumulator. Dynamic accumulators can be based on RSA (e.g. Camenisch-Lysyanskaya accumulator [3]), hash constructions (e.g. Strong accumulators from Collision-Resistant Hashing [4], Merkle trees . . . ), etc. Some schemes rely on trust in the accumulator holder, while others do not. Examples may be implemented using either type of scheme depending on the requirements of the environment and scenario.
The accumulator manager 418 updates a cryptographic accumulator value based on each of the received random values and calculates a witness value wn corresponding to each random value. The final value of the cryptographic accumulator then forms a group nonce value to be used in an attestation protocol exchange with an attestor device 114.
The accumulator manager 418 then transmits 410 the group nonce to the attestor device 114, for example as part of an attestation protocol request. In response to the group nonce, the attestor device 114 generates a cryptographic signature for measurements as discussed above using the group nonce. The measurements and signature are then transmitted 412 to accumulator manager 418. Accumulator manager 418 then sends 416 the measurements and signature to each of the verifier devices 102a, 102b, 102c. Accumulator manager 418 further provides a witness value to each verifier device corresponding to the random number value provide by that verifier.
Each verifier device is then able to verify 414 the measurements by verifying that the signature has been generated using the expected private key and using the witness value to validate that the group nonce value was generated based on the random value provided by the verifier device.
The method 400 of
The attestation protocol of method 400 illustrated in
To further illustrate the method 400 of
While factorising a product of prime numbers is computationally difficult, determining that a prime number is a factor of the product may be achieved relatively easily. Therefore, the witness value wi of ei for acc is acc and to verify that ei belongs to acc, we verify that ei divides acc.
Using this example accumulator scheme, the method of
Attestor device 114 generates sig :=Sigskp(Hash(acc∥(measurements)) and transmits sig to verifier devices V1, . . . , Vn. The sig may be transmitted via the accumulator manager 418 or direct to the verifier devices. Accumulator manager 418 further provides the accumulator value acc to the verifier devices.
Each verifier device, V1, . . . , Vn, verifies the received sig with a public key corresponding to attestor device 114, pkp, and further verifies that acc was used in sig and that the random prime number, ei, generated by the verifier device divides acc. Following successful verification of the signature, the verifier device 102a is then able to determine whether to trust the attestor device 114 based on the measurements.
The use of a cryptographic accumulator to generate the group nonce value allows a significant proportion of the computation to implement the method 400 to be performed by an untrusted third party. For example, a more computationally powerful device such as a cloud or edge server could be used. This may be particularly advantageous when implementing a group attestation protocol for large numbers of lightweight devices such as IoT devices or edge devices, for example a printing device or 3D printer.
The disclosed methods provide an attestation protocol that allows a single attestor device to provide signed measurements to multiple verifier devices with the same computational requirements on the attestor device as for a single verifier device, i.e. O(1) (instead of O(n)) computational complexity on the attestor device as a function of the number of verifiers n.
The verifier device 102a then receives 506 a message from a remote, attestor, device including a signature based on a second nonce vale. The message may further comprise measurements of the internal state of the attestor device. The verifier device 102a determines 508 whether the second nonce value was generated based on the first nonce value provided by the verifier device, for example, based on a witness value. If the second nonce value is determined to have been generated based on the first nonce value, the verifier device then verifies 510 the signature based on the second nonce and on a public key associated with the attestor device.
The verifier device may then determine whether the attestor device is to be trusted based on the successful verification of the cryptographic signature and the contents of the received message.
In examples, the method 500 may comprise the verifier device 102a broadcasting the first nonce value to a plurality of verifying devices, receiving a plurality of third nonce values from the plurality of verifying devices, generating a fourth nonce value based on the plurality of third nonce values and the first nonce value and determining that the second nonce value was generated based on the first nonce value by determining that the second nonce value and the fourth nonce value are the same.
In examples, the method 500 may further comprise transmitting a request for measurements of the configuration of the remote, attestor, device to the remote device including the fourth nonce value. Generating the fourth nonce value from the plurality of third nonce values and the first nonce value may comprise using a collision resistant cryptographic function.
In examples, the method 500 may further comprise generating a first commitment value based on the first nonce value, broadcasting the first commitment value to the plurality of verifying devices; and receiving a plurality of second commitment values from the plurality of verifying devices, each second commitment value based on one of the third nonce values; subsequent to receiving the commitment values, broadcasting the first nonce value to a plurality of verifying devices, and receiving a plurality of third nonce values from the plurality of verifying devices, and the method further comprising verifying the second commitment values based on the received third nonce values.
In examples, the method 500 may further comprise transmitting the first nonce value to an accumulator manager and receiving the message from the remote device via the accumulator manager. The method 500 may further comprise receiving the second nonce value from the accumulator manager, receiving a witness value from the accumulator manager, and wherein determining that the second nonce value was generated based on the first nonce value further comprises verifying that the second nonce was generated based on the first nonce based on the witness value.
In response to the verification request, the accumulator manager 418 receives cryptographically signed integrity measurements from the attestor device 114 and forwards 608 the measurement results and associated signature to the verifier devices 102a, 102b, 102c.
In some examples, the accumulator manager functionality may be performed one of the verifier devices 102a, 102b, 102c, or by attestor device 114. The method may further comprise, for each of the plurality of verifier devices 102a, 102b, 102c, generating a witness value based on the second nonce value and the first nonce value received from that verifier device, and providing the second nonce value and the witness value to the verifier device.
Certain methods and systems as described herein may be implemented by a processor that processes program code that is retrieved from a non-transitory storage medium.
Processors suitable for the execution of computer program code include, by way of example, both general and special purpose microprocessors, application specific integrated circuits (ASIC) or field programmable gate arrays (FPGA) operable to retrieve and act on instructions and/or data from the computer readable storage medium 730.
The computer-readable media 730 can be any media that can contain, store, or maintain programs and data for use by or in connection with an instruction execution system. Computer-readable media can comprise any one of many physical media such as, for example, electronic, magnetic, optical, electromagnetic, or semiconductor media. More specific examples of suitable machine-readable media include, but are not limited to, a hard drive, a random-access memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory, or a portable disc.
In
In response to determining that the challenge value was generated based on the random number and successfully verifying the cryptographic signature, the code may further cause the computing device to determine whether the remote device can be trusted based on the integrity measurements.
In other examples, computer-readable storage medium 730 may comprise program code to perform any of the methods illustrated in
All of the features disclosed in this specification (including any accompanying claims, abstract, and drawings) may be combined in any combination, except combinations where some of such features are mutually exclusive. Each feature disclosed in this specification, including any accompanying claims, abstract, and drawings), may be replaced by alternative features serving the same, equivalent, or similar purpose, unless expressly stated otherwise. Thus, unless expressly stated otherwise, each feature disclosed is one example of a generic series of equivalent or similar features.
The present teachings are not restricted to the details of any foregoing examples. Any novel combination of the features disclosed in this specification (including any accompanying claims, abstract, and drawings) may be envisaged. The claims should not be construed to cover merely the foregoing examples, but also any variants which fall within the scope of the claims.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2020/014913 | 1/24/2020 | WO |