Programming Image Encryption
For Cyclone LC, Cyclone FX, Cyclone MultiChannel
Cyclone FX-level programmers, and single channel Cyclone LC programmers with an optional ProCryption license, have access to the ProCryption security features. These include the ability to limit programming counts, programming dates, and the ability to encrypt Programming Images with user generated ImageKeys. These encrypted images may only be used for programming on Cyclones that are also pre-configured with the same ImageKey. This keeps the user securely in control of both their intellectual property and the programming process.
Overview
PEmicro uses a combination of industry-standard RSA and AES encryption technologies to encrypt images. When a programming image has been encrypted, it requires two different asymmetric keys to be decrypted. The first is a user-generated RSA encryption key that was specified when the programming image was generated. The second is a native key which comes pre-installed in the Cyclone (and does not exist on the PC). This means that an encrypted image may (A) only be loaded onto a Cyclone which holds a copy of a user-generated ImageKey, and (B) only be decrypted for programming while on a Cyclone which holds a copy of a user-generated ImageKey. The Cyclone Control Suite (GUI, Console, SDK) allows the user to add and delete ImageKeys from Cyclones, much as programming images may be added or deleted. While many users will use only a single ImageKey to encrypt all of their images, Cyclones may have many different keys loaded.
Encrypted images are stored in the Cyclone in their encrypted form. If the ImageKey needed by a programming image is deleted from the Cyclone, the Cyclone loses the ability to load any images encrypted with that ImageKey or program any encrypted images that use that ImageKey that are already loaded. Adding the ImageKey back into a Cyclone gives that Cyclone access to those stored encrypted images that require that ImageKey.
Encrypted images can safely be sent through electronic means to production facilities since they are unusable without a Cyclone which has been pre-loaded with the appropriate ImageKey.
Encrypting/Decrypting a Programming Image
The Cyclone Image Creation Utility can generate ImageKeys that are used to encrypt programming images. The steps that are necessary to generate ImageKeys, encrypt programming images, provision Cyclones to decrypt, and program with encrypted images are detailed in ProCryption Security Features.
What is Encrypted in an .eSAP File, and How
An encrypted image (.eSAP) contains three distinct sections: an informational header, a configuration section, and a programming data section. The ImageKey encrypts each section in different ways to control access to each portion of the eSAP file.
The three eSAP sections are:
1) Informational Header
This section includes the description of the eSAP Image, its unique ID, the ID and name of the ImageKey used to encrypt it, and a checksum of the data. This section is not encrypted.
2) Configuration Section
This section contains a copy of the configuration settings used to generate the Image including which algorithm was used, power settings, clock settings, script files, and paths to the binary data files. No programming data from the user's data files is included in this section. This section is encrypted in such a way that if a user has the appropriate ImageKey on the PC, they may import the configuration information from an eSAP file into the Image Creation Utility. This is useful for seeing the settings used to generate an image, and, if the user has all of the data files needed, generate a new programming image file with the same configuration.
3) Programming Data
This section contains all of the information a Cyclone needs to program a target as specified in the image creation process. This includes all programming data, algorithms, scripts, settings, etc. This section is encrypted with several keys, including the user-generated asymmetric key as well as a native asymmetric key used by the Cyclone. Once encrypted, this section may not be decrypted except by the Cyclone during the programming process.
Figure: Programming Image Encryption

The end result of the encryption used to protect the programming data is that the section can only be decrypted and used internally on a Cyclone, which has a copy of the specified ImageKey provisioned within it. This eSAP section cannot be decrypted on a PC even with the ImageKey.
Managing Encryption For Production Programming
The steps needed to encrypt programming images using the Cyclone Image Creation Utility are detailed in Encryption - ProCryption Security. This section details how to successfully implement the use of these encrypted (eSAP) images in the production programming process.
Provisioning a Cyclone with an ImageKey
Cyclones that have been provisioned with an ImageKey are the only Cyclones that are able to load and program eSAP images encrypted with that ImageKey. When the user determines that one or more Cyclone programmer(s) will have access to an encrypted image, they need to load the ImageKey that was used to encrypt that image onto the Cyclone. This can be done with the Cyclone Control Suite GUI, Console, or SDK. The transfer of an ImageKey to a Cyclone using the Cyclone Control Suite is always secured by encrypting the ImageKey with an RSA public key specific to the Cyclone that it is connected to. Instructions for using these Control Suite options are explained in Cyclone Programmer Automated Control.
The figure below shows the Cyclone Control GUI with the Encrypted Keys tab selected.
Figure: ImageKey Listing for Connected Cyclone

This tab displays any ImageKeys that are present on the Cyclone to which the user is connected.
Note
If there is an encrypted SAP image on the Cyclone whose corresponding ImageKey has been removed, the required ImageKey will be displayed as "Missing," along with its Name and ID.
To provision a Cyclone with an ImageKey, the user simply clicks the "Add Encryption Key" button and browses for the ImageKey that they wish to load onto the connected Cyclone.
Figure: Browse for ImageKey

Removing ImageKeys From A Cyclone
It is also easy to remove an ImageKey from the connected Cyclone. The user selects the ImageKey that they wish to delete and clicks the "Delete Encryption Key" button.
Figure: ImageKey Selected for Deletion

If the ImageKey that was selected for deletion is one that is required to decrypt one or more eSAP images that are on the connected Cyclone, a warning message will be displayed when the Delete button is pressed. The user may then cancel the deletion or confirm that they wish to proceed.
Figure: Warning: ImageKey Used By SAP Image on Connected Cyclone

Loading and Programming with Encrypted SAP Images
From the user's perspective, loading an eSAP file with the Cyclone Image Creation Utility and programming with that eSAP file looks the same as loading/using a SAP file which is not encrypted (as long as the appropriate ImageKey exists on the Cyclone).
Figure: Load Encrypted Image (eSAP) onto Cyclone with Corresponding ImageKey

When the user attempts to load an encrypted programming image onto a Cyclone, the Cyclone will refuse to load the image unless the appropriate ImageKey resides on the Cyclone. If the ImageKey is present, the Cyclone will load the eSAP file and automatically decrypt it using both the matching ImageKey and the Cyclone's internal decryption mechanism.
A user may create and use multiple ImageKeys and corresponding eSAP images on a single Cyclone.
The decryption process is transparent to the user when the Cyclone goes to program the target. The decrypted programming image appears as usual on the Cyclone menu screen. The user can now program devices using this programming image.
Figure: Decryption Occurs Automatically For Programming

Encryption Status of SAP Images
In the Images tab of the Cyclone Control Suite GUI the user can view the encryption status of SAP images that reside on the connected Cyclone. The figure below shows the Cyclone Control GUI with the Images tab selected.
Figure: SAP Image Listing for Connected Cyclone

The rightmost column, labeled Encryption, displays whether each SAP image is unencrypted ("None"), encrypted with the required ImageKey present ("Encrypted"), or encrypted but missing the ImageKey required to decrypt ("Encrypted No Key").
Safer Production That's Easy To Implement
SAP Image encryption with Cyclone programmers is simple to implement and helps keep valuable intellectual property safe. Protected programming images can safely be sent electronically to remote production facilities. This adds much-needed convenience and peace of mind to the production process.