Maxim Integrated Products, Inc. v. Starbucks Corporation

Filing 1

COMPLAINT for Patent Infringement against Starbucks Corporation ( Filing fee $ 350 receipt number 0540-3389392.), filed by Maxim Integrated Products, Inc.. (Attachments: # 1 Exhibit A - U.S. Patent No. 5,940,510, # 2 Exhibit B - U.S. Patent No. 5,949,880, # 3 Exhibit C - U.S. Patent No. 6,105,013, # 4 Exhibit D - U.S. Patent No. 6,237,095, # 5 Civil Cover Sheet)(Spangler, Andrew)

Download PDF
EXHIBIT C UNITED STATES PATENT NO. 6,105,013 111111 United States Patent [19] Curry et ai. [54] METHOD, APPARATUS, SYSTEM AND FIRMWARE FOR SECURE TRANSACTIONS Inventors: Stephen M. Curry, Dallas; Donald W. Loomis, Coppell; Christopher W. Fox, Dallas, all of Tex. [73] Assignee: Dallas Semiconductor Corporation, Dallas, Tex. [21] Appl. No.: 09/041,190 [22] Filed: Mar. 10, 1998 Related U.S. Application Data [60] [51] [52] [58] Continuation of application No. 08/594,983, Jan. 31, 1996, Pat. No. 5,748,740. Provisional application No. 60/004,510, Sep. 29, 1995. Int. CI? ................................. H04L 9/00; H04L 9/30 U.S. CI. .............................. 705/65; 235/379; 380/30; 705/75; 713/156; 713/173; 713/174 Field of Search ............................... 380/4, 9, 21, 23, 380/24, 25, 30, 46, 49, 50; 235/379, 380; 705/64, 65, 66, 67, 68, 69, 75; 713/155, 156,157,158,168,172,173,174 [56] References Cited U.S. PATENT DOCUMENTS 4,731,842 5,577,120 5,748,740 US006105013A [11] [45] [75] [63] 1111111111111111111111111111111111111111111111111111111111111 3/1988 Smith ........................................ 380/24 11/1996 Penzias ..................................... 380/23 5/1998 Curry et al. .............................. 380/25 FOREIGN PATENT DOCUMENTS 0172670A2. 2/1986 0186981A2. 7/1986 0194839A2. 9/1986 0294248A1 12/1988 0337185A2. 10/1989 045806A2. 11/1991 0624014A2. 11/1994 4406602A1 9/1995 W093/08545 4/1993 European Pat. European Pat. European Pat. European Pat. European Pat. European Pat. European Pat. Germany. WIPO. Off.. Off.. Off.. Off.. Off.. Off.. Off.. Patent Number: Date of Patent: 6,105,013 Aug. 15, 2000 OTHER PUBLICATIONS Federal Information Processing Standards Publication, (FIPS PUB) 186, Digital Signatur Standard (DDS), Issued: May 19, 1994. Federal Information Processing Standards Publication, (FIPS PUB) 190-1, Secure Hash Standard, Issued: May 31, 1994. Microsoft Corporation's Secure Transaction Technology, SIT Wire Formats and Protoc version 0.902, Oct. 5, 1995. Matonis, Jon W., Digital Cash and Monetary Freedom, http://www.info.isoc.org/HMP/PAPER/136/htm1!paper.html, as of Apr. 1995. MasterCard, Secure Electronic Payment Protocol, Draft Version 1.1, Sep. 29, 1995. MasterCard, Secure Electronic Payment Protocol, Part 2; Functional Specifications, Draft Version 1.1, Sep. 29, 1995. MasterCard, Secure Electronic Payment Protocol, Part 3; Payment System Specification, Draft Version 1.1, Sep. 29, 1995. MasterCard, Secure Electronic Payment Protocol, Part 4; Certificate Management Specification, Draft Version 1.1, Sep. 29, 1995. SGS-Thomson Microelectronics, CMOS Crypto--Computer Family, Advance Datasheet ST16xF74, Oct., 1993. SGS-Thomson Microelectronics, CMOS MCU Based Safeguarded Smartcard IC with Modular Aritmetic Processor, Advanced Data Sheet, ST16CF54, Sep. 1994. Micro Card, CP8® Products Crypto Card, Jan. 25, 1995. Wayner, Peter, Digital CaSh, Commerce on the Net, Chpt. 3 & 10 and Appendix B, Jun. 1995. Schneier, Bruce, Applied Cryptography, Chpt. 19, pp. 461-482, 1996. Primary Examiner-Bernarr E. Gregory Attorney, Agent, or Firm-Jenkens & Gilchrist [57] ABSTRACT The present invention relates to an electronic module used for secure transactions. More specifically, the electronic module is capable of passing information back and forth between a service provider's equipment via a secure, encrypted technique so that money and other valuable data can be securely passed electronically. The module is capable of being programmed, keeping track of real time, recording transactions for later review, and creating encryption key pairs. 16 Claims, 8 Drawing Sheets 12 18 28 30 26 32 u.s. Patent Aug. 15,2000 6,105,013 Sheet 1 of 8 ~10 12 MICRO PROCESSOR ~---I _r-16 18 MICRO PROCESSOR 22 20 24 ROM NVRAM 28 30 +V 34 26 32 MODULE FIG. 1 CREATE TRANSACTION GROUP Sl GENERATE KEYS AND LOAD INTO A TRANSACTION GROUP S2 PRIVATIZE DECRYPTION EXPONEN S3 CREATE TRANSACTION SCRIPT LOCK TRANSACTION GROUP FIG. 2 S4 S5 u.s. Patent Aug. 15,2000 6,105,013 Sheet 2 of 8 USER RECEWES SECURE E-M~L AND ENCRYPTED IDEA KEY ~ t MODULE RECEIVES ENCRYPTED IDEA KEY IN AN INPUT OBJECT OF A TRANSACTION GROUP ~ t FIG. 3 TRANSACTION SCRIPT DECRYPTS THE IDEA KEY t DECRYPTED IDEA KEY IS PLACED IN AN OUTPUT DATA OBJECT ~ CREATE TRANSACTION GROUP FOR PERFORMING ELECTRONIC NOTARY FUNCTIONS t CREATE OBJECT(S) FOR RSA ENCRYPTION KEYS ~ FIG. 4 A5 V- B2 B3 CREATE OBLECT FOR TIMEKEEPING t A3 V- B1 ~ CREATE TRANSACTION SEQUENCE OBJECT (COUNTER) A2 r-- A4 t IDEA KEY IS USED TO DECRYPT THE SECURE E-MAIL A1 V- B4 t CREATE A TRANSACTION SCRIPT THAT CREATES VA CERTIFICATE BY COMBINING AN INPUT DATA OBJECT WITH THE TRUE TIME, THE VALUE OF THE TRANSACTION COUNTER AND A UNIQUE NUMBER ASSOCIATED TO THE MODULE, THEN SIGNS THE CERTIFICATE t l t I LOCK TRANSACTION GROUP PRIVATE OBJECTS B6 B7 B5 u.s. Patent Aug. 15,2000 6,105,013 Sheet 3 of 8 , MESSASGE IS PLACED IN AN INPUT DATA OBJECT V- C1 TRANSACTION SCRIPT COMBINES MESSAGE WITH OTHER DATA AND SIGNS THE COMBINATION WITH A PRIVATE KEY CREATING AN ENCRYPTED CERTIFICATE V- C2 ~ THE CERTIFICATE CAN BE READ AT AV- C3 LATER TIME BY DECRYPTING IT WITH THE PUBLIC KEY , THE CERTIFICATE AND ORIGINAL DOCUMENT CAN BE STORED ELECTRONICALLY V- C4 FIG. 5 PREPARE MODULE D1 CREATE TRANSACTION GROUP COMPRISING: MONEY OBJECT TRANSACTION COUNT OBJECT PRIVATE KEY AND PUBLIC KEY OBJECTS ETC. ~ D2 PRIVATIZE PRIVATE KEY RELATED OBJECT(S) ~ , , CREATE TRANSACTION SCRIPT TO PERFORM MONETARY TRANSACTION LOCK TRANSACTION GROUP PUBLISH PUBLIC KEY FIG. 6 V- D3 D4 D5 u.s. Patent Aug. 15,2000 USER USER WANTS TO MAKE A PURCHASE USING A MODULE MERCHANT r-- BANKf-SERVICE PROVIDER READS MODULE'S 10 NUMBER V t CREATES DATA PACKET THAT INCLUDES A 'RANDOM SALT' AND MODULE 10 NUMBER t CREATES A SIGNED MERCHANT CERTIFICATE BY ENCRYPTING DATA PACKET WITH MERCHANT'S PRIVATE KEY t SUBTRACT PURCHASE AMOUNT FROM MONEY REGISTER t-- t INCREMENT TRANSACTION COUNT V 6,105,013 Sheet 4 of 8 ATIACHES PURCHASE PRICE TO MERCHANT'S SIGNED CERTIFICATE E2 VE3 V-- E4 V-- E5 E7 t COMBINE TRANSACTION V- E8 COUNT WITH MERCHANT'S SIGNED CERTIFICATE RECEIVED SIGNED MODULE V- E9 AND PURCHASE AMOUNT; CERTIFICATE AND DECRYPT THEN ENCRYPT WITH USING SERVICE PROVIDER'S SERVICE PROVIDER'S PUBLIC KEY E12 PRIVATE KEY THEREBY CREATING A SIGNED ---.l MODULE CERTIFICATE CONFIRM THAT: __ RECEIVE MODULE'S 1) AMOUNT OF PURCHASE SIGNED CERTIFICATE RECEIVE ITEM IS CORRECT t 2) DATA IN MERCHANT'S SERVICE PURCHASED CERTIFICATE IS THE DECRYPT MODULE'S SAME AS ORIGINALLY SENT CERTIFICATE WITH SERVICE Ell) PROVIDER'S PUBLIC KEY ) E10 E13~ Jl r-- t \ r-- DECRYPT MODULE'S CERTIFICATE WITH . ~ MERCHANT'S PUBLIC KEY E14 1 FIG. 7 IF BOTH CERTIFICATES ARE OK THEN ADD PURCHASE -" AMOUNT TO MERCHANT'S E15-BANK BALANCE u.s. Patent Aug. 15,2000 USER F1 F3 F5 \ \ \ WANTS TO ADD AN AMOUNT OF CASH TO MODULE CREATE RANDOM SALT NUMBER DECRYPT SIGNED SERVICE PROVIDER CERTIFICATE WITH SERVICE PROVIDER'S PUBLIC KEY AND CHECK THE ID NUMBER AND RANDOM SALT NUMBER IF THE ID NUMBER AND RANDOM SALT NUMBER IS UNCHANGED THEN ADD THE CASH AMOUNT TO THE MONEY REGISTER OF THE MODULE 6,105,013 Sheet 5 of 8 BANK/SERVICE PROVIDER ~ READ MODULE ID NUMBER AND AMOUNT OF CASH REQUESTED v--- REQUEST MODULE TO PRODUCE A RANDOM SALT ~ COMBINE SALT, ID NUMBER AND CASH AMOUNT AND ENCRYPT WITH SERVICE PROVIDER'S PRIVATE KEY, THEREBY CREATING A SIGNED SERVICE PROVIDER CERTIFICATE / / F2 F4 I FIC. B EXAMPLE OF TRANSFER FROM USER'S MODULE TO MERCHANT'S MODULE USER/PAYER MERCHANT/PAYEE RECEIVE SALT AND REQUEST FOR MONEY G2 \ SUBTRACT REQUESTED MONEY AMOUNT FROM A MONEY REGISTER 1. CREATE RANDOM SALT 2. DETERMINE-AMOUNT OF MONEY TO BE RECEIVED FROM PAYER G1 V G3 V G4 + CREATE SIGNED PAYMENT CERTIFICATE BY COMBINING SALT WITH PAYMENT AMOUNT THEN ENCRYPTING WITH BANKER/SERVICE PROVIDER'S ORIVATE KEY RECEIVE SIGNED PAYMENT CERTIFICATE AND DECRYPT USING SERVICE PROVIDER'S PUBLIC KEY PAYEE = MERCHANT PAYER = USER ~GAINST ORIGINALLY SENT SALT FIC. 9 V ~ CHECK DECRYPTED SALT IF THEY ARE THE SAME ADD PAYMENT AMOUNT TO MONEY REGISTER u.s. Patent Aug. 15,2000 6,105,013 Sheet 6 of 8 TRANSACTION OVER A NETWORK WITH A MODULE MERCHANT/PAYEE H1 ~ CREATE RANDOM PAYER SALT ~ H3 RECEIVE FIRST DATA PACKET ~ AND DECRYPT WITH SERVICE RECEIVE PAYER SALT AND COMBINE WITH AMOUNT OF MONEY TO BE RECEIVED, AND / INCLUDE A PAYEE SALT, THEN ENCRYPT WITH SERVICE PROVIDER'S PRIVATE KEY TO CREATE A FIRST DATA PACKET H2 PROVIDER'S PUBLIC KEY ~ COMPARE DECRYPTED PAYER SALT WITH ORIGINAL PAYER SALT H4 IF THEY ARE THE SAME, SUBTRACT AMOUNT OF MONEY ~ TO BE SENT FROM PAYER MONEY REGISTER ~ GENERATE A SECOND DATA PACKET CONSISTING OF PAYEE'S SALT AND THE H5 AMOUNT OF MONEY TO ~ BE SENT AND ENCRYPT USING SERVICE PROVIDER'S PRIVATE KEY J RECEIVE SECOND DATA PACKET AND DECRYPT WITH SERVICE PROVIDER'S PUBLIC KEY V H6 ~ FIC. 10 EXTRACT DECRYPTED PAYEE SALT AND COMPARE WITH PAYEE SALT PROVIDED EARLIER IF BOTH ARE THE SAME ADD MONEY AMOUNT TO PAYEE MONEY REGISTER V H7 u.s. Patent Aug. 15,2000 6,105,013 Sheet 7 of 8 READ/WRITE OBJECT COMMANDS MODULE 10 - LOCKED TRANSACTION GROUP PIN r- MATCH 44 " H v ~ OBJECTS (O)I OPEN 40 ~42 ~42 r r 42 ~ LOCKED ( ) r OBJECTS L SCRIPTS}K PRIVATE (p) OBJECTS READ ONLY OBJECT COMMAND READ/WRITE OBJECT COMMANDS LOCKED TRANSACTION GROUP 1-WIRE 1/0 DATA TRANSPORT LAYER ~ COMMAND PIN INTER- l- I- MATCH PRETER V 40 J HSCRIPTS}H OBJECTS (P)J PRIVATE ~ OBJECTS (L)J LOCKED 44 " ~ OBJECTS (0) OPEN READ ONLY OBJECT COMMAND READ/WRITE OBJECT COMMANDS LOCKED TRANSACTION GROUP PIN "- MATCH 44, ,.-40 ~ O~fE~~S (0)J --/ SCRIPTS tK PRIVATE (P) OBJECTS FIG. 11 J ~ OBJECTS (L) LOCKED I READ ONLY OBJECT COMMAND u.s. Patent Aug. 15,2000 6,105,013 Sheet 8 of 8 I/O DATA BUFFERS SYSTEM DATA COMMON PIN, RANDOM NUMBER REGISTER, ETC ... TRANSACTION GROUP OUTPUT DATA OBJECT #1 OUTPUT DATA OBJECT #2 WORKING REGISTER 40 ~ 40 ~ GROUP NAME, PASSWORD AND ATIRIBUTES OBJECT 1 V 42 OBJECT 2 TRANSACTION GROUP 1 · · TRANSACTION GROUP 2 · · · · OBJECT N TRANSACTION GROUP N AUDIT TRAIL * CIRCULAR BUFFER OF TRANSACTION RECORDS TRANSACTION RECORD *THE AUDIT TRAIL DOES NOT EXIST UNTIL THE MICRO-IN-A-CANTM HAS BEEN LOCKED GROUP OBJECT DATE/TIME 10 10 STAMP ONCE LOCKED ALL UNUSED RAM IS ALLOCATED FOR THE AUDIT TRAIL FIG. 12 V- 42 6,105,013 1 2 METHOD, APPARATUS, SYSTEM AND FIRMWARE FOR SECURE TRANSACTIONS BRIEF DESCRIPTION OF THE DRAWINGS A more complete understanding of the method and apparatus of the present invention may be had by reference to the following Detailed Description when taken in conjunction This application is a continuation of application Ser. No. 5 with the accompanying Drawings wherein: 08/594,983 filed Jan. 31, 1996, now U.S. Pat. No. 5,748,740, FIG. 1 is a block diagram of an embodiment of a module; and claims the benefit of U.S. Provisional Application No. FIG. 2 is an exemplary process for creating a transaction 60/004,510, filed Sep. 29, 1995. group; The following applications of common assignee contain FIG. 3 is an exemplary technique for receiving an E-mail 10 related subject matter and are hereby incorporated by refmessage; erence: FIG. 4 is an exemplary technique for preparing a module Ser. No.: 08/595,014, filed Jan. 31, 1996, entitled for notary functions; METHOD, APPARATUS, AND SYSTEM FOR TRANSFIG. 5 is an exemplary technique for using the module as FERRING UNITS OF VALUE, now U.S. Pat. No. 5,805, 15 a notary; 702; FIG. 6 is an exemplary technique for preparing a module Ser. No.: 08/594,975, filed Jan. 31, 1996, entitled to perform a money transaction; TRANSFER OF VALUABLE INFORMATION FIG. 7 is an exemplary technique for performing a money BETWEEN A SECURE MODULE AND ANOTHER 20 transaction using a module; MODULE, now pending. FIG. 8 is an exemplary technique for performing a money transaction using a module; BACKGROUND OF THE INVENTION FIG. 9 is an exemplary technique for performing a money 1. Technical Field of the Invention transaction using a module; The present invention relates to a method, apparatus and FIG. 10 is an exemplary technique for passing data over firmware used for secure transactions. In particular, in an 25 a network; electronic module based system, the module can be configFIG. 11 is an exemplary organization of the software and ured to provide at least secure data transfers, digital signafirmware within a module; and tures or to authorize monetary transactions. FIG. 12 is an exemplary configuration of software and 2. Description of Related Art 30 firmware within a module. Presently, credit cards that have a magnetic strip associated with them, are a preferred monetary transaction DETAILED DESCRIPTION OF A PRESENTLY medium in the market place. A card user can take the card PREFERRED EXEMPLARY EMBODIMENT to an automatic cash machine, a local store or a bank and FIG. 1 depicts a block diagram of an exemplary module make monetary transactions. In many instances the card is 35 10 that incorporates an exemplary embodiment of the used via a telephone interface to make monetary exchanges. present invention. The module circuitry can be a single The magnetic strip card is used to help identify the card and integrated circuit. It is understood that the module 10 could user of the card. The card provides a relatively low level of also be on multiple integrated or descrete element circuits security for the transfer. Regardless, the card enables a card combined together. The module 10 comprises a microproholder to buy products, pay debts and make monetary 40 cessor 12, a real time clock 14, control circuitry 16, a math exchanges between separate bank accounts. coprocessor 18, memory circuitry 20, input/output circuitry Improvements have been made to the magnetic strip card. 26, and an energy circuit. There have been cards created with microcircuits instead of The module 10 could be made small enough to be magnetic strips. In general the microcircuit, like a magnetic incorporated into a variety of objects including, but not strip, is used to enable a card-reader to perform a transaction. 45 limited to a token, a card, a ring, a computer, a wallet, a key fob, badge, jewelry, stamp, or practically any object that can SUMMARY OF THE INVENTION be grasped and/or articulated by a user of the object. The present invention is an apparatus, system and method The microprocessor 12 is preferably an 8-bit for communicating encrypted information between a pref50 microprocessor, but could be 16, 32, 64 or any operable erably portable module and a service provider's equipment. number of bits. The clock 14 provides timing for the module The invention comprises a module, that has a unique circuitry. There can also be separate clock circuitry 14 that identification, that is capable of creating a random number, provides a continuously running real time clock. for example, a SALT, and passing the random number, along The math coprocessor circuitry 18 is designed and used to with, for example, a request to exchange money, to a service provider's equipment. The service provider's equipment 55 handle very large numbers. In particular, the coprocessor will handle the complex mathematics of RSA encryption and may in return encrypt the random number with a private or decryption. public key (depending on the type oftransaction), along with The memory circuitry 20 may contain both read-onlyother information and pass the encrypted information back memory and non-volatile random-access-memory. to the module as a signed certificate. The module, upon receiving the signed certificate, will decrypt the certificate 60 Furthermore, one of ordinary skill in the art would understand that volatile memory, EPROM, SRAM and a variety of with a public or private key (depending on the type of other types of memory circuitry could be used to create an transaction) and compare the decrypted number with the equivalent device. original random number. Furthermore, if the numbers are the Control circuitry 16 provides timing, latching and various same then the transaction that was requested may be deemed secure and thereby proceeds. The module is capable of time 65 necessary control functions for the entire circuit. stamping and storing in memory information about the An input/output circuit 26 enables bidirectional commutransaction for later review. nication with the module 10. The input/output circuitry 26 RELATED APPLICATIONS 6,105,013 3 4 preferably comprises at least an output buffer 28 and an vices in the same module 10. The number of independent input buffer. For communication via a one-wire bus, oneService Providers that can be supported depends on the number and complexity of the objects 42 defined in each wire interface circuitry 32 can be included with the input! transaction group 40. Examples of some of the objects 42 output circuitry 26. An energy circuit 34 may be necessary to maintain the 5 that can be defined within a transaction group 40 are the following: memory circuitry 20 and/or aid in powering the other circuitry in the module 10. The energy circuit 34 could consist of a battery, capacitor, R/C circuit, photovoltaic cell, or any other equivalent energy producing circuit or means. RSAModulus Clock Offset RSA Exponent Random SALT The firmware architecture of a preferred embodiment of a 10 Transaction Script Configuration Data secure transaction module and a series of sample applicaTransaction Counter Input Data tions using the module 10 will now be discussed. These Money Register Output Data examples are intended to illustrate a preferred feature set of Destructor the module 10 and to explain the services that the module offers. These applications by no means limit the capabilities 15 Within each transaction group 40 the module 10 will of the invention, but instead bring to light a sampling of its initially accept certain commands which have an irreversible capabilities. effect. Once any of these irreversible commands are executed in a transaction group 40, they remain in effect I. OVERVIEW OF THE PREFERRED MODULE 20 until the end of the module's useful life or until the transAND ITS FIRMWARE DESIGN action group 40, to which it applies, is deleted from the The module 10 preferably contains a general-purpose, module 10. In addition, there are certain commands which 80SI-compatible micro controller 12 or a reasonably similar have an irreversible effect until the end of the module's life product, a continuously running real-time clock 14, a highor until a master erase command is issued to erase the entire speed modular exponentiation accelerator for large integers 25 contents of the module 10. These commands will be dis(math coprocessor) 18, input and output buffers 28, 30 with cussed further below. These commands are essential to give a one-wire interface 32 for sending and receiving data, 32 the Service Provider the necessary control over the operaKbytes of ROM memory 22 with preprogrammed firmware, tions that can be performed by the End User. Examples of 8 Kbytes of NVRAM (non-volatile RAM) 24 for storage of some of the irreversible commands are: critical data, and control circuitry 16 that enables the micro 30 controller 12 to be powered up to interpret and act on the data placed in an input circcuitry 26. The module 10 draws its operating power from the one-wire line. The micro Privatize Object Lock Object Lock Micro-In-A-Can ™ Lock Transaction Group controller 12, clock 14, memory 20, buffers 28, 30, one-wire front-end 32, modular exponentiation accelerator 18, and 35 control circuitry 16 are preferably integrated on a single Since much of the module's utility centers on its ability to silicon chip and packaged in a stainless steel microcan using keep a secret, the Privatize command is a very important packaging techniques which make it virtually impossible to irreversible command. probe the data in the NVRAM 24 without destroying the Once the module 10, as a whole, is locked, the remaining data. Initially, most of the NVRAM 24 is available for use 40 NVRAM memory 24 is allocated for a circular buffer for to support applications such as those described below. One holding an audit trail of previous transactions. Each of the of ordinary skill will understand that there are many comtransactions are identified by the number of the transaction parable variations of the module design. For example, group, the number of the transaction script 40 within the volatile memory can be used, or an interface other than a one-wire could be used. The silicon chip can be packaged in 45 specified group, and the date/time stamp. The fundamental concept implemented by the firmware is credit cards, rings etc. that the Service Provider can store transaction scripts 44 in The module 10 is preferably intended to be used first by a transaction group 40 to perform only those operations a Service Provider who loads the module 10 with data to among objects that he wishes the End User to be able to enable it to perform useful functions, and second by an End User who issues commands to the module 10 to perform 50 perform. The Service Provider can also store and privatize RSAkey or keys (encryption keys) that allow the module 10 operations on behalf of the Service Provider for the benefit to "sign" transactions on behalf of the Service Provider, of the End User. For this reason, the module 10 offers thereby guaranteeing their authenticity. By privatizing and/ functions to support the Service Provider in setting up the or locking one or more objects 42 in the transaction group module for an intended application. It also offers functions 55 40, the Service Provider maintains control over what the to allow the End User to invoke the services offered by the module 10 is allowed to do on his behalf. The End User Service Provider. cannot add new transaction scripts 44 and is therefore Each Service Provider can reserve a block of NVRAM limited to the operations on objects 42 that can be performed memory to support its services by creating a transaction with the transaction scripts 44 programmed by the Service group 40 (refer to FIGS. 11 and 12). A transaction group 40 is simply a set of objects 42 that are defined by the Service 60 Provider. Provider. These objects 42 include both data objects (encryption keys, transaction counts, money amounts, date/ time stamps, etc.) and transaction scripts 44 which specify how to combine the data objects in useful ways. Each Service Provider creates his own transaction group 40, which is independent of every other transaction group 40. Hence, multiple Service Providers can offer different ser- II. USAGE MODELS OF THE MODULE 65 This section presents a series of practical applications of the module 10, ranging from the simplest to the most complex. Each of these applications is described in enough detail to make it clear why the module 10 is the central enabling technology for that application. 6,105,013 5 6 A. Background of Secure E-Mail a. Referring to FIGS. 2, 11 and 12, the user creates a transaction group 40, SI, generates an RSA key set S2 and In this section we provide an example of how a module 10 loads it into three objects 42 of the transaction group 40 (one could be used to allow anyone to receive his or her own RSA modulus object, N, and two RSA exponent objects, E e-mail securely at any location. 5 and D). He then privatizes the decryption exponent S3, D. 1. Standard E-Mail Finally, he creates a transaction script 44, S4 to take data In a standard e-mail system, a user's computer is conplaced in the input data object, encrypt it with the modulus nected to a provider of Internet services, and the user's N and private exponent D and place the result in the output computer provides an e-mail password when polling the data object. He locks the group S5 to prevent any additional provider's computer for new mail. The mail resides on the provider's computer in plain text form, where it can be read 10 transaction scripts 44 from being added. He "forgets" the value of D and publishes the values of E and N in public by anyone working there. In addition, while traveling from directories and in the signature blocks of his e-mail mesits source, the mail passes through many computers and was sages. Since he has forgotten D and since the D exponent also exposed at these locations. If the user receives his mail object has been privatized, there is no way that anyone will from his provider over a local area network, anyone else on the same network can capture and read the mail. Finally, 15 ever find out the value of D. b. Referring to FIG. 3, to send secure e-mail to the user, with many e-mail systems that do not require the user to the P.G.P. system is used. When the user receives the secure enter the password, anyone sitting at the user's computer can e-mail AI, he transmits the encrypted IDEA key into the retrieve and read his mail, since his computer automatically input data object of the transaction group 40, A2 and then provides the password when it polls the provider's comcalls the transaction script 44 to decrypt this key A3 and puter. It is frequently also possible to copy the password from a 20 place the decrypted result in the output data object A4. He configuration file in the user's computer and use it to read his then reads the decrypted IDEA key from the output data mail from a different computer. As a result of this broad object and uses it to decrypt his mail A5. Note that it is now distribution of the e-mail in plain text form and the weakness impossible for anyone, including the user, to read any new of password protection, standard e-mail is regarded as very mail without having physical possession of the module 10. msecure. 25 There is therefore no way that a user's mail can be read To counter this problem, the security system known as without his knowledge, because the module 10 must be P.G.P. (Pretty Good Privacy) was devised. To use P.G.P., a physically present on the computer where the mail is read. user generates a complete RSA key set containing both a The user can carry his module 10 wherever he goes and use public and private component. He makes his public key it to read his forwarded mail anywhere. His home computer widely available by putting it in the signature block of all his 30 is not the weak point in the security system. e-mail messages and arranging to have it posted in publicly Secure e-mail, as described above, is the simplest possible accessible directories of P.G.P. public keys. He stores his module application, requiring only one RSA key and one private key on his own personal computer, perhaps in a transaction script 44. It is unnecessary even to store the password-protected form. When someone wishes to send public key E in the module 10, but it is a good idea to do so private e-mail to this user, he generates a random IDEA 35 because the public key is supposed to be publicly accessible. encryption key and encrypts the entire message with the By storing E in an exponent object and not privatizing that IDEA encryption algorithm. He then encrypts the IDEA key object or the modulus object, N, the user insures that the itself using the public key provided by the intended recipipublic key can always be read from the module 10. There are ent. He e-mails both the message encrypted with IDEA and no transaction scripts 44 involving E because the module 10 the IDEA key encrypted with the user's public key to the 40 will never be required to perform an encryption. user. No one that sees this transmission can read it except the B. Digital Notary Service intended recipient because the message is encrypted with IDEA and the IDEA key is encrypted with the intended This section describes a preferred notary service using the recipient's public key. The recipient's computer contains the module 10. corresponding private key, and hence can decrypt the IDEA 45 1. Background of a Standard Notary Service key and use the decrypted IDEA key to decrypt the message. A conventional Notary Service Provider receives and This provides security from those who might try to read the examines a document from an End User and then supplies an user's mail remotely, but it is less effective when the user's uncounterfeitable mark on the document signifying that the document was presented to the notary on a certain date, etc. computer is accessible to others because the computer, itself, contains the private key. Even if the private key is password 50 One application of such a notary service could be to record protected, it is often easy to guess the user's password or disclosures of new inventions so that the priority of the eavesdrop on him when he enters it, so the user's computer invention can later be established in court if necessary. In provides little security. In addition, the user can receive this case, the most important service provided by the notary secure e-mail only at his own computer because his private is to certify that the disclosure existed in the possession of key is stored in that computer and is not available elsewhere. 55 the inventor on a certain date. (The traditional method for establishing priority is the use of a lab notebook in which Therefore, the weakness of P.G.P. is that it is tied strongly to the user's computer where the private key resides. inventors and witnesses sign and date disclosures of signifi2. Module Protected E-Mail cant inventions.) 2. Electronic Notary Service Using The Module With the exemplary module 10 being used to protect e-mail, a user could have his e-mail forwarded to him 60 A company, hereafter referred to as the Service Provider, decides to go into business to supply a notary service wherever he goes without fear that it would be read by others (strictly, a priority verification service) for its customers, or that his PC would be the weak link that compromises the hereafter referred to as the End Users. The Service Provider security of his mail. The module protected e-mail system is similar to the P.G.P. system, except that the private key used chooses to do this by using the module 10 as its "agents" and for decrypting the IDEA key is stored in a privatized object 65 gives them the authority to authenticate (date and sign) documents on his behalf. The preferred operation of this in a transaction group of the module 10 instead of in a Pc. The module protected e-mail system operates as follows: system is as follows: 6,105,013 7 8 a. Referring to FIGS. 4, 11 and 12, the Service Provider this case the Service Provider is a bank or other financial institution, the End User is the bank's customer who wishes creates a transaction group 40 for performing electronic notary functions in a "registered lot" of modules 10, Bl. to use the module 10 to make purchases, and the Merchant b. The Service Provider uses a secure computing facility is the provider of the purchased goods or services. The roles to generate an RSA key set and program the set into every 5 of the Service Provider, the Merchant, and the End User in module 10 as a set of three objects 42, a modulus object and these transactions are explained in detail below. two exponent objects B2. The public part of the key set is The fundamental concept of the digital cash purse as made known as widely as possible, and the private part is implemented in the module 10 is that the module 10 initially forgotten completely by the Service Provider. The private contains a locked money object containing a given cash exponent object is privatized to prevent it from being read 10 value, and the module 10 can generate, on demand, certifiback from the modules 10. cates which are essentially signed documents attesting to the c. The Service Provider reads the real-time clock 14 from fact that the amount of money requested was subtracted each module 10 and creates a clock offset object that from the value of the money object. These signed documents contains the difference between the reading of the real-time are equivalent to cash, since they attest to the fact that the clock 14 and some convenient reference time (e.g., 12:00 15 internal money object was decreased in value by an amount a.m. Jan. 1, 1970). The true time can then be obtained from corresponding to the value of the certificate. The merchant any module 10 by adding the value of the clock offset object can redeem these certificates for cash by returning them to to the real-time clock B3. the Service Provider. d. The Service Provider creates a transaction sequence When dealing with digital certificates representing cash, counter object initialized to zero B4. 20 "replay" or duplication is a fundamental problem. Since e. The Service Provider creates a transaction script 44 digital data can be copied and retransmitted easily, it differs which appends the contents of the input data object to the from ordinary coins or paper money which are difficult to true time (sum of real-time clock 14 and the value of the reproduce because of the special technology that is used in clock offset object) followed by the value of the transaction their manufacture. For this reason, the receiver of the counter followed by the unique lase red registration number. 25 payment must take special steps to insure that the digital The transaction script 44 then specifies that all of this data certificate he receives is not a replay of some previously be encrypted with the private key and placed in the output issued certificate. This problem can be solved by having the data object. The instructions to perform this operation are payee generate a random "SALT", a challenge number, and stored in the transaction group 40 as a transaction script provide it to the payer. 30 object B5. SALT is a method of preventing replay. A random number f. The Service Provider privatizes any other objects 42 is sent and used in a challenge/response mode. The other that it does not wish to make directly readable or writable party is challenged to return the random number as part of B6. their response. g. The Service Provider locks the transaction group 40, The payer constructs a signed certificate which includes preventing any additional transaction scripts 44 from being 35 both the money amount and the payee's SALT. When the added B7. payee receives this certificate, he decrypts it with the public h. Referring to FIG. 5, now the Service Provider distribkey, checks the money amount, and then confirms that the utes the modules to paying customers (End Users) to use for SALT is the same as the one he provided. By personalizing notary services. Anytime an End User wishes to have a document certified, the End User performs the Secure Hash 40 the certificate to the payee, the payer proves to the payee that the certificate is not a duplicate or replay and is therefore Algorithm (Specified in the Secure Hash Standard, FIPS authentic. This method can be used regardless of whether the Pub. 180) to reduce the entire document to a 20 byte module 10 is the payer or the payee. message digest. The End User then transmits the 20 byte message digest to the input data object Cl and calls on the Another problem that must be addressed is irrepudiability. transaction script 44 to bind the message digest with the true 45 This means that none of the parties to the transaction should time, transaction counter, and unique lase red serial number be able to argue that he did not actually participate in the and to sign the resulting packet with the private key C2. transaction. The transaction record (money certificate) should contain elements to prove that each party to the i. The End User checks the certificate by decrypting it transaction was a willing participant. with the public key and checking the message digest, true time stamp, etc. to make sure they are correct C3. The End 50 1. Background Conventional Cash Transactions In a conventional cash transaction, the End User first User then stores this digital certificate along with the original copy of the document in digital form C4. The Service receives Federal Reserve Notes from a bank and the bank Provider will attest to the authenticity of the certificates subtracts the equivalent amount of money from the balance produced by its modules. in his account. The End User can verify the authenticity of j. After a period of time specified by the Service Provider, 55 the Federal Reserve Notes by means of the "public key", which includes: the user returns his module 10, pays a fee, and gets a new module containing a new private key. The old modules can a. Magnetic ink attracted by a magnet. be recycled by erasing the entire transaction group and b. Red and blue threads imbedded in the paper. reprogramming them. The Service Provider maintains an c. Microfine printing surrounding the engraved portrait. d. Embedded stripe printed with USA and denomination archive of all the public keys it has ever used so that it can 60 testify as needed to the authenticity of old certificates. of the note. The "private key" to this system is the details of how the C. Digital Cash Dispenser raw materials for printing money are obtained and how the money is actually printed. This information is retained by This exemplary usage model focuses on the module 10 as a cash reservoir from which payments can be made for 65 the government and not revealed. goods or services. (To simplify the discussion, the subject of These notes are carried by the End User to the Merchant, refilling the module 10 with cash is postponed until later). In where they are exchanged for goods or services. The Mer- 6,105,013 9 10 chant also uses the "public key" of the notes to verify that lasered registration number of the module E14. The bank they are legitimate. then looks up the module 10 by the unique lase red registration number in a database to confirm that the transaction Finally, the Merchant carries the notes to a Bank, where the "public key" is again examined by the teller. If the notes count for this transaction has not been submitted before. are legitimate, the Merchant's bank account balance is 5 When this test is passed, the bank adds the transaction count value to the database, and then increases the Merchant's increased by the face value of the notes. The end result of this transaction is that the End User's bank balance by the amount of the purchase E15. The fact bank balance is reduced, the Merchant's bank balance is that portions of the certificate were signed by both the module 10 and the Merchant confirms that the transaction increased by the same amount, the goods or services are transferred from the Merchant to the End User, and the 10 was freely agreed to by both the Merchant and the module Federal Reserve Notes are ready to be reused for some other 10. transaction. Note that there are many different ways of combining data 2. Exemplary Monetary Transactions Using The Module combinations of the transaction counter value, the unique Monetary transactions using the module 10 and digital lasered registration number, the random SALT provided by certificates are somewhat more complicated because digital 15 payee, and the amount of purchase, encrypted by the module's private key, the Merchant's private key, or both. Many data, unlike Federal Reserve Notes, can be copied and duplicated easily. Nevertheless, the use of "SALTs" and of these combinations can also provide satisfactory guarantransaction sequence numbers can guarantee the authenticity tees of uniqueness, authenticity, and irrepudiability, and the of digital certificates. (In the following discussion, it is design of the firmware allows the Service Provider fiexibilassumed that every party to the transaction has its own RSA 20 ity in writing the transaction script 44 to serve his particular needs. key set with a private key that it is able to keep secret.) a. Referring to FIG. 6, the Service Provider (bank) preD. Digital Cash Replenishment pares the module 10 by creating a transaction group 40 containing a money object representing the monetary value The discussion of a digital cash purse is section II.C., stored in the module 10. The Service Provider also creates 25 above, did not address the issue of cash replenishment. The a transaction count object, a modulus object, and an expoService Provider can add cash replenishment capability to nent object and stores the provider's private key in the the module 10, as discussed in section II.C., simply by exponent object Dl. He privatizes the key so that it cannot adding another modulus object and exponent object conbe read D2. Next, he stores a transaction script 44 in the taining the Service Provider's public key, a random SALT transaction group 40 to perform the monetary transaction 30 object, and a transaction script 44 for adding money to the and locks the group so that no further objects can be made balance. The Service Provider can add money to a module D3, D4. (The details of what this transaction script does are 10 either in person or remotely over a network. The process described further below.) Finally, he publishes the correof adding money is as follows: sponding public key widely so that anyone can obtain it D5. 1. Referring to FIG. 8, the Service Provider reads the b. The End User receives the module 10 from the Service 35 unique lasered registration number (ID number) of the Provider, and the End User's bank account is debited by the module F1, F2 and calls on a transaction script 44 to return amount stored in the module 10. Using a PC or handheld the value of a random SALT object. The module 10 calcucomputer, the End User can interrogate the module 10 to lates a new random SALT value from the previous value and verify that the balance is correct. the random number generator and returns it to the Service c. Referring to FIG. 7, when the End User wishes to 40 Provider F3. purchase some goods or services from a Merchant E1, the 2. The Service Provider places the random SALT returned Merchant reads the unique lase red registration number of the by the module 10 in a packet along with the amount of module and places it in a packet along with a random SALT money to be added and the unique lasered registration E2, E3. The merchant then signs this packet with the merchant's own private key E4 and transmits the resulting 45 number of the module 10 and then encrypts the resulting packet with the Service Provider's private key F4. This encrypted packet along with the amount of the purchase to encrypted packet is then written back into the input data the input data object of the transaction group 40, E5. object of the transaction group 40. d. The Merchant then invokes the transaction script 44 3. The Service Provider invokes a transaction script 44 programmed into the module 10 by the Service Provider. This transaction script 44 subtracts the amount of the 50 which decrypts the contents of the input data object with the Service Provider's public key and then checks the unique purchase from the money object E6, appends the value of the lasered registration number and the value of the random transaction counter object to the contents of the input data SALT against the one that it originally provided. If the SALT object E7, signs the resulting packet with the private key, matches, the money amount is extracted from the packet and and places the result in the output data object E8. e. The Merchant then reads the result from the output data 55 added to the value of the money object in the module F5. Note that the inclusion of the unique lasered registration object and decrypts it with the Service Provider's public key number is not strictly necessary, but it is included to insure E9. He then confirms that the amount of the purchase is that the Service Provider knows exactly which module is correct and that the remaining data is identical to the packet receiving the funds. he signed in step c., E10. f. Having confirmed that the certificate provided by the 60 E. Exemplary Description of Direct Transfer of module 10 is both authentic and original (not a duplicate), Funds Between Modules the Merchant delivers the goods or services Ell. Later the Section II.C.2.g. above reveals a problem that occurs Merchant sends the digital certificate to a bank. g. The bank decrypts the certificate with the Service when the Merchant returns the digital certificates to his bank Provider's public key E12, extracts the amount of the 65 for crediting to his account. The Merchant's bank must either send the certificates back to the Service Provider for purchase and the transaction count, and decrypts the remainredemption, or have access to the Service Provider's records ing data with the Merchant's public key to reveal the unique 6,105,013 11 12 2. The Payee appends the amount of the purchase to the in a database so that it can determine whether the value of the transaction count object is unique. This is inconvenient Payer's SALT, followed by a SALT randomly generated by and requires infrastructure. It also prevents any of the the Payee. The Payee then encrypts this packet with the transactions from being anonymous (as they would have Service Provider's private key and sends it back to the Payer been if cash had been used), because the Merchant's bank 5 H2. must log used certificate numbers into a database to prevent 3. The Payer decrypts the packet with the Service Prothem from being reused. These problems can all be elimivider's public key H3, extracts the Payer SALT, and comnated by making use of fund transfers between modules. In pares it with the SALT that the Payer provided in step 1. If addition, the steps required to accomplish a fund transfer between modules are considerably simpler than those 10 they agree, the Payer subtracts the amount of the purchaser from its balance H4 and generates a certificate consisting of described in section II.C.2. the amount of the purchase and the Payee's SALT, which it In the discussion which follows, it is assumed that the encrypts with the Service Provider's private key and returns Merchant also has a module which he uses to collect the to the Payee H5. funds received from End Users (customers). The module in the possession of the End User will be called the Payer, and 4. The Payee decrypts the packet with the Service Prothe module in the possession of the Merchant will be called 15 vider's public key H6, extracts the Payee SALT, and comthe Payee. The steps to accomplish the funds transfer are as pares it with the SALT that the Payee provided in step 2. If follows: they agree, the Payee adds the amount of the purchase to its 1. Referring to FIGS. 9, 11 and 12, using his computer, the balance H7. Merchant calls on a transaction script 44 in the Payee to The exchange of SALTs allows each module to confirm provide a random SALT. He reads this SALT from the output 20 that it is communicating with another module, and that the object of the transaction group 40. funds transfer requested is therefore legitimate. The SALT 2. The Merchant copies the SALT and the amount of the comparison described in step 3 allows the Payer to confirm End User's purchase to the input data object of the Payer Gl, that the Payee is a legitimate module 10 before the funds are then calls on a transaction script 44 in the Payer to subtract withdrawn, and the comparison described in step 4 allows the amount of the purchase from the balance, combine the 25 the Payee to confirm that the Payer is a legitimate module 10 Payee's SALT in a packet with the amount of the purchase, before the funds are deposited. The transactions described encrypt the resulting package with the Service Provider's above provide the minimum necessary information in the private key, and return it in the output data object G2. encrypted packets to confirm that the funds are being 3. The Merchant then reads this packet and copies it to the transferred from one module 10 to another. Other input data object of the Payee, then calls on a transaction 30 information, such as the unique lase red registration number, script 44 in the Payee to decrypt the packet with the Service could be included (at the cost of anonymity) to provide Provider's public key G3 and check the SALT against the additional information and greater control over the transacone originally generated by the Payee. If they agree, the tion. Payee adds the amount of the purchase to its balance G4. This completes the funds transfer. Note that this transac- 35 G. An Exemplary Technique for Software tion effectively transferred the amount of the purchase from Authorization and Usage Metering the Payer to the Payee, and the steps of the transaction were The module 10 is well-suited for the tasks of enabling much simpler than the three-way transaction described in specific software features in a comprehensive software sysII.C.2. The Merchant can transfer the balance to his bank account by a similar transaction in which the bank provides 40 tem and for metering usage of those features. (This usage model parallels the previously described model for witha SALT to Merchant's module and the Merchant's module drawing money from a module 10.) prepares a certificate for the balance which it delivers to the 1. Preparation bank. Use of a module by the Merchant to collect funds Referring to FIGS. 11 and 12, the Service Provider creates simplifies the transaction, eliminates the need for a database to confirm uniqueness, and preserves the anonymity of the 45 a transaction group 40 and stores a configuration object in the group detailing which software within the module 10 the End User that would normally result from a cash transaction. End User is allowed to use. The Service Provider also F. Exemplary Transactions With a Module Over a creates a money object containing the allowed usage credit Network (which could be in units of time rather than the actual dollar The transactions described in section II.C.2., II.D. and 50 amount), and stores and privatizes a private RSAkey pair to II.E. above could also be performed over a network, allowuse for authentication. A transaction script 44 is stored to ing a physical separation between the Merchant, End User, receive a SALT and the amount to withdraw from the End and modules. However, this could produce a potential probUser, decrement the balance by the amount withdrawn, and lem because one of the communications to the module 10 is output an RSA signed certificate containing the amount unencrypted and therefore subject to falsification. To avoid 55 withdrawn, the sale, and the value of the configuration this problem, both parties must produce a SALT so that the object. other can demonstrate its ability to encrypt the SALT with 2. Usage the Service Provider's private key and therefore prove At periodic intervals during the use of the software within authenticity. The operation of this protocol is described as the module 10, the PC program generates a random SALT follows as it relates to the transfer of funds between modules 60 and an amount to charge for the use of the module 10 and (section II.E. above). This method can be employed to allow transmits this information to the module 10. The module 10 any of the transactions described above to take place over a decrements the balance and returns the certificate. The PC network. This clearly enables secure electronic commerce decrypts the certificate and confirms that the SALT is the over the Internet. same, the amount withdrawn is correct, and the use of the 1. Referring to FIGS. 10, 11 and 12, the Payer generates 65 software within the module 10 is authorized by the infora random SALT and transmits it over the network to the mation stored in the configuration object. If all of these tests Payee HI. are successful, the module 10 executes for a specified period 6,105,013 13 of time or for a given number of operations before asking the module 10 for another certificate. There are many possible variations on this usage model. For example, the transaction script 44 could also bind up the true time in the certificate so that the application program running on the PC could guarantee that the execution time is accurately measured. (This would require the Service Provider to create a clock offset object during initialization to provide a reference for measuring time.) 14 object) common to every module, and a transaction script 44. The script 44 combines the SALT and the amount to be withdrawn (provided by the End User's computer) with the unique lasered registration number of the module 10, 5 encrypts this packet with the private key, subtracts the amount withdrawn from the balance, and places the encrypted certificate in the output object where it can be read by the Pc. The Service Provider initializes the balance with a spe10 cific amount of money, locks the balance and script 44, H. Simulation of Transaction Touch MemoryTM privatizes the RSA key objects, and locks the group so that no more scripts can be added. The modules prepared in this This usage model describes how the module 10 can be way can then be sold over the counter for use with PC-based used to simulate the behavior of the simpler Transaction postage metering programs. Touch MemoryTM (DS 1962) (hereinafter "TTM") or any 15 2. Usage similar device or substitute that can operate in a nearly When the first envelope is to be printed, the PC program equivalent or similar fashion. The principal feature of the prepares the first SALT by calculating a one-way hash (e.g., TTM is that there is a counter associated with a block of the Secure Hash Standard, PIPS PUB 180) of the date and memory in such a way that the counter is incremented the unique lasered registration number of the part. This automatically whenever the contents of the memory block 20 information is passed to the module 10 along with the are changed. amount of postage to be withdrawn. The resulting certificate 1. Preparation is printed in the two-dimensional barcode along with the This simple feature can be programmed into the module hash generation number (one for the first hash), the unique 10 by creating a configuration object, a transaction counter lasered registration number, the plaintext denomination of object, and a transaction script object which combines the 25 the stamp, the date, and other information as desired to contents of the input object with the value of the transaction identify the End User. Subsequent SALTs are generated by counter object and places them in the configuration object, performing the one-way hash again on the previous SALT incrementing the counter automatically in the process. All and incrementing the hash generation number. three objects 42 are locked, but none are privatized. When the Service Provider receives the envelopes, most 2. Usage 30 of them are taken at face value and the digital barcode is not To add or remove money, the End User reads the values read. However, a statistical sampling of the barcodes are of the configuration object and the transaction counter object read and the information provided is decrypted with the directly, then decrypts the configuration object and checks public key and verified. Discrepancies are investigated, and the transaction count from the decrypted package against the fraud is prosecuted under existing law. Verification is posvalue of the counter object. The End User also checks the 35 sible because the Service Provider can recreate the SALT unique lase red registration number from the encrypted from the unique lasered registration number, date, and hash packet against the registration number of the module 10. If generation number, and thereby verify that the transaction is these both agree, the balance is considered valid. An amount not only current but also linked to a specific module 10. is added to or subtracted from the balance, the transaction Note that there are many possible variations on the count is incremented, and the packet is re-encrypted and 40 method described above, leading to similar results. The most stored in the input data object. The transaction script 44 is likely fraud would be duplication, in which a user captures then invoked to move the data and the transaction counter the digital information sent to the printer to produce the value to the configuration object, automatically incrementpostage certificate and makes many duplicate copies of the ing the counter value in the process. (The transaction script same certificate. This could be detected easily by the Service 44 guarantees that the counter object's value will be incre45 Provider simply by reading the hash generation number and mented anytime data in the configuration object is changed.) unique registration number and looking them up in a dataThis simple operation can be performed relatively quickly base to make sure that the user is not duplicating the same since the module 10 does not have to perform any encryption certificate. (This check could be performed more often than itself. However, as with the TTM, the End User must now full certificate verification, which would require RSA use a secure computing facility to perform the encryption 50 decryption.) and decryption operations. This usage is therefore less protected than those which depend on the module's encryp1. Subscription Information Service tion capabilities. This usage model describes an application in which a Service Provider makes available information in encrypted I. Exemplary Technique for Postal Metering 55 form over the internet to users who have agreed to pay for Service such information. This application works exactly the same way as the Secure E-mail usage model described in section This usage model describes an application in which the module 10 is used to dispense postage certificates. The A above, except that the Service Provider bills the user for digital information which constitutes the certificate is the encrypted information that the Service Provider e-mails printed on the envelope in the form of a two-dimensional 60 to him. The billing information is obtained from a registry of pubic RSA keys which allows the Service Provider to barcode which can be read and authenticated by the Service Provider (U.S.P'S.). A computer program running on an identify and bill a user, based on his public key or on the ordinary PC attached to a laser printer in combination with unique lasered serial number of his module 10. the module 10 can be used to print the postage certificates. K. Registry with Guaranteed Private Key Security 1. Preparation 65 The Service Provider creates a group containing a money In order to provide Merchants with an independent conregister, a private RSA key (exponent object and modulus firmation of the identity of an End User, a Service Provider 6,105,013 15 16 may wish to maintain a registry containing the pubic key of networked location. By guaranteeing the presence of the a particular module 10 along with the name, address, and End User's module 10 at the remote site, this identification other identifying information of the person to whom the validates and legitimizes the contents of the data packet and module 10 is issued. For this purpose, it is essential for the therefore also any financial transactions, represented by the Service Provider to make sure that the public key in the 5 contents of the packet, that may be requested by the End registry corresponds to a private key which is known only to User. the module 10. In order to guarantee this, the module 10 The model described here is one in which the authority to must be in the possession of the Service Provider at the time perform financial transactions derives from the registry the public key is extracted from the module 10 and placed maintained by the Service Provider. It is therefore essential in the registry. After recording this information in the 10 that this information be accurate and that the private key in registry, the Service Provider can ship the module 10 to the the module 10 can be secure from all parties. Because each End User named in the registry. module 10 has its own unique RSA key set, there is no It is also important for the End User to be able to confirm, provision in this model for the module 10 to represent when he receives the module 10, that the private key is not money independently of the registry maintained by the known to the Service Provider or any of the Service Pro- 15 Service Provider. Instead, the registry and the ability of the vider's employees. This is important because an ideal regmodule 10 to sign with its private key together serve as a istry system should not require that any party trust any other definitive means of identifying the End User remotely to any party. The system works to everyone's satisfaction only other party. when each party can be convinced that none of the other L. Taxation of Transaction Volume parties could possibly know the private key. 20 This usage applies to a business model in which the One way to accomplish this, the Service Provider sends a command to the module 10 to cause it to generate a complete Service Provider intends to collect a service charge from the End User that is a percentage of the total amount of money RSA key set using random numbers, and then to automatically make one of the exponents private, so that there is no transferred by the module 10. This model is similar to those way any person can discover the value of the private key. 25 described in sections C D, E, and F above, but with the This key set has a special type, different from that of a key addition of a destructor object that can cause any particular set programmed into the can by a Service Provider, so that transaction script 44 to expire at a predetermined date and anyone doing business directly with the module 10 can time. This model also requires the use of an additional determine for themselves that the private key is known only money object which is programmed (with a suitable transto the module 10. 30 action script 44) to accumulate the total value of all the 1. Preparation money passed out of the module 10. The Service Provider creates a password-protected trans1. Preparation action group 40 for the application, and then creates an RSA The Service Provider creates a transaction group 40 key set in the group that is generated by the module 10. containing money objects, etc. as described in sections D (After generating the key set, the modulus and one exponent 35 and E above. The Service Provider also creates an additional will be locked automatically, while the second exponent will money object to serve as the volume accumulator. The Service Provider also creates transaction scripts 44 for be privatized automatically by the firmware of the module 10. The Service Provider then creates a transaction script 44 withdrawing or depositing money as in D and E, except that which will encrypt data from the input object with the the transaction script for adding money to the module 10 private key and place the encrypted result in the output 40 includes a destructor object set to expire at a predetermined time in the future, and the transaction script 44 for withobject. The transaction script 44 might optionally append additional information (e.g., the transaction counter) to the drawing money includes an instruction to add the amount of the withdrawal to the money object serving as the volume data from the input object, in order to satisfy any additional accumulator. The service provider then locks the group and objectives of the application. Other objects 42 and transaction scripts 44 may also be added at the discretion of the 45 ships the module 10 to the End User. Service Provider. The transaction group 40 is locked by the 2. Usage Service Provider when it is complete. The End user uses the module 10 for deposits and Next, the Service Provider reads the RSA modulus and withdrawals as described in sections D and E above. During the time that the module 10 is used, the cumulative total of public exponent from the transaction group 40 and records them in the registry along with the information identifying 50 all the money spent from the module 10 is accumulated in the End User. Finally, the Service Provider ships the module the money object serving as the volume accumulator. When 10 to the End User, and later conveys to the End User the the time limit expires, the End User can no longer add password that can be used to access the transaction group 40. money to his module 10, although he can continue to 2. Usage withdraw money if desired until there is none left. The End When a Merchant wishes to obtain positive identification 55 User then returns the module 10 to the Service Provider to of an End User over the Internet or other network, the be restored. The Service Provider reads the remaining Merchant generates a unique packet of data and transmits it amount of money and also the amount of money recorded in the volume accumulator. The Service Provider bills the End to the End User, and the End User passes the data into the input object and invokes the transaction script 44 which User a service charge that is a percentage of the amount in causes it to be encrypted with the private key generated by 60 the volume accumulator. If the End User is willing to pay the module 10. The resulting encrypted packet is transmitted this amount to continue his service, the transaction group 40 back to the Merchant. The Merchant then accesses the data is destroyed and rebuilt, then the amount of money remainbase provided by the Service Provider to obtain the public ing in the module 10 when the End User returned it is key belonging to the End User, and attempts to decrypt the programmed back into the money object of the transaction encrypted packet using the End User's public key. If the 65 group 40. The Service Provider then returns the restored decryption succeeds, the Merchant has proven the physical module to the End User, provided that the End User pays the presence of the End User's module 10 at the remotely service charge. 6,105,013 17 The system described above allows a Service Provider to collect periodic fees for service without having to monitor and be involved in every financial transaction performed by the End user. The fee is based on actual usage, as determined by the contents of the volume register. 18 Decryption: M~Cd (mod N) (2) where C is the cyphertext, d and e are the RSA exponents (see below), and N is the RSA modulus. RSA Exponent 5 Both e and d (shown in equations 1 and 2 above) are RSA exponents. They are typically large numbers but are smaller Exemplary Firmware Definitions for Use With the than the modulus (N). RSA exponents can be either private Module or public. When RSA exponents are created in the module, they may be declared as either. Once created an exponent Object 10 may be changed from a public exponent to a private expoThe most primitive data structure accepted by and opernent. After an exponent has been made private, however, it ated on by the modules firmware. A list of valid objects and will remain private until the transaction group 40 to which their definitions is provided in the next section. it belongs is destroyed. Transaction Script Group 15 A transaction script is a series of instructions to be carried A self-contained collection of objects. An object's scope out by the module. When invoked the module firmware is restricted to the group of which it is a member. interprets the instructions in the script and places the results Group ID in the output data object (see below). The actual script is simply a list of objects. The order in which the objects are A number preferably between 0 and 255 representing a listed specifies the operations to be performed on the objects. specific group. 20 Transaction scripts 44 preferably may be as long as 128 Object ID bytes. A number preferably between 0 and 255 representing a Transaction Counter specific object within a specific group. The transaction counter object is preferably 4 bytes in Object Type length and is usually initialized to zero when it is created. Preferably a 1-byte type specifier that describes a specific 25 Every time a transaction script, which references this object, is invoked, the transaction counter increments by 1. Once a object. transaction counter has been locked it is read only and PIN provides an irreversible counter. An alphanumeric Personal Identification number that is Money Register preferably eight bytes in length. The money register object is preferably 4 bytes in length 30 and may be used to represent money or some other form of Common PIN credit. Once this object has been created, it must be locked The PIN that controls access to shared resources such as to prevent a user from tampering with its value. Once locked the audit trail. It is also used to control the host's ability to the value of this object can be altered only by invoking a create and delete groups. 35 transaction script. A typical transaction group 40 which Group PIN performs monetary transactions might have one script for withdrawals from the money register and one for deposits to The PIN that controls access to operations specific to the money register. objects within a group. Clock Offset Audit Trail This object is preferably a 4 byte number which contains A record of transactions occurring after the module has 40 the difference between the reading of the module's real-time been locked. clock and some convenient time (e.g., 12:00 a.m., Jan. 1, Locked Object 1970). The true time can then be obtained from the module by adding the value of the clock offset to the real-time clock. An object which has been locked by executing the lock SALT object command. Once an object is locked it is not directly 45 A SALT object is preferably 20 bytes in length and should readable. be initialized with random data when it is created. When a Private Object host transmits a generate random SALT command, the An object which has been privatized by executing the module combines the previous SALT with the module's privatize object command. Once an object is private, it is not random number (produced preferably by randomly occurdirectly readable or writable. 50 ring power-ups) to generate a new random SALT. If the Locked Group SALT object has not been privatized it may subsequently be A group which has been locked using the locked group read by issuing a read object command. command. After a group has been locked it will not allow Configuration Data object creation. This is a user defined structure with preferably a maxi55 mum length of 128 bytes. This object is typically used to Composite Object store configuration information specific to its transaction A combination of several objects. The individual objects group 40. For example, the configuration data object may be inherit the attributes of the composite object. used to specify the format of the money register object (i.e., Exemplary Object Definitions the type of currency it represents). Since this object has no 60 pre-defined structure, it may never be used by a transaction RSAModulus object. A large integer preferably of at most 1024 bits in length. Input Data It is the product of 2 large prime numbers that are each about An input data object is simply an input buffer with half the number of bits in length of the desired modulus size. preferably a maximum length of 128 bytes. A transaction The RSA modulus is used in the following equations for 65 group may have multiple input objects. The host uses input encrypting and decrypting a message M: data objects to store data to be processed by transaction Encryption: C~Me (mod N) scripts 44. (1) 6,105,013 19 20 Output Data The output data object is used by transaction scripts as an output buffer. This object is automatically created when the transaction group is created. It is preferably S12 bytes in length and inherits password protection from its group. 5 Random Fill When the script interpreter encounters this type of object it automatically pads the current message so that its length is 1 bit smaller than the length of the preceding modulus. A handle to this object is automatically created when the 10 transaction group is created. It is a private object and may not be read using the read object command. Working Register This object is used by the script interpreter as working space and may be used in a transaction script. A handle to 15 this object is automatically created when the transaction group is created. It is a private object and may not be read using the read object command. ROM Data This object is automatically created when the transaction 20 group is created. It is a locked object and may not be altered using the write object command. This object is 8 bytes and length and its contents are identical to the 8 by ROM data of the Micro-In-A-Can™. Preferred Module Firmware Command Set Set Common PIN(01H) Transmit (to module) OlH, old PIN, new PIN, PIN option byte Receive data CSB (command status byte )=0 if successful, appropriate error code otherwise Output length=O Output Data=O Notes: The PIN option byte may be the bitwise-or of any of the following values: PIN_TO_ERASE 00000001b require PIN for Master Erase) PIN_TO_CREATE OOOOOOlOb (require PIN for group creation). Initially the module has a PIN (Personal Identification Number) of 0 (Null) and an option byte of O. Once a PIN has been established it can only be changed by providing the old PIN or by a Master Erase. However, if the PIN_TO_ ERASE bit is set in the option byte, the PIN can only be changed through the set common PIN command. Possible error codes for the set common PIN command: ERR_BAD_COMMON PIN (Common PIN match failed) ERR_BAD_PIN_LENGTH (New PIN length>8 bytes) ERR_BAD_OPTION_BYTE (Unrecognizable option byte) For all commands described in this section, data received by the host will be in the form of a return packet. A return packet has the following structure: Command status byte (0 if command successful, error code otherwise, 1 byte) Output data length (Command output length, 2 bytes) Output data (Command output, length specified above). Master Erase (02H) Transmit data 02H, Common PIN Receive data CSB=O if command was successful, ERR BAD COMMON PIN otherwise 25 30 35 40 45 50 55 60 65 Output length=O Output data=O Notes: If the LSB (least significant bit) of the PIN option is clear (i.e. PIN not required for Master Erase) then a 0 is transmitted for the Common PIN value. In general this text will always assume a PIN is required. If no PIN has been established a 0 should be transmitted as the PIN. This is true of the common PIN and group PINS (see below). If the PIN was correct the firmware deletes all groups (see below) and all objects within the groups. The common PIN and common PIN option byte are both reset to zero. After everything has been erased the module transmits the return packet. The CSB is as described above. The output data length and output data fields are both set to O. Create Group (03H) Transmit data 03H, Common PIN, Group name, Group PIN Receive data CSB=O if command successful, appropriate error code otherwise Output length=1 if successful, 0 otherwise Output data=Group ID if successful, 0 otherwise Notes: The maximum group name length is 16 bytes and the maximum PIN length is eight bytes. If the PIN_TO_ CREATE bit is set in the common PIN option byte and the PIN transmitted does not match the common PIN the module will set the OSC to ERR BAD COMMON PIN. Possible error return codes for the create group command: ERR_BAD_COMMON_PIN (Incorrect common PIN) ERR_BAD_NAME_LENGTH (If group name length> 16 bytes) ERR_BAD_PIN_LENGTH (If group PIN length>8 bytes) ERR_MIAC_LOCKED (The module has been locked) ERR_INSUFFICIENT_RAM (Not enough memory for new group) Set Group PIN (04H) Transmit data 04H, Group ID, old GPIN, new GPIN Receive data CSB=O if command successful, appropriate error code otherwise Output length=O Output data=O Notes: The Group PIN only restricts access to objects within the group specified by the group ID transmitted in the command packet. Possible error codes for the set group PIN command: ERR_BAD_GROUP _PIN (Group PIN match failed) ERR_BAD_PIN_LENGTH (New group PIN length>8 bytes) Create Object (OSH) Transmit data OSH, Group ID, Group PIN, Object type, Object attributes, Object data Receive data CSB=O if command successful, appropriate error code otherwise Output length=1 if successful, 0 otherwise Output data=object ID if successful, 0 otherwise 6,105,013 21 Notes: If the Create Object command is successful the module firmware returns the object's ID within the group specified by the Group ID. If the PIN supplied by the host was incorrect or the group has been locked by the Lock Group command (described below) the module returns an error code in the CSB. An object creation will also fail if the object is invalid for any reason. For example, if the object being created is an RSA modulus (type 0) and it is greater than 1024 bits in length. Transaction script creation will succeed if it obeys all transaction scripts rules. Possible error return codes for the create object command: 22 07H, Group ID, Group PIN, Object ID Receive data CSB=O if successful, appropriate error code otherwise Notes: 5 If the Group ID, Group PIN and Object ID were valid the object will be privatized. Privatized objects share all the properties of locked objects but are not readable. Privatized objects are only modifiable through transaction scripts. Note that locking a privatized object is legal, but has no meaning 10 since object privatization is a stronger operation than object locking. Privatizing an object is an irreversible operation. Possible error return codes for the privatize object command: ERR_BAD_GROUP _PIN (Incorrect group PIN) 15 ERR_GROUP _LOCKED (The group has already been ERR_BAD GROUP PIN (Incorrect group PIN) ERR_GROUP LOCKED (The group has been locked) locked) ERR_MIAC_LOCKED (The module has been locked) ERR_BAD_GROUP _ID (Specified group does not exist) ERR_MIAC_LOCKED (The module has been locked) 20 ERR_BAD_OBJECT_ID (Specified object does not ERR_INVALID_TYPE (The object type specified IS exist) invalid) Make Object Destructable (OSH) ERR_BAD_SIZE (The objects length was invalid) Transmit data ERR_INSUFFICIENT_RAM (Not enough memory for 25 OSH, Group ID, Group PIN, Object ID new object) Receive data CSB=O if successful, appropriate error code otherwise Notes: Object types: RSAmodulus 0 If the Group ID, Group PIN and Object ID were valid the RSA exponent 30 object will be made destructable. If an object is destructable Money register 2 it becomes unusable by a transaction script after the groups 3 Transaction counter 4 Transaction script destructor becomes active. If no destructor object exists Clock offset 5 within the transaction group the destructible object attribute Random SALT bit has no affect. Making an object destructable is an Configuration object 7 35 irreversible operation. 8 Input data object Output data object 9 Possible error return codes for the make object destrucObject Attributes: Locked 00000001b table command: Privatized 00000010b ERR_BAD_GROUP _PIN (Incorrect group PIN) ERR_GROUP _LOCKED (The group has already been Objects may also be locked and privatized after creation 40 locked) by using the Lock Object and Privatize Object commands ERR_MIAC_LOCKED (The module has been locked) described below. ERR_BAD_GROUP _ID (Specified group does not Lock Object (06H) exist) Transmit data ERR BAD OBJECT ID (Specified object does not 45 06H, Group ID, Group PIN, Object ID exist) Receive data Lock Module (09H) CSB=O if command successful, appropriate error code Transmit data otherwise 09H, Common PIN Output length=O 50 Receive data Output data=O CSB=O if successful, appropriate error code otherwise Notes: Output length=2 if successful, 0 otherwise If the Group ID, Group PIN and Object ID are all correct, Output data=audit trail size if successful, 0 otherwise the module will lock the specified object. Locking an object Notes: 55 is an irreversible operation. If the host supplied Common PIN is correct and the Possible error return codes for the lock object command: module has not previously been locked, the command will ERR_BAD_GROUP _PIN (Incorrect group PIN) succeed. When the module is locked it will not accept any new groups or objects. This implies that all groups are ERR_GROUP _LOCKED (The group has already been automatically locked. The RAM not used by the system or locked) ERR_MIAC_LOCKED (The module has been locked) 60 by groups will be used for an audit trail. There is no audit trail until the module has successfully been locked! ERR_BAD_GROUP _ID (Specified group does not An audit trail record is six bytes long and has the exist) following structure: ERR BAD OBJECT ID (Specified object does not Group ID I Object ID I Daterrime stamp. 65 exist) Once an audit trail has been established, a record of the Privatize Object (07H) Transmit data form shown above will be stored in the first available size 6,105,013 23 24 byte location every time a transaction script is executed. If the object has not been privatized the module will transmit Note that since the module must be locked before the audit the object data to the host. If the Group PIN was invalid or the object has been privatized the module will return a 0 in trail begins, neither the group ID nor any object ID is subject to change. This will always allow an application processing the output length, and data fields of the return packet. the audit trail to uniquely identify the transaction script that 5 Possible error codes for the read object command: was executed. Once the audit trail has consumed all of its ERR_BAD_GROUP _PIN (Incorrect group PIN) available memory, it will store new transaction records over ERR_BAD_GROUP _ID (Specified group does not the oldest transaction records. exist) Possible error codes for the lock module command: ERR_BAD_OBJECT_ID (Object did not exist in ERR_BAD_COMMON_PIN (Supplied common PIN 10 group) was incorrect) ERR OBJECT PRIVATIZED (Object has been ERR_MIAC_LOCKED (Module was already locked) privatized) Lock Group (OAH) Write Object (ODR) Transmit data Transmit data 15 OAH, Group ID, Group PIN ODR, Group ID, Group PIN, Object ID, Object size, Receive data Object Data CSB=O if command successful, appropriate error code Receive data otherwise CSB=O if successful, appropriate error code otherwise Output length=O 20 Output length=O Output data=O Output data=O Notes: Notes: If the group PIN provided is correct the module BIOS will If the Group ID, Group PIN and Object ID were correct, not allow further object creation within the specified group. the module checks the attribute byte of the specified object. Since groups are completely self-contained entities they may 25 If the object has not been locked or privatized the module be deleted by executing the Delete Group command will clear the objects previous size and data and replace it (described below). with the new object data. Note that the object type and Possible error return codes for the lock group command: attribute byte are not affected. ERR_BAD_GROUP _PIN (Incorrect group PIN) Possible error codes for the write object command: 30 ERR_GROUP _LOCKED (The group has already been ERR_BAD_GROUP _PIN (Incorrect group PIN) locked) ERR_BAD_GROUP _ID (Specified group does not ERR_MIAC_LOCKED (The module has been locked) exist) ERR_BAD_GROUP _ID (Specified group does not ERR_BAD_OBJECT_ID (Object did not exist in exist) 35 group) Invoke Transaction Script (OBR) ERR_BAD_OBJECT_SIZE (Illegal object size Transmit data specified) OBR, Group ID, Group PIN, Object ID ERR_OBJECT_LOCKED (Object has been locked) Receive data ERR OBJECT PRIVATIZED (Object has been CSB=O if command successful, appropriate error code 40 privatized) otherwise Read Group Name (OER) Output length=1 if successful, 0 otherwise Transmit data Output data=estimated completion time OER, Group ID Notes: Receive data 45 The time estimate returned by the module is in sixteenths CSB=O of a second. If an error code was returned in the CSB, the Output Length=length of group name time estimate will be O. Output data=group name Possible error return codes for the execution transaction Notes: script command: 50 The group name length is a maximum of 16 bytes. All ERR_BAD_GROUP _PIN (Incorrect group PIN) byte values are legal in a group name. ERR_BAD_GROUP _ID (Specified group does not Delete Group (OFR) exist) Transmit data ERR_BAD_OBJECT_ID (Script object did not exist in OFR, Group ID, Group PIN 55 group) Receive data Read Object (OCR) CSB=O if successful, appropriate error code otherwise Transmit data Output length=O OCR, Group ID, Group PIN, Object ID Output data=O Receive data 60 Notes: CSB=O if command successful, appropriate error code If the group PIN and group ID are correct the module will otherwise delete the specified group. Deleting a group causes the automatic destruction of all objects within the group. If the Output length=object length if successful, 0 otherwise module has been locked the Delete Group command will Output data=object data if successful, 0 otherwise 65 fail. Notes: Possible error codes for the delete group command: If the Group ID, Group PIN and Object ID were correct, ERR_BAD_GROUP _PIN (Incorrect group PIN) the module checks the attribute byte of the specified object. 6,105,013 25 26 ERR_BAD_GROUP _ID (Specified group does not Output length=# of new records * 6 if successful, 0 exist) otherwise ERR_MIAC_LOCKED (Module has been locked) Output data=new audit trail records Get Command Status Info (lOH) Notes: 5 Transmit data If the transmitted common PIN is valid and the module has been locked, it will transfer all new transaction records lOH to the host. Receive data Possible error codes for the read audit trail command: CSB=O ERR_BAD_COMMON_PIN (Common PIN was Output length=6 10 incorrect) Output data=module status structure (see below) ERR_MIAC_NOT_LOCKED module is not locked Notes: Read Group Audit Trail (14H) This operation requires no PIN and never fails. The status Transmit data structure is defined as follows: 14H, Group ID, Group PIN 15 Last command executed (1 byte) Receive data Last command status (1 byte) CSB=O if command successful, appropriate error code Time command received (4 bytes) otherwise Get Module Configuration Info (llH) Output length=# or records for group * 6 if successful, 0 Transmit data 20 otherwise 11H Output data=audit trail records for group Receive data Notes: CSB=O This command is identical to the read audit trail command, except that only records involving the group ID Output length=4 25 specified in the transmit data are returned to the host. This Output data=module configuration structure allows transaction groups to record track their own activities Notes: without seeing other groups records. This operation requires no PIN and never fails. The Possible error codes for the read group audit trail comconfiguration structure is defined as follows: mand: Number of groups (1 byte) 30 ERR_BAD_GROUP _ID (Group ID does not exist) Flag byte (see below) (1 byte) ERR_BAD_GROUP _PIN (Common PIN was Audit trail size/Free RAM (2 bytes) incorrect) The flag byte is the bitwise-or of any of the following ERR MIAC NOT LOCKED (The module is not values: locked) 35 OOOOOOOlb (Module is locked) Read Real Time Clock (1SH) OOOOOOlOb (Common PIN required for access) Transmit data Read Audit Trail Info (12H) 1SH, Common PIN Transmit data Receive data 12H, Common PIN CSB=O if the common PIN matches and ERR BAD 40 Receive data COMMON PIN otherwise CSB=O if command successful, appropriate error code Output length=4 otherwise Output data=4 most significant bytes of the real time Output length=audit trail structure size (S) if successful, 0 clock otherwise 45 Notes: Output data=audit trail info structure if successful, 0 This value is not adjusted with a clock offset. This otherwise command is normally used by a service provider to compute Notes: a clock offset during transaction group creation. If the transmitted Common PIN is valid and the module Read Real Time Clock Adjusted (16H) has been locked, it returns audit trail configuration informa - 50 Transmit data tion as follows: 16H, Group ID, Group PIN, ID of offset object Number of used transaction records (2 bytes) Receive data Number of free transaction records (2 bytes) CSB=O if successful, appropriate error code otherwise A boolean specifying whether or (1 byte) Output length=4 if successful, 0 otherwise 55 not the audit trail rolled Output data=Real time clock+clock offset ID since previous read command Notes: Possible error codes for the read audit trail info command: This command succeeds if the group ID and group PIN ERR_BAD_COMMON_PIN (Common PIN was are valid, and the object ID is the ID of a clock offset. The incorrect) 60 module adds the clock offset to the current value of the 4 ERR_MIAC_NOT_LOCKED (Module is not locked) most significant bytes of the RTC and returns that value in Read Audit Trail (13H) the output data field. Note that a transaction script may be Transmit data written to perform the same task and put the result in the 13H, Common PIN output data object. Receive data Possible error codes for the real time clock adjusted 65 command: CSB=O if command successful, appropriate error code ERR_BAD_GROUP _PIN (Incorrect group PIN) otherwise 6,105,013 28 27 ERR_BAD_GROUP _ID (Specified group does not ERR_BAD_COMMON_PIN (81H) exist) This error code will be returned when a command ERR_BAD_OBJECT_TYPE (Object ID is not a clock requires a common PIN and the PIN supplied does not match offset) 5 the module's common PIN. Initially the common PIN is set Get Random Data (17H) to O. Transmit data 17H, Length (L) Receive data CSB=O if successful, appropriate error code otherwise Transaction groups may have their own PIN, FIG. 11. If Output length=L if successful, 0 otherwise 10 this PIN has been set (by a set group PIN command) it must Output data=L bytes of random data if successful be supplied to access any of the objects within the group. If Notes: the Group PIN supplied does not match the actual group This command provides a good source of cryptographiPIN, the module will return the ERR_BAD_GROUP _PIN cally useful random numbers. error code. Possible error codes for the get random data command 15 are: ERR_BAD_SIZE (Requested number of bytes>128) There are 2 commands which can change PIN values. The Get Firmware Version ID (18H) set group PIN and the set common PIN commands. Both of Transmit data 20 these require the new PIN as well as the old PIN. The 18H ERR BAD PIN LENGTH error code will be returned if Receive data the old PIN supplied was correct, but the new PIN was CSB=O greater than 8 characters in length. Output length=Length of firmware version ID string Output data=Firmware version ID string ERR_BAD OPTION BYTE (84H) Notes: 25 This command returns the firmware version ID as a Pascal The option byte only applies to the common PIN. When type string (length+data). the set common PIN command is executed the last byte the Get Free RAM (19H) host supplies is the option byte (described in command Transmit data section). If this byte is unrecognizable to the module, it will 19H 30 return the ERR BAD OPTION BYTE error code. Receive data CSB=O Output length=2 When the create transaction group command is executed, Output data=2 byte value containing the amount of free 35 one of the data structures supplied by the host is the group's RAM name. The group name may not exceed 16 characters in Notes: length. If the name supplied is longer than 16 characters, the If the module has been locked the output data bytes will ERR BAD NAME LENGTH error code is returned. both be 0 indicating that all memory not used by transaction groups has been reserved for the audit trail. ERR_INSUFFICIENT_RAM (86H) 40 Chance Group Name (1AH) The create transaction group and create object commands Transmit data return this error code when there is not enough heap avail1AH, Group ID, Group PIN, New Group name able in the module. Receive data CSB=O if successful or an appropriate error code other45 wIse Output length=O When the module has been locked, no groups or objects Output data=O can be created or destroyed. Any attempts to create or delete Notes: objects will generate an ERR MIAC LOCKED error If the group ID specified exists in the module and the PIN 50 code. supplied is correct, the transaction group name is replaced by the new group name supplied by the host. If a group ID of 0 is supplied the PIN transmitted must be the common If the module has not been locked there is no audit trail. PIN. If it is correct, the module name is replaced by the new If one of the audit trail commands is executed this error code name supplied by the host. 55 will be returned. Possible error codes for the change group name command: ERR_GROUP _LOCKED (89H) ERR_BAD_GROUP _PIN (Incorrect group PIN) Once a transaction group has been locked object creation ERR_BAD_GROUP _ID (Specified group does not 60 within that group is not possible. Also the objects attributes exist) and types are frozen. Any attempt to create objects or modify ERR_BAD_NAME_LENGTH (New group name>16 their attribute or type bytes will generate an ERR bytes) GROUP LOCKED error code. ERROR CODE DEFINITIONS ERR_BAD COMMAND (80H) This error code occurs when the module firmware does not recognize the command just transmitted by the host. 65 When the host sends a create object command to the module, one of the parameters it supplies is an object type 6,105,013 29 (see command section). If the object type is not recognized by the firmware it will return an ERR_BAD_OBJECT_ TYPE error code. 30 The module incorporates a numeric coprocessor optimized for math intensive encryption. The BIOS is preferably immune to alteration and specifically designed for very secure transactions. Each module can have a random "seed" generator with 5 the ability to create a private/public key set. The private key When the host sends a create object command to the never leaves the module and is only known by the module. module, one of the parameters it supplies is an object Furthermore, discovery of the private key is prevented by attribute byte (see command section). If the object attribute active self-destruction upon wrongful entry into the module. byte is not recognized by the firmware it will return an 10 The module can be bound to the user by a personal identiERR BAD OBJECT_ATTR error code. fication number (PIN). When transactions are performed by the module certifiERR_BAD SIZE (8CH) cates of authentication are created by either or both the An ERR_BAD_SIZE error code is normally generated module and a system the module communicates with. The when creating or writing an object. It will only occur when 15 certificate can contain a variety of information. In particular, the object data supplied by the host has an invalid length. the certificate may contain: 1) who is the module user via a unique registration number. 2) when the transaction took place via a true-time stampAll commands that operate at the transaction group level 20 ing of the transaction. require the group ID to be supplied in the command packet. 3) where the transaction took place via a registered If the group ID specified does not exist in the module it will module interface site identification. generate an ERR_BAD_GROUP _ID error code. 4) security information via uniquely serialized transactions and digital signitures on message digests. ERR_BAD OBJECT ID (8EH) 25 5) module status indicated as valid, lost, or expired. All commands that operate at the object level require the Although a preferred embodiment of the method and object ID to be supplied in the command packet. If the object apparatus of the present invention has been illustrated in the ID specified does not exist within the specific transaction accompanying Drawings and described in the foregoing group (also specified in the command packet) the module 30 Detailed Description, it will be understood that the invention will generate an ERR_BAD_OBJECT_ID error code. is not limited to the embodiment disclosed, but is capable of numerous rearrangements, modifications and substitutions ERR_INSUFFICIENT_FUNDS (8FH) without departing from the spirit of the invention as set forth If a script object that executes financial transactions is and defined by the following claims. invoked and the value of the money register is less than the What is claimed is: withdrawal amount requested an ERR_INSUFFICIENT_ 35 1. A micro controller based secure transaction integrated FUNDS error code will be returned. circuit comprising: a microcontroller core; a math coprocessor connected to said microcontroller core, said math coprocessor being for handling comLocked objects are read only. If a write object command 40 plex mathematics of encryption and decryption; is attempted and it specifies the object ID of a locked object memory circuitry which can be programmed by a service the module will return an ERR OBJECT LOCKED error provider to enable said microcontroller based secure code. transaction integrated circuit to perform predetermined functions on behalf of the service provider and for the 45 benefit of an end user, said memory circuitry being Private objects are not directly readable or writable. If a connected to said microcontroller core; read object command or a write object command is an input/output circuit, connected to said microcontroller attempted, and it specifies the object ID of a private object, core, for exchanging information with a device external the module will return an ERR OBJECT PRIVATE error to said microcontroller based secure transaction inte50 code. grated circuit; and a real time clock, connected to said microcontroller core, ERR_OBJECT_DESTRUCTED (92H) for providing a time measurement for time stamping a If an object is destructible and the transaction group's predetermined function. destructor is active the object may not be used by a script. 55 2. The micro controller based secure transaction integrated If a script is invoked which uses an object which has been circuit of claim 1, wherein said predetermined function is an destructed, an ERR_OBJECT_DESTRUCTED error code encrypted data transaction. will be returned by the module. 3. The micro controller based secure transaction integrated The exemplary embodiment of the present invention is circuit of claim 1, further comprising an energy circuit preferably placed within a durable stainless steel, token-like 60 connected to said memory circuitry. can. It is understood that an exemplary module can be placed 4. The micro controller based secure transaction integrated in virtually any articulatable item. Examples of articulatable circuit of claim 3, wherein said memory circuitry is nonitems include credit cards, rings, watches, wallets, purses, volatile RAM. necklaces, jewelry, ID badges, pens, clipboards, etc. 5. The micro controller based secure transaction integrated The module preferably is a single chip "trusted com- 65 circuit of claim 1, wherein said microcontroller based secure puter". By the word "trusted" it is meant that the computer transaction integrated circuit is programmed in a script is extremely secure from tampering by unwarranted means. programming language. 6,105,013 31 32 6. The microcontroller based secure transaction integrated 11. The secure transaction integrated circuit of claim 9, circuit of claim 1, wherein said microcontroller based secure wherein said memory circuit can comprise a plurality of transaction integrated circuit is incorporated into an articutransaction groups wherein each said transaction group can latable item. comprise a transaction program created by a service pro7. The microcontroller based secure transaction integrated S vider. circuit of claim 6, wherein said articulatable item is selected 12. The secure transaction integrated circuit of claim 9, forma group comprising a ring, a bracelet, a credit card, a further comprising an energy circuit connected at least to smart card, a necklace, an identification badge, a key fob, said memory circuit. and a token shaped object. 13. The secure transaction integrated circuit of claim 9, 8. The microcontroller based secure transaction integrated 10 wherein said input/output circuit is a bidirectional one-wire circuit of claim 1, further comprising the ability to create encryption key pairs. bus comprising a communication/power connection and a 9. A secure transaction integrated circuit comprising: ground connection. 14. The secure transaction integrated circuit of claim 9, a microcontroller core; a memory circuit, in communication with said microcon- 15 wherein said transaction program can enable said secure troller core, for storing a transaction program; transaction integrated circuit to perform digital cash transactions. a modular exponentiation accelerator circuit, in commu15. The secure transaction integrated circuit of claim 9, nication with said microcontroller core, for performing encryption and decryption calculations; 20 wherein said secure transaction integrated circuit is further integrated into an articulatable item. an input/output circuit, in communication with said 16. The secure transaction integrated circuit of claim 15, microcontroller core, for receiving and transmitting wherein said articulatable item is selected from a group data information with another electronic device; and comprising a ring, a bracelet, a wallet, a credit card, a smart a clock circuit for measuring time and providing time stamp information responsive to functions being per- 25 card, a necklace, an identification card, a key fob, and a token shaped object. formed by said microcontroller core. 10. The secure transaction integrated circuit of claim 9, wherein said memory circuit is a nonvolatile RAM. * * * * * UNITED STATES PATENT AND TRADEMARK OFFICE CERTIFICATE OF CORRECTION Page 1 of 1 PATENT NO. : 6,105,013 DATED : August 15,2000 INVENTOR(S) : Curry et al. It is certified that error appears in the above-identified patent and that said Letters Patent is hereby corrected as shown below: Column 3, Line 8, replace "photovoitaic" with -- photo-voltaic -Column 14, Line 18, replace "FIPS" with -- FIBS -Column 19, Line 49, replace "COMMON PIN" with -- COMMON_PIN -Column 27, Line 40, replace "Chance" with -- Change -Column 28, Line 24, replace "BAD OPTION BYTE" with -- BAD_ OPTION_ BYTE -Column 29, Line 12, replace "BAD SIZE" with -- BAD _ SIZE -Line 24, replace "BAD OBJECT ID" with -- BAD_OBJECT_ID-- Signed and Sealed this Thirteenth Day of November, 2001 Attest: Attesting Officer NICHOLAS P. GODICI Acting Director of the United States Patent and Trademark Office

Disclaimer: Justia Dockets & Filings provides public litigation records from the federal appellate and district courts. These filings and docket sheets should not be considered findings of fact or liability, nor do they necessarily reflect the view of Justia.


Why Is My Information Online?