Décryptage de la puce STM8S105K6 : techniques avancées pour la récupération de systèmes hérités

Table des Matières

En tant qu'ingénieur en chef en rétro-ingénierie chez Well Done Technology, j'ai récemment mené une mission visant à décrypter les microcontrôleurs STM8S105K6 intégrés dans les capteurs d'infrastructures critiques. Cette étude de cas décrit notre approche technique pour contourner ses fonctionnalités de sécurité tout en préservant l'intégrité du système.

Introduction

Le STM8S105K6 (32 Ko de mémoire Flash, cœur 8 bits à 16 MHz) est un pilier des systèmes industriels traditionnels. Cependant, sa combinaison de protection en lecture (niveau 2) et de cryptage personnalisé a posé des obstacles importants lorsque notre client a été confronté à l'obsolescence imprévue de son réseau de capteurs. Ce document détaille notre méthodologie de décryptage réussie.

Spécifications de la puce et caractéristiques de sécurité

Paramètres clés

ParameterValue
ArchitectureSTM8S (8 - bit)
Memory32KB Flash / 2KB SRAM
ADC Resolution10 - bit
Security LevelsRead Protection (Level 2)
EncryptionProprietary XOR Scheme

Pins critiques pour l'attaque

Pin LocationPin Details
Left Side (Pins 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

Analyse de sécurité

Mécanismes de protection

Protection en lecture :
				
					// Protection configuration
FLASH->CR2 |= FLASH_CR2_LP; // Level 2 protection
FLASH->OPTR |= FLASH_OPTR_RDP; // Read protection enable
				
			
Chiffrement personnalisé :
				
					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;
    }
}
				
			

Stratégie de décryptage

Rétro-ingénierie logicielle

Analyse du vidage mémoire :

				
					# Python script for XOR key detection
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
				
			

Configuration de l'attaque matérielle

Paramètres de glitching de tension :

				
					// Glitch generation code
void apply_glitch() {
    DAC->DHR12R1 = 0x0000; // Initial voltage
    delay_us(100);
    DAC->DHR12R1 = 0x03FF; // Glitch voltage
    delay_us(50);
    DAC->DHR12R1 = 0x0000;
}
				
			

Étude de cas : Récupération d'un réseau de capteurs

Défi

  • Système : plus de 500 capteurs environnementaux avec STM8S105K6
  • Problème : fabricant – micrologiciel verrouillé empêchant les mises à jour de sécurité
  • Objectif : récupérer les algorithmes d'étalonnage des capteurs

Exécution technique

Processus de récupération des clés :

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

Script de validation :

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

Stratégies d'atténuation

Sécurité renforcée

				
					// Dual - key implementation
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;
}
				
			

Améliorations des processus

  1. Authentification à deux facteurs pour les mises à jour du micrologiciel
  2. Brouillage de la mémoire pendant l'exécution
  3. Rotation dynamique des clés toutes les 24 heures

Conclusion

Ce projet démontre que des attaques ciblées combinant analyse logicielle et défaillance matérielle peuvent contourner même les systèmes de sécurité sophistiqués des microcontrôleurs 8 bits. Le micrologiciel récupéré a permis à notre client de moderniser son réseau de capteurs tout en mettant en œuvre des protocoles de sécurité de pointe.
 
Pour des services de décryptage au niveau de l'entreprise, veuillez contacter :
Billy Zheng Principal Engineer of Well Done PCB Technology

Ingénieur principal :
Dr Billy Zheng
Well Done PCB Technology
billy@reversepcb.com Assistance
d'urgence : +86-157-9847-6858

Abonnez-vous

Rejoignez notre liste d’abonnés pour obtenir mensuel blog des mises à jour, des nouvelles technologies, des études de cas. Nous n’enverrons jamais de spam, et vous pouvez vous désinscrire à tout moment.

À Propos De L'Auteur

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Besoin D'Aide?

Retour en haut

Instant Quote