Method for electronic merchandise dispute resolution5878139Abstract A system for open electronic commerce having a customer trusted agent securely communicating with a first money module, and a merchant trusted agent securely communicating with a second money module. Both trusted agents are capable of establishing a first cryptographically secure session, and both money modules are capable of establishing a second cryptographically secure session. The merchant trusted agent transfers electronic merchandise to the customer trusted agent, and the first money module transfers electronic money to the second money module. The money modules inform their trusted agents of the successful completion of payment, and the customer may use the purchased electronic merchandise. Claims I claim: Description FIELD OF THE INVENTION
______________________________________
##STR1##
##STR2##
Where
PTS = Primary Trusted Server
PK = Public Key
TS = Trusted Server .sigma. = digital signature
TA = Trusted Agent Cert = Certificate
.parallel. = Concatenate
E = Algorithm with
id = identification number
private key used for
encrypting and for
creating digital
signature
______________________________________
The certificate validation protocols are: 1) Validate Cert(TS) a) D.sub.PTS (E.sub.PTS (X.parallel..sigma..sub.PTS (X)))=X.parallel..sigma..sub.PTS (X) b) Check if date is valid c) Check if D.sub.PTS (.sigma..sub.PTS (X))=h(X) 2) Validate Cert(TA) a) Validate Cert(TS) b) D.sub.TS (E.sub.TS (Y.parallel..sigma..sub.TS (Y)))=Y.parallel..sigma..sub.TS (Y) c) Check if date is valid d) Check if D.sub.TS (.sigma..sub.TS (Y))=h(Y) Where h=hash function used in creating and checking digital signature (i.e., one-way function) D=Algorithm with public key used for decryption and for checking digital signature .sigma.=E/h Note E and D may also be used for decrypting and encrypting, respectively, when applied in other applications. The Trusted Agency in addition to its role during system component fabrication and initialization also provides ongoing security for the system by recertifying trusted agents 120 and trusted servers 200 and providing system-wide information on updated untrusted lists and updated PTS(PK) lists. Trusted agents 120 and trusted servers 200 must be periodically recertified because their certificates are given an expiration date. Trusted servers 200 periodically recertify in order to protect overall system security by changing their cryptographic keys. A time limit is placed on a trusted agent's ability to transact so that if someone breaks into the system he can only use his trusted agent 120 for a predetermined maximum time period (e.g., three months) before needing to recertify. During recertification trusted agents 120 connect with the Trusted Agency to get security information (e.g., updated untrusted lists) and to receive an updated PTS(PK) list. The public key associated with each primary trusted server 210 never changes. If new primary trusted servers 210 are implemented or old primary trusted servers 210 decommissioned then these corrections to the PTS(PK) list are broadcast to the trusted servers 200 on the Trusted Agency Network 208. These list changes are then distributed to the trusted servers 200 at the identification authority networks 202 and the merchant networks 192, and may be requested by and transferred to trusted agents 120 at any time. Also, list changes are always distributed to trusted agents 120 when their certificates expire and they recertify. New PTS(PK)s are distributed before they are implemented in order to eliminate the possibility of a trusted agent 120 not having them when needed for certificate validation. The identification numbers of trusted agents 120 or trusted servers 200 which have been identified as untrusted are placed on an untrusted list and distributed by the primary trusted servers 210 to the trusted servers 200 and ultimately to the trusted agents 120 in the same fashion as the PTS(PK) list. Merchants which are deemed untrustworthy will have their trusted servers 200 decommissioned by the Trusted Agency and made identifiable to the trusted agents 120. FIG. 6B shows the functional components of a trusted server 200 or a primary trusted server 210. A Communications function 214 provides an interface to the local network. A Session Manager function 216 manages inter-server and server-to-agent sessions. A Security Manager function 218 establishes secure communications. An Untrusted List Manager 220 provides updates to the list of untrusted agents, servers and organizations. A Certify function 222 manages the recertification of trusted agents 120 for the trusted server 200. In the case of the primary trusted server 210, this process recertifies trusted servers 200. A Resolve Dispute function 224 receives tickets 8 and electronic objects (merchandise) to resolve customer complaints. A Cryptography function 228 provides symmetric and public key cryptography to secure communications and authenticate counterparties. A Date/Time function 226 provides current date, time, and time zone information for certificate validation. The question of trusted agent 120 malfunction or loss is similar to the loss of a receipt, airline ticket, etc. In cases where loss or malfunction need to be overcome, transactor identities may be needed. This can be accomplished by using credentials which identify the customer and the trusted agent 120. The credential and ticket 8 can be saved separately as secondary records. In case of agent malfunction the customer can pursue a dispute as he/she would today by presenting these secondary records. Flow Charts The flow charts shown in the following figures use the designations "A" and "B" to indicate two interacting trusted agents 120, or a trusted agent 120 to trusted server 200 interaction. The same designations A and B, may also be applied to the host processor 124 or money module 6 associated with a particular trusted agent 120 (i.e., within the same transaction device 122). The flow charts indicate the functional component primarily responsible for carrying out a given task. For example, SECURITY MANAGER A means that the recited task is carried out by the Security Manager function 144 (see FIG. 4A) in trusted agent A. The flow charts also call subroutines some of which use parameter designations X and Y. For example, ESTABLISH SESSION A.fwdarw.B is a call to the subroutine Establish Session. The Establish Session flow chart should then be followed with the understanding that X=A and Y=B throughout the flow. Abort And Commit In transaction processing of the type contemplated it is desirable to pass electronic items such as tickets 8 and electronic notes between two parties, while maintaining a zero-sum game. In other words, it is undesirable to duplicate electronic items so that at the completion of an electronic transaction there are twice as many items as before the transaction. Similarly, it is undesirable to lose electronic items so that there are fewer items after the transaction than before. For example, if at the start of a transaction A has an electronic ticket 8 and wishes to pass it to B, then it is desirable to ensure that at the end of the transaction, B has the electronic ticket 8 and A does not have the electronic ticket 8. In the real world, however, it is possible to have two other outcomes, namely, both A and B have the same electronic ticket 8 (duplication) or neither A nor B have the electronic ticket 8 (loss). In order to render the likelihood of duplication or loss negligible, the transaction protocol must take into account the possibility that natural or intentional events may interrupt a typical transaction flow. A natural interruption is exemplified by a breakdown of the communications link between A and B during the transaction. To minimize the possibility of duplication or loss from such a random event the window of opportunity for creating a duplication or loss must be minimized. In order to minimize intentional interruptions (i.e., overt attacks), it is desirable to eliminate the economic incentive for such an attack. For example, if an attacker could only lose the tickets and or the money by trying to interrupt a transaction, the attacker would have no incentive to initiate the attack in the first place. These concepts are embodied in the efficient transaction protocols of the described system. In particular, it is desirable to ensure consistent abort and commit states between the two transacting trusted agents 120 (or money modules 6). For example, if A commits to a transaction, then B should also commit to the transaction; or, if A aborts the transaction, then B should also abort the transaction. To achieve consistency and minimize the possibility of duplication or loss (in the event there is an inconsistency) the transaction protocols take into account the order and timing of A's and B's committing to a given transaction. FIG. 7 shows two subroutines, Abort and Commit. The abort subroutine is internally executed within a given trusted agent 120 when the transaction it is involved in fails. The abort subroutine rolls back or returns the trusted agent 120 to the exact state it was in prior to being involved with the failed transaction. Conversely, the commit transaction is internally executed within a given trusted agent 120 when the transaction it is involved in has been successfully completed. The trusted agent 120 therefore records the completed transaction in its transaction log and is now ready for a new transaction. For example, during a ticket transfer transaction an electronic ticket 8 is passed from trusted agent A to trusted agent B. Since at this point in time neither A nor B have committed or aborted the transaction, A provisionally retains the ticket 8 while B provisionally also has the ticket 8. If both A and B commit then A will delete its ticket 8, and B's retention of the ticket 8 will no longer be provisional. If, however, both A and B abort then A will retain its ticket 8 and the ticket 8 that B was retaining provisionally will be deleted by rolling back the transaction. Note that the deletion operation may be implemented in various ways well known in the art. As mentioned before, it is desirable to minimize the possibility of one trusted agent 120 committing while another trusted agent 120 aborts because this may in some limited circumstances result in duplicating or losing electronic items. A similar situation exists with respect to money modules 6 exchanging electronic notes. During a purchase transaction, electronic notes are passed from money module A to money module B, so that A provisionally decrements its electronic notes (by the amounts transferred) while B provisionally has electronic notes (in the transferred amount). If both A and B commit then A will retain the notes in the decremented amounts and B's retention of the electronic notes will no longer be provisional. FIG. 7A shows the commit subroutine. Tran Log X updates the transaction log. To Host X notifies the host that the transaction is complete. Session Manager X notes the end of the session. (Steps 230-234). FIG. 7B shows the abort subroutine. Session Manager X rolls back changes and notes agent aborted. The Session Manager keeps track of what has been done since the start of a session and when rolling back undoes these steps. To Host X sends a message to the host that the transaction is aborted. (Steps 236-238). The abort subroutine may be called directly from a flow diagram, for example, when a trusted agent 120 determines that a certificate is not valid. The abort subroutine may also be called when an expected action does not occur. In particular, when two trusted agents 120 are communicating, they will be monitoring a time-out protocol. For example, after a first trusted agent 120 has sent a message to a second trusted agent 120, the Session Manager of the first trusted agent (A) will set a timer for a reply if a reply is required. The Session Manager may also number the message sent. This number would appear in the reply message from the Session Manager of the second trusted agent (B). If the timer expires before the message has been received, then Session Manager A will query Session Manager B to determine if the transaction is still running in B. If B does not reply then Session Manager A will abort the transaction. If a reply is received that the transaction is proceeding, then the timer will be reset to a new time. If A queries B a predetermined number of times without receiving a reply to the original message, then A will abort the transaction. A similar time-out function exists in the money modules 6. Recertify Trusted Agent FIG. 8 shows the flow chart for recertifying a trusted agent. When the owner of trusted agent A decides to recertify his agent, typically after or near the expiration date of his current cert (TA), a host transaction application from the host processor embedded in his transaction device connects to a trusted server B (steps 240-242). An Establish Session subroutine is called (step 244) for setting up a cryptographically secure communication channel between trusted agent A and trusted server B. Referring to FIG. 9, the Session Manager of trusted agent A requests and then receives A's certificate (i.e., cert(TA)) from the Security Manager (steps 296-298). Session Manager A then sends cert(TA) to trusted server B's Session Manager which, in turn, passes it along to its Security Manager (steps 300-304). Trusted server B's Public Key function verifies the cert(TA) by using the validation protocols described in the previous discussion on system security (steps 306-308). However, there is the caveat that when Establish Session is called during a revalidation procedure, the previously described certificate validation protocol does not terminate if it determines that the certificate has expired--that is the reason the trusted agent is recertifying. If cert(TA) is not valid, then Session Manager B notes that the session is terminated and informs Session Manager A that the transaction is denied. Session Manager A also notes that the session is terminated. (Steps 310-312). If cert(TA) is valid, then Security Manager B checks if trusted agent A is on the untrusted list (steps 314-316). If trusted agent A is untrusted, then the session is terminated (steps 310-312). If A is not on the untrusted list, then Random Number Generator B creates a random number R(B) and also a B verification message (step 318). The random number R(B) will eventually be used to form a session key. The B verification message is a random number used by B to protect against message replay. Next, Security Manager B assembles R(B), the B verification message, and cert(TS) into a message for trusted agent A (step 320). Public Key B encrypts the message using trusted agent A's public key (TA(PK)) which trusted server B received with A's cert(TA) (step 322). Session Manager B sends the encrypted message to A's Session Manager (steps 324-326). Public Key A decrypts the message using its private key (corresponding to its public key) and verifies the validity of cert(TS) (steps 328-330). If cert(TS) is invalid, then Session Manager A notes the session as terminated and sends a transaction denial message to B whose Session Manager also notes the session as terminated (steps 332-334). If cert(TS) is valid, then Security Manager A checks if trusted server B is on the untrusted list (steps 336-338). If trusted server B is on the list, the session is terminated (steps 332-334). If B is not on the untrusted list, then Random Number Generator A creates a random number R(A) and an A verification message (e.g., another random number) (step 340). The Date/Time function passes the current date and time to the Security Manager (step 342). Dates and times are exchanged by A and B for eventual recording in their trans logs during commits. Security Manager A then forms and stores session key (TA/TA) by exclusive ORing random numbers R(A) and R(B) (step 344). Session key (TA/TA) is used to encrypt communications between two trusted agents 120 or between a trusted agent 120 and a trusted server 200 (as in the present case where Establish Session is called during recertification). Session Manager A assembles a message containing the A and B verification messages, the date/time information, and R(A) (step 344). Public Key A encrypts the message with trusted server B's public key (received by A in cert(TS)) and sends the encrypted message to trusted server B's Session Manager (steps 346-350). Public Key B decrypts the received message using its secret key (corresponding to its public key) (step 352). Security Manager B checks if the B verification message received from A is the same B verification message it previously sent to A (steps 354-356). If it is not the same, then the session is terminated (steps 310-312). If it is the same, then Session Manager B notes the start of the session (step 358). Security Manager B forms session key (TA/TA) by R(A) XOR R(B) and then stores the session key (step 360). At this point, both A and B have created and stored the same session key (i.e., session key (TA/TA)) to be used for their current interaction in recertifying A's certificate. Next, Date/Time B sends its current date and time information to Security Manager B (step 362). Security Manager B assembles a message having an acknowledgement to A, the A verification message, and B's date/time information (step 364). The Send Message subroutine is then called (step 366) for sending the message from B to A. Referring to FIG. 10, trusted server B's Symmetric Key function encrypts the message using session key (TA/TA) (step 376). Message Interface B then formats the message and sends it to the host processor's Message Manager (step 378). Host Message Manager B then routes the message via Communications to Host Message Manager A in trusted agent A's host processor (step 380). Host Message Manager A then sends the message to trusted agent A's Message Interface which strips out the message (steps 382-384). Symmetric Key A decrypts the message with session key (TA/TA) thus completing the secure communication of a message between trusted server and trusted agent using session key (TA/TA) (step 386). Referring again to FIG. 9, Security Manager A receives the acknowledgement, A verification message and B's date/time information (step 368). Security Manager A checks if the A verification message is the same A verification message which A previously sent to B (steps 370-372). If it is not the same, then Session Manager A terminates the session (steps 332-334). If it is the same, then Session Manager A notes the start of the session (step 374). Referring back to FIG. 8, the recertification process continues. Security Manager A requests Public Key A to generate a new public and private key pair and, further, to digitally sign the new public key with the old private key (corresponding to the old TA(PK)) (steps 246-248). As has been described, a trusted agent's public and private key pair are used in establishing a session between trusted agents 120 or between a trusted agent 120 and a trusted server 200. Security Manager A assembles a message containing the new signed public key and the current version number of the untrusted list (step 250). Each change to the untrusted list will have a new version number, so the trusted server need only send changes to the list. The message is then sent to trusted server B using the Send Message subroutine (step 252). Trusted server B receives the message and checks if the digital signature on the new public key is valid (by using trusted agent A's old public key) (steps 254-258). If the signature is not valid, then the Abort Transaction subroutine (step 260) is called. Referring to FIG. 11, trusted server B aborts (step 388) and its Session Manager sends a message to trusted agent A's Session Manager informing A that B has aborted (steps 390-394). Trusted agent A then aborts (step 396). Referring back to FIG. 8, if the signature on the new public key is valid, then trusted server B creates a new certificate (cert(TA)) containing the new public key and a new expiration date. The new certificate is then sent back to A along with an untrusted list update and a PTS(PK) list update (steps 262-264). Security Manager A receives this message and has Public Key A check if the new certificate is valid (steps 268-270). If not a valid certificate then, Security Manager A checks if trusted server B has attempted to create a new certificate fewer than three times (step 274). If this is the case, then Security Manager A sends a message to trusted server B to retry creating the certificate (steps 280-284). If the trusted server is unable to create a valid cert(TA) then Tran Log A records the failed attempt and aborts the transaction (steps 276-278). If the trusted server sends a valid new cert(TA), then Security Manager A updates the cert(TA), the untrusted list, and the PTS(PK) list (step 286). Trusted agent A then commits (step 288). Security Manager A sends a message to the trusted server that the trusted agent has updated its certificate. Trusted server B then notes that A has been recertified. (Steps 290-294). Purchase Of Electronic Merchandise The purchase of electronic merchandise is described with reference to FIG. 12. Items purchased in accordance with the flow diagram of FIG. 12 include electronic objects and their associated decryption tickets, transportation tickets, event tickets and communications tickets. Credentials, on the other hand, are obtained using the Acquire Credential flow diagram (FIG. 26). A buyer transaction application (BTA) in the host processor 124 of a CTD 188 connects to the merchant server 194 of a merchant network 192. The BTA allows the buyer to browse the seller's merchandise and make a selection (steps 398-400). The BTA sends the identity of the selected merchandise to the merchant server 194 (step 402). The BTA then sends a message to trusted agent A (within the same CTD) instructing trusted agent A to buy and identifying the selected merchandise. Also, the merchant server sends a message to trusted agent B of the MTD 198 instructing trusted agent B to sell and identifying the selected merchandise (steps 404-406). A session is then established between trusted agent A and trusted agent B where both A and B may now communicate using the newly created session key (TA/TA) (step 408). Referring to FIG. 13, there is shown four encryption channels established during a purchase transaction. Encryption channel 436 between the two trusted agents 120 carries messages encrypted by session key (TA/TA). Channels 438 and 440 between a trusted agent 120 and its money module 6 share session key (TA/MM). Channel 442 between money modules 6 in different transaction devices 122 use session key (MM/MM). Referring again to FIG. 12, the Check Credential subroutine is called (step 410). All MTDs 198 contain a credential identifying the owner/merchant (e.g., NYNEX, Ticketron, etc.). Such merchant credentials may, for example, be issued by a merchant identification authority controlled by the Trusted Agency. On the other hand, customer credentials held by CTDs 188 may include driver's licenses or credit cards issued by various identification authorities. Referring to FIG. 14, Purchase A sends a message to Purchase B of trusted agent B requesting its merchant credential (steps 444-448). Ticket Holder B retrieves its merchant credential and sends the credential to A for validation (steps 450-456). Credentials or any other type of ticket 8 are validated as follows: 1) Validate issuer certificate and check issuer signature. 2) Verify each transfer--match receiver and sender identifiers (i.e., S.sub.o =Issuer, R.sub.o =1st receiver, then R.sub.i =S.sub.i+l, i.gtoreq.o). 3) Validate each sender certificate and check each sender signature. 4) Verify that the last receiver identifier matches the identifier (TA(id)) of the certificate (cert(TA)) of the trusted agent in the current session. If the merchant's credential is not valid, then the transaction is aborted (step 458). If the merchant's credential is valid, then To Host A sends the credential information to a host transfer application for confirmation (e.g., visual confirmation of merchant name by CTD holder) (steps 460-462). Referring again to FIG. 12, Purchase B requests the selected merchandise from the merchandise server, which retrieves the merchandise and sends it to Purchase B for identity validation (steps 412-418). If the item is incorrect, then merchandise retrieval is attempted twice more before the transaction is aborted (steps 420-422). If the correct merchandise is received by trusted agent B, then the Deliver Merchandise subroutine is initiated (step 424). Referring to FIG. 15, Purchase B checks if the merchandise will be embodied as only a ticket (as opposed to a decryption ticket and electronic object) (steps 464-466). If only a ticket, then Ticket Holder B creates the ticket (step 468). Purchase B then sends the ticket to trusted agent A (steps 470-472). Purchase A receives the ticket and checks if it is correct by comparing the expected merchandise identity (previously received from the BTA) with information in the ticket (steps 474-476). If not correct, then Purchase A identifies the transaction as a purchase and hence aborts the transaction (steps 478-482). If trusted agent A approves the ticket as correct, it then sends information from the ticket to a host transaction application for purchaser confirmation (steps 486-488). Such information allows the CTD holder to verify that he is getting the merchandise and price that he previously selected. If the ticket information is not correct, then the transaction is aborted (steps 478-482). If the ticket is correct, then Purchase A sends the ticket to Ticket Holder A for storage (steps 490-492). Trusted agent A now provisionally holds the ticket 8. If trusted agent A subsequently aborts, then the ticket 8 is deleted. If trusted agent A subsequently commits, then the owner/holder of A will be able to present the ticket 8. On the other hand, if the merchandise to be purchased consists of both an electronic object and its associated decryption ticket, then Random Number Generator B in merchant trusted agent B creates a random key (step 494). Symmetric Key B then encrypts the electronic object with the random key and Public Key B digitally signs the encrypted electronic object with the MTA's private key (steps 496-498). Ticket Holder B then creates a decryption ticket containing the random key, price, and other information (step 500). The owner of trusted agent A may now receive the encrypted electronic object from the merchant, but he will be unable to use it unless he has access to the random key contained within the associated decryption ticket. Purchase B sends the encrypted electronic object and the decryption ticket to trusted agent A (steps 502-504). Purchase A receives the message and passes the encrypted electronic object to the host and retains a copy of the encrypted header information (step 506). Concurrently, Public Key A verifies the encrypted electronic object's signature using B's public key (steps 508-510). If the signature is incorrect, then the transaction is aborted (steps 478-482). If the electronic object's integrity is verified, then Symmetric Key A decrypts the header with the random key from the decryption ticket (step 512). Purchase A checks the identity of the electronic object and the decryption ticket (steps 514-516). Such checking may be performed by comparing the expected merchandise identity with the electronic object's identifier and with information in the decryption ticket. Thus, it is assured that the selected merchandise, electronic object, and decryption ticket are all related. If the identity check fails, then the transaction is aborted (steps 478-482). If the electronic object and decryption ticket are correct, then Purchase A sends the decrypted header and price information to a host transaction application for purchaser confirmation (steps 518, 488). If the purchaser does not accept the merchandise, then the transaction is aborted (steps 478-482). If the purchaser accepts the merchandise, then Purchase A sends the decryption ticket to Ticket Holder A for storage (steps 490-492). Referring again to FIG. 12, now that the delivery of merchandise from merchant to customer is complete (and the merchandise is inaccessible to the customer due to its encryption and/or its storage within his trusted agent 2) Purchase A sends a message to a host transaction application requesting the customer's desired payment method (steps 426-428). Payment may be made in one of two alternative forms: by anonymous payment using a money module 6 or by authorization-based payment (requiring identification of the customer) using a credit card or debit card credential. If an anonymous payment is desired, then the Money Module Payment subroutine is called (step 430). Referring to FIG. 16, Random Number Generator A creates random number R(1) (step 520). Purchase A then sends a message to trusted agent B indicating that a "money module payment" will be made and also containing R(1) (step 522-524). Purchase B receives the message and sends R(1) to Security Manager B (steps 526-528). Random Number Generator B creates random number R(2) and sends it to trusted agent A (steps 530-532). Security Managers A and B both form session key (TA/MM) by exclusive ORing R(1) and R(2) (Steps 534-536). Referring to FIG. 13, session key (TA/MM) is used for encrypting messages sent between a trusted agent 120 and its associated money module 6 via encryption channels 438 and 440. At the present point in the flow diagram, only the two trusted agents 120 have session keys (TA/MM). Both money modules 6 will later in the flow diagram form copies of session key (TA/MM) so as to enable encrypted communication between the trusted agents 120 and their money modules 6. It may be noted that instead of the trusted agent 120 and money module 6 being embodied as discrete tamper-proof components, they may be fabricated as one tamper-proof module. In this case, it would not be necessary to establish a secure session for communication between trusted agent 120 and money module 6 in the same transaction device 122. However, discrete money modules 6 and trusted agents 120 are preferable in that such a configuration allows for greater application flexibility. Referring back to FIG. 16, To Money Module A sends a "Make Payment" message and R(1) to its associated money module A. Also, To Money Module B sends a "Receive Payment" message and R(2) to its associated money module B (steps 538-544). At this stage, money module A (within the CTA 2) and money module B (within the MTA 4) establish a session between them so that each money module 6 winds up holding new session key (MM/MM) (step 546). In establishing this money module to money module session, the money modules exchange messages via the pre-existing trusted agent's session. Referring to FIG. 13, the session key for encryption channel 442 is formed by exchanging messages encrypted by channel 436. After the money module session is established, messages sent between money modules will be encrypted twice, by both session key (MM/MM) and session key (TA/TA), along the portion of the communication path between trusted agents 120. In the preferred embodiment, the money module session is established in a manner similar to the establishment of a trusted agent session. The money modules 6 would therefore hold their own certificates containing their public keys. The swapping of certificates and random numbers (for XORing) enables the secure creation of session keys (MM/MM). The Establish Session protocol used by money modules is shown in FIG. 38 and described subsequently. The overall system security pertaining to the money modules may be integrated with that for the trusted agents 120, but is preferably separate to provide for enhanced system security and system flexibility. Referring back to FIG. 16, money module A sends R(1) to money module B. This function may be initiated by a MM Maintain Security A application residing in money module A (step 548). This application and other money module applications are prefaced by the designations "MM" and are described in PCT patent application WO 93/10503 together with any modifications and/or additions herein. Random number R(1) is sent from money module A to money module B by the subroutine Send Routed Message (step 550). Referring to FIG. 17, MM Symmetric Key A encrypts the message (including R(1)) with session key (MM/MM) (step 640). MM Session Manager A sends the message to Host Message Manager A which, in turn, sends the message to Message Interface A of trusted agent A (steps 642-646). Trusted agent A then sends the message to Message Interface B of trusted agent B using the Send Message subroutine (step 648) which encrypts and decrypts the message with session key (TA/TA) in between the trusted agents. Message Interface B then sends the message to MM Session Manager B in money module B via Host Message Manager B (steps 650-654). Finally, MM Symmetric Key B decrypts the message with session key (MM/MM) (step 656). Referring again to FIG. 16, MM Maintain Security B (in money module B) forms session key (TA/MM) by exclusive ORing R(1) and R(2). Money module B then sends R(2) to money module A which also forms session key (TA/MM) by exclusive ORing R(1) and R(2) (Steps 552-556). Referring to FIG. 13, at this stage, three session keys exist: (MM/MM), (MM/TA), and (TA/TA). Thus, the four encryption channels shown are in place. Referring to FIG. 16, MM To Subscriber A prompts trusted agent A for the amount of payment by type of note (e.g., dollars, yen, pounds, etc.) (step 558). A money module as described in PCT patent application 93/10503, incorporated by reference herein, would generally use the To Subscriber application for communication with the owner/holder of the money module. However, as used in the present instance, the To Subscriber application communicates with the trusted agent 120 for getting various instructions. Here, the trusted agent 120 delivers amount of payment and type of note information (trusted agent A has previously communicated with the owner/holder of the CTD 2 to confirm the price of the selected merchandise). The prompt from the money module 6 to the trusted agent 120 is sent via the Send MM/TA Message subroutine (step 560). Referring to FIG. 18, MM Symmetric Key A encrypts the message with session key (TA/MM) (step 658). MM Session Manager A sends the message to trusted agent A's Message Interface via Host Message Manager A (steps 660-664). Symmetric Key A decrypts the message with session key (TA/MM) (step 666). Referring back to FIG. 16, Purchase A of trusted agent A sends the amount (price of selected merchandise) by type of note to MM Pay/Exchange A of money module A (steps 562-566). This message is sent via the Send TA/MM Message subroutine (step 564). Referring to FIG. 19, Symmetric Key A encrypts the message with session key (TA/MM) (step 668). Message Interface A sends the message to money module A's MM Session Manager via Host Message Manager A (steps 670-674). Finally, MM Symmetric Key A decrypts the message with session key (TA/MM) (step 676). Referring to FIG. 16, MM Note Directory A checks if the money module 6 has sufficient funds to cover the payment (steps 568-570). If insufficient, then money modules A and B abort the transaction (steps 572-582). The MM Abort transaction protocol (step 582) of the preferred electronic monetary system is described subsequently and shown in FIG. 42. The messages between money module A and money module B are sent via a Send E-Routed Message subroutine which utilizes all three session keys (MM/MM), (TA/MM), and (TA/TA). Referring to FIG. 20, MM Symmetric Key A encrypts a message with session key (MM/MM) (step 678). The message is then double encrypted by session key (MM/TA) before it is sent to trusted agent A. Once received by trusted agent A, the message is decrypted by session key (MM/TA). (Step 680). Message Interface A then sends the message to Message Interface B (steps 682-684). In between trusted agents 120, the message is double encrypted by session key (TA/TA). In like manner, Message Interface B sends the message to MM Symmetric Key B for final decrypting (steps 686-690). FIG. 13 illustrates the various encryption layers. Referring again to FIG. 16, during the abort routines of money modules A and B (step 582), they generate messages sent to their trusted agents A and B, respectively (steps 584-586) informing them that they have aborted the transaction and hence that payment was unsuccessful. Session Managers A and B note that the payment was unsuccessful and consequently trusted agents A and B abort (steps 588-598). If, on the other hand, the customer's money module 2 has sufficient funds then MM Pay/Exchange A sends a message to the merchant's money module containing the amount of money to be transferred in payment and the type of notes (step 600). This message is sent by the Send E-Routed Message subroutine (step 602). Money module B receives the message containing the payment amount according to money module A. MM To Subscriber B then sends a prompt to trusted agent B to verify this payment amount (steps 604-606). Accordingly, Purchase B in trusted agent B verifies if the amount is correct (steps 608-610). If correct, then trusted agent B sends a "Correct Amount" message to money module B. If incorrect, then an "Incorrect Amount" message is sent. (Steps 612-616). In the event of an "Incorrect Amount" message, money module B informs money module A which, in turn, requests its trusted agent to resend a new amount or else abort (steps 618-622, 572-582). In money module payments made during an electronic merchandise purchase, the trusted agent will not send a new amount and hence both money modules 6 and both trusted agents 120 will abort. If, on the other hand, money module B receives a "Correct Amount" message from its trusted agent, then money module B sends an Acknowledgement message back to the customer's money module (steps 624-626). When MM Pay/Exchange A receives the Acknowledgement message, it then passes the amount to Money Holder A (the application which contains and manages the electronic representations of money) (step 628). Note that the payor initiated protocol just described may instead be implemented as a payee initiated payment as in the POS Payment protocol shown in FIG. 43 and described subsequently. In such a protocol, the merchant's trusted agent instructs its money module as to the payment amount it expects to receive, this payment information is sent to the customer's money module which prompts its trusted agent for verification, and if the amount is correct, then the customer's trusted agent informs its money module. Referring again to FIG. 16, the customer's money module A then transfers electronic notes in the amount specified to the merchant's money module 4 via the E-Routed message path (step 630). At this stage in the transaction, A provisionally retains a correct ticket 8 (and perhaps an encrypted electronic object) and B provisionally retains electronic notes in the correct amount. FIG. 39 shows a Transfer Notes protocol described subsequently. Next, a MM Commit subroutine is called (step 632). FIG. 41 shows the Commit protocol used in the preferred electronic monetary system. This flow diagram is still followed when money modules 6 are interacting with trusted agents 120 with the understanding that Send Message=Send E-Routed Message and that To Subscriber messages are actually sent encrypted to the trusted agent 120. With the foregoing in mind, money module B's MM Session Manager sends a "Ready-To-Commit" message to money module A's MM Session Manager via the send E-Routed Message subroutine (steps 1702-1704). MM Session Manager A then sends an "Acknowledgement" message to money module B and money module A commits (steps 1706-1716). When money module B receives the "Acknowledgement" message it too commits (steps 1718-1724). During the commit routines of money modules A and B, they generate messages sent to their trusted agents A and B, respectively (steps 1714, 1722) informing them that they have committed to the transaction and hence that the payment was successful. Referring again to FIG. 16, the money modules then both send the aforementioned "Payment Successful" messages to their trusted agents (steps 584-586). These messages are encrypted by session key (TA/MM). Session Manager A detects that a successful payment has been made and Ticket Holder A updates the ticket with payment information such as the date of purchase (steps 588, 592, 634). Trusted agent A then commits (step 636) so that its retention of the ticket is no longer "provisional". Similarly, Session Manager B detects a successful payment (steps 590, 594) and trusted agent B commits (step 638). The transaction is now complete. In summary, a secure purchase transaction in accordance with the preferred embodiment of the present invention occurs as follows: (1) a secure transaction session is established between the buyer's and seller's money modules, between the buyer's and seller's trusted agents, and between the money module and trusted agent of each transaction device; (2) selected electronic merchandise is transferred from the seller's trusted agent to the buyer's trusted agent (where it is retained provisionally)--in the event that the electronic merchandise includes an electronic object, the electronic object is encrypted so that it may be stored outside of the trusted agent; (3) after verifying the correctness of the transferred electronic merchandise, the buyer's trusted agent instructs its money module to pay a certain amount of electronic money to the seller's money module; (4) the buyer's money module informs the seller's money module of the amount of electronic money to be paid to it and the seller's money module checks with its trusted agent to verify that this is the correct price of the merchandise; (5) if the amount is correct, the seller's money module sends an acknowledgement to the buyer's money module; (6) the buyer's money module transfers the electronic money to the seller's money module (the seller's MM provisionally retains the note(s) and the buyer's MM provisionally decrements the value of the note(s) in the transferred amount); (7) both the buyer's and seller's money modules commit (the seller MM's retention of the note(s) is no longer provisional and the buyer's MM retains the new value(s) of the note(s)) and, in so doing, send "payment successful" messages to their respective trusted agents; (8) finally, both the buyer's and seller's trusted agents commit (the seller's trusted agent records the sale and the customer trusted agent's retention of the merchandise is no longer provisional), so that the buyer can now use his/her electronic merchandise and the seller has his/her electronic money. It may be noted that in an alternative embodiment, the order of exchanging electronic merchandise and money may be reversed. In such a case, the electronic money may be transferred (provisionally) first followed by the (provisional) transfer of the electronic merchandise. The customer's trusted agent would then instruct its money module to commit, and the transaction would proceed as previously described. Such an alternative embodiment would require modifying the money module payment protocols accordingly. We have shown how to secure simultaneous payment to delivery of electronic merchandise over a communication network where the seller does not know the identity of the buyer. This is a direct analogy to a buyer purchasing merchandise in a store with cash. The store clerk does not know the identity of the customer, but will sell to him for cash. The customer trusts he will get the merchandise since he is in physical proximity to the clerk across the "counter". We have produced with the above protocol an electronic "counter" across which the customer's trusted agent 2 and merchant's trusted agent 4 can transact as securely as in the physical analogue. In addition to anonymous money module payments, the trusted agent 120 also provides a secure platform for providing identity-based transactions, i.e., transactions requiring disclosure of the customer's identity. Examples of such transactions are credit or debit card payments, opening a checking account, purchase of an item which requires buyer registration such as a car or truck or paying a bill or invoice. Today it is risky for a merchant to remotely accept a credit or debit card number for payment and deliver the merchandise to other than the customer address. If the transaction is fraudulent, the merchant is responsible. However, the merchant could take the card number as part of a trusted agent's credential, which would be secure enough for the card issuer to take the risk of fraud. Referring back to FIG. 12, if instead of an anonymous money module payment, the customer decides to pay via a credit or debit card credential, then the Authorization-Based Payment/Refund subroutine is called (step 432). Referring to FIG. 21, Ticket Holder A retrieves a credit card or debit card credential (step 692). Purchase A sends a message indicating that payment is a "Credential Payment" and containing the credential to Purchase B for validation (steps 694-700). If invalid, the transaction is aborted (step 702). If valid, then Purchase B checks to see whether the customer is requesting a refund (steps 704-706). Assuming it is not a refund transaction, To Host B sends the price and credential to a card authorization network for payment authorization (step 708). The MTD initiates a card authorization process (step 710). Card authorization is well known in the art and typically involves the card issuer or its agent authorizing a particular payment when sufficient funds are present or the amount is within the card holder's credit limit. Upon completion of the card authorization process, Purchase B checks if a payment was authorized (steps 712-714). If payment is not authorized, then the transaction is aborted (step 702). If payment is authorized, then Purchase B sends message "Payment Authorized" to Ticket Holder A and trusted agent B commits (steps 716-720). When Ticket Holder A receives the "Payment Authorized" message, it updates the ticket with payment information (e.g., date of purchase) (step 722). Trusted agent A then commits (step 724), completing the authorization-based payment. Referring back to FIG. 12, after payment the Open Merchandise subroutine is called (step 434). Referring to FIG. 22, Purchase A checks if merchandise is an electronic object (steps 736-738). If so, Ticket Holder A sends the decryption key and the electronic object identifier from the decryption ticket to a host transaction application for its use in decryption of the electronic object (steps 740-742). If, however, the merchandise is a communications ticket with a decryption key, then Ticket Holder A sends the decryption key to the HTA (step 746). The HTA uses the key for decrypting communications (step 748). If the merchandise is neither an electronic object nor a communications ticket with decryption key, then the process simply ends. The other forms of ticket 8 must be presented in order to obtain services. Present Ticket Referring to FIG. 23, when the owner of a customer trusted agent A wants to use a ticket for receiving services from the owner of a merchant trusted agent B, a host transaction application A (HTA) connects to a host transaction application B (HTB) (steps 750-752). HTA sends a message to its trusted agent to "Present Ticket" and HTB sends a message to its trusted agent to "Receive Ticket" (steps 754-756). The trusted agents establish a session (step 758) and A checks B's merchant credential (step 760). Ticket Holder A requests the ticket ID from the host and presents a list of tickets which it holds (step 762). To Host A sends this message to HTA so that the customer can choose which ticket to present (step 764). After the customer chooses the appropriate ticket, HTA sends the ticket's ID to trusted agent A (steps 766-768). Ticket Holder A retrieves the selected ticket and checks if it is active (steps 770-772). A ticket 8 is "active" if it still has value. For example, in the case of an event ticket the status field 100 indicates whether the ticket 8 has already been presented and is thus valueless. In the case of a communications ticket the Time Available field 116 indicates the remaining value in the ticket 8. If the ticket 8 is not active, then To Host A sends a message to HTA that the ticket is inactive and the transaction is aborted (steps 774-776). If the ticket 8 is active, then Present Ticket A sends a copy of the ticket to B (steps 778-780). Receive Ticket B receives the ticket and checks if it is both valid and active (steps 782-784). If not active and valid, the transaction is aborted (step 786). If valid and active, then To Host B notifies HTB to deliver services to HTA (step 788). The remaining value of A's ticket is also passed since the ticket may be a type having value that is used up incrementally as services are rendered (e.g., similar to a prepaid phone card). Receive Ticket B then sends a message to A that the ticket 8 is now in use (steps 790-792). Ticket Holder A marks the ticket 8 as "In Use" (step 794). HTA interacts with HTB in the appropriate fashion depending on the type of ticket and services being rendered (step 796). HTB continually monitors the remaining ticket value until the value is reduced to zero (steps 798-800). At this point, HTB notifies HTA of the insufficient value and sends a message to B that the ticket is valueless (steps 802). The Commit Ticket subroutine is then called (step 804). Referring to FIG. 24, Receive Ticket B sends the new remaining ticket value, in this case zero, to Present Ticket A (steps 822-826). Ticket Holder A then marks the ticket 8 as "Not In Use" and updates the ticket value (step 828). Finally, trusted agent A commits, Session Manager A informs B that the ticket 8 is updated, and trusted agent B commits (steps 830-834). Referring back to FIG. 23, HTA then inquires whether the customer wishes to continue (steps 806-808). If so, then trusted agent A undertakes to purchase more ticket value (step 810). During HTA to HTB interaction (step 796), HTA checks if the owner of HTA has completed the transaction (steps 812-814). If the transaction is completed, then HTA informs HTB which, in turn, informs its trusted agent (steps 816-818). HTB also sends its trusted agent the remaining ticket value. Finally, the Commit Ticket subroutine is called (step 820). Ticket Transfer Tickets 8 may be transferred between trusted agents 120 (aside from the initial issuing of the ticket). There are several reasons an owner may wish to do this. For example, if a ticket 8 was purchased via a desktop transaction device 122 (e.g., a CTD 188 embedded in a personal computer), then the owner may wish to transfer it to a portable device (e.g., an electronic wallet). Or, if the owner buys a ticket 8 for a friend or relative, then the owner can transfer the ticket to the other party for their use. Another situation is when the owner purchases a new transaction device 122 and wishes to transfer his credentials to the new device. Referring to FIG. 25, there is shown the procedure followed when the owner of trusted agent A wants to transfer one or more tickets 8 to trusted agent B (step 836). Initially, HTA connects to HTB (step 838). HTA then instructs its trusted agent to "Transfer Ticket(s)" and HTB instructs its trusted agent to "Receive Ticket(s)" (steps 840-842). Next, the trusted agents establish a secure session (step 844). To Host A then sends an inquiry to the transaction device owner via HTA whether to check the identifying credential of the party to receive the ticket(s) (steps 846-848). If there is no credential check or a credential check is performed successfully (steps 850-854), then Ticket Holder A requests the ID's of the tickets to be transferred (step 856). Tickets are selected from a list of tickets held by trusted agent A. To Host A sends the message to HTA with the ticket list, the owner chooses, and To Host A receives the response identifying the selected ticket(s) (steps 858-862). Ticket Holder A retrieves the selected ticket(s) (step 864). Public Key A then signs over the ticket(s) to B by adding the appropriate transfer information to the Transfer History section and appending the digital signature to the Sender Signatures section (step 866). Ticket Holder A then sends the ticket(s) to Receive Ticket B for validation by Public Key B (steps 868-876). If the ticket(s) are not valid, then the transaction is aborted (step 878). If the ticket(s) are valid, then Ticket Holder B stores the ticket(s) and sends an acknowledgement to A (steps 880-882). Ticket Holder A receives the acknowledgement and deletes the ticket(s) (step 884). Trusted agent A informs Ticket Holder B that the tickets are deleted (steps 884-886) and commits (step 888). Ticket Holder B receives the message (step 890) and then trusted agent B commits (step 892). Credentials A customer can acquire credentials in person from an Identification Authority. The credentials could be a driver's license from a motor vehicle administration, a passport from the State Department or a Foreign Office, a credit or debit card from a bank, or a corporate seal (identifier) for a bureau of commerce. The credentials can be revalidated remotely or even acquired remotely in the first place if the trusted agent 120 already contains credentials for proof of identity. With credentials it would be possible to open a checking account remotely even if the customer is unknown to the bank. Referring to FIG. 26, there is shown the flow diagram followed when the owner of trusted agent A decides to acquire a credential from an identification authority in person (step 894). First, the owner of A presents proof of his/her identity to a representative of the identification authority. The representative then enters various information (e.g., name, address, etc.) via HTB of authority trusted agent B. (Steps 896-898). Next, the owner of A instructs his HTA to acquire a credential. In response, HTA sends the message "Acquire Credential" to trusted agent A. (Steps 900-902). Meanwhile, HTB sends the message "Create Credential" to trusted agent B (step 904). Trusted agent B then establishes a session with trusted agent A (step 906). To Host B notifies HTB that a session has been established. HTB sends the various credential information to trusted agent B (steps 908-910). Create Credential then constructs credential information (i.e., the Identifier and Components sections 10, 12 of a credential ticket) (step 912). The Deliver Credential subroutine is then called for passing the newly created credential to trusted agent A (step 914). Referring to FIG. 27, Public Key B signs the credential information (with the ATA's private key) and sends it to Create Credential B (step 916). Create Credential B assembles a credential containing the credential information, signature, and certificate (the ATA's cert(TA)) (step 918). Create Credential B then sends the newly created credential to trusted agent A (step 920). If required, Create Credential also sends the price of the credential to A. Public Key A verifies the credential (steps 922-924). If invalid, the transaction is aborted (step 926). If valid, then To Host A sends the credential information and payment amount (if required) to HTA for confirmation (steps 928-930). If not confirmed by the owner of trusted agent A, then the transaction is aborted (step 926). If the credential is confirmed, then Ticket Holder A receives the credential and checks if payment is required (steps 932-934). If no payment is required, then trusted agent A commits (step 936) and sends a message to trusted agent B that the credential has been accepted (steps 938-940). Trusted agent B commits upon receiving the message (step 942). Create Credential B then notifies HTB that the credential is accepted and HTB sends the credential information to the credential database maintained by the authority server (steps 944-946). If, on the other hand, payment for the credential is required, then To Host A requests the owner of trusted agent A to choose a payment method (steps 948-950). If a money module payment is selected, then the Money Module Payment subroutine is called (step 952). At the point where B exits the subroutine, Create Credential B notifies HTB that the credential is accepted and HTB sends the credential information to the authority server (steps 944-946). If, instead, the owner of trusted agent A decides to pay with a credit or debit card, then the Authorization-Based Payment/Refund subroutine is called (step 954). It may be desirable for identification authorities to update their credential information on a periodic basis. Revalidation is thus required by giving credentials expiration dates. FIG. 28 shows how the owner of trusted agent A can revalidate a credential remotely (step 956). Initially, HTA connects to HTB (step 958). HTA sends the message "Revalidate Credential" to trusted agent A (step 960). HTB sends the message "Receive Credential For Revalidation" to trusted agent B (step 962). Trusted agent A then establishes a secure session with trusted agent B (step 964). Trusted agent A first checks the authority's credential (step 966). Authority credentials may be issued under the supervision of the Trusted Agency. Acquire Credential A requests the credential specified for revalidation from Ticket Holder A which sends the credential to authority trusted agent B (steps 968-972). Create Credential B checks if the credential is valid (steps 974-976). If not valid, the transaction is aborted (step 978). If valid, then Create Credential B checks if the credential should be revalidated in person (steps 980-982). If the credential may be revalidated remotely, then Create Credential B updates the credential information including a new expiration date (step 984). The Deliver Credential subroutine is then called (step 986). If the credential must be revalidated in person, then Create Credential B sends the message "Revalidate In Person" to trusted agent A (steps 988-990). Acquire Credential A receives the message (step 992). Trusted agent A then commits (step 994) and Session Manager A sends an acknowledgement to trusted agent B (steps 996-998). Trusted agent B then commits (step 1000). Identity-Based Money Module Payment Electronic cash payments not involving the simultaneous purchase of electronic merchandise may be made using the flow diagram shown in FIG. 29. The owner of trusted agent A decides to make a money module payment to the owner of trusted agent B, where the owner of A wants to verify B's identity because they are transacting remotely (step 1002). HTA connects to HTB (step 1004). HTA sends the message "Pay" to its trusted agent (step 1006). HTB sends the message "Receive Payment" to its trusted agent (step 1008). A then establishes a secure session with B (step 1010). Trusted agent A checks B's credential (step 1012). This credential may be a driver's license, credit card, or other acceptable credential. If the credential is valid and acceptable to A then Purchase A sends the message "Does B require A's credential" to trusted agent B (steps 1014-1016). To Host B then sends the message "Require A's Credential?" to HTB for checking if B requires A's credential (steps 1018-1020). If required, then B checks A's credential (step 1022). Again, various types of credentials may be used. If B does not require A's credential then Purchase B informs trusted agent A (steps 1024-1026). Purchase A then sends a remittance advice specifying the amount to be paid (if a bill payment) or sends just the amount to be paid to trusted agent B (steps 1028-1030). To Host B sends the information to HTB for confirmation (steps 1032-1034). If not confirmed, the transaction is aborted (step 1036). If confirmed, then Purchase B informs A (steps 1038-1040). A money module payment is then initiated (step 1042). Disputes In case a customer is dissatisfied with a purchase, the trusted agents 120 can act as surrogates for the customer and merchant for remote resolution of the dispute. For example, if an electronic object is perceived to be defective, the customer could connect to the merchant and enter into a dispute dialogue. The merchant cannot repudiate the electronic merchandise if it is validated by his trusted agent 4 ›since this will be recorded in the transaction log of the customer's trusted agent 2!. If the customer is not satisfied with the result of the dispute interaction with the merchant, he can take his complaint to the Trusted Agency. The customer's transaction log shows that the dispute was denied by the merchant first. The dispute and accompanying documentation can be presented to a trusted server 200 on the Trusted Agency Network 208. The interaction is then similar to the interaction with the merchant's trusted agent 4. Most merchants will want to resolve the dispute directly with the customer, and not have the customer resort to the Trusted Agency resolution process. Too many disputes could jeopardize the merchant's status with the Trusted Agency. The dispute process enables the customer to produce electronic merchandise and prove that the merchandise was the merchandise purchased from the merchant. The dispute process also protects the merchant against fraudulent claims. The merchant can believe the customer's trusted agent 2 by verifying that the customer's trusted agent 2 received the merchandise. The customer's complaint can then be resolved by examining the merchandise for defects. FIG. 30 shows the procedure followed when the owner of trusted agent A decides to return electronic merchandise to the owner of merchant trusted agent B (step 1044). Initially, HTA connects with HTB. HTA sends the message "Send Dispute" to its trusted agent. HTB sends the message "Receive Dispute" to its trusted agent. Trusted agent A then establishes a secure session with trusted agent B. (Steps 1046-1052). Trusted agent A checks B's merchant credential (step 1054). Tran Log A sends its log via To Host A to HTA so that the owner can choose which transaction to dispute and describe the problem (steps 1056-1060). To Host A receives the dispute information from HTA (step 1062). Ticket Holder A then sends the selected ticket to Initiate Dispute A (step 1064). Initiate Dispute A checks if the dispute involves an electronic object (steps 1066-1068). If there is no EO (only a ticket is involved), then Initiate Dispute A sends a copy of the ticket along with the dispute information to trusted agent B (steps 1070-1072). Resolve Dispute B receives the message and Purchase B validates the ticket (steps 1074-1078). If the ticket is invalid, then Resolve Dispute B sends the message "Ticket Invalid" to Initiate Dispute A (steps 1080-1084). The Commit Dispute subroutine is called (step 1086). Referring to FIG. 31, trusted agent A commits (step 1156). Session Manager A sends an acknowledgement to Session Manager B (steps 1158-1162). Trusted agent B then commits (step 1164). Referring back to FIG. 30, if, however, the ticket was valid (step 1078), then Resolve Dispute B sends the ticket and dispute information to HTB. The merchant then reviews the dispute and decides whether or not to deny the customer dispute (steps 1088-1092). If denied, Resolve Dispute B sends the message "Dispute Denied" to trusted agent A which initiates the Commit Dispute subroutine (steps 1094, 1082-1086). If the merchant does not deny the dispute, then HTB sends a message to HTA querying the customer for resolution (step 1096). The customer then chooses if he wants a refund or new merchandise (assuming the merchant allows these options) (steps 1098-1100). If the customer wants a refund, then the Pay Dispute subroutine is called (step 1102). Referring to FIG. 32, Initiate Dispute A sends the message "Request Money Back" to trusted agent B (steps 1168-1170). Resolve Dispute B receives the message and checks A's payment method (step 1172). If a money module payment is desired, then the Money Module Payment subroutine is called (step 1174). If a credit or debit card refund is desired, then Purchase B sends a message to A with the refund amount (steps 1176-1178). The Authorization-Based Payment/Refund subroutine is then called (step 1180). Referring to FIG. 21, there is shown the flow diagram followed in the event of a refund. If a refund transaction is being performed (steps 704-706) then To Host B sends a message to HTA containing the credit or debit card credential and the amount to be refunded (step 726). The card authorization process is performed (step 728). Purchase B then checks if the refund was authorized (steps 730-732). If not authorized, then the transaction is aborted (step 702). If authorized, then Purchase B sends the message "Refund Authorized" to trusted agent A (steps 734, 718). Trusted agent B then commits (step 720). Upon receiving B's message, Ticket Holder A updates the ticket with the refund information (step 722). Trusted agent A then commits (step 724). Referring back to FIG. 30, if instead of a refund the owner of trusted agent A chooses to receive new merchandise, then Purchase B requests merchandise from the merchandise server (step 1104). The merchandise server retrieves the merchandise and sends it to trusted agent B. Purchase B receives the merchandise and validates its identity (steps 1106-1110). If the item is correct, then the subroutines Deliver Merchandise, Open Merchandise, and Commit Dispute are called (steps 1120-1124). If the item is not correct, and unobtainable from the merchandise server, then Resolve Dispute B sends the message "Merchandise Unavailable" to trusted agent A (steps 1114-1116). In this event, a refund is initiated (step 1118). If the merchandise dispute involves an electronic object (steps 1066-1068), then Initiate Dispute A retrieves the electronic object identifier from its associated decryption ticket. To Host A, then instructs HTA to send the electronic object to trusted agent A (steps 1126-1130). Initiate Dispute A then sends a copy of the ticket and the EO to B along with the dispute information (steps 1132-1134). Resolve Dispute B receives the message (step 1136). Purchase B then validates the ticket (steps 1138-1140). If the ticket is invalid, then trusted agent A is so informed and the dispute is completed (steps 1080-1086). If the ticket is valid, then Purchase B validates the electronic object (steps 1142-1144). If not valid, then Resolve Dispute B informs trusted agent A (step 1146) and the dispute is completed (steps 1082-1086). If the electronic object is valid, then Symmetric Key B decrypts the EO and sends it to HTB for testing. The dispute information is also sent to HTB. (Steps 1148-1152). HTB determines if the electronic object is defective based on the customer complaint. If the merchant determines that the merchandise is not defective, then Resolve Dispute B informs trusted agent A (step 154) and the dispute is completed (steps 1082-1086). If, however, the merchant determines that the merchandise is defective, then the customer may choose either a refund or new merchandise (steps 1096-1098). Electronic Monetary System An electronic monetary system (EMS) which may be used in conjunction with the described system for open electronic commerce is found in PCT patent application WO 93/10503. Described below are various improvements and supplements to that EMS. Overview The term "money module" as used in PCT patent application WO 93/10503 generically refers to transaction money modules, teller money modules, and money generator modules. The money modules 6 previously discussed which cooperate with trusted agents 120 generally correspond, in the preferred embodiment, to transaction money modules. In the following discussion of the EMS, the term "money module" is again used in its generic sense to refer to transaction money modules, teller money modules, and money generator modules. Effective security for a monetary system has three characteristics: inhibit counterfeiters, detect counterfeiters, and contain counterfeiters. The described EMS is designed to have components which exhibit all three characteristics. In order to inhibit counterfeiters, the money modules communicate using symmetric and asymmetric key cryptography. None of the messages are in the clear. The module's protocols are also physically protected by tamper-proof hardware. Counterfeiting is detected by note reconciliation processes. System-wide time protocols (e.g., note expiration) force electronic notes to be reconciled regularly. Electronic notes are also refreshed (i.e., replaced with a new note with a new expiration date) when banking transactions are performed. Money modules are blocked (e.g., placed on the bad ID list) if duplicated or counterfeit notes are tied back to them Also, notes which have passed through these modules will not be allowed to transfer. The transfer of duplicated or counterfeit notes will be contained since notes expire or eventually are deposited to a bank. Moreover, in case of a serious system security problem, the EMS may call for a global recertification, thereby requiring all modules to recertify, including transaction money modules the next time they sign on the EMS Network. Security Hierarchy Referring to FIG. 33A, EMS will have two types of security servers, primary 1182 and ordinary 1184. The primary security servers 1182 certify the (ordinary) security servers 1184. The security servers 1184 certify all other modules (transaction MMs 1186, Teller MMs 1188, money generator modules 1190, and customer service modules 1192) in the system. The primary servers 1182 only interact with other primary servers 1182 or the security servers 1184. Referring to FIG. 34, the primary security servers 1182 are housed in a secure facility connected to each other by a Security LAN 1194. The LAN 1194 is connected through a secure gateway to the Security Network 1196. Only the security servers communicate over this network. All security servers are physically protected devices. Security servers 1184 are also attached to the EMS Network 1198 and bank local networks 1200. Security servers are treated as if they could be compromised and are validated upon all interactions with other modules. Only the security servers 1184 and modules have certificates. The primary security server's public keys are carried by these devices. There are two types of certificate: security server and module. Certificate Structure And Validation ##STR3## The certificate validation protocols are 1) Validate Cert(SS) a) PSS(id)=›PSS(id) XOR C! XOR C b) D.sub.PSS (E.sub.PSS (X.parallel..sigma..sub.PSS (X)))=X.parallel..sigma..sub.PSS (X) c) Check if SS(id) is authentic (see module numbering scheme) d) Check if date is valid e) Check if D.sub.PSS (.sigma..sub.PSS (X))=h(X) 2) Validate Cert(M) a) Validate Cert(SS) b) D.sub.SS (E.sub.SS (Y.parallel..sigma..sub.SS (Y)))=Y.parallel..sigma..sub.SS (Y) c) Check if M(id) is authentic (see module numbering scheme) d) Check if date is valid e) Check if D.sub.SS (.sigma..sub.SS (Y))=h(Y)
______________________________________
Where PSS = Primary Security Server
PK = Public Key (includes
SS = Security Server
length of key)
M = Module .sigma. = Digital Signature = E .degree. h
.parallel. = Concatenate
Cert = Certificate
id = identification number
E = Algorithm with
h = Hash function private key used for
C = Constant random number
encrypting and for
shared by all modules
creating digital
signature
D = Algorithm with public
key used for decryption
and for checking
digital signature
______________________________________
Note E and D may also be used for decrypting and encrypting, respectively, when applied in other applications. Module Numbering Scheme The primary security servers 1182, security servers 1184, teller money modules 1188, money generator modules 1190, customer service modules 1192, and transaction money modules 1186 are assigned identification numbers (id's) so that the numbers can be checked for authenticity. A 48-bit prime number "p" is generated and a primitive root "a" modulo p (where a.sup.n .notident.1(p) for all 1.ltoreq.n<p-1) is found via a secure process. Both a and p are loaded to all modules in the system securely by the primary security servers when they are manufactured. The scheme works as follows: If a.sup.n .ident.m(p) and (1) 1.ltoreq.m.ltoreq.99,999 then n is assigned as the id of a primary security server, (2) 100,000.ltoreq.m.ltoreq.999,999 then n is assigned as the id of a security server, (3) 1,000,000.ltoreq.m.ltoreq.6,999,999 then n is assigned as the id of a teller money module, (4) 7,000,000.ltoreq.m.ltoreq.9,999,999 then n is assigned as the id of a money generator module, (5) 10,000,000.ltoreq.m.ltoreq.11,999,999 then n is assigned as the id of a customer service module, (6) m.gtoreq.12,000,000 then n is assigned as the id of a transaction money module. If a module or server is validating a certificate, it checks the authenticity of the identification number (e.g., M(id), SS(id), or PSS(id)) n by computing a.sup.n .tbd.m(p) and then checks if m is in the correct range. Security Network As shown in FIG. 34, the Security Network 1196 and the Security LAN 1194 connect the security servers 1184 to the primary security servers 1182. Security servers 1184 initially certify the money modules and customer service modules 1192 at manufacturing. Such security servers may be connected by a Module Manufacturing LAN 1202. They pass security information such as the bad id list and the list of primary security servers and their public keys to the modules. The bad id list contains the identities of the money modules, customer service modules, and security servers which are blocked from transacting. Recertification of these modules is described subsequently in the network sign-on flow diagram. The security servers 1184 are initially certified by the primary security servers 1182 at manufacturing. Such primary security servers may be connected by a Security Server Manufacturing LAN 1204. Referring to FIG. 33B, the security servers 1184 receive various security information which they pass to the other modules. The security servers provide security services for the EMS Network 1198 and the bank LANs 1200, such as network sign-on where they pass updated security information. The security servers 1184 receive this information from the primary security servers 1182 over the Security Network 1196. Transaction money modules 1186 communicate with the EMS Network 1198 via network servers 1206 (NS). Participating banks have teller money module(s) 1188 and perhaps money generator(s) 1190 connected to their LANs 1200. The Security Network 1196 is link encrypted. In addition, the primary security servers and security servers share a common symmetric key (a Security Network encryption key). This key is changed periodically by a designated primary server 1182 by public key, key exchange. The primary server 1182 encrypts the symmetric key with its private key, signing the key and broadcasting the change to the other primary servers 1182 over the Security LAN 1194, and to the security servers 1184 over the Security Network 1196. The list of bad id's is maintained by a designated primary server 1182. The list is accumulated from interactions with participating banks, law enforcement authorities, and subscribers to the system. Periodically the length of the public keys for the security servers and the modules will be changed. The key length will be normally lengthened to maintain a high security level. The new designated key lengths will be communicated to the primary security servers by a designated primary server. The new lengths will be communicated to the security servers by the primary servers when new bad id lists are sent or upon recertification. In case of a dangerous breach of security, a primary security server can call for global recertification. The length of the public key for each primary server will not change. A timetable will be created which will schedule the implementation and decommission of primary security servers. The new servers will most likely have longer keys unless they are implemented because of increased transaction volume. The list of active PSS public keys is created by a primary security server and encrypted by the server with its private key. The list is then broadcast to other security servers. FIG. 35A shows the functional components of a security server 1184. An External Interface function 1208 provides a communications layer for network interfacing. A Session Manager function 1210 controls the security aspects of a transaction session. A Network Sign-On function 1212 manages the security functions for network sign-on. A Create Certificate function 1214 certifies a certificate for any of the money modules (in a primary security server, this function certifies security servers). A Create Account Profile function 1216 certifies and signs a bank account profile that allows a money module to access the subscriber's different bank accounts. A Distribute Certificatory Keys function 1218 distributes the Certification Agency's list of valid primary security server public keys to the money modules (primary security server also distributes global certification message). A Control Bad ID List function 1220 controls and distributes the list of bad identifiers. A Synchronize Date/Time function 1222 keeps money module Clock/Timer services synchronized to a system time. Clock/Timer 1224 and Cryptography functions 1226 are identical to those functions in the money modules. FIG. 35B shows the functional components of a network server 1206. An External Interface function 1228 provides a communications layer for network interfacing. A Communication Session manager function 1230 manages a communication session between money modules, and between a money module and a security server. A Network Sign-On function 1232 controls the money module network sign-on process. A Route Message function 1234 provides directory services for routing messages, controlling message routing during sign-on and during a money module session. A Direct to Bank Services function 1236 provides information on services provided by participating banks. A Cryptography function 1238 provides a Symmetric Key function 1240 and a Random Number Generator function 1242. The Symmetric Key function 1240 encrypts messages between the network server 1206 and the modules accessing the network and between the network server 1206 and the security servers 1184. The Random Number Generator function 1242 generates random numbers for encryption keys and verification messages. Network Sign-On An overview of the network sign-on procedure is provided with reference to FIG. 36. The Sign-On protocol describes the situation where a module 1243 desires access to the EMS Network 1198 for recertification, deposit, withdrawal or other reason. The module 1243 may be a transaction money module 1186, teller money module 1138, money generator module 1188, or customer service module 1192. (a) Establish a communication between module 1243 and network server 1206. (b) Pass the module's certificate to the network server 1206. (c) The network server 1206 generates a random verification number V and a random key K; the network server then passes the module's certificate, V, and K to a security server 1184 (encrypted by a NS/SS key). (d) The module 1243 and the security server 1184 establish a secure communication session (via session key (MM/SS)). (e) The security server 1184 passes the time/date, update bad ID list, update list of primary security server public keys, public key length, global recertification (if necessary), and recertified module certificate (if necessary). (f) End session with module 1243 and send V and K to the module 1243. (g) Encrypt V with | ||||||
