System and method for flexibly loading in IC card

Abstract
A system and method of flexibly loading an application and its associated data from an application provider onto an IC card. The application and its associated data is divided into segments which can each fit into the input buffer of an Integrated circuit card. Each segment is transmitted separately and the Integrated circuit card then stores the segment in an available space in the IC card's memory. The segments can be placed in non-contiguous memory in order to reduce memory fragmentation.
Description




BACKGROUND OF INVENTION




Integrated circuit (“IC”) cards are becoming increasingly used for many different purposes in the world today. An IC card (also called a smart card) typically is the size of a conventional credit card which contains a computer chip including a microprocessor, read-only-memory (ROM), electrically erasable programmable read-only-memory (EEPROM), an Input/Output (I/O) mechanism and other circuitry to support the microprocessor in its operations. An IC card may contain a single application or may contain multiple independent applications in its memory. MULTOS™ is a multiple application operating system which runs on IC cards, among other platforms, and allows multiple applications to be executed on the card itself. This allows a card user to run many programs stored in the card (for example, credit/debit, electronic money/purse and/or loyalty applications) irrespective of the type of terminal (i.e., ATM, telephone and/or POS) in which the card is inserted for use.




A conventional single application IC card, such as a telephone card or an electronic cash card, is loaded with a single application when it is manufactured and before it is given to a card user. That application, however, cannot be modified or changed after the card is issued even if the modification is desired by the card user or card issuer. Moreover, if a card user wanted a variety of application functions to be performed by IC cards issued to him or her, such as both an electronic purse and a credit/debit function, the card user would be required to carry multiple physical cards on his or her person, which would be quite cumbersome and inconvenient. If an application developer or card user desired two different applications to interact or exchange data with each other, such as a purse application interacting with a frequent flyer loyalty application, the card user would be forced to swap multiple cards in and out of the card-receiving terminal, making the transaction difficult, lengthy and inconvenient.




Therefore, it is beneficial to store multiple applications on the same IC card. For example, a card user may have both a purse application and a credit/debit application on the same card so that the user could select which type of payment (by electronic cash or credit card) to use to make a purchase. Multiple applications could be provided to an IC card if sufficient memory exists and an operating system capable of supporting multiple applications is present on the card. Although multiple applications could be preselected and placed in the memory of the card during its production stage, it would also be beneficial to have the ability to load and delete applications for the card post-production as needed.




It is important, particularly where there is a continuing wide availability of new applications to the cardholder, that the system has the capability of adding applications onto the IC-card subsequent to issuance. This is necessary to protect the longevity of the IC cards; otherwise, once an application becomes outdated, the card would be useless. It would be beneficial to allow the addition of applications from a remote location as well as from a direct connection to an application provider's terminal. For example, it would be beneficial for a card.user to be able to plug his IC card into his home computer and download an application over the Internet. Alternatively, it would be beneficial for an application provided by Bank A to be loaded from a terminal (such as an ATM) located at Bank B which is connected to Bank A by a network or series of interconnected networks.




The increased flexibility and power of storing multiple applications on a single card create new challenges to be overcome concerning the application loading process in which information (including application code and associated data) is exchanged between the application provider and the individual card. The IC card only has a finite amount of memory on the card for storing applications. Applications and their associated data can vary drastically in size depending upon the application. When multiple applications are stored on a card, and a series of application additions and deletions have occurred, memory fragmentation where memory which is free cannot be used because of size limitations.




Additionally, an IC card has limited space in its input buffer, which can be separate or combined with an output buffer, i.e., an Input/Output (I/O) buffer. It may not be possible to fit the entire application and its associated data into an I/O buffer of an IC card at one time. In order to achieve the flexibility of selectively loading and deleting applications on an IC card, the problems of limited I/O buffer space and fragmentation must be addressed.




Accordingly, it is an object of this invention to provide a system and method that allows for flexible loading of an application and its associated data onto an IC card by segmenting the application and associated data into selected segments in order to limit the size of the data packets being transmitted at one time and reduce fragmentation in the memory of the IC card.




SUMMARY OF THE INVENTION




These and other objectives are achieved by the present invention which provides an IC card system and method for flexibly loading an application and its associated data from an application onto an IC card. The application provider divides the application and its associated data into segments which will fit into the I/O buffer of the intended IC card. Each segment is transmitted separately and the IC card stores the segment in an available space in the IC card's memory. The segments can be placed in non-contiguous memory in order to reduce memory fragmentation. The IC card's microprocessor can additionally determine the smallest memory space which will store the segment in order to minimize fragmentation.




In a preferred embodiment, the application provider determines the size of the IC card's I/O buffer so that it can correctly select the size of each segment.











BRIEF DESCRIPTION OF THE DRAWINGS




Further objects, features and advantages of the invention will become apparent from the following detailed description taken in conjunction with the accompanying figures showing illustrative embodiments of the invention, in which





FIG. 1

is block diagram of the flexible loading system of the present invention;





FIG. 2

is a block diagram of an IC card chip upon which an application and its associated data can be flexibly loaded and stored;





FIG. 3

is a graphic example of a memory map of EEPROM on an IC card;





FIG. 4

is a flow chart of an example of multiple segments being loaded onto the IC card;





FIG. 5

is a flow chart of the steps of segmenting the application and its associated data by the application provider; and





FIG. 6

is a flow chart of the steps of receiving and processing the segmented information by the IC card.











Throughout the figures, the same reference numerals and characters, unless otherwise stated, are used to denote like features, elements, components or portions of the illustrated embodiments. Moreover, while the subject invention will now be described in detail with reference to the figures, it is done so in connection with the illustrative embodiments. It is intended that changes and modifications can be made to the described embodiments without departing from the true scope and spirit of the subject invention as defined by the appended claims.




DETAILED DESCRIPTION OF THE INVENTION




It is beneficial to have the capability to load applications onto IC cards containing multiple application operating systems at any time during the lifetime of the IC card. This flexibility allows a user of a card to periodically add new applications to the IC card and also allows older applications to be updated with newer versions of the application when they are released. For example, a card user may start with an IC card that contains a purse, or electronic cash application (e.g., MONDEX™), being stored on her IC card. Some time after the user has the card, she may load an additional application onto the card such as a credit/debit application. Some time after loading the credit/debit application on the card, a new version of the credit/debit application may become available and the card user should be able to erase the old application on her IC card and replace it with the new version of the credit/debit application which may contain additional features.




In a multiple application operating system environment, it is beneficial to be able to load applications both at terminals, such as a bank ATM machine, as well as over remote communication links, such as telephone lines, cable lines, the Internet, satellite or other communications means. When loading applications onto an IC card, the application provider and the card issuer (which could be the same entity) need to provide security regarding the applications to be loaded. The IC card has a limited amount of available I/O space and a limited amount of memory to store applications and their associated data. In order to address these limitations, the application and its associated data is segmented such that each segment will fit in the IC card's I/O buffer at one time. The segment is then stored in the IC card's storage memory, e.g., EEPROM, in a manner that can be non-contiguous to reduce memory fragmentation. This system and technique will now be described in detail.





FIG. 1

shows a block diagram of the entities used in a remote application loading process of an application and its associated data. While

FIG. 1

shows a remote loading system, the flexible loading technique also applies to local loading such as a terminal located at the application provider. System


100


includes an application provider for transmitting an IC card application and its associated data to an intended IC card


103


, an IC card interface device


105


and a data conduit


107


. The application provider


101


can be a card issuer, bank or other entity which provides application loading services. The application provider


101


preferably initiates an application loading process onto IC card


103


. Alternatively, the IC card


103


can request the loading process. Application Provider


101


is connected to data conduit


107


which is connected to interface device


105


(e.g., a terminal that communicates with an IC card). Data conduit


107


can be a telephone line, an intranet, the Internet, a satellite link or any other type of communications link. The application provider


101


, which is remotely located from the IC card


103


in this example, desires to send and load an application to the IC card. Application provider


101


has an I/O buffer


113


and IC card


103


has an I/O buffer


115


. In addition, interface device


105


also contains an I/O buffer


117


. Each of the I/O buffers has a maximum storage capacity. The I/O buffers could be a combined input or output buffer or the input buffer and output buffer could be separate. However, the IC card


103


will typically have the smallest I/O buffer due to physical size limitations. The IC card


103


also has a memory


119


in which it stores the loaded application and its associated data.




In the illustrative embodiment of

FIG. 1

, the application provider


101


sends two application segments S


1


,


109


and S


2


,


111


to the interface device


105


which is coupled to IC card


103


. The application segments are discussed in more detail in connection with FIG.


4


. The application and its associated data are broken into two or more segment units in order for each of the data segments to fit in the I/O buffer of the I/O card. Additionally, the segmentation of the application and associated data helps to reduce fragmentation of the memory of the IC card which stores the application and associated data being loaded.





FIG. 1

shows two segments


109


and


111


which are transferred at discrete times from the application provider to the IC card. However, any number of segments could be used depending upon such factors including the size of the application being loaded, the size of the associated data being loaded, the size of the respective I/O buffers, the availability of memory space on the IC card and the amount of memory fragmentation already on the IC card.




The application could be loaded directly at a terminal and not remotely. In that case, a separate interface device


105


would not be required because the application provider would have its own terminal capable of communicating with the IC card, For example, a bank could load an application onto an IC card by requiring the customer to insert his or her card into the bank's ATM machine. In that case, the application provider communicates with the IC card locally and transmissions are not sent over telephone lines or the Internet. The present invention is applicable to both the remote loading and local loading.





FIG. 2

shows an example of a block diagram of an IC card chip upon which an application can be flexibly loaded and stored. An integrated circuit is located on an IC card for use. The IC card preferably includes a central processing unit


201


, a RAM


203


, an EEPROM


205


, a ROM


207


, a timer


209


, control logic unit


211


, an I/O port


213


and security circuitry


215


, which are connected together by a conventional data bus.




Control logic


211


in memory cards provides sufficient sequencing and switching to handle read-write access to the card's memory through the input/output ports. CPU


201


with its control logic can perform calculations, access memory locations, modify memory contents, and manage input/output ports. Some cards have a coprocessor for handling complex computations like performing cryptographic operations. Input/output ports


213


are used under the control of a CPU and control logic, for communications between the card and a card interface device. Input/Output ports


213


include an I/O buffer. Timer


209


(which generates or provides a clock pulse) drives the control logic


211


and CPU


201


through the sequence of steps that accomplish memory access, memory reading or writing, processing, and data communication. A timer may be used to provide application features such as call duration. Security circuitry


215


preferably includes fusible links that connect the input/output lines to internal circuitry as required for testing during manufacture, but which are destroyed (“blown”) upon completion of testing to prevent later access. The application segments are stored in EEPROM


205


. The storage and memory management process as described herein is performed by the CPU


201


.





FIG. 2

also shows a possible configuration for the integrated circuit for the application provider. CPU


201


present in the integrated circuit for the application provider determines the size of the IC card's I/O buffer, controls the segmentation of the application and associated data described herein and performs any other necessary operation.





FIG. 3

shows a graphic representation of a memory, map of EEPROM


300


on IC card


103


. In this illustrative example, three applications are stored in EEPROM of an IC card. The first application


301


is stored in a contiguous memory space


355


. Contiguous memory space means that the application occupies sequential memory addresses with no skipped memory addresses. A second application


303


is stored in contiguous memory space


359


. Operating system data required for the execution of the operating system is stored in memory space


351


. One example of a cause of fragmentation existing in the IC card is a previous application being deleted which was previously located at memory space


313


. The next application loaded onto the IC card after the initial application was deleted can be a different size than the initial application and thus not all the freed up available memory space can be used in such a manner where two or more programs and data are stored contiguously without leaving small portions of unused memory space. In the example of

FIG. 1

, the last application and its associated data which was loaded was segmented into three segments


307


,


309


and


311


. These segments are smaller portions of the entire application and its associated data set which could be placed in smaller areas of available memory. Thus fragmentation in the IC card's memory was alleviated by segmenting the application and its associated data.




The operating system stored on the card maintains a record of the physical location of the different segments and can access the physical locations when a logical address is called out when a program or operating system is being executed. The physical address look-up data can be stored in a table, a stack, a pointer or any conventional means for indicating the physical locations. Memory space


363


in

FIG. 3

is shown as not storing any data in the example and that memory space could be later used for storing new segmented applications and their associated data.





FIG. 4

shows a flow chart of an illustrative example of loading multiple segments into a memory of an IC card from an application provider. In this example, six initial segments are created to be loaded onto the IC card. Two of the segments are further divided into components which results in a total of nine segments individually being sent to the IC card.




Step


401


loads a segment corresponding to the program code of the application to be provided to the IC card. The program code includes the program instructions which will be executed by the microprocessor located on the IC card. If the code segment is too large to fit into the I/O buffer of either the IC card or the application provider, then the segment can be further split into two or more components which can be separately transmitted to the IC card. In

FIG. 4

, three components are illustrated for the program code, components


413


,


415


and


417


. The components are preferably stored in contiguous memory locations in the memory of the IC card. However, the components can be stored in non-contiguous locations if component pointers or tables are supported by the operating system on the IC card.




Step


403


loads the application data segment onto the IC card. The application data segment includes necessary and optional data needed for the execution of the application code. For example, if the application is a credit/debit application, the card user's account number, identification data and credit limit may be needed for the application to ran. Another example is a health related application where a customer's medical history may be stored on the card for quick access at remote locations. The medical history data may be quite large and require further segmentation into two or more components. In

FIG. 4

, components


419


and


421


are shown as subsets of the data segment being loaded in step


403


.




Step


405


loads a Key Transformation Unit (KTU) segment for the application being loaded. If the application is being loaded from a remote location, there is a need to make sure the transmission is secure from third party access. The KTU information preferably contains information regarding the encryption key used to encipher the application program and associated data. The key information is sent with the application because applications can be transmitted from any application provider to any IC card with an IC card system. Since different encryption techniques can be used by different application providers, the KTU information in necessary. However, the flexible loading technique also applies when no encryption scheme is used and this information could also be included in another segment depending upon its size.




Step


407


loads a file control segment onto the IC card. File control information preferably includes an application identifier, security information and application and data size requirements. The file control information will be used by the operating system on the IC card to process the application. While in this example the file control information is a separate segment, it could be included in another segment depending upon its size.




Step


409


loads a directory information segment onto the IC card. The directory information preferably includes the name of the application which can be used by the operating system to identify the application. For example, if a select file command is initiated by a terminal, the name of the file to be selected which accompanies the command will be recognized by the operating system on the IC card. If the MONDEX™ Purse is selected by a customer as a terminal, the terminal will send a command to the IC card in the form of a “Select File Mondex” and the IC card will correlate MONDEX with a previously loaded application with the directory name Mondex. While in this example the directory information is a separate segment, the information could be included in another segment depending upon its size.




Step


411


loads an application signature segment onto the IC card. The application signature segment preferably includes data signed with the digital signature of the application provider. This allows the IC card to verify that the application provider is the genuine application provider and not an imposter. The IC card verifies the signature with the public key of an asymmetric encryption key pair of the application provider. While in this example the application signature is a separate segment, the information could be included in another segment if its size permitted it.




The segments could be organized in any manner and sent in any order. The IC card will need to have identified the subject matter of the incoming segment or component so that it can later locate a specific segment or component when needed. This information can be part of the load control information or can be obtained prior to the loading of the application. While

FIG. 4

describes a number of different segments, the subject matter of the segments transmitted will vary and depend upon the particular application and associated data.





FIG. 5

shows a flowchart of the steps the application provider performs when segmenting the application and associated data to be loaded upon the IC card. Step


501


determines the I/O buffer size of the IC card. Alternatively, the input buffer size is determined if the input and output buffers are separate on the IC card. In most cases, the IC card I/O buffer will be smaller than the application provider I/O buffer because of the limited memory on the IC card. However, if the application provider I/O buffer or the Interface I/O buffer is smaller than the IC card I/O buffer, the smallest I/O buffer will control the size of the segments. The application provider can determine the IC card memory buffer size by some preliminary information exchange which identifies the IC card as the correct card upon which to load the application. Alternatively, some agreement or standard can be followed so that the application provider can create segments which will fit in an IC card which follows the agreement or standard.




Step


503


then segments the application and associated data in two or more segments. In the example of

FIG. 4

, six initial segments were created and some of the segments were further divided to form two or more components. The segmented information is preferably divided in a predetermined organization to aid the IC card processing of the segments.




Step


505


then sends the segments to the IC card one at a time. When the IC card receives a segment in its I/O buffer, it will store that segment in a location of its memory thus freeing up its I/O buffer for the next incoming segment. After all the segments have been transmitted, the application provider can send a transmission indicating no more segments are being transmitted or the number of segments can be sent at the beginning of the transmission. Alternatively, a known segment protocol can be followed.





FIG. 6

is a flow chart of the steps of processing the segmented information performed by the IC card. Step


601


receives a transmitted segment in the I/O buffer of the IC card. The entire segment will fit within the I/O buffer because of the processing performed at the application provider. Step


603


then stores the segment in available memory space after the microprocessor on the IC card identifies the proper memory space. The processor can check for the first available free memory space that is sufficient to store the segment. Once the segment is stored at a physical location, that location is recorded either in a segment address table, by a pointer or by any other conventional means. Different memory architectures can be used for storing the segments. For example, all the similar types of segments (e.g., program code) for the stored applications can be stored contiguously if desired. Alternatively, the processor can determine the space that is closest in size to the segment to be stored by scanning the memory. This will reduce any problems of fragmentation in the limited size IC card memory.




Step


605


determines if there are any additional segments to be stored. This step can be accomplished by checking earlier information regarding the number of segments which were being sent. It can also be accomplished by receiving a transmission indicating no more segments. Alternatively, the IC card can simply remain in a wait status until additional data or instructions is sent to the card. If the IC card determines that additional segments are being transmitted, the technique jumps back to steps


601


. If no more segments, the process ends.




The foregoing merely illustrates the principles of the invention. It will thus be appreciated that those skilled in the art will be able to devise numerous systems and methods which, although not explicitly shown or described herein, embody the principles of the invention and are thus within the spirit and scope of the invention.




For example, while loading an application and its associated data is discussed herein, the same flexible loading process can apply to transmitting other types of data such as data blocks, database files, word processing documents or any other type of data requiring to be transmitted in a segmented manner.



Claims
  • 1. A method for loading an application and its associated data from an application provider onto an integrated circuit card, subsequent to issuance of the card, wherein said integrated circuit card comprises a memory containing one or more available spaces resulting from content deletions from or additions to said memory, and wherein said one or more available spaces are each defined by a contiguous memory space of sequential memory addresses with no skipped addresses, comprising the steps of:determining said integrated circuit card's input buffer size; dividing said application to be loaded and its associated data into a plurality of segments, each segment adapted to be stored in said integrated circuit card's input buffer wherein the size of each segment is a function of the determined input buffer size; separately transmitting each said segment to said integrated circuit card; storing each said separately transmitted segment in one of said one or more available spaces of said integrated circuit card's memory depending on the size of each segment; and determining an available area in said integrated circuit card's memory to store each said segment, wherein said step of determining an available area comprises determining which of said one or more available spaces has the smallest available area in said integrated circuit card's memory in which said segment can be stored.
  • 2. A system for loading an application and its associated data onto an integrated circuit card subsequent to issuance of the card comprising:an application provider comprising means for determining said integrated circuit's input buffer size, means for dividing said application and its associated data into a plurality of segments each segment adapted to be stored in said integrated circuit card's input buffer wherein the size of each segment is a function of the determined input buffer size, and means for separately transmitting each said segment to said integrated circuit card; and an integrated circuit card comprising a memory containing one or more available spaces resulting from content deletions from or additions to said memory wherein said one or more available spaces are each defined by a contiguous memory space of sequential memory addresses with no skipped addresses, means for receiving said transmitted segments, means for storing each said transmitted segment in one of said one or more available spaces of said integrated circuit card's memory depending on the size of each segment, and means for determining an available area in said memory to store each said segment, wherein said means for determining an available area is for determining which of said one or more available spaces has the smallest available area in which said segment can be stored.
  • 3. A method for loading an application and its associated data from an application provider onto an integrated circuit card, subsequent to issuance of the card, wherein said integrated circuit card comprises a memory containing one or more available spaces resulting from content deletions from or additions to said memory, and wherein said one or more available spaces are each defined by a contiguous memory space of sequential memory addresses with no skipped addresses, comprising the steps of:determining said integrated circuit card's input buffer size; dividing said application to be loaded and its associated data into a plurality of segments, each segment adapted to be stored in said integrated circuit card's input buffer wherein the size of each segment is a function of the determined input buffer size; separately transmitting each said segment to said integrated circuit card; and storing each said separately transmitted segment in one of said one or more available spaces of said integrated circuit card's memory depending on the size of each segment, wherein at least two of said plurality of segments are not stored in two contiguous available spaces, and wherein said at least two of said plurality of segments which are stored in non-contiguous spaces are contiguous with at least a portion of another application previously stored on said integrated circuit card.
  • 4. A system for loading an application and its associated data onto an integrated circuit card subsequent to issuance of the card comprising:an application provider comprising means for determining said integrated circuit's input buffer size, means for dividing said application and its associated data into a plurality of segments each segment adapted to be stored in said integrated circuit card's input buffer wherein the size of each segment is a function of the determined input buffer size, and means for separately transmitting each said segment to said integrated circuit card; and an integrated circuit card comprising a memory containing one or more available spaces resulting from content deletions from or additions to said memory wherein said one or more available spaces are each defined by a contiguous memory space of sequential memory addresses with no skipped addresses, means for receiving said transmitted segments and means for storing each said transmitted segment in one of said one or more available spaces of said integrated circuit card's memory depending on the size of each segment, wherein at least two of said plurality of segments are not stored in two contiguous available spaces in said integrated circuit card, and wherein said at least two of said plurality of segments which are stored in non-contiguous spaces are contiguous with at least a portion of another application previously stored on said integrated circuit card.
PRIORITY APPLICATION

This application claims priority to United States Provisional application No. 60/046,514 filed on May 15, 1997, and entitled “Design for a Multi Application Smart Card”, which is hereby incorporated by reference.

US Referenced Citations (151)
Number Name Date Kind
4214230 Fak et al. Jul 1980 A
4218582 Hellman et al. Aug 1980 A
4259720 Campbell Mar 1981 A
4302810 Bouricius et al. Nov 1981 A
4305059 Benton Dec 1981 A
4321672 Braun et al. Mar 1982 A
4341951 Benton Jul 1982 A
4405829 Rivest et al. Sep 1983 A
4408203 Campbell Oct 1983 A
4423287 Zeidler Dec 1983 A
4442345 Mollier et al. Apr 1984 A
4453074 Weinstein Jun 1984 A
4467139 Mollier Aug 1984 A
4498000 Decavele et al. Feb 1985 A
4536647 Atalla et al. Aug 1985 A
4578530 Zeidler Mar 1986 A
4605820 Campbell, Jr. Aug 1986 A
4629872 Hällberg Dec 1986 A
4630201 White Dec 1986 A
4650978 Hudson et al. Mar 1987 A
4669596 Capers et al. Jun 1987 A
4705211 Honda et al. Nov 1987 A
4709136 Watanabe Nov 1987 A
4709137 Yoshida Nov 1987 A
4727243 Savar Feb 1988 A
4727244 Nakano et al. Feb 1988 A
4731842 Smith Mar 1988 A
4734568 Watanabe Mar 1988 A
4736094 Yoshida Apr 1988 A
4742215 Daughters et al. May 1988 A
4745267 Davis et al. May 1988 A
4746788 Kawana May 1988 A
4748320 Yorimoto et al. May 1988 A
4748557 Tamada et al. May 1988 A
4748668 Shamir et al. May 1988 A
4752677 Nakano et al. Jun 1988 A
4757185 Onishi Jul 1988 A
4757543 Tamada et al. Jul 1988 A
4759063 Chaum Jul 1988 A
4759064 Chaum Jul 1988 A
4767920 Kitta et al. Aug 1988 A
4778983 Ushikubo Oct 1988 A
4785166 Kushima Nov 1988 A
4786790 Kruse et al. Nov 1988 A
4797542 Hara Jan 1989 A
4797920 Stein Jan 1989 A
4798941 Watanabe Jan 1989 A
4802218 Wright et al. Jan 1989 A
4803347 Sugahara et al. Feb 1989 A
4811393 Hazard Mar 1989 A
4816653 Anderl et al. Mar 1989 A
4816654 Anderl et al. Mar 1989 A
4825052 Chemin et al. Apr 1989 A
4831245 Ogasawara May 1989 A
4833595 Iijima May 1989 A
4839504 Nakano Jun 1989 A
4839792 Iijima Jun 1989 A
4849614 Watanabe et al. Jul 1989 A
4853522 Ogasawara Aug 1989 A
4853961 Pastor Aug 1989 A
4874935 Younger Oct 1989 A
4877945 Fujisaki Oct 1989 A
4877947 Mori Oct 1989 A
4879747 Leighton et al. Nov 1989 A
4882474 Anderl et al. Nov 1989 A
4887234 Iijima Dec 1989 A
4891503 Jewell Jan 1990 A
4891506 Yoshimatsu Jan 1990 A
4900904 Wright et al. Feb 1990 A
4901276 Iijima Feb 1990 A
4906838 Halpern Mar 1990 A
4907270 Hazard Mar 1990 A
4926480 Chaum May 1990 A
4935962 Austin Jun 1990 A
4949257 Orbach Aug 1990 A
4961142 Elliott et al. Oct 1990 A
4969188 Schöbi Nov 1990 A
4977595 Ohta et al. Dec 1990 A
4984270 LaBounty Jan 1991 A
4985615 Iijima Jan 1991 A
4987593 Chaum Jan 1991 A
4993068 Piosenka et al. Feb 1991 A
4995081 Leighton et al. Feb 1991 A
4996711 Chaum Feb 1991 A
5001753 Davio et al. Mar 1991 A
5003594 Shinagawa Mar 1991 A
5005200 Fischer Apr 1991 A
5010239 Mita Apr 1991 A
5012074 Masada Apr 1991 A
5012076 Yoshida Apr 1991 A
5014312 Lisimaque et al. May 1991 A
5016274 Micali et al. May 1991 A
5038025 Kodera Aug 1991 A
5068894 Hoppe Nov 1991 A
5093862 Scwartz Mar 1992 A
5097115 Ogasawara et al. Mar 1992 A
5120939 Claus et al. Jun 1992 A
5128997 Pailles et al. Jul 1992 A
5131038 Puhl et al. Jul 1992 A
5142578 Matyas et al. Aug 1992 A
5146499 Geffrotin Sep 1992 A
5148481 Abraham et al. Sep 1992 A
5161231 Iijima Nov 1992 A
5162989 Matsuda Nov 1992 A
5163098 Dahbura Nov 1992 A
5164988 Matyas et al. Nov 1992 A
5165043 Miyahara et al. Nov 1992 A
5166503 Mizuta Nov 1992 A
5175416 Mansvelt et al. Dec 1992 A
5180901 Hiramatsu Jan 1993 A
5191193 Le Roux Mar 1993 A
5191608 Geronimi Mar 1993 A
5200999 Matyas et al. Apr 1993 A
5201000 Matyas et al. Apr 1993 A
5202922 Iijima Apr 1993 A
5214702 Fischer May 1993 A
5224162 Okamoto et al. Jun 1993 A
5243175 Kato Sep 1993 A
5247578 Pailles et al. Sep 1993 A
5293577 Hueske et al. Mar 1994 A
5371797 Bocinsky, Jr. Dec 1994 A
5375233 Kimber et al. Dec 1994 A
5420405 Chasek May 1995 A
5452431 Bournas Sep 1995 A
5473690 Grimonprez et al. Dec 1995 A
5485520 Chaum et al. Jan 1996 A
5511121 Yacobi Apr 1996 A
5517011 Vandenengel May 1996 A
5530232 Taylor Jun 1996 A
5534857 Laing et al. Jul 1996 A
5539825 Akiyama et al. Jul 1996 A
5542081 Geronimi Jul 1996 A
5544246 Mandelbaum et al. Aug 1996 A
5546523 Gatto Aug 1996 A
5557516 Hogan Sep 1996 A
5568634 Gordons Oct 1996 A
5574269 Mori et al. Nov 1996 A
5578808 Taylor Nov 1996 A
5581708 Iijima Dec 1996 A
5588146 Leroux Dec 1996 A
5664157 Takahira et al. Sep 1997 A
5682027 Bertina et al. Oct 1997 A
5692132 Hogan Nov 1997 A
5699528 Hogan Dec 1997 A
5704046 Hogan Dec 1997 A
5705798 Tarbox Jan 1998 A
5708780 Levergood et al. Jan 1998 A
5715314 Payne et al. Feb 1998 A
5724424 Gifford Mar 1998 A
5796831 Paradinas et al. Aug 1998 A
5825875 Ugon Oct 1998 A
Foreign Referenced Citations (48)
Number Date Country
0152024 Aug 1985 EP
0157303 Oct 1985 EP
0190733 Aug 1986 EP
0218176 Apr 1987 EP
0261030 Mar 1988 EP
0275510 Jul 1988 EP
0292248 Nov 1988 EP
0292248 Nov 1988 EP
0325506 Jan 1989 EP
0328289 Aug 1989 EP
0354793 Feb 1990 EP
0451936 Oct 1991 EP
WO9116691 Oct 1991 EP
0466969 Jan 1992 EP
0475837 Mar 1992 EP
0547741 Sep 1992 EP
0537756 Apr 1993 EP
0540095 May 1993 EP
0559205 Aug 1993 EP
0588339 Mar 1994 EP
0594493 Apr 1994 EP
0686947 Jan 1995 EP
0636998 Feb 1995 EP
0647902 Apr 1995 EP
0666550 Aug 1995 EP
0707290 Sep 1995 EP
0751460 Jan 1997 EP
2536928 Jun 1984 FR
2667171 Jan 1992 FR
2687816 Aug 1993 FR
2284689 Jun 1995 GB
64-81084 Mar 1989 JP
2592856 Dec 1996 JP
8707061 Nov 1987 WO
WO8707062 Nov 1987 WO
WO8809019 Nov 1988 WO
WO9005960 May 1990 WO
WO9213322 Aug 1992 WO
WO9320538 Oct 1993 WO
WO9321612 Oct 1993 WO
WO9522810 Aug 1995 WO
WO9619771 Jun 1996 WO
WO9628795 Sep 1996 WO
WO9638825 Dec 1996 WO
WO9843212 Oct 1998 WO
WO9101538 Feb 1999 WO
WO9910824 Mar 1999 WO
WO9916031 Apr 1999 WO
Non-Patent Literature Citations (4)
Entry
W. Rankl & W Effing Smart Card Handbook, John Wiley & Sons Publishing, pp. 107-190, (1997).*
International Search Report for PCT/GB98/01393.
Written Opinion for PCT/GB98/01393.
Davies et al., “Security for Computer Networks: An Introduction to Data Security in Teleprocessing and Electronic Funds Transfer,” John Wiley & Sons 1984.
Provisional Applications (1)
Number Date Country
60/046514 May 1997 US