U.S. patent application number 12/806451 was filed with the patent office on 2011-03-31 for secure digital credential sharing arrangement.
Invention is credited to John Jules Alexander Boyer, Eric Fernand Le Saint.
Application Number | 20110078776 12/806451 |
Document ID | / |
Family ID | 36698786 |
Filed Date | 2011-03-31 |
United States Patent
Application |
20110078776 |
Kind Code |
A1 |
Boyer; John Jules Alexander ;
et al. |
March 31, 2011 |
Secure digital credential sharing arrangement
Abstract
A secure and transparent digital credential sharing arrangement
which utilizes one or more cryptographic levels of indirection to
obfuscate a sharing entity's credentials from those entities
authorized to share the credentials. A security policy table is
provided which allows the sharing entity to selectively authorize
or revoke digital credential sharing among a plurality of entities.
Various embodiments of the invention provide for secure storage and
retrieval of digital credentials from security tokens such as smart
cards. The secure sharing arrangement may be implemented in
hierarchical or non-hierarchical embodiments as desired.
Inventors: |
Boyer; John Jules Alexander;
(Ottawa, CA) ; Le Saint; Eric Fernand; (Cupertino,
CA) |
Family ID: |
36698786 |
Appl. No.: |
12/806451 |
Filed: |
August 12, 2010 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
11397710 |
Apr 5, 2006 |
7802293 |
|
|
12806451 |
|
|
|
|
60668595 |
Apr 6, 2005 |
|
|
|
Current U.S.
Class: |
726/6 |
Current CPC
Class: |
G06F 21/31 20130101;
G06F 2221/2147 20130101; H04L 63/0428 20130101; H04L 63/104
20130101; H04L 63/062 20130101; H04L 63/065 20130101; H04L 9/0836
20130101; G06F 21/602 20130101; H04L 9/321 20130101; G06F 21/6245
20130101 |
Class at
Publication: |
726/6 |
International
Class: |
H04L 9/32 20060101
H04L009/32; G06F 21/00 20060101 G06F021/00 |
Claims
1-37. (canceled)
38. A method for sharing digital credentials, comprising:
providing, in a computer readable storage medium, a first
credential store having retrievably stored therein a plurality of
credentials of a first entity; sharing, with a second entity, a
portion of the credentials of the first entity in response to a
first secret that is generated using a common secret shared by the
first entity and the second entity and using a first entity
specific string retrievable by the second entity; and providing the
second entity with access rights to the portion of the credentials
of the first entity that are shared with the second entity.
39. The method according to claim 38 wherein the portion of the
credentials of the first entity is encoded using an algorithm which
incorporates the first entity secret.
40. The method according to claim 38, further comprising: combining
the first entity specific string with the common secret.
41. The method according to claim 40 wherein combining includes at
least one of: a hash operation, a concatenation operation, an
exclusive OR operation and a symmetric cryptographic operation.
42. The method according to claim 38, further comprising:
encrypting the common secret with the first entity specific
string.
43. The method according to claim 38 wherein first entity specific
string includes at least one of: a user identifier, an IP address,
a MAC address, random string, an identification number assigned to
a security token, a static password, a hash of a static password, a
passphrase, a PIN, and a cryptogram generated by a symmetric or
asymmetric key.
44. The method according to claim 38, further comprising: storing a
plurality of credentials of the second entity; sharing, with the
first entity, a portion of the credentials of the second entity in
response to a second secret that is generated using the common
secret; and providing the first entity with access rights to the
portion of the credentials of the second entity that are shared
with the first entity.
45. The method according to claim 44, wherein the second secret is
a function of the common secret and of a second entity specific
string retrievable by the first entity.
46. The method according to claim 44 wherein the first secret and
the second secret incorporate at least one level of indirection
therebetween.
47. The method according to claim 44 wherein the first secret and
the second secret incorporate a hierarchical structure and wherein
the first secret may be used to derive said second secret but not
vice versa.
48. The method according to claim 47 wherein the second secret is
protected with the first secret.
49. The method according to claim 44 wherein the first secret and
the second secret incorporate a hierarchical structure and wherein
the second secret may be used to derive the first secret but not
vice versa.
50. The method according to claim 49 wherein the first secret is
protected with the second secret.
51. The method according to claim 43 wherein, on the second entity
side, the common secret is stored encoded with said second
secret.
52. Computer software, provided in a computer-readable medium, that
shares digital credentials, the software comprising: executable
code that shares a portion of credentials of a first entity with a
second entity in response to a first secret that is generated using
a common secret shared by the first entity and the second entity
and using a first entity specific string retrievable by the second
entity; and executable code that provides the second entity with
access rights to the portion of the credentials of the first entity
that are shared with the second entity.
53. Computer software according to claim 52 wherein the portion of
the credentials of the first entity is encoded using an algorithm
which incorporates the first entity secret.
54. Computer software according to claim 52, further comprising:
executable code that combines the first entity specific string with
the common secret.
55. Computer software according to claim 54 wherein combining
includes at least one of: a hash operation, a concatenation
operation, an exclusive OR operation and a symmetric cryptographic
operation.
56. Computer software according to claim 52, further comprising:
executable code that encrypts the common secret with the first
entity specific string.
57. Computer software according to claim 52 wherein first entity
specific string includes at least one of: a user identifier, an IP
address, a MAC address, random string, an identification number
assigned to a security token, a static password, a hash of a static
password, a passphrase, a PIN, and a cryptogram generated by a
symmetric or asymmetric key.
58. Computer software according to claim 52, further comprising:
executable code that stores a plurality of credentials of the
second entity; executable code that shares a portion of the
credentials of the second entity with the first entity in response
to a second secret that is generated using the common secret; and
executable code that provides the first entity with access rights
to the portion of the credentials of the second entity that are
shared with the first entity.
59. Computer software according to claim 58, wherein the second
secret is a function of the common secret and of a second entity
specific string retrievable by the first entity.
60. Computer software according to claim 58 wherein the first
secret and the second secret incorporate at least one level of
indirection therebetween.
61. Computer software according to claim 58 wherein the first
secret and the second secret incorporate a hierarchical structure
and wherein the first secret may be used to derive said second
secret but not vice versa.
62. Computer software according to claim 61 wherein the second
secret is protected with the first secret.
63. Computer software according to claim 58 wherein the first
secret and the second secret incorporate a hierarchical structure
and wherein the second secret may be used to derive the first
secret but not vice versa.
64. Computer software according to claim 63 wherein the first
secret is protected with the second secret.
65. Computer software according to claim 57 wherein, on the second
entity side, the common secret is stored encoded with said second
secret.
Description
FIELD OF INVENTION
[0001] The present invention relates generally to a data processing
method, and more specifically to a method, system and computer
program product which allows a plurality of entities to securely
share digital credentials.
BACKGROUND
[0002] In today's increasingly security conscious world, data is
generally encoded using a variety of techniques to prevent
unauthorized access to the underlying information. While encoding
of data does improve security, the ability to securely share the
information with another entity becomes more difficult as both the
mechanism and encoding secret(s) must also be shared with each
entity requiring access to the encoded data.
[0003] One approach is provided by Microsoft.RTM. Inc., in
Windows.RTM. XP which allows an entity to specify at the file
level, which registered entities may access the encoded information
as part of operating system's encrypting file system. While
effective for sharing large amounts of data with one or more
entities in a one-to-many relationship, the mechanism does not
support multiple entities sharing a common workspace who wish to
selectively encode discrete files in a many-to-many relationship.
That is, to allow multiple levels of encryption within the common
workspace.
[0004] In addition, the Microsoft solution is limited to file
sharing alone and does not address other circumstances which may
require sharing of digital credentials. For example, network
administrators frequently need to assist users or other entities in
accessing selected services or networks where multiple credentials
associated with the user or entity are implemented to access the
various services or networks. In many cases, full disclosure of a
user's credentials is unnecessary as only the problematic
credentials need be made available to the network
administrator.
[0005] Furthermore, the disclosure of even a partial portion of a
user or entity's credentials is undesirable from a security
perspective. As such, there is a need for a secure and selective
credential sharing arrangement which is transparent and revocable
by the sharing entity or user.
SUMMARY
[0006] This invention addresses the limitations described above and
provides a mechanism for selectively and securely sharing user or
entity credentials among a plurality of entities without
automatically providing the sharing entities full access to all
credentials or otherwise directly disclosing the shared
credentials.
[0007] According to the invention, a method is provided which
allows the secure and selective sharing of digital credentials
among a plurality of separate entities, said method comprising:
[0008] providing a first credential store having retrievably stored
therein a plurality of first entity credentials,
[0009] protecting at least a portion of said first entity
credentials with first protection means configured to revocably
allow said at least a portion of said first entity credentials to
be revocably shared with at least a second entity, said first
protection means comprising a first secret determinable by at least
said second entity,
[0010] generating said first secret as a function of at least
[0011] i. a common secret between said first entity and said at
least said second entity, and [0012] ii. a first entity specific
string retrievable by said at least said second entity, and
[0013] responsive to at least said first secret, granting said at
least a second entity permission to share said at least a portion
of said first entity credentials.
[0014] According to an aspect of the invention, said method
comprises preferably one or several of the following features:
[0015] portion of the first entity credentials using an algorithm
which incorporates the first entity secret; [0016] the generation
of said first secret comprises combining said first entity the
first protective means further includes encoding at least a
specific string with said common secret; [0017] the combining step
includes at least one of a hash operation, a concatenation
operation, an exclusive OR operation or a symmetric cryptographic
operation [0018] the generation of said first secret comprises
encrypting said common secret with said first entity specific
string.
[0019] According to a particular embodiment of the the invention
said method comprises: [0020] providing a second credential store
having retrievably stored therein a plurality of second entity
credentials, [0021] protecting at least a portion of said second
entity credentials with second protection means configured to
revocably allow said at least a portion of said second entity
credentials to be revocably shared with said first entity, said
second protection means comprising a second secret determinable by
at least said first entity, [0022] generating said second secret as
a function of at least said common secret, and [0023] responsive to
at least said second secret, granting said at least a first entity
permission to share said at least a portion of said second entity
credentials.
[0024] According to other aspects of said particular embodiment of
the invention, said method further comprises one or several of the
following features: [0025] generating said second secret as a
function of said common secret and of a second entity specific
string retrievable by said first entity; [0026] said first secret
and said second secret incorporate at least one level of
indirection therebetween; [0027] said first secret and said second
secret incorporate a hierarchical structure such that said first
secret may be used to derive said second secret but not visa versa,
and possibly protecting said second secret with said first secret;
[0028] alternatively said first secret and said second secret
incorporate a hierarchical structure such that said second secret
may be used to derive said first secret but not visa versa, and
possibly protecting said first secret with said second secret.
[0029] In still other aspects of the method according to the
invention, said method further comprises one or several of the
following features: [0030] the first entity specific string
includes at least one of a user identifier, an IP address, a MAC
address, a random string, an identification number assigned to a
security token, a static password, a hash of a static password, a
passphrase, a PIN, and a cryptogram generated by a symmetric or
asymmetric key; [0031] on said second entity side, said common
secret is stored encoded with said second secret.
[0032] The invention also provides a system to securely and
selectively share digital credentials among a plurality of separate
entities comprising:
[0033] a first credential store having retrievably stored therein a
plurality of first entity credentials,
[0034] first protection means for protecting at least a portion of
said first entity credentials, said first protection means
comprising a first secret determinable by at least a second
entity,
[0035] first revocable means for revocably allowing said at least a
portion of said first entity credentials to be shared with at least
said second entity,
[0036] first generating means for generating said first secret as a
function of at least: [0037] i. a common secret between said first
entity and said at least said second entity, and [0038] ii. a first
entity specific string retrievable by said at least said second
entity, and first granting means responsive to at least said first
secret for granting said at least a second entity permission to
share said at least a portion of said first entity credentials.
[0039] In one aspect of the invention, said system comprises
preferably one or several of the following features: [0040] said
first protection means further includes means for encoding said at
least a portion of said first entity credentials using an algorithm
which incorporates said first entity secret; [0041] said first
generating means comprises means for combining said first entity
specific string with said common secret; said means for combining
may be means performing at least one of a hash operation, a
concatenation operation, an exclusive OR operation or a symmetric
cryptographic operation; [0042] the first generating means
comprises means for encrypting said common secret with said first
entity specific string.
[0043] According to a particular embodiment of the the invention
said system comprises:
[0044] a second credential store having retrievably stored therein
a plurality of second entity credentials,
[0045] second protection means for protecting at least a portion of
said second entity credentials, said second protection means
comprising a second secret determinable by at least said first
entity,
[0046] second revocable means for revocably allowing said at least
a portion of said second entity credentials to be revocably shared
with said first entity,
[0047] second generating means for generating said second secret as
a function of at least said common secret, and
[0048] second granting means responsive to at least said second
secret for granting said at least a first entity permission to
share said at least a portion of said second entity
credentials.
[0049] According to other aspects of said particular embodiment of
the invention, said system further comprises one or several of the
following features: [0050] said second generating means includes
means for generating said second secret as a function of said
common secret and of a second entity specific string retrievable by
said first entity; [0051] said first secret and said second secret
incorporate at least one level of indirection therebetween, and
possibly said at least one level of indirection is derived from at
least said common secret. [0052] said first secret and said second
secret incorporate a hierarchical structure such that said first
secret may be used to derive said second secret but not visa versa,
and possibly said second secret is protected with said first
secret; [0053] alternatively, said first secret and said second
secret incorporate a hierarchical structure such that said second
secret may be used to derive said first secret but not visa versa,
and possibly said first secret is protected with said second
secret.
[0054] In yet other aspects of the system according to the
invention, said system further comprises one or several of the
following features: [0055] the first revocable means includes a
security policy means readable by said first revocable means and
possibly said granting means includes editing means for editing
said security policy means; [0056] said first credential store is
operatively installed in at least one of a database associated with
a server, a local client access directory, or a security token;
[0057] the first entity specific string includes at least one of a
user identifier, an IP address, a MAC address, a random string or
an identification number assigned to a security token, a static
password, a hash of a static password, a passphrase, a PIN, and a
cryptogram generated by a symmetric or asymmetric key; [0058] said
plurality of first entity credentials include at least one of a
password, a security code, personal identification number, a
digital certificate, a passphrase, a biometric template, or a
cryptographic key.
[0059] The invention provides also a computer program product
embodied in a tangible form comprising instructions for a processor
to securely and selectively share credentials among a plurality of
separate entities, said instructions executable by said processor
to:
[0060] access a first credential store having retrievably stored
therein a plurality of first entity credentials,
[0061] protect at least a portion of said first entity credentials
with first protection means for revocably allowing said at least a
portion of said first entity credentials to be shared with at least
a second entity, said first protection means comprising a first
secret determinable by at least said second entity,
[0062] generate said first secret as a function of at least: [0063]
a common secret between said first entity and said at least said
second entity, and [0064] a first entity specific string
retrievable by said at least said second entity, and
[0065] responsive to at least said first secret, to grant said at
least a second entity permission to share said at least a portion
of said first entity credentials.
[0066] In one aspect of the computer program, said tangible form
includes at least one of magnetic media, optical media or logical
media.
[0067] In another aspect of the computer program, said executable
instructions are stored in a code format comprising byte code,
compiled, interpreted, compliable and interpretable.
[0068] The invention also provides a computer readable medium
having stored thereon a data structure comprising:
[0069] a first field containing data representing an entity
specific data string;
[0070] a second field containing encoded data representing a
credential associated with the entity specific data string, and
[0071] a third field containing data representing a entity specific
secret used in encoding at least the second field.
[0072] In one aspect of the computer readable medium according to
the invention, a forth field is provided which contains data
representing a common secret from which the entity specific secret
is derived in conjunction with the first field.
BRIEF DESCRIPTION OF DRAWINGS
[0073] The features and advantages of the invention will become
apparent from the following detailed description when considered in
conjunction with the accompanying drawings. Where possible, the
same reference numerals and characters are used to denote like
features, elements, components or portions of the invention.
Optional components are generally shown in dashed lines. It is
intended that changes and modifications can be made to the
described embodiment without departing from the true scope and
spirit of the subject invention as defined in the claims.
[0074] FIG. 1--is a generalized block diagram of a computer system
and associated peripheral devices including a functionally
connected security token and biometric scanner.
[0075] FIG. 2--is a flow chart depicting an embodiment of the
invention where the digital credentials of a first entity are
shared with a second entity.
[0076] FIG. 2A--is another flow chart depicting an encoding and
decoding mechanism associated with an embodiment of the
invention.
[0077] FIG. 3--is another flow chart depicting the generation of
security parameters and data encoding implemented in an embodiment
of the invention.
[0078] FIG. 3A--is an integrated detailed block diagram and flow
chart depicting an implementation of an embodiment of the
invention.
[0079] FIG. 4--is a detailed block diagram of a network capable
computer system that is configured to implement an embodiment of
the invention.
[0080] FIG. 4A--is a detailed block diagram of a plurality of
network capable computer systems that are configured to implement
an embodiment of the invention in an enterprise operating
environment.
[0081] FIG. 5--is a detailed block diagram of a data structure
arranged to implement an embodiment of the invention.
DETAILED DESCRIPTION
[0082] The present invention provides a mechanism to securely share
entity credentials among a plurality of separate entities. The
secure sharing mechanism is based on cryptographic indirection
techniques and is intended to supplement the standardized security
features normally provided by the various operating systems
currently available. Where necessary, applications used to
implement the various embodiments of the invention are envisioned
to be programmed in a high level language such as Java .TM., C++,
and C, C # or Visual Basic .TM..
[0083] Referring to FIG. 1, a functional block diagram of a
computer system 105 and associated peripherals is depicted. In a
networking environment, the depicted computer system 105 is
intended to apply to both client and server arrangements.
[0084] The term credential as referred to herein includes
authentication data, related attributes, digital certificates,
passwords, personal identification numbers (PIN), biometric
samples, asymmetric and symmetric cryptographic keys, and other
information used to establish an entity's access rights and/or
access permissions.
[0085] The computer system 105 includes a processor 5, a Main
memory 10, a visual display 20 electrically coupled to a display
interface 15, a secondary memory subsystem 25 electrically coupled
to a hard disk drive 30, a removable storage drive 35 electrically
coupled to a removable storage unit 40 and an auxiliary removable
storage interface 45 electrically coupled to an logical media
storage unit 50. The display device 20 may include a touch
sensitive screen. The removable storage units 45, 50 are intended
to include flash memory devices such as USB based solid state hard
drives and related logical media drives.
[0086] A communications interface 55 subsystem is coupled to a
network 65 via a network interface 60. The network 65 includes
traditional wired, optical or wireless networks which may
incorporate a secure communications protocol such as secure socket
layer (SSL), transport layer security (TLS), private communications
technology (PCT) or internet protocol security (IPsec.)
[0087] A security token 90 is operably coupled to the
communications interface 55. The term security token 90 as
described herein includes hardware based security devices such as
cryptographic modules, smart cards, integrated circuit chip cards,
portable data carriers (PDC), personal security devices (PSD),
subscriber identification modules (SEM), wireless identification
modules (WIM), USB token dongles, identification tokens, secure
application modules (SAM), hardware security modules (HSM), secure
multi-media token (SMMC), trusted platform computing alliance chips
(TPCA) and like devices.
[0088] The security token 90 may be directly coupled to the
computer system 105 or remotely coupled to the computer system 105
via another networked computer system. The security token 90
includes a wireless, optical and/or electrical connection means
compatible with the communications interface 55, a microprocessor,
a cryptography co-processor, volatile and non-volatile memory
electrically coupled to the processor and co-processor, a runtime
operating environment.
[0089] The security token 90 further comprises cryptography
extensions available to the runtime environment and capable of
performing symmetric and asymmetric cryptographic functions
compatible with the computer system's and/or an authentication
server's cryptography software.
[0090] The security token 90 further comprises in an embodiment of
the invention one or more credentials. One or more security
applications are provided to allow implementation of the embodiment
of the invention which utilizes the security token. In another
embodiment of the invention, the security token further includes
one or more security policies which allow an entity to securely
share one or more of the credentials stored therein.
[0091] User input devices such as a mouse and a keyboard 20 are
operatively coupled to the communications interface 55. Lastly, a
biometric scanner 70 may optionally be coupled to the
communications interface 55. The biometric scanner 70 is used
capture biometric samples from one or more entities which become
stored in a credential store.
[0092] The processor 5, main memory 10, display interface 15,
secondary memory subsystem 25 and communications interface system
55 are electrically coupled to a communications infrastructure 100,
commonly referred to as I/O bus or system bus. The computer system
105 includes an operating system, one or more security
applications, a security token application programming interface
where necessary, one or more security token aware applications,
cryptography software capable of performing symmetric and
asymmetric cryptographic functions compatible with that of the
security token 90 and/or an authentication server, at least one
graphical display application suitable for displaying the security
information received from the security token 90 and all necessary
device interface and driver software.
[0093] Referring to FIG. 2, a flow chart is provided which
illustrates the major process interactions used to implement the
various embodiments of the invention. The processes are initiated
200 by providing a first credential store 207 associated with a
first entity 205. At least a portion of the first entity's
credentials maintained in the credential store 207 are then
revocably protected 210 using a secret 215 belonging to the first
entity. The first entity secret 215 is depicted as a key for
example only. One skilled in the art will appreciate that other
types of static secrets will work as well. The original first
entity's secret 215 is generally stored in the first entity's
credential data store 207 along with a copy of a common secret
245.
[0094] Once the first entity's credentials have been protected,
revocable credential rights for each separate entity authorized to
share the first entity's credentials are defined 220 by
establishing the revocable credential rights in a security policy
225.
[0095] The security policy 225 comprises a security table which
allows an entity to authorize or revoke credential sharing
privileges among a plurality of entities. The security policy 225
may further include other sharing criteria including sharing
expiration dates, logical usage rules, location usage rules,
priority usage rules, time usage rules or security state based
rules.
[0096] A second entity is used as an example of a separate entity
intending to share the first entity's credentials. Additional
sharing entities may be established in the security policy 225 as
well. The security policy 225 may be incorporated into an access
rights table for multiple session usage or maintained in volatile
memory to limit the sharing of the first entity's credentials to a
single session.
[0097] In order for the second entity to share the first entity's
credentials, a verification process is provided 230. The
verification process examines the security policy 225 to determine
if the second entity has been granted revocable credential
rights.
[0098] If the second entity has not been granted revocable
credential rights, access is denied 235, followed by process
termination 265. If the second entity has been granted revocable
credential rights 235, a security application 240 retrieves a
publicly available data string unique to the first entity 255 along
with the common secret 245. Each entity which is authorized to
share the first entity's credentials is provided a copy of the
common secret or the means to regenerate the common secret 245.
[0099] The common secret 245 is normally stored in each sharing
entity's credential data store 207 or securely provided from a
central datastore (FIG. 4A.) An alternate embodiment of the
invention which affords greater protection of the common secret 245
is described in FIG. 2A.
[0100] The first entity string 255 and the common secret 245 are
then algorithmically combined to regenerate the first entity's
secret 215'. The security application 240 then facilitates access
to the first entity's credentials by the authorized second entity
260. The specific security mechanism employed by the security
application 240 may be cryptography based, or performed as a
gatekeeper function. In both instances, the first entity's
regenerated secret 215' is incorporated into the security
mechanism. Once the second entity has completed sharing of the
first entity's credentials, processing ends 265.
[0101] In one embodiment of invention, the regenerated first
entity's secret 215' is stored in a credential data store belonging
to the second entity. In another embodiment of invention, the
regenerated first entity's secret 215' is maintained in volatile
memory only for the duration of its use and is destroyed upon
processing termination 265.
[0102] In various embodiments of the invention, the credential
protection, security policy and second entity verification
designated with an asterisks (*) are performed by either the same
security application 240 or in conjunction with other security
applications 240'.
[0103] Referring to FIG. 2A, an alternate embodiment of invention
is shown which affords greater protection of the common secret 245.
In this embodiment of invention, the second entity's copy of the
common secret 245 is encoded with the second entity's own secret
250. In order to use the common secret 245 for generating the first
entity's entities secret 215', the encoded common secret 245' is
decoded by combining algorithmically the second entity's secret 250
with the encoded common secret 245' using the security application
240'. The first entity string 255 and the common secret 245 are
then algorithmically combined to regenerate the first entity's
secret 215'
[0104] The resulting first entity's secret 215' is then used to
decode one or more of the encoded first entity credentials 260'
using the security application 240'', freeing the decoded first
entity credential(s) for use 260 by the second entity. Processing
ends 265 after the second entity has completed using the first
entity's decoded credentials.
[0105] In an embodiment of the invention, the entity secrets 215,
250 are generated on demand rather than being stored with each
entity's credentials. This arrangement is somewhat more secure by
limiting the number of stored secrets available for interception.
However, reconstruction of one or more of the entity secrets. may
reduce overall system performance.
[0106] Referring to FIG. 3, a detailed block diagram is provided
which describes the interactions of the common secret 245, security
policy 225 and the entity secret 330. The common secret 245 denoted
as C.sub.s may be generated from a random string, a random number,
a hash of an existing secret, or simply utilizing an existing
symmetric key 305. The common secret C.sub.s 245 provides a level
of indirection which allows the second entity to derive a specific
secret of the first entity secret used to encode a portion of the
first entity's credentials.
[0107] When a suitable source for the entity string data 320 and
common secret C.sub.s 245 has been generated or derived, each
entity's secret 330 may be generated by algorithmically combining
each entity's unique string data 320 E.sub.n with the common secret
245 using the security application 240.
[0108] Once each entities unique secret 330 has been generated, it
is then stored along with a copy of the common secret 245 in a
credential data store 207 unique to each entity.
[0109] Another security application 240' compatible with the
security application 240 which generated the entity secret 330 is
used to update a security policy 225 with the proposed credential
sharing arrangement between entities.
[0110] For example, entity E.sub.i 345 is only allowed to access
its own credentials as designed by the "1" 350 and "0's" elsewhere
in the array holding the revocable credential rights. In
furtherance of this example, entity E.sub.n is permitted to use its
own credentials 365 and also may share the credentials of entity
E.sub.i. Lastly, it is also envisioned by the inventors to include
an additional security provision which prevents an entity from
using its own credentials in the event of a security
compromise.
[0111] In another embodiment of the invention, each entity's
credential data store 207 or portions thereof are encoded using the
security application 240' and each entity's secret 330. The results
of the encoding process are stored in each entity's credential data
store 207' along with an encoded copy of the common secret 245' and
an unencoded copy of the entity's specific secret 330. Security
protection of each entity's secret 330 is provided by the normal
operating system security policies.
[0112] The common secret 245 is derived from a function having the
general form of;
C.sub.s=f(Ms)
[0113] Where C.sub.s is derived from a master secret Ms;
[0114] Ms may be generated from a random string, a random number, a
hash of a random string or number, a symmetric encryption key or
any combination thereof.
[0115] The function f is generally a symmetric cryptographic
algorithm such as DES, 3DES, AES. However, other common operations
such as an exclusive OR operation or a concatenation operation and
may be substituted for or used in conjunction with the symmetric
cryptographic algorithm.
[0116] In one embodiment of the invention, the entity specific
secret 330 denoted as S.sub.n is derived from a function f
generally having the form of;
S.sub.n=f(C.sub.s,E.sub.n)
[0117] where S.sub.n is derived from the common secret C, and an
entity specific string E.sub.n unique to a credential holding
entity (Entity.sub.n).
[0118] The entity specific string E.sub.n 320 is derived from
existing non-secret information such as a username, email address,
security token identifier, network address, MAC address or other
entity specific information available to other entities in which
the entity credentials are to be shared.
[0119] The function f is likewise a symmetric cryptographic
algorithm such as DES, 3DES, AES. However, a different symmetric
cryptographic algorithm may be used from the one which generated
the common secret C.sub.s 245. As described above, other common
operations such as an exclusive OR operation or a concatenation
operation may be substituted for or used in conjunction with the
symmetric cryptographic algorithm.
[0120] While only one level of indirection is shown, one skilled in
the art will appreciate that multiple levels of indirection may be
provided for improving security or providing a secret hierarchy. A
shared secret hierarchy may be established using an entity's
specific secret S.sub.n 330 substituted for the common secret
C.sub.s 245 for all subsequent entities in which a hierarchal
arrangement is desired. In the hierarchal arrangement, the
dependent entity specific secret is derived from a function having
the general form of
S.sub.d=f(S.sub.n,S.sub.x)
where S.sub.n is a non-hierarchal entity secret common to all
subsequent entities;
[0121] S.sub.x is an intermediate non-dependent entity secret of
the intended hierarchal entity (corresponding to the specific
string E.sub.n); and;
[0122] S.sub.d is the final hierarchal entity secret derived from
the combination of the non-hierarchal entity secret S.sub.n and the
intermediate non-dependent entity secret S.sub.x using the general
function f described above. In this embodiment of the invention, it
will be necessary to consistently utilize the same function f
throughout the derivation and entity secret regeneration process
including the common secret C.sub.s 245.
[0123] In all cases, the common secret C.sub.s 245 and entity
secret S.sub.n 330 should have sufficient bit strength to inhibit
attempts at decoding the protected credentials. Minimum bit
strength of 64-bits should be used and preferably a bit strength of
128 bits or greater where possible.
[0124] Referring to FIG. 3A, an example of a credential sharing
session is depicted. In this continuing example from FIG. 3, entity
E.sub.n 355 is attempting to share the credentials of entity
E.sub.i 345. The security application 240 first verifies that
entity E.sub.n 355 is authorized to share entity E.sub.i 345
credentials. The security application 240 locates entity E.sub.n
355 entry in the security policy and verifies that entity E.sub.n
355 is authorized to access entity E.sub.i 345 credentials 360
along with entity E.sub.n 355 own credentials 365.
[0125] Continuing, the security application 240 retrieves the
encoded common secret 245' and entity E.sub.n secret 330. The
encoded common secret 245' is then decoded by the security
application 240 using entity E.sub.n secret 330. Entity E.sub.i
unique string data 323 is retrieved from a public location such as
the LDAP, file directory, an e-mail address book, URL or MAC
address and combined algorithmically using the security application
240' which regenerates Entity E.sub.i secret 333. Entity E.sub.i
secret 333 is then used to decode the Entity E.sub.i credential
store 337' using security application 240'' and allowing use of one
or more of the decoded Entity E.sub.i credentials 337 by entity
E.sub.n 355.
[0126] Various embodiments of the invention are disclosed
hereinafter.
[0127] According to a first aspect the sharing arrangement between
the first entity and the second entity is bi-directional. Not only
does the second entity have access to some portion of the
credentials of the first entity, but the first entity also has
access to some portion of the credentials of the second entity. In
this bi-directional sharing arrangement, the common secret between
the first entity and the second entity can be used not only in the
retrieval of the first secret by the second entity, but also in the
retrieval of the second secret by the first entity. The functional
relationship between the first secret and the second secret is
therefore via the common secret.
[0128] According to an embodiment of the invention: [0129] part of
the first credentials are encrypted with a common secret, [0130]
part of the second credentials are encrypted with a common secret,
[0131] the common secret is further encrypted with the first string
for retrieval by the second entity, [0132] the common secret is
further encrypted with the second string for retrieval by the first
entity.
[0133] In a second aspect of the invention, the said first secret
and said second secret incorporate a hierarchical structure such
that said first secret may be used to derive said second secret but
not visa versa. The said second secret is protected with said first
secret.
[0134] In a third aspect of the invention, the first secret and
said second secret incorporate a hierarchical structure such that
said second secret may be used to derive said first secret but not
visa versa. The first secret is protected with said second
secret.
[0135] According to another embodiment: [0136] part of the first
credentials are protected with the first secret, [0137] part of the
second credentials are protected with the second secret, [0138] the
first secret is further protected with the second secret
[0139] In the first aspect, the first secret and the second secret
have functional parity. In the second aspect, the entity that can
retrieve the second secret can access only part of the second
credentials but the entity who can retrieve the first secret can
access both part of the first credentials and part of the second
credentials. In the third aspect, the entity that can retrieve the
first secret can access only part of the first credentials but the
entity who can retrieve the second secret can access both part of
the first credentials and part of the second credentials.
[0140] Referring to FIG. 4, a block diagram illustrating a
systematic embodiment of the invention is provided. In this
embodiment of the invention, a network 65 enabled computer system
105 is shown having operatively installed therein at least one
security application 240. The security application 240 is
programmed to process sources of security information necessary for
credential sharing including an operatively coupled credential
datastore 207, a common secret 245, one or more retrievable entity
strings 320 and a security policy 225.
[0141] In another embodiment of the invention, the security
application is further programmed to process information utilizing
an operatively coupled security token 90. In this embodiment of the
invention, the security token 90 includes a local security
application 310-T1, and optionally one or more credentials 207-T1,
the common secret 245', one or more entity strings 320' and a
separate security policy 225'. This embodiment of the invention
allows the secure storage features available from the security
token 90 to be utilized by the security application 240 by
selectively maintaining one or more of the sources of security
information necessary for credential sharing.
[0142] In yet another embodiment of the invention, the security
application 240 is programmed to process the sources of security
information necessary for credential sharing from the security
token 90 alone. In this embodiment of the invention, the security
token 90, the local security application 310-T1, the credential
store 207-T1, the common secret 245', entity strings 320' and
separate security policy 225' replace the credential store 207,
common secret 245, entity strings 320 and a security policy 225
coupled to the security application 240.
[0143] Referring to FIG. 4A, a block diagram illustrating a
systematic embodiment of the invention in an enterprise operating
environment is provided. In this embodiment of the invention, a
plurality of networked 65 enabled computer systems 105A, 105B are
shown in processing communications with a security server S
105S.
[0144] Each of the computer systems 105A, 105B has operatively
installed security applications 240A, 240B which are programmed to
process sources of security information necessary for credential
sharing. The sources of security information are distributed among
a security application 240S installed on the security server S 105S
and entity specific security tokens 90A, 90B operatively coupled to
each security application 240A, 240B.
[0145] The security tokens 90A, 90B have operatively installed
therein one or more credentials 207A, 207B which are controlled by
local security applications 240AT, 240BT installed within the
security tokens 90A, 90B.
[0146] The security application 240S is operatively installed in
the security server 105S and is programmed to process sources of
security information necessary for credential sharing from the
security tokens 90A, 90B, and server maintained set of security
policies 225, set of credentials, set of entity strings 320 and a
common secret 245. This arrangement allows for credential sharing
207A, 207B, 207S among a plurality of networked client computer
systems 105A, 105B, 105S while maintaining centralized control of
credential sharing activities using the security server S 105S.
Furthermore, in this embodiment of invention, the server version of
the security application 240S performs the majority of the
processing. The client and security token security applications
240A, 240AT, 240B, 240BT provide the basic verification of an
incoming request for credential sharing while the server S 105S
performs the majority of the transport and security of credentials.
Various sharing arrangements may be combined which incorporate
elements obtained from the embodiments shown in FIGS. 3, 3A, 4
and/or 4A.
[0147] The common secret 245 and/or the credential store 207S may
be stored inside a hardware security module (HSM) 90S or derived
from a securely stored master secret contained inside the hardware
security module (HSM) 90S. The hardware security module (HSM) 90S
is an optional component to consider highly desirable for large
enterprise deployment of the invention.
[0148] Referring to FIG. 5, a detailed block diagram is presented
of a basic data structure embodiment of the invention. In this
embodiment of the invention, a computer system 105, incorporates a
data structure having a first data field 500 comprising entity
string information 320, a second data field 510 comprising encoded
credentials 207', a third data field 515 comprising an entity
secret 330 utilized in encoding the credentials 207' of the second
data field 510 and a forth data field 520 comprising a common
secret 245 utilized in deriving the entity secret 330 of the third
data field 515.
[0149] The foregoing described embodiments of the invention are
provided as illustrations and descriptions. They are not intended
to limit the invention to precise form described. In particular, it
is contemplated that functional implementation of the invention
described herein may be implemented equivalently in hardware,
software, firmware, and/or other available functional components or
building blocks. No specific limitation is intended to a particular
security system or financial services system. Other variations and
embodiments are possible in light of above teachings, and it is not
intended that this Detailed Description limit the scope of
invention, but rather by the Claims following herein.
* * * * *