US20060212706A1 - Scalable session management - Google Patents
Scalable session management Download PDFInfo
- Publication number
- US20060212706A1 US20060212706A1 US11/084,051 US8405105A US2006212706A1 US 20060212706 A1 US20060212706 A1 US 20060212706A1 US 8405105 A US8405105 A US 8405105A US 2006212706 A1 US2006212706 A1 US 2006212706A1
- Authority
- US
- United States
- Prior art keywords
- key
- session
- session key
- cookie
- private
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 235000014510 cooky Nutrition 0.000 claims abstract description 151
- 238000000034 method Methods 0.000 claims description 34
- 238000007726 management method Methods 0.000 description 42
- 238000012795 verification Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 230000006855 networking Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 2
- 230000005055 memory storage Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 238000009795 derivation Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
- H04L63/045—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply hybrid encryption, i.e. combination of symmetric and asymmetric encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3242—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
Definitions
- This invention relates to session management, and more specifically, to scalable session management.
- the website can return data, known as a cookie, that is stored on the user's computer, and then sent back to the server when the user later browses to the same website.
- the cookie can be used by the website to establish a state associated with the user. For example, with a website through which a user can make purchases, a cookie may be used to maintain a list of items that are in the user's shopping cart. For example, a user may visit the website, add things to their shopping cart, and leave the website. When the user returns to the website, the previously added items are still in the user's shopping cart, based on data stored in a cookie.
- cookies may contain sensitive and/or personal data (e.g., data for providing access to a bank account), it is important that cookies be protected. Cookies are typically signed and/or encrypted to protect the data. Furthermore, to increase security, keys that are used to sign and/or encrypt cookies should be securely stored and frequently changed.
- one or more private/public key pairs are installed on multiple servers in a server farm.
- the cookie data is encrypted using a session key, which may be randomly generated.
- the session key is then signed and encrypted using one or more of the private/public key pairs and transmitted to the client along with the encrypted cookie data.
- the server uses the private/public key pair(s) to decrypt and verify the session key that was included with the cookie. Once verified, the session key is then used to decrypt the cookie data.
- the first server also applies a message authentication code (MAC) to the cookie data and the session key to generate an authentication tag that can later be used to authenticate the decrypted cookie data.
- MAC message authentication code
- a session key may also have an associated expiration date/time, after which the any cookie generated using the session key is no longer valid.
- Session keys may be cached by one or more servers in the server farm, and expired session keys may be purged from the cache periodically. For example, an expired session key may be purged from the cache when a cookie including the expired session key is received.
- the cache may be purged of expired session keys iteratively according to a configured time schedule, after a configured number of cookies have been received, and/or after a configured number of session keys have been added to the cache.
- FIG. 1 is a pictorial diagram illustrating an exemplary network environment in which scalable session management may be implemented.
- FIG. 2 is a block diagram illustrating exemplary generation of a session cookie.
- FIG. 3 is a block diagram illustrating decryption and verification of a received session cookie.
- FIG. 4 is a block diagram of selected components of an exemplary server configured to enable scalable session management.
- FIG. 5 is a flow diagram of an exemplary method for generating an encrypted session cookie.
- FIG. 6 is a flow diagram of an exemplary method for decrypting and verifying a received cookie.
- FIG. 7 is a pictorial/block diagram of exemplary computing systems, devices, and components in an environment in which scalable session management may be implemented.
- cookie data associated with a particular session may be generated by the server and stored on the client. This data is commonly referred to as a “cookie”. The cookie may later be sent back to the server, for example, to enable the state of the previous session to be recreated. Because cookies may include sensitive data (e.g., a cookie may be associated with a user's bank account information), it is important that the confidentiality and integrity of cookies be maintained. Cookie confidentiality ensures that the data stored in a cookie cannot be easily determined, while cookie integrity ensures that the data stored in a cookie cannot be tampered with.
- confidentiality is achieved by encrypting the data to be stored in the cookie; integrity is achieved by signing a key used to encrypt the cookie data and applying a message authentication code to the cookie data. In this way, the cookie data and the encryption key can both be verified.
- an encrypted symmetric key is carried with an encrypted session token.
- the server decrypts the encrypted symmetric key, which can then be used to decrypt the encrypted token.
- FIG. 1 illustrates an exemplary network environment in which scalable session management may be implemented.
- server farm 102 includes multiple independent servers 104 ( 1 ), 104 ( 2 ), . . . (N).
- Client system 106 communicates with server farm 102 over a network 108 , such as the Internet.
- client system 106 may utilize a web browser to access a website provided by server farm 102 .
- client system 106 accesses the website via server 104 ( 1 ), as represented by arrow 110 .
- Server 104 ( 1 ) returns an encrypted cookie, as represented by arrow 112 .
- client system 106 accesses the website again, but this time via server 104 (N).
- server 104 (N) the cookie that was generated by server 104 ( 1 ) is transmitted to server 104 (N), which utilizes the data in the cookie, for example, to re-establish a website state that the user experienced in a previous interaction with the website.
- a network server 104 and/or client system 106 may be implemented as any form of computing or electronic device with any number and combination of differing components as described below with reference to the exemplary computing environment 700 shown in FIG. 7 .
- FIG. 2 illustrates exemplary processing that may be performed by a server 104 to generate a cookie.
- Server 104 maintains private/public key pairs, two of which are identified in FIG. 2 by key ID 1 202 ( 1 ) and key ID 2 202 ( 2 ).
- server 104 may maintain one or more private/public key pairs that may be used, for example, to encrypt, decrypt, sign, and/or verify different types of data.
- the illustrated private/public key pairs 202 ( 1 ) and 202 ( 2 ) include private key 204 ( 1 ), public key 206 ( 1 ), private key 204 ( 2 ), and public key 206 ( 2 ).
- Cookie data (D) 210 includes, for example, state information associated with a session between server 104 and client system 106 .
- the state information may include personal settings, shopping cart contents, and the like.
- Server 104 also generates or identifies a session key (K) 212 that can be used as an encryption key.
- session key (K) 212 is a randomly generated value that may expire after a configurable period of time. After one session key expires, server 104 may randomly generate a new session key.
- Cookie data (D) 210 is then encrypted using session key (K) 212 to generate encrypted cookie data K(D) 214 .
- a message authentication code (MAC) is applied to cookie data (D) and session key (K) to generate an authentication tag MAC(D,K) 216 .
- Any type of message authentication code may be used to generate the authentication tag, one example being a hash function-based message authentication code (HMAC).
- the authentication tag MAC(D,K) 216 may be generated prior to encrypting the cookie data (D). The authentication tag and the cookie data may then be encrypted together using the session key (K), to generated encrypted data K(D, MAC(D,K)).
- the authentication tag may be generated using a MAC key that differs from the session key (K).
- K session key
- the described implementation uses the session key(K) when generating the authentication tag, it is common cryptographic practice to use different keys for different purposes.
- a new key to be used for generating the authentication tag may be derived from the session key(K) according to any number of known key derivation techniques.
- Server 104 signs session key (K) 212 with private key 204 ( 1 ) to generate Sig(K) 218 .
- Session key (K) 212 is then combined with Sig(K) 218 and encrypted using public key 206 ( 2 ) to generate encrypted, signed key ESK 220 .
- a cookie 222 is then generated by combining key ID 1 202 ( 1 ), key ID 2 202 ( 2 ), ESK 220 , K(D) 214 , and MAC(D,K) 216 .
- Cookie 222 is then transmitted to client system 106 , as represented by arrow 224 .
- the cookie may include K(D, MAC(D,K)), which could later be decrypted to reveal cookie data (D) 210 and authentication tag MAC(D,K) 216 .
- Two private/public key pairs may be used due to the size of the data that is being signed and/or encrypted.
- the block size needed for encryption may be larger than the block size needed for signing.
- encrypted, signed key ESK 220 may be encrypted using public key 206 ( 1 ), resulting in a cookie that includes key ID 1 , but does not necessarily include key ID 2 .
- FIG. 3 illustrates exemplary processing that may be performed by a server 104 to decrypt and verify a received cookie.
- server 104 receives a cookie 302 from a client system 106
- server 104 parses the cookie 302 into a key IDI 304 , key ID 2 306 , an encrypted signed key (ESK) 308 , encrypted data K(D) 310 , and authentication tag MAC(D,K) 312 .
- ESK encrypted signed key
- Key IDI 304 is used to lookup a private/public key pair 314 that includes a private key 316 and a public key 318 .
- Key ID 2 306 is used to lookup a private/public key pair 320 that includes a private key 322 and a public key 324 .
- Private key 322 is then used to decrypt ESK 308 , resulting in decrypted ESK 326 , which includes signed key Sig(K) 328 and session key (K) 330 .
- Sig(K) is verified using public key 318 . If the verification failed, indicating that Sig(K) is not a valid signature of session key (K) using private key 316 , then the cookie is assumed to be invalid.
- the decrypted and verified session key (K) 330 is then used to decrypt K(D) 310 to reveal cookie data (D) 332 .
- the cookie data and the authentication tag may have been encrypted together, in which case, the cookie may be parsed into a key ID 1 304 , key ID 2 306 , an encrypted signed key (ESK) 308 , and encrypted data and authentication tag K(D, MAC(D,K)).
- the encrypted data and authentication tag K(D, MAC(D,K)) can then be decrypted using the decrypted and verified session key (K) 330 to identify cookie data (D) 332 and authentication tag MAC(D,K) 312 .
- a message authentication code (MAC) is then applied to cookie data (D) 332 and session key (K) 330 to generate verification MAC(D,K) 334 .
- Verification MAC(D,K) 334 is then compared to MAC(D,K) 312 to verify that the cookie data (D) 332 is not corrupt.
- the cookie data is successfully decrypted and verified and can be used to customize the session between server 104 and client system 106 .
- session key (K) 330 may include an expiration date/time. If the received session key has expired, then the server does not use the cookie, but rather establishes a connection with client system 106 that is not based on a state of a previous connection.
- the received cookie may include only one key ID, and the same private/public key pair may be used for decryption and verification of the session key and cookie data.
- FIG. 4 illustrates select components of an exemplary server 104 configured to enable scalable session management as described herein.
- Server 104 may be implemented as any form of computing or electronic device with any number and combination of differing components as described below with reference to the exemplary computing environment 700 shown in FIG. 7 .
- Server 104 includes one or more processors 402 , network interface 404 , and memory 406 .
- Network interface 404 enables server 104 to send and/or receive data over a network.
- One or more applications 408 , an operating system 410 , scalable session management module 412 , and session key cache 414 are stored in memory 406 and executed on processor(s) 402 .
- Application(s) 408 may include, for example, a web service 416 that enables user interaction with a website.
- Operating system 410 includes, among other components, a private/public key store 418 and cryptography module 420 .
- Private/public key store 418 is configured to maintain one or more private/public key pairs, each identified by a unique key ID.
- Cryptography module 420 is configured to perform various cryptographic functions, which may include, but are not limited to, private/public key encryption and decryption, private/public key signing and verifying, random value generation, symmetric key encryption and decryption, and authentication tag generation via a message authentication code.
- Scalable session management module 412 is configured to generate encrypted cookies and to decrypt and verify received cookies.
- Session key cache 414 is configured to maintain one or more session keys and an associated encrypted signed key (ESK). Session key cache 414 may also be configured to maintain an expiration date/time associated with a particular session key.
- expired session keys may be removed from the session key cache 414 using any number of techniques. For example, if a request is received that includes an expired key, the key may then be removed from the cache.
- the cache may be purged of expired keys iteratively, after a configurable number of requests are received.
- the cache may be purged of expired keys iteratively, after a configurable number of sessions keys have been added to the cache.
- Methods for scalable session management may be described in the general context of computer executable instructions.
- computer executable instructions include routines, programs, objects, components, data structures, procedures, and the like that perform particular functions or implement particular abstract data types.
- the methods may also be practiced in a distributed computing environment where functions are performed by remote processing devices that are linked through a communications network.
- computer executable instructions may be located in both local and remote computer storage media, including memory storage devices.
- FIGS. 5 and 6 illustrate exemplary methods for implementing scalable session management.
- the methods illustrated in FIGS. 5 and 6 are specific examples of scalable session management, and are not to be construed as limitations. Furthermore, it is recognized that various embodiments may implement any combination of the methods illustrated in FIGS. 5 and 6 or any combination of portions of the methods illustrated in FIGS. 5 and 6 .
- FIG. 5 illustrates an exemplary method 500 for generating an encrypted data cookie.
- the order in which the method is described is not intended to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement the method.
- the method can be implemented in any suitable hardware, software, firmware, or combination thereof.
- a server determines that a user has accessed the server. For example, referring to FIG. 4 , a user may have browsed to a website hosted by the server 104 and launched web service 416 .
- the server generates cookie data (D) associated with the current session.
- cookie data For example, web service 416 may generate data that represents the user's shopping cart contents on a web commerce website.
- the server determines whether or not a session key (K) is available. For example, one or more session keys may be maintained in session key cache 414 . If a valid session key is available in session key cache 414 (the “Yes” branch from block 506 ), then at block 516 , scalable session management module 412 identifies a valid session key (K) and associated encrypted signed key (ESK) (e.g., by pulling a valid record from session key cache 414 ). Processing then continues as described below with reference to block 518 .
- K session key
- ESK encrypted signed key
- server 104 determines whether a valid session key is currently available (the “No” branch from block 506 ). If a valid session key is not currently available (the “No” branch from block 506 ), then at block 508 , server 104 generates a new session key (K).
- scalable session management module 412 may call a random value generator component of cryptography module 420 to obtain a random value to be used as a session key (K).
- the server uses a private key to sign session key (K), generating a new value Sig(K).
- scalable session management module 412 may call a private key signature component of cryptography module 420 , specifying the session key (K) and a key ID (e.g., Key ID 1 202 ( 1 ), as illustrated in FIG. 2 ) associated with a private/public key pair maintained in public/private key store 418 .
- Cryptography module 420 then uses the private key associated with the specified key ID to sign the session key (K), and returns the result Sig(K).
- the server generates an encrypted signed key (ESK) by using a public key to encrypt a combination of (K) and Sig(K).
- scalable session management module 412 may call a public key encryption component of cryptography module 420 , specifying the session key (K), the signed session key Sig(K), and a key ID (e.g., Key ID 2 202 ( 2 ), as illustrated in FIG. 2 )associated with a public/private key pair maintained in public/private key store 418 .
- Cryptograhpy module 420 uses the public key associated with the specified key ID (e.g., Key ID 2 ) to encrypt (K+Sig(K)), and returns the result ESK.
- the same private/public key pair may be specified for signing the session key (block 510 ) and encrypting the signed session key (block 512 ).
- the server caches session key (K) and encrypted signed key ESK.
- scalable session management module 412 may add (K) and the associated ESK to session key cache 414 .
- the server encrypts cookie data (D) using session key (K).
- K session key
- scalable session management module 412 may call a symmetric key encryption component of cryptography module 420 , which returns encrypted cookie data K(D).
- the server generates an authentication tag MAC(D,K).
- scalable session management module 412 may call cryptography module 420 , specifying cookie data (D) and session key (K).
- Cryptography module 420 then applies a message authentication code to cookie data (D) and session key (K), and returns authentication tag MAC(D,K).
- the server generates a cookie.
- scalable session management module 412 combines key ID 1 , key ID 2 , ESK, K(D), and MAC(D,K).
- the generated cookie may have the format: (Key ID 1 , Key ID 2 , ESK, K(D), MAC(D,K)).
- the generated cookie may have the format: (Key ID, ESK, K(D), MAC(D,K)).
- authentication tag MAC(D,K) may be generated (as described above with reference to block 520 ) prior to encryption of the cookie data (D).
- the cookie data and the authentication tag may then be encrypted together using the session key (K), rather than the cookie data being encrypted alone, as described above with reference to block 518 .
- the server returns the generated cookie to the user.
- web service 416 may transmit the generated cookie over a network to a client system through which a user accessed the web service.
- FIG. 6 illustrates an exemplary method 600 for decrypting and verifying a received cookie.
- the order in which the method is described is not intended to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement the method.
- the method can be implemented in any suitable hardware, software, firmware, or combination thereof.
- a server receives a cookie from a user.
- a user may access a web service 416 from which the user previously received a cookie.
- the server parses the cookie into key ID 1 , key ID 2 , encrypted signed key (ESK), encrypted cookie data K(D) and authentication tag MAC(D,K).
- scalable session management module 412 may receive the cookie from web service 416 and parse the cookie.
- the server determines whether or not the ESK is currently cached. For example, scalable session management module 412 performs a lookup in session key cache 414 based on the ESK value that was parsed from the cookie. In an exemplary implementation, the ESK value may be found in the cache if the server that received the cookie is the same server that generated the cookie (see block 514 of FIG. 5 ) or if the server that received the cookie has previously received another cookie that was encrypted using the same session key.
- the server identifies a session key (K) from the cache based on the ESK. For example, scalable session management module 412 queries session key cache 414 using the ESK to determine the session key (K). Processing then continues as described below with reference to block 624 .
- the server identifies two public/private key pairs based on the key ID 1 and key ID 2 extracted from the cookie. For example, scalable session management module may query private/public key store 418 using key ID 1 and key ID 2 to identify the private/public key pairs.
- the server decrypts the ESK using the private key of the identified private/public key pair associated with key ID 2 .
- scalable session management module 412 may call a private key decryption component of cryptography module 420 , specifying ESK and the private key (or key ID 2 , which can be used to lookup the private key).
- Cryptography module 420 uses the private key to decrypt the ESK, returning the result to scalable session management module 412 .
- the server e.g., scalable session management module 412 parses the decrypted ESK to identify session key (K) and signed session key Sig(K).
- the server verifies Sig(K) using the public key associated with key ID 1 found in the cookie.
- scalable session management module 412 calls a signature component of cryptography module 420 , specifying session key (K), signature of the session key (Sign(K)) (both extracted from the decrypted ESK as described above with reference to blocks 612 and 614 ) and the public key (or key ID 1 , which can be used to lookup the public key in private/public key store 418 ).
- Cryptography module 420 verifies the signature using the specified public key.
- the server determines whether or not the signed session key was successfully verified. If the signature is invalid (the “No” branch from block 618 ), then at block 620 , scalable session management module generates an error message that directs web service 416 to not accept the cookie.
- scalable session management module caches ESK and (K) in session key cache 414 .
- the server decrypts K(D) using session key (K).
- scalable session management module 412 may call a symmetric key decryption component of cryptography module 420 , specifying K(D) and (K).
- Cryptography module 420 decrypts K(D) using K as the key, and returns cookie data (D) to scalable session management module 412 .
- the session key is used to decrypt the combination of the cookie data and the authentication tag. The result is then parsed to identify the cookie data (D) and the authentication tag MAC(D,K).
- the server verifies cookie data (D) by generating a authentication tag verification MAC(D,K).
- scalable session management module 412 may call cryptography module 420 , specifying cookie data (D) and session key (K).
- Cryptography module 420 then applies a message authentication code to cookie data (D) and session key (K), and returns authentication tag verification MAC(D,K).
- the server determines whether or not the values of MAC(D,K) and verified MAC(D,K) match. If the values do not match (the “No” branch from block 628 ), then at block 620 , scalable session management module 412 generates an error message that directs web service 416 to not accept the cookie.
- scalable session management module 412 sends cookie data (D) to web service 416 , indicating that the cookie data has been decrypted and verified.
- the received cookie may include only one key ID, rather than key ID 1 and key ID 2 .
- the same private/public key pair is used to decrypt and verify the session key and the cookie data.
- FIG. 7 illustrates an exemplary computing environment 700 within which scalable session management systems and methods, as well as the computing, network, and system architectures described herein, can be either fully or partially implemented.
- Exemplary computing environment 700 is only one example of a computing system and is not intended to suggest any limitation as to the scope of use or functionality of the architectures. Neither should the computing environment 700 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary computing environment 700 .
- the computer and network architectures in computing environment 700 can be implemented with numerous other general purpose or special purpose computing system environments or configurations.
- Examples of well known computing systems, environments, and/or configurations that may be suitable for use include, but are not limited to, personal computers, server computers, client devices, hand-held or laptop devices, microprocessor-based systems, multiprocessor systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, gaming consoles, distributed computing environments that include any of the above systems or devices, and the like.
- the computing environment 700 includes a general-purpose computing system in the form of a computing device 702 .
- the components of computing device 702 can include, but are not limited to, one or more processors 704 (e.g., any of microprocessors, controllers, and the like), a system memory 706 , and a system bus 708 that couples the various system components.
- the one or more processors 704 process various computer executable instructions to control the operation of computing device 702 and to communicate with other electronic and computing devices.
- the system bus 708 represents any number of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures.
- Computing environment 700 includes a variety of computer readable media which can be any media that is accessible by computing device 702 and includes both volatile and non-volatile media, removable and non-removable media.
- the system memory 706 includes computer readable media in the form of volatile memory, such as random access memory (RAM) 710 , and/or non-volatile memory, such as read only memory (ROM) 712 .
- RAM random access memory
- ROM read only memory
- a basic input/output system (BIOS) 714 maintains the basic routines that facilitate information transfer between components within computing device 702 , such as during start-up, and is stored in ROM 712 .
- BIOS basic input/output system
- RAM 710 typically contains data and/or program modules that are immediately accessible to and/or presently operated on by one or more of the processors 704 .
- Computing device 702 may include other removable/non-removable, volatile/non-volatile computer storage media.
- a hard disk drive 716 reads from and writes to a non-removable, non-volatile magnetic media (not shown)
- a magnetic disk drive 718 reads from and writes to a removable, non-volatile magnetic disk 720 (e.g., a “floppy disk”)
- an optical disk drive 722 reads from and/or writes to a removable, non-volatile optical disk 724 such as a CD-ROM, digital versatile disk (DVD), or any other type of optical media.
- DVD digital versatile disk
- the hard disk drive 716 , magnetic disk drive 718 , and optical disk drive 722 are each connected to the system bus 708 by one or more data media interfaces 726 .
- the disk drives and associated computer readable media provide non-volatile storage of computer readable instructions, data structures, program modules, and other data for computing device 702 .
- Any number of program modules can be stored on RAM 710 , ROM 712 , hard disk 716 , magnetic disk 720 , and/or optical disk 724 , including by way of example, an operating system 728 , one or more application programs 730 , other program modules 732 , and program data 734 .
- an operating system 728 may include one or more embodiments of the systems and methods described herein.
- Computing device 702 can include a variety of computer readable media identified as communication media.
- Communication media typically embodies computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media.
- modulated data signal refers to a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
- communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, other wireless media, and/or any combination thereof.
- a user can interface with computing device 702 via any number of different input devices such as a keyboard 736 and pointing device 738 (e.g., a “mouse”).
- Other input devices 740 may include a microphone, joystick, game pad, controller, satellite dish, serial port, scanner, and/or the like.
- input/output interfaces 742 are connected to the processors 704 via input/output interfaces 742 that are coupled to the system bus 708 , but may be connected by other interface and bus structures, such as a parallel port, game port, and/or a universal serial bus (USB).
- USB universal serial bus
- a display device 744 (or other type of monitor) can be connected to the system bus 708 via an interface, such as a video adapter 746 .
- other output peripheral devices can include components such as speakers (not shown) and a printer 748 which can be connected to computing device 702 via the input/output interfaces 742 .
- Computing device 702 can operate in a networked environment using logical connections to one or more remote computers, such as remote computing device 750 .
- remote computing device 750 can be a personal computer, portable computer, a server, a router, a network computer, a peer device or other common network node, and the like.
- the remote computing device 750 is illustrated as a portable computer that can include any number and combination of the different components, elements, and features described herein relative to computing device 702 .
- Logical connections between computing device 702 and the remote computing device 750 are depicted as a local area network (LAN) 752 and a general wide area network (WAN) 754 .
- LAN local area network
- WAN wide area network
- Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet.
- the computing device 702 is connected to a local network 752 via a network interface or adapter 756 .
- the computing device 702 When implemented in a WAN networking environment, the computing device 702 typically includes a modem 758 or other means for establishing communications over the wide area network 754 .
- the modem 758 can be internal or external to computing device 702 , and can be connected to the system bus 708 via the input/output interfaces 742 or other appropriate mechanisms.
- the illustrated network connections are merely exemplary and other means of establishing communication link(s) between the computing devices 702 and 750 can be utilized.
- program modules depicted relative to the computing device 702 may be stored in a remote memory storage device.
- remote application programs 760 are maintained with a memory device of remote computing device 750 .
- application programs and other executable program components, such as operating system 728 are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the computing device 702 , and are executed by the one or more processors 704 of the computing device 702 .
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Power Engineering (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
Description
- This invention relates to session management, and more specifically, to scalable session management.
- When a user browses to a website, the website can return data, known as a cookie, that is stored on the user's computer, and then sent back to the server when the user later browses to the same website. The cookie can be used by the website to establish a state associated with the user. For example, with a website through which a user can make purchases, a cookie may be used to maintain a list of items that are in the user's shopping cart. For example, a user may visit the website, add things to their shopping cart, and leave the website. When the user returns to the website, the previously added items are still in the user's shopping cart, based on data stored in a cookie. Because cookies may contain sensitive and/or personal data (e.g., data for providing access to a bank account), it is important that cookies be protected. Cookies are typically signed and/or encrypted to protect the data. Furthermore, to increase security, keys that are used to sign and/or encrypt cookies should be securely stored and frequently changed.
- Many websites are implemented using a server farm environment, in which the load is balanced across multiple, independent server systems. When a user accesses a particular website that is available via the server farm, the user may actually be accessing any of the server systems that are part of the server farm. Accordingly, for cookies to be effective, each server system should be able to receive and use a cookie from a user, even if the server that receives the cookie is not the server that generated the cookie. To accomplish this, secure, frequently changed keys that can be used to decrypt and/or verify received cookies should be available across multiple, independent server systems.
- Accordingly, a need exists for a technique for automatically making symmetric keys accessible to multiple, independent server systems.
- Scalable session management is described herein.
- The techniques described herein enable multiple severs with the same private/public key pairs to derive the same symmetric keys. Public key management, which is relatively easy to manage across multiple servers using, for example, widespread hardware support, is combined with the efficiency of symmetric cryptography, enabling an arbitrary combination of signature and encryption algorithms.
- In the described exemplary implementation, one or more private/public key pairs are installed on multiple servers in a server farm. When a cookie is generated by one of the servers for a particular client, the cookie data is encrypted using a session key, which may be randomly generated. The session key is then signed and encrypted using one or more of the private/public key pairs and transmitted to the client along with the encrypted cookie data. When the same client establishes a connection with any of the servers in the server farm and sends the cookie, the server uses the private/public key pair(s) to decrypt and verify the session key that was included with the cookie. Once verified, the session key is then used to decrypt the cookie data.
- In an exemplary implementation, the first server also applies a message authentication code (MAC) to the cookie data and the session key to generate an authentication tag that can later be used to authenticate the decrypted cookie data.
- A session key may also have an associated expiration date/time, after which the any cookie generated using the session key is no longer valid. Session keys may be cached by one or more servers in the server farm, and expired session keys may be purged from the cache periodically. For example, an expired session key may be purged from the cache when a cookie including the expired session key is received. Alternatively, the cache may be purged of expired session keys iteratively according to a configured time schedule, after a configured number of cookies have been received, and/or after a configured number of session keys have been added to the cache.
- The same numbers are used throughout the drawings to reference like features and components.
-
FIG. 1 is a pictorial diagram illustrating an exemplary network environment in which scalable session management may be implemented. -
FIG. 2 is a block diagram illustrating exemplary generation of a session cookie. -
FIG. 3 is a block diagram illustrating decryption and verification of a received session cookie. -
FIG. 4 is a block diagram of selected components of an exemplary server configured to enable scalable session management. -
FIG. 5 is a flow diagram of an exemplary method for generating an encrypted session cookie. -
FIG. 6 is a flow diagram of an exemplary method for decrypting and verifying a received cookie. -
FIG. 7 is a pictorial/block diagram of exemplary computing systems, devices, and components in an environment in which scalable session management may be implemented. - The following discussion is directed to scalable session management. In many client-server systems, data associated with a particular session may be generated by the server and stored on the client. This data is commonly referred to as a “cookie”. The cookie may later be sent back to the server, for example, to enable the state of the previous session to be recreated. Because cookies may include sensitive data (e.g., a cookie may be associated with a user's bank account information), it is important that the confidentiality and integrity of cookies be maintained. Cookie confidentiality ensures that the data stored in a cookie cannot be easily determined, while cookie integrity ensures that the data stored in a cookie cannot be tampered with. In the described exemplary implementation, confidentiality is achieved by encrypting the data to be stored in the cookie; integrity is achieved by signing a key used to encrypt the cookie data and applying a message authentication code to the cookie data. In this way, the cookie data and the encryption key can both be verified.
- To enable multiple, independent server systems to be able to decrypt and/or verify received data (e.g., a cookie), an encrypted symmetric key is carried with an encrypted session token. When a server receives an encrypted token with an encrypted symmetric key, the server decrypts the encrypted symmetric key, which can then be used to decrypt the encrypted token.
- While features of scalable session management can be implemented in any number of different computing environments, they are described in the context of the following exemplary implementations.
-
FIG. 1 illustrates an exemplary network environment in which scalable session management may be implemented. In the illustrated example,server farm 102 includes multiple independent servers 104(1), 104(2), . . . (N).Client system 106 communicates withserver farm 102 over anetwork 108, such as the Internet. For example,client system 106 may utilize a web browser to access a website provided byserver farm 102. In the illustrated example,client system 106 accesses the website via server 104(1), as represented byarrow 110. Server 104(1) returns an encrypted cookie, as represented byarrow 112. At a later time,client system 106 accesses the website again, but this time via server 104(N). As represented byarrow 114, the cookie that was generated by server 104(1) is transmitted to server 104(N), which utilizes the data in the cookie, for example, to re-establish a website state that the user experienced in a previous interaction with the website. Anetwork server 104 and/orclient system 106 may be implemented as any form of computing or electronic device with any number and combination of differing components as described below with reference to theexemplary computing environment 700 shown inFIG. 7 . -
FIG. 2 illustrates exemplary processing that may be performed by aserver 104 to generate a cookie.Server 104 maintains private/public key pairs, two of which are identified inFIG. 2 by key ID1 202(1) and key ID2 202(2). In an exemplary implementation,server 104 may maintain one or more private/public key pairs that may be used, for example, to encrypt, decrypt, sign, and/or verify different types of data. The illustrated private/public key pairs 202(1) and 202(2) include private key 204(1), public key 206 (1), private key 204(2), and public key 206(2). - When
client system 106contacts server 104, as represented byarrow 208,server 104 generates cookie data (D) 210. Cookie data (D) 210 includes, for example, state information associated with a session betweenserver 104 andclient system 106. The state information may include personal settings, shopping cart contents, and the like.Server 104 also generates or identifies a session key (K) 212 that can be used as an encryption key. In an exemplary implementation, session key (K) 212 is a randomly generated value that may expire after a configurable period of time. After one session key expires,server 104 may randomly generate a new session key. - Cookie data (D) 210 is then encrypted using session key (K) 212 to generate encrypted cookie data K(D) 214. A message authentication code (MAC) is applied to cookie data (D) and session key (K) to generate an authentication tag MAC(D,K) 216. Any type of message authentication code may be used to generate the authentication tag, one example being a hash function-based message authentication code (HMAC).
- In an alternate implementation, the authentication tag MAC(D,K) 216 may be generated prior to encrypting the cookie data (D). The authentication tag and the cookie data may then be encrypted together using the session key (K), to generated encrypted data K(D, MAC(D,K)).
- In another alternate implementation, the authentication tag may be generated using a MAC key that differs from the session key (K). Although the described implementation uses the session key(K) when generating the authentication tag, it is common cryptographic practice to use different keys for different purposes. As one example, a new key to be used for generating the authentication tag may be derived from the session key(K) according to any number of known key derivation techniques.
-
Server 104 signs session key (K) 212 with private key 204(1) to generate Sig(K) 218. Session key (K) 212 is then combined with Sig(K) 218 and encrypted using public key 206(2) to generate encrypted, signedkey ESK 220. - A
cookie 222 is then generated by combining key ID1 202(1), key ID2 202(2),ESK 220, K(D) 214, and MAC(D,K) 216.Cookie 222 is then transmitted toclient system 106, as represented byarrow 224. If the authentication tag is encrypted with the cookie data, the cookie may include K(D, MAC(D,K)), which could later be decrypted to reveal cookie data (D) 210 and authentication tag MAC(D,K) 216. - Two private/public key pairs may be used due to the size of the data that is being signed and/or encrypted. For example, the block size needed for encryption may be larger than the block size needed for signing. However, in an alternate implementation, encrypted, signed
key ESK 220 may be encrypted using public key 206(1), resulting in a cookie that includes key ID1, but does not necessarily include key ID2. -
FIG. 3 illustrates exemplary processing that may be performed by aserver 104 to decrypt and verify a received cookie. Whenserver 104 receives acookie 302 from aclient system 106,server 104 parses thecookie 302 into akey IDI 304,key ID2 306, an encrypted signed key (ESK) 308, encrypted data K(D) 310, and authentication tag MAC(D,K) 312. -
Key IDI 304 is used to lookup a private/publickey pair 314 that includes aprivate key 316 and apublic key 318.Key ID2 306 is used to lookup a private/publickey pair 320 that includes aprivate key 322 and apublic key 324.Private key 322 is then used to decryptESK 308, resulting in decryptedESK 326, which includes signed key Sig(K) 328 and session key (K) 330. To verify that the session key in the cookie was not tampered with, Sig(K) is verified usingpublic key 318. If the verification failed, indicating that Sig(K) is not a valid signature of session key (K) usingprivate key 316, then the cookie is assumed to be invalid. - The decrypted and verified session key (K) 330 is then used to decrypt K(D) 310 to reveal cookie data (D) 332. As described above with reference to
FIG. 2 , in an alternate implementation, the cookie data and the authentication tag may have been encrypted together, in which case, the cookie may be parsed into akey ID1 304,key ID2 306, an encrypted signed key (ESK) 308, and encrypted data and authentication tag K(D, MAC(D,K)). The encrypted data and authentication tag K(D, MAC(D,K)) can then be decrypted using the decrypted and verified session key (K) 330 to identify cookie data (D) 332 and authentication tag MAC(D,K) 312. - A message authentication code (MAC) is then applied to cookie data (D) 332 and session key (K) 330 to generate verification MAC(D,K) 334. Verification MAC(D,K) 334 is then compared to MAC(D,K) 312 to verify that the cookie data (D) 332 is not corrupt.
- If verifications of Sig(K) MAC(D,K) are successful, then the cookie data is successfully decrypted and verified and can be used to customize the session between
server 104 andclient system 106. - In an exemplary implementation, session key (K) 330 may include an expiration date/time. If the received session key has expired, then the server does not use the cookie, but rather establishes a connection with
client system 106 that is not based on a state of a previous connection. - Furthermore, as described above with reference to
FIG. 2 , in an alternate implementation, the received cookie may include only one key ID, and the same private/public key pair may be used for decryption and verification of the session key and cookie data. -
FIG. 4 illustrates select components of anexemplary server 104 configured to enable scalable session management as described herein.Server 104 may be implemented as any form of computing or electronic device with any number and combination of differing components as described below with reference to theexemplary computing environment 700 shown inFIG. 7 . -
Server 104 includes one ormore processors 402,network interface 404, andmemory 406.Network interface 404 enablesserver 104 to send and/or receive data over a network. One ormore applications 408, anoperating system 410, scalablesession management module 412, and sessionkey cache 414 are stored inmemory 406 and executed on processor(s) 402. Application(s) 408 may include, for example, aweb service 416 that enables user interaction with a website. -
Operating system 410 includes, among other components, a private/public key store 418 andcryptography module 420. Private/public key store 418 is configured to maintain one or more private/public key pairs, each identified by a unique key ID.Cryptography module 420 is configured to perform various cryptographic functions, which may include, but are not limited to, private/public key encryption and decryption, private/public key signing and verifying, random value generation, symmetric key encryption and decryption, and authentication tag generation via a message authentication code. - Scalable
session management module 412 is configured to generate encrypted cookies and to decrypt and verify received cookies. Sessionkey cache 414 is configured to maintain one or more session keys and an associated encrypted signed key (ESK). Sessionkey cache 414 may also be configured to maintain an expiration date/time associated with a particular session key. In such an implementation, expired session keys may be removed from the sessionkey cache 414 using any number of techniques. For example, if a request is received that includes an expired key, the key may then be removed from the cache. In another implementation, the cache may be purged of expired keys iteratively, after a configurable number of requests are received. In yet another implementation, the cache may be purged of expired keys iteratively, after a configurable number of sessions keys have been added to the cache. - Methods for scalable session management may be described in the general context of computer executable instructions. Generally, computer executable instructions include routines, programs, objects, components, data structures, procedures, and the like that perform particular functions or implement particular abstract data types. The methods may also be practiced in a distributed computing environment where functions are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, computer executable instructions may be located in both local and remote computer storage media, including memory storage devices.
-
FIGS. 5 and 6 illustrate exemplary methods for implementing scalable session management. The methods illustrated inFIGS. 5 and 6 are specific examples of scalable session management, and are not to be construed as limitations. Furthermore, it is recognized that various embodiments may implement any combination of the methods illustrated inFIGS. 5 and 6 or any combination of portions of the methods illustrated inFIGS. 5 and 6 . -
FIG. 5 illustrates anexemplary method 500 for generating an encrypted data cookie. The order in which the method is described is not intended to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement the method. Furthermore, the method can be implemented in any suitable hardware, software, firmware, or combination thereof. - At
block 502, a server determines that a user has accessed the server. For example, referring toFIG. 4 , a user may have browsed to a website hosted by theserver 104 and launchedweb service 416. - At
block 504, the server generates cookie data (D) associated with the current session. For example,web service 416 may generate data that represents the user's shopping cart contents on a web commerce website. - At
block 506, the server determines whether or not a session key (K) is available. For example, one or more session keys may be maintained in sessionkey cache 414. If a valid session key is available in session key cache 414 (the “Yes” branch from block 506), then atblock 516, scalablesession management module 412 identifies a valid session key (K) and associated encrypted signed key (ESK) (e.g., by pulling a valid record from session key cache 414). Processing then continues as described below with reference to block 518. - On the other hand, if a valid session key is not currently available (the “No” branch from block 506), then at
block 508,server 104 generates a new session key (K). For example, scalablesession management module 412 may call a random value generator component ofcryptography module 420 to obtain a random value to be used as a session key (K). - At
block 510, the server uses a private key to sign session key (K), generating a new value Sig(K). For example, scalablesession management module 412 may call a private key signature component ofcryptography module 420, specifying the session key (K) and a key ID (e.g., Key ID1 202(1), as illustrated inFIG. 2 ) associated with a private/public key pair maintained in public/private key store 418.Cryptography module 420 then uses the private key associated with the specified key ID to sign the session key (K), and returns the result Sig(K). - At
block 512, the server generates an encrypted signed key (ESK) by using a public key to encrypt a combination of (K) and Sig(K). For example, scalablesession management module 412 may call a public key encryption component ofcryptography module 420, specifying the session key (K), the signed session key Sig(K), and a key ID (e.g., Key ID2 202(2), as illustrated inFIG. 2 )associated with a public/private key pair maintained in public/private key store 418.Cryptograhpy module 420 then uses the public key associated with the specified key ID (e.g., Key ID2) to encrypt (K+Sig(K)), and returns the result ESK. In an alternate implementation, the same private/public key pair may be specified for signing the session key (block 510) and encrypting the signed session key (block 512). - At
block 514, the server caches session key (K) and encrypted signed key ESK. For example, scalablesession management module 412 may add (K) and the associated ESK to sessionkey cache 414. - At
block 518, the server encrypts cookie data (D) using session key (K). For example, scalablesession management module 412 may call a symmetric key encryption component ofcryptography module 420, which returns encrypted cookie data K(D). - At
block 520, the server generates an authentication tag MAC(D,K). For example, scalablesession management module 412 may callcryptography module 420, specifying cookie data (D) and session key (K).Cryptography module 420 then applies a message authentication code to cookie data (D) and session key (K), and returns authentication tag MAC(D,K). - At
block 522, the server generates a cookie. For example, scalablesession management module 412 combines key ID1, key ID2, ESK, K(D), and MAC(D,K). In an exemplary implementation, the generated cookie may have the format: (Key ID1, Key ID2, ESK, K(D), MAC(D,K)). In an alternate implementation in which a single private/public key pair is used to sign and encrypt the session key and the cookie data, the generated cookie may have the format: (Key ID, ESK, K(D), MAC(D,K)). - In another alternate implementation, authentication tag MAC(D,K) may be generated (as described above with reference to block 520) prior to encryption of the cookie data (D). The cookie data and the authentication tag may then be encrypted together using the session key (K), rather than the cookie data being encrypted alone, as described above with reference to block 518.
- At
block 524, the server returns the generated cookie to the user. For example,web service 416 may transmit the generated cookie over a network to a client system through which a user accessed the web service. -
FIG. 6 illustrates anexemplary method 600 for decrypting and verifying a received cookie. The order in which the method is described is not intended to be construed as a limitation, and any number of the described method blocks can be combined in any order to implement the method. Furthermore, the method can be implemented in any suitable hardware, software, firmware, or combination thereof. - At
block 602, a server receives a cookie from a user. For example, a user may access aweb service 416 from which the user previously received a cookie. - At
block 604, the server parses the cookie into key ID1, key ID2, encrypted signed key (ESK), encrypted cookie data K(D) and authentication tag MAC(D,K). For example, scalablesession management module 412 may receive the cookie fromweb service 416 and parse the cookie. - At
block 606, the server determines whether or not the ESK is currently cached. For example, scalablesession management module 412 performs a lookup in sessionkey cache 414 based on the ESK value that was parsed from the cookie. In an exemplary implementation, the ESK value may be found in the cache if the server that received the cookie is the same server that generated the cookie (seeblock 514 ofFIG. 5 ) or if the server that received the cookie has previously received another cookie that was encrypted using the same session key. - If the ESK is found in the cache (the “Yes” branch from block 606), then at
block 608, the server identifies a session key (K) from the cache based on the ESK. For example, scalablesession management module 412 queries sessionkey cache 414 using the ESK to determine the session key (K). Processing then continues as described below with reference to block 624. - If the ESK is not found in the cache (the “No” branch from block 606), then at
block 610, the server identifies two public/private key pairs based on the key ID1 and key ID2 extracted from the cookie. For example, scalable session management module may query private/public key store 418 using key ID1 and key ID2 to identify the private/public key pairs. - At
block 612, the server decrypts the ESK using the private key of the identified private/public key pair associated with key ID2. For example, scalablesession management module 412 may call a private key decryption component ofcryptography module 420, specifying ESK and the private key (or key ID2, which can be used to lookup the private key).Cryptography module 420 uses the private key to decrypt the ESK, returning the result to scalablesession management module 412. - At
block 614, the server (e.g., scalable session management module 412) parses the decrypted ESK to identify session key (K) and signed session key Sig(K). - At
block 616, the server verifies Sig(K) using the public key associated with key ID1 found in the cookie. For example, scalablesession management module 412 calls a signature component ofcryptography module 420, specifying session key (K), signature of the session key (Sign(K)) (both extracted from the decrypted ESK as described above with reference toblocks 612 and 614) and the public key (or key ID1, which can be used to lookup the public key in private/public key store 418).Cryptography module 420 verifies the signature using the specified public key. - At
block 618, the server determines whether or not the signed session key was successfully verified. If the signature is invalid (the “No” branch from block 618), then atblock 620, scalable session management module generates an error message that directsweb service 416 to not accept the cookie. - On the other hand, if the signature is valid (the “Yes” branch from block 618), then at
block 622, scalable session management module caches ESK and (K) in sessionkey cache 414. - At
block 624, the server decrypts K(D) using session key (K). For example, scalablesession management module 412 may call a symmetric key decryption component ofcryptography module 420, specifying K(D) and (K).Cryptography module 420 decrypts K(D) using K as the key, and returns cookie data (D) to scalablesession management module 412. In an alternate implementation in which the cookie data D and the authentication tag MAC(D,K) were encrypted together, the session key is used to decrypt the combination of the cookie data and the authentication tag. The result is then parsed to identify the cookie data (D) and the authentication tag MAC(D,K). - At
block 626, the server verifies cookie data (D) by generating a authentication tag verification MAC(D,K). For example, scalablesession management module 412 may callcryptography module 420, specifying cookie data (D) and session key (K).Cryptography module 420 then applies a message authentication code to cookie data (D) and session key (K), and returns authentication tag verification MAC(D,K). - At
block 628, the server determines whether or not the values of MAC(D,K) and verified MAC(D,K) match. If the values do not match (the “No” branch from block 628), then atblock 620, scalablesession management module 412 generates an error message that directsweb service 416 to not accept the cookie. - On the other hand, if the values do match (the “Yes” branch from block 628), then at
block 630, scalablesession management module 412 sends cookie data (D) toweb service 416, indicating that the cookie data has been decrypted and verified. - In an alternate implementation, the received cookie may include only one key ID, rather than key ID1 and key ID2. In such an implementation, the same private/public key pair is used to decrypt and verify the session key and the cookie data.
-
FIG. 7 illustrates anexemplary computing environment 700 within which scalable session management systems and methods, as well as the computing, network, and system architectures described herein, can be either fully or partially implemented.Exemplary computing environment 700 is only one example of a computing system and is not intended to suggest any limitation as to the scope of use or functionality of the architectures. Neither should thecomputing environment 700 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in theexemplary computing environment 700. - The computer and network architectures in
computing environment 700 can be implemented with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use include, but are not limited to, personal computers, server computers, client devices, hand-held or laptop devices, microprocessor-based systems, multiprocessor systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, gaming consoles, distributed computing environments that include any of the above systems or devices, and the like. - The
computing environment 700 includes a general-purpose computing system in the form of acomputing device 702. The components ofcomputing device 702 can include, but are not limited to, one or more processors 704 (e.g., any of microprocessors, controllers, and the like), asystem memory 706, and asystem bus 708 that couples the various system components. The one ormore processors 704 process various computer executable instructions to control the operation ofcomputing device 702 and to communicate with other electronic and computing devices. Thesystem bus 708 represents any number of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, and a processor or local bus using any of a variety of bus architectures. -
Computing environment 700 includes a variety of computer readable media which can be any media that is accessible bycomputing device 702 and includes both volatile and non-volatile media, removable and non-removable media. Thesystem memory 706 includes computer readable media in the form of volatile memory, such as random access memory (RAM) 710, and/or non-volatile memory, such as read only memory (ROM) 712. A basic input/output system (BIOS) 714 maintains the basic routines that facilitate information transfer between components withincomputing device 702, such as during start-up, and is stored inROM 712.RAM 710 typically contains data and/or program modules that are immediately accessible to and/or presently operated on by one or more of theprocessors 704. -
Computing device 702 may include other removable/non-removable, volatile/non-volatile computer storage media. By way of example, ahard disk drive 716 reads from and writes to a non-removable, non-volatile magnetic media (not shown), amagnetic disk drive 718 reads from and writes to a removable, non-volatile magnetic disk 720 (e.g., a “floppy disk”), and anoptical disk drive 722 reads from and/or writes to a removable, non-volatileoptical disk 724 such as a CD-ROM, digital versatile disk (DVD), or any other type of optical media. In this example, thehard disk drive 716,magnetic disk drive 718, andoptical disk drive 722 are each connected to thesystem bus 708 by one or more data media interfaces 726. The disk drives and associated computer readable media provide non-volatile storage of computer readable instructions, data structures, program modules, and other data forcomputing device 702. - Any number of program modules can be stored on
RAM 710,ROM 712,hard disk 716,magnetic disk 720, and/oroptical disk 724, including by way of example, anoperating system 728, one ormore application programs 730,other program modules 732, andprogram data 734. Each ofsuch operating system 728, application program(s) 730,other program modules 732,program data 734, or any combination thereof, may include one or more embodiments of the systems and methods described herein. -
Computing device 702 can include a variety of computer readable media identified as communication media. Communication media typically embodies computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” refers to a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared, other wireless media, and/or any combination thereof. - A user can interface with
computing device 702 via any number of different input devices such as akeyboard 736 and pointing device 738 (e.g., a “mouse”). Other input devices 740 (not shown specifically) may include a microphone, joystick, game pad, controller, satellite dish, serial port, scanner, and/or the like. These and other input devices are connected to theprocessors 704 via input/output interfaces 742 that are coupled to thesystem bus 708, but may be connected by other interface and bus structures, such as a parallel port, game port, and/or a universal serial bus (USB). - A display device 744 (or other type of monitor) can be connected to the
system bus 708 via an interface, such as avideo adapter 746. In addition to thedisplay device 744, other output peripheral devices can include components such as speakers (not shown) and aprinter 748 which can be connected tocomputing device 702 via the input/output interfaces 742. -
Computing device 702 can operate in a networked environment using logical connections to one or more remote computers, such asremote computing device 750. By way of example,remote computing device 750 can be a personal computer, portable computer, a server, a router, a network computer, a peer device or other common network node, and the like. Theremote computing device 750 is illustrated as a portable computer that can include any number and combination of the different components, elements, and features described herein relative tocomputing device 702. - Logical connections between
computing device 702 and theremote computing device 750 are depicted as a local area network (LAN) 752 and a general wide area network (WAN) 754. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet. When implemented in a LAN networking environment, thecomputing device 702 is connected to alocal network 752 via a network interface oradapter 756. When implemented in a WAN networking environment, thecomputing device 702 typically includes amodem 758 or other means for establishing communications over thewide area network 754. Themodem 758 can be internal or external tocomputing device 702, and can be connected to thesystem bus 708 via the input/output interfaces 742 or other appropriate mechanisms. The illustrated network connections are merely exemplary and other means of establishing communication link(s) between thecomputing devices - In a networked environment, such as that illustrated with
computing environment 700, program modules depicted relative to thecomputing device 702, or portions thereof, may be stored in a remote memory storage device. By way of example,remote application programs 760 are maintained with a memory device ofremote computing device 750. For purposes of illustration, application programs and other executable program components, such asoperating system 728, are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of thecomputing device 702, and are executed by the one ormore processors 704 of thecomputing device 702. - Although embodiments of scalable session management have been described in language specific to structural features and/or methods, it is to be understood that the subject of the appended claims is not necessarily limited to the specific features or methods described. Rather, the specific features and methods are disclosed as exemplary implementations of scalable session management.
Claims (20)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/084,051 US7890634B2 (en) | 2005-03-18 | 2005-03-18 | Scalable session management |
US13/026,793 US8626929B2 (en) | 2005-03-18 | 2011-02-14 | Scalable session management using an encrypted session key |
US14/069,006 US9673984B2 (en) | 2005-03-18 | 2013-10-31 | Session key cache to maintain session keys |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/084,051 US7890634B2 (en) | 2005-03-18 | 2005-03-18 | Scalable session management |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/026,793 Continuation US8626929B2 (en) | 2005-03-18 | 2011-02-14 | Scalable session management using an encrypted session key |
Publications (2)
Publication Number | Publication Date |
---|---|
US20060212706A1 true US20060212706A1 (en) | 2006-09-21 |
US7890634B2 US7890634B2 (en) | 2011-02-15 |
Family
ID=37011740
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/084,051 Expired - Fee Related US7890634B2 (en) | 2005-03-18 | 2005-03-18 | Scalable session management |
US13/026,793 Expired - Lifetime US8626929B2 (en) | 2005-03-18 | 2011-02-14 | Scalable session management using an encrypted session key |
US14/069,006 Expired - Lifetime US9673984B2 (en) | 2005-03-18 | 2013-10-31 | Session key cache to maintain session keys |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/026,793 Expired - Lifetime US8626929B2 (en) | 2005-03-18 | 2011-02-14 | Scalable session management using an encrypted session key |
US14/069,006 Expired - Lifetime US9673984B2 (en) | 2005-03-18 | 2013-10-31 | Session key cache to maintain session keys |
Country Status (1)
Country | Link |
---|---|
US (3) | US7890634B2 (en) |
Cited By (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090060178A1 (en) * | 2007-08-30 | 2009-03-05 | Microsoft Corporation | Management system for web service developer keys |
US20090222665A1 (en) * | 2008-02-29 | 2009-09-03 | Alexander Brantley Sheehan | Non-interactive entity application proxy method and system |
US20090235343A1 (en) * | 2008-03-17 | 2009-09-17 | Alexander Brantley Sheehan | Resource server proxy method and system |
US20090235338A1 (en) * | 2008-03-11 | 2009-09-17 | Alexander Brantley Sheehan | Resource based non-interactive entity application proxy method and system |
US20090234954A1 (en) * | 2008-03-11 | 2009-09-17 | Alexander Brantley Sheehan | Selectable non-interactive entity application proxy method and system |
US20090328177A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Enabling private data feed |
US7650505B1 (en) * | 2005-06-17 | 2010-01-19 | Sun Microsystems, Inc. | Methods and apparatus for persistence of authentication and authorization for a multi-tenant internet hosted site using cookies |
US20100017596A1 (en) * | 2008-07-16 | 2010-01-21 | Disney Enterprises, Inc. | System and method for managing authentication cookie encryption keys |
DE102009052456A1 (en) * | 2009-11-09 | 2011-05-19 | Siemens Aktiengesellschaft | Method and system for accelerated decryption of cryptographically protected user data units |
US20110119367A1 (en) * | 2008-01-09 | 2011-05-19 | International Business Machines Corporation | Methods and Apparatus for Randomization of Periodic Behavior in Communication Network |
WO2012092261A3 (en) * | 2010-12-29 | 2012-11-15 | Citrix Systems, Inc. | Systems and methods for multi-level tagging of encrypted items for additional security and efficient encrypted item determination |
WO2013007682A1 (en) * | 2011-07-10 | 2013-01-17 | Blendology Limited | An electronic data sharing device and method of use |
US20130061057A1 (en) * | 2010-03-02 | 2013-03-07 | Eko India Financial Services Pvt. Ltd. | Authentication method and device |
US20140044262A1 (en) * | 2012-08-09 | 2014-02-13 | Cisco Technology, Inc. | Low Latency Encryption and Authentication in Optical Transport Networks |
US8943304B2 (en) | 2006-08-03 | 2015-01-27 | Citrix Systems, Inc. | Systems and methods for using an HTTP-aware client agent |
US20150082029A1 (en) * | 2013-09-13 | 2015-03-19 | Alex Volchok | Shared portal context session |
US20150121085A1 (en) * | 2012-03-31 | 2015-04-30 | Beijing Qihoo Technology Company Limited | Cookie Information Sharing Method and System |
US20150163064A1 (en) * | 2012-03-23 | 2015-06-11 | Vesa-Veikko Luukkala | Cryptographically authenticated communication |
US9069869B1 (en) | 2005-10-31 | 2015-06-30 | Intuit Inc. | Storing on a client device data provided by a user to an online application |
US9407608B2 (en) | 2005-05-26 | 2016-08-02 | Citrix Systems, Inc. | Systems and methods for enhanced client side policy |
US9621666B2 (en) | 2005-05-26 | 2017-04-11 | Citrix Systems, Inc. | Systems and methods for enhanced delta compression |
US20170132624A1 (en) * | 2015-11-11 | 2017-05-11 | Visa International Service Association | Browser extension with additional capabilities |
US9692725B2 (en) | 2005-05-26 | 2017-06-27 | Citrix Systems, Inc. | Systems and methods for using an HTTP-aware client agent |
WO2017132136A1 (en) * | 2016-01-26 | 2017-08-03 | Google Inc. | Secure connections for low-power devices |
US20170295154A1 (en) * | 2016-04-07 | 2017-10-12 | Gogo Llc | Systems and methods for authenticating applications to on-board services |
EP3407561A1 (en) * | 2017-05-25 | 2018-11-28 | Facebook, Inc. | Systems and methods for preventing sessions fixation over a domain portal |
US10146932B2 (en) | 2016-01-29 | 2018-12-04 | Google Llc | Device access revocation |
US20180357432A1 (en) * | 2017-06-07 | 2018-12-13 | Combined Conditional Access Development & Support, LLC | Determining a Session Key Using Session Data |
US10205709B2 (en) * | 2016-12-14 | 2019-02-12 | Visa International Service Association | Key pair infrastructure for secure messaging |
CN109347627A (en) * | 2018-09-19 | 2019-02-15 | 平安科技(深圳)有限公司 | Data encryption/decryption method, device, computer equipment and storage medium |
CN109409099A (en) * | 2018-09-03 | 2019-03-01 | 中国平安人寿保险股份有限公司 | Cookie data processing method, device, computer equipment and storage medium |
US10361852B2 (en) | 2017-03-08 | 2019-07-23 | Bank Of America Corporation | Secure verification system |
US10374808B2 (en) | 2017-03-08 | 2019-08-06 | Bank Of America Corporation | Verification system for creating a secure link |
US10425417B2 (en) | 2017-03-08 | 2019-09-24 | Bank Of America Corporation | Certificate system for verifying authorized and unauthorized secure sessions |
US10432595B2 (en) * | 2017-03-08 | 2019-10-01 | Bank Of America Corporation | Secure session creation system utililizing multiple keys |
US10454672B2 (en) * | 2017-05-25 | 2019-10-22 | Facebook, Inc. | Systems and methods for preventing session fixation over a domain portal |
CN110784480A (en) * | 2019-11-01 | 2020-02-11 | 华云数据有限公司 | Data transmission method, system, equipment and storage medium |
US10841088B2 (en) * | 2018-05-10 | 2020-11-17 | Oracle International Corporation | Secure credential generation and validation |
CN112636917A (en) * | 2020-12-07 | 2021-04-09 | 天津津航计算技术研究所 | Communication encryption method of distributed control system |
US11042610B1 (en) * | 2017-10-04 | 2021-06-22 | Xilinx, Inc. | Enabling integrity and authenticity of design data |
US20220006795A1 (en) * | 2020-01-29 | 2022-01-06 | Citrix Systems, Inc. | Secure message passing using semi-trusted intermediaries |
US11368292B2 (en) * | 2020-07-16 | 2022-06-21 | Salesforce.Com, Inc. | Securing data with symmetric keys generated using inaccessible private keys |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8813181B2 (en) * | 2005-03-07 | 2014-08-19 | Taun Eric Willis | Electronic verification systems |
US7890634B2 (en) * | 2005-03-18 | 2011-02-15 | Microsoft Corporation | Scalable session management |
US20070005779A1 (en) * | 2005-06-30 | 2007-01-04 | Ebay Inc. | Origin aware cookie verification systems and methods |
US8495380B2 (en) * | 2006-06-06 | 2013-07-23 | Red Hat, Inc. | Methods and systems for server-side key generation |
US20080133365A1 (en) * | 2006-11-21 | 2008-06-05 | Benjamin Sprecher | Targeted Marketing System |
US7953642B2 (en) | 2007-01-29 | 2011-05-31 | Google Inc. | On-line payment transactions |
WO2009076073A2 (en) * | 2007-12-05 | 2009-06-18 | Google Inc. | On-line payment transactions |
US9059979B2 (en) * | 2009-02-27 | 2015-06-16 | Blackberry Limited | Cookie verification methods and apparatus for use in providing application services to communication devices |
US20110265151A1 (en) * | 2010-04-22 | 2011-10-27 | John Furlan | Method of adding a client device or service to a wireless network |
JP2012146083A (en) * | 2011-01-11 | 2012-08-02 | Fujitsu Ltd | Session management system, session management apparatus, server device and session management method |
US8448233B2 (en) * | 2011-08-25 | 2013-05-21 | Imperva, Inc. | Dealing with web attacks using cryptographically signed HTTP cookies |
US9118619B2 (en) | 2011-11-07 | 2015-08-25 | Qualcomm Incorported | Prevention of cross site request forgery attacks by conditional use cookies |
JP5795453B2 (en) | 2012-04-18 | 2015-10-14 | グーグル・インコーポレーテッド | Payment transaction processing without secure elements |
CN103258350A (en) * | 2013-03-28 | 2013-08-21 | 广东欧珀移动通信有限公司 | A method and device for displaying 3D images |
JP6546100B2 (en) * | 2014-02-17 | 2019-07-17 | 富士通株式会社 | Service providing method, service request method, information processing apparatus, and client apparatus |
CN103825733A (en) * | 2014-02-28 | 2014-05-28 | 华为技术有限公司 | Communication method, device and system based on combined public key cryptography system |
WO2015148848A1 (en) * | 2014-03-28 | 2015-10-01 | Vivint, Inc. | Anti-takeover systems and methods for network attached peripherals |
US20160241536A1 (en) * | 2015-02-13 | 2016-08-18 | Wepay, Inc. | System and methods for user authentication across multiple domains |
CN105634742B (en) * | 2015-12-28 | 2019-03-05 | 飞天诚信科技股份有限公司 | A kind of method and intelligent cipher key equipment of consult session key |
FI127930B (en) * | 2017-02-24 | 2019-05-31 | Piceasoft Oy | Method and system for transferring data between devices |
US10645177B2 (en) | 2017-04-19 | 2020-05-05 | International Business Machines Corporation | Cookie based session timeout detection and management |
US11463439B2 (en) | 2017-04-21 | 2022-10-04 | Qwerx Inc. | Systems and methods for device authentication and protection of communication on a system on chip |
US10855694B2 (en) * | 2017-05-30 | 2020-12-01 | Keysight Technologies Singapore (Sales) Pte. Ltd. | Methods, systems, and computer readable media for monitoring encrypted packet flows within a virtual network environment |
US10992652B2 (en) | 2017-08-25 | 2021-04-27 | Keysight Technologies Singapore (Sales) Pte. Ltd. | Methods, systems, and computer readable media for monitoring encrypted network traffic flows |
US10903985B2 (en) | 2017-08-25 | 2021-01-26 | Keysight Technologies Singapore (Sales) Pte. Ltd. | Monitoring encrypted network traffic flows in a virtual environment using dynamic session key acquisition techniques |
WO2019126823A1 (en) * | 2017-12-24 | 2019-06-27 | InfoSci, LLC | Systems and methods for dynamic authentication and communication protection using an ephemeral shared data set |
US10893030B2 (en) | 2018-08-10 | 2021-01-12 | Keysight Technologies, Inc. | Methods, systems, and computer readable media for implementing bandwidth limitations on specific application traffic at a proxy element |
EP3913880B1 (en) * | 2020-05-19 | 2024-10-02 | Continental Automotive Technologies GmbH | Method of and system for secure data export from an automotive engine control unit |
WO2024228716A2 (en) | 2022-07-11 | 2024-11-07 | Qwerx Inc. | Systems and methods for direct random number generation from quantum random events |
US12238202B2 (en) | 2023-01-10 | 2025-02-25 | Qwerx Inc. | Systems and methods for continuous generation and management of ephemeral cryptographic keys |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020165912A1 (en) * | 2001-02-25 | 2002-11-07 | Storymail, Inc. | Secure certificate and system and method for issuing and using same |
US20050027985A1 (en) * | 1999-04-09 | 2005-02-03 | General Instrument Corporation | Internet protocol telephony security architecture |
US6938085B1 (en) * | 1999-09-24 | 2005-08-30 | Sun Microsystems, Inc. | Mechanism for enabling session information to be shared across multiple processes |
US6985953B1 (en) * | 1998-11-30 | 2006-01-10 | George Mason University | System and apparatus for storage and transfer of secure data on web |
US7346775B2 (en) * | 2002-05-10 | 2008-03-18 | Rsa Security Inc. | System and method for authentication of users and web sites |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5917911A (en) * | 1997-01-23 | 1999-06-29 | Motorola, Inc. | Method and system for hierarchical key access and recovery |
US6125185A (en) * | 1997-05-27 | 2000-09-26 | Cybercash, Inc. | System and method for encryption key generation |
US6199113B1 (en) * | 1998-04-15 | 2001-03-06 | Sun Microsystems, Inc. | Apparatus and method for providing trusted network security |
US6609198B1 (en) * | 1999-08-05 | 2003-08-19 | Sun Microsystems, Inc. | Log-on service providing credential level change without loss of session continuity |
US6734886B1 (en) * | 1999-12-21 | 2004-05-11 | Personalpath Systems, Inc. | Method of customizing a browsing experience on a world-wide-web site |
US6954799B2 (en) * | 2000-02-01 | 2005-10-11 | Charles Schwab & Co., Inc. | Method and apparatus for integrating distributed shared services system |
US7478434B1 (en) * | 2000-05-31 | 2009-01-13 | International Business Machines Corporation | Authentication and authorization protocol for secure web-based access to a protected resource |
US7024552B1 (en) * | 2000-08-04 | 2006-04-04 | Hewlett-Packard Development Company, L.P. | Location authentication of requests to a web server system linked to a physical entity |
US20030021417A1 (en) * | 2000-10-20 | 2003-01-30 | Ognjen Vasic | Hidden link dynamic key manager for use in computer systems with database structure for storage of encrypted data and method for storage and retrieval of encrypted data |
US20030037237A1 (en) | 2001-04-09 | 2003-02-20 | Jean-Paul Abgrall | Systems and methods for computer device authentication |
US7769845B2 (en) * | 2001-05-04 | 2010-08-03 | Whale Communications Ltd | Method and system for terminating an authentication session upon user sign-off |
US20030110266A1 (en) * | 2001-12-10 | 2003-06-12 | Cysive, Inc. | Apparatus and method of using session state data across sessions |
US7213145B2 (en) * | 2002-01-10 | 2007-05-01 | Avaya Technology Corp. | Method and apparatus for secure internet protocol communication in a call processing system |
US6804777B2 (en) * | 2002-05-15 | 2004-10-12 | Threatguard, Inc. | System and method for application-level virtual private network |
WO2005006204A1 (en) * | 2003-07-11 | 2005-01-20 | Nippon Telegraph And Telephone Corporation | Database access control method, database access controller, agent processing server, database access control program, and medium recording the program |
US20050050455A1 (en) * | 2003-08-29 | 2005-03-03 | Yee Sunny K. | Method and apparatus for supporting object caching in a web presentation architecture |
US20050076103A1 (en) * | 2003-09-22 | 2005-04-07 | International Business Machines Corporation | Real time web session affinity identification and user bonding |
DE60319542T2 (en) * | 2003-11-07 | 2009-04-02 | Harman Becker Automotive Systems Gmbh | Methods and apparatus for access control to encrypted data services for an entertainment and information processing device in a vehicle |
US7535905B2 (en) * | 2004-03-31 | 2009-05-19 | Microsoft Corporation | Signing and validating session initiation protocol routing headers |
US7475152B2 (en) * | 2004-09-20 | 2009-01-06 | International Business Machines Corporation | Approach to provide self-protection function to web content at client side |
US7890634B2 (en) * | 2005-03-18 | 2011-02-15 | Microsoft Corporation | Scalable session management |
-
2005
- 2005-03-18 US US11/084,051 patent/US7890634B2/en not_active Expired - Fee Related
-
2011
- 2011-02-14 US US13/026,793 patent/US8626929B2/en not_active Expired - Lifetime
-
2013
- 2013-10-31 US US14/069,006 patent/US9673984B2/en not_active Expired - Lifetime
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6985953B1 (en) * | 1998-11-30 | 2006-01-10 | George Mason University | System and apparatus for storage and transfer of secure data on web |
US20050027985A1 (en) * | 1999-04-09 | 2005-02-03 | General Instrument Corporation | Internet protocol telephony security architecture |
US6938085B1 (en) * | 1999-09-24 | 2005-08-30 | Sun Microsystems, Inc. | Mechanism for enabling session information to be shared across multiple processes |
US20020165912A1 (en) * | 2001-02-25 | 2002-11-07 | Storymail, Inc. | Secure certificate and system and method for issuing and using same |
US7346775B2 (en) * | 2002-05-10 | 2008-03-18 | Rsa Security Inc. | System and method for authentication of users and web sites |
Cited By (77)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9407608B2 (en) | 2005-05-26 | 2016-08-02 | Citrix Systems, Inc. | Systems and methods for enhanced client side policy |
US9621666B2 (en) | 2005-05-26 | 2017-04-11 | Citrix Systems, Inc. | Systems and methods for enhanced delta compression |
US9692725B2 (en) | 2005-05-26 | 2017-06-27 | Citrix Systems, Inc. | Systems and methods for using an HTTP-aware client agent |
US7650505B1 (en) * | 2005-06-17 | 2010-01-19 | Sun Microsystems, Inc. | Methods and apparatus for persistence of authentication and authorization for a multi-tenant internet hosted site using cookies |
US9069869B1 (en) | 2005-10-31 | 2015-06-30 | Intuit Inc. | Storing on a client device data provided by a user to an online application |
US8943304B2 (en) | 2006-08-03 | 2015-01-27 | Citrix Systems, Inc. | Systems and methods for using an HTTP-aware client agent |
US9948608B2 (en) | 2006-08-03 | 2018-04-17 | Citrix Systems, Inc. | Systems and methods for using an HTTP-aware client agent |
US20090060178A1 (en) * | 2007-08-30 | 2009-03-05 | Microsoft Corporation | Management system for web service developer keys |
US8290152B2 (en) * | 2007-08-30 | 2012-10-16 | Microsoft Corporation | Management system for web service developer keys |
US8230082B2 (en) * | 2008-01-09 | 2012-07-24 | International Business Machines Corporation | Methods and apparatus for randomization of periodic behavior in communication network |
US20110119367A1 (en) * | 2008-01-09 | 2011-05-19 | International Business Machines Corporation | Methods and Apparatus for Randomization of Periodic Behavior in Communication Network |
US8806601B2 (en) | 2008-02-29 | 2014-08-12 | International Business Machines Corporation | Non-interactive entity application proxy method and system |
US20090222665A1 (en) * | 2008-02-29 | 2009-09-03 | Alexander Brantley Sheehan | Non-interactive entity application proxy method and system |
US8930550B2 (en) | 2008-03-11 | 2015-01-06 | International Business Machines Corporation | Selectable non-interactive entity application proxy method and system |
US8176540B2 (en) * | 2008-03-11 | 2012-05-08 | International Business Machines Corporation | Resource based non-interactive entity application proxy method and system |
US20090234954A1 (en) * | 2008-03-11 | 2009-09-17 | Alexander Brantley Sheehan | Selectable non-interactive entity application proxy method and system |
US20090235338A1 (en) * | 2008-03-11 | 2009-09-17 | Alexander Brantley Sheehan | Resource based non-interactive entity application proxy method and system |
US8046826B2 (en) * | 2008-03-17 | 2011-10-25 | International Business Machines Corporation | Resource server proxy method and system |
US20090235343A1 (en) * | 2008-03-17 | 2009-09-17 | Alexander Brantley Sheehan | Resource server proxy method and system |
US8719912B2 (en) * | 2008-06-27 | 2014-05-06 | Microsoft Corporation | Enabling private data feed |
US20090328177A1 (en) * | 2008-06-27 | 2009-12-31 | Microsoft Corporation | Enabling private data feed |
US20100017596A1 (en) * | 2008-07-16 | 2010-01-21 | Disney Enterprises, Inc. | System and method for managing authentication cookie encryption keys |
US8719572B2 (en) * | 2008-07-16 | 2014-05-06 | Disney Enterprises, Inc. | System and method for managing authentication cookie encryption keys |
EP2499774B1 (en) * | 2009-11-09 | 2017-04-12 | Siemens Aktiengesellschaft | Method and system for the accelerated decryption of cryptographically protected user data units |
DE102009052456A1 (en) * | 2009-11-09 | 2011-05-19 | Siemens Aktiengesellschaft | Method and system for accelerated decryption of cryptographically protected user data units |
US9571273B2 (en) | 2009-11-09 | 2017-02-14 | Siemens Aktiengesellschaft | Method and system for the accelerated decryption of cryptographically protected user data units |
US20130061057A1 (en) * | 2010-03-02 | 2013-03-07 | Eko India Financial Services Pvt. Ltd. | Authentication method and device |
US9277403B2 (en) * | 2010-03-02 | 2016-03-01 | Eko India Financial Services Pvt. Ltd. | Authentication method and device |
US20150067322A1 (en) * | 2010-12-29 | 2015-03-05 | Citrix Systems | Systems and methods for multi-level tagging of encrypted items for additional security and efficient encrypted item determination |
WO2012092261A3 (en) * | 2010-12-29 | 2012-11-15 | Citrix Systems, Inc. | Systems and methods for multi-level tagging of encrypted items for additional security and efficient encrypted item determination |
US9819647B2 (en) * | 2010-12-29 | 2017-11-14 | Citrix Systems, Inc. | Systems and methods for multi-level tagging of encrypted items for additional security and efficient encrypted item determination |
US8862870B2 (en) | 2010-12-29 | 2014-10-14 | Citrix Systems, Inc. | Systems and methods for multi-level tagging of encrypted items for additional security and efficient encrypted item determination |
CN103392320A (en) * | 2010-12-29 | 2013-11-13 | 思杰系统有限公司 | Systems and methods for multi-level tagging of encrypted items for additional security and efficient encrypted item determination |
CN103392320B (en) * | 2010-12-29 | 2016-08-31 | 思杰系统有限公司 | Encrypted item is carried out the system and method that multilamellar labelling determines to provide extra safely effectively encrypted item |
WO2013007682A1 (en) * | 2011-07-10 | 2013-01-17 | Blendology Limited | An electronic data sharing device and method of use |
US9396345B2 (en) | 2011-07-10 | 2016-07-19 | Blendology Limited | Electronic data sharing device and method of use |
US20150163064A1 (en) * | 2012-03-23 | 2015-06-11 | Vesa-Veikko Luukkala | Cryptographically authenticated communication |
US9900158B2 (en) * | 2012-03-23 | 2018-02-20 | Nokia Technologies Oy | Cryptographically authenticated communication |
US9613156B2 (en) * | 2012-03-31 | 2017-04-04 | Beijing Qihoo Technology Company Limited | Cookie information sharing method and system |
US20150121085A1 (en) * | 2012-03-31 | 2015-04-30 | Beijing Qihoo Technology Company Limited | Cookie Information Sharing Method and System |
US20140044262A1 (en) * | 2012-08-09 | 2014-02-13 | Cisco Technology, Inc. | Low Latency Encryption and Authentication in Optical Transport Networks |
US9225515B2 (en) * | 2013-09-13 | 2015-12-29 | Sap Portals Israel Ltd | Shared portal context session |
US20150082029A1 (en) * | 2013-09-13 | 2015-03-19 | Alex Volchok | Shared portal context session |
US20170132624A1 (en) * | 2015-11-11 | 2017-05-11 | Visa International Service Association | Browser extension with additional capabilities |
US12002044B2 (en) | 2015-11-11 | 2024-06-04 | Visa International Service Association | Browser extension with additional capabilities |
US11120443B2 (en) * | 2015-11-11 | 2021-09-14 | Visa International Service Association | Browser extension with additional capabilities |
CN107046687A (en) * | 2016-01-26 | 2017-08-15 | 谷歌公司 | The secure connection of low-power equipment |
WO2017132136A1 (en) * | 2016-01-26 | 2017-08-03 | Google Inc. | Secure connections for low-power devices |
EP3408992A1 (en) * | 2016-01-26 | 2018-12-05 | Google LLC | Secure connections for low-power devices |
US10146932B2 (en) | 2016-01-29 | 2018-12-04 | Google Llc | Device access revocation |
US20170295154A1 (en) * | 2016-04-07 | 2017-10-12 | Gogo Llc | Systems and methods for authenticating applications to on-board services |
US10205709B2 (en) * | 2016-12-14 | 2019-02-12 | Visa International Service Association | Key pair infrastructure for secure messaging |
US11729150B2 (en) | 2016-12-14 | 2023-08-15 | Visa International Service Association | Key pair infrastructure for secure messaging |
US10356057B2 (en) * | 2016-12-14 | 2019-07-16 | Visa International Service Association | Key pair infrastructure for secure messaging |
US10862892B2 (en) | 2017-03-08 | 2020-12-08 | Bank Of America Corporation | Certificate system for verifying authorized and unauthorized secure sessions |
US10361852B2 (en) | 2017-03-08 | 2019-07-23 | Bank Of America Corporation | Secure verification system |
US10374808B2 (en) | 2017-03-08 | 2019-08-06 | Bank Of America Corporation | Verification system for creating a secure link |
US10425417B2 (en) | 2017-03-08 | 2019-09-24 | Bank Of America Corporation | Certificate system for verifying authorized and unauthorized secure sessions |
US10432595B2 (en) * | 2017-03-08 | 2019-10-01 | Bank Of America Corporation | Secure session creation system utililizing multiple keys |
US10848492B2 (en) | 2017-03-08 | 2020-11-24 | Bank Of America Corporation | Certificate system for verifying authorized and unauthorized secure sessions |
US10812487B2 (en) | 2017-03-08 | 2020-10-20 | Bank Of America Corporation | Certificate system for verifying authorized and unauthorized secure sessions |
KR20200012889A (en) * | 2017-05-25 | 2020-02-05 | 페이스북, 인크. | Systems and Methods for Preventing Session Pinning Through a Domain Portal |
CN110771112A (en) * | 2017-05-25 | 2020-02-07 | 脸谱公司 | System and method for preventing session pinning on a domain portal |
KR102365807B1 (en) * | 2017-05-25 | 2022-02-23 | 메타 플랫폼스, 인크. | Systems and methods for preventing session sticking via a domain portal |
US10454672B2 (en) * | 2017-05-25 | 2019-10-22 | Facebook, Inc. | Systems and methods for preventing session fixation over a domain portal |
EP3407561A1 (en) * | 2017-05-25 | 2018-11-28 | Facebook, Inc. | Systems and methods for preventing sessions fixation over a domain portal |
US11671279B2 (en) | 2017-06-07 | 2023-06-06 | Combined Conditional Access Development And Support, Llc | Determining a session key using session data |
US11418364B2 (en) * | 2017-06-07 | 2022-08-16 | Combined Conditional Access Development And Support, Llc | Determining a session key using session data |
US20180357432A1 (en) * | 2017-06-07 | 2018-12-13 | Combined Conditional Access Development & Support, LLC | Determining a Session Key Using Session Data |
US11042610B1 (en) * | 2017-10-04 | 2021-06-22 | Xilinx, Inc. | Enabling integrity and authenticity of design data |
US10841088B2 (en) * | 2018-05-10 | 2020-11-17 | Oracle International Corporation | Secure credential generation and validation |
CN109409099A (en) * | 2018-09-03 | 2019-03-01 | 中国平安人寿保险股份有限公司 | Cookie data processing method, device, computer equipment and storage medium |
CN109347627A (en) * | 2018-09-19 | 2019-02-15 | 平安科技(深圳)有限公司 | Data encryption/decryption method, device, computer equipment and storage medium |
CN110784480A (en) * | 2019-11-01 | 2020-02-11 | 华云数据有限公司 | Data transmission method, system, equipment and storage medium |
US20220006795A1 (en) * | 2020-01-29 | 2022-01-06 | Citrix Systems, Inc. | Secure message passing using semi-trusted intermediaries |
US11368292B2 (en) * | 2020-07-16 | 2022-06-21 | Salesforce.Com, Inc. | Securing data with symmetric keys generated using inaccessible private keys |
CN112636917A (en) * | 2020-12-07 | 2021-04-09 | 天津津航计算技术研究所 | Communication encryption method of distributed control system |
Also Published As
Publication number | Publication date |
---|---|
US8626929B2 (en) | 2014-01-07 |
US20110138179A1 (en) | 2011-06-09 |
US20140059354A1 (en) | 2014-02-27 |
US9673984B2 (en) | 2017-06-06 |
US7890634B2 (en) | 2011-02-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7890634B2 (en) | Scalable session management | |
CN109347835B (en) | Information transmission method, client, server, and computer-readable storage medium | |
US8447970B2 (en) | Securing out-of-band messages | |
US6154543A (en) | Public key cryptosystem with roaming user capability | |
JP3929075B2 (en) | Method and apparatus for operating a transaction server in an owned database environment | |
US8719572B2 (en) | System and method for managing authentication cookie encryption keys | |
US9137017B2 (en) | Key recovery mechanism | |
US20060149962A1 (en) | Network attached encryption | |
US20020101998A1 (en) | Fast escrow delivery | |
US20140096213A1 (en) | Method and system for distributed credential usage for android based and other restricted environment devices | |
CN101005357A (en) | Method and system for updating certification key | |
US12074975B2 (en) | Processing of requests to control information stored at multiple servers | |
US20080091947A1 (en) | Software registration system | |
CN114244508B (en) | Data encryption method, device, equipment and storage medium | |
CN114785527B (en) | Data transmission method, device, equipment and storage medium | |
CN111080299B (en) | Anti-repudiation method for transaction information, client and server | |
US7171000B1 (en) | Simplified addressing for private communications | |
JP2003188874A (en) | System for secure data transmission | |
CN112035820B (en) | Data analysis method used in Kerberos encryption environment | |
US20250039156A1 (en) | A secure data transmission | |
CN113037686B (en) | Multi-database secure communication method and system, computer readable storage medium | |
CN118713920A (en) | A method for verifying access security of an Internet of Things device | |
CN115643023A (en) | Identity encryption authentication method, system, electronic equipment and storage medium | |
CN117494104A (en) | 3 DES-based password management method, system, equipment and medium | |
CN116319031A (en) | Interface message encryption and decryption method and device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:JIANG, WEI;GUO, WEI-QUIANG MICHAEL;ROUSKOV, YORDAN;AND OTHERS;REEL/FRAME:022455/0001;SIGNING DATES FROM 20010108 TO 20050720 Owner name: MICROSOFT CORPORATION, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:JIANG, WEI;GUO, WEI-QUIANG MICHAEL;ROUSKOV, YORDAN;AND OTHERS;SIGNING DATES FROM 20010108 TO 20050720;REEL/FRAME:022455/0001 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
AS | Assignment |
Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034543/0001 Effective date: 20141014 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
LAPS | Lapse for failure to pay maintenance fees |
Free format text: PATENT EXPIRED FOR FAILURE TO PAY MAINTENANCE FEES (ORIGINAL EVENT CODE: EXP.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
STCH | Information on status: patent discontinuation |
Free format text: PATENT EXPIRED DUE TO NONPAYMENT OF MAINTENANCE FEES UNDER 37 CFR 1.362 |
|
FP | Lapsed due to failure to pay maintenance fee |
Effective date: 20190215 |