Cross reference is made to U.S. patent application Ser. Nos. 10/811,412, filed Mar. 25, 2004, now U.S. Pat. No. 7,272,500, entitled “Global Positioning System Hardware Key for Software Licenses”; and 10/956,861, filed Sep. 30, 2004, entitled “Certificate Distribution Via License Files”, each of which is incorporated herein by this reference.
The invention relates generally to software and/or hardware and particularly to the application of cryptographic algorithms to software and/or hardware provisioning.
Distributed software systems that operate over an open network, particularly a Wide Area Network such as the Internet, often have the need for secure communications over the network and authentication between system elements to prevent spoofing and other security breaches. Various protocols have been used to provide such security. Exemplary protocols include the Secure Sockets Layer or SSL, Transport Layer Security or TLS, Secure-HTTP, and IP Security or IPSEC.
Instrumental in these protocols are cryptographic mechanisms. Two primary cryptographic mechanisms are secret key and public key cryptography. Secret key is a type of symmetric encryption in which both parties know and use the same or shared secret key to encrypt and decrypt communications. Encryption algorithms, or ciphers, based on the secret key, mathematically transform or encrypt the plain text in the message into cipher text. The same key and algorithm are used by the other party to decrypt the cipher text. Public key cryptography is a type of asymmetric encryption that uses pairs of different keys, one for encryption and one for decryption. One of the keys or private key is kept secret by a party and the other key or public key is provided freely to other parties. When plain text is converted into ciphertext or encrypted using the private key, it may be converted back into plain text only using the public key and vice versa. The Rivest-Shamir-Adleman or RSA algorithm is one of the most widely used public key algorithms.
The SSL protocol uses the Public Key Infrastructure or PKI, a form of public key cryptography, to secure communications over otherwise unsecured networks. RSA, together with the X.509 standard for digital certificates, form the basis of PKI. A certificate 200 according to the X.509 standard is shown in
In a typical application, a computational component receives a digital certificate by interacting with a certificate authority. The computational component generates a public/private key set and makes a certificate request to the certificate authority. Secure distribution of the private key is not an issue because no distribution is needed (the private key is generated on the target system element). However, this approach is not practical in many cases, since it requires direct communication between the computational component and a certificate authority. This approach also presents security issues, since the certificate request sent from a given computational component can be difficult to validate. If the certificate is granted without sufficient validation, the security that the certificate provides is compromised. More thorough validation is time consuming and potentially expensive.
This problem is compounded in an enterprise network including multiple system elements. Providing each system element with a unique certificate and key pair can be a challenge. There are two key questions that must be addressed. First, how does one get the digital certificate to each system element in the first place? Second, if this is done remotely how does one know that the system element on the other end is the system element that it claims to be? The potential solutions include (a) adding unique credentials at the time of manufacture; (b) staging the equipment to add unique credentials; (c) shipping the credentials separately (e.g., on a crypto-token device such as a smart card or other hardware or media; (d) employing a hardware device (e.g., circuit board) whose personality is or can be made unique; (e) providing access to a secure web site from which credentials can be obtained after suitable login and authorization; and (f) hand carrying the credentials to the device on site.
Each of the solutions typically requires some pre-association of credentials with a specific system element. Such an association is not always possible and/or is expensive. For example, such an association is often not possible until an electronic address, such an IP address, is assigned to the system element, which is not commonly done until after connection to the network. Moreover, encoding unique credentials into a system element at the time of manufacture is costly, and the credentials can be viewed by a skilled computer technician and are therefore not tamper proof. The solutions further require involvement of trained technical personnel, which is not only expensive but also can delay significantly the provisioning process.
In options (c) and (f) above, providing the credentials to the device on site, such as using a crypto-token, can be problematical. Because this technique requires a prior association between a specific hardware or software product and a specific crypto-token, providing wrong credentials with a product or misplacement of the credentials can prevent the product from being provisioned and/or licensed until the proper credentials have been provided. This may be time consuming and expensive particularly if the proper credentials have been lost or misplaced and must be recreated.
These and other needs are addressed by the various embodiments and configurations of the present invention. The present invention is directed generally to the use of a generic crypto-token to provide credentials, such as digital certificates and private/public key pairs, to a computational component in a distributed processing network. As used herein, a “credential” refers to a set of information (e.g., a unique character or string of characters) which must be provided to a computational component for access to information in that or another computational component to be provided. Examples of credentials include digital certificates, private/public key pairs, and cipher text and plain text messages.
In a first embodiment of the present invention, a process for providing credentials to a computational component in a distributed processing network is provided that includes the steps of:
(a) generating a plurality of crypto-tokens, each crypto-token including a unique identifier and a public/private key pair;
(b) engaging the selected crypto-token with the computational component, whereby the computational component and selected crypto-token can electrically communicate with one another; and
(c) based on a digital certificate comprising the public key and unique identifier and private key in any of the crypto-tokens, establishing a secured communication session with the computational component. Before step (c), any of the plurality of crypto-tokens may be engaged with the computational component to establish the secured communication session.
The crypto-tokens can be any human portable medium for storing or otherwise providing credentials. Preferred crypto-tokens include integrated circuits such as smart cards and dongles.
In one configuration, generic host independent certificates are used to establish an initial secure link and thereafter made unique (after installation) rather than the current practice of generating a host associated certificate before installation. “Uniqueness” can be effected using a customer- or enterprise-specific or computational component-specific certificate. In the former case, the certificate uniquely identifies the enterprise but not a specific computational component in the enterprise (apart from the component's public key and corresponding token identifier included in the certificate). In the latter case, the certificate uniquely identifies the computational component, and optionally the enterprise, by including appropriate unique identifier(s) in the certificate. A manufacturer or supplier of a computational component generates a stock of crypto-tokens, preferably smart cards. Each crypto-token is unique from the other crypto-tokens; that is, each token contains a unique private cryptographic key along with a unique identifier (e.g., a serial number and name associated with the token). The identifier is within the token and also printed on the outside of the token. The certificate in the token is signed digitally using the private key corresponding to a root certificate of the manufacturer or supplier or of any recognized Certificate Authority, such as Verisign™.
A token is shipped with each computational component from the manufacturer or supplier. Because the tokens are generic and not tied specifically to a computational component, customer, or enterprise network, any token can accompany a selected computational component. Stated another way, the token has no value until a license file and/or provisioning system data structure authorizes its use for a specific enterprise/customer/computational component. Maintenance centers can also have a supply of the tokens. When the computational component arrives at the customer's site, the customer plugs the component into a power source and the enterprise network and inserts the token into the token reader or other type of driver. The computational device obtains an IP address from an address server as well as an IP address of the customer's central provisioning server. The token permits the device to contact the central provisioning server via an encrypted link and authenticated after encrypted, i.e., encrypted and authenticated link. The provisioning server can be assured that it is communicating with the token identified by the certificate exchanged in the secured link because the certificate was signed digitally by the manufacturer/supplier. The manufacturer's/supplier's root certificate is resident on the provisioning server or can be obtained from the manufacturer's/supplier's public Web site. The token is thus securely identified and authenticated to the provisioning server. Administration of the provisioning server allows it to know whether to accept or deny this new device based on the token identifier in the certificate. Once accepted, the provisioning server can perform what ever initialization tasks are required, such as sending data needed by the device, changing its IP address, causing it to reboot or come on line, installing software updates or upgrades, etc.
The administration of the provisioning server can be accomplished ahead of time, knowing that a number of tokens are coming or on demand, via a call from the person plugging in the new device. The information transmitted typically includes at the very least the token's identifier.
There are a number of options to this configuration. If there is no address server, the customer could be prompted for this information which their network administrator would have to supply. If on-line access to the manufacturer/supplier is available, a secure link between the token and the provisioning server of the manufacturer/supplier is possible. The provisioning server can communicate directly with the token and change its data through an encrypted link directly to the token. For example, a license could be stored or updated in the token or the certificate itself could be changed.
The present invention can represent a significant cost and time savings during the provisioning process. Currently, to create a digital certificate a request is made from an installed computational component to a certificate authority, such as Verisign™, to request a certificate. The request must include a hostname of the requesting computational component. This can only be known after installation and may require the certificate to be reissued if the name changes. Assuming that the request is approved, the certificate is returned to the computational component a day or so later. The process of the present invention can avoid this delay and dependency on a third party during installation. The use of a generic certificate in the token, or a certificate that contains a random identifier, rather than the hostname of the computational component allows the certificate and token to be generated in advance and therefore can eliminate the delay in installation and the dependency on hostname assignments. Lost or damaged tokens can be exchanged freely for tokens having different identifiers, key pairs, and generic certificates but being freely interoperative with an already deployed computational component. Additionally, the standard or generic certificate can be later updated over a link (whether or not secure) to contain a network host name for the computational component. Thus, network failures or problems due to computational components attempting to register or otherwise communicate with system elements in a different network area or region can be prevented by replacing the generic certificate in the token with a device-specific certificate including not only a hostname but also an enterprise area, or region identifier, module identifier, and/or system identifier.
The use of a token and a customer-provided address server, which can give a computational component in an enterprise network both its own address and the address of a provisioning server, can be a very simple solution to the complex problems of securely provisioning enterprise network elements. It can allow secure installation, identification, and authentication of computational components in a network without the installers needing to know any “secret” information. It therefore permits relatively unskilled, nontechnical customer personnel to install computational components on site without requiring the assistance of technicians from the manufacturer/supplier. This can not only allow faster installation service for the customer but also represent a substantial cost savings to the manufacturer/supplier. Furthermore, this approach affords the administrator final authorization of computational components which possess authenticated tokens.
The identification afforded by tokens is portable. If a computational component fails, the token is moved to the maintenance replacement without delay. The token cannot be duplicated and therefore the service being granted by the token cannot be duplicated. A customer (or hacker) can not operate a second computational component from the same token, thereby avoiding payment of a fee to the manufacturer/supplier. In cases where there is an on-line link to the provisioning server of the manufacturer/supplier, the protection of the token allows the inclusion of licenses in the token in a secure manner so that the license is likewise portable with the token during maintenance replacement.
Tokens, such as a smart card, can maintain desired credentials secret and prevent their unauthorized discovery and/or modification. Integrated circuits can be configured to process input and provide output but have their stored content be otherwise inaccessible to outside devices.
These and other advantages will be apparent from the disclosure of the invention(s) contained herein.
The above-described embodiments and configurations are neither complete nor exhaustive. As will be appreciated, other embodiments of the invention are possible utilizing, alone or in combination, one or more of the features set forth above or described in detail below.
Referring to
The provisioning server 104 includes a certificate authority or signing agent 158 for signing certificates with a private key corresponding to a public key in a certificate of the provisioning system 100 and a token generating agent 154 to supervise the production of tokens.
The provisioning system 100 is connected via network 124 with an enterprise network 130 including a computational component 128 to be provisioned. The computational component 128 can be any hardware device and/or software module, such as an application program, a server, a receiver, a transmitter, an appliance (a computational component delivered as a “black box” for a dedicated purpose), and the like. As will be appreciated, the provisioning system 100 may also be a part of the enterprise network 130.
The networks 108 and 124 can be wired and/or wireless and packet-switched and/or circuit-switched. Typically, network 108 is a local area network while network 124 is a wide area network, such as the Internet.
Administration personnel in the provisioning system 100 and enterprise network 130 are in communication with one another via the first and second communication devices 134 and 138. The communication devices 134 and 138 may be any suitable communication device, whether wired or wireless or packet- or circuit-switched, such as analog or digital telephones, IP hardphones, IP softphones, and the like. Although
The provisioning process includes the use of a plurality of crypto-tokens 150a-n. An exemplary crypto-token 150 is shown in
The memory 400 includes a public/private key pair 408, a unique token identifier or ID 418 (which is a randomly generated variable that may be numeric, alphabetical, or alphanumeric), optionally a (typically non-signing) generic certificate 412 (which does not include the private key 408 but does include the public key 228), a key generator 424 for generating public/private key pairs, optionally a certificate generator 416 for generating a token ID 418 and certificate requests, which include unsigned certificates, and a cryptographic agent 420 for encrypting plain text and decrypting cipher text using the private key 408. The token ID 418 is in typically in the subject field 224 of the certificate.
When the crypto-token 150 is manufactured by the provisioning system 100 and at the time of shipping of the computational component 128, the crypto-token is not associated with a specific computational component (including the component 128), customer, or enterprise network, thus, any crypto-token can be used with any computational component, customer's computational components, or enterprise network's system elements in steps 508, 512, and 516 discussed below. In other words, the standard 202 and extensions 232 portions of the certificate do not identify a specific computational component to which the certificate corresponds (e.g., the certificate does not include a host name, electronic address, or other unique identifier of a specific computational component). Although the certificate uniquely identifies the corresponding crypto-token, the certificate 412 is generic in that it can be used by any computational component for purposes of authentication, such as in a Transport Layer Security or TLS Protocol handshake procedure. The provisioning system's association between the token and a specific computational component is preferably effected during or after installation of the component in the enterprise network. The certificate 412 is digitally signed by the certificate authority 104 (using the private key of the certificate authority 104). The memory 400 can includes not only the generic certificate 412 but also a copy of the issuing certificate authority certificate (not shown) issued to and signed by the certificate authority 158. With reference to
To permit identification of the token by personnel, the token ID 418 is typically printed on the outside or exterior surface of the token. The token is typically packaged with the computational component prior to sale or delivery to the customer. However, technical personnel may also hand carry the token to the customer's site when the computational component is provisioned.
In a preferred embodiment, the crypto-token is used not only for provisioning and/or licensing but also for verifying proper operation of the computational component and other applications requiring security. In applications for ensuring proper operation when the crypto-token is removed from the internal or external drive of the computational component during component operation, the computational component will, after a selected time interval and/or after a link between the component and another component goes off line, automatically go off line until the crypto-token is re-inserted into the drive. This requirement prevents the unlawful or impermissible replacement of the provisioned and licensed computational component with an unprovisioned and/or unlicensed computational component.
Referring now to
In step 500, the provisioning system 104 generates a plurality of crypto-tokens 150a-n, each including a unique public/private key pair, unique token identifier, and a digital certificate incorporating the unique token identifier and the public key in the respective key pair.
A process for manufacturing a typical crypto-token includes a number of steps. The token generating agent 154 determines to produce N tokens with sequence numbers 1 to N. The agent 154 prompts the operator/user to insert a blank token 150 in a token reader (not shown). The token is assigned the token identifier “X”, where X is between 1 to N. X is selected by the token generating agent 154 not by the token 150. The token 150 generates a public and private key pair. The private key 408 is not known to the provisioning system 100 before, during, or after the manufacture of the token 150. The system 100 prints an appropriate label on the token, ejects the token 150 and records in the database 120 (via the database manager 116) the fact that the token was generated. The printed label typically includes the common name of X.
In step 504, one of the tokens 150 is transported to the customer's site to be used in provisioning the computational component 128.
In step 508, the computational component is connected to the network 124, plugged in to a power source, and the token 150 plugged into an internal or external driver in communication with the computational component. As part of the connection process, the computational component is assigned an electronic address, such as an IP address.
In step 509, the computational component transmits a generic digital certificate to the provisioning server 104 over an untrusted path. In step 510, the provisioning server 104 authenticates the token's generic digital certificate. Once the certificate has been validated, the provisioning server in step 512 authorizes the computational component via the application interface 112, data base manager 116, database 120 and the subject 224 (token ID 418) and other fields in the received certificate. After successful authentication, the agent 158 creates a random session key (step 513), and encrypts this key with the public key from the generic certificate received from the computational component. In step 514 the provisioning server sends the encrypted session key to the computational component.
In any of the preceding steps, an entity, whether human or automated, forwards the token ID 418 corresponding to the token 150 communicating with the computational component 128 and optionally a unique identifier in the enterprise network 130 (e.g. a serial number, an electronic address, a device name, and the like) of the computational component 128 to the provisioning server 104. This information is typically communicated out-of-band and not transmitted as part of the handshake procedure. For example, the information may be communicated out-of-band using the first and second communication devices 134 and 138. Until at least the token ID 418 is received by the provisioning server 104, the provisioning server 104 does not know whether or not it is proper to proceed further with the computational component 128 and, if so, what database information corresponds to the computational component currently engaged with the identified token.
Alternatively, the token ID 418 may be pre-programmed in the server 104. (That is in the database 120 and accessed by the provisioning server 104 through network 108, business application 112 and database manager 116 as previously described.)
In step 516, the computational component establishes a secure session with the provisioning server 104 using the received session key. A two way authentication occurs in this process. As will be appreciated, in a TLS handshake procedure the computational component and provisioning server exchange their respective digital certificates and the session key encrypted with their respective public keys so that each side may authenticate the other side. Authentication quality requires each of the components verifying the other component has a valid certificate (by verifying that the certificate was signed by the certificate authority) and that the digital signature is valid.
During session establishment, the computational component encrypts messages using the public key of the provisioning server; the provisioning server, upon receipt of such message decrypts it with the provisioning server's private key. Similarly, the provisioning server encrypts messages using the public key of the computational component (received in the generic certificate of the computational component); the computational component, upon receipt of such message decrypts it with the computational component's private key.
Once the session is established, each side encrypts and decrypts messages using the secret session key exchanged during session establishment.
As will be appreciated, a number of messages are commonly exchanged in this step. Examples can include the Alert, ApplicationData, Certificate, CertificateRequest, CertificateVerify, ChangeCipherSpec, ClientHello, ClientKeyExchange, Finished, HelloRequest, ServerHello, ServerHelloDone, and ServerKeyExchange messages. The various messages can include security protocol version information, a random number used to seed the cryptographic calculations, session ID, cipher suites, compression methods, and public key information.
In step 528, the token's corresponding identifier 418 (e.g., X) is used to obtain provisioning information from the data base 120 through the data base manager 116 and application interface 112. This information is used to provision the computational component via the secure session established in 516.
As can be seen from the foregoing discussion, during the provisioning process, a number of manual steps are performed to lock the computational component and the cryptotoken together logically. Thereafter, two-way authentication can be performed without human involvement. In other words, the computational device has a real identity that can be trusted by the provisioning server and other computational devices communicating with the provisioned computational component.
A second variation of the invention is illustrated in
In step 800, using the secure session established in 516, the provisioning server 104 instructs the computational component 128 to generate a certificate signing request with a specified common name. This name might include the host name or fully qualified domain name of the computational component, an ESID, SID, PID, MID for the computational component, or other values as may be useful in the context in which the computational component operates.
In step 810, the certificate signing request is transmitted to the provisioning server 104 using the secure session 516.
In step 820, the provisioning server signs the certificate request and returns the signed certificate to the computational component 128 and crypto-token 150.
In step 830, the crypto-token replaces the generic certificate 412 with the specific signed certificate received through the secure session 516 from the provisioning server 104.
As will be appreciated, the new certificate can be constructed to use the same public/private key pair 408 or a new public/private key pair.
Thereafter, computational component 128 can be identified directly by the information 224 and other fields in its new certificate directly and without a look-up in data base 120. That is, without having to translate between a generic token ID and the true identity of the computational component.
As will be appreciated, it is also possible that the original crypto-token 150 does not contain a digital certificate, but only a public/private key pair and a token ID. In this case the public/private key pair is used to establish a secure session 516 but without the use of digital certificates or using only the certificate of the provisioning server. This secure session can then be used to create a specific certificate for the computation component using the procedures 800-830.
Architecture for Provisioning and Licensing a Telecommunications Enterprise Network
Using the principles set forth above, an architecture for provisioning and licensing a telecommunications enterprise network will now be discussed with reference to
The media server 612 can be any telecommunication switch or server, such as an S8700™, S8300™, and S8300™ media server running the COMMUNICATION MANAGER™, all of which are sold by Avaya Inc.
The first, second, . . . nth computational components can be a device, such as media servers serving a variety of functions (e.g., spare processors), gateways, port networks, voice messaging systems, email servers, and instant messaging servers.
The networks 604 and 624 can be packet-switched and/or circuit-switched. Typically, network 624 is a local area network while network 604 is a wide area network, such as the Internet.
The media server 612 includes a license installation agent 628 that forwards a license file 632 to the various computational components. The license file defines the enterprise features and feature capacity allocations for the enterprise network 608.
As will be appreciated, during the transmission of licenses to the various computational components 616 and later communications between and among the computational components (including the media server) and with the licensing and provisioning system 600, it is important to provide adequate security to prevent spoofing and other security breaches. Preferably, each of the computational components has a unique, respective, digital certificate and public/private key pairs. The provision of digital certificates and public/private key pairs is effected by the use of the crypto-tokens 650a-o using the techniques discussed above. Before or after the PKI information has been transferred to a computational component, the pertinent licensing information may be provided to it.
The crypto-tokens 650 are identical to the crypto-token 150 of
A database (not shown) maintained by the licensing and provisioning system 600 comprises a plurality of records corresponding to hardware (e.g., processors or IP services interface cards) sold to customers. In particular, the database typically includes a serial number, serial number status or licensing state, client or purchaser, material code(s) (e.g., a material code in SAP that defines the hardware having the serial number), an Enterprise System ID or ESID that identifies uniquely the enterprise that is the subject of the record, a Module ID or MID that identifies a module in the associated enterprise record, and a System ID that identifies a system in the associated enterprise record. A media server is identified uniquely by the combination of SID and MID. The order database comprises a plurality of records associated with hardware and software corresponding to each customer order. Each order entry typically includes an order number, customer name, address, and contact information, and a series of quantity, material code, and description fields identifying the contents of each order. The databases and data structures are further described in copending U.S. patent application Ser. No. 10/232,906, filed Aug. 30, 2002, entitled “Remote Feature Activator Feature Extraction”, which is incorporated herein by this reference.
Process for Distributing PKI Information and Installing License Files
The process for distributing PKI information to each of the first, second, . . . nth computational components will now be described with reference to
In step 700, the first computational component 616a is unpacked, a crypto-token 650a inserted into an internal or external drive of the computational component, and the component 616a connected to a power source and the network 624. It is then turned on.
In step 704, during boot-up the first computational component 616a forms a host name from the component's serial number or other identifier, contacts the address server 620, and obtains an electronic address, typically an IP address and/or the address of the system 600 and/or media server 612. In one configuration, the component 616a forms the hostname using the unique identifier 418 of the crypto-token inserted in the drive.
In step 708, an authenticated and private communication session is created between the provisioning system and the computational component 616. The process for creating this session is described above in connection with steps 509 through 516. After this step, the system 600 or media server 612, depending on the entity responsible for administering the first computational component, may register the component and reboot the component after registration is completed to place the component in service.
The information communicated out-of-band to the provisioning system 600 and/or administration personnel at the media server 612 typically includes both the token ID 418 and information identifying uniquely the first computational component 616 on the network 608. If the information is not provided before the initial communication of the first computational component with the media server is made, an alarm will be triggered that will ultimately require the transmission of the identification information. The information is typically transmitted by a shipping clerk at the time of shipment of the first computational component, by the technician when the specific crypto-token to be used for provisioning is selected, or by the installing technician in response to an alarm triggered during installation of the first computational component.
In step 728, the media server 612 forwards a request from the first computational component 616a for and receives from the system 600 enterprise- and/or product-specific information so that the certificate generating agent in the computational component 616 can create a new certificate. The requested information, for example, can include the name and/or serial number of the first computational component and/or the ESID, SID, and MID associated with the first computational component.
In step 732, the certificate generating agent in the computational component 616 is provided with the enterprise- and/or product-specific information and generates a new certificate request, which is unique to the first computational component. The expiration date of the certificate request is typically the expiration date of the license. The certificate request includes the enterprise- and/or product-specific information. The certificate request not only identifies the first computational component uniquely within the enterprise network 608 but also identifies uniquely the first computational component with respect to other computational components in networks touching the enterprise network 608. For example, the certificate request may include a serial number uniquely identifying the component 616.
The various fields in the certificate request may be populated completely by the generator using information provided by the computational component 616 and/or provisioning system 600. Alternatively, the fields may be partly populated by the generator and the computational component 616 with the remainder of the fields being populated by the system 600 using information received from the database manager 116. In either event, the new certificate includes information unique to the computational component rather than simply information unique only to the token.
In step 736, the computational component forwards a certificate signing request including the new certificate request (which is unsigned) to the media server 612, which forwards the request to the system 600. The certificate signing agent 158, using the private key of the token 650, signs the certificate request. It then returns the signed certificate to the component 616.
In step 740, the signed certificate is received by the media server 612 and forwarded to the first computational component 616a. The first computational component 616a replaces the generic certificate with the signed certificate.
In step 748, the first computational component 616a receives from the media server 612 and installs the license file(s) and other provisioning and configuration information.
These steps are repeated for each of the other second . . . nth computational components 616b-n to provision/configure the various functional components in the enterprise network 612.
A number of variations and modifications of the invention can be used. It would be possible to provide for some features of the invention without providing others.
For example in one alternative embodiment, the various modules referenced herein are implemented as software, hardware (e.g., a logic circuit), or a combination thereof.
In another alternative embodiment, the division of the various functions performed by the various modules in the authentication file system are different.
In another embodiment, the present invention is not limited to licensing and/or provisioning activities. As will be appreciated, the present invention can be used to convey a digital certificate and private/public key pair to any computational component for any purpose and in any application. For example, the present invention can be used to provide PKI information to a personal computer or laptop in connection with e-commerce. It can be used to change PKI information on a computational component that has potentially been compromised.
In yet another embodiment, the dispensed private/public key pair can be used to validate a provided license. As will be appreciated, serial numbers or other unique identifiers are used in the above-referenced patent applications for license validation. In this embodiment, no serial numbers or other unique identifiers are required for license validation. Rather, the system 600 generates an enterprise master license, determines a hash value over the license contents. The private key of the system 600 then encrypts the hash value in the form of a digital signature in or appended to the license file. The license can then be provided to the remote media server 612 in the enterprise network. The crypto-token 650o in communication with the server 612 uses the public key in the certificate of the system 600 to decrypt the digital signature while the server determines the hash value of the license file. If the decrypted signature and the determined hash value match, the server knows that the license file has not been tampered with or otherwise altered. This approach may also be used with the server 612 being the allocation license file generator and the various computational components being the recipients of the generated allocation license files.
The present invention, in various embodiments, includes components, methods, processes, systems and/or apparatus substantially as depicted and described herein, including various embodiments, subcombinations, and subsets thereof. Those of skill in the art will understand how to make and use the present invention after understanding the present disclosure. The present invention, in various embodiments, includes providing devices and processes in the absence of items not depicted and/or described herein or in various embodiments hereof, including in the absence of such items as may have been used in previous devices or processes, e.g., for improving performance, achieving ease and\or reducing cost of implementation.
The foregoing discussion of the invention has been presented for purposes of illustration and description. The foregoing is not intended to limit the invention to the form or forms disclosed herein. In the foregoing Detailed Description for example, various features of the invention are grouped together in one or more embodiments for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that the claimed invention requires more features than are expressly recited in each claim. Rather, as the following claims reflect, inventive aspects lie in less than all features of a single foregoing disclosed embodiment. Thus, the following claims are hereby incorporated into this Detailed Description, with each claim standing on its own as a separate preferred embodiment of the invention.
Moreover though the description of the invention has included description of one or more embodiments and certain variations and modifications, other variations and modifications are within the scope of the invention, e.g., as may be within the skill and knowledge of those in the art, after understanding the present disclosure. It is intended to obtain rights which include alternative embodiments to the extent permitted, including alternate, interchangeable and/or equivalent structures, functions, ranges or steps to those claimed, whether or not such alternate, interchangeable and/or equivalent structures, functions, ranges or steps are disclosed herein, and without intending to publicly dedicate any patentable subject matter.
Number | Name | Date | Kind |
---|---|---|---|
4288659 | Atalla | Sep 1981 | A |
4405829 | Rivest et al. | Sep 1983 | A |
4780821 | Crossley | Oct 1988 | A |
4811393 | Hazard | Mar 1989 | A |
4888800 | Marshall et al. | Dec 1989 | A |
4937863 | Robert et al. | Jun 1990 | A |
5005122 | Griffin et al. | Apr 1991 | A |
5157663 | Major et al. | Oct 1992 | A |
5179591 | Hardy et al. | Jan 1993 | A |
5204897 | Wyman | Apr 1993 | A |
5206903 | Kohler et al. | Apr 1993 | A |
5230020 | Hardy et al. | Jul 1993 | A |
5260999 | Wyman | Nov 1993 | A |
5307481 | Shimazaki et al. | Apr 1994 | A |
5329570 | Glassmacher et al. | Jul 1994 | A |
5341427 | Hardy et al. | Aug 1994 | A |
5347580 | Molva et al. | Sep 1994 | A |
5386369 | Christiano | Jan 1995 | A |
5390297 | Barber et al. | Feb 1995 | A |
5408649 | Beshears et al. | Apr 1995 | A |
5448639 | Arazi | Sep 1995 | A |
5553143 | Ross et al. | Sep 1996 | A |
5563946 | Cooper et al. | Oct 1996 | A |
5646992 | Subler et al. | Jul 1997 | A |
5671412 | Christiano | Sep 1997 | A |
5673315 | Wolf | Sep 1997 | A |
5699431 | Van Oorschot et al. | Dec 1997 | A |
5708709 | Rose | Jan 1998 | A |
5717604 | Wiggins | Feb 1998 | A |
5724428 | Rivest | Mar 1998 | A |
5742757 | Hamadani et al. | Apr 1998 | A |
5745569 | Moskowitz et al. | Apr 1998 | A |
5745576 | Abraham et al. | Apr 1998 | A |
5745879 | Wyman | Apr 1998 | A |
5754761 | Willsey | May 1998 | A |
5758068 | Brandt et al. | May 1998 | A |
5758069 | Olsen | May 1998 | A |
5790074 | Rangedahl et al. | Aug 1998 | A |
5790664 | Coley et al. | Aug 1998 | A |
5828747 | Fisher et al. | Oct 1998 | A |
5835600 | Rivest | Nov 1998 | A |
5864620 | Pettitt | Jan 1999 | A |
5905793 | Flockhart et al. | May 1999 | A |
5905860 | Olsen et al. | May 1999 | A |
5935243 | Hasebe et al. | Aug 1999 | A |
5940504 | Griswold | Aug 1999 | A |
5960085 | de la Huerga | Sep 1999 | A |
5978565 | Ohran et al. | Nov 1999 | A |
5982873 | Flockhart et al. | Nov 1999 | A |
5995625 | Sudia et al. | Nov 1999 | A |
6006016 | Faigon et al. | Dec 1999 | A |
6009401 | Horstmann | Dec 1999 | A |
6011973 | Valentine et al. | Jan 2000 | A |
6023763 | Grumstrup et al. | Feb 2000 | A |
6023766 | Yamamura | Feb 2000 | A |
6047242 | Benson | Apr 2000 | A |
6067621 | Yu et al. | May 2000 | A |
6108703 | Leighton et al. | Aug 2000 | A |
6128389 | Chan et al. | Oct 2000 | A |
6134660 | Boneh et al. | Oct 2000 | A |
6148415 | Kobayashi et al. | Nov 2000 | A |
6163607 | Bogart et al. | Dec 2000 | A |
6173053 | Bogart et al. | Jan 2001 | B1 |
6178511 | Cohen et al. | Jan 2001 | B1 |
6189146 | Misra et al. | Feb 2001 | B1 |
6192122 | Flockhart et al. | Feb 2001 | B1 |
6212635 | Reardon | Apr 2001 | B1 |
6219652 | Carter et al. | Apr 2001 | B1 |
6223291 | Puhl et al. | Apr 2001 | B1 |
6246871 | Ala-Laurila | Jun 2001 | B1 |
6314565 | Kenner et al. | Nov 2001 | B1 |
6360320 | Ishiguro et al. | Mar 2002 | B1 |
6381747 | Wonfor et al. | Apr 2002 | B1 |
6414595 | Scrandis et al. | Jul 2002 | B1 |
6421726 | Kenner et al. | Jul 2002 | B1 |
6442708 | Dierauer et al. | Aug 2002 | B1 |
6463534 | Geiger et al. | Oct 2002 | B1 |
6498791 | Pickett | Dec 2002 | B2 |
6502079 | Ball et al. | Dec 2002 | B1 |
6513117 | Tarpenning et al. | Jan 2003 | B2 |
6513121 | Serkowski | Jan 2003 | B1 |
6539481 | Takahashi et al. | Mar 2003 | B1 |
6557105 | Tardo et al. | Apr 2003 | B1 |
6574612 | Baratti et al. | Jun 2003 | B1 |
6584454 | Hummel, Jr. et al. | Jun 2003 | B1 |
6640305 | Kocher et al. | Oct 2003 | B2 |
6654888 | Cooper et al. | Nov 2003 | B1 |
6675208 | Rai et al. | Jan 2004 | B1 |
6697945 | Ishiguro et al. | Feb 2004 | B2 |
6760324 | Scott et al. | Jul 2004 | B1 |
6765492 | Harris | Jul 2004 | B2 |
6769063 | Kanda et al. | Jul 2004 | B1 |
6775782 | Buros et al. | Aug 2004 | B1 |
6778820 | Tendler | Aug 2004 | B2 |
6795941 | Nickels | Sep 2004 | B2 |
6816842 | Singh et al. | Nov 2004 | B1 |
6826606 | Freeman et al. | Nov 2004 | B2 |
6842896 | Redding et al. | Jan 2005 | B1 |
6850958 | Wakabayashi | Feb 2005 | B2 |
6854010 | Christian et al. | Feb 2005 | B1 |
6868403 | Wiser et al. | Mar 2005 | B1 |
6876984 | Tadayon et al. | Apr 2005 | B2 |
6883095 | Sandhu et al. | Apr 2005 | B2 |
6889212 | Wang et al. | May 2005 | B1 |
6901386 | Dedrick et al. | May 2005 | B1 |
6904523 | Bialick et al. | Jun 2005 | B2 |
6920567 | Doherty et al. | Jul 2005 | B1 |
6928166 | Yoshizawa | Aug 2005 | B2 |
6928558 | Allahwerdi et al. | Aug 2005 | B1 |
6934463 | Ishiguro et al. | Aug 2005 | B2 |
6934848 | King et al. | Aug 2005 | B1 |
6957344 | Goldshlag et al. | Oct 2005 | B1 |
6961858 | Fransdonk | Nov 2005 | B2 |
6968384 | Redding et al. | Nov 2005 | B1 |
6973444 | Blinn et al. | Dec 2005 | B1 |
6976164 | King et al. | Dec 2005 | B1 |
6981222 | Rush et al. | Dec 2005 | B2 |
6993664 | Padole et al. | Jan 2006 | B2 |
7032113 | Pendlebury | Apr 2006 | B2 |
7035918 | Redding et al. | Apr 2006 | B1 |
7065214 | Ishiguro et al. | Jun 2006 | B2 |
7073063 | Peinado | Jul 2006 | B2 |
7080402 | Bates et al. | Jul 2006 | B2 |
7085382 | Terao et al. | Aug 2006 | B2 |
7100044 | Watanabe et al. | Aug 2006 | B2 |
7100200 | Pope et al. | Aug 2006 | B2 |
7124304 | Bel et al. | Oct 2006 | B2 |
7146340 | Musson | Dec 2006 | B1 |
7149806 | Perkins et al. | Dec 2006 | B2 |
7152245 | Dublish et al. | Dec 2006 | B2 |
7171662 | Misra et al. | Jan 2007 | B1 |
7185195 | Hug et al. | Feb 2007 | B2 |
7225333 | Peinado et al. | May 2007 | B2 |
7228426 | Sinha et al. | Jun 2007 | B2 |
7308717 | Koved et al. | Dec 2007 | B2 |
7313828 | Holopainen | Dec 2007 | B2 |
7318236 | DeMello et al. | Jan 2008 | B2 |
7336791 | Ishiguro | Feb 2008 | B2 |
7356692 | Bialick et al. | Apr 2008 | B2 |
7382881 | Uusitalo et al. | Jun 2008 | B2 |
7383205 | Peinado et al. | Jun 2008 | B1 |
7415729 | Ukeda et al. | Aug 2008 | B2 |
7545931 | Dillaway | Jun 2009 | B2 |
7552166 | Chack | Jun 2009 | B2 |
20010001268 | Menon et al. | May 2001 | A1 |
20010013024 | Takahashi et al. | Aug 2001 | A1 |
20010034846 | Beery | Oct 2001 | A1 |
20020013722 | Kanaga | Jan 2002 | A1 |
20020017977 | Wall | Feb 2002 | A1 |
20020038422 | Suwamoto et al. | Mar 2002 | A1 |
20020052939 | Lee | May 2002 | A1 |
20020083003 | Halliday et al. | Jun 2002 | A1 |
20020087892 | Imazu | Jul 2002 | A1 |
20020104006 | Boate et al. | Aug 2002 | A1 |
20020107809 | Biddle et al. | Aug 2002 | A1 |
20020112186 | Ford et al. | Aug 2002 | A1 |
20020116340 | Hellberg et al. | Aug 2002 | A1 |
20020138441 | Lopatic | Sep 2002 | A1 |
20020154777 | Candelore | Oct 2002 | A1 |
20020164025 | Raiz et al. | Nov 2002 | A1 |
20020169625 | Yang et al. | Nov 2002 | A1 |
20020176404 | Girard | Nov 2002 | A1 |
20020188656 | Patton et al. | Dec 2002 | A1 |
20020188704 | Gold | Dec 2002 | A1 |
20030005291 | Burn | Jan 2003 | A1 |
20030005427 | Herrero | Jan 2003 | A1 |
20030013411 | Uchiyama | Jan 2003 | A1 |
20030018491 | Nakahara et al. | Jan 2003 | A1 |
20030018582 | Yaacovi | Jan 2003 | A1 |
20030023564 | Padhye et al. | Jan 2003 | A1 |
20030055749 | Carmody et al. | Mar 2003 | A1 |
20030084306 | Abburi et al. | May 2003 | A1 |
20030095542 | Chang et al. | May 2003 | A1 |
20030115466 | Aull et al. | Jun 2003 | A1 |
20030144959 | Makita | Jul 2003 | A1 |
20030149670 | Cronce | Aug 2003 | A1 |
20030149874 | Balfanz et al. | Aug 2003 | A1 |
20030156719 | Cronce | Aug 2003 | A1 |
20030159033 | Ishiguro | Aug 2003 | A1 |
20030159070 | Mayer et al. | Aug 2003 | A1 |
20030163428 | Schneck et al. | Aug 2003 | A1 |
20030177393 | Ishiguro | Sep 2003 | A1 |
20030191936 | Kawatsura et al. | Oct 2003 | A1 |
20030208449 | Diao | Nov 2003 | A1 |
20030233547 | Gaston et al. | Dec 2003 | A1 |
20040010469 | Lenard et al. | Jan 2004 | A1 |
20040044629 | Walker et al. | Mar 2004 | A1 |
20040044630 | Walker et al. | Mar 2004 | A1 |
20040044631 | Walker et al. | Mar 2004 | A1 |
20040044901 | Serkowski et al. | Mar 2004 | A1 |
20040047354 | Slater et al. | Mar 2004 | A1 |
20040054909 | Serkowski et al. | Mar 2004 | A1 |
20040054930 | Walker et al. | Mar 2004 | A1 |
20040073517 | Zunke et al. | Apr 2004 | A1 |
20040078339 | Goringe et al. | Apr 2004 | A1 |
20040088541 | Messerges et al. | May 2004 | A1 |
20040103011 | Hatano et al. | May 2004 | A1 |
20040103324 | Band | May 2004 | A1 |
20040127196 | Dabbish et al. | Jul 2004 | A1 |
20040128395 | Miyazaki | Jul 2004 | A1 |
20040128551 | Walker et al. | Jul 2004 | A1 |
20040133794 | Kocher et al. | Jul 2004 | A1 |
20040166878 | Erskine et al. | Aug 2004 | A1 |
20040172367 | Chavez | Sep 2004 | A1 |
20040181695 | Walker | Sep 2004 | A1 |
20040181696 | Walker | Sep 2004 | A1 |
20040249763 | Vardi | Dec 2004 | A1 |
20040260589 | Varadarajan et al. | Dec 2004 | A1 |
20040268120 | Mirtal et al. | Dec 2004 | A1 |
20050005098 | Michaelis et al. | Jan 2005 | A1 |
20050038753 | Yen et al. | Feb 2005 | A1 |
20050076204 | Thornton et al. | Apr 2005 | A1 |
20050086174 | Eng | Apr 2005 | A1 |
20050091507 | Lee et al. | Apr 2005 | A1 |
20050144437 | Ransom et al. | Jun 2005 | A1 |
20050154877 | Trench | Jul 2005 | A1 |
20050185792 | Tokutani et al. | Aug 2005 | A1 |
20050198510 | Robert et al. | Sep 2005 | A1 |
20050202830 | Sudit | Sep 2005 | A1 |
20050229004 | Callaghan | Oct 2005 | A1 |
20050246098 | Bergstrom et al. | Nov 2005 | A1 |
20050289072 | Sabharwal | Dec 2005 | A1 |
20060021068 | Xu et al. | Jan 2006 | A1 |
20060026105 | Endoh | Feb 2006 | A1 |
20060036554 | Schrock et al. | Feb 2006 | A1 |
20060036894 | Bauer et al. | Feb 2006 | A1 |
20060064582 | Teal et al. | Mar 2006 | A1 |
20060089912 | Spagna et al. | Apr 2006 | A1 |
20060178953 | Aggarwal et al. | Aug 2006 | A1 |
20060242083 | Chavez | Oct 2006 | A1 |
20060294010 | Kim et al. | Dec 2006 | A1 |
20070033419 | Kocher et al. | Feb 2007 | A1 |
20070107067 | Fountian | May 2007 | A1 |
20070219917 | Liu et al. | Sep 2007 | A1 |
20080082449 | Wilkinson et al. | Apr 2008 | A1 |
20080141242 | Shapiro | Jun 2008 | A1 |
Number | Date | Country |
---|---|---|
1071253 | Jan 2001 | EP |
1562378 | Aug 2005 | EP |
2006085481 | Mar 2006 | JP |