STM32F429 암호화 모듈: AES, DES, SHA와 같은 지원 알고리즘 설명
1. 개요
STM32F429 마이크로컨트롤러는 보안성을 강화하기 위해 하드웨어 암호화 모듈(CRYP)을 내장하고 있습니다. 이 모듈은 다양한 암호화 및 해시 알고리즘을 하드웨어 수준에서 처리하여, 소프트웨어 방식보다 빠르고 안전하게 데이터를 보호할 수 있도록 설계되었습니다. 이번 포스팅에서는 STM32F429가 지원하는 대표적인 알고리즘인 AES, DES, 그리고 SHA에 대해 상세히 설명하겠습니다.
2. AES (Advanced Encryption Standard)
2.1 AES 개요
AES(Advanced Encryption Standard)는 미국 국립 표준 기술 연구소(NIST)에서 고안한 대칭 키 암호화 알고리즘으로, 현재 가장 널리 사용되는 암호화 방식입니다. AES는 128비트 블록을 기반으로 작동하며, 128, 192, 256비트의 키 길이를 지원합니다.
2.2 AES 특징
- 대칭 키 암호화: AES는 동일한 키를 사용하여 데이터를 암호화하고 복호화하는 대칭 키 알고리즘입니다.
- 고성능: 하드웨어 기반의 암호화는 소프트웨어 방식보다 빠른 처리를 제공합니다.
- 보안성: 128비트 이상의 키를 사용하기 때문에 현재의 컴퓨팅 성능으로는 실질적인 무차별 대입 공격이 불가능합니다.
2.3 AES 동작 모드
STM32F429는 다양한 AES 동작 모드를 지원합니다. 주요 모드는 다음과 같습니다.
- ECB (Electronic Codebook) 모드: 가장 간단한 형태로, 동일한 평문 블록은 동일한 암호문 블록으로 변환됩니다. 보안성이 낮아 실제 사용에서는 권장되지 않습니다.
- CBC (Cipher Block Chaining) 모드: 각 블록이 이전 블록의 암호문과 XOR 연산된 후 암호화되는 방식입니다. 보안성이 높고 일반적으로 널리 사용됩니다.
- CTR (Counter) 모드: 암호 블록을 카운터 값과 XOR하여 데이터를 암호화하는 방식입니다. 병렬 처리에 유리합니다.
2.4 STM32F429에서의 AES 구현 예
STM32CubeIDE를 사용하면 HAL 라이브러리를 통해 AES 암호화를 쉽게 구현할 수 있습니다. 예를 들어, 128비트 AES 암호화는 다음과 같이 수행할 수 있습니다.
#include "main.h"
#include "string.h"
uint8_t plainText[] = "Hello STM32F429!";
uint8_t encryptedText[16];
uint8_t decryptedText[16];
uint8_t aesKey[16] = {0x2b, 0x7e, 0x15, 0x16, 0x28, 0xae, 0xd2, 0xa6,
0xab, 0xf7, 0x4d, 0x4e, 0x52, 0x3c, 0x6e, 0x7b};
void AES_Encrypt(void) {
CRYP_HandleTypeDef hcryp;
hcryp.Instance = CRYP;
hcryp.Init.DataType = CRYP_DATATYPE_8B;
hcryp.Init.KeySize = CRYP_KEYSIZE_128B;
hcryp.Init.Algorithm = CRYP_AES_ECB;
HAL_CRYP_Init(&hcryp);
HAL_CRYP_Encrypt(&hcryp, plainText, 16, encryptedText, HAL_MAX_DELAY);
HAL_CRYP_DeInit(&hcryp);
}
3. DES (Data Encryption Standard)
3.1 DES 개요
DES(Data Encryption Standard)는 1970년대에 도입된 대칭 키 암호화 알고리즘으로, 64비트 블록과 56비트 키를 기반으로 작동합니다. AES의 등장 이후 중요성이 다소 줄어들었지만, 여전히 레거시 시스템에서 사용되고 있습니다.
3.2 DES 특징
- 56비트 키: DES는 56비트 길이의 키를 사용합니다.
- Feistel 구조: DES는 16라운드의 Feistel 네트워크 구조를 기반으로 동작합니다.
- 보안성 한계: 키 길이가 짧아 현대 컴퓨팅 환경에서는 무차별 대입 공격에 취약합니다.
3.3 3DES (Triple DES)
DES의 보안성을 강화하기 위해 3DES가 도입되었습니다. 3DES는 DES 암호화를 3번 연속 수행하는 방식으로, 효과적인 키 길이는 112비트 또는 168비트입니다.
3.4 STM32F429에서의 DES 구현 예
STM32F429는 3DES 알고리즘을 하드웨어 수준에서 지원합니다. 다음은 3DES 암호화 예제입니다.
void DES_Encrypt(void) {
CRYP_HandleTypeDef hcryp;
hcryp.Instance = CRYP;
hcryp.Init.DataType = CRYP_DATATYPE_8B;
hcryp.Init.KeySize = CRYP_KEYSIZE_128B;
hcryp.Init.Algorithm = CRYP_TDES_ECB;
HAL_CRYP_Init(&hcryp);
HAL_CRYP_Encrypt(&hcryp, plainText, 16, encryptedText, HAL_MAX_DELAY);
HAL_CRYP_DeInit(&hcryp);
}
4. SHA (Secure Hash Algorithm)
4.1 SHA 개요
SHA(Secure Hash Algorithm)는 데이터 무결성을 보장하기 위한 해시 함수입니다. 입력 데이터에 대해 고유한 해시 값을 생성하며, STM32F429는 SHA-1, SHA-224, SHA-256과 같은 다양한 SHA 알고리즘을 지원합니다.
4.2 SHA 특징
- 일방향 함수: 해시 함수는 데이터를 압축하여 고정된 크기의 해시 값을 생성하지만, 역으로 데이터를 복원할 수 없습니다.
- 충돌 저항성: 두 개의 서로 다른 입력이 동일한 해시 값을 생성하지 않도록 설계되었습니다.
- 고정 길이 출력: SHA-1은 160비트, SHA-256은 256비트 길이의 해시 값을 출력합니다.
4.3 SHA-256 구현 예
다음은 STM32Cube HAL을 사용하여 SHA-256을 구현하는 예제입니다.
#include "main.h"
#include "string.h"
uint8_t message[] = "Hello STM32F429!";
uint8_t hash[32];
void SHA256_Generate(void) {
HASH_HandleTypeDef hhash;
hhash.Instance = HASH;
HAL_HASH_Init(&hhash);
HAL_HASH_SHA256_Start(&hhash, message, strlen((char*)message), hash, HAL_MAX_DELAY);
HAL_HASH_DeInit(&hhash);
}
5. 결론
STM32F429의 하드웨어 암호화 모듈은 AES, DES, SHA와 같은 주요 알고리즘을 지원하여 효율적이고 안전한 데이터 보호를 제공합니다. 특히, AES는 강력한 보안성과 성능으로 대부분의 응용 프로그램에서 권장되는 방식입니다. 3DES는 레거시 시스템과의 호환성을 유지하는 데 유용하며, SHA는 데이터 무결성을 검증하는 데 필수적입니다.
'STM32' 카테고리의 다른 글
DES와 3DES로 데이터 보호 (0) | 2025.02.25 |
---|---|
STM32F429 AES 암호화 모듈 사용법 (0) | 2025.02.25 |
STM32 하드웨어와 소프트웨어 암호화의 차이 (0) | 2025.02.25 |
STM32F429의 CRYP(암호화) 모듈 소개 (0) | 2025.02.25 |
STM32 저전력 모드 활용하기 (0) | 2024.12.03 |