A digital signature is typically generated by a trusted entity for content using a private key held by the trusted entity. When the content has been signed with the digital signature, an entity receiving the content with the digital signature may use a public key for the trusted entity to verify that the trusted entity signed the received content. If the verifying entity does not directly trust the signing entity, then a trusted third party may introduce the signing entity's public key by providing a digital credential (also called a digital certificate) associated with the signing entity's public key under the third party's own private key.
Some systems using digital signatures rely on the anonymity of signing entities to preserve the integrity of system security. In the context of signer anonymity, most signature schemes fall within three categories, depending on the type of public key used for signature verification. In signature schemes of the first category, a verifier makes use of a public key corresponding to an individual signer to verify a signature from that signer. As such, signature verification in this first category does not provide signer privacy. In signature schemes of the second category, a verifier may make use of a set of public keys, with each public key corresponding to one potential signer in a group of signers. The degree of signer privacy in this type of signature scheme is dependent on the size of the public key set. In a third category of signature schemes, a verifier makes use of a group public key to verify a received signature. In this type of scheme, signer privacy is also held and the level of privacy is dependent on the size of the group. When the size of a group is very large, the third category is often considered to be the most suitable solution.
The accompanying drawings illustrate various examples of the principles described herein and are a part of the specification. The illustrated examples are merely examples and do not limit the scope of this disclosure.
Throughout the drawings, identical reference numbers may designate similar, but not necessarily identical, elements.
As described above, significant demand exists for effective anonymous digital signature (ADS) schemes in digital systems. However, most if not all existing anonymous digital signature schemes are specially designed, complex schemes that require significantly more resources to implement than ordinary (i.e., non-anonymous) signature schemes.
The present specification describes systems, methods, and computer program products for utilizing an ordinary cryptographic device that produces non-anonymous digital signatures, referred to as a signature engine, in connection with a host device to create signer anonymous digital signatures of content.
A “signature engine” may be an autonomous hardware device or module that outputs a digital signature for a message using a private key held by the signature engine. The message may be generated by the signature engine or received from an external entity, such as a host device or a signature verifier.
A “host device” may be an electronic processor-based apparatus that associates with a signature engine, the host device providing input to and receiving output from the signature engine.
An “issuing entity” or “issuer” may be a trusted electronic device or process that provides trusted digital credentials associated with a signature engine to a host device.
A “verifying entity” or “verifier” may be an electronic device that communicates with a host device and determines whether digital credentials associated with the host device are valid.
In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present systems and methods. It will be apparent, however, to one skilled in the art that the present apparatus, systems and methods may be practiced without these specific details. Reference in the specification to “an example” or similar language means that a particular feature, structure, or characteristic described in connection with that example is included as described, but may not be included in other examples.
Referring now to
The signature engine (110) may be any of a number of tamper-resistant hardware devices with a digital signing functionality. This digital signing functionality enables the signature engine (110) to create an ordinary digital signature by using a standard digital signature function. Any standard digital signature function may be used, including but not limited to: Digital Signature Algorithm (DSA); Elliptic Curve Digital Signature Algorithm (EC-DSA); Schnorr Digital Signature Algorithm (SDSA); Elliptical Curve Schnorr Digital Signature Algorithm (EC-SDSA); Rivest, Shamir, and Adleman (RSA), and the like.
Examples of hardware devices that may be used as the signature engine (110) include but are not limited to: Trusted Platform Modules (TPMs), Smart Cards (SCs), Cryptographic Co-processors (CCs) and Radio Frequency Identification (RFID) chips and tags. These cryptographic devices are typically simple, inexpensive, and reasonably secure.
The present specification describes illustrative systems and methods for using a single signature engine (110) to create an Anonymous Digital Signature (ADS), such as a group signature or a DAA signature. In these systems and methods, the signature engine (110) is closely connected with a computer platform, which is the host device (105). In certain examples, the signature engine (110) may be bound with the hardware platform of the host device (105) (e.g., a TPM). Additionally or alternatively, the signature engine (110) may be attached with the platform of the host device (105) (e.g., a Smart Card or an RFID chip) or embedded in the platform of the host device (105) (e.g., a CC). Generally speaking, because the signature engine (110) is a hardware-based device, its resources are expensive and dependent on the type of signature scheme used. Any technique to reduce the requirement on its resources is, therefore, valuable.
In the present specification, for each Anonymous Digital Signature scheme, a signer role is split between two entities: the signature engine (110) and the host device (105). The signature engine (110) holds a private signing key and creates standard non-anonymous digital signatures, independent of the real applications where a specific anonymous signature is required. The host device (105) holds a membership credential issued by the issuing entity (115), and uses the signature engine (110) to create various anonymous signatures. Without the aid of the signature engine (110), the host device (105) is not able to make any valid signature, and the host device (105) is responsible for protecting privacy of the signature engine (110). This is reasonable, as the host device (105) typically represents the owner of the platform and is therefore charged with protecting the anonymity of the owner and the components of the platform.
In certain examples, the host device may receive the credential from the issuing entity only after the issuing entity has verified the signing ability of the signature engine associated with the host device. For example, the host device may received a challenge message from the issuing entity, obtain a signature for the challenge message from the corresponding signature engine, and transmit the signature for the challenge message and a public key for the signature for the challenge message back to the issuing entity. Once the issuing entity has checked the signature for the challenge message for accuracy, the issuing entity may provide the host device with the credential.
The host device communicates (block 210) with an external verifying entity to establish a message for a digital signature. For example, the host device and the external verifying entity may agree on a random string of bits produced by the external verifying entity as the message.
The host device may then obtain (block 215) from the corresponding signature engine a digital signature for a combination of at least the message and a version of the stored credential. The version of the stored credential may be, for example, a scaled version of the credential in which each element of the credential has been scaled by a randomly selected integer. The host device may communicate with the verifying entity to determine a base parameter which the host device provides to the signature engine for generating the digital signature and its corresponding public and private keys. This digital signature, together with the version of the credential, are provided (block 220) to the external verifying entity as anonymous evidence of the host device's membership in the group.
The verifying entity may determine (block 315) from the version of the credential and the digital signature whether the credential stored by the host device originated from a trusted issuing entity. In some examples, the verifying entity may also be able to determine from the version of the credential and the digital signature whether the signature engine associated with the host device is distrusted without knowing the exact identity of the signature engine.
Throughout
The security of the examples given in =(P),
=(Q), and
are groups of large prime exponent p≈2t for security parameter t. All the three groups will be written multiplicatively. If
is some group then the notation
means the non-identity elements of
.
A pairing (or bilinear map) is a map ŝ: ×
→
such that:
Before proceeding with a more specific explanation of the examples of
Referring now to
The key generation function is a deterministic function that takes a key generation request (keyreq) as input, computes a secret key (private) skD and a committed key ckD, and then outputs the committed (public) key ckD. Each keyreq is informed with three elements: P, Kl, and Al. P is a base parameter for computing the key, Kl is key information, and Al is algorithm information. Because the signature engine may be used for multiple applications and anonymous digital signatures, Al may be used to distinguish between these applications and signature schemes. Kl indicates the group , such as P∈
, the group order q, and any other parameter received by the signature engine to calculate the key. Kl must be sufficient for the signature engine to be able to verify whether P is an element of the given group
and to compute the secret key skD∈
and and the committed key ckD∈
. The secret key skD is computed by using a Key Derivation Function (KDF),which, as shown in
The signature engine of
Illustrative DAA Scheme
In a DAA scheme, an issuing entity is in charge of verifying the legitimacy of signers, and of issuing a DAA credential to each signer. In the examples of the present specification, a signer is a pair of a host device and its associated signature engine. The signer may prove to a verifying entity that the signer holds a valid DAA credential by providing a DAA signature. The verifying entity may verify the DAA credential from the signature without learning the identity of the signature engine. Linkability of signatures issued by a host device-signature engine pair is controlled by an input parameter bsn (standing for “base name”) which is passed to the signing operation. If the bsn parameter is set to a specified constant ⊥, signatures issued by host device-signature engine pair cannot be linked back to the host device-signature engine pair.
To initialize and set up the system, parameters for each protocol as well as the long term parameters for each Issuer and each SE are selected. On input of the security parameter 1t, the Setup function selects three groups ,
, and
, of sufficiently large prime order q; selects two random generators such that
=(P1) and
=(P2) along with a pairing {circumflex over (t)}:
×
. Four hash functions are selected, namely H1:{0,1}*
, H2:{0,1}*
, HS:{0,1}*
G1, and H4:{0,1}*
. The hash-function H1 is used as the Key Derivation Function (KDF) for the signature engine, as shown in
, which allows Kl to be set to (
, P1, q). As described previously, each signature engine has a long-term secret, namely ADSseed←{0,1}t. For each issuing entity, two integers x,y←
are selected, and the private key of the issuing entity is set to (x, y). Next, the values X=[x]P2∈
and Y=[y]P2∈
are computed, and the issuing entity's public key ipk is set to (X, Y). Finally, the public system parameters par are set to (
,
,
, {circumflex over (t)}, P1, P2, q, H1, H2, H3, ipk).
With specific reference to
As shown in
The host device then creates a sign request sigreq by using commreq as the signed message msg along with the three elements used in the key request. The signature engine computes and returns signature σD . The nonce nD in commreq guarantees that the signature from the signature engine is different from other signatures. The host device transmits the public key Q1 and go back to the issuing entity as a response comm to the commitment request commreq from the issuing entity.
The issuing entity checks the returned commreq for accuracy, and performs some checks on the response comm received from the host device. If these checks correctly verify, the issuing entity computes a credential cre and then sends it to the host device. The credential cre from the issuing entity is a signature for a randomly selected message r using the Camenisch-Lyszanskaya signature scheme, which is given by a triple of functions, as follows:
The credential cre received from the issuing entity has three elements (A, B, C). The host device requests a new public key D from the signature engine using the B element of the credential cre. Using D as the message m in the verification function of the Camenisch-Lysyanskaya signature scheme, the host device attempts to verify the credential cre. If the credential cannot be verified, the host device aborts the join process or requests a new credential. If the credential is verified, the host device stores the credential from the issuing entity.
To create a DAA signature, the host device and verifying entity agree to the content of a message M and the base name bsn. In order to guarantee the freshness of the signature, the verifying entity may create a nonce nv, which is sent to the host device as a challenge. The use of this nonce nv is optional and may only occur if the verifying entity desires the assurance that a signature is fresh. As described above, the value of the basename bsn is indicative of whether the produced signature will be linkable to host device-signature engine pair. If bsn≠⊥, the host device creates a key generation request keyreq using the parameters J, Kl, and Al, where J=H3 (bsn), and sends the key generation request to the signature engine. The signature engine responds to the key generation request with a public committed key K. The host device also sets V equal to S+J. If the unlinkability is required, bsn=⊥, and K is set to the value of ⊥ and V is set to the value of S.
The host device then performs the fourth hash function H4 on the concatenation of R, S, T, W, K, nv, bsn, and M to produce a message msg which is passed to the signature engine in a signature request sigreq with base parameters V, Kl, and Al. In response to the signature request, the host device receives signature σD containing elements (v, w, and nD). The host device then prepares the DAA signature σ, which includes the elements R, S, T, W, K, v, w, and nD. The DAA signature σ is sent to the verifying entity. The verifying entity is able to determine whether the DAA signature was provided by a compromised signature engine by determining whether any entry of a Rogue list multiplied by S is equal to W. The verifying entity further checks whether the agreed bsn was used correctly. After these two checks pass successfully, the verifying entity verifies whether (R, S, T, W) represent a valid credential and whether the agreed message msg and the verifying entity's fresh nonce nv were correctly signed. In the case of bsn ≠⊥, checking that this data string is also used as the secret discrete logarithm in the committed key ckD=K is also implied.
Illustrative Group Signature Scheme
.
On input of the security parameter 1t , the Setup function selects three groups ,
, and
, of sufficiently large prime order q; selects three random generators such that
=
=(
) and
=
along with a pairing
×
. The discrete logarithm between the two generations P1 and Z, i.e.,
is not known to any signer. Three hash functions are selected, namely,
,
, and
. The hash-function H1 is used as the Key Derivation Function (KDF) for the signature engine, as shown in
, which allows Kl to be set to (
, P1, q). As described previously, each signature engine has a long-term secret, namely
. For each issuing entity, two integers
are selected, and the private key of the issuing entity is set to (x, y). Next, the values
and
are computed, and the issuing entity's public key ipk is set to (X, Y). Finally, the public system parameters par are set to (
,
,
, {circumflex over (t)}, P1, P2, Z, q, H1, H2, H3, ipk).
With specific reference to
As shown in
The host device then creates a sign request sigreq by using commreq as the signed message msg along with P1, Kl, and Al. The signature engine computes and returns signature σD . The host device transmits the public keys Q1 and Q2, back to the issuing entity with σD as a response comm to the commitment request commreq from the issuing entity.
The issuing entity checks the returned commreq for accuracy, and performs some checks on the response comm received from the host device. If these checks correctly verify, the issuing entity computes a credential cre and then sends it to the host device. The credential cre from the issuing entity is a signature for a randomly selected message r using the Camenisch-Lysyanskaya signature scheme, which is given above with respect to
The credential cre received from the issuing entity has three elements (A, B, C). The host device requests a new public key D from the signature engine using the B element of the credential cre. Using D as the message m in the verification function of the Camenisch-Lysyanskaya signature scheme, the host device attempts to verify the credential cre. If the credential cannot be verified, the host device aborts the join process or requests a new credential. If the credential is verified, the host device stores the credential from the issuing entity.
The host device generates a key request keyq for the signature engine using parameters J, Kl, and Al. The signature engine responds with public key K. To create a group signature for a verifying entity, the host device and verifying entity agree to the content of a message M. In order to guarantee the freshness of the signature, the verifying entity may create a nonce nv, which is sent to the host device as a challenge. The use of this nonce nv is optional may only occur if the verifying entity desires the assurance that a signature is fresh.
The host device then performs the third hash function H3 on the concatenation of R, S, T, W, J, K, L, nv, and M to produce a message msg which is passed to the signature engine in a signature request sigreq with base parameters V, Kl, and Al. In response to the signature request, the host device receives signature σD containing elements (v, w, and nD). The host device then prepares the group signature σ, which includes the elements R, S, T, W, J, K, L, v, w, and nD. The group signature σ is sent to the verifying entity. The verifying entity verifies whether (R, S, T, W) represent a valid credential and whether the agreed message msg and the verifying entity's fresh nonce nv were correctly signed.
Illustrative Computing Device
In this illustrative device (905), an underlying hardware platform executes machine-readable instructions to exhibit a desired functionality. For example, if the illustrative device (905) implements a host device, the machine-readable instructions may include at least instructions for storing a credential received from an external issuing entity, the credential reflecting membership in a particular group; instructions for communicating with an external verifying entity to establish a message for a digital signature; instructions for obtaining from a signature engine associated with the device (905) a digital signature for a combination of at least the message and a version of the stored credential, the signature being generated using a private key possessed by the signature engine; and instructions for providing the digital signature and the version of the credential to the external verifying entity as anonymous evidence of membership in the group.
In another example, if the illustrative device (905) implements a verifying entity, the illustrative device may include machine-readable instructions for communicating with the host device to determine a message; machine-readable instructions for receiving from the host device a version of a credential stored by the host device and a digital signature for a combination of at least the message and the version of the stored credential; and machine-readable instructions for determining from the version of the credential and the digital signature whether the credential originated from a trusted issuing entity.
The hardware platform of the illustrative device (905) may include at least one processor (920) that executes code stored in the main memory (925). In certain examples, the processor (920) may include at least one multi-core processor having multiple independent central processing units (CPUs), with each CPU having its own L1 cache and all CPUs sharing a common bus interface and L2 cache. Additionally or alternatively, the processor (920) may include at least one single-core processor.
The at least one processor (920) may be communicatively coupled to the main memory (925) of the hardware platform and a host peripheral component interface bridge (PCI) (930) through a main bus (935). The main memory (925) may include dynamic non-volatile memory, such as random access memory (RAM). The main memory (925) may store executable code and data that are obtainable by the processor (920) through the main bus (935).
The host PCI bridge (930) may act as an interface between the main bus (935) and a peripheral bus (940) used to communicate with peripheral devices. Among these peripheral devices may be one or more network interface controllers (945) that communicate with one or more networks, an interface (950) for communicating with local storage devices (955), and other peripheral input/output device interfaces (960).
The configuration of the hardware platform of the device (905) in the present example is merely illustrative of one type of hardware platform that may be used in connection with the principles described in the present specification. Various modifications, additions, and deletions to the hardware platform may be made while still implementing the principles described in the present specification.
The preceding description has been presented only to illustrate and describe examples of the principles described. This description is not intended to be exhaustive or to limit these principles to any precise form disclosed. Many modifications and variations are possible in light of the above teaching.
The present application claims priority under 35 U.S.C. §119(e) to United States Provisional Patent Application Ser. No. 61/445238, which was filed on Feb. 22, 2011.
Filing Document | Filing Date | Country | Kind | 371c Date |
---|---|---|---|---|
PCT/US2011/034804 | 5/2/2011 | WO | 00 | 8/13/2013 |
Number | Date | Country | |
---|---|---|---|
61445238 | Feb 2011 | US |