This article provides a generic introduction related to the cryptographical algorithms and HW acceleration. By using i.MX RT117x with related hands-on examples, it aims at helping NXP customers to quickly understand how to use and make a well decision regarding the selection of cryptographic algorithms to use in their products and systems.
Note: TL, DR. If the reader has the basic knowledge of the cryptography, please skip to chapter 3.
A cryptographic accelerator is a co-processor designed specifically to perform computationally intensive cryptographic operations, there are different names from different chip manufactures. For NXP, ‘CASPER’ on LPC55xx series, but ‘DCP’ or ‘CAAM’ for i.MX and i.MX RT.
i.MX RT |
Name |
Features |
i.MXRT10xx
|
DCP (Data Co-Processor) |
Symmetric Engines: AES-128 Hash Engines: SHA-1, SHA-256
|
i.MXRT11xx |
CAAM (Cryptographic Acceleration and Assurance Module) |
Symmetric Engines: AES 128, 192, 256; 3DES, DES; PKHA: RSA, ECDSA,DH,ECDH Hash Engines: SHA-1, SHA-2, MD5, HMAC Random Number Generation |
It shows cryptographic features and benchmark performance with 2 examples:
CAAM |
Features |
Key Function APIs |
JobRing0 |
kCAAM_Sha256 kCAAM_HmacSha1/sha224/384/512 kCAAM_Aes_cbc-128/192/256 |
RunShaExamples(base,&caamHandle); RunHmacExamples(base,&caamHandle); RunAesCbcExamples(base,&caamHandle); |
JobRing1 |
kCAAM_Aes_gcm |
RunAesGcmExamples(base,&caamHandle); |
JobRing2 |
kCAAM_Aes_cbc |
RunAesCbcExamples(base,&caamHandle); |
JobRing3 |
kCAAM_Aes_gcm kCAAM_RNG kCAAM_Red-Block kCAAM_Black-Block kCAAM_CRC |
RunAesGcmExamples(base,&caamHandle); RunRngExample(base, &caamHandle); RedBlobExample(base, &caamHandle); BlackBlobExample(base, &caamHandle); RunCrcExamples(base, &caamHandle); |
Key words: Cryptography, Cryptographic HW Acceleration, i.MX RT