LR1110
User Manual
Rev.1.0
UM.LR1110.W.APP
March 2020
105 of 130
Semtech
12. Crypto Engine
12.1 Description
The Cryptographic Engine provides a dedicated hardware accelerator for AES-128 encryption based algorithms and
dedicated flash and RAM memory to handle device parameters such as encryption keys, in order to avoid unauthorized
access.
The Cryptographic Engine allows to improve the power efficiency of cryptographic operations and reduce the code size of
the software stack. Verifying the integrity of data such as the payload of the downlink is important to guarantee a secure
communication. The message integration check (MIC) uses the AES-CMAC algorithm to calculate a hash. Implementing the
MIC calculation in software jeopardizes the confidentiality of the used key. The cryptographic engine provides a hardware
implementation of the AES-CMAC to internally calculate and check the MIC.
Other more advanced AES based operations such as AES-ECB and AES-CCM need to be implemented in software based on
the AES-128 encryption algorithm. Depending on the application a higher level of security may require the use of an
external secure element.
The status of cryptographic operations can be checked by either polling the internal status register or using an interrupt
service routine.
12.2 Cryptographic Keys Definition
The cryptographic keys are arranged into several groups, according to the function they serve, as shown in
Cryptographic Keys Usage and Derivation
. The table summarizes the allowed uses of the keys and if some of the keys can
be derived from other keys.
Table 12-1: Cryptographic Keys Usage and Derivation
Group Name
Key SRC/Dest Index
Key Name
Usage
Derivation From
Mother
0
MotherKey0
CryptoDeriveAndStoreKey()
Not Allowed
1
MotherKey1
CryptoDeriveAndStoreKey()
CryptoSetKey( )
Not Allowed
Network
2
NwkKey
CryptoProcessJoinAccept()
CryptoComputeAesCmac()
CryptoDeriveAndStoreKey()
CryptoSetKey( )
Only from Mother
Application
3
AppKey
CryptoDeriveAndStoreKey()
CryptoSetKey( )
Only from Mother
LifeTimeEnc
4
JSEncKey
CryptoProcessJoinAccept()
(Decryption)
CryptoSetKey( )
From Network &
Application