Patent Description:
Industrial controllers historically have operated in tightly-controlled factory networks were a plurality of controllers and associated modules communicate. These lower level control elements often are in communication with higher level computing systems or servers that aggregate data from the controllers and help to manage day-to-day activities of an enterprise. In recent years however, control systems have increasingly become adapted for Ethernet communications which have opened these systems up to global networks such as the Internet. While it is advantageous for control systems to communicate across such global networks, other problems have ensued such as how to protect sensitive control systems and related intellectual property stored thereon from corruption or worse - cyber attack. Until now, various methods have been employed to authenticate network parties that need to communicate to control systems over public networks. These methods have often placed the burden on the control system to not only authenticate a respective party but to also be responsible for determining which parties should be allowed access to which portion of the control system.

Controllers provide an embedded approach where resources are limited for activities such as determining and authorizing who or what should access the controller. Generally, the controller or control systems in general need what limited processing and storage capabilities they have to be employed for automated manufacturing operations. Prior attempts at granting access to the valuable intellectual property contained within a controller (or control component) was to employ an external server to check whether or not a particular device or software component was licensed for such access. Protocols may have been employed that were specific to one party, company, or product for gaining subsequent controller access (e.g., passwords) yet not using more secure schemes in the process.

<CIT> discloses a software licensing system that includes a license generator and at least one license server and multiple clients. The license generator creates a license pack containing a set of one or more individual software licenses.

It is the object of the present invention to provide a more efficient technique for licensing authentication.

To the accomplishment of the foregoing and related ends, certain illustrative aspects are described herein in connection with the following description and the annexed drawings. These aspects are indicative of various ways which can be practiced, all of which are intended to be covered herein. Other advantages and novel features may become apparent from the following detailed description when considered in conjunction with the drawings.

A licensing protocol for an industrial automation system is provided. In one aspect, an industrial automation system is provided. This includes at least one license component that is granted by a third party to permit access to a portion of an industrial control component. At least one protocol component that is based in part on a private key exchange facilitates authentication and access to the portion of the industrial control component. Single or mutual authentication protocols can be provided to support the desired access to the industrial control component.

It is noted that as used in this application, terms such as "component," "protocol," "certificate, " and the like are intended to refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution as applied to an automation system for industrial control. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program and a computer. By way of illustration, both an application running on a server and the server can be components. One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers, industrial controllers, and/or modules communicating therewith.

Referring initially to <FIG>, a system <NUM> illustrates automated licensing for an industrial automation system. An accessing component <NUM> interacts with a license generating component (LGC) component <NUM> to receive licensing rights to one or more control components <NUM>. The LGC <NUM> may be a computer operated by a business that sells rights to the accessing component <NUM> in order to access all or portions of the control components <NUM> (e.g., rights to access portions or memory, access alarms, events, programs, recipes, and so forth). For example, the LGC <NUM> could be the manufacturer of the control components <NUM>, the owner of the control components, or a third party deemed suitable to generate licenses. As illustrated, a certificate <NUM> can be issued by the third party component <NUM> to the accessing component <NUM>, where the certificate is employed in accordance with an authentication component <NUM> to gain access to the control components <NUM> across a network (or networks) <NUM>. In general, the authentication component <NUM> utilizes the certificate <NUM> and one or more security protocols such as private keys to gain access to the control components <NUM>. As will be described in more detail below with respect to <FIG>, a one way authentication process can be employed at <NUM>, whereas <FIG> illustrate aspects of a mutual authentication process.

The authentication component <NUM> can be employed by two or more components to authenticate between such components across the network <NUM>, where authenticate implies establishing a substantially secure and trusted connection to exchange data. Accessing components <NUM> may employ one or more computers, industrial components, or other network components that communicate across the network <NUM> to one or more industrial control components <NUM> such as represented by programmable logic controllers (PLCs) <NUM> (or other factory components as noted below). It is noted that the accessing component <NUM> could also be other control components that are similar in nature to the control components <NUM>.

The authentication component <NUM> enables authentication between industrial control components <NUM> and accessing components <NUM> after a certificate <NUM> has been issued. In one aspect, a cryptographic authentication protocol is provided by the authentication component <NUM> that employs a one-way or mutual authentication scheme based in part on an asymmetric key system that generally does not require a public key infrastructure to be present. The protocol is such that it is resistant to commonly known attacks. In this manner, a cryptographic-based authentication protocol provides a technical barrier to unauthorized applications and devices participating on an industrial automation network <NUM> that includes controllers, I/O modules, factory devices, computers, servers, clients, and/or other network components.

Some basic aspects of licensing are now discussed before more detailed aspects that are discussed below with respect to <FIG>. Licensing often involves two or more processes. First, there is the issuance of a license by the LGC <NUM> to a vendor (called the licensee or accessing component). Secondly, client implementations created by the licensee should include the acts to provide and validate the authenticity of the licenses at runtime.

When a licensee obtains a license from the LGC <NUM>, electronic copies of at least two artifacts are received and used in a license authentication protocol described below. This can include a license certificate <NUM> which can be used to demonstrate to the protected hardware/software at <NUM> the existence of a valid license that has been issued by the LGC <NUM>. For instance, the LGC <NUM> may own one or more of the control components <NUM> and thus grant licenses to access the components. A private key at <NUM> can be used by licensees to prove themselves as the authentic holder of the license certificate <NUM>.

Generally, the license certificate <NUM> is an electronic document that contains information about the licensee, what type of license they hold, and a public key that has been assigned to the licensee and is used to validate their identity, for example. The license certificate <NUM> should be digitally signed by the LGC <NUM> so that the components <NUM> can validate the authenticity of the certificate itself. Typically, the licensee embeds the license certificate <NUM> within its clients or access components <NUM>. At runtime, the clients can download the license certificate <NUM> to protected components <NUM> to establish what they are licensed for.

Before a client can access a licensed feature of a protected device or component <NUM>, it downloads its copy of the license certificate <NUM> to the device. This provides the device with information about the client or access component <NUM> that will want to access its protected features. When in possession of the certificate <NUM>, the device decodes it and verifies its authenticity. It performs this by validating the digital signature within the certificate using a public key supplied by the third party <NUM>. If this succeeds, the device can make the following assertions: The certificate is valid and has not been tampered with; and the certificate was originally issued by the LGC <NUM>.

Typically, there is at least one more assertion that the device or component <NUM> performs before it can grant access to the features provided by the certificate <NUM> and entitles the licensee access thereto. Generally, the component <NUM> issues a challenge back to the client at <NUM>. To successfully meet the challenge, the client or accessing component <NUM> decrypts the session key with its own embedded private key. To prove to the device or component <NUM> that it successfully decrypted the session key, it can produce a one-way hash of the session key and send it back to the device. If the hash matches the device's own hash of the session key, the challenge succeeds and the device can perform the assertion. As noted above, two-way authentication schemes can also be provided as will be described in more detail below. When the client or accessing component <NUM> has successfully proven to the device possesses the private key that was associated with the provided certificate <NUM>, the device or component <NUM> can allow the client to access the licensed features that are specified by the certificate.

The device or component <NUM> can deny access to licensed features if any of the following examples are true: The client never provided a certificate; the certificate validation did not succeed e.g., the certificate was tampered with or it was not signed by the third party; The client failed to provide a hash of the decrypted session key; The client doesn't have a private key which matches the public key within the certificate; The certificate does not grant access to the specific feature the client attempts to access; The certificate contains an expiry time that is in the past or a validity time that occurs in the future; and/or The public key in the certificate matches a key within the device's revocation list.

Before proceeding, it is noted that the components <NUM> can include various computer or network components such as servers, clients, communications modules, mobile computers, wireless components, control components and so forth that are capable of interacting across the network <NUM>. Similarly, the term PLC as used herein can include functionality that can be shared across multiple components, systems, and or networks <NUM>. For example, one or more PLCs <NUM> can communicate and cooperate with various network devices across the network <NUM>. This can include substantially any type of control, communications module, computer, I/O device, sensor, Human Machine Interface (HMI)) that communicate via the network <NUM> which includes control, automation, and/or public networks.

The network <NUM> can include public networks such as the Internet, Intranets, and automation networks such as Control and Information Protocol (CIP) networks including DeviceNet and ControlNet. Other networks include Ethernet, DH/DH+, Remote I/O, Fieldbus, Modbus, Profibus, wireless networks, serial protocols, and so forth. In addition, the network devices can include various possibilities (hardware and/or software components). These include components such as switches with virtual local area network (VLAN) capability, LANs, WANs, proxies, gateways, routers, firewalls, virtual private network (VPN) devices, servers, clients, computers, configuration tools, monitoring tools, and/or other devices.

Referring now to <FIG>, a one-way authentication protocol and process is illustrated. As noted above, <FIG> illustrate mutual authentication protocol and process aspects. While, for purposes of simplicity of explanation, the methodologies are shown and described as a series of acts, it is to be understood and appreciated that the methodology is not limited by the order of acts, as some acts may occur in different orders and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology could alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all illustrated acts may be required to implement a methodology as described herein.

Referring to <FIG>, and at reference numeral <NUM>, certificate messages are provided. Generally, prior to accessing a protected feature of a device <NUM>, a client <NUM> presents its license certificate to the device at <NUM>. It performs this by initiating a certificate message to the device at <NUM>. The Certificate message <NUM> downloads the certificate message to the device. The Certificate message is a logical message that may, depending upon the actual size of the certificate document and the capabilities of the transport, be multiple actual physical messages.

Upon receipt of the Certificate message at <NUM>, the device <NUM> decodes the certificate and processes it. For each principal section that the devices locates within the certificate, attempt to identify and verify the digital signature of the associated authority. For a simple license, there typically should be one principal section (for the licensee) and an authority element for the third party. The digital signature for the third party should reference the principal element and should verify properly using the third party public key (embedded within the device <NUM>). If the digital signature for the principal properly verifies, then the device <NUM> can assume that the specific principal section of the certificate is valid, unmodified, and authentic.

At <NUM>, a challenge message can be issued by the device <NUM>. Even though a certificate may be proven authentic, the device should still confirm that the client <NUM> is associated with the principal identified within the certificate. Thus, the device prepares a challenge message to send back to the client at <NUM>. To prepare a challenge message, the device <NUM> should create a random session key for example although other components could be employed. If the principal has an associated Key Info element that defines the public key for the principal, then the session key is encrypted with the defined key. If no key has been associated with the principal, then the session key can be placed into the challenge message unencrypted. The process of encrypting a session key can repeated for each principal within the certificate. The device <NUM> is free to reuse the same session key value for each principal, or to generate a new one for each principal instance, if desired. The set of encrypted session keys can be sent back to the client as a challenge to it, that it is the authorized holder of the certificate that it provided. The challenge message <NUM> is the logical response to the certificate message <NUM>.

Proceeding to <NUM>, a response message can be generated by the client <NUM>. In order to meet the challenge <NUM> and prove to the device <NUM> that the client <NUM> is authorized, it decodes the challenge message and generates a matching response message at <NUM>. The response message <NUM> is a matter of taking each encrypted session key in the challenge message <NUM> and decrypting it with the private key of the associated principal (which the client should have in its possession). To prove to the device <NUM> that it could successfully decode the challenge and the session keys, the client <NUM> produces a one-way hash of each session key and sends it to the device as the response message <NUM> to the challenge.

At <NUM>, the last stage of the protocol <NUM> is to validate the response message <NUM> from the client and return a session message that identifies success or failure of the Challenge-Response negotiation. Here, the device <NUM> takes the hashed session keys from the response message <NUM> and compares them to the one-way hash of the session keys that it has performed. If they match, then the session can be successfully established. Note that a successfully established session implies that the device can trust the assertions made for the corresponding principal. If the assertion was a license assertion, then the client <NUM> can be licensed for the specified feature. It is possible for the client <NUM> to succeed the challenge on some sessions and not on others. The device should ensure that they have access to the features that they have rights based on the successfully established sessions.

Although the protocol <NUM> described above uses the term "session key" to describe the shared piece of information that is defined between the client <NUM> and the device <NUM>, this value by itself does not represent an established communication session between the client and the device. It is assumed that most communications between the client and the device can take place in the context of a connection. The assertions associated with a session can be considered valid as long as the corresponding connection is maintained. If a connection is lost, the client may need to reestablish his rights by engaging in the licensing protocol <NUM> by issuing a new certificate message on the newly established connection. The licensing protocol <NUM> does not preclude the use of unconnected message exchanges. In that case, the "session key" may be used to establish a logical context between the client <NUM> and the device <NUM>.

Turning to <FIG>, mutual authentication protocols are illustrated. Before proceeding, a general discussion is provided. Devices that support license protected services manage a number of electronic artifacts used in the implementation of the license exchange and validation process. This can include an identity certificate for businesses or third parties that includes a public key that is used to identify valid license certificates issued to licensees. An identity certificate can be provided for hardware or software that was issued by and digitally signed by the third party. This certificate includes the public key of the hardware/software component. Another component can include a hardware private key that corresponds to the public key in the hardware identity certificate. An optional revocation list can be provided that includes information about which previously granted licenses have been revoked by the third party or business entity.

The device should protect all of these artifacts from tampering. However, two of them have additional handling requirements that the device should respect. The device private key is confidential data that should not be known by any other entity. To that end, the device should take steps to keep the private key of the device well hidden and protected from inspection. The revocation list is data that may not remain static over the service life of the device. The device should have some means of allowing the revocation list to be updated.

When a licensee obtains a license from the third party, the licensee should receive electronic copies of at least three artifacts used in the license authentication protocol. This can include an identity certificate for the third party that contains a public key and is used to validate certificates provided by devices or components. A license certificate can be provided which can be used to demonstrate to the protected hardware the existence of a valid license that has been issued by the third party. A private key can also be employed which can be used by licensees to prove themselves as the authentic holder of the license certificate. In order to access a license protected feature of a device, the licensee and the device should engage in an exchange and verification protocol in which they exchange their respective certificates and generate challenges for each other to respond to. This protocol can employ at least three bi-directional exchanges in order to accomplish its goals as illustrated in <FIG>.

Proceeding to <FIG>, a certificate exchange <NUM> is illustrated. A client <NUM> initiates the protocol by sending a device <NUM> its certificate. This provides the device <NUM> with identity information about the client <NUM>, because the certificate includes the client's public key, and the services of the device that it is allowed to access. When in possession of the certificate, the device <NUM> decodes it and verifies its integrity and authenticity. The device <NUM> performs this by validating the digital signature within the certificate using the third party's public key. It also checks the public key embedded within the client certificate against its revocation list. If this succeeds, the device can make the following assertions: The licensee certificate is valid and has not been tampered with; the licensee certificate was originally issued by the third party; and the licensee certificate can be used to identify which services on the device the client is licensed to use.

If successful, the device <NUM> responds with its own identity certificate and the client decodes and verifies the integrity and authenticity of the device's certificate and verifies that the device's public key has not been revoked. If successful, the device can make a similar set of assertions including: The device certificate is valid and has not been tampered with; and the device certificate was originally issued by the third party.

<FIG> illustrates a challenge exchange process <NUM>. After exchanging and validating certificates, the two parties (or more) have an understanding of who each other are claiming to be, and a device <NUM> knows what a client <NUM> is asserting its licensed rights to be; however, they do not have any confidence that the other party is the valid holder of the certificate they just presented. They have done nothing to authenticate the other. Building that confidence is one possible reason for the next two exchanges illustrated at <FIG> and <FIG>.

To initiate the challenge exchange <NUM>, the client <NUM> prepares a non-deterministic challenge for the device <NUM>. This challenge is encrypted with the public key of the device and digitally signed by the client. Encrypting the challenge ensures that only the device with the proper private key can successfully respond to the challenge. In response, the device <NUM> decodes the challenge and prepares its own similar looking challenge back to the client. Its challenge to the client also incorporates a non-deterministic challenge encrypted with the client's public key and digitally signed by the device. By digitally signing the messages, the client <NUM> and device <NUM> have an additional level of guarantee that the message was produced by the holder of the public key and has not been tampered with during its trip.

To reduce the number of round trips, the device's challenge to the client <NUM> includes its response to the client's challenge. This response can be included within the encrypted part of the data the device <NUM> sends back to the client <NUM>. After this exchange, at least one more assertion can be made by the client where the device is considered a valid holder of the presented device certificate.

Turning to <FIG>, a session establishment process <NUM> is illustrated. In this aspect, a device <NUM> desires a similar confidence that a client <NUM> is indeed a valid holder of the license certificate that was presented during the certificate exchange described above. To complete the licensing exchange, the client <NUM> responds to the device challenge presented in the previous exchange. When the device <NUM> has confirmed that the client successfully interpreted its challenge, the licensing exchange and verification is complete. The device is able to now make the corresponding assertion about the client <NUM> that the client is the valid holder of the presented licensee certificate.

At this point the device can allow the client to access the licensed features that are specified by the certificate. The device can deny access to licensed features if any of the following are true: the client never provided a certificate or the certificate was an unsupported format; the certificate validation did not succeed; the client <NUM> failed to provide a response to its challenge; the client doesn't have a private key which matches the public key within the certificate; the certificate does not grant access to the specific feature the client attempts to access; the certificate contains an expiry time that is in the past or a validity time that occurs in the future. This information is contained with attributes section and can be used with devices that have knowledge of current time; and/or the license information in the certificate matches information in the device's revocation list. This may indicate that although the client has a valid license and credentials, the granted license has been revoked from the licensee.

Referring to <FIG>, example aspects of a license authentication protocol <NUM> are illustrated. The following components of the protocol <NUM> can be provided:.

At <NUM>, Concatenation is the process of combining a string of bytes together. At <NUM>, SHA-<NUM> is a cryptographic hash function that takes a string of bytes (message) of any length and produces a fixed length string of bytes (e.g., <NUM> bytes).

At <NUM>, Random Number is a value from a sequence that has no discernible pattern. For this application of random numbers, it is desired that the source of random numbers be statistically random and derived from a non-deterministic cause. At <NUM> a Sequence Number is a value from a sequence that may have a discernible pattern. If the sequence number is based on a time pattern, then the representation "TIMEx" is used. To the extent that the device is capable to represent time, the time value should include date values and the representation of time granularity to fractional seconds if possible. At <NUM>, RSA is an asymmetric encryption and decryption algorithm. A message can be transformed into an encrypted message using the public or private key, such that it can be transformed back into the original message using the other key. At <NUM>, a Digital Signature is a method of authenticating a message by employing complementary algorithms. At <NUM>, a Challenge is a single use value (nonce) used for authentication and to avoid replay attacks. At <NUM>, a Certificate is a block of data that encodes at minimum the licenses and public key of the holder, and is digitally signed by the certificate issuing authority. At <NUM>, a Response is a block of data that identifies the success or failure of the session establishment protocol.

Now turning to <FIG>, an example protocol exchange <NUM> is illustrated. The exchange <NUM> is between a client <NUM> and a device <NUM> but other components such as servers or industrial communications modules could also be involved for example. At <NUM>, the client <NUM> issues a Certificate-Submit message to the device <NUM>. One purpose of this message is to download the client's certificate to the device <NUM> and obtain the device's certificate. Upon receipt of the Certificate-Submit message the device <NUM> decodes the certificate and processes it. Processing the certificate involves validating the digital signature against the device's known public key for the certificate issuing authority (specifically the public key of third party). If the digital signature verifies, then the device <NUM> can assume that the certificate is valid, unmodified, and authentic. If the certificate is invalid for any reason, an error response can be returned to the client instead of a Certificate-Response message at <NUM>.

At <NUM>, the device <NUM> responds to the Certificate-Submit message <NUM> by sending the client's its own certificate. This certificate should also be digitally signed by the certificate issuing authority (third party). Upon receipt of the Certificate-Response message <NUM>, the client <NUM> decodes the certificate and process it validating the digital signature to assure that the certificate is valid, unmodified, and authentic. Clients can also support revocation list that could be used to reject a device's certificate.

At <NUM>, even though the exchanged certificates may prove to be authentic, the two parties still confirm that the other is the actual party that is identified within the certificate. To perform this, the client <NUM> initiates a challenge to the device at <NUM> (and the device will respond with its own challenge back to the client). As indicated earlier, the challenge can be composed of a single-use set of values (nonce). The client <NUM> uses a random number generator to create a random sequence of bytes and then concatenates them with a sequence value and the current time value. An implementation should strive to provide a random byte sequence of <NUM> bytes for example, although a minimal implementation may use a sequence as short as <NUM> bytes long. This set of bytes is then turned into a fixed length set of bytes using the SHA-<NUM> hash algorithm. This sequence of <NUM> bytes can be referred to as the CHALLENGEClient value.

The client <NUM> forms the challenge message <NUM> for the device by encrypting this value with the public key of the device (obtained from the device's certificate) and digitally signing the result with its own private key. This challenge message <NUM> is then submitted to the device. In order to respond to the challenge, the device <NUM> validates the digital signature of the message and decodes the original CHALLENGEClient value by decrypting the message data with its own private key. If the Challenge-Submit message <NUM> is invalid (such as an invalid signature), an error response is returned rather than a Challenge-Response message <NUM>.

At <NUM>, the Challenge-Response message that is sent back to the client <NUM> has a dual purpose. It can be used to begin authentication of the client <NUM> to prove that it is the valid holder of the CERTClient certificate that was transmitted during the Certificate-Submit message <NUM>. Also, it can be used to answer the client's challenge. In doing so, it proves to the client that it is the valid holder of the CERTDevice certificate that was transmitted during the Certificate-Response message <NUM>.

Generally, the device <NUM> produces its own CHALLENGEDevice data using the same algorithm used by the client <NUM> to produce its challenge data. It generates a random sequence of bytes, and concatenates a sequence number and time value, then produces an SHA-<NUM> hash of the entire sequence. The CHALLENGEClient and CHALLENGEDevice data blocks can be concatenated together into a <NUM> byte block of data that is then encrypted with the client's public key (obtained from the CERTClient certificate). The result is then digitally signed by the device <NUM> to prove its authenticity.

When the client <NUM> receives the response message <NUM>, it validates the digital signature and then decrypts the message data. When decrypted, the client <NUM> should find the CHALLENGEClient data block that it originally sent to the device. If this data block matches the original data block sent by the client <NUM>, then the device <NUM> has successfully responded to the client's challenge at <NUM> and the client <NUM> can assume that the device is a valid holder of the CERTDevice certificate that was received in the Certificate-Response message <NUM>. If the Challenge-Response message <NUM> is invalid, the client aborts the license attempt and does not proceed on to a Session-Submit message at <NUM>. The client <NUM> should also find a CHALLENGEDevice data block that was produced by the device <NUM>. The final step of the process is for the client <NUM> to prove to the device <NUM> that it was able to properly decode this value.

At <NUM>, the remaining assertion that yet needs to be verified is that the client <NUM> is the valid holder of the CERTClient certificate that was submitted in the initial Challenge-Submit message <NUM>. To perform this, the client <NUM> takes the CHALLENGEDevice data that was obtained in the Challenge-Response message <NUM> and encrypts it with the device's public key, digitally sign the message and sends it back to the device <NUM>. When the device <NUM> receives the Session-Submit message <NUM>, it validates the digital signature of the client <NUM> and then decodes the encrypted data block. The device <NUM> should find the same CHALLENGEDevice byte sequence that it sent to the client in the Challenge-Response message <NUM>. If this is the same set of bytes, then the client <NUM> has successfully responded to the challenge and the device <NUM> can trust that the client is the valid holder of the CERTClient certificate that it received in the Certificate-Submit <NUM>.

At <NUM>, the last step of the process <NUM> is for the device <NUM> to indicate to the client <NUM> whether or not the license session was successfully established. The device <NUM> prepares a response that indicates to the client whether or not the device will allow the session. The response includes information about which licenses were accepted and which were rejected. It then digitally signs this response and sends it back to the client as the Session-Response message. When this message <NUM> is received by the client <NUM>, it can verify the digital signature and know whether or not is has access to the license protected features. It is possible for the client <NUM> to succeed the challenge on some sessions and not on others. The device <NUM> should ensure that the clients <NUM> have access to the features in the context of their successfully established sessions.

<FIG> illustrates exemplary state diagram <NUM> for message exchange. Although four states are illustrated, it is to be appreciated that more that four states can be provided. The state diagram <NUM> includes four states such as an initial state <NUM>, a wait for challenge submit state <NUM>, a wait for session submit state <NUM>, and a session state <NUM>. As shown, transitions for entering a respective state other than the initial state <NUM> include receiving a valid client certificate or sending a valid certificate-response, receiving a valid challenge or sending a challenge response, and/or receiving a challenge at a device or sending a session response. Reasons for exiting a respective state include invalid signatures, timeouts, errors detected, invalid challenges, and/or a session close out or time out. As can be appreciated, other transitions can be provided for within a respective state.

Referring to <FIG>, an example certificate <NUM> is illustrated. Cryptographic licensing can employ a binary certificate <NUM> that meets the needs of the embedded environment. The certificate <NUM> can be designed to be compact in its representation, yet expressive and extensible in its content. The general organization of the certificate is in three parts. A Certificate Header Se910 section defines the size and format version of the certificate <NUM>. A Licenses Section <NUM> is a variable length section that defines the licenses granted by the certificate. An Attributes Section <NUM> is a variable length section that can include a number of additional attributes about the certificate <NUM>. Typically, there are two attributes that are found in this section <NUM>. A "Public Key" <NUM> defines the public key associated with the holder of this certificate <NUM>. A "Digital Signature" attribute <NUM> provides validation for all the data in the certificate that precedes it. The certificate header section <NUM> can include components of the following table:.

The Licenses section appears <NUM> in any certificate that is used for licensing. Its purpose is to define the set of licenses that have been granted to the valid holder of the license certificate <NUM>. The section <NUM> is a counted set of license structures as defined by the following table.

The Attribute section <NUM> includes a set of typed parameters that provide additional information about the certificate. The Attribute section <NUM> can be designed for extensibility in that new attributes may be introduced overtime. The number of Attributes within the Attribute section is not predetermined; where implementations should parse the Attribute section up to length of the certificate. Primary Attributes <NUM> that may be found in this section <NUM> are the Public Key attribute (which communicates the public key of the certificate holder) and the Digital Signature (which validates the certificate authenticity from the certificate issuer). The digital signature attribute <NUM> can be assumed to validate all the certificate data that precedes it. This implies that it should be the last attribute in the Attributes section <NUM>.

The format of an Attribute can be defined as in the following table:.

<FIG> illustrates a simplified message exchange process <NUM>. In the simplified exchange <NUM>, a client <NUM> submits a certificate <NUM> to a device <NUM>. The device <NUM> verifies the certificate is valid whereby the device now has the client's public key. The device <NUM> generates a nonce (number used only once), where the nonce is hashed and encrypted with the client's public key and sent to the client at <NUM> as part of a challenge. The client <NUM> decrypts the data sent, hashes the data, and sends it back as a response <NUM>. The device <NUM> compares the client's response with the expected value and if identical the client is licensed. At <NUM>, a session response is sent by the device <NUM> indicating a session has been established.

Claim 1:
A computer-implemented method to facilitate licensing in an industrial automation environment, the method comprising:
transmitting a certificate (<NUM>) from a client (<NUM>; <NUM>;<NUM>;<NUM>) to a device (<NUM>; <NUM>; <NUM>; <NUM>), wherein the certificate is issued to the client as a license from a third party (<NUM>), and wherein the certificate comprises a public key assigned to the client;
obtaining, by the client from the third party, a private key associated with the certificate; the method being characterised in that it comprises
generating, by the client, a response message to a challenge message issued by the device, the generating comprising decrypting, with the private key, a session key that is encrypted with the public key, the generating further comprising producing a one-way hash of the session key; and
establishing a session between the client and the device based in part on the certificate and whether the one-way hash of the session key matches a one-way hash of the session key performed by the device.