Дешифрование микросхемы STM8S105K6: передовые методы восстановления устаревших систем

В качестве ведущего инженера-реверс-инженера в Well Done Technology я недавно возглавил миссию по дешифрованию микроконтроллеров STM8S105K6, встроенных в датчики критически важной инфраструктуры. В этом примере из практики описывается наш технический подход к обходу функций безопасности с сохранением целостности системы.

Введение

STM8S105K6 (32 КБ флэш-памяти, 8-разрядное ядро с тактовой частотой 16 МГц) является рабочей лошадкой в устаревших промышленных системах. Однако сочетание защиты от чтения (уровень 2) и настраиваемого шифрования создало значительные препятствия, когда наш клиент столкнулся с незапланированным устареванием своей сенсорной сети. В этом документе подробно описана наша успешная методология дешифрования.

Характеристики чипа и функции безопасности

Ключевые параметры

ПараметрЗначение
АрхитектураSTM8S (8-бит)
Память32 КБ Flash / 2 КБ SRAM
Разрешение АЦП10-бит
Уровни безопасностиЗащита от чтения (Уровень 2)
ШифрованиеПроприетарная схема XOR

Критические штыри для атаки

Расположение выводовИнформация о выводах
Левая сторона (Выводы 1 - 20)1 - PC7 • 2 - PC8 • 3 - PC9 • 4 - PC10 • 5 - PC11
6 - BOOT1 • 7 - PH3 • 8 - PH2 • 9 - VDD • 10 - VSS
11 - PA0 • 12 - PA1 • 13 - PA2 • 14 - PC3 • 15 - PC2
16 - PC1 • 17 - PC0 • 18 - NRST • 19 - PH1 • 20 - PH0

Анализ безопасности

Механизмы защиты

Защита от чтения:
				
					// Настройка защиты
FLASH->CR2 |= FLASH_CR2_LP; // Защита уровня 2
FLASH->OPTR |= FLASH_OPTR_RDP; // Включение защиты от чтения
				
			
Пользовательское шифрование:
				
					void encrypt_data(uint8_t *data, uint16_t len) {
    uint8_t key = get_hardware_id();
    for(int i = 0; i < len; i++) {
        data[i] ^= key;
    }
}
				
			

Стратегия дешифрования

Обратное проектирование программного обеспечения

Анализ дампа памяти:

				
					# Скрипт на Python для поиска ключа XOR
def find_xor_key(encrypted_data):
for key_candidate in range(256):
decrypted = bytes([b ^ key_candidate for b in encrypted_data])
if b'INIT' in decrypted:
return key_candidate
return None
				
			

Настройка аппаратной атаки

Параметры глюков напряжения:

				
					// Код генерации сбоя (глитча)
void apply_glitch() {
DAC->DHR12R1 = 0x0000; // Начальное напряжение
delay_us(100); 
DAC->DHR12R1 = 0x03FF; // Напряжение сбоя
delay_us(50); 
DAC->DHR12R1 = 0x0000;
}
				
			

Пример из практики: восстановление сенсорной сети

Вызов

  • Система: более 500 датчиков окружающей среды с STM8S105K6
  • Проблема: Производитель — заблокированная прошивка, препятствующая обновлению безопасности
  • Цель: восстановление алгоритмов калибровки датчиков

Техническое исполнение

Основные этапы восстановления ключа:

Encrypted Flash Data Recovery Workflow – Dump Checksum Analysis XOR Key Brute force Calibration Data Recovery
Encrypted Flash Data Recovery Workflow – Dump, Checksum Analysis, XOR Key Brute-force & Calibration Data Recovery

Скрипт проверки:

				
					bool validate_calibration() {
    uint16_t checksum = calculate_checksum(calibration_data);
    return checksum == *(uint16_t*)(FLASH_BASE + 0x7FFE);
}
				
			

Стратегии смягчения последствий

Повышенная безопасность

				
					// Реализация с использованием двух ключей
void secure_keygen() {
uint8_t temp = ADC1->DR; 
uint16_t rtc = RTC->CNTH << 16 | RTC->CNTL; 
session_key = crc16((uint8_t*)&rtc, sizeof(rtc)) ^ temp;
}
				
			

Улучшение процессов

  1. Двухфакторная аутентификация для обновления прошивки
  2. Скремблирование памяти во время работы
  3. Динамическая ротация ключей каждые 24 часа

Практические заметки: Контрольный список дизайна MCU для расшифровки чипов STM8S105K6: передовые методы восстановления системы

ИСПОЛЬЗОВАНИЕ ЭТИ ЗАМЕЧАЛИВЫ ПРИМЕНЕНИЯ ИНФОРМАЦИИ В РЕАЛЬНОМ проект.

Практические проверки

  • Сравните диапазон поставок, количество GPIO, таймеры, ресурсы ADC/DAC, интерфейсы связи, размер пакета и поддержку цепочки инструментов перед выбором MCU.
  • Обеспечьте доступ к SWD, JTAG, UART или загрузчику для производственного программирования, восстановления прошивки и анализа сбоев.
  • Установите конденсаторы для развязки близко к каждому выводу питания, держите кристаллы короткой и избегайте маршрутизации шумных цифровых шин вблизи аналоговых ссылок или узлов генератора.

Заключение

Этот проект демонстрирует, что целевые атаки, сочетающие анализ программного обеспечения и сбои в работе оборудования, могут преодолеть даже сложную 8-битную систему безопасности микроконтроллера. Восстановленная прошивка позволила нашему клиенту модернизировать свою сеть датчиков и внедрить современные протоколы безопасности.
 
Для получения услуг по дешифрованию на корпоративном уровне обращайтесь:
Billy Zheng Principal Engineer of Well Done PCB Technology

Главный инженер:
д-р Билли Чжэн
Well Done PCB Technology
billy@reversepcb.com
Экстренная поддержка: +86-157-9847-6858

Поделиться:

Прокрутить вверх

Instant Quote

Мгновенный расчет