Source: https://patents.google.com/patent/US9092635B2/en
Timestamp: 2019-08-24 18:02:33
Document Index: 280197727

Matched Legal Cases: ['arty 1123', 'arty 1123', 'arty 1223', 'arty 1223', 'arty 1123', 'arty 1123']

US9092635B2 - Method and system of providing security services using a secure device - Google Patents
Method and system of providing security services using a secure device Download PDF
US9092635B2
US9092635B2 US12/295,489 US29548907A US9092635B2 US 9092635 B2 US9092635 B2 US 9092635B2 US 29548907 A US29548907 A US 29548907A US 9092635 B2 US9092635 B2 US 9092635B2
US12/295,489
US20100186076A1 (en
Ed Dolph
2007-03-30 Priority to US12/295,489 priority patent/US9092635B2/en
2009-01-07 Assigned to AXALTO SA reassignment AXALTO SA ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: VASSILEV, APOSTOL, ALI, ASAD, LU, HONGQIAN KAREN
2010-07-22 Publication of US20100186076A1 publication Critical patent/US20100186076A1/en
2015-04-16 Assigned to GEMALTO SA reassignment GEMALTO SA CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: AXALTO SA
2015-07-28 Publication of US9092635B2 publication Critical patent/US9092635B2/en
A secure portable electronic device for providing secure services when used in conjunction with a host computer. The secure portable device includes a read-only memory partition, a read/write memory partition, and a secure memory partition. The secure portable device includes instructions stored in the read-only partition including a host agent containing instructions executable by the host computer. The secure portable device also includes instructions stored in the secure memory partition. These instructions include a card agent containing instructions executable by central processing units secure portable electronic device, and includes a card agent communications module for communicating with the host agent; and a security module for accessing private information stored in the secure memory partition. The host agent includes a host agent communications module for communicating with the card agent and at least one function requiring use of private information stored in the secure memory partition of the portable device and operable to transmit a request to the card agent to perform a corresponding function requiring the use of private information stored on the portable device.
This application is a PCT National Stage application filed Sep. 30, 2008 of PCT/IB2007/000829 which is a PCT application of U.S. provisional application 60/788,400 filed on 31 Mar. 2006 entitled “Proxy web agent and TLS over mass storage” and U.S. application Ser. No. 11/564,121, which is a non-provisional application claiming priority from provisional application Ser. No. 60/788,400, the teachings of which are incorporated by reference herein as if reproduced in full below.
There are also smart cards that provide network capabilities, e.g., the Axalto Network Card, described in co-assigned co-pending patent application Ser. No. 10/848,738, by HongQian Karen Lu, et al, entitled “Secure networking using a resource-constrained device,” filed on 19 May 2004, the entire disclosure of which is incorporated herein by reference. While such smart cards may act as network nodes and peers with other computers connected to a network, these cards require a certain amount of software installation and/or configuration on computers or other devices that interface the cards to the network. However, even with the support of a network connectivity stack on the smart card, the current PC infrastructure cannot support smart cards in restricted user accounts.
In a preferred embodiment, the invention provides a system and method for use of smart cards to provide security services without imposing the overhead of driver and/or middleware installations requiring administrative rights on a host computer or special hardware not normally found on end-user computers. The invention is easily deployed in conjunction with computers having commonly encountered system software and hardware. There is no need for special middleware or hardware because of the capabilities provided via firmware installed in the device and transferred automatically to the host computer to which it is connected.
A secure portable electronic device for providing secure services when used in conjunction with a host computer having a central processing unit of a first type, the secure portable electronic device having a central processing unit of a second type, wherein a secure service is provided by executing an application in a flexible distributed fashion among the host computer and the secure portable electronic device. The secure portable device includes a read-only memory partition, a read/write memory partition, and a secure memory partition. Further, the secure portable device includes a communications interface for transmitting and receiving data between the host computer and the secure portable electronic device using a communications protocol over the communications interface. The secure portable device includes instructions stored in the read-only partition. These instructions include a host agent containing instructions executable by central processing units of the first type. The secure portable device also includes instructions stored in the secure memory partition. These instructions include a card agent containing instructions executable by central processing units of the second type, and includes a card agent communications module for communicating with the host agent; and a security module for accessing private information stored in the secure memory partition. The host agent includes a host agent communications module for communicating with the card agent and at least one function requiring use of private information stored in the secure memory partition of the portable device and operable to transmit a request to the card agent to perform a corresponding function requiring the use of private information stored on the portable device.
FIG. 4 is a block diagram illustrating the loading of the host-agent of FIG. 3 into Random Access Memory (RAM) of the host computer to which the smart card is connected.
FIG. 5 is a schematic illustration of various data frames used in the protocol, the Communication over Mass Storage Protocol (CMP), used to communicate between the host agent and card agent.
FIG. 6 is a timing sequence diagram illustrating the method by which key diversification is performed by the host agent and the card agent.
FIG. 7 is a timing sequence diagram illustrating the messages transmitted between a browser, the host agent and the card agent during a TLS server handshake establishing a TLS communication between the browser and the host agent.
FIG. 8 is a timing sequence diagram illustrating the messages transmitted between a remote server, the host agent and the card agent during a TLS client handshake establishing a TLS communication between the remote server and the host agent.
FIG. 9 is a timing sequence diagram illustrating the message flow between the host agent and the card agent employed to authenticate a user using a PIN.
FIG. 10 is a message sequence diagram illustrating the message flow for setting up a new user account on the smart card.
FIG. 11 is a message sequence diagram illustrating the message flow for performing Phase-1 login using the host agent and card agent.
FIG. 12 is a message sequence diagram illustrating the message flow for the Phase-2 login using a verifying party and the host agent and card agent.
FIG. 13 is a message sequence diagram illustrating the message flow for mid-stream login using the smart card.
FIG. 14 is a schematic illustration of the structure of an Application Layer Protocol (ALP) frame carried in the payload field of a CMP frame.
FIG. 1 is a block diagram illustrating an example scenario in which a smart card is used to access services on a remote server. A smart card 101 is connected to a host computer 103 using a standard connector 105. The host computer 103, in turn, is connected to a network 107, e.g., the Internet. At a remote location on the network 107, a server computer 109 is connected. A user 111, for example, the owner of the smart card 101, wishes to access a service 113 provided by the server 109. Consider, as an example, that the service 113 requires the user 111 to identify himself using a PIN. The user 111 (or a service provider) has previously stored the user's PIN on the smart card 101. If the user 111 cannot trust the computer 103, there is a risk that the computer 103 would capture the PIN, if the user merely types in the PIN using the keyboard of the computer 103. Alternatively, the user can direct the smart card 101 to transmit the PIN directly to the remote service 113. That also is problematic. Malware installed on the computer 103 or elsewhere on the path between the smart card 101 and the remote service 113 may capture the PIN by snooping on the communication.
FIG. 2 is a block diagram illustrating a high-level view of the architecture of a smart card 101. As illustrated in FIG. 1, the smart card 101 is equipped with a standard peripheral hardware connector 105, e.g., a USB connector. The smart card 101 contains a central processing unit 201, a RAM 203, and a non-volatile memory 205. These components are connected via a bus 207. Also connected to the bus 207 is a communications hardware interface 209 for providing a connection between the bus 207, and consequently, the CPU 201, RAM 203, and non-volatile memory 205, and the connector 105.
FIG. 3 is a block diagram illustrating the architectural organization of programs over the hardware components of the smart card 101. The hardware connection between the smart card 101 and the host computer 103 is achieved using the hardware connector 105. The communication on the hardware connection uses the USB mass storage protocol. The CPU 201, executing an interface firmware module 227, which is stored as firmware on the smart card 101, manages that communication. As such, the interface module is located in the non-volatile memory 205 or in Read Only Memory (ROM). The interface firmware module 227 implements the USB mass storage protocol such that the host computer 103 perceives the smart card 101 to be a USB mass storage device.
The mass storage read-only partition 221 contains public data 209 that may be accessed from any host computer to which the smart card 101 may be connected. The mass storage read-only partition 221 also contains a program, the host-agent 211, which is auto-launched on the host computer 103 when the smart card 101 is connected to the host computer 103 via the hardware connection 105. The USB mass storage standard provides that a USB mass storage device may include a trigger file called autorun.inf that is a script that automatically is executed when the device is connected to a host. Table I is a code example of one possible autorun.inf file to launch the host-agent 211:
Example Autorun.inf to launch the host-agent 211.
When a user 111 inserts the smart card 101 into the appropriate slot on a host computer 103, the operating system (e.g., Microsoft Windows) displays a dialog box allowing the user 111 to select the action “Launch the Network Card Host Agent”. If the user 111 accepts that action, the host-agent 211 (“hagent_r.exe” in the example code) is executed by the host computer 103.
FIG. 4 is a block diagram illustrating the loading of the host-agent 211 into the RAM 403 of the host computer 103. The CPU 401 of the host-computer 103, then executes the host-agent 211. The host agent 211 communicates with the card-agent 213, which is loaded in the RAM 203 of the smart card 101 and executed by the CPU 201 of the smart card 101. Through the card agent 213, the host agent 211 has access to private files 215 that are stored on the smart card 101. Communication between the host agent 211 and the card agent 213 is performed via the host-side USB mass storage interface 405 a and the card-side USB mass storage interface 405 b (collectively, 405).
ClientKeyE.xchange: The ClientKeyExchange is a critical message for generating TLS session keys. It is sent by the client (the web browser) to the server (the host agent 211) and contains a pre-master-secret, PMS, that is encrypted using the public key, Kpb, of the smart card 101. From the perspective of the web browser, Kpb is the public key of the web server, i.e., the host agent 211. The PMS can only be decrypted using the private key, Kpv that resides on the smart card 101 in the secure data area 215. The host computer 103 and the smart card 101 use the following protocol to accomplish this.
In a preferred embodiment, the communication between the host agent 211 and the card agent 213, whether file based or over a direct channel, is encrypted using a symmetric key, Ks. The symmetric key K.sub.s may be initialized by the card agent or through the use of the public key infrastructure (PKI) as described herein below in Sections 2.6.2 and 2.6.3, respectively. The negotiation and diversification of this key is described herein below in Section 2.6.4.
In the following series of messages and elsewhere herein, the teen inside braces { } is encrypted using the key outside, e.g., {PMS}Kpb means that the PMS is encrypted using the public key K.
2. The card agent 213 uses Kp, to extract PMS.
If a client does not trust a remote server, e.g. 109, in FIG. 1, if the remote service 113 provides a very sensitive service to the user 111, the user 111 may want to ensure that he is communicating with the service he is expecting rather than an imposter. In this case the user, via the host computer would perform a TLS Client Handshake with the remote server 109. In this scenario, the host agent 211 is the client. This scenario is used when validating a remote server having a given URL, e.g., www.myBank.com. Again, while the entire TLS handshake requires several messages, the only message of interest in the present discussion is the Certificate message that is received from the server 109. The host agent 211 and the card agent 213 perform the validation of the received Certificate as follows:
From a communications perspective, these two embodiments represent different ends of the spectrum of possible divisions of responsibilities between the host agent 211 and the card agent 213. The requirements of communication protocols for these scenarios are different. Table 2 outlines the protocol requirements and analysis.
Web server on host, card
Web server on card is a security server.
Packets TLS messages Functional requests and
Sync between No. Yes
Card and host? (Most of time, yes.
But not always.)
Duplex Full-duplex Half-duplex
Command/Response No Yes
Protocol complexity Simple (length) More Complex (command
type, length, parameters,
Error checking Probably not Probably not
Retransmission Probably not Probably not
Encryption No Yes, with symmetric key
Card side API Socket API Functional API
In an embodiment in which a web server is operated on the smart card 101, the web server and a web agent are on the smart card 101. The host agent 211 is a proxy that forwards TLS messages between the smart card 101 and either the browser client executing on the host computer 103, or a remote web server executing on server 109. On the host agent side, the communication layer, which is implemented as part of the host agent 211, provides a standard socket API to application programs, e.g., web server, web client. A full duplex communications protocol for communication between the host agent 211 and the card agent 213 is implemented on top of the Mass Storage file I/O. A Simple Transport Protocol (STP) that is described in co-pending patent application Ser. No. 10/848,738, filed on 19 May 2004, and entitled Secure Networking Using a Resource-constrained Device (the entire disclosure of which is incorporated herein by reference) may be implemented on top of the communication protocol. The STP is a full duplex transport protocol that enables socket operations on the smart card side. (It is a kind of remote socket approach.) The protocol stack is illustrated in Table 3:
Protocol Stack for Web Server on the Smart Card embodiment
Simple Transport Protocol
In the alternative embodiment in which the smart card 101 acts as a security server for the host computer 103, the host agent 211 performs the functions of a web server. All secrets and processing of secrets are performed on the smart card 101 and thus are not exposed. The host agent 211 performs most of the other tasks related to providing web server functionality. Table 4 illustrates two alternative communications protocols for transmission between the host agent 211 and the card agent 213 when the latter acts as a security server.
Alternative Communications Protocol for use when Smart Card is a Security Server
APDU style Layered style
Protocol style Communication protocol The communication protocol and application
has application syntax. For protocol are separate layers. The
example, APDU has communication protocol sends data back and
application specific forth without examine the payload. The
command, such as application protocol contains commands,
CREATE, CHANGE CHV. parameters and data.
Communication Protocol Option:
Options command/Response Full-duplex
Advantages Simple to implement; Simple to Same communication
Can use code from existing implement; protocol as web server
smart card Card is a slave. on card; no wait -
implementations. better performance;
card is not a slave; it
Disadvantages Inflexible. A new Less performance More complex to
application may require than the full-duplex implement
adding new commands.
Less performance than full
duplex. Card is a slave.
In one embodiment, the protocol stack on both the host computer 103 and the smart card 101 contains the layers illustrated in Table 5.
Exemplary Communications Protocol Stack
for Host and Card communication
Communication over Mass Storage Protocol (CMP)
From a programming perspective, the link layer protocols are different on the host side and the card side, although the actual physical and link layers are the same on both sides. The host side link layer is file I/O because a user mode program cannot access the USB Mass Storage interface directly. However, the card side Operating System OS has a full control to its underlying protocols and hardware. Therefore, the card side link layer can be the USB Mass storage interface 405 b. Table 6 is a presentation of a comparison of the host side communications stack and the card side communications stack.
Comparison of the host side communications stack
and the card side communications stack.
Host side stack Card side stack
File I/O Mass Storage Protocol (MSP)
On the smart card 101, messages for communication between the smart card 101 and the host computer 103 should not need to go through the card side file system. Communication packets received via MSP may go directly to the CMP layer. Similarly, packets to be sent, are sent from the CMP layer to the MSP layer, then to the USE layer directly.
In one embodiment of the invention, a communications protocol for allowing the host agent 211 and the card agent 213 over the USB mass storage protocol is implemented as part of the card agent 213 and host agent 211. This communications protocol is referred to herein as CMP. CMP is a full duplex protocol. Either side can initiate communication at any time as long as the channel is open. CMP applies to both the “Web server on card” and “Card being a security server” embodiments described herein above, i.e., CMP may be the communication protocol regardless how functionality is divided between the host agent 211 and the card agent 213.
Symmetrically, to receive a message from the host computer 103, the card agent 213 reads from toCardFile, and to send a message to the host agent, the card writes to toHostFile. The host agent 211 and the card agent 213 synchronize between read/write cycles to operate a USB mass storage based 110 channel.
FIG. 5 is a schematic illustration of various data frames used in the CMP protocol.
Encryption flag: 1—payload is encrypted; 0—payload is not encrypted. Compression flag: 1—payload is compressed; 0—payload is not compressed. The 13 bits after the type is the length of the data payload.
Type=1: the frame contains a protocol management command. The data payload may be null. One example is the Echo command, with which one end can check the status of the other.
The CMP encapsulates ALP frames, i.e., the payload of a CMP packet contains an ALP frame, which in turn consists of an ALP header and an ALP payload. FIG. 14 is a schematic illustration of the structure of an ALP frame 1403 carried in the payload field of a CMP frame 1401. The ALP frame 1403 consists of an ALP header and an ALP payload field. The ALP header is a 4-byte field containing four fields:
A symmetric key Ks, secures the communication channel between the host agent 211 and the card agent 213. This key can be diversified on a regular basis to prevent brute force attacks. The host agent 211 and the card agent 213 use Ks to encrypt and decrypt the payload of a CMP frame. The initial value of Ks can be obtained through two different mechanisms depending on whether the host agent 211 is launched from the host 103 or from the mass storage portion of the card 101. In the case of the former, the initialization may be by PKI (section 0) and in the latter by way of a shared secret (section 0). In both cases the diversification login can be the same.
2.6.1 Management Frame
The communication layer uses management frames 509 to perform the three-way handshaking for initial key exchange, or subsequent key diversification. As described above, the first bit is the frame type. When it is 1, the frame is a management frame. The next 5 bits indicate the type of the management frame. Table 7 describes the type definition for management frames for the symmetric key initialization or diversification.
Type definition for management frames for the symmetric
key initialization or diversification.
Type Length Meaning
0x0 0 Reserved
0x1 Message length Initial: Send key Ks from host to card.
0x2 Message length Initial: Send from card to host to verify
0x3 1 for ACK, 0 for Initial: ACK or NAK, send from host to
NAK card.
0x4 Message length Reset: Send new key Ks from host to
0x5 Message length Reset: Send from card to host to verify
0x6 1 for ACK, 0 for Reset: ACK or NAK, send from the host
NAK to card.
2.6.2 Initialization of Shared Secret
The initialization of the symmetric key, Ks, through a shared secret between the card and the host agent, is the preferred method of securing the host/card communication. The shared secret Ks can be achieved by updating the host agent binary in the mass storage portion 221 of the smart card 101 prior to loading the host agent 211 on the host computer 103. On each card reset, the smart card processor 201 generates a random key of desired length and writes to the non-volatile memory (NVM) memory allocated for this purpose inside the host agent binary. This is possible since the executable for host agent 211 actually resides on the smart card 101. The host agent nevertheless runs on the host computer 103. However, because it resides in the NVM 205 of the smart card 101 the smart card processor 201 may write the shared secret Ks into the host agent binary. This initial random key becomes the initial value of Ks. To further secure the shared secret key, the card and host agents may employ various obfuscation techniques. For example, the shared secret is not written in a contiguous memory space of the host-agent but is spread over a predetermined set of locations using a predetermined algorithm. More specifically, the shared secret may be partitioned into two parts and writing each part in non-contiguous memory space at predetermined locations using a predetermined algorithm.
2.6.3 Initialization by PKI
The host agent 211 generates a session key Ks of desired number of bytes for symmetric encryption. The host agent 211 shares Ks with the card agent through a three-way handshaking as is illustrated in Table 8.
Three-way handshake to exchange Ks using PKI
Host agent Channel Card agent
Generate Ks and a RND {Ks, RND}Kpb
Encrypt Ks and RND →
with the public key,
Kpb, of the card:
{Ks, RND}Kpb
Send to card.
Decrypt with the card's
{Ks, RND} =
{{Ks, RND}Kpb}Kpv
{RND}Ks Encrypt RND using Ks
← {RND}Ks; send to host
Decrypt RND using Ks ACK (or NAK) If receive ACK, the card
RND′ = {{RND}Ks}Ks → and the host can use Ks.
If RND == RND, send
Else, send NAK.
2.6.4 Key Diversification
Regardless of the method of setting the initial value of symmetric key Ks, the Ks key may have to be diversified while the smart card 101 is in use. Key diversification is a process whereby a unique key is generated from a common master key. This prevents a symmetric key from being stale and open to brute force attack. The negotiation of the new key requires knowledge of the current symmetric key. This way a malicious third party cannot break the secure connection between host and card agents by introducing an arbitrary symmetric key. FIG. 6 is a timing sequence diagram illustrating the method by which key diversification is performed by the host agent 211 and the card agent 213:
FIG. 7 is a timing sequence diagram illustrating the messages transmitted between a browser 751, the host agent 211 and the card agent 213 during a TLS server handshake establishing a TLS communication between the browser 751 and the host agent 211.
FIG. 8 is a timing sequence diagram illustrating the messages transmitted between a remote server 851, the host agent 211 and the card agent 213 during a TLS client handshake establishing a TLS communication between the remote server 851 and the host agent 211. In this use case, the host agent 211 acts as a TLS client using the services of the card agent to validate the authenticity of the remote server 851.
Step 809. The host agent 211 uses the session keys calculated in step 807 to create a Finish message, which is sent to the remote server R1 851.
In an alternative embodiment of the invention, the host agent and card agent are used to authenticate a user using a browser B1 against a PIN stored on the smart card 101. FIG. 9 is a timing sequence diagram illustrating the message flow between the host agent 211 and the card agent 213 employed to authenticate a user using a PIN. The PIN is stored in the secure data 215.
Step 903. The user 111 enters a PINT on the graphical PINpad, which is sent back to host agent 211. This “PIN” is actually the graphical coordinate representation of the real PIN. A graphical PINpad and the use thereof is described in co-pending patent application Ser. No. 11/076,682, Michael Montogomery and Asad Ali, filed on 10 Mar. 2005 and entitled “System and method of secure login on insecure systems”, the entire disclosure of which is incorporated herein by reference.
This section describes the scenario of setting up a new user account for a remote service on the smart card 101. The account setup use case starts after the user 111 has been authenticated to the smart card 101 as described in section 2.9 in conjunction with FIG. 9. FIG. 10 is a message sequence diagram illustrating the message flow for setting up a new user account on the smart card 101.
FIG. 11 is a message sequence diagram illustrating the message flow for performing Phase-1 login using the host agent 211 and card agent 213.
While the Phase-1 login provides a way for a user to provide a login credential to a relying party 1123, in some cases the relying party may wish to obtain an even stronger verification of the authenticity of the user 111. In that case, the present invention provides support for a second phase of authentication to a relying party 1123 wherein the authenticity of a user 111 is verified by a third independent party, the verifying party 1223. At this point the user 111 has already been logged into the relying party server 1123 through the browser B2 1125. The details of this Phase-1 login are explained in section 2.11. FIG. 12 is a message sequence diagram illustrating the message flow for the Phase-2 login using a verifying party 1223 and the host agent 211 and card agent 213.
Step 1210. The response to request in step 1202 is sent. The formulation of the response is part of step 1202. Step 1210 actually accomplishes two things: 1. Change the message/UI on browser B3 1221 to indicate that phase 2 is complete, 2. Close the browser B3 1221. The close action may have to be taken by the user. E.g., B3 will provide a link that says, “Click here to close this window”. The browser B3 1221 can now be closed.
The present invention also supports a scenario in which a user may login into a relying party server using the smart card through an existing browser session when the user is connected to a relying party server through browser B1, but has not logged in yet. This is referred to as mid-stream login. FIG. 13 is a message sequence diagram illustrating the message flow for mid-stream login using the smart card 101.
Step 1306. Once the card agent 213 confirms the PIN, the host agent 211 connects to the relying party 1123 and validates that the relying party 1123 is indeed the expected server. As explained in section 2.8 the certificate parsing is done by the card agent 213—hence the dotted line indicating message flow to the card agent 213.
1. A secure portable electronic device for securing connections to remote servers thereby providing security to web services when the portable electronic device is used in conjunction with a host computer having a central processing unit of a first type, the secure portable electronic device having a central processing unit of a second type, wherein a secure service is provided by executing an application in a flexible distributed fashion among the host computer and the secure portable electronic device, comprising:
a communications interface for transmitting and receiving data between the host computer and the secure portable electronic device using a communications protocol over the communications interface;
a host agent containing instructions executable by a central processing unit of the first type and configured to launch on the host computer;
private information stored in the secure memory partition; instructions stored in the secure memory partition, comprising:
a card agent containing instructions executable by central processing units of the second type, the instructions including:
a card agent communications module for communicating with the host agent; and
a security module for accessing private information stored in the secure memory partition; and
a card-agent-to-host-agent association mechanism stored in memory of the secure portable device and that operates to uniquely associate the host agent stored on the secure portable device with the card agent stored in the secure memory partition of the secure portable device in a manner to ensure that the card-agent-to-host-agent association mechanism is configured to load with the host agent thereby identifying the host agent instance, when executing on the host computer, as the host agent instance uploaded from the secure portable device upon launching of the host agent instance uploaded from the secure portable device when the secure portable device is connected to the host computer;
the host agent comprising instructions including:
a host agent communications module for communicating with the card agent;
a web server for connecting to a web browser operating on the host device thereby allowing a user to interact with the host agent and a web client for initiating connections to a remote server; and
at least one function requiring use of private information stored in the secure memory partition of the portable device and configured to transmit a request to the card agent to perform a corresponding function requiring the use of private information stored on the portable device.
2. The secure portable electronic device of claim 1, wherein the web server is configured to receive and respond to requests from the web browser operating on the host computer;
and wherein the host agent further comprises instructions including a web agent configured to initiate and communicate with the remote server, and configured to perform security services.
3. The secure portable electronic device of claim 1 wherein the security module of the card agent accesses the private information by the at least one function requiring use of private information and transmits a result to the host agent wherein the result does not reveal the private information.
4. The secure portable electronic device of claim 1 wherein the at least one function is selected from the set PIN Authentication, Account Setup, Phase-1 Login, Phase-2 Login, Mid-Stream Login.
5. The secure portable electronic device of claim 1 comprises an integrated circuit affixed to a card.
6. The secure portable electronic device of claim 1 the instructions stored in the read-only partition further comprising:
a trigger file configured to automatically launch upon connection of the secure portable electronic device to a host computer, the trigger file having an instruction to cause the loading of the host agent by the host computer and execution of the host agent by the host computer.
7. The secure portable electronic device of claim 5 wherein the host computer has a standard hardware interface, standard host drivers, and standard software stored on the host computer and the secure portable device further comprises a hardware interface for connecting the secure portable device to the host computer using the standard hardware interface, the standard host drivers, and standard software of the host computer.
8. The secure portable electronic device of claim 1 further comprising a standard protocol and wherein the card agent and host agent communicate using a secure card-agent-to-host-agent communications protocol implemented in data frames of the standard protocol.
9. The secure portable electronic device of claim 8 wherein the standard protocol is the USB mass storage protocol.
10. The secure portable electronic device of claim 8 wherein the standard protocol is selected from the set including the USB mass storage protocol, USB human interface device protocol, and USB Chip/Smart Card Interface Device protocol (CCID).
11. The secure portable electronic device of claim 8 wherein the card agent further comprises a card-agent secure communications module configured to perform secure communications with a host-agent secure communications module of the host agent over the card-agent-to-host-agent communications protocol.
12. The secure portable electronic device of claim 1 wherein the central processing unit of the second type loads the card-agent into the RAM of the secure portable electronic device and executes instructions for the card-agent from the RAM and wherein the card-agent comprises instructions to cause initialization of the host-agent.
13. The secure portable electronic device of claim 12 wherein the card-agent-to-host-agent association mechanism is an initial shared secret embedded into the host agent by the card agent and the instructions to cause initialization of the host-agent comprises instructions to cause the secure electronic device to write the initial shared secret into a specific location of the host-agent thereby enabling the host-agent and card-agent to both hold the shared secret when the host-agent is executed by the host-computer.
14. The shared secret of claim 13 wherein the secret is not written in a contiguous memory space of the host-agent but is spread over a predetermined set of locations using a predetermined algorithm.
15. The secure portable electronic device of claim 1 wherein:
the host agent further comprises:
instructions of a first portion of a user application requiring application of at least one security function; and
the card agent further comprises:
instructions of a second portion of the user application requiring application of at least one security function.
16. The secure portable electronic device of claim 15 wherein the first portion comprises instructions to provide the functionality of a secure web server and web agent and the second portion contains instructions to provide a security function.
17. The secure portable electronic device of claim 16 wherein the first portion comprises instructions to provide the functionality of a thin proxy and the second portion provide functionality of a secure web server.
18. The secure portable electronic device of claim 1 wherein:
instructions to transmit a request to the card-agent to perform at least one security function; and
instructions to receive the request from the host-agent to perform at least one security function, and to perform the at least one security function.
19. The secure portable electronic device of claim 1 wherein the secure portable device further comprising:
a security mechanism to prevent data in the secure memory partition from external access.
20. The secure portable electronic device of claim 19 wherein:
the security mechanism allows solely the card-agent to access the private information stored on the portable device.
21. The secure portable electronic device of claim 1 wherein the host-agent and card-agent comprise instructions to provide communication between the host computer and the secure portable device.
22. The secure portable electronic device of claim 1 wherein the host agent comprises instructions that are executable on the host computer and provide services accessible through a standard web browser thereby providing a web interface to the secure portable device.
23. A secure portable electronic device comprising:
a connector for connecting the secure portable electronic device to a host computer having a host-computer central processing unit;
a card central processing unit;
a read-only memory partition having a host-agent comprising instructions executable by the host-computer central processing unit wherein the host-agent is configured to launch on the host-computer;
a secure read/write memory partition having a card-agent comprising instructions to execute on the card central processing unit;
a card-agent-to-host-agent association mechanism stored in memory of the secure portable device and that operates to uniquely associate the host agent stored on the secure portable device with the card agent stored in the secure memory partition of the secure portable device in a manner to ensure that the card-agent-to-host-agent association mechanism is configured to load with the host agent thereby identifying the host agent instance, when executing on the host computer, as the host agent instance uploaded from the secure portable device upon launching of the host agent instance uploaded from the secure portable device when the secure portable device is connected to the host computer; and
a trigger program stored in memory of the secure portable device;
the host-agent comprising a communications module configured to communicate with the card-agent over a standard protocol and implementing a web server for connecting to a web browser operating on the host device thereby allowing a user to interact with the host agent and a web client for initiating connections to a remote server; and
wherein the trigger program causes the host-computer central processing unit to execute the host-agent.
24. The secure portable electronic device of claim 23 wherein the secure portable electronic device further comprises a secure memory partition having stored therein sensitive information, and wherein the card-agent comprises instructions to cause the card central processing unit to receive from the host agent requests requiring access to the sensitive information and to process such requests without divulging the sensitive information.
25. The secure portable electronic device of claim 23 wherein the standard protocol is a file based communications protocol and the host-agent contains instructions communicate with the secure portable electronic device by writing communications files in a read/write memory partition of the secure portable electronic device.
26. The secure portable electronic device of claim 23 wherein the host computer and secure portable electronic device each comprise instructions to communicate by establishing a secure channel over the file based communications protocol by writing encrypted packets as files in the file-based communications protocol.
27. A method for operating a host computer and secure portable device to jointly provide secure access to network services, comprising:
loading a host-agent program from the secure portable device into memory of the host computer;
executing a card-agent-to-host-agent association mechanism that operates to uniquely associate the host agent stored on the secure portable device with the card agent stored in the secure memory partition of the secure portable device in a manner to ensure the card-agent-to-host-agent association mechanism is configured to load with the host agent thereby identifying the host agent instance, when executing on the host computer, as the host agent instance uploaded from the secure portable device upon launching of the host agent instance uploaded from the secure portable device when the secure portable device is connected to the host computer;
executing the host-agent program on the host computer;
executing a card-agent program on the secure portable device;
establishing a secure communications channel between the host computer and the secure portable device, by executing on the host computer instructions of the host-agent program and executing on the secure portable device instructions of the card-agent program to establish a secure communications link;
executing on the host computer instructions of the host-agent program to cause transmission of requests to the secure portable device to perform functions that need accessing private data stored on the secure portable device;
executing on the host computer instructions in the form of a web server to allow interaction via web browser executing on the host computer and a web client for initiating connections to a remote server; and
executing on the secure portable device instructions to process the requests to of the host agent that need to use private data by executing instructions of the card-agent program to access and process the private data and to transmit the resulting data to the host computer.
28. The method for operating a host computer and secure portable device to jointly provide secure access to network services of claim 27 comprising:
operating instructions of the host-agent program to cause the host computer to establish a secure communications channel with the secure portable device.
in response to establishing a connection between the host computer and the secure portable device, launching a trigger file to cause the execution of the host agent on the host computer.
communicating between the host agent and card agent by the host agent and card agent writing files into a read-write memory partition of the secure portable device.
31. The method of claim 27 comprising:
communicating between the host agent and the card agent by the card agent writing to an interface of the secure portable device; and the host agent reading from the interface.
32. The method of claim 27 wherein executing a card-agent-linking mechanism comprises:
writing a shared secret into a memory location on the secure portable device, wherein the memory location is located within memory allocated to store the host agent prior loading the host agent onto the host computer; and
providing a secure communications between the host agent and card agent by encrypting communications between the host agent and card agent using the shared secret.
33. The method of claim 32 wherein the writing of the shared secret comprises:
partitioning the shared secret into at least two parts and writing each part in non-contiguous memory space at predetermined locations using a predetermined algorithm.
executing on the host computer instructions of a first portion of a user application requiring application of at least one security function; and
executing on the secure portable device instructions of a second portion of the user application requiring application of at least one security function.
the executing on the host computer instructions of a first portion comprises performing the functionality of a secure web server and web agent; and
the executing on the secure portable device instructions of a second portion comprises performing a security function.
the executing on the host computer instructions of a first portion comprises performing the functionality of a thin proxy; and
the executing on the secure portable device instructions of a second portion comprises performing the functionality of a secure web server.
37. The secure portable electronic device of claim 12 wherein the card-agent-linking mechanism comprises instructions embedded into the host agent to generate the initial shared secret, to encrypt the initial shared secret with a public key of the card agent, to transmit the encrypted shared secret to the card agent with a challenge, to receive a response to the challenge decrypted by the card agent thereby confirming that the card agent is a legitimate card agent corresponding to the public key used to encrypt the initial shared secret.
38. The method of operating a host computer and portable device of claim 27 wherein the card-agent-linking mechanism comprises instructions embedded into the host agent to generate the initial shared secret, to encrypt the initial shared secret with a public key of the card agent, to transmit the encrypted shared secret to the card agent with a challenge, to receive a response to the challenge decrypted by the card agent thereby confirming that the card agent is a legitimate card agent corresponding to the public key used to encrypt the initial shared secret.
US12/295,489 2006-03-31 2007-03-30 Method and system of providing security services using a secure device Active 2030-07-23 US9092635B2 (en)
US12/295,489 US9092635B2 (en) 2006-03-31 2007-03-30 Method and system of providing security services using a secure device
US11/564,121 Continuation US20080052770A1 (en) 2006-03-31 2006-11-28 Method and system of providing security services using a secure device
US11/564,121 Continuation-In-Part US20080052770A1 (en) 2006-03-31 2006-11-28 Method and system of providing security services using a secure device
US20100186076A1 US20100186076A1 (en) 2010-07-22
US9092635B2 true US9092635B2 (en) 2015-07-28
ID=42338012
US12/295,489 Active 2030-07-23 US9092635B2 (en) 2006-03-31 2007-03-30 Method and system of providing security services using a secure device
US (1) US9092635B2 (en)
US20060085527A1 (en) 2004-10-15 2006-04-20 Microsoft Corporation Remote services for portable computing environment
2007-03-30 US US12/295,489 patent/US9092635B2/en active Active
Gebotys, C.H.; et al; "Security wrappers and power analysis for SoC technology";Hardware/Software Codesign and System Synthesis, 2003. First IEEE/ACM/IFIP International Conference on ;DOI: 10.1109/CODESS.2003.1275277 Publication Year: 2003 , pp. 162-167. *
Microsoft Corporation, Microsoft Computer Dictionary, 2002, Encryption, NFS, and Proxy Server. Microsoft Press, 5th Edition.
Ravi, S.; et al.;"Tamper resistance mechanisms for secure embedded systems";VLSI Design, 2004. Proceedings. 17th International Conference on ;DOI: 10.1109/ICVD.2004.1260985 Publication Year: 2004 , pp. 605-611. *
WebServ USB, ItWorks, Inc., http://www.webservusb.com, 2004.
US20100186076A1 (en) 2010-07-22
ES2595105T3 (en) 2016-12-27 effective and secure authentication systems
EP1384369B2 (en) 2010-10-27 Method and system for establishing a communications pipe between a personal security device and a remote computer system
Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:ALI, ASAD;LU, HONGQIAN KAREN;VASSILEV, APOSTOL;SIGNING DATES FROM 20080909 TO 20080924;REEL/FRAME:022070/0827
Free format text: CHANGE OF NAME;ASSIGNOR:AXALTO SA;REEL/FRAME:035424/0932