Cryptographic method and system
First data to be sent by a first party to a second party is encrypted using public data of a trusted party and an encryption key string formed using at least a hash value generated by hashing at least one condition that typically serves as an identifier of an intended recipient of the first data. The encrypted first data is provided to a data recipient who requests a decryption key from the trusted party. The trusted party is responsible for verifying that the recipient meets the specified conditions before providing the decryption key. A valid decryption key is only provided if the correct conditions have been supplied to the trusted party.
The present invention relates to cryptographic methods and system and, in particular, to data transfer methods and systems that use Identifier-Based Encryption.
BACKGROUND OF THE INVENTION Identifier-Based Encryption (IBE) is an emerging cryptographic schema. In this schema (see
A feature of identifier-based encryption is that because the decryption key is generated from the encryption key string, its generation can be postponed until needed for decryption.
Another feature of identifier-based encryption is that the encryption key string is cryptographically unconstrained and can be any kind of string, that is, any ordered series of bits whether derived from a character string, a serialized image bit map, a digitized sound signal, or any other data source. The string may be made up of more than one component and may be formed by data already subject to upstream processing. In order to avoid cryptographic attacks based on judicious selection of a key string to reveal information about the encryption process, as part of the encryption process the encryption key string is passed through a one-way function (typically some sort of hash function) thereby making it impossible to choose a cryptographically-prejudicial encryption key string. In applications where defence against such attacks is not important, it would be possible to omit this processing of the string.
Frequently, the encryption key string serves to “identify” the intended message recipient and this has given rise to the use of the label “identifier-based” or “identity-based” generally for cryptographic methods of the type under discussion. However, depending on the application to which such a cryptographic method is put, the string may serve a different purpose to that of identifying the intended recipient and, indeed, may be an arbitrary string having no other purpose than to form the basis of the cryptographic processes. Accordingly, the use of the term “identifier-based” or “IBE” herein in relation to cryptographic methods and systems is to be understood simply as implying that the methods and systems are based on the use of a cryptographically unconstrained string whether or not the string serves to identify the intended recipient. Generally, in the present specification, the term “encryption key string” or “EKS” is used rather than “identity string” or “identifier string”; the term “encryption key string” is also used in the shortened form “encryption key” for reasons of brevity.
A number of IBE algorithms are known and
-
- the form of the encryption parameters used, that is, the encryption key string and the public data of the trusted authority (TA);
- the conversion process applied to the encryption key string to prevent attacks based on judicious selection of this string;
- the primary encryption computation effected;
- the form of the encrypted output.
The three prior art IBE algorithms to which
-
- Quadratic Residuosity (QR) method as described in the paper: C. Cocks, “An identity based encryption scheme based on quadratic residues”, Proceedings of the 8th IMA International Conference on Cryptography and Coding, LNCS 2260, pp 360-363, Springer-Verlag, 2001. A brief description of this form of 1 BE is given hereinafter.
- Bilinear Mappings p using, for example, a Tate pairing t or Weil pairing ê. Thus, for the Weil pairing:
- ê: G1×G1→G2
where G1 and G2 denote two algebraic groups of prime order q and G2 is a subgroup of a multiplicative group of a finite field. The Tate pairing can be similarly expressed though it is possible for it to be of asymmetric form: - t: G1×G0→G2
where G0 is a further algebraic group the elements of which are not restricted to being of order q. Generally, the elements of the groups G0 and G1 are points on an elliptic curve though this is not necessarily the case. A description of this form of IBE method, using Weil pairings is given in the paper: D. Boneh, M. Franklin—“Identity-based Encryption from the Weil Pairing” in Advances in Cryptology—CRYPTO 2001, LNCS 2139, pp. 213-229, Springer-Verlag, 2001. - RSA-Based methods The RSA public key cryptographic method is well known and in its basic form is a two-party method in which a first party generates a public/private key pair and a second party uses the first party's public key to encrypt messages for sending to the first party, the latter then using its private key to decrypt the messages. A variant of the basic RSA method, known as “mediated RSA”, requires the involvement of a security mediator in order for a message recipient to be able to decrypt an encrypted message. An IBE method based on mediated RSA is described in the paper “Identity based encryption using mediated RSA”, D. Boneh, X. Ding and G. Tsudik, 3rd Workshop on Information Security Application, Jeju Island, Korea, Aug., 2002.
A more detailed description of the QR method is given below with reference to the entities depicted in
Each bit of the user's payload data 13 is then encrypted as follows:
-
- The data provider 10 generates random numbers t+ (where t+ is an integer in the range [0, 2N]) until a value of t+ is found that satisfies the equation jacobi(t+,N)=m′, where m′ has a value of −1 or 1 depending on whether the corresponding bit of the user's data is 0 or 1 respectively. (As is well known, the jacobi function is such that where x2=−#mod N the jacobi (#, N)=−1 if x does not exist, and =1 if x does exist). The data provider 10 then computes the value:
S+≡(t++K/t+)modN
where: s+corresponds to the encrypted value of the bit m′ concerned, and K=#(encryption key string) - Since K may be non-square, the data provider additionally generates additional random numbers t (integers in the range [0,2N)) until one is found that satisfies the equation jacobi(t_, N)=m′. The data provider 10 then computes the value:
s_≡(t—−K/t_)modN - as the encrypted value of the bit m concerned.
- The data provider 10 generates random numbers t+ (where t+ is an integer in the range [0, 2N]) until a value of t+ is found that satisfies the equation jacobi(t+,N)=m′, where m′ has a value of −1 or 1 depending on whether the corresponding bit of the user's data is 0 or 1 respectively. (As is well known, the jacobi function is such that where x2=−#mod N the jacobi (#, N)=−1 if x does not exist, and =1 if x does exist). The data provider 10 then computes the value:
The encrypted values s+ and s for each bit m′ of the user's data are then made available to the intended recipient 11, for example via e-mail or by being placed in a electronic public area; the identity of the trust authority 12 and the encryption key string 14 will generally also be made available in the same way.
The encryption key string 14 is passed to the trust authority 12 by any suitable means; for example, the recipient 11 may pass it to the trust authority or some other route is used-indeed, the trust authority may have initially provided the encryption key string. The trust authority 12 determines the associated private key B by solving the equation:
B2≡K modN (“positive” solution)
If a value of B does not exist, then there is a value of B that is satisfied by the equation:
B2≡−KmodN (“negative” solution)
As N is a product of two prime numbers p, q it would be extremely difficult for any one to calculate the decryption key B with only knowledge of the encryption key string and N. However, as the trust authority 12 has knowledge of p and q (i.e. two prime numbers) it is relatively straightforward for the trust authority 12 to calculate B.
Any change to the encryption key string 14 will result in a decryption key 16 that will not decrypt the payload data 13 correctly. Therefore, the intended recipient 11 cannot alter the encryption key string before supplying it to the trust authority 12.
The trust authority 12 sends the decryption key to the data recipient 11 along with an indication of whether this is the “positive” or “negative” solution for B.
If the “positive” solution for the decryption key has been provided, the recipient 11 can now recover each bit m′ of the payload data 13 using:
m′=jacobi(s++2B,N)
If the “negative” solution for the decryption key B has been provided, the recipient 11 recovers each bit m′ using:
m′=jacobi(s—+2B,N)
Returning now to a general consideration of IBE encryption, one application is to enable the data provider 10 to provide encrypted payload data over an unprotected communications path for receipt and decryption by a recipient 11 where certain conditions are met, namely condition 1 and condition 2. To ensure that the conditions are met before a recipient can read the payload data 13, the conditions are placed in the IBE encryption key string 14 and sent along with the encrypted payload data. Upon receipt, the data receiver 11 passes the encryption key string to the trusted authority 12 with a request for the corresponding IBE decryption key 16. The trusted authority 12 only provides the decryption key (over a secure channel) if satisfied that the conditions 1 and 2 included in the encryption key are met. Typically, the conditions serve to identify the intended recipient in some manner and can therefore be considered as the recipient's identifiers by the requesting data receiver 11; however, other conditions are also possible such as a time or date condition.
The foregoing example exhibits a number of potential drawbacks. More particularly, the conditions are transmitted in clear which may be undesirable particularly where the conditions are identifiers of the intended data receiver. In certain circumstances, it is better for the conditions not to be included in the encryption key but to be provide by the data receiver to the trusted authority. However, this runs the risk of the data receiver modifying the conditions.
It is an object of the present invention to provide improved cryptographic methods and apparatuses.
SUMMARY OF THE INVENTIONAccording to one aspect of the present invention, there is provided a data-transfer method comprising:
-
- (a) encrypting first data at a first party using as encryption parameters both public data of a trusted party and an encryption key string comprising a hash value generated by hashing second data comprising at least one condition;
- (b) providing the encrypted first data to a second party, and the encryption key string and said at least one condition to a trusted party;
- (c) at the trusted party effecting both a first check that the hash value in the encryption key string matches the result of a hash based on the said at least one condition provided in step (b), and a second check that the or each said at least one condition is met; and
- (d) providing a decryption key to the second party only if said checks are satisfactory, this decryption key being generated at the trusted party using the encryption key string and private data related to said public data.
The present invention also encompasses a system for carrying out the data transfer method of the invention.
BRIEF DESCRIPTION OF THE DRAWINGSEmbodiments of the invention will now be described, by way of non-limiting example, with reference to the accompanying diagrammatic drawings, in which:
In the following, references to the data provider, data receiver and the trusted authority are generally used interchangeably with references to their respective computing entities 20, 30 and 40.
In functional terms, the data-provider entity 20 comprises a communications module 24 for communicating with the entities 30 and 40, a control module 21 for controlling the general operation of the entity 20, and a cryptographic module 22 for executing certain cryptographic functions comprising a hash function and an IBE encryption function.
The data-receiver entity 30 comprises a communications module 34 for communicating with the entities 20 and 40, a control module 31 for controlling the general operation of the entity 30, and a cryptographic module 32 for executing certain cryptographic functions comprising a hash function (the same as that used by the entity 20) and an IBE decryption function.
The trusted authority entity 40 comprises a communications module 48 for communicating with the entities 20 and 30, a control module 41 for controlling the general operation of the entity 40, a cryptographic module 42 for executing certain cryptographic functions, a condition checking module 43, and a user registration module 44. The cryptographic module 42 is arranged to implement both a hash function (the same as that used by the entity 20) and an IBE decryption function; in addition, the module 42 includes a unit 45 for generating an IBE decryption key using both a supplied encryption key string and private data securely held in local store 46.
The system employs Identifier-Based Encryption with the computing entities 20,30 and 40 having, in respect of IBE encryption/decryption, the roles of the data provider 10, data recipient 11 and trusted authority 12 of the
Consider the situation where the data provider 20 wishes to encrypt message data (“msg”) for sending over an unprotected communications path for receipt and decryption by a recipient that meets certain conditions, namely Condition 1 and Condition 2. These Conditions 1 and 2 are unknown to the data receiver 30 and the data provider 20 wishes to keep Condition 2 confidential from the data receiver 30.
It is assumed that the data provider 20 has previously registered with the trusted authority 40 and obtained (see arrow 50) a public/private key pair K20pubic/K20private where K20public is simply a public identifier of provider 20 (such as a name) and K20private is the IBE decryption key formed by the trusted authority using the K20public as an IBE encryption key and its private data p,q. The user registration module 44 is responsible at the time of registration for ensuring that the public key K20public is a correct identifier of the data provider 20; the module 44 is also arranged to keep a record of currently valid registered users.
To encrypt the message data msg, the data provider 20 first forms an IBE encryption key string KENC comprising:
-
- K20public
- ::Condition 1
- ::H(K20private:: H(msg):: nonce:: Condition 1:: Condition 2)
- :: E(K20pubic, N; (H(msg):: nonce:: Condition 2))
where: - :: means concatenation,
- H(x) means the hash of data x using any suitable hash function such as SHA1,
- E(k,n;y) means the IBE encryption of data y using encryption key string k and the public data n of a trusted authority, and
- a nonce is a one-time use random number selected by the data provider 20 and provided for freshness.
The process of forming the encryption key string KENC is carried out by the cryptographic module 22 under the direction of the control module 21.
As can be seen, whilst Condition 1 is visible in the encryption key string KENC, the Condition 2 only appears in encrypted form. Furthermore, the encryption key string KENC includes a hash of the message data msg, and a hashed quantity that includes both the data-provider's private key K20private and the message data hash; as will be seen hereinafter, this enables the trusted authority 40 to check the origin of the encryption key string KENC and the integrity of the message hash.
After the key KENC has been generated, the control module 21 causes the cryptographic module 22 to use the key and the trusted authority's public data N to encrypt the message data msg. The encrypted data and the encryption key string KENC are then made available by the communications module 24 to the data receiver 30 (see arrow 51).
On receiving the encrypted message data and the encryption key string KENC, the control module 31 of the data receiver 30 may, if it understands the structure of the encryption key string, examine the identity K20public of the data provider 20 and the unencrypted Condition 1. If the data receiver determines that it wants to read the message data and that it meets Condition 1, or if the data receiver decides to proceed without checking Condition 1 (for example, because it does not know the structure of the encryption key string), the control module 31 causes the encryption key string KENC to be sent (arrow 52) to the trusted authority 40 with a request for the corresponding decryption key KDEC.
On receipt of the request from the data receiver 30 for the decryption key KDEC, the control module 41 of the trusted authority 40 oversees the processing represented by the flow chart of
Next, the control module 41 passes the component formed by the data provider's public key K20public to the module 44 in order to determine whether the data provider 20 is still a valid registered user of the services of the trusted authority 40 (step 62). If this check fails, a negative response is returned to the requesting data receiver 30 (step 72) and processing terminates; otherwise processing proceeds. In fact, the trusted authority 40 may decide to skip this check and simply proceed directly to the following processing steps.
The next processing step (step 63) involves the control module 41 passing the Condition 1 component extracted from the encryption key string KENC to the condition checking module 43 for it to determine whether the data receiver 30 satisfies this condition. Condition checking may involve the consultation of internal and/or external databases and/or the interrogation of the data receiver 30 (for which purpose the latter may be implemented on a trusted computing platform). If this check fails, a negative response is returned to the requesting data receiver 30 (step 72) and processing terminates; otherwise processing proceeds.
The following step (step 64) involves the control module 41 obtaining the data provider's private key K20private Whilst this key could have been stored in the user registration module 44 and retrieved against the data provider's public key K20public (as extracted from the encryption key string KENC), it is simpler to have the key generation unit 45 regenerate the K20private using the data provider's public key K20public and the private data p,q held in storage 46.
Once the private key K20private has been obtained, it is used (step 65) to decrypt the encrypted component of the encryption key string KENC in order to reveal:
-
- H(msg):: nonce:: Condition 2
this expression thereafter being separated into its three constituent elements.
- H(msg):: nonce:: Condition 2
Next, the control module 41 passes the now-decrypted Condition 2 to the condition checking module 43 for it to determine whether the data receiver 30 satisfies this condition (step 66). If this check fails, a negative response is returned to the requesting data receiver 30 (step 72) and processing terminates; otherwise processing proceeds.
Following the successful check of Condition 2, the control module 41 causes the hash:
-
- H(K20private:: H(msg):: nonce:: Condition 1:: Condition 2)
to be recomputed (step 67) using the key K20private obtained in step 64, the values of H(msg), the nonce and Condition 2 obtained by the decryption in step 65 of the encrypted data contained in KENC, and the Condition 1 obtained in step 61 from parsing KENC. This re-computed hash value is then compared (step 68) with the corresponding component contained in the encryption KENC. If these hash values are different then clearly something is wrong and a negative response is returned to the requesting data receiver 30 (step 72) and processing terminates.
- H(K20private:: H(msg):: nonce:: Condition 1:: Condition 2)
However, if the hash values match, the trusted authority 40 accepts that the data provider is the entity associated with the private key K20private and thus with the public key K20public; the trusted authority also accepts that the message hash H(msg) is reliable. The control module 41 now causes the key generation unit 45 to compute (step 69) the decryption key KDEC using the encryption key string KENC and the private data p,q. Finally, the trusted authority 40 returns (step 70) the decryption key KDEC together with H(msg) to the data receiver 30 (see arrow 53,
It will be appreciated that the ordering of the checking steps 62, 63, 66 and 68 relative to each other and to the other steps of the
On receiving the decryption key KDEC the data receiver 30 uses it to decrypt the encrypted message data after which it computes the hash of the message and compares it with that received from the trusted authority 40 as a final check on the message integrity. The data receiver 30 now has the integrity-checked decrypted message and can be sure that the trusted authority 40 is happy that the data provider 20 is as identified by the public key K20public included in clear in the encryption key string KENC.
In the foregoing process, the only additional burden placed on the data receiver 30 is the message integrity check involving forming a hash of the message and comparing it with the message hash supplied by the trusted authority 40; otherwise, the functioning of the data receiver 30 is exactly as for any basic IBE system with the data receiver 30 passing the encryption key string KENC to the trusted authority 40 and receiving back the decryption key KDEC. If the data receiver is prepared to pass the encrypted message to the trusted authority, then even the message integrity check can be carried out by the trusted authority.
The process described above with respect to
Many variants are possible to the above-described embodiment. For example, instead of the QR IBE method being used for the encrypting and decrypting the message data msg, other, analogous, cryptographic methods can be used such as IBE methods based on Weil or Tate pairings. Furthermore, the data KENC may be subject to further predetermined processing (such as a further hash) before being used in the operative encryption process and in this case the trusted authority will need to use the same processed value of KENC when generating KDEC (it will, however, be appreciated that the trusted authority will need to receive KENC unprocessed in order for it to be able to access the individual components of KENC). These generalizations also apply to the variants discussed below.
In the above-described embodiment, the data provider's public key K20public is used in clear in the encryption key string KENC to identify the data provider and to encrypt the encrypted component of the encryption key string KENC, whilst the corresponding private key K20private is used as an authenticator of the identity of the data provider by its inclusion in the hashed component of the encryption key string KENC. Although in the above embodiment this public/private key pair K20public/K20private is an IBE encryption/decryption key pair, this need not be the case and the public/private key pair could, for example, be an RSA public/private key pair. In this case, the private key used to authenticate the data provider 20 cannot be computed in step 64 and must be accessed by look up in a database kept by the user registration module 44 relating private key to the data-provider identifier, such as the public key, included in clear in the encryption key string KENC. A potential drawback of using an RSA public/private key pair is that if the public key is used as the in-clear data-provider identifier included in the encryption key string KENC, the real-world identity of the data provider may not be apparent to the data receiver and will generally need translation. In fact, the in-clear data-provider identifier included in the encryption key string KENC need not be the public key of the public/private key pair (whether IBE or RSA based) but can be any valid identity for the data provider that is known and accepted by the trusted authority as corresponding to the private key it holds for the data provider 20.
It is also possible to use a symmetric key known only to the data provider and the trusted authority to form the encrypted component of the encryption key string KENC and for inclusion in the hashed component in place of K20 private. In this case, the in-clear identifier of the data provider that is included in the encryption key string KENC would not, of course, be this key but would be an identifier known by the trusted authority as associated with the data provider and thus with the symmetric key concerned.
It may be noted that the key used for encrypting the encrypted component of the encryption key string KENC need not be cryptographically related to the key used in the hashed component of KENC—all that is required is that the key used for encrypting the encrypted component of the encryption key string KENC is confidential to the data provider 20 and the trusted authority 40 and is known by the latter to belong to the same party as the key used in the hashed component of the key KENC.
It may also be noted that where there are only a few users registered with the trusted authority, it would be possible to omit the first component K20public (or other in-clear identifier of the data provider 20) and simply arrange for the trusted authority 40 to try out the keys/key pairs of all registered users to see if the message came from a registered user. If a key/key pair was found that both sensibly decrypted the encrypted component of KENC and gave rise to a computed hash matching the hashed component of KENC, the identity of the data provider can be considered as established and can be passed to the data receiver if the latter needed to know this identity.
As already indicated, the form of encryption key string KENC described above with reference to
Considering first the authentication of the data provider, this is achieved by including in the encryption key string KENC a hash of a shared secret known to the data provider 20 and the trusted authority 40; in the illustrated embodiment this shared secret is the private key K20private but, as discussed, could be an RSA private key of the data provider or a symmetric key, or indeed any shared secret. The presence in the encryption key string of the Conditions 1 and 2 is not relevant to this data-provider authentication function so that the example encryption key string KENC given above can be reduced to:
-
- K20public
- :: H(K20private:: H(msg):: nonce)
- E(K20public, N; (H(msg):: nonce))
As already noted, where there are only a few users registered with the trusted authority, the first component K20public can be omitted. Furthermore, the nonce could be omitted from both the encrypted and hashed components of KENC provided freshness was not required. However, retention of the message hash H(msg) in both the hashed component and the encrypted (or, alternatively, in the in-clear) component of KENC is necessary where it is desired to retain a link between the originator identity established for the encryption key KENC and a message encrypted with this key—removal of the message hash H(msg) would enable the encryption key string KENC to be used by a third party for encrypting a message which might then appear to come from the data provider 20 in view of the latter's identity being embedded in the encryption key string KENC. In fact, it is possible to envisage circumstances where the original of the encryption key string KENC is of a significance independent of the origin of a message encrypted with that key. For example, where the encryption key string KENC includes one or more conditions in clear and/or in the encrypted component, then these may represent standard terms and conditions of a party which wishes to establish this fact independently of any message encrypted with the encryption key string; in this case, the conditions (or a hash of the conditions) would need to be included in the hashed component of the encryption key string to enable a check on their integrity. Where only non confidential conditions were involved, such as Condition 1, then the encryption key string KENC would be of the form:
-
- K20public
- ::Condition 1
- ::H(K20private:: nonce:: Condition 1)
- ::E(K20public, N; nonce)
If the nonce is not required, then the encrypted component can be omitted. The condition or conditions included in such an encryption key can be replaced, or supplemented, by other data not intended to be an identifier of the data receiver 30 such as data about the data provider 20. This other data can, like the conditions, be included in clear and/or in the encrypted component and should also be included, directly or after hashing, in the hashed component if it is to be linked to the originator identity established for the encryption key string KENC.
Rather than using an un-keyed hash function such as SHA1, it is possible to use a keyed hash such as HMAC with the private key K20private (or other shared secret) being the hash key used for hashing the other element or concatenated elements of the hashed component. In this case, the trusted authority would use the same keyed hash function in seeking to compute a hash value matching that in the encryption key string KENC.
If the identity of the data provider is not an issue, then the encryption key string KENC of the illustrated embodiment reduces to:
-
- K20public
- ::Condition 1
- H(H(msg):: nonce:: Condition 1:: Condition 2)
- ::E(K20public, N; (H(msg):: nonce:: Condition 2))
leaving only the elements forming the identifiers of the data receiver (Conditions 1 and 2) and those concerned with the message integrity (the in-clear component K20public is retained to facilitate the trusted authority obtaining the key K20private for decrypting the encrypted component, though as already discussed, in appropriate circumstances the component K20public can be omitted). If only message integrity is of interest (for example, if there are no conditions), then the hashed component of this reduced form of the encryption key string KENC can be removed leaving: - K20public
- :: E(K20public, N; (H(msg):: nonce))
In fact, since K20pubic is public, encrypting the message hash does not serve much purpose as anyone wishing to provide a substitute message for that originally sent can also change the message hash and encrypt it accordingly. However, if the message hash, with or without the addition of a nonce, is encrypted using a private key (whether of a public/private key pair or a secret symmetric key) the message hash is protected from change and serves its purpose of providing a message integrity check for the original message. Rather than using the private key to encrypt the message hash, it can be used to form a keyed hash, such as HMAC, of the message. The trusted authority can be arranged to determine the correct private key to use for checking either by trial and error through a limited set of such keys, or by the inclusion in the encryption key string KENC of a suitable indicator in clear.
Whether the message hash is included in a protected form or another form (such as in clear or encrypted with a public key) in the encryption key string KENC, its inclusion permits detection of non malicious changes in the encrypted message such as may result from problems in the communications path. At its simplest, inclusion of the message hash, in clear or in a derived form, into the encryption key string KENC provides a link between the encryption key string and the message giving rise to the included hash value. Whilst this does have utility without the addition of further data into the encryption key string, it is primarily of interest for associating such further data included in the key KENC with the message, this further data being, for example, identity information of the data provider and/or data receiver as has already described.
As regards the inclusion in the encryption key string KENC of conditions serving to identify the data receiver, it will be appreciated that the number of in-clear and encrypted conditions can be varied from that described above for the illustrated embodiment. Thus, there may be none, one or more in-clear conditions and none, one or more encrypted conditions, in any combination. Furthermore, where the conditions are already known to the data receiver 30, the conditions need not be included as such in the encryption key string KENC but they should still included in the hashed component to enable the trusted authority to confirm that the conditions passed to it by the data receiver correspond to those intended by the data provider and included in the hashed component. In this case, for the illustrated embodiment, the encryption key string KENC reduces to:
-
- K20public
- ::H(K20private:: H(msg):: nonce:: Condition 1)
- ::E(K20public, N; (H(msg):: nonce))
there being no Condition 2 as this example only involves conditions known to the data receiver. If the data-provider identity information and message hash data are not required and the nonce is omitted, the encryption key string KENC further reduces to: - H(Condition 1)
This is of value because it ensures that the data receiver can only read the encrypted message data supplied by the data provider if it presents, and satisfies, the correct condition 1 to the trusted authority. The data receiver cannot alter the hash value to match a different condition as this would result in a decryption key KDEC that would not serve to decrypt the received encrypted message data.
It may be noted that it is possible to achieve a similar result to that of the foregoing paragraph without using an IBE schema for the encryption and decryption keys KENC, KDEC. Consider a situation where the trusted authority has a secret key KT which it uses to generate a secret key KP for the data provider 20 (the subscript “p” here standing for the data Provider):
-
- KP=HMAC(KT, identifier of data provider)
This enables the data provider 20 to generate a symmetric key KPR:
-
- KPR=HMAC(KP, identifier of data receiver)
where the identifier of the data receiver is the Condition 1. The key KPR is then used with a symmetric encryption algorithm to encrypt the message data which the data provider then sends, along with its identifier, to the data receiver. In order for the data receiver to obtain the key KPR for decrypting the message data, it must provide its identifier (Condition 1) and that of the data provider to the trusted authority who can now compute the key KPR as it already knows KP or can re-compute it; assuming that the data receiver meets the Condition 1, the trusted authority then returns the key KPR to the data receiver to enable the latter to decrypt the encrypted message data. If the data receiver supplies a modified Condition 1, the resultant key will not decrypt the encrypted message data. By also sending a hash of the key KPR, the data provider can provide assurance to the trusted authority that KPR has been created by the data provider.
- KPR=HMAC(KP, identifier of data receiver)
With regard to the above-described reduced forms of the encryption key string KENC, it will be understood by persons skilled in the art that the
It will also be understood by persons skilled in the art that where elements are concatenated before being operated upon by a hashing or encryption function, the order of concatenation can be varied from that described above provided that the ordering is used consistently (for example, the trusted authority 40, when computing the hash value in step 67 of
-
- H(K20private:: H(msg):: nonce:: Condition 1:: Condition 2)
(or any simplified version discussed above) can be replaced by any deterministic combination function (the trusted authority needing only to be able to repeat the combination, not reverse it). Of course, the trusted authority and data provider must know to use the same combination functions.
- H(K20private:: H(msg):: nonce:: Condition 1:: Condition 2)
Claims
1. A data-transfer method comprising:
- (a) encrypting first data at a first party using as encryption parameters both public data of a trusted party and an encryption key string comprising a hash value generated by hashing second data comprising at least one condition;
- (b) providing the encrypted first data to a second party, and the encryption key string and said at least one condition to a trusted party;
- (c) at the trusted party effecting both a first check that the hash value in the encryption key string matches the result of a hash based on the said at least one condition provided in step (b), and a second check that the or each said at least one condition is met; and
- (d) providing a decryption key to the second party only if said checks are satisfactory, this decryption key being generated at the trusted party using the encryption key string and private data related to said public data.
2. A method according to claim 1, wherein in step (b) the encryption key string is provided to the trusted party via the second party.
3. A method according to claim 1, wherein in step (b) said at least one condition is provided to the trusted party by the second party.
4. A method according to claim 1, wherein in step (a) said second data comprises at least one further element in addition to said at least one condition; the first check carried out in step (c) checking that the hash value in the encryption key string matches the result of a hash of a combination of said at least one further element and the said at least one condition provided in step (b),.
5. A method according to claim 1, wherein the encryption process effected using said encryption key and the public data of the trusted party is an identifier-based cryptographic process utilising quadratic residuosity.
6. A method according to claim 1, wherein the encryption process effected using said encryption key and the public data of the trusted party is an identifier-based cryptographic process utilising Weil or Tate pairings.
7. A data-transfer system for the encrypted transfer of first data, the system comprising:
- data provider equipment comprising:
- a hashing arrangement for generating a hash value by hashing second data comprising at least one condition;
- a keystring-forming arrangement for forming an encryption key string using at least said hash value;
- an encryption arrangement for encrypting the first data using as encryption parameters both public data of a trusted party and said encryption key string; and
- an output arrangement for outputting at least the encrypted first data and the encryption key string;
- data receiver equipment for receiving the encrypted first data output by the data provider equipment; and
- trusted party equipment associated with said trusted party and comprising:
- an input arrangement for receiving the encryption key string and said at least one condition;
- a first checking arrangement for carrying out a first check that the hash value in the encryption key string matches the result of a hash based on the said at least one condition;
- a second checking arrangement for carrying out a second check that the or each said at least one condition is met; and
- a decryption-key providing arrangement for providing a decryption key to the data receiver equipment only if said checks are satisfactory, the decryption-key providing arrangement being arranged to generate this decryption key using the encryption key string and private data related to said public data.
8. A system according to claim 7, wherein the data receiver equipment is arranged to receive the encryption key string from the data provider equipment and forward it to the trusted party equipment.
9. A system according to claim 7, wherein the data receiver equipment is arranged to provide said at least one condition to the trusted party equipment.
10. A system according to claim 7, wherein said second data comprises at least one further element in addition to said at least one condition; the first checking arrangement being arranged to check that the hash value in the encryption key string matches the result of a hash of a combination of said at least one further element and the said at least one condition.
11. A system according to claim 7, wherein the encryption arrangement is arranged to encrypt the first data, using said encryption key string and the public data of the trusted party, in accordance with an identifier-based cryptographic process utilising quadratic residuosity.
12. A system according to claim 7, wherein the encryption arrangement is arranged to encrypt the first data, using said encryption key string and the public data of the trusted party, in accordance with an identifier-based cryptographic process utilising Weil or Tate pairings.
Type: Application
Filed: Apr 22, 2004
Publication Date: Jan 6, 2005
Inventors: Liqun Chen (Bristol), Keith Harrison (Woodcroft Chepstow)
Application Number: 10/831,548