ASRG SOS 2022 Encrypted messaging on CAN bus

K
1
Encrypted messaging on CAN bus
Dr. Ken Tindell, CTO Canis Labs
ken@canislabs.com
2
Encryption on CAN bus
• CAN was never designed for this
• But it can be done – if you do it right
• Must meet very specific requirements for CAN bus messaging
• Mainstream IT solutions don’t fit well
• Encryption on CAN does help – for some problems
• It can keep messages secret (makes reverse engineering really difficult)
• It can ensure messages are authentic (stops spoofing / fuzzing)
• Encryption on CAN is not a complete CAN security solution
• It doesn’t prevent denial-of-service attacks, for example
3
Requirements
• #1 Must support publish/subscribe model of communication
• This is how CAN works: atomic broadcast from a single sender to many receivers
• #2 Real-time messaging
• A distributed real-time control system: messages must have bounded latencies
• #3 Must fit into CAN sized messages
• Small payloads (8 bytes on classic CAN)
• #4 Must fit into limited-resource hardware
• Tiny microcontrollers with limited CPU power, RAM and flash
• #5 Fast start communications
• Receiver must be able to start listening long after sender has started
4
The messaging stack
Application software
CAN messaging
scheme
• CAN messaging scheme
• TX: Plaintext frame in, ciphertext out
• RX: Ciphertext in,
plaintext frame out
Cryptographic primitives
• Cryptographic primitives
• Encryption algorithm (e.g. AES-128)
• Authentication algorithm (e.g. AES-CMAC)
• Random numbers (“CSPRNG”)
• Key distribution and storage
Key
setting
5
Cryptographic primitives
• Standard algorithms (FIPS/NIST)
• AES-128: encrypts a 16-byte block with a 128-bit key
• AES-CMAC: produces a 128-bit message authentication code (MAC) from a
‘message’ (i.e. a chunk of data)
• Random number generator
• Different implementations
• Hardware Security Modules (HSMs) provide algorithms plus key storage
• On-chip accelerator for AES-128 with software for CMAC and
key storage (in EEPROM/flash)
• Pure software (AES-128, CMAC, key storage)
6
SHE HSMs
• SHE HSM is common on automotive microcontroller silicon
• “Secure Hardware Extensions"
• E.g. CSEc on NXP S32K144
• Standardized by AUTOSAR
• Specification of Secure Hardware Extensions (948 R20-11)
• Key management
• 10 user keys with key permissions (encryption or authentication – but
not both)
• AES-128, AES-CMAC, RNG, etc.
• Secure key loading operations
7
Pure software SHE HSM
✼ Times for a
Cortex M0 at
133MHz with
0 wait-state
code memory
Cryptographic
operation
Execution time
(constant)
Without
round-key cache
Random number 13.654µs
AES-128 encrypt 13.662µs 19.214µs
AES-CMAC generate 14.552µs 20.086µs
AES-CMAC verify 15.470µs 20.998µs
Cryptographic
operation
Code size
/bytes
CMAC 680
Encrypt 860
Decrypt 1076
Load key 1048
RNG 232
Other 744
ROM table Size
/bytes
Encrypt 1024
Decrypt 1280
Other 72
RAM table Size
/bytes
Round-key cache 3072
PRNG round-key 176
Other 16
8
CAN messaging scheme
CAN messaging
scheme
Cryptographic primitives
• Needs some SHE HSM functions
• Encrypt (but not decrypt)
• MAC (generate and verify)
• Random number generator
• Sender creates a 128-bit message
• Plaintext payload (up to 64 bits)
• Plaintext DLC (4 bits)
• MAC (60 bits)
• Generate MAC then encrypt
• MtE scheme
9
Encrypting CAN messages
DLC
4 bits
Payload
Up to 64 bits
CAN ID
11 or 29 bits
CAN ID
CAN ID
(B Flag = 1)
Encrypted message
DLC Payload MAC
128 bits
Encode
• Start with a plaintext CAN frame
• 11- or 29-bit ID, 0-8 bytes
• Generate a MAC
• 60 bits
• Encrypt DLC, payload, MAC
• One AES block
• Split into two frames
• A and B
• A is higher priority
• B Flag in CAN ID
DLC
=8
DLC
=8
Frame A payload
64 bits
Frame B payload
64 bits
10
Encode step #1: Generate MAC
• Create a 128-bit ‘message’
• CAN ID, DLC, Payload
• Plus a freshness value
DLC Payload Freshness
IDE
CAN ID
AES-CMAC
Authentication key
128-bit MAC
60-bit MAC
• Use HSM to generate MAC
• 128 bits
• Truncate the MAC
• 60 bits
11
Encode step #2: Encrypt
Previous ciphertext
AES-128
encrypt
Encryption key
DLC Payload MAC
Ciphertext
12
Decrypting CAN messages
CAN ID Frame A payload
64 bits
Frame B payload
64 bits
CAN ID
(B Flag = 1)
DLC
DLC
=8
=8
Decode
DLC
4 bits
Payload
Up to 64 bits
CAN ID
11 or 29 bits
Reject
• Assemble A and B frames
• A Frame comes first
• Decode the block
• Reverse of encode operation
• Verify the MAC
• Compare calculated and
received MACs
• Reject if
no match
• Extract the
plaintext frame
13
Decode step #1: Decrypt
Previous ciphertext
AES-128
encrypt
Encryption key
Frame A Frame B
DLC Payload MAC
14
Decode step #2: Verify MAC
DLC Payload Freshness
IDE
CAN ID
AES-CMAC
Authentication key
128-bit MAC
60-bit MAC
DLC Payload MAC
15
SHE HSMs and MACs
• Generate and Verify are two separate operations
• AES-CMAC is the underlying algorithm
• Generate takes a ‘message’ and returns a MAC
• Verify takes a ‘message’ and a MAC and returns pass/fail
• Key must be given Authentication permission
• Can’t use an encryption key
• CAN encrypted messages use a pair of keys (one for encrypt,
one for authenticate)
• SHE+ adds Verify Only permission
• Verify Only = cannot generate MACs, only submit them for verification
16
So what about this ‘freshness’?
• Problem with cryptographic messaging is replay attacks
• We are protected against forged messages
• But messages captured by an attacker and retransmitted later aren’t forgeries
• Attacker can know what those messages mean (e.g. “unlock the door”) and just send
one when needed
• Solution is to add a freshness value to the MAC
calculation
• Freshness is known at sender and at receivers
• Freshness regularly changes (it could be a global time
value)
• Captured messages with an old freshness value will not
verify
DLC Payload Freshness
IDE
CAN ID
AES-CMAC
Authentication key
17
Freshness timing issue
• That “known at sender and at receivers” is a bit of a problem
• Freshness at sender when the message is created vs freshness at receivers when
message is received
• The latency of Frame B may be relatively long compared to the rate at which the
freshness value changes
• Receiver needs to know the freshness value used in the past
• Freshness is not transmitted in the message, only inferred
• But the original freshness value must be relatively recent (because
CAN frame latencies are relatively short)
• Solution is to use some extra bits in a CAN frame..
18
Extra bits in a CAN frame
• Every 8-byte CAN frame has 3 spare bits
• Six bits across Frame A and Frame B
• How? Because DLC values of 8 to 15 all mean “8 bytes”
• When bit 3 is a ‘1’ then the bottom 3 bits are ”don’t care” under the CAN protocol
• Frame A and B DLCs can carry least-significant 6 bits of freshness value
• Receivers can use these to infer the original freshness value
• MAC verification then is done on inferred freshness value
• Freshness used as a sequence number to discard verified but
stale messages
19
CAN messaging performance
✼ Times include SHE+ emulation time;
data from a Cortex M0 at 133MHz
Messaging operation Execution time Without replay
protection
Create A/B pair 31.222µs 30.158µs
Receive A 14.310µs 14.310µs
Receive B 18.526µs 18.206µs
Function Code size
/bytes
Startup 44
Create A/B pair 466
Receive frame 560
RAM structures Size
/bytes
Per transmit context 24
Per receive context 40
20
So how did we do?
4
Requirements
• #1 Must support publish/subscribe model of communication
• This is how CAN works: atomic broadcast from a single sender to many receivers
• #2 Real-time messaging
• A distributed real-time control system: messages must have bounded latencies
• #3 Must fit into CAN sized messages
• Small payloads (8 bytes on classic CAN)
• #4 Must fit into limited-resource hardware
• Tiny microcontrollers with limited CPU power, RAM and flash
• #5 Fast start communications
• Receiver must be able to start listening long after sender has started
Latency of Frame B = latency
Frame A/B pair
Fast and small on Cortex M0
CFB mode
for random
access
Just like CAN
21
Remarks
• Needs two CAN frames per plaintext CAN frame
• A bandwidth cost but don’t need to protect every CAN frame – only sensitive ones
• The sender could be remote
• Ciphertext frames could come from a domain controller via Ethernet
• Ciphertext frames could come from a tool located externally, even in the cloud
• Key management is.. key
• “Cryptography is a machine for turning any problem into a
key management problem”
• Key management infrastructure is vital
23
Canis Labs CryptoCAN
• Implements everything talked about today
• Software emulated SHE+
• Implemented in C with no dependencies
• Included in free CANPico MicroPython firmware
• The CANPico board is the Canis Labs platform for evaluation and prototyping
• HSM and CryptoCAN classes
• More features coming
• Key database with SHE+ load key transactions
• Tool command-and-control messaging protocol (e.g. including
key distribution)
24
Further information
Canis Labs white paper
“Encryption on CAN Bus”
NDIA GVSETS 2022 paper
“Defending CAN Bus”
canislabs.com/cryptocan
1 of 23

More Related Content

What's hot(20)

Room 2 - 1 - Phạm Quang Minh - A real DevOps culture in practiceRoom 2 - 1 - Phạm Quang Minh - A real DevOps culture in practice
Room 2 - 1 - Phạm Quang Minh - A real DevOps culture in practice
Vietnam Open Infrastructure User Group130 views
Kubernetes BasicsKubernetes Basics
Kubernetes Basics
Eueung Mulyana8K views
Linux rt in financial marketsLinux rt in financial markets
Linux rt in financial markets
Adrien Mahieux1.4K views
eBPF BasicseBPF Basics
eBPF Basics
Michael Kehoe2.5K views
CanbusCanbus
Canbus
SURYAPRAKASH S6.2K views
KubernetesKubernetes
Kubernetes
Henry He158 views
IBM MQ BasicsIBM MQ Basics
IBM MQ Basics
subbareddyalamur175 views
Whoops! I Rewrote It in RustWhoops! I Rewrote It in Rust
Whoops! I Rewrote It in Rust
ScyllaDB7.1K views
Big Data Redis Mongodb Dynamodb ShardingBig Data Redis Mongodb Dynamodb Sharding
Big Data Redis Mongodb Dynamodb Sharding
Araf Karsh Hamid207 views

Similar to ASRG SOS 2022 Encrypted messaging on CAN bus

CAN BusCAN Bus
CAN BusAnoop Mathew
948 views19 slides

Similar to ASRG SOS 2022 Encrypted messaging on CAN bus(20)

CAN (Controller Area Network) Bus ProtocolCAN (Controller Area Network) Bus Protocol
CAN (Controller Area Network) Bus Protocol
Abhinaw Tiwari26.4K views
CAN BusCAN Bus
CAN Bus
Anoop Mathew948 views
8. Authenticated Encryption8. Authenticated Encryption
8. Authenticated Encryption
Sam Bowne68 views
Crypto Strikes Back! (Google 2009)Crypto Strikes Back! (Google 2009)
Crypto Strikes Back! (Google 2009)
Nate Lawson3.7K views
CNIT 1417. Keyed HashingCNIT 1417. Keyed Hashing
CNIT 1417. Keyed Hashing
Sam Bowne179 views
CNIT 141 7. Keyed HashingCNIT 141 7. Keyed Hashing
CNIT 141 7. Keyed Hashing
Sam Bowne172 views
Wireless LAN Security FundamentalsWireless LAN Security Fundamentals
Wireless LAN Security Fundamentals
Aruba, a Hewlett Packard Enterprise company2.3K views
17 october embedded seminar17 october embedded seminar
17 october embedded seminar
Amir Sherman589 views
CoAP TalkCoAP Talk
CoAP Talk
Basuke Suzuki4.7K views
Controller area network (CAN bus) pptController area network (CAN bus) ppt
Controller area network (CAN bus) ppt
Raziuddin Khazi5.9K views
lecture04.pptlecture04.ppt
lecture04.ppt
AmanuelZewdie44 views
I2C And  SPI Part-23I2C And  SPI Part-23
I2C And SPI Part-23
Techvilla1.3K views

Recently uploaded(20)

Road-related crashesRoad-related crashes
Road-related crashes
Bisnar Chase Personal Injury Attorneys8 views
ELITE DRIVEELITE DRIVE
ELITE DRIVE
elitedrive00712 views
PROGRAMME ADIRC 2023 (3).pdfPROGRAMME ADIRC 2023 (3).pdf
PROGRAMME ADIRC 2023 (3).pdf
HiNedHaJar50 views

ASRG SOS 2022 Encrypted messaging on CAN bus

  • 1. 1 Encrypted messaging on CAN bus Dr. Ken Tindell, CTO Canis Labs ken@canislabs.com
  • 2. 2 Encryption on CAN bus • CAN was never designed for this • But it can be done – if you do it right • Must meet very specific requirements for CAN bus messaging • Mainstream IT solutions don’t fit well • Encryption on CAN does help – for some problems • It can keep messages secret (makes reverse engineering really difficult) • It can ensure messages are authentic (stops spoofing / fuzzing) • Encryption on CAN is not a complete CAN security solution • It doesn’t prevent denial-of-service attacks, for example
  • 3. 3 Requirements • #1 Must support publish/subscribe model of communication • This is how CAN works: atomic broadcast from a single sender to many receivers • #2 Real-time messaging • A distributed real-time control system: messages must have bounded latencies • #3 Must fit into CAN sized messages • Small payloads (8 bytes on classic CAN) • #4 Must fit into limited-resource hardware • Tiny microcontrollers with limited CPU power, RAM and flash • #5 Fast start communications • Receiver must be able to start listening long after sender has started
  • 4. 4 The messaging stack Application software CAN messaging scheme • CAN messaging scheme • TX: Plaintext frame in, ciphertext out • RX: Ciphertext in, plaintext frame out Cryptographic primitives • Cryptographic primitives • Encryption algorithm (e.g. AES-128) • Authentication algorithm (e.g. AES-CMAC) • Random numbers (“CSPRNG”) • Key distribution and storage Key setting
  • 5. 5 Cryptographic primitives • Standard algorithms (FIPS/NIST) • AES-128: encrypts a 16-byte block with a 128-bit key • AES-CMAC: produces a 128-bit message authentication code (MAC) from a ‘message’ (i.e. a chunk of data) • Random number generator • Different implementations • Hardware Security Modules (HSMs) provide algorithms plus key storage • On-chip accelerator for AES-128 with software for CMAC and key storage (in EEPROM/flash) • Pure software (AES-128, CMAC, key storage)
  • 6. 6 SHE HSMs • SHE HSM is common on automotive microcontroller silicon • “Secure Hardware Extensions" • E.g. CSEc on NXP S32K144 • Standardized by AUTOSAR • Specification of Secure Hardware Extensions (948 R20-11) • Key management • 10 user keys with key permissions (encryption or authentication – but not both) • AES-128, AES-CMAC, RNG, etc. • Secure key loading operations
  • 7. 7 Pure software SHE HSM ✼ Times for a Cortex M0 at 133MHz with 0 wait-state code memory Cryptographic operation Execution time (constant) Without round-key cache Random number 13.654µs AES-128 encrypt 13.662µs 19.214µs AES-CMAC generate 14.552µs 20.086µs AES-CMAC verify 15.470µs 20.998µs Cryptographic operation Code size /bytes CMAC 680 Encrypt 860 Decrypt 1076 Load key 1048 RNG 232 Other 744 ROM table Size /bytes Encrypt 1024 Decrypt 1280 Other 72 RAM table Size /bytes Round-key cache 3072 PRNG round-key 176 Other 16
  • 8. 8 CAN messaging scheme CAN messaging scheme Cryptographic primitives • Needs some SHE HSM functions • Encrypt (but not decrypt) • MAC (generate and verify) • Random number generator • Sender creates a 128-bit message • Plaintext payload (up to 64 bits) • Plaintext DLC (4 bits) • MAC (60 bits) • Generate MAC then encrypt • MtE scheme
  • 9. 9 Encrypting CAN messages DLC 4 bits Payload Up to 64 bits CAN ID 11 or 29 bits CAN ID CAN ID (B Flag = 1) Encrypted message DLC Payload MAC 128 bits Encode • Start with a plaintext CAN frame • 11- or 29-bit ID, 0-8 bytes • Generate a MAC • 60 bits • Encrypt DLC, payload, MAC • One AES block • Split into two frames • A and B • A is higher priority • B Flag in CAN ID DLC =8 DLC =8 Frame A payload 64 bits Frame B payload 64 bits
  • 10. 10 Encode step #1: Generate MAC • Create a 128-bit ‘message’ • CAN ID, DLC, Payload • Plus a freshness value DLC Payload Freshness IDE CAN ID AES-CMAC Authentication key 128-bit MAC 60-bit MAC • Use HSM to generate MAC • 128 bits • Truncate the MAC • 60 bits
  • 11. 11 Encode step #2: Encrypt Previous ciphertext AES-128 encrypt Encryption key DLC Payload MAC Ciphertext
  • 12. 12 Decrypting CAN messages CAN ID Frame A payload 64 bits Frame B payload 64 bits CAN ID (B Flag = 1) DLC DLC =8 =8 Decode DLC 4 bits Payload Up to 64 bits CAN ID 11 or 29 bits Reject • Assemble A and B frames • A Frame comes first • Decode the block • Reverse of encode operation • Verify the MAC • Compare calculated and received MACs • Reject if no match • Extract the plaintext frame
  • 13. 13 Decode step #1: Decrypt Previous ciphertext AES-128 encrypt Encryption key Frame A Frame B DLC Payload MAC
  • 14. 14 Decode step #2: Verify MAC DLC Payload Freshness IDE CAN ID AES-CMAC Authentication key 128-bit MAC 60-bit MAC DLC Payload MAC
  • 15. 15 SHE HSMs and MACs • Generate and Verify are two separate operations • AES-CMAC is the underlying algorithm • Generate takes a ‘message’ and returns a MAC • Verify takes a ‘message’ and a MAC and returns pass/fail • Key must be given Authentication permission • Can’t use an encryption key • CAN encrypted messages use a pair of keys (one for encrypt, one for authenticate) • SHE+ adds Verify Only permission • Verify Only = cannot generate MACs, only submit them for verification
  • 16. 16 So what about this ‘freshness’? • Problem with cryptographic messaging is replay attacks • We are protected against forged messages • But messages captured by an attacker and retransmitted later aren’t forgeries • Attacker can know what those messages mean (e.g. “unlock the door”) and just send one when needed • Solution is to add a freshness value to the MAC calculation • Freshness is known at sender and at receivers • Freshness regularly changes (it could be a global time value) • Captured messages with an old freshness value will not verify DLC Payload Freshness IDE CAN ID AES-CMAC Authentication key
  • 17. 17 Freshness timing issue • That “known at sender and at receivers” is a bit of a problem • Freshness at sender when the message is created vs freshness at receivers when message is received • The latency of Frame B may be relatively long compared to the rate at which the freshness value changes • Receiver needs to know the freshness value used in the past • Freshness is not transmitted in the message, only inferred • But the original freshness value must be relatively recent (because CAN frame latencies are relatively short) • Solution is to use some extra bits in a CAN frame..
  • 18. 18 Extra bits in a CAN frame • Every 8-byte CAN frame has 3 spare bits • Six bits across Frame A and Frame B • How? Because DLC values of 8 to 15 all mean “8 bytes” • When bit 3 is a ‘1’ then the bottom 3 bits are ”don’t care” under the CAN protocol • Frame A and B DLCs can carry least-significant 6 bits of freshness value • Receivers can use these to infer the original freshness value • MAC verification then is done on inferred freshness value • Freshness used as a sequence number to discard verified but stale messages
  • 19. 19 CAN messaging performance ✼ Times include SHE+ emulation time; data from a Cortex M0 at 133MHz Messaging operation Execution time Without replay protection Create A/B pair 31.222µs 30.158µs Receive A 14.310µs 14.310µs Receive B 18.526µs 18.206µs Function Code size /bytes Startup 44 Create A/B pair 466 Receive frame 560 RAM structures Size /bytes Per transmit context 24 Per receive context 40
  • 20. 20 So how did we do? 4 Requirements • #1 Must support publish/subscribe model of communication • This is how CAN works: atomic broadcast from a single sender to many receivers • #2 Real-time messaging • A distributed real-time control system: messages must have bounded latencies • #3 Must fit into CAN sized messages • Small payloads (8 bytes on classic CAN) • #4 Must fit into limited-resource hardware • Tiny microcontrollers with limited CPU power, RAM and flash • #5 Fast start communications • Receiver must be able to start listening long after sender has started Latency of Frame B = latency Frame A/B pair Fast and small on Cortex M0 CFB mode for random access Just like CAN
  • 21. 21 Remarks • Needs two CAN frames per plaintext CAN frame • A bandwidth cost but don’t need to protect every CAN frame – only sensitive ones • The sender could be remote • Ciphertext frames could come from a domain controller via Ethernet • Ciphertext frames could come from a tool located externally, even in the cloud • Key management is.. key • “Cryptography is a machine for turning any problem into a key management problem” • Key management infrastructure is vital
  • 22. 23 Canis Labs CryptoCAN • Implements everything talked about today • Software emulated SHE+ • Implemented in C with no dependencies • Included in free CANPico MicroPython firmware • The CANPico board is the Canis Labs platform for evaluation and prototyping • HSM and CryptoCAN classes • More features coming • Key database with SHE+ load key transactions • Tool command-and-control messaging protocol (e.g. including key distribution)
  • 23. 24 Further information Canis Labs white paper “Encryption on CAN Bus” NDIA GVSETS 2022 paper “Defending CAN Bus” canislabs.com/cryptocan