Abstract:
A method for the fair exchange of value items between two parties is presented in which a third party is only involved in exceptional situations. Each party sends initially in an exchange procedure, to the other party a permit which binds its value item in such a way that the receiving party can verify the fact that the value item is bound, but cannot yet extract the expected value item from the permit. If a party can accept a permit as correct, it then sends the actual value item to the other party. Thus, the exchange can be completed without involving the third party if no exceptional situation occurs.  
     For exceptional situations, subprotocols are provided by which a party, if not satisfied, can involve the third party and send to it the permit previously received. The third party can then obtain the value item from the permit and could deliver it to the requesting party. However, the subprotocls are so designed that in any case, the exchange procedure is completed, and either both parties have received the value item expected, or none of both received a value item from the other party. This exchange method operates reliably even in netweorks with arbitrary latency.

Description:
TECHNICAL FIELD  
         [0001]    Present invention relates generally to the exchange of value items such as certified mail, electronic cash payment and receipt, or contract signatures over a network by electronic communication, and more particularly to protocols for the fair exchange of value items between two parties where a third party is available for executing auxiliary procedures when this is required.  
         BACKGROUND  
         [0002]    Many electronic commerce transactions are exchanges of items of value (hereafter referred to as “value items”). Exchanging a mail for a signed receipt (certified mail), exchanging non-repudiable commitments on a contract text (contract signing), exchanging electronic payment for a receipt etc. are examples of exchange transactions. Each party in an exchange will want to ensure that it does not suffer a loss of value. This property is known as “fairness.” A fair exchange guarantees that either both parties receive the value items they expect or neither does. The fairness property of exchange transactions is sometimes known also by other terms such as atomicity or simultaneity.  
           [0003]    A straightforward way of guaranteeing fairness is to involve a trusted intermediary (also known as a trusted third party) in every exchange transaction. This approach suffers from two main disadvantages: a performance penalty incurred by having to involve a third party in every transaction, and the need to trust the third party to a great extent. Other approaches which do not involve a third party are expensive in terms of the number of messages sent and the rounds of communication required.  
           [0004]    Various exchange protocols were already suggested, e.g. those described in following publications: (a) U.S. Pat. No. 5,666,420: S. Micali: “Simultaneous Electronic Transactions” (Sep. 1997). (b) N. Asokan, M. Schunter, M. Waidner: “Optimistic Protocols for Fair Exchange”; Proc. 4th ACM Conf. on Computer and Communication Security, Zurich, Apr. 1997, pp.6-17; (also: IBM Research Report RZ 2858, Sep.1996). (c) M. Ben-Or, O. Goldreich, S. Micali, R. L. Rivest: “A Fair Protocol for Signing Contracts”; IEEE Trans. on Information Theory, Vol.36 No.1 (1990), pp.40-46. (d) H. Buerk, A. Pfitzmann: “Value Exchange Systems Enabling Security and Unobservability”; Computers &amp; Security, Vol.9 No.8 (1990), pp.715-721. Though the methods described in these publications may achieve a fair exchange of value items to a certain degree, they have some deficiencies in that they were either limited to particular applications, were not practicable in networks of arbitray latency, and all of them were applicable only for value items of specific structures. The listing of present invention&#39;s advantages which is given further below will refer also to some of the deficiencies of existing solutions.  
         OBJECTS OF THE INVENTION  
         [0005]    The invention has the following objects for a fair exchange protocol, to overcome disadvantages of previous solutions:  
           [0006]    Optimism: no third party is used in the common case under the optimistic assumption that parties in the exchange behave correctly most of the time, while reserving the possibility of using a third party under exceptional, predetermined circumstances.  
           [0007]    Timely completion in realistic networks: even in networks with arbitrary latency (i.e., networks in which messages sent are eventually delivered, but no guarantee is made about the amount of time required for delivery), each party should be able to conclude the exchange fairly even when the other party fails to follow the protocol correctly.  
           [0008]    Generality: the protocol should be as general as possible, capable of exchanging a wide variety of value items.  
           [0009]    Minimal trust: the protocol should minimize the trust placed on the third party.  
         BRIEF SUMMARY OF THE INVENTION  
         [0010]    Basically, the invention provides, in a method for the fair exchange of value items between two parties, in a network with arbitrary latency, the initial exchange of permits between the parties, where each permit binds a representation of an expected value item so that a receiving party can verify this fact but cannot obtain the value item directly from the permit, but where a third party, when receiving the permit and some security information, can obtain the representation of the value item for delivery to a requesting party; both parties initially exchange and verify permit, and in case of successful verifications, then the actual value items are exchanged. This procedure allows, in the majority of normal cases, a fair and secure value item exchange in a few steps without any participation of the third party. The invention provides additonal subprotocols by which each party can request the cooperation of the third party, by sending to it the permit previously received plus additional identifying information, so that the third party can resolve an exceptional situation without further cooperation of the two parties.  
           [0011]    The invention has the following advantages:  
           [0012]    It is a generic protocol for fair exchange, which can be used for specific fair exchanges like certified mail, contract signing, secure transaction commitment, and payment for receipt (the notion first described in (b) by Asokan, Schunter and Waidner; however, the solution described there did not achieve a strong degree of fairness. Solutions that did achieve stronger degrees of fairness, such as the method of Micali&#39;s patent (a), were not general —Micali&#39;s solution was limited to certified mail).  
           [0013]    It is optimistic in that it involves a third party only under rare, predetermined circumstances (the contract signing protocol described by Ben-Or, Goldreich, Micali, and Rivest in (c) can be classified as optimistic because it specifies a third party to be used only under exceptional circumstances; the method described by Buerk and Pfitzmann in (d) was the first where optimism was explicitly intended as a design goal).  
           [0014]    It is the first optimistic fair exchange protocol which works even in a realistic network with arbitrary latency (the methods described in (a) and (b) etc. do not have this property); in particular if either party in the protocol decides at any arbitrary time to conclude the protocol, it can do so even when the other party is unreachable (due to network failures) or uncooperative, as long as the first party can send a single message to the third party and eventually receive a response from it.  
           [0015]    It allows two different verifiable encryption embodiments which  
           [0016]    (a) are noninvasive, in that they enable the exchange of already existing types of value items, such as various types of digital signatures and electronic coins, without modification and do not dictate the format of value items (in the Micali patent  
           [0017]    (a), certified mail receipts etc. must be of a specific, nonstandard form), and  
           [0018]    (b) avoid the need to trust the third party with the contents of the value items being exchanged (i.e., the contents of the value items need not be revealed to the third party).  
           [0019]    It allows an embodiment implementing a fair contract signing protocol in which the third party can be held accountable for certain types of misbehavior by collecting evidence that can be used to prove this misbehavior to a court in a subsequent dispute. (the certified mail protocol disclosed in the Micali US patent (a) does not have this type of accountability property; at the same time, it is invasive as well. Micali emphasizes the “invisibility of third party” property of his protocol. But invisibility without non-invasiveness is not useful. Our embodiments based on verifiable encryption do have the invisibility property; but more importantly, they are non-invasive.)  
           [0020]    Glossary  
           [0021]    The following are informal definitions to aid in the understanding of the description.  
           [0022]    Group: A group is an algebraic structure consisting of a set of elements and a group operation with some specified properties. For example, the set of integers 0. p−1, where p is a prime number, is a group under the multiplication operation. For any integer n, the set of integers {0.n−1} is known as Z n . Z* n  denotes the group consisting of the set of positive integers in Z n  that are relatively prime to n.  
           [0023]    Homomorphism: A homomorphism is a function that maps an element of one group (say G 1 ) to an element in another group (G 2 ) in such a way that the results of the group operation are preserved. In other words, if a and b are elements of G 1  and G 2 , “*” and “+” indicate the group operations in G 1  and G 2 , respectively, and Θ( ) is a homomorphism from G 1  to G 2 , then Θ(a*b)=Θ(a)+Θ(b). A surjective homomorphism is one such that the range of the homomorphism is the entire group G 2 .  
           [0024]    Zero-knowledge proof (ZKP): In a zero-knowledge proof of knowledge, a prover demonstrates knowledge of a secret to a verifier in such a way that the verifier learns nothing more about the secret from participating in the ZKP protocol than he knew earlier from the public information about the secret.  
           [0025]    One-way function: A one-way function f( ) is a function such that given input x, it is easy to compute f(x), but the inverse function is hard (i.e., given y, finding x such that f(x)=y.) A one-way hash function is a one-way function that takes an arbitrary length input and produces a fixed length output. A collision-resistant one-way function is a one-way function f( ) with the property that it is infeasible to find some a and b such that f(a)=f(b). If f(x)=y, x is called a pre-image of y.  
           [0026]    Adaptive attacks: In an adaptive attack against cryptographic schemes, the attacker repeats the following process: he sends requests to the software or hardware units implementing the scheme, observes the responses, and based on the responses constructs and sends more requests, with the aim of eventually breaking the scheme. This is the strongest type of attack.  
           [0027]    RSA with OAE padding: RSA with OAE padding is a specific form of RSA encryption scheme which is believed to be resistant to adaptive attacks.  
           [0028]    Cramer-Shoup encryption function: Encryption function in the new Cramer-Shoup cryptosystem which is provably resistant to adaptive attacks. 
       
    
    
     LIST OF DRAWINGS  
       [0029]    In the sequel, embodiments of the invention will be described with reference to the following drawings:  
         [0030]    [0030]FIG. 1 is a diagram illustrating the basic main protocol, employing present invention for the fair exchange of value items between two parties;  
         [0031]    [0031]FIG. 2 illustrates a first subprotocol by which a first party A which initiated an exchange, requests the third party to terminate the exchange procedure in an exceptional situation;  
         [0032]    [0032]FIG. 3 illustrates a second subprotocol by which a second party B which responded to an exchange initiation, requests the third party T to complete the exchange procedure in particular situations; and  
         [0033]    [0033]FIG. 4 illustrates a third subprotocol by which the first party A requests the third party T to complete the exchange procedure in particular situations.  
     
    
     DETAILED DESCRIPTION  
       [0034]    The basics of the invention is a generic protocol for optimistic fair exchange. This generic protocol can exchange a large class of items which have the following property: The third party must be able to generate the item even if the party that was supposed to send the item (the “sender” of the item) stops cooperating. We call such items “generatable items.” In order to generate an item, the third party must be given a “permit,” which must be created ahead of time by the sender of the item. The permit is essentially a promise from the sender to the recipient that if the recipient takes the permit to a specified third party, the latter can recover the item on behalf of the recipient with no further help from the sender.  
         [0035]    The problem to solve is as follows. Two parties A and B, which do not trust each other, want to participate in an exchange with A sending item A  and B sending item B . A wants the protocol to guarantee that if it fails to receive item B  then B must not receive any additional information about item A . B has a similar requirement. Our generic protocol suite has a main protocol used in the normal case and three sub protocols used in case something goes wrong. The main protocol takes the following approach in the normal case:  
         [0036]    A sends a permit to B promising to send item A    
         [0037]    If B is satisfied with the permit, it sends a permit to A promising to send item B    
         [0038]    If A is satisfied with the permit, it sends item A  to B  
         [0039]    B sends item B  to A  
         [0040]    If we assume A and B behave correctly and send the messages they are supposed to send, then executing the main protocol is sufficient for a successful fair exchange. The assumption is normally valid, resulting in an efficient fair exchange. However, one of the parties may misbehave or the network connection between the players may fail, resulting in an abnormal situation. The sub protocols (also called “recovery protocols”) are for recovering from abnormal situations. The permits exchanged in the initial part of the main protocol are used in the recovery protocols. We explain the protocols in more details shortly.  
         [0041]    First we describe the properties that a permit should provide, and then describe in detail the generic optimistic fair exchange protocol for generatable items. Then we describe a example of fair exchange (contract signing) where permits are constructed using digital signatures.  
         [0042]    Then we describe a technique called “verifiable encryption” which can be used to create permits for elements of a type of algebraic structures known as “groups.” We illustrate how verifiable encryption permits are used with the generic protocol described earlier. Then we describe two ways of concretely implementing verifiable encryption of group elements. Finally, we describe how to reduce various types of value items to group elements so that they can be exchanged using the techniques described so far.  
         [0043]    Generatable Items and the Notion of Permits  
         [0044]    We assume that each value item has a unique description. We define a “permit” as having the following properties.  
         [0045]    there is an associated permit transportation protocol in which  
         [0046]    the sender of the permit participates by invoking a procedure bind which takes the following inputs  
         [0047]    a value item to be sent  
         [0048]    description of the value item expected from the receiver (referred to below as “expectation”)  
         [0049]    a special “authenticator” string (used later by the third party to identify the sender)  
         [0050]    identifier of the third party to be used when necessary which produces a permit which tightly binds (see below) all this information together, sends it to the recipient and also locally outputs it,  
         [0051]    the recipient of the permit participates by invoking a procedure verify which takes following inputs which are supposedly embedded in the permit  
         [0052]    description of the value item  
         [0053]    an item matching the expectation  
         [0054]    the special “authenticator” string  
         [0055]    identifier of the third party to be used when necessary and which receives the permit from the sender and verifies if it is in accordance with the inputs; if so it locally outputs the permit; otherwise it signals an error,  
         [0056]    given a permit, no one other than the creator of the permit and the third party will be able to extract any information about the value item embedded in the permit.,  
         [0057]    if the verify procedure successfully returns a permit, then the recipient is guaranteed that the third party can recover the value item using this permit without any further cooperation from the sender,  
         [0058]    given a permit, the recipient cannot tamper with the permit in such a way to create a modified permit binding a different expectation or authenticator with the same embedded item, and  
         [0059]    given a permit, the third party designated in the permit can extract each embedded object (the item and expectation of the sender, the special authenticator, and the identifier of the third party).  
         [0060]    In some embodiments (see “verifiable encryption” below) the item is extracted from the permit itself. In other embodiments (e.g., the “contract signing” embodiment below), the permit merely indicates to the third party that it can create the item or extract it from somewhere else (e.g., a database maintained by the third party). The item generated by the third party is functionally equivalent to the sender&#39;s item (i.e., the one used to create the permit) but not necessarily identical. Functional equivalence of two items means that both items satisfy the same expectation.  
         [0061]    Any item for which such a permit can be created is called a “generatable item.” 
         [0062]    Optimistic Fair Exchange of Generatable Items  
         [0063]    Now we describe a protocol for optimistic fair exchange of generatable items. It is executed between two players A and B, with A sending item A  and B sending item B . A&#39;s expectation is desc B  (i.e., A expects that it will receive an item that matches description desc B ); similarly B&#39;s expectation is desc A . We assume a one-way function f( ). Both players have already agreed on desc A , desc B , and the identity of the third party to be used (T) before beginning the fair exchange protocol (by means of some external negotiation protocol executed between A and B prior to starting the fair exchange protocol).  
         [0064]    Main Protocol  
         [0065]    The main protocol is illustrated in FIG. 1. It includes following steps:  
         [0066]    1. A does the following.  
         [0067]    a. chooses a random string r from the domain of f( ) and computes an authenticator v=f(r).  
         [0068]    b. sends v to B and runs the permit transfer protocol by invoking a procedure bind(item A ,desc B ,v,T) which constructs and sends perm A  to B and locally outputs a permit perm A .  
         [0069]    2. In the meantime, B receives v and participates in the permit transfer protocol by invoking a procedure verify(desc A ,item B ,v,T) which receives and verifies perm A ; if the verification succeeds, the permit is locally output; otherwise an error is signalled.  
         [0070]    a. If the permit transfer protocols signals error, B halts. (*)(Meaning of asterisk is explained below.)  
         [0071]    b. Otherwise B runs its own permit transfer protocol by invoking bind(item B ,desc A ,v,T) which constructs and sends perm B  to A and locally outputs a permit perm B .  
         [0072]    3. A participates in the permit transfer protocol by invoking a procedure verify(desc B ,item A ,v,T) which receives and verifies perm B ; if the verification succeeds, the permit is locally output; otherwise an error is signalled.  
         [0073]    a. If the permit transfer protocols signals error, A invokes sub-protocol abort. (*)  
         [0074]    b. Otherwise A sends item A  to B.  
         [0075]    4. B verifies that item A  matches its expectation desc A .  
         [0076]    a. If the match fails, B invokes sub-protocol B-resolve. (*)  
         [0077]    b. If the match succeeds, B sends item A  to A and halts.  
         [0078]    5. A verifies that item B  matches its expectation desc B .  
         [0079]    a. If the match fails, A invokes sub-protocol A-resolve.(*)  
         [0080]    b. If the match succeeds, A halts.  
         [0081]    Each party may decide to give up at any stage, independently of the behavior of the other party. For example, either party may set up local timers whenever they start to wait for a message. If the timer runs out before the expected message is received, it can decide to give up. The steps above marked with ‘*’ ( 2   a ,  3   a ,  4   a , and  5   a ) indicate the action to be taken on deciding to give up. For example, if A times-out while waiting for a reply after sending (step  1   b ) the first message from B, A will invoke sub-protocol abort (step  3   a , which is the next step specifying an action for A marked with a ‘*’).  
         [0082]    Recovery Protocols  
         [0083]    The third party T maintains a database about exchange transactions it has dealt with so far. Note that this database will not contain information about those exchange transactions that were concluded successfully without involving T (i.e., the large majority of transactions). Transactions are identified by the authenticator strings embedded in the permits of a transaction. T handles each request atomically; in particular when T makes a read access to its database followed immediately by a write access in a given transaction, the pair of accesses are done atomically.  
         [0084]    Sub-protocol Abort  
         [0085]    The subprotocol for requesting a termination is illustrated in FIG. 2. It includes following steps:  
         [0086]    1. A sends an abort request with perm A  and r to T.  
         [0087]    2. T checks to see if its database has an entry (“deposited”,f(r)), item B ); if there is one, T extracts the item embedded in item B  and returns it to A.  
         [0088]    3. Otherwise, T checks to see if its database has an entry (“no-abort”,f(r)); if there is one, T sends an “abort not allowed” message to A.  
         [0089]    4. Otherwise T atomically adds (“abort”,f(r)) to the database and sends an “exchange aborted” message to A.  
         [0090]    Sub-protocol A-resolve  
         [0091]    The resolving protocol for party A is illustrated in FIG. 3. It includes following steps:  
         [0092]    1. A sends a resolve request with perm B  and r to T.  
         [0093]    2. T extracts the authenticator v from perm A  and checks whether it is the same as f(r); if it is not, it sends an “invalid resolve request” message to A.  
         [0094]    3. T checks to see if its database has an entry (“abort”,f(r)); if there is one, T sends an “exchange aborted” message to A.  
         [0095]    4. Otherwise T atomically adds (“no-abort”,f(r)) to the database, extracts the item embedded in perm B  and returns it to A.  
         [0096]    Sub-protocol B-resolve  
         [0097]    The resolving protocol for party B is illustrated in FIG. 4. It includes following steps:  
         [0098]    1. B sends a resolve request with perm A , and item B  to T.  
         [0099]    2. T extracts the authenticator v from perm A  and checks to see if its database has an entry (“abort”, v); if there is, T sends an “exchange aborted” message to B.  
         [0100]    3. Otherwise T checks to see if item B  matches the description embedded in perm A ; if it is not, T sends a “invalid resolve request” message to B.  
         [0101]    4. Otherwise T adds a (“deposited”,v,item B ) entry to its database, extracts the item embedded in perm A  and returns it to B.  
         [0102]    Variations  
         [0103]    (a) The names A and B are not explicitly specified as input parameters to the procedures; this reflects our intention to be general enough to cover embodiments which allow A and B to remain mutually (as well as towards T) anonymous. But where necessary, the identifiers can be specified as part of the items and descriptions. Also, note that even when A and B are mutually anonymous, they need to use some sort of communication address to send protocol messages to each other. But these addresses are typically one-time addresses which are not related to the names.  
         [0104]    (b) If A and B do not want T to learn the actual items being exchanged, they can first apply a mutually agreed upon conversion procedure to their respective value items and exchange only the modified value items. At the end of the exchange, the actual items can be recovered from the modified value items by applying an opposite recovery procedure. This way, T may only learn about the modified value items which can be constructed in a way so that they reveal no information about the actual value items. A trivial way to do this is for the sender to encrypt the item with the recipient&#39;s public key and using the result in the fair exchange protocol The discussion below about verifiable encryption in fact uses an embodiment with this property.  
         [0105]    (c) In theory, the database records of T must be stored forever; in practice, T can announce a policy of expiring transaction records after a certain period of time.  
         [0106]    Constructing Permits  
         [0107]    There are various ways of implementing permits with the specified properties. The essential binding property can be provided by a secure cryptographic primitive which is resistant to adaptive attacks. Below, we outline two ways of constructing permits: a specific example using digital signatures, and a general method using a binding technique known as “verifiable encryption.” 
         [0108]    Constructing Permits Using Digital Signatures: an Example  
         [0109]    We illustrate the use of digital signatures to construct permits by considering a specific example of fair exchange: contract signing. The goal is for A and B to obtain each other&#39;s non-repudiable commitments on some previously agreed upon contract text, text.  
         [0110]    The generic exchange protocol is instantiated as follows:  
         [0111]    A&#39;s item is of the form item A =Sig A (A, B, text) (where Sig A  indicates a digital signature using A&#39;s signature key) and B&#39;s item is of the form item B =Sig B (A, B, text).  
         [0112]    A&#39;s permit sent in the first flow is of the form perm A =Sig A (A, B, text, v, T). B&#39;s permit sent in the second flow is of the form perm B =Sig B  (A, B, text, v, T). The contract text ‘text’ and the names of the players constitute the descriptions of the expected items as well as the item to be generated by T on presentation of a permit.  
         [0113]    During the execution of either resolve protocol, T is presented with both permits perm A  and perm B . If the permits are formed properly, T issues a replacement contract, of the form Sig T (A, B, text, v, perm A , perm B ).  
         [0114]    During the abort protocol, T checks that the request is accompanied by a valid pre-image of v, and if so, issues an abort token of the form Sig T (A, B, text, v, “abort”).  
         [0115]    If an exchange is already aborted, then T should respond with the abort token to any subsequent resolve request for the same exchange; similarly, if an exchange is already resolved, T should respond with the replacement contract to any subsequent abort request for the same exchange.  
         [0116]    A valid contract is either the pair (item A , item B ) or the replacement contract. This protocol is therefore invasive, because we take the liberty of specifying the format of a valid contract. On the other hand, the two forms of a valid contract help make it clear if T was involved in resolving an exchange. The protocol requires that for any given exchange, T can either issue a replacement contract or an abort token but not both. Thus, if T misbehaves by sending an abort token to one player and a replacement contract to the other, and the player who received the replacement contract attempts to enforce it, then the other player can prove that T misbehaved by producing the abort token received. This makes T accountable with respect to this specific type of misbehavior.  
         [0117]    Constructing Permits Using Verifiable Encryption  
         [0118]    In the following, we focus on building permits using verifiable encryption and using them in the optimistic fair exchange protocol. In the next section, we show how to construct permits for elements of an algebraic group for which a suitable surjective group homomorphism exists. Quite often, value items in electronic commerce are represented by digital signatures, electronic coins, electronic checks etc. It is possible to reduce these value items to homomorphic inverses. Thus, if we can construct a fair exchange protocol to exchange group elements, we can use it to exchange more general value items as well. We return to this discussion later.  
         [0119]    Suppose s is a secret element of a group G 1 . Suppose further that there exists a surjective homomorphism Θ which maps a given element of group G 1  to to an element of group G 2 . The description of s is d=Θ(s). If Θ is one-way, it is infeasible to compute s given d. We assume that the representation of d contains all the necessary information to describe the groups involved and how to compute the homomorphism.  
         [0120]    A verifiable encryption scheme for such group elements is defined by a verifiable encryption protocol, and a corresponding decryption algorithm. In the verifiable encryption protocol,  
         [0121]    a prover P participates by invoking a procedure VE which takes s|x (where s represents a value item and is an element of G 1 , x is some arbitrary string, and “|” symbol indicates the encoding of two bitstrings to produce a new bitstring such that the original bitstrings can be recovered from the resulting bitstring; an example of such an encoding is concatenation), and  
         [0122]    a verifier V participates by invoking a procedure VV with d|x as input which will output a valid verifiable encryption c of s|x if the prover had invoked VE with s|x.  
         [0123]    The decryption algorithm takes a ciphertext c and a string x and return a plaintext s if c was constructed by a prover invoking VE with s|x as input.  
         [0124]    Now we briefly describe how to use permits based on verifiable encryption in the optimistic fair exchange protocol. Suppose the value item of a participant P (which can be either A or B) in a fair exchange is an element s of group G 1 . The other participant (V) in the exchange therefore already knows the description of this secret d=Θ(s). We choose a verifiable encryption scheme (see below for concrete embodiments) so that only T can decrypt verifiable encryptions.  
         [0125]    When P invokes the bind procedure to construct and transfer the permit, it starts the verifiable encryption protocol with VE(s|desc V |v|T), where desc V  and v are as described in the previous section. The string “desc V |v|T” indicates the access conditions checked by T during abort/resolve protocols: recall that in the case of player A, T entertains abort/resolve requests only if A includes an authenticator r in its requests such that v=f(r); in the case of player B, T entertains a resolve request only if B includes an item that matches desc B .  
         [0126]    When V invokes the verify procedure to receive and verify the permit, it in turn invokes procedure VV(d|desc V |v|T), which, if successful, results in a verifiable encryption being output. When T receives a permit of the form VE(s|desc V |v|T) from V as part of a resolve request, it executes the procedure VD to decrypt the permit, perform the checks as mentioned in the previous sections, and if they succeed, return s to the requester.  
         [0127]    Implementing Verifiable Encryption  
         [0128]    First we describe two concrete techniques to implement verifiable encryption. We write the groups additively (i.e., group operations are indicated by the symbols + and −).  
         [0129]    Verifiable Encryption with Off-line Coupons  
         [0130]    First we describe a verifiable encryption scheme using “off-line” coupons which are constructed in advance. Recall that the goal is for the prover to produce a verifiable encryption c of a group element s concatenated with an arbitrary string b so that  
         [0131]    the third party can recover s given c, and  
         [0132]    the verifier who already knows d=Θ(s) can verify that c does in fact contain an encryption from which the VD procedure can recover s|b.  
         [0133]    The procedure is as follows:  
         [0134]    Preprocessing  
         [0135]    T has a public-/private-key pair in some standard public key encryption system resistant against adaptive chosen ciphertext attacks (e.g., the Cramer-Shoup encryption algorithm or the RSA encryption algorithm with OAE padding). We use E( ) to denote encryption with T&#39;s public encryption key and D( ) to denote the corresponding decryption with T&#39;s private decryption key. To encrypt a message m, one would choose a random string t of a length specified by the encryption system and compute the ciphertext as E(t,m). T also has a public-/private-key pair in some standard digital signature scheme (e.g., DSS). All players possess authenticated copies of T&#39;s public keys.  
         [0136]    During an initialization step, a player P sends a coupon request to T.  
         [0137]    1. Upon receiving this request, T does the following:  
         [0138]    a. generate a random element s′ in G 1  and compute d′=Θ(s′),  
         [0139]    b. generate a new key-pair (PK,SK) for some digital signature scheme,  
         [0140]    c. generate a random string t, and then a coupon coup of the form &lt;d′, E(t, s′), PK&gt; and sign it to produce a certificate cert, and  
         [0141]    d. send the coupon and cert to P along with the signing key SK and the secret s′.  
         [0142]    2. P stores the set of values received from T  
         [0143]    P can request several such coupons at a time.  
         [0144]    Verifiable Encryption  
         [0145]    Later P wants to send a verifiable encryption of a group element s and some arbitrary string x to V. V already knows the description d=Θ(s). In procedure VE, P carries out the following steps:  
         [0146]    P.1 choose one of the stored set of values containing &lt;coup, cert, s′, SK&gt;,  
         [0147]    P.2 compute s″s+s′,  
         [0148]    P.3 construct p=Sig SK  (E(t, s′)|x) (where “Sig SK ” indicates a digital signature with the SK as the signature key), and  
         [0149]    P.4 send p, s″, the coupon coup and its certificate cert to V.  
         [0150]    In procedure W, V carries out the following steps to receive and verify the encryption.  
         [0151]    V.1 receive p, s″, the coupon coup and its certificate cert from P,  
         [0152]    V.2 compute d″=Θ(s″), and check if it is the same as d+d′; if not, signal an error and quit,  
         [0153]    V.3 otherwise verify each of the following steps; if any of the verifications fail, signal an error and quit:  
         [0154]    a. verify, using T&#39;s signature verification key, that cert is a valid signature by T on coup,  
         [0155]    b. verify, using PK, that p is a valid signature on E(t, s′)|x,  
         [0156]    c. store s″ for use during recovery.  
         [0157]    In procedure VD, T receives the verifiable encryption (consisting of p, the coupon coup and its certificate cert) as input and carries out the following steps to decrypt it:  
         [0158]    T.1 verify each of the following steps; if any of the verifications fail, signal an error and quit:  
         [0159]    a. verify, using T&#39;s signature verification key, that cert is a valid signature by T on coup, and  
         [0160]    b. verify, using PK, that p is a valid signature on E(t, s′)|x,  
         [0161]    T.2 if the access conditions encoded in the string x are met, decrypt E(t, s′) and output s′, otherwise signal an error and quit.  
         [0162]    VD does not output the real secret s; but it can be recovered by combining s′ with the stored component s″ to produce s=s″−s′. Notice that this implies that when using this embodiment in the optimistic fair exchange protocol T (which executes procedure VD) gains no information about the value item s being exchanged. This avoids the need to trust T with the contents of the value items being exchanged.  
         [0163]    Variations  
         [0164]    The following variations are possible:  
         [0165]    (a) In the preprocessing stage, the requester of coupons can generate s′ and the (PK, SK) pair on its own and send s′ and PK to be embedded into the coupon; in this case, T never learns the secret signature key SK.  
         [0166]    (b) The use of one-time (PK,SK) pairs allow the participants&#39; real identities to be hidden from each other as well as from T. When this anonymity is not necessary or possible, the requester could instead use its long term digital signature key pair.  
         [0167]    (c) E( ) can be the encryption algorithm in a symmetric key encryption scheme, where the encryption/decryption key is known only to T.  
         [0168]    (d) Instead of including an encryption of s′ in the coupon, T might store s′ on its database, and include only a reference to it in the coupon.  
         [0169]    Varifiable Encryption with a Zero-knowledge Proof  
         [0170]    The off-line coupon based scheme described above is very efficient but requires some preprocessing. Now we describe a verifiable encryption scheme using a zero-knowledge proof protocol which does not require any preprocessing, at the cost of a more expensive protocol in terms of sizes of messages exchanged between the two parties.  
         [0171]    The scenario is as usual: P wants to send a verifiable encryption of a group element s and some arbitrary string x to V. V already knows the description d=Θ(s). In procedure VE, P begins with the following steps:  
         [0172]    P.1 choose a random element s′ of group G 1 , and compute d=Θ(s′),  
         [0173]    P.2 compute s″=s+s′,  
         [0174]    P.3 pick another random string t and compute p=E(t, s′|x), and  
         [0175]    P.4 send p and d′ to V.  
         [0176]    V begins procedure W with the following steps:  
         [0177]    V.1 receive p, s′ from P,  
         [0178]    V.2 randomly choose b as either 0 or 1 and send it to P.  
         [0179]    P continues as follows:  
         [0180]    P.5  
         [0181]    a. if b=0, send s′ and t to V  
         [0182]    b. if b=1, send s″.  
         [0183]    V continues as follows:  
         [0184]    V.3  
         [0185]    a. if b=0, compute p′=E(t, s′|x) and check if p′ is the same as p; if not, signal an error and quit  
         [0186]    b. if b=1, check if Θ(s″)−d is the same as d′; if not, signal an error and quit  
         [0187]    c. otherwise, store p received earlier as a valid permit  
         [0188]    If b=1, at the end of the procedure, V will have a verifiable encryption. This happens only 50% of the time since b is chosen randomly. However, the whole process is repeated N times (N=40 should be sufficient); since b is chosen randomly, it is unlikely that it will be 0 each time; consequently V will have a high probability of ending up with at least one usable verifiable encryption.  
         [0189]    In procedure VD, T receives the verifiable encryption (consisting of p) and input and carries out the following steps to decrypt it:  
         [0190]    T.1 decrypt p and extract the second component s′|x,  
         [0191]    T.2 if the access conditions encoded in the string x are met, output s′ otherwise, signal an error and quit.  
         [0192]    Variations  
         [0193]    The following variations are possible:  
         [0194]    (a) Instead of sending p in step P.4 above, P might apply a collision-resistant one-way hash function h( ) and send the resulting commitment h(p) to V. Later, if V chooses b=1, P can send p.  
         [0195]    This will reduce the overall communication complexity. It can be reduced even further by combining the commitments of all N initial permits into a single hash.  
         [0196]    (b) A standard technique to convert interactive proof protocols into non-interactive ones is to compute the challenge b as a hash of other parameters. In this case, N should be increased to about 80.  
         [0197]    Reduction Procedures  
         [0198]    As mentioned before, various types of common value items can be reduced to homomorphic inverses. Thus, these value items can be exchanged using the techniques described so far by first reducing them to group elements, then exchanging group elements as described, and finally recovering the value items from the exchanged group elements by a reverse reduction.  
         [0199]    Consider a digital signature scheme. Suppose PK is a verification key in the scheme, with a corresponding signing key SK. Suppose the signature of a message m using the signing key SK under this signature scheme is σ.  
         [0200]    A generic reduction scheme to reduce the signature scheme to a group homomorphism Θ which maps elements of G 1  to G 2  consists of:  
         [0201]    a reduction algorithm which takes PK, m, and σ, and outputs an element s of G 1 , an element d of G 2  such that d=Θ(s) and a string c  
         [0202]    a verification algorithm which takes PK, m, d, and c as input and outputs “accepted” if c and d were part of the output of running a reduction algorithm with PK, m, and a valid signature on m with respect to PK, as input.  
         [0203]    a recovery algorithm which takes PK, m, c, and s as inputs and outputs a string σ′ as output where σ′ will be a valid signature on m with respect to PK, if c and s were part of the output of running the reduction algorithm with PK, m, and a valid signature on m with respect to PK, as input.  
         [0204]    RSA Signature Scheme  
         [0205]    Reduction for the RSA signature scheme is straightforward. Here, the public key consists of a number n which is the product of two prime numbers p and q and a number e which is relatively prime to (p−1)(q−1); the private key is a number k such that e.k−1 mod (p−1)(q−1). The signature on a message m is typically computed by applying a one-way hash function h( ) to m to produce a hash and raising the result to its kth exponent: i.e., σ=h(m) k  mod n.  
         [0206]    The homomorphic inverse operation is the e-th root finding. The group involved is Z n . The group operation is multiplication modulo n. The reduction algorithm takes (n,e), m, and σ=h(m) k  mod n as input and outputs, s=σ, d=h(m), and nothing for c. The verification algorithm takes (n,e), m, d=h(m) as input and outputs “accepted” if d is the same as h(m). The recovery algorithm simply returns σ.  
         [0207]    Reduction for Other Schemes  
         [0208]    Various other schemes can be reduced to a group homomorphism Θ to make them easily suitable for the fair exchange protocol of present invention. Such schemes include e.g.  
         [0209]    the DSS signature scheme;  
         [0210]    the Schnorr signature scheme; or  
         [0211]    Stefan Brands&#39; scheme for anonymous off-line electronic coins.  
         [0212]    For more details on these reduction techniques, see N. Asokan, V. Shoup, M. Waidner: Optimistic Fair Exchange of Digital Signatures; IBM Research Report RZ 2973.