Home Forum ELETTRONICA GENERALE Protezione programma sul microcontroller

Questo argomento contiene 2 risposte, ha 3 partecipanti, ed è stato aggiornato da slovati slovati 3 anni, 6 mesi fa.

Stai vedendo 3 articoli - dal 1 a 3 (di 3 totali)
  • Autore
    Articoli
  • #57850

    Raff78
    Membro

    E’ possibile proteggere (eventualmente con una password) un programma scritto su un microcontroller?

    #69388

    electropower
    Membro

    Tutti i microcontrollori permettono la protezione del codice, sia in lettura che in scrittura che entrambi, ma non con le modalità da te citate. Infatti, la protezione del codice in un microcontrollore avviene bloccando in scrittura o/ e in lettura la memoria flash che contiene il programma e questo viene fatto durante la fase di programmazione del micro impostando un fuse particolare. In realtà, per le attuali famiglie di microcontrollori, i fuses sono più di uno e permettono di distinguere il grado protezione del codice o le sezioni da proteggere quelle no. Per dirti, si può proteggere addirittura l’eeprom che si utilizza per il salvataggio non volatile di impostazioni o parametri utili per le esecuzioni successive del firmware, oppure ci si può limitare ad imporre un blocco sola sulla flash, ancora una volta in scrittura o in lettura. Esiste poi inoltre la possibilità di bloccare al firmware stesso l’accesso a parte della memoria programma essendo quest’ultima auto programmabile (ed è il motivo per cui funzionano i bootloader). La protezione o c’è o non c’è e può essere tolta solo riprogrammando la flash con un codice differente e reimpostando i fuses (non so se questa possibilità viene però offerta da tutte le case che producono microcontrollori, ma credo proprio di si perché non ha granché senso buttare via un micro protetto magari per errore).
    Lo sblocco del microcontrollore (non del firmware perché la procedura richiede di sovrascrivere il firmware originale, non di poter leggere e replicare quello montato sul micro) l’ho visto fare sia su micro della della Microchip della serie 18F che sui DSP della Freescale montati su dei convertitori fotovoltaici. Per quest’ultimi con i quali ho maggiore “esperienza” (no di programmazione ma nei team con i quali mi sono ritrovato a lavorare, i DSP della Freescale sono stati i controllori utilizzati in quasi tutti i progetti), la procedura di sblocco consiste nell’utilizzare un software abbinato all’ambiente di sviluppo “Codewarrior” il cui nome è “Flash Programmer” e che consente di spuntare un’opzione dedicata allo sblocco della flash. Comunque sia, una volta scritta e protetta la flash, poterne fare un reverse engineering o replicare il codice risulta davvero impossibile. Come tutti, i primi passi verso il mondo dei micro gli ho compiuti con Arduino e poi con il PIC16F84 trovati in stock ad un prezzo davvero misero. Programmando e proteggendo un PIC16F84 è praticamente impossibile poterlo riutilizzare per caricarci altri firmware, o almeno io non ci sono riuscito. Ho quel microcontrollore che fa ne più ne meno di ciò che può fare un comunissimo NE555 e il tutto perché il software abbinato al programmatore che ho utilizzato non mi ha notificato, a suo tempo, la protezione del micro, quindi cliccando sulla spunta CP ho bloccato definitivamente la flash.
    Il fatto di poter bloccare e sbloccare la flash tramite una password non l’ho sentita da nessuna parte, d’altronde non avrebbe tanto senso visto che se a poterci mettere le mani sul micro sono i tecnici di un centro assistenza, si da per scontato che loro dispongano già del firmware originale, quindi se la manutenzione consiste nel rinfrescare o aggiornare il codice, basterà sovrascrivere il vecchio con una procedura simile a quelle che ho descritto sopra.
    Prendi il tuo micro, ricerca il datasheet e su quello troverai tutte le informazioni in merito al blocco della flash e se ci sono possibilità di sblocco, almeno in sovrascrittura.

    #69395
    slovati
    slovati
    Partecipante

    Sarebbe utile sapere, se possibile, il motivo per cui intendi proteggere il software del microcontrollore.
    1. E’ per evitare che venga copiato/clonato?
    2. Oppure, ti serve sapere se il firmware è stato manomesso, o modificato (non necessariamente con finalità dolose)?
    Relativamente al caso 1., esistono oggi delle soluzioni (di fascia medio-alta) che proteggono il firmware (o IP come si usa dire) con delle password. Un esempio è Actel SmartFusion (http://it.emcelettronica.com/actel-smartfusion-prima-fpga-segnali-misti-intelligenti) però si parla di fpga evolute, non di microcontrollori. Un’alternativa potrebbe essere quella di comprimere l’applicazione (la cui immagine su flash sarà anch’essa compressa), farla caricare e decomprimere in ram dal bootloader prima di eseguirla. Questa soluzione implica che il tuo software deve girare in ram, quindi dovresti avere in pratica un microprocessore (o comunque una ram esterna sufficientemente ampia). Questa soluzione è però personalizzabile e se anche ti copiano l’immagine non sanno a priori come risalire al disassemblato (diciamo che è più difficile disassemblare il codice, anche se non impossibile).
    Per il caso 2. puoi usare il classico CRC che memorizzi in posizione fissa e calcolato su tutto il codice presente in flash. Se trovi che il CRC calcolato è diverso da quello in flash, c’è qualcosa che non va.

Stai vedendo 3 articoli - dal 1 a 3 (di 3 totali)

Devi aver eseguito l’accesso per poter rispondere a questa discussione.