Autoplay
Autocomplete
Previous Lesson
Complete and Continue
Embedded Systems Cryptography & Encryption
Welcome
Course Overview and Learning Objectives
Tools and Resources Needed
Overview of the NUCLEO-F411 Development Board (1:48)
Section summary
Imperative Of Encryption in Embedded Systems
The Case for Encryption in Embedded Devices (7:38)
Overview Of Security Features in STM32 (5:50)
Key Properties of Security (3:01)
Threat Analysis
Overview of the Main Threats (7:14)
Data Integrity in Embedded Systems (8:49)
Assets, Threats and Vulnerabilities (4:01)
The 4-Step Process Of Threat Analysis (3:03)
CaseStudy- Threat Analysis for a Smart Thermostat Device (6:04)
Setting Up
Downloading CubeIDE (2:34)
Getting the right Package and Setting Up the Project Tree (21:19)
Installing CubeIDE (2:38)
Testing the Project Setup (15:54)
Getting the Required Documentation (7:41)
Developing some System Drivers for Implementing Real World Examples
Programming: Enabling the Floating Point Unit (18:00)
Programming: Developing the UART Driver-Analyzing the Documentation (11:35)
Programming: Developing the UART Driver- Listing out the Steps (4:00)
Programming: Developing the UART Driver- Implementing the Init. Function (22:13)
Programming: Developing the UART Driver- Implementing the Write Function (5:39)
Programming: Developing the UART Driver- Testing (6:39)
Programming: Developing the System Timebase- Analyzing the Documentation (8:28)
Programming: Developing the System Timebase- Implementing the Init. Function (9:52)
Programming: Developing the System Timebase- Implementing other Functions (12:15)
Programmming: Developing the System Timebase-Testing (5:34)
Programming: Developing the System BSP- Listing out the Required Functions (7:55)
Programming: Developing the System BSP- Implementing the LED Driver (5:01)
Programming: Developing the System BSP- Implementing the Push Button Driver (4:00)
Programming: Developing the System BSP- Testing (3:35)
Programming: Developing the System ADC Driver-Analyzing the Documentation (5:21)
Programming: Developing the System ADC Driver- Listing out the Steps (5:27)
Programming: Developing the System ADC Driver- Implementing the Init. Function (13:21)
Programming: Developing the System ADC Driver- Implementing the ADC Read Function (14:05)
Foundational Concepts of Cryptography
Some Common Terms in Cryptography (3:28)
The Cipher (3:08)
The Ceasar Cipher
The Ceasar Cipher (8:26)
The ROT13 Cipher (2:57)
Programming: Updating the Workspace (2:39)
Programming: Developing the Ceasar Cipher Encryption Function (19:18)
Programming: Developing the Ceasar Cipher Decryption Function (9:11)
Programming: Encrypting and Decrypting Integers with Ceasar Cipher (22:06)
Programming: Cracking the Ceasar Cipher (13:54)
The MonoAlphabetic Cipher
The MonoAlphabetic Cipher (2:54)
Programming: Developing the MonoAlphabetic Cipher Encryption Function (12:04)
Programming: Developing the MonoAlphabetic Cipher Decryption Function (8:18)
The PolyAlphabetic Cipher
Understanding PolyAlphabetic Ciphers (5:33)
Programming: Developing the Vigenere Cipher Encryption Function (13:29)
Programming: Developing the Vigenere Cipher Decryption Function (16:32)
Programming: Improving the Vigenere Cipher (9:53)
The Multiplicative Cipher
The Multiplicative Cipher (5:22)
Programming: The Multiplicative Cipher Encryption Function (12:00)
Programming: The Multiplicative Cipher Decryption Function (9:17)
Developing a Host Application for Receiving and Decrypting Transmitted Data
Setting Up Python (6:37)
Setting Up VSCode (8:16)
Programming: Developing The Ceasar Cipher Encryption Algorithm in Python (9:48)
Programming: Developing The Ceasar Cipher Decryption Algorithm (6:56)
Programming: Testing the Ceasar Cipher (4:16)
Programming: Decrypting Communication Data from Firmware to Host (15:22)
Programming: Developing The Monoalphabetic Encryption Algorithm (3:58)
Programming: Developing The Monoalphabetic Decryption Algorithm (2:39)
Programming: Testing The Monoalphabetic Cipher (3:57)
Programming: Monoalphabetic Cipher- Decrypting Communication Data from Firmware to Host (11:02)
Foundations of Encryption and Cryptography
Definitions and Distinctions between Encryption and Cryptography (1:20)
Summary of the Cipher Classification Tree (3:21)
Sysmetric vs Assymetric Encryption- a Comparative Analysis (9:58)
Cryptographic Hash Functions (4:26)
The Encryption/Decryption Dynamics (6:16)
Implementation Strategies in Embedded Systems (9:17)
Configuring the STM32 Cryptogrqphic Library
Getting the STM32 Cryptographic Library (1:31)
Programming: Integrating the STM32 Cryptographic Library (7:36)
Programming: Analyzing the Files of the Library (4:00)
Programming: Implementing the CMOX Low Level File (7:16)
The Advanced Encryption Standard(AES)
Overview of the Advanced Encryption Standard (5:06)
Programming: Working with AES-CBC: Initializing the Buffers (5:37)
Programming: Listing Out the Steps (3:32)
Programming: Encrypting Data with the AES-CBC Algorithm(Pt.1) (8:03)
Programming: Encrypting Data with the AES-CBC Algorithm(Pt.2) (3:46)
Programming: Comparing the Expected Ciphertext to the Computed Ciphertext (4:04)
Programming: Decrypting Data with the AES-CBC Algorithm (4:56)
Programming: Testing the Implementing (5:30)
Working with Sensor Data
Programming: Decomposing and Recombining ADC Values (4:50)
Programming: Declaring the Buffers (7:46)
Programming: Listing Out the Steps (3:19)
Programming: Completing the System (20:42)
PKCS#7 Padding
Understaning PKCS#7 Padding (8:03)
Programming: The Need for Padding (3:25)
Programming: Implementing the Padding Functions (9:28)
Programming: Applying PKCS#7 Padding (20:29)
The Determininstic Random Bit Generator(DRBG)
Programming: Declaring the Input Parameters (4:38)
Programming: Contructing the DRBG Context (7:12)
Programming: Generating Random Data with the DRBG (10:03)
Programming: Implementing the Key and IV Generating Function for the AES Algorithm (8:09)
Programming: Testing the System with Key and IV Generated by the DRBG (5:52)
Essentials of Digest Generation
What is a Disgest? (2:07)
Key Properties of Hash Functions (4:00)
Hashing for Data Integrity (5:01)
Major Families of Digest Algorithms (2:49)
Identifying Safe and Secure Hash Functions (4:11)
Best Practises in Embedded Systems (6:19)
Programming: Hashing a Message using SHA-256 (11:50)
Data Authentication with Keyed Hashing
Challenges with the Integrity Alone (2:28)
Understanding Keyed Hashing (1:55)
Key Management and Best Practises in Keyed Hashing (3:02)
Message Authentication Code (MAC) Generation
Introductiont to Message Authentication Code(MAC) Generation (1:55)
Applications of MACs (2:00)
Introduction to Hash-Based Message Authentication Code (HMAC) (2:21)
Why Use HMACs? (3:09)
HMACs in Summary (1:06)
Programming: Working with HMACs (8:39)
Asymmetric Encryption
Asymmetric Encryption-The Key Distribution Problem (4:06)
Recap on Symmetric Enryption (2:47)
Asymmetric Encryption as a Solution to the Key Distribution Problem (3:19)
RSA: A Classic Asymmetric Encryption Algorithm (2:26)
Digital Signatures and Non-Repudiation
The Problem with Shared Keys- Repudiation (2:41)
Some Applications of Non-Repudiation (1:03)
Achieving Non-Repudiation with Digital Signatures (1:59)
Understanding How Digital Signatures Work (4:19)
RSA (Rivest–Shamir–Adleman) Cryptography
Overview of RSA (0:32)
Introduction to RSA Digital Signatures (3:19)
Summary and Limitations of RSA (1:01)
Elliptic Curve Cryptography (ECC)
Introduction to Elliptic Curve Cryptography (2:40)
Signing with ECC (1:07)
Variants of ECC (1:12)
Overview of Elliptic-Curve Diffie–Hellman (ECDH) (3:52)
Overview of ECDH Algorithm Variants (0:53)
The STM32's CRC Peripheral: A Closer Look
Overview of the STM32 CRC Peripheral (1:56)
Understanding the CRC Calculation Process (4:14)
Step-by-step Example of the CRC Computation Process (6:11)
Course Update
Course Update
Teach online with
Programming: Improving the Vigenere Cipher
Lesson content locked
If you're already enrolled,
you'll need to login
.
Enroll in Course to Unlock