IT201800005466A1 - Metodo e dispositivo per scrivere oggetti software in una unita' elettronica di controllo di un motore a combustione interna - Google Patents

Metodo e dispositivo per scrivere oggetti software in una unita' elettronica di controllo di un motore a combustione interna Download PDF

Info

Publication number
IT201800005466A1
IT201800005466A1 IT102018000005466A IT201800005466A IT201800005466A1 IT 201800005466 A1 IT201800005466 A1 IT 201800005466A1 IT 102018000005466 A IT102018000005466 A IT 102018000005466A IT 201800005466 A IT201800005466 A IT 201800005466A IT 201800005466 A1 IT201800005466 A1 IT 201800005466A1
Authority
IT
Italy
Prior art keywords
code
memory
key code
key
seed
Prior art date
Application number
IT102018000005466A
Other languages
English (en)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed filed Critical
Priority to IT102018000005466A priority Critical patent/IT201800005466A1/it
Priority to ES19167958T priority patent/ES2869240T3/es
Priority to EP19167958.8A priority patent/EP3570193B1/en
Priority to US16/409,139 priority patent/US11068173B2/en
Priority to CN201910406475.3A priority patent/CN110501935B/zh
Publication of IT201800005466A1 publication Critical patent/IT201800005466A1/it
Priority to US17/195,198 priority patent/US20210200451A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/062Securing storage systems
    • G06F3/0622Securing storage systems in relation to access
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/30Authentication, i.e. establishing the identity or authorisation of security principals
    • G06F21/44Program or device authentication
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0423Input/output
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/088Usage controlling of secret information, e.g. techniques for restricting cryptographic keys to pre-authorized uses, different access levels, validity of crypto-period, different key- or password length, or different strong and weak cryptographic algorithms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3271Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using challenge-response
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/20Pc systems
    • G05B2219/25Pc structure of the system
    • G05B2219/25257Microcontroller
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/84Vehicles

Description

DESCRIZIONE
del Brevetto Italiano per Invenzione Industriale dal titolo: “METODO E DISPOSITIVO PER SCRIVERE OGGETTI SOFTWARE IN UNA
UNITÀ ELETTRONICA DI CONTROLLO DI UN MOTORE
A COMBUSTIONE INTERNA”
CAMPO DELL’INVENZIONE
La presente descrizione riguarda un metodo e un dispositivo per scrivere (o sovrascrivere) oggetti software in una memoria non volatile riscrivibile di un'unità di controllo elettronica di un motore a combustione interna.
TECNICA PRECEDENTE
È noto che un motore a combustione interna, ad esempio un motore a combustione di un veicolo a motore, può essere provvisto di un'unità di controllo elettronica (ECU) per controllare vari dispositivi operativi del motore (ad esempio iniettori di carburante).
L'ECU può comprendere un'unità di elaborazione centrale (CPU) che controlla i dispositivi operativi del motore utilizzando oggetti software predeterminati, inclusi programmi di controllo del motore e dati di calibrazione (ad esempio tabelle di dati/mappe), che possono essere memorizzati in una memoria non volatile riscrivibile (ad esempio una memoria flash) della ECU.
Questi oggetti software possono essere scritti (o sovrascritti) per mezzo di un dispositivo di scrittura di memoria esterno che può essere collegato alla ECU. Per avere accesso alla memoria, l'utente del dispositivo di scrittura di memoria viene sottoposto a una procedura di autenticazione mediante la quale solo il costruttore del motore (ovvero il personale autorizzato del costruttore del motore) può scrivere (o sovrascrivere) programmi di controllo del motore e dati di calibrazione.
Modificando i programmi di controllo e/o i dati di calibrazione memorizzati nella memoria, il produttore del motore può modificare le prestazioni del motore a combustione interna sotto molti aspetti, ad esempio in termini di generazione di energia, emissioni inquinanti, eccetera.
In questo modo, il produttore del motore è in grado di fornire ai suoi clienti (ad esempio produttori di veicoli) una gamma completa di motori a combustione interna basati sulla stessa costruzione meccanica.
Tuttavia, questo approccio implica che il produttore del motore debba scrivere inhouse le memorie di tutte le ECU e, che per ciascuna configurazione specifica dei programmi di controllo e dei dati di calibrazione, debba assegnare a tali ECU un diverso numero di componente stoccando almeno una minima quantità di ECU per ciascun numero di componente, aumentando in tal modo i costi industriali e di stoccaggio.
SOMMARIO DELLA DESCRIZIONE
In considerazione di quanto precede, un oggetto della presente descrizione è quello di risolvere, o almeno ridurre positivamente, il suddetto inconveniente fornendo una soluzione che sia in grado di ridurre i costi che il costruttore del motore deve coprire in relazione alla gestione delle ECU.
Un ulteriore oggetto è quello di raggiungere questo scopo con una soluzione semplice, razionale, sicura e piuttosto economica.
Questo e ulteriori oggetti vengono raggiunti dalle forme di realizzazione della descrizione avente le caratteristiche incluse nelle rivendicazioni indipendenti. Le rivendicazioni dipendenti delineano aspetti aggiuntivi delle varie forme di realizzazione.
Una forma di realizzazione della presente descrizione fornisce un metodo per scrivere (o sovrascrivere) oggetti software in una memoria non volatile riscrivibile di un'unità elettronica di controllo (ECU) di un motore a combustione interna, in cui il metodo comprende:
- ricevere una richiesta di accesso da un dispositivo di scrittura di memoria,
- generare un codice seme,
- trasmettere il codice seme al dispositivo di scrittura di memoria,
- generare un primo codice chiave sulla base del codice seme e un primo codice di identificazione (ad esempio una prima password),
- generare un secondo codice chiave sulla base del codice seme e un secondo codice di identificazione (ad esempio una seconda password), - ricevere un codice chiave di riferimento dal dispositivo di scrittura di memoria,
- comparare il codice chiave di riferimento con il primo codice chiave e/o con il secondo codice chiave, e
- abilitare il dispositivo di scrittura di memoria a scrivere oggetti software nella memoria non volatile riscrivibile, se il codice chiave di riferimento corrisponde (ad esempio è uguale) al primo codice chiave o al secondo codice chiave.
Grazie a questa soluzione, la memoria dell'ECU può essere scritta (o sovrascritta) solo se il dispositivo di scrittura di memoria, che può essere un dispositivo elettronico esterno configurato per essere collegato all'ECU, è in grado di fornire un codice chiave di riferimento corrispondente al primo o secondo codice chiave, eseguendo così una procedura di autenticazione che impedisce l'uso non autorizzato del dispositivo di scrittura di memoria. In altre parole, solo i dispositivi di scrittura che sono in grado di fornire un codice chiave di riferimento che corrisponde al primo o al secondo codice chiave possono scrivere o sovrascrivere la memoria dell'ECU e, poiché il primo e il secondo codice chiave sono generati sulla base di un primo e un secondo codice di identificazione che possono essere mantenuti riservati e forniti unicamente agli utenti autorizzati, questa procedura garantisce che la memoria dell'ECU resti sicura e non possa essere scritta (ad esempio manomessa) da utenti non autorizzati. D'altra parte, dal momento che questa procedura di autenticazione può essere soddisfatta da due diversi valori del codice chiave di riferimento, il dispositivo di scrittura di memoria può essere validamente utilizzato da due utenti autorizzati, ad esempio dal costruttore del motore e da un suo cliente (ad esempio il produttore del veicolo che utilizza il motore a combustione interna). In questo modo, pur mantenendo il costruttore del motore sempre il controllo del motore a combustione interna che produce, gli oggetti software possono essere scritti nella memoria dell’ECU dal costruttore del veicolo, essendo in tal modo ridotti i costi che il costruttore del motore deve coprire in relazione alla gestione delle ECU. Secondo alcune forme di realizzazione, il primo codice chiave può essere generato, se (ossia a condizione che) la richiesta di accesso corrisponda a una richiesta di accesso di primo tipo, mentre il secondo codice chiave può essere generato, se (ossia a condizione che) la richiesta di accesso corrisponda a una richiesta di accesso di secondo tipo.
In questo modo, il primo codice chiave e il secondo codice chiave non vengono generati tutte le volte che viene eseguito il metodo.
Quando viene ricevuta una richiesta di accesso di primo tipo, il metodo può fornire solo la generazione del primo codice chiave, confrontando unicamente il codice chiave di riferimento con il primo codice chiave, e abilitando unicamente il dispositivo di scrittura di memoria a scrivere oggetti software nella memoria non volatile riscrivibile, se il codice chiave di riferimento corrisponde (ad esempio è uguale) al primo codice chiave. Quando viene ricevuta una richiesta di accesso di secondo tipo, il metodo può fornire solo la generazione del secondo codice chiave, unicamente confrontando il codice chiave di riferimento con il secondo codice chiave, e abilitando unicamente il dispositivo di scrittura della memoria a scrivere oggetti software nella memoria non volatile riscrivibile, se il codice chiave di riferimento corrisponde (ad esempio è uguale) al secondo codice chiave.
Altre forme di realizzazione possono tuttavia prescrivere che sia il primo codice chiave che il secondo codice chiave siano generati tutte le volte che il metodo viene eseguito.
In questo caso, il codice chiave di riferimento può essere confrontato sia con il primo codice chiave che con il secondo codice chiave, e il dispositivo di scrittura della memoria può essere abilitato a scrivere oggetti software nella memoria non volatile riscrivibile, se il codice chiave di riferimento corrisponde al primo codice chiave o al secondo codice chiave.
Secondo un aspetto del metodo, il software obietta che il dispositivo di scrittura di memoria è abilitato a scrivere (o a sovrascrivere) nella memoria non volatile riscrivibile, se il codice chiave di riferimento corrisponde al primo codice chiave o al secondo codice chiave, può includere almeno programmi di controllo del motore e/o dati di calibrazione.
In questo modo, i costruttori di motori saranno in grado di fornire motori a combustione interna con un solo tipo di ECU, ad esempio ECU la cui memoria non contiene al suo interno programmi di controllo motore e dati di calibrazione (ECU vuote) o la cui memoria contiene unicamente programmi di controllo provvisorio e/o dati di calibrazione che, ad esempio, non consentono al motore a combustione interna di funzionare effettivamente, mentre efficaci programmi di controllo motore e/o di dati di calibrazione possono essere scritti o sovrascritti nella memoria dal cliente che acquista il motore a combustione interna.
Secondo un ulteriore aspetto del metodo, il primo codice di identificazione e il secondo codice di identificazione possono essere memorizzati nella memoria non volatile riscrivibile. In particolare, il primo e il secondo codice di identificazione possono essere preventivamente memorizzati nella memoria non volatile riscrivibile, vale a dire prima dell'esecuzione della procedura di autenticazione incorporata nel metodo sopra descritto, ad esempio dal fornitore dell'unità di controllo elettronica.
Grazie a questa soluzione, il primo e il secondo codice di identificazione sono conservati all'interno dell’ECU aumentando la sicurezza del metodo, ovvero aumentando la certezza che persone non autorizzate non possano accedere alla memoria dell’ECU.
In particolare, il primo codice di identificazione (che può essere assegnato ad esempio al produttore del motore) può essere memorizzato in un indirizzo di memoria fisso della memoria non volatile riscrivibile, ad esempio in una sua area di memorizzazione di avvio.
In questo modo, il primo codice di identificazione può essere facilmente recuperato dall'indirizzo di memoria prescritto.
D'altra parte, il secondo codice di identificazione (che può essere assegnato ad esempio ai costruttori di veicoli) può essere memorizzato in un indirizzo di memoria della memoria non volatile riscrivibile che è criptata in un codice puntatore anch'esso memorizzato nella memoria non volatile riscrivibile.
Questo codice puntatore può avere una lunghezza fissa (ad esempio un numero fisso di bit) e/o può essere memorizzato in un indirizzo di memoria fisso della memoria non volatile riscrivibile, ad esempio in una sua area di memorizzazione di dati.
In questo modo, il secondo codice di identificazione può essere recuperato leggendo il codice puntatore, decifrando il codice puntatore per ottenere l'effettivo indirizzo di memoria del secondo codice di identificazione e infine leggendo il secondo codice di identificazione dall'indirizzo di memoria così ottenuto.
Grazie a questa soluzione, l'indirizzo di memoria del secondo codice di identificazione può essere facilmente modificato, ad esempio per consentire al secondo codice di identificazione di avere lunghezze diverse (ad esempio numero diverso di bit) e/o allocare meglio le aree di memorizzazione della memoria non volatile riscrivibile per far fronte alle diverse versioni dei programmi di controllo del motore e/o dei dati di calibrazione da scrivere al suo interno.
Secondo un aspetto del metodo, il codice seme può essere generato dall'unità di controllo elettronica, ad esempio eseguendo un algoritmo di generazione di seme che può essere memorizzato nella memoria non volatile riscrivibile, ad esempio nell'area di memorizzazione di avvio.
In questo modo, il codice seme viene generato in modo sicuro utilizzando le risorse interne dell'unità di controllo elettronica, senza la necessità di condividere le informazioni con il dispositivo di scrittura della memoria o altri dispositivi esterni.
Secondo un ulteriore aspetto del metodo, il primo codice chiave e il secondo codice chiave possono essere generati dall'unità di controllo elettronica, ad esempio eseguendo un algoritmo di generazione chiavi che può essere memorizzato nella memoria non volatile riscrivibile, ad esempio nell’area di memorizzazione di avvio.
In questo modo, anche il primo e il secondo codice chiave vengono generati in modo sicuro utilizzando le risorse interne dell'unità di controllo elettronica, senza la necessità di condividere le informazioni con il dispositivo di scrittura della memoria o altri dispositivi esterni.
L'algoritmo di generazione del seme e/o l'algoritmo di generazione della chiave possono essere preventivamente memorizzati nella memoria non volatile riscrivibile, vale a dire prima dell'esecuzione della procedura di autenticazione incorporata nel metodo sopra descritto, ad esempio dal fornitore dell'unità di controllo elettronica.
Secondo un ulteriore aspetto del metodo, il codice chiave di riferimento può essere generato dal dispositivo di scrittura della memoria sulla base del codice seme e di un terzo codice di identificazione (ad esempio una terza password), ad esempio utilizzando un algoritmo di generazione chiave dello stesso tipo di quello usato per generare il primo e il secondo codice chiave.
In questo modo, la memoria della ECU può essere scritta (o sovrascritta) solo se il terzo codice di identificazione utilizzato dal dispositivo di scrittura della memoria corrisponde (ad esempio è uguale) al primo codice di identificazione o al secondo codice di identificazione.
Il terzo codice di identificazione può essere fornito al dispositivo di scrittura di memoria da un utente dello stesso, ad esempio attraverso un'interfaccia utente come una tastiera, un lettore di schede, un lettore di codice visivo (ad esempio un lettore di codice QR) o altro.
In questo modo, il dispositivo di scrittura della memoria sarà abilitato solo a scrivere (o sovrascrivere) la memoria non volatile riscrivibile della ECU, se l'utente del dispositivo di scrittura della memoria conosce (o è in possesso) del primo codice di identificazione o del secondo codice di identificazione.
In altre forme di realizzazione, il terzo codice di identificazione può essere memorizzato in una memoria del dispositivo o altrimenti memorizzato all'interno del dispositivo.
In questo modo, è possibile predisporre un certo numero di dispositivi che sono effettivamente in grado di accedere alla memoria della ECU e solo gli utenti che sono in possesso di uno di questi dispositivi saranno effettivamente in grado di scrivere la memoria non volatile riscrivibile.
Secondo un ulteriore aspetto, il metodo può comprendere la fase aggiuntiva di abilitare il dispositivo di scrittura di memoria per modificare il secondo codice di identificazione, se il codice chiave di riferimento ricevuto dal dispositivo di scrittura di memoria corrisponde al secondo codice chiave.
Grazie a questo aspetto, l'utente che è in possesso del secondo codice di identificazione, ad esempio il costruttore del veicolo, è autorizzato a modificare e/o a personalizzare il proprio codice, rendendolo segreto per tutti gli altri che acquistano lo stesso tipo di motori a combustione interna.
A titolo di esempio, il costruttore del motore può chiedere al proprio fornitore di fornire ECU aventi un secondo codice di identificazione predeterminato. In fase di vendita di motori a combustione interna, il produttore del motore può comunicare il secondo codice di identificazione a tutti i suoi clienti, in modo che ciascuno di essi sia abilitato a scrivere (o sovrascrivere) la memoria riscrivibile delle ECU. A loro volta, ciascuno di questi clienti può modificare a piacere il secondo codice di identificazione, impedendo in tal modo che le memorie delle ECU dei motori a combustione interna acquistate vengano sovrascritte da altri clienti del produttore del motore. D'altra parte, il produttore del motore sarà sempre in grado di scrivere o sovrascrivere la memoria dell’ECU dei suoi motori a combustione interna utilizzando il primo codice di identificazione.
In altre forme di realizzazione, il dispositivo di scrittura della memoria può essere abilitato a modificare il secondo codice di identificazione, se il codice chiave di riferimento ricevuto dal dispositivo di scrittura della memoria corrisponde al primo codice chiave.
In questo modo, il secondo codice di identificazione può essere modificato in qualsiasi momento anche dal produttore del motore.
Il metodo può anche essere realizzato con l'aiuto di un programma per computer comprendente un codice di programma per eseguire tutte le fasi del metodo sopra descritto e nella forma di un prodotto di programma per computer comprendente il programma per computer. Il metodo può anche essere incorporato come un segnale elettromagnetico, detto segnale essendo modulato per trasportare una sequenza di bit di dati che rappresentano un programma per computer per eseguire tutte le fasi del metodo.
Un'altra forma di realizzazione della presente descrizione fornisce un'unità di controllo elettronica di un motore a combustione interna, comprendente una memoria non volatile riscrivibile e un'unità di elaborazione configurata per:
- ricevere una richiesta di accesso da un dispositivo di scrittura della memoria,
- generarre un codice seme,
- trasmettere il codice seme al dispositivo di scrittura della memoria, - generare un primo codice chiave sulla base del codice seme e del primo codice di identificazione,
- generare un secondo codice chiave sulla base del codice seme e del secondo codice di identificazione,
- ricevere un codice chiave di riferimento dal dispositivo di scrittura della memoria,
- confrontare il codice chiave di riferimento con il primo codice chiave e/o con il secondo codice chiave, e
- abilitare il dispositivo di scrittura della memoria per scrivere oggetti software nella memoria non volatile riscrivibile se il codice chiave di riferimento corrisponde (ad esempio è uguale) al primo codice chiave o al secondo codice chiave.
Questa forma di realizzazione realizza effetti simili del metodo descritto sopra, in particolare quello di consentire ad almeno due utenti autorizzati di scrivere (o sovrascrivere) oggetti software nella memoria non volatile riscrivibile dell’ECU. Uno qualsiasi degli aspetti aggiuntivi del metodo sopra descritto può essere applicato mutatis mutandis a questa forma di realizzazione della descrizione. In particolare, l'unità di elaborazione può essere configurata per generare il primo codice chiave, se (ossia a condizione che) la richiesta di accesso corrisponda a una richiesta di accesso di primo tipo e per generare il secondo codice chiave, se (ossia a condizione che) la richiesta di accesso corrisponda a una richiesta di accesso di secondo tipo. Il software che obietta che il dispositivo di scrittura della memoria è abilitato a scrivere (o sovrascrivere) nella memoria non volatile riscrivibile, può comprendere almeno programmi di controllo del motore e/o dati di calibrazione. Il primo codice di identificazione e il secondo codice di identificazione possono essere memorizzati nella memoria non volatile riscrivibile. Il primo codice di identificazione può essere memorizzato in un indirizzo di memoria fisso della memoria non volatile riscrivibile, ad esempio in una sua area di memorizzazione di avvio. Il secondo codice di identificazione può essere memorizzato in un indirizzo di memoria della memoria non volatile riscrivibile che è cifrata in un codice puntatore anch'esso memorizzato nella memoria non volatile riscrivibile, ad esempio ad un suo indirizzo fisso. Il codice seme può essere generato da un'unità di elaborazione dell’ECU che esegue un algoritmo di generazione seme il quale può essere memorizzato nella memoria non volatile riscrivibile, ad esempio nell'area di memorizzazione di avvio. Il primo codice chiave e il secondo codice chiave possono essere generati dall'unità di elaborazione dell’ECU che esegue un algoritmo di generazione chiave il quale può essere memorizzato nella memoria non volatile riscrivibile, ad esempio nell'area di memorizzazione di avvio. Il dispositivo di scrittura della memoria può comprendere un'unità di elaborazione configurata per generare il codice chiave di riferimento sulla base del codice seme e di un terzo codice di identificazione, ad esempio usando un algoritmo di generazione chiave dello stesso tipo di quello usato per generare il primo e il secondo codice chiave. L'unità di elaborazione della ECU può essere ulteriormente configurata per consentire al dispositivo di scrittura della memoria di modificare il secondo codice di identificazione, se il codice chiave di riferimento ricevuto dal dispositivo di scrittura della memoria corrisponde al secondo codice chiave e/o al primo codice chiave (ad esempio ogni volta che il dispositivo di scrittura della memoria è autorizzato a scrivere o sovrascrivere oggetti software nella memoria non volatile riscrivibile).
Un'ulteriore forma di realizzazione della descrizione fornisce un'unità di controllo elettronica comprendente un'unità di elaborazione che accede a una memoria, l'unità di elaborazione essendo configurata per:
- ricevere una richiesta di accesso da un dispositivo;
- accedere a una prima password dalla memoria;
- calcolare un seme in base alla prima password e inviare il seme al dispositivo;
- ricevere una chiave generata dal dispositivo in base al seme;
- determinare se la chiave è valida;
- concedere l'accesso al dispositivo quando la determinazione indica che la chiave è valida; e
- scrivere una seconda password nella memoria dopo aver concesso l'accesso per le future richieste di accesso.
BREVE DESCRIZIONE DEI DISEGNI
La presente invenzione verrà ora descritta, a titolo di esempio, con riferimento ai disegni allegati.
Figura 1 è una rappresentazione schematica di una forma di realizzazione di un motore a combustione interna che incorpora le caratteristiche della descrizione; Figura 2 è una rappresentazione schematica di un'unità di controllo del motore appartenente al motore a combustione interna di figura 1;
Figura 3 è uno schema a blocchi che mostra una costruzione interna esplicativa di una memoria non volatile riscrivibile usata in una forma di realizzazione della descrizione;
Figura 5 è uno schema che illustra una logica seed & key;
Figura 5 è un diagramma di flusso che illustra un metodo secondo una forma di realizzazione della descrizione;
Figura 6 è un diagramma di flusso che illustra un metodo secondo un'ulteriore forma di realizzazione della descrizione.
DESCRIZIONE DETTAGLIATA
Figura 1 mostra un esempio di realizzazione che comprende un motore a combustione interna (MCI) 100. Il motore a combustione interna 100 può essere, ad esempio, un motore ad accensione spontanea, come un motore diesel, un motore ad accensione a scintilla come un motore a benzina, o un altro tipo di motore. Il motore a combustione interna 100 può essere utilizzato in un veicolo a motore (non mostrato), come un'autovettura, un camion o un fuoristrada agricolo. In altre forme di realizzazione, il motore a combustione interna 100 può essere usato in generatori di potenza o apparecchiature di potenza. Il motore a combustione interna 100 può essere utilizzato in varie altre applicazioni.
Il motore a combustione interna 100 può includere un blocco motore 105 che definisce almeno un cilindro 110. Ciascun cilindro 110 può accogliere un pistone alternativo 115. Ciascun pistone 115 può cooperare con il cilindro 110 a definire una camera di combustione 120 progettata per ricevere un combustibile e miscela d’aria. La miscela di carburante e aria può essere accesa (tipicamente tramite compressione, sebbene in alcuni sistemi possa essere dovuta a un riscaldatore o a una scintilla). L'accensione della miscela di combustibile e aria può generare gas di scarico caldi in espansione che provocano il movimento del pistone 115. Sul lato opposto della camera di combustione 120, il pistone 115 può essere collegato a un albero a gomiti 125 in modo tale che il movimento alternativo del pistone 115 sia trasformato in un movimento rotatorio dell'albero a gomiti 125.
Il combustibile può essere alimentato nella camera di combustione 120 mediante un apparato di iniezione 130 avente almeno un iniettore di carburante 135. L'iniettore di carburante 135 può essere accoppiato al cilindro 110 o altrimenti in comunicazione di fluido con la camera di combustione allo scopo di iniettare combustibile direttamente all'interno del camera di combustione 120. L'apparato di iniezione 130 può essere collegato con una fonte di combustibile 140 (ad esempio un serbatoio), e in alcuni casi ulteriormente a una pompa 145, che preleva il combustibile dalla fonte di combustibile 140 e lo alimenta a una tubazione del combustibile 150 in comunicazione di fluido con l'iniettore di combustibile 135. Sono possibili ulteriori varianti dei sistemi di erogazione del combustibile.
Il motore a combustione interna 100 può comprendere un cilindro 110. In altri sistemi, il motore a combustione interna 100 può comprendere una pluralità di cilindri 110 (ad esempio 2, 3, 4, 6 o 8 cilindri), ciascuno dei quali può accogliere un corrispondente pistone 115, a definire una corrispondente camera di combustione 120. Nei motori a cilindri multipli, l'apparato di iniezione 130 può comprendere una pluralità di iniettori di combustibile 135, ciascuno dei quali è accoppiato ad un corrispondente cilindro 110. Tutti i pistoni 115 possono essere accoppiati allo stesso albero a gomiti 125. Alcuni o tutti gli iniettori di combustibile 135 possono essere in comunicazione di fluido con la medesima tubazione di combustibile 150.
Ciascun cilindro 110 può avere almeno due valvole, compresa una valvola di aspirazione 155 che consente l’ingresso dell’aria nella camera di combustione 120 e almeno una valvola di scarico 160 che consente ai gas di scarico di uscire dalla camera di combustione 120. Le valvole 155 e 160 possono essere attivate da un albero a gomiti (non mostrato) che può ruotare in modo sincrono con l'albero a gomiti 125, in cui può essere previsto un phaser della camma per variare selettivamente il tempo tra l'albero a camme e l'albero a gomiti 125.
L'aria di aspirazione può essere convogliata alla valvola di aspirazione 155 per mezzo di un condotto di aspirazione dell'aria 165 che fornisce aria dall'ambiente alla camera di combustione 120 definita dal cilindro 110. L'aria di aspirazione può essere fatta passare attraverso un filtro dell'aria prima di essere introdotta nella camera di combustione 120. Se il motore a combustione interna 100 comprende una pluralità di cilindri 110, può essere previsto un collettore di aspirazione (non mostrato) per ricevere l'aria dal condotto di aspirazione 165 e distribuirla in tutti i cilindri 110 attraverso le corrispondenti valvole di aspirazione 155. In alcune forme di realizzazione, un corpo farfallato 167 può essere previsto nel condotto di aspirazione 165, ad esempio a monte del collettore di aspirazione, se presente, per regolare il flusso di aria in uno o più cilindri 110.
I gas di scarico (risultanti dall'accensione del combustibile e della miscela d'aria nella camera di combustione 120) possono uscire dal cilindro 110 del motore attraverso l'una o più valvole di scarico 160, e possono essere diretti in un condotto di scarico 170. Il condotto di scarico 170 può trasportare i gas di scarico ed espellerli nell'ambiente circostante. In alcune forme di realizzazione in cui il motore a combustione interna 100 comprende una pluralità di cilindri 110, tutte le corrispondenti valvole di scarico 160 possono essere in comunicazione di fluido con un collettore di scarico (non mostrato), che può raccogliere i gas di scarico e dirigerli nel condotto di scarico 170.
In alcune forme di realizzazione, il motore a combustione interna 100 può comprendere un sistema ad aria forzata, come un turbocompressore 175. Il turbocompressore 175 può comprendere un compressore 180 situato nel condotto di aspirazione 165 e una turbina 185 situata nel condotto di scarico 170 e accoppiata in modo rotazionale al compressore 180. La turbina 185 ruota ricevendo gas di scarico dal condotto di scarico 170 che dirige i gas di scarico attraverso una serie di palette prima dell'espansione attraverso la turbina 185. In alcuni esempi, la turbina 185 può essere una turbina a geometria variabile (VGT) con un attuatore VGT (non mostrato) disposto per muovere le palette affinché alterino il flusso dei gas di scarico attraverso la turbina 185. In altre forme di realizzazione, il turbocompressore 175 può essere a geometria fissa e/o comprendere un cancello di scarico. La rotazione della turbina 185 provoca la rotazione del compressore 180, il cui effetto è quello di aumentare la pressione e la temperatura dell'aria nel condotto di aspirazione 165. Un intercooler 190 può essere disposto nel condotto di aspirazione 165, a valle del compressore 180, per ridurre la temperatura dell'aria. Altri motori a combustione interna possono non comprendere un turbocompressore 175 e corrispondenti componenti per la turbocompressione.
Il motore a combustione interna 100 può altresì comprendere uno o più dispositivi di post-trattamento 195, che possono essere disposti nel condotto di scarico 170 in modo tale che i gas di scarico passino attraverso di essi prima dell'espulsione nell'ambiente circostante. In alcuni sistemi con turbocompressori, i dispositivi di post-trattamento 195 possono essere posizionati a valle della turbina 185. I dispositivi di post-trattamento 195 possono essere o comprendere qualsiasi dispositivo configurato per modificare la composizione dei gas di scarico, ad esempio attraverso ritenzione e/o trasformazione chimica di alcuni dei loro componenti. Alcuni esempi di dispositivi di post-trattamento 195 comprendono, ma non sono limitati a, convertitori catalitici (a due e tre vie), catalizzatori di ossidazione, trappole di NOx magre, assorbitori di idrocarburi, sistemi di riduzione catalitica selettiva (SCR), catalizzatori di ossidazione diesel (DOC) e filtri particolati (ad esempio filtri antiparticolato diesel).
Alcune forme di realizzazione possono anche includere un sistema di ricircolo dei gas di scarico (EGR) per il ricircolo di almeno parte dei gas di scarico dal sistema di scarico al sistema di aspirazione. Il sistema EGR può includere un condotto EGR 200 accoppiato tra il condotto di scarico 170 e il condotto di aspirazione 165, ad esempio tra il collettore di scarico e il collettore di aspirazione quando presente. Il sistema EGR può inoltre comprendere un raffreddatore EGR 205 per ridurre la temperatura dei gas di scarico nel condotto EGR 200 e/o una valvola EGR 210 per regolare un flusso di gas di scarico nel condotto EGR 200. Altri motori possono non comprendere il sistema EGR e componenti corrispondenti. Il motore a combustione interna 100 può inoltre comprendere un'unità di controllo elettronica (ECU) 215 configurata per controllare il funzionamento del motore. L'ECU 215 può essere in comunicazione con uno o più sensori configurati per generare segnali in proporzione a vari parametri fisici associati al motore a combustione interna 100. Questi sensori possono includere, ma non sono limitati a, un flusso d'aria di massa e un sensore di temperatura nel condotto di aspirazione 165, un sensore di pressione e temperatura del collettore di aspirazione, un sensore di pressione di combustione, sensori di temperatura e di livello del liquido refrigerante e dell'olio, un sensore di pressione della tubazione del combustibile, un sensore di posizione della camma, un sensore di posizione della manovella, sensori di pressione di scarico e di temperatura, un sensore di temperatura EGR e un sensore di posizione dell'acceleratore (ad esempio pedale dell'acceleratore). Sulla base dei segnali ricevuti dai sensori, l'ECU 215 può essere configurata per generare segnali di uscita a vari dispositivi di controllo del motore che sono disposti per controllare il funzionamento del motore a combustione interna 100, compresi, sebbene in modo non limitativo, gli iniettori di combustibile 135, il corpo farfallato 167, la valvola EGR 210, l'attuatore VGT e il phaser della camma.
Come mostrato in figura 2, l'ECU 215 può includere un sistema di calcolo 220, che può essere incorporato come un computer o un microcomputer. Il sistema di calcolo 220 può ricevere i segnali del sensore attraverso un circuito di ingresso 225, che può essere posizionato nell'ECU 215. Il circuito di ingresso 225 può essere configurato per eseguire la sagomatura della forma d'onda, la conversione A/D o l'analoga elaborazione dei segnali. Nel sistema di calcolo 220, quantità di controllo ottimali dei parametri del motore a combustione interna possono essere calcolate in base ai segnali del sensore, al fine di generare i segnali di uscita che guidano i dispositivi di controllo del motore. I segnali di uscita possono essere generati dal sistema di calcolo 220 utilizzando oggetti software, come programmi di controllo del motore e dati di calibrazione. I programmi di controllo del motore possono rappresentare le funzionalità e/o le procedure (ad esempio sequenze di istruzioni) che vengono eseguite dal sistema di calcolo 220 per azionare i dispositivi di controllo del motore a combustione interna 100, mentre i dati di calibrazione possono rappresentare le impostazioni di queste funzionalità e/o procedure. Un circuito di uscita 230 può essere fornito nell’ECU 215 per ricevere i segnali di uscita dal sistema di calcolo 220 e per inoltrarli ai dispositivi di controllo. Inoltre, la ECU 215 può comprendere un circuito di comunicazione 235 per l'esecuzione di comunicazioni di dati con un dispositivo di scrittura di memoria 300. Il dispositivo di scrittura di memoria 300 può essere collegato all’ECU 215 quando oggetti software, come programmi di controllo del motore e/o dati di calibrazione, usati dal sistema informatico 220 devono essere scritti.
Il sistema di calcolo 220 nell'ECU 215 può comprendere un'unità di elaborazione centrale (CPU) 240, ad esempio un microprocessore, in comunicazione con una memoria 245 tangibile o non transitoria leggibile dalla macchina o leggibile dal computer per memorizzare al suo interno programmi di controllo del motore, dati di calibrazione e altri oggetti software da eseguire/leggere mediante CPU 240. Ad esempio, la CPU 240 può essere configurata per eseguire istruzioni memorizzate come programma di controllo del motore nella memoria 245. Il programma di controllo del motore può incorporare metodi di controllo che consentono alla CPU 240 di eseguire le fasi di tali metodi e controllare il motore a combustione interna 100. La memoria 245 può includere vari tipi di memorizzazione tra cui memoria ottica, memoria magnetica, memoria a stato solido, e altra memoria non volatile. In particolare, la memoria 245 può essere una memoria non volatile riscrivibile, cioè qualsiasi tipo di memoria in grado di cancellare programmi e dati una volta scritti e di scrivere nuovamente programmi e dati. In alcune forme di realizzazione, la memoria 245 può includere una memoria flash e/o una memoria di sola lettura programmabile cancellabile (EPROM). In altre forme di realizzazione, la memoria 245 può comprendere una memoria ad accesso casuale (RAM), una memoria di sola lettura (ROM) o altro supporto leggibile da una macchina come una memoria riscrivibile di compact disc (CD-RW), o un disco magnetico o ottico.
Un circuito I/O (ingresso-uscita) 250 può essere fornito nel sistema di calcolo 220 per ricevere i segnali dal circuito di ingresso 225 e dal circuito di comunicazione 235, e per applicare i segnali al circuito di uscita 230. Il sistema di calcolo 220 può inoltre comprendere un bus di interfaccia che collega i vari circuiti. Il bus di interfaccia può essere configurato per inviare, ricevere e modulare segnali analogici e/o digitali a/da vari sensori e dispositivi di controllo.
In alternativa o in aggiunta, l'ECU 215 può comprendere, nella sua interezza o parzialmente, circuiti in un controller, un microprocessore o un circuito integrato specifico per applicazione (ASIC), oppure essere implementata con logica o componenti discreti, o con una combinazione di altri tipi di circuiti dispositivi analogici o digitali, combinati su un singolo circuito integrato o distribuiti tra più circuiti integrati. In alternativa o in aggiunta, il motore a combustione interna 100 può essere provvisto di un diverso tipo di processore per fornire la logica elettronica, ad esempio un controller integrato, un computer di bordo, o qualsiasi modulo di elaborazione che possa essere impiegato nel veicolo.
I programmi memorizzati nella memoria 245 possono essere trasmessi dall'esterno tramite un cavo o in modalità wireless. Al di fuori della memoria 245, i programmi possono essere visibili come prodotti di programmi per computer, che possono anche essere denominati supporti leggibili da computer o supporti leggibili a macchina nella tecnica, e che devono essere intesi come codici di programmi informatici residenti su vettori, detti vettori essendo di natura transitoria o non transitoria con la conseguenza che i prodotti di programma per elaboratore possono essere considerati di natura transitoria o non transitoria. Un esempio di un prodotto di programma per computer transitorio è un segnale, ad esempio un segnale elettromagnetico come un segnale ottico, che è un vettore transitorio per il codice del programma per computer. Il trasporto di tale codice di programma per computer può essere ottenuto modulando il segnale mediante una tecnica di modulazione convenzionale come QPSK per dati digitali, in modo tale che i dati binari che rappresentano detto codice di programma per computer siano impressi sul segnale elettromagnetico transitorio.Di tali segnali si fa uso ad esempio durante la trasmissione del codice di programma per computer in modalità wireless tramite una connessione wireless a un laptop. Nel caso di un prodotto di un programma per computer non transitorio, il codice di programma per computer può essere incorporato in un supporto di memorizzazione tangibile. Il supporto di memorizzazione è quindi il vettore non transitorio sopra menzionato, cosicché il codice del programma per computer viene memorizzato in modo permanente o non permanente in modo recuperabile all'interno o su questo supporto di memorizzazione. Il supporto di memorizzazione può essere di tipo convenzionale noto nella tecnologia informatica come una memoria flash, un ASIC, un CD o simili.
La capacità di elaborazione dell'ECU 215 può essere distribuita tra più componenti di sistema, ad esempio tra più processori e memorie, opzionalmente comprendenti più sistemi di elaborazione distribuiti. Parametri, database e altre strutture di dati possono essere memorizzati e gestiti separatamente, possono essere incorporati in una singola memoria o database, possono essere organizzati in modo logico e fisico in molti modi diversi e possono essere implementati in molti modi, incluse strutture di dati come elenchi collegati , tabelle hash, o meccanismi di memorizzazione impliciti. I programmi possono essere parti (ad esempio subroutine) di un singolo programma, di programmi separati, distribuiti su più memorie e processor, o implementati in molti modi diversi, come in una libreria, quale ad esempio una libreria condivisa (ad esempio una libreria a collegamento dinamico (DLL)). La DLL, ad esempio, può memorizzare il codice che esegue l'elaborazione del sistema descritta in precedenza.
Un esempio di costruzioni interne della memoria 245 usate nell'ECU 215 è mostrato in figura 3. Secondo questa forma di realizzazione, la memoria 245 può comprendere diverse aree di memoria, compresa un'area di memorizzazione di avvio 255 per un programma di avvio, almeno un’area di memorizzazione programma 260 per memorizzare i programmi di controllo del motore del motore a combustione interna 100, e almeno un'area di memorizzazione dati 265 per memorizzare i dati di calibrazione. Queste aree di memorizzazione 255, 260 e 265 possono essere separate l'una dall'altra o unite. Il programma di avvio può essere un software elementare che svolge il compito di caricare e installare programmi (software) e/o dati nella memoria 245 dell'ECU 215. I programmi di controllo del motore memorizzati nell'area di memorizzazione del programma 260 possono essere quelli trasportati fuori dal sistema di calcolo 220 per controllare il motore a combustione interna 100 come spiegato sopra. Per eseguire questa operazione, mentre si eseguono i programmi di controllo del motore, il sistema di calcolo 220 può anche utilizzare i dati di calibrazione che sono memorizzati nell'area di memorizzazione dei dati 265.
I dati di calibrazione possono comprendere modelli matematici (ad esempio funzioni, equazioni) e/o tabelle di dati (ad esempio mappe) che definiscono le correlazioni tra i vari parametri operativi del motore, che devono essere raggiunti per controllare in modo efficace e/o efficiente il motore a combustione interna 100. Per Ad esempio, per far funzionare correttamente il motore a combustione interna 100, le quantità di combustibile iniettate dagli iniettori di combustibile 135 possono dipendere dalla velocità del motore (ossia la velocità di rotazione dell'albero a gomiti 125) e dalla posizione di un acceleratore, ad esempio un pedale acceleratore (non mostrato). Per consentire alla CPU 240 di comandare di conseguenza gli iniettori di combustibile 135, può essere fornita una tabella dati, di cui ciascuna cella è situata in corrispondenza dell'intersezione di un valore specifico della velocità del motore e di un valore specifico della posizione dell'acceleratore e contiene il valore della quantità di combustibile corrispondente a questi valori in ingresso. Questa tabella dati può essere ottenuta durante un'attività di calibrazione sperimentale e può essere memorizzata nell'area di memorizzazione dei dati 265. In questo modo, durante il funzionamento del motore a combustione interna 100, durante l'esecuzione dei programmi di controllo, la CPU 240 può determinare i valori correnti della velocità del motore e della posizione dell'acceleratore, ad esempio mediante i sensori dedicati, recuperare o leggere dalla tabella dati il valore corrispondente della quantità di combustibile da iniettare, quindi comandare di conseguenza gli iniettori di combustibile 135. Oltre ai parametri sopra menzionati, la quantità di combustibile può essere influenzata anche da altri parametri operativi del motore, come ad esempio la pressione dell'aria all'interno del condotto di aspirazione 165, la temperatura del motore (ad esempio la temperatura del liquido di raffreddamento/acqua del motore), la posizione della valvola a farfalla 167, la pressione del combustibile nella tubazione del combustibile 150, e così via. Di conseguenza, per ogni valore possibile di uno o più di questi parametri aggiuntivi, è possibile determinare una tabella dati specifica con un'attività di calibrazione sperimentale e memorizzata nell'area di memorizzazione dei dati 265. In questo modo, l'area di memorizzazione dati 265 può contenere una molteplicità di tabelle dati, tra le quali la CPU 240 può selezionare quella giusta sulla base del valore corrente dei parametri aggiuntivi. In altre forme di realizzazione, la tabella dati può avere più di due dimensioni, in modo da essere in grado di fornire la quantità di combustibile direttamente sulla base di tre o più parametri operativi del motore ricevuti in ingresso. I dati di calibrazione possono inoltre comprendere altre tabelle dati simili che, ricevendo in ingresso uno o più parametri operativi misurabili del motore, forniscono come corrispondenti valori di uscita parametri controllabili di funzionamento del motore. Oltre alla quantità di combustibile, questi parametri controllabili possono comprendere ad esempio la fasatura di iniezione, la posizione delle palette della turbina, la posizione della valvola wastegate, la posizione del phaser della camma e altri.
La memoria 245 può inoltre memorizzare i cosiddetti codici di iniettori (ad esempio codici QR) che codificano informazioni tecniche importanti sugli iniettori di combustibile 135 del motore a combustione interna 100. Infatti, sebbene gli iniettori di combustibile 135 siano fabbricati nello stesso modo, il loro comportamento può essere leggermente diverso, ad esempio a causa della diffusione della produzione. In particolare, può accadere che due o più iniettori di combustibile 135 dello stesso tipo forniscano quantità di combustibile differenti, sebbene siano azionati nello stesso modo (ad esempio per lo stesso tempo di eccitazione). Per questo motivo, alla fine della linea di produzione, ciascun iniettore di combustibile può essere testato per determinare un parametro, generalmente indicato come deviazione dell'iniezione, che è indicativo dello scostamento tra la quantità di combustibile effettivamente iniettata dall'iniettore di combustibile e un rispettivo valore atteso. Questo parametro può essere criptato nel codice dell'iniettore e memorizzato nella memoria 245, dove può essere letto e usato dalla CPU 240 allo scopo di controllare l'iniettore di combustibile 135 in modo appropriato durante il funzionamento del motore a combustione interna 100. Di conseguenza, se un iniettore di combustibile 135 del motore a combustione interna 100 viene sostituito, ad esempio a causa di un malfunzionamento, il corrispondente codice iniettore nella memoria 245 deve essere sovrascritto con il codice di iniezione del nuovo iniettore di combustibile. La memoria 245 può altresì contenere ulteriori informazioni rilevanti, come un numero di identificazione del veicolo che utilizza il motore a combustione interna 100 e/o le informazioni del produttore del veicolo. Queste informazioni aggiuntive e/o i codici di iniezione possono essere memorizzati nell'area di memorizzazione dati 265 della memoria 245 o in un'altra rispettiva area di memorizzazione dedicata. In ogni caso, ulteriori informazioni e/o codici di iniettori possono essere modificati attraverso il dispositivo di scrittura di memoria 300.
Come mostrato in figura 2, il dispositivo di scrittura di memoria 300 può essere un dispositivo elettronico. In particolare, il dispositivo di scrittura di memoria 300 può essere un dispositivo esterno, fisicamente separato dalla ECU 215 e/o dal motore a combustione interna 100. Ad esempio, il dispositivo di scrittura di memoria 300 può essere progettato per essere gestito e fisicamente connesso all’ECU 215 da un utente che utilizza cavi e/o connettori. In maggiori dettagli, il dispositivo di scrittura di memoria 300 può comprendere un'unità di elaborazione centrale (CPU) 305 per eseguire una comunicazione seriale con il sistema di calcolo 220 dell'ECU 215 e/o accedere alla memoria 245. Come menzionato sopra, il dispositivo di scrittura di memoria 300 può essere in grado di scrivere o sovrascrivere oggetti software (ad esempio programmi di controllo del motore e dati di calibrazione) nella memoria 245. Il dispositivo di scrittura di memoria 300 può inoltre comprendere una memoria 310 tangibile o non transitoria leggibile dalla macchina o leggibile dal computer, ad esempio una memoria flash e/o una memoria di sola lettura programmabile cancellabile (EPROM) e/o una RAM, per memorizzare vari programmi e dati, compresi in alcuni casi gli oggetti software da scrivere nella memoria 245 della ECU 215. La comunicazione seriale tra il dispositivo di scrittura di memoria 300 e l'ECU 215 può essere realizzata come una rete di area di controllo (CAN-bus), ad esempio un CAN bus ISO 11898 utilizzando un bus lineare terminato in corrispondenza di ciascuna estremità con impedenze di 120 Ω (ad esempio resistori). La velocità di trasmissione dei dati sul bus CAN può essere di 500 kbps (kilobit al secondo) o diversa. Il protocollo di comunicazione tra il dispositivo di scrittura di memoria 300 e l'ECU 215 sopra il CAN-bus può essere del tipo ISO 15765-4, consentendo la trasmissione di pacchetti dati di 29 bit. In altre forme di realizzazione, il protocollo di comunicazione e/o la dimensione dei pacchetti dati possono essere differenti. La comunicazione seriale può essere abilitata quando il dispositivo di scrittura di memoria 300 è collegato all’ECU 215, ad esempio al circuito di comunicazione 235 della ECU 215, attraverso cavi elettrici fisici e/o connettori elettrici (non mostrati). I connettori elettrici possono includere un OBD (On-Board Diagnostic) o un connettore OBDII e le controparti corrispondenti. In altre forme di realizzazione, i connettori possono essere di diverso tipo. Questa connessione cablata garantisce che non si possa accedere alla ECU 215 (ad esempio scritta o sovrascritta) involontariamente.
Il produttore delle ECU può fornire l'ECU 215 al produttore del motore a combustione interna 100 in uno stato vuoto, in cui solo il programma di avvio è memorizzato nell'area di memorizzazione di avvio 255 della memoria 245, mentre l'area di memorizzazione del programma 260 e l'area di memorizzazione dati 265 è vuota. In altre forme di realizzazione, l'ECU 215 può essere fornita con alcuni programmi provvisori e/o dati già memorizzati nell'area di memorizzazione del programma 260 e nell'area di memorizzazione dei dati 265. Questi programmi e/o dati provvisori possono essere concepiti per consentire all'ECU 215 di eseguire alcune funzionalità, tipicamente legate al funzionamento dell'ECU 215 stessa, ma non per far funzionare in modo efficace il motore a combustione interna 100. In entrambi i casi, la memoria 245 dell'ECU 215 deve essere caricata con i programmi di controllo e i dati di calibrazione (ad esempio tabelle) necessarie per il corretto funzionamento e controllo del motore a combustione interna 100. Anche la memoria 245 dell'ECU 215 può dover essere sovrascritta una o più volte durante la vita del motore a combustione interna 100, ad esempio per installare nuove versioni contenenti aggiornamenti di programma/dati o correzioni di bug.
Per sovrascrivere gli oggetti software in un'area della memoria 245, può essere necessario cancellare gli oggetti software già esistenti in quell'area. Di conseguenza, per scrivere nuovi oggetti software in un'area specifica della memoria 245, questi nuovi oggetti software possono essere copiati per la prima volta su una RAM dell'ECU 215, quindi l'area specifica della memoria 245 può essere cancellata e infine i nuovi oggetti software copiati nella RAM possono essere scritti nell'area specifica della memoria cancellata 245.
Queste attività possono essere eseguite collegando l'ECU 215 con il dispositivo di scrittura 300. Per limitare l'accesso all'ECU 215 da manomissioni e/o altre attività non autorizzate, il dispositivo di scrittura 300 può essere autorizzato ad accedere all’ECU 215 solo dopo che una procedura di autenticazione è stata completata con successo. Quando il dispositivo di scrittura di memoria 300 accede all’ECU 215, il dispositivo 300 può essere abilitato a scrivere o sovrascrivere oggetti software nella memoria 245. Questi oggetti software possono includere programmi di controllo del motore e/o dati di calibrazione, come ad esempio codici di iniettori , numero di identificazione del veicolo, numero di identificazione del motore e informazioni sul costruttore del veicolo. Inoltre, il dispositivo di scrittura di memoria 300 può essere abilitato per eseguire altre funzioni, compreso, sebbene in modo non limitativo, dati di lettura e/o informazioni memorizzate nella memoria 245, ad esempio lettura di codici di iniettore già menzionati, numero di identificazione del veicolo, motore numero di identificazione, informazioni sul costruttore del veicolo e anche le ore totali del motore (ovvero il numero di ore di utilizzo del motore).
La procedura di autenticazione a cui il dispositivo di scrittura di memoria 300 è sottoposto per accedere all’ECU 215 può essere basata su un approccio seed & key. In generale, l'approccio seed & key comprende uno scambio di informazioni tra l’ECU 215 e il dispositivo 300 che è rappresentato nello schema della figura 4. In pratica, il dispositivo 300 può inviare all'ECU 215 una richiesta seme, indicata anche come richiesta di accesso. L'ECU 215 può rispondere generando (ad esempio, calcolando) un seme, detto anche codice seme, e inviando tale seme al dispositivo 300. Il seme può essere utilizzato dal dispositivo per generare (ad esempio calcolare una chiave, denominata anche codice chiave di riferimento e reinviare questa chiave all'ECU 215. L'ECU 215 può quindi verificare se la chiave ricevuta dal dispositivo è valida, in particolare l’ECU 215 può confrontare la chiave ricevuta dal dispositivo 300 con una chiave che l'ECU 215 può generare sulla base dello stesso seme e utilizzando la stessa logica di calcolo utilizzata dal dispositivo 300. Se le due chiavi corrispondono (ad esempio sono uguali), la chiave ricevuta dal dispositivo 300 è considerata valida e l'ECU 215 può concedere l'accesso al dispositivo 300.
Sulla base di questo schema, una prima forma di realizzazione della procedura di autenticazione è rappresentata nel diagramma di flusso di figura 4. In pratica, una volta che il dispositivo di scrittura di memoria 300 è stato collegato all’ECU 215, il dispositivo di scrittura di memoria 300 può inviare all’ECU 215 una richiesta di accesso (blocco S100). La richiesta di accesso può essere un segnale elettronico avente una codificazione predeterminata e/o che incorpori un'informazione/istruzione predeterminata. In alcuni casi, la richiesta di accesso può includere una richiesta di lettura o scrittura nella memoria o altri dati associati all'ECU o al motore. La richiesta di accesso può essere di due tipi alternativi, vale a dire una richiesta di accesso di primo tipo o una richiesta di accesso di secondo tipo, in cui la richiesta di accesso di primo tipo è diversa dalla richiesta di accesso di secondo tipo. La richiesta di accesso può essere ricevuta dall'ECU 215 (blocco S105). In risposta alla richiesta di accesso, la ECU 215 può essere configurata per generare un codice seme, ad esempio un codice alfanumerico (blocco S110). Questo codice seme può essere generato dalla CPU 240 utilizzando un algoritmo di generazione seme che può essere incluso nel programma di avvio e/o memorizzato nell'area di memorizzazione di avvio 255 della memoria 245, ad esempio dal fornitore dell’ECU 215. Come alternativa, l'algoritmo di generazione seme può essere memorizzato in un'altra area di memorizzazione della memoria 245. Dopo che il codice seme è stato generato nel blocco S110, il codice seme così generato può quindi essere inoltrato dall’ECU 215 al dispositivo di scrittura di memoria 300 (blocco S115).
In aggiunta o in alternativa l’ECU 215 può essere configurata per accertare se la richiesta di accesso originariamente ricevuta dal dispositivo di scrittura di memoria sia una richiesta di accesso di primo tipo o una richiesta di accesso di secondo tipo (blocco S120).
Se la richiesta di accesso ricevuta dal dispositivo di scrittura di memoria 300 è una richiesta di accesso di primo tipo, la ECU 215 può essere configurata per generare un primo codice chiave, ad esempio un altro codice alfanumerico (blocco S125). Questo primo codice chiave può essere generato dalla CPU240 usando un algoritmo di generazione chiave che può essere incluso nel programma di avvio e/o memorizzato nell'area di memorizzazione di avvio 255 della memoria 245, ad esempio dal fornitore dell’ECU 215. In alternativa, l'algoritmo di generazione seme può essere memorizzato in un'altra area di memorizzazione della memoria 245. In particolare, il primo codice chiave può essere generato sulla base del codice seme e un primo codice di identificazione (ad esempio una prima password). A titolo di esempio, il primo codice chiave può essere generato usando una logica combinatoria predeterminata e/o una funzione del codice seme e del primo codice di identificazione. Il primo codice identificativo può essere un altro codice alfanumerico. Il primo codice di identificazione può essere attribuito univocamente al produttore del motore a combustione interna 100, in modo che il costruttore del motore possa essere il solo a conoscere il primo codice di identificazione. Il primo codice di identificazione può essere memorizzato nella memoria 245, ad esempio dal fornitore dell’ECU 215. In particolare, il primo codice di identificazione può essere memorizzato nell'area di memorizzazione di avvio 255 o in un'altra area di memoria. Secondo alcune forme di realizzazione, il primo codice di identificazione può essere memorizzato a un indirizzo di memoria fisso e predeterminato della memoria 245. Questo indirizzo di memoria può essere scritto nell'algoritmo di generazione chiave, in modo che la CPU 240, mentre esegue l'algoritmo di generazione chiave, possa recuperare immediatamente il primo codice di identificazione dall'indirizzo di memoria prescritto.
Se di converso, la richiesta di accesso ricevuta dal dispositivo di scrittura di memoria 300 è una richiesta di accesso di secondo tipo, l’ECU 215 può essere configurata per generare un secondo codice chiave, ad esempio un altro codice alfanumerico (blocco S130). In particolare, il secondo codice chiave può essere generato sulla base del codice seme e un secondo codice di identificazione (ad esempio una seconda password). Il secondo codice chiave può essere generato dalla CPU 240 usando una logica combinatoria predeterminata e/o una funzione del codice seme e del secondo codice di identificazione. A titolo di esempio, il secondo codice chiave può essere generato utilizzando lo stesso algoritmo di generazione chiave utilizzato per il primo codice chiave. Il secondo codice di identificazione può essere un altro codice alfanumerico. Il secondo codice di identificazione può essere generalmente attribuito agli acquirenti del motore a combustione interna 100, ad esempio ai fabbricanti dei veicoli provvisti di motore a combustione interna 100. In altre parole, questo secondo codice di identificazione, che può essere scelto dal costruttore del motore, può essere comunicato a tutti i costruttori di veicoli e/o ad altri clienti, in modo che ognuno di loro conosca il secondo codice di identificazione. Il secondo codice di identificazione può essere memorizzato nella memoria 245, ad esempio dal fornitore dell'ECU 215 o dal costruttore del motore. In particolare, il secondo codice di identificazione può essere memorizzato nell'area di memorizzazione di programma 260 o nell'area di memorizzazione dati 265 o in un'altra area di memorizzazione.
Secondo alcune forme di realizzazione, il secondo codice di identificazione può essere memorizzato ad un indirizzo di memoria fisso e predeterminato della memoria 245. Tuttavia, lo spazio disponibile nella memoria 245, in particolare nell'area di memorizzazione del programma 260 o nell'area di memorizzazione dei dati 265, dipende generalmente dalla dimensione e/o dalla posizione dei programmi di controllo del motore e/o dai dati di calibrazione che sono memorizzati al suo interno e possono variare a seconda delle versioni. Inoltre, il secondo codice di identificazione può avere dimensioni diverse (ad esempio un numero diverso di bit) caso per caso. Per questi e altri motivi, può essere difficile individuare il secondo codice di identificazione in un indirizzo di memoria fisso. Per risolvere questo problema, alcune forme di realizzazione possono consentire che il secondo codice di identificazione sia memorizzato in diversi indirizzi di memoria della memoria 245 e che venga recuperato dall'ECU 215 utilizzando un puntatore a detto indirizzo di memoria. Il puntatore può essere un oggetto software, ad esempio un codice, che semplicemente crittografa l'indirizzo di memoria del secondo codice di identificazione. Il codice puntatore può avere una dimensione fissa e può essere memorizzato nella memoria 245 in corrispondenza di un indirizzo di memoria prefissato e fisso, ad esempio sull'ultimo indirizzo di memoria disponibile nella memoria 245. L'indirizzo di memoria del codice puntatore può essere scritto nell'algoritmo di generazione della chiave, in modo che l'ECU 215, durante l'esecuzione dell'algoritmo di generazione della chiave, possa recuperare il codice puntatore dal suo indirizzo di memoria, decodificare il codice puntatore per ottenere l'indirizzo di memoria del secondo codice di identificazione e quindi recuperare il secondo codice di identificazione.
Il codice seme viene inoltre ricevuto dal dispositivo di scrittura di memoria 300 (blocco S135) che può essere configurato per usarlo allo scopo di generare un codice chiave di riferimento, ad esempio un altro codice alfanumerico (blocco S140). In particolare, il codice chiave di riferimento può essere generato sulla base del codice seme ricevuto dall'ECU 215 e un terzo codice di identificazione (ad esempio una terza password). Questo terzo codice di identificazione può essere fornito al dispositivo di scrittura di memoria 300 da un suo utilizzatore, ad esempio attraverso un'interfaccia utente come una tastiera, un lettore di schede o altro. In alternativa, il terzo codice di identificazione può essere memorizzato nella memoria 310. In entrambi i casi, il codice chiave di riferimento può essere generato utilizzando lo stesso tipo di algoritmo di generazione chiave utilizzato dall’ECU 215. L'algoritmo di generazione chiave può essere memorizzato nella memoria 310 del dispositivo di scrittura di memoria 300. In questo modo, se il terzo codice di identificazione corrisponde (ad esempio è uguale) al primo codice di identificazione o al secondo codice di identificazione memorizzato nella memoria 245 dell'ECU 215, il codice chiave di riferimento generato dal dispositivo di scrittura di memoria 300 corrisponderà (ad esempio sarà uguale) al primo codice chiave o al secondo codice chiave generato dall'ECU 215. Il dispositivo di scrittura di memoria 300 può essere configurato per reinviare il codice di riferimento all'ECU 215 (blocco S145).
Nel caso in cui la richiesta di accesso fosse una richiesta di accesso di primo tipo, la ECU 215 può essere configurata per ricevere il codice chiave di riferimento (blocco S150) e per confrontare il codice chiave di riferimento ricevuto dal dispositivo di scrittura di memoria 300 con il primo codice chiave (blocco S155). Il confronto può essere eseguito dalla CPU 240 attraverso l'esecuzione di un algoritmo di verifica che può essere incluso nel programma di avvio o memorizzato nell'area di memorizzazione di avvio 255 o in altre aree di memorizzazione della memoria 245. Se questo confronto produce come risulato che il codice chiave di riferimento è diverso dal primo codice chiave, ad esempio per il fatto che il terzo codice di identificazione utilizzato dal dispositivo di scrittura di memoria 300 è diverso dal primo codice di identificazione nell'ECU 215, l'ECU 215 può essere configurata per impedire al dispositivo di scrittura di memoria 300 di accedere alla memoria 245 (blocco S160) e, in particolare, di scrivere o sovrascrivere oggetti software nella memoria 245. Se di converso il codice chiave di riferimento corrisponde al primo codice chiave, l'ECU 215 può abilitare il dispositivo di scrittura di memoria 300 ad avere accesso alla memoria 245 (blocco S165) e, in particolare, a scrivere o sovrascrivere oggetti software nella memoria 245. Questi oggetti software possono includere almeno programmi di controllo del motore, da scrivere o sovrascrivere, ad esempio nell'area di memorizzazione del programma 260, e/o dati di calibrazione, da scrivere o sovrascrivere ad esempio nell'area di memorizzazione dei dati 265.
Nel caso in cui la richiesta di accesso fosse una richiesta di accesso di secondo tipo, la ECU 215 può essere configurata per ricevere il codice chiave di riferimento (blocco S170) e per confrontare il codice chiave di riferimento ricevuto dal sistema di scrittura di memoria 300 con il secondo codice chiave (blocco S175). Anche questo confronto può essere eseguito dalla CPU 240 attraverso l'esecuzione di un algoritmo di verifica che può essere incluso nel programma di avvio o memorizzato nell'area di memorizzazione di avvio 255 o in altre aree di memorizzazione della memoria 245. Se questo confronto produce come risultato che il codice chiave di riferimento è diverso dal secondo codice chiave, ad esempio per il fatto che il terzo codice di identificazione utilizzato dal dispositivo di scrittura di memoria 300 è diverso dal secondo codice di identificazione nell'ECU 215, l'ECU 215 può essere configurata per impedire al dispositivo di scrittura di memoria 300 di accedere alla memoria 245 (blocco S180) e, in particolare, di scrivere o sovrascrivere oggetti software nella memoria 245. Se di converso il codice chiave di riferimento corrisponde al secondo codice chiave, l'ECU 215 può abilitare il dispositivo di scrittura di memoria 300 ad avere accesso alla memoria 245 (blocco S185) e, in particolare, a scrivere o sovrascrivere gli oggetti software nella memoria 245. Anche in questo caso, questi oggetti software possono includere almeno programmi di controllo del motore, da scrivere o sovrascrivere, ad esempio, nell'area di memorizzazione del programma 260 e/o dati di calibrazione, da scrivere o sovrascrivere ad esempio nell'area di memorizzazione dei dati 265.
Secondo un aspetto della descrizione, se il codice chiave di riferimento ricevuto dal dispositivo di scrittura di memoria 300 in questo caso corrisponde al secondo codice chiave, l'ECU 215 può anche consentire al dispositivo di scrittura di memoria 300 di modificare il secondo codice di identificazione (blocco S190), ad esempio sovrascrivendo il secondo codice di identificazione già esistente nella memoria 245 con un codice nuovo e diverso (ad esempio una password diversa). In alcune forme di realizzazione, il secondo codice di identificazione nuovo può avere una lunghezza diversa rispetto a quella originale. Il secondo codice di identificazione nuovo può essere incluso in un pacchetto dati fornito e autorizzato dal costruttore del motore e può essere scritto (flashato) nella memoria 245 dal costruttore del veicolo utilizzando il dispositivo di scrittura 300. In questo modo, una volta acquistato il motore a combustione 100, ogni costruttore di veicoli può personalizzare il secondo codice di identificazione, mantenendolo segreto a tutti gli altri costruttori di veicoli che acquistano lo stesso motore a combustione interna.
Un'altra forma di realizzazione della procedura di autenticazione è rappresentata nel diagramma di flusso di figura 6. Secondo questa forma di realizzazione, una volta che il dispositivo di scrittura di memoria 300 è stato collegato all’ECU 215, il dispositivo di scrittura di memoria 300 può generare una richiesta di accesso (blocco S200). In questo caso, la richiesta di accesso può essere una singola richiesta di accesso generica. La richiesta di accesso può essere ricevuta dall'ECU 215 (blocco S205). In risposta alla richiesta di accesso, l’ECU 215 può essere configurata per generare un codice seme (blocco S210). Il codice seme può avere le stesse proprietà e può essere generato nello stesso modo già descritto in relazione alla prima forma di realizzazione di cui sopra. Il codice seme così generato può quindi essere inoltrato dall’ECU 215 al dispositivo di scrittura di memoria 300 (blocco S215).
Il codice seme può essere utilizzato anche dall’ECU 215 per generare sia il primo codice chiave (blocco S220) che il secondo codice chiave (blocco S225). Il primo codice chiave e il secondo codice chiave possono avere le stesse proprietà e possono essere generati nello stesso modo come già descritto in relazione alla prima forma di realizzazione di cui sopra. D'altro canto, il codice seme può anche essere ricevuto dal dispositivo di scrittura di memoria 300 (blocco S230), che può essere configurato per usarlo allo scopo di generare il codice chiave di riferimento (blocco S235). Una volta generato, il codice chiave di riferimento può essere rinviato dal dispositivo di scrittura di memoria 300 all’ECU 215 (blocco S240). Il codice chiave di riferimento può avere le stesse proprietà e può essere generato nello stesso modo come già descritto in relazione al prima forma di realizzazione di cui sopra.
A questo punto, l’ECU 215 può essere configurata per ricevere il codice chiave di riferimento (blocco S245) e per confrontare il codice chiave di riferimento con il primo codice chiave (blocco S250). Se questo confronto produce come risultato che il codice chiave di riferimento è diverso dal primo codice chiave, l'ECU 215 può essere configurata per confrontare il codice chiave di riferimento con il secondo codice chiave (blocco S255). In ulteriori forme di realizzazione, l’ECU 215 può confrontare il codice chiave di riferimento dapprima con il secondo codice chiave, e successivamente con il primo codice chiave. Alcune altre forme di realizzazione possono prescrivere di confrontare la chiave di riferimento con il primo e con il secondo codice chiave contemporaneamente. In ogni caso, questi confronti possono essere eseguiti dalla CPU 240 attraverso l'esecuzione di un algoritmo di verifica che può essere incluso nel programma di avvio o memorizzato nell'area di memorizzazione di avvio 255 o in altre aree di memorizzazione della memoria 245.
Se il codice chiave di riferimento è diverso dal primo codice chiave e dal secondo codice chiave, l'ECU 450 può essere configurata per impedire al dispositivo di scrittura di memoria 300 di accedere alla memoria 245 (blocco S260) e, in particolare, di scrivere o sovrascrivere gli oggetti software nella memoria 245. Se di converso, il codice chiave di riferimento corrisponde al primo codice chiave o al secondo codice chiave, l'ECU 215 può abilitare il dispositivo di scrittura di memoria 300 ad accedere alla memoria 245 (blocco S265) e in particolare, a scrivere o sovrascrivere gli oggetti software nella memoria 245. Anche in questo caso, questi oggetti software possono includere almeno programmi di controllo del motore, da scrivere o sovrascrivere, ad esempio, nell'area di memorizzazione del programma 260 e o dati di calibrazione, da scrivere o sovrascrivere ad esempio nell'area di memorizzazione dei dati 265. In particolare, se il codice della chiave di riferimento corrisponde al secondo codice chiave, l'ECU 215 può essere ulteriormente configurata per abilitare il dispositivo di scrittura di memoria 300 a modificare il secondo codice di identificazione (blocco S270) come già spiegato in relazione alla prima forma di realizzazione.
In alcune forme di realizzazione, il dispositivo di scrittura di memoria 300 può essere autorizzato a modificare il secondo codice di identificazione anche se il codice chiave di riferimento corrisponde al primo codice chiave, in modo che anche il produttore del motore possa modificare tale codice se necessario. Altre forme di realizzazione possono prescrivere che il dispositivo di scrittura di memoria 300 non sia mai autorizzato a modificare il primo codice di identificazione e/o a scrivere o sovrascrivere oggetti software nell'area di memorizzazione di avvio 255.
Le procedure di autenticazione sopra descritte garantiscono che il personale autorizzato del produttore del motore e del costruttore del veicolo possa scrivere o sovrascrivere oggetti software nella memoria 245 dell'ECU 215, in particolare nell'area di memorizzazione del programma 260 e/o nell'area di memorizzazione dei dati 265. Tuttavia, vale la pena sottolineare che gli oggetti software che possono essere scritti o sovrascritti nella memoria 245 possono essere solo oggetti software (ad esempio programmi e/o dati) che sono stati rilasciati e approvati dal produttore del motore.
Sebbene nel sommario e nella descrizione dettagliata che precedono sia stata presentata almeno una forma di realizzazione esemplificativa, si apprezzerà che esiste un vasto numero di varianti. Si dovrebbe altresì apprezzare che la forma di realizzazione esemplificativa o le forme di realizzazione esemplificative sono solo esempi e non sono intese a limitare in alcun modo l'ambito, l'applicabilità o la configurazione. Piuttosto, il sommario e la descrizione dettagliata che precedono forniranno agli esperti del ramo una mappa delineata per implementare almeno una forma di realizzazione esemplificativa, restando inteso che varie modifiche possono essere apportate nella funzione e nella disposizione degli elementi descritti in una forma di realizzazione esemplificativa senza allontanarsi dall'ambito di applicazione come indicato nelle allegate rivendicazioni e nei loro equivalenti legali.

Claims (14)

  1. RIVENDICAZIONI 1. Metodo per scrivere oggetti software in una memoria non volatile riscrivibile (245) di un'unità elettronica di controllo (215) di un motore a combustione interna (100), in cui il metodo comprende: - ricevere una richiesta di accesso da un dispositivo di scrittura di memoria (300), - generare un codice seme, - trasmettere il codice seme al dispositivo di scrittura di memoria (300), - generare un primo codice chiave sulla base del codice seme e un primo codice di identificazione, - generare un secondo codice chiave sulla base del codice seme e un secondo codice di identificazione, - ricevere un codice chiave di riferimento dal dispositivo di scrittura della memoria (300), - confrontare il codice chiave di riferimento con il primo codice chiave e/o con il secondo codice chiave, e - abilitare il dispositivo di scrittura di memoria (300) a scrivere oggetti software nella memoria non volatile riscrivibile (245), se il codice chiave di riferimento corrisponde al primo codice chiave o al secondo codice chiave.
  2. 2. Metodo secondo la rivendicazione 1, in cui il primo codice chiave viene generato, se la richiesta di accesso corrisponde a una richiesta di accesso di primo tipo e il secondo codice chiave viene generato, se la richiesta di accesso corrisponde a una richiesta di accesso di secondo tipo.
  3. 3. Metodo secondo la rivendicazione 1 o 2, in cui il software obietta che il dispositivo di scrittura di memoria (300) è abilitato a scrivere nella memoria non volatile riscrivibile (245) include almeno programmi di controllo del motore e/o dati di calibrazione.
  4. 4. Metodo secondo una qualsiasi delle rivendicazioni precedenti, in cui il primo codice di identificazione e il secondo codice di identificazione sono memorizzati nella memoria non volatile riscrivibile (245).
  5. 5. Metodo secondo la rivendicazione 4, in cui il primo codice di identificazione è memorizzato in un indirizzo di memoria fisso della memoria non volatile riscrivibile (245).
  6. 6. Metodo secondo la rivendicazione 4 o 5, in cui il secondo codice di identificazione è memorizzato in un indirizzo di memoria della memoria non volatile riscrivibile (245) che è cifrata in un codice puntatore anch'esso memorizzato nella memoria non volatile riscrivibile (245).
  7. 7. Metodo secondo una qualsiasi delle rivendicazioni precedenti, in cui il codice seme è generato dall'unità di controllo elettronica (215) eseguendo un algoritmo di generazione di seme.
  8. 8. Metodo secondo una qualsiasi delle rivendicazioni precedenti, in cui il primo codice chiave e il secondo codice chiave sono generati dall'unità di controllo elettronica (215) eseguendo un algoritmo di generazione di chiave.
  9. 9. Metodo secondo la rivendicazione 7 e 8, in cui l'algoritmo di generazione di seme e l'algoritmo di generazione di chiave sono memorizzati nella memoria non volatile riscrivibile (245).
  10. 10. Metodo secondo una qualsiasi delle rivendicazioni precedenti, in cui il codice chiave di riferimento è generato dal dispositivo di scrittura di memoria (300) sulla base del codice seme e di un terzo codice di identificazione.
  11. 11. Metodo secondo la rivendicazione 10, in cui il terzo codice di identificazione è fornito al dispositivo di scrittura di memoria (300) da un rispettivo utente.
  12. 12. Metodo secondo una qualsiasi delle rivendicazioni precedenti, abilitante ulteriormente il dispositivo di scrittura di memoria (300) a modificare il secondo codice di identificazione, se il codice chiave di riferimento ricevuto dal dispositivo di scrittura di memoria (300) corrisponde al secondo codice chiave.
  13. 13. Unità di controllo elettronica (215) di un motore a combustione interna (100), comprendente una memoria non volatile riscrivibile (245) e un'unità di elaborazione (240) configurata per: - ricevere una richiesta di accesso da un dispositivo di scrittura di memoria (300), - generare un codice seme, - trasmettere il codice seme al dispositivo di scrittura di memoria (300), - generare un primo codice chiave sulla base del codice seme e del primo codice di identificazione, - generare un secondo codice chiave sulla base del codice seme e del secondo codice di identificazione, - ricevere un codice chiave di riferimento dal dispositivo di scrittura di memoria (300), - confrontare il codice chiave di riferimento con il primo codice chiave e/o con il secondo codice chiave, e - abilitare il dispositivo di scrittura di memoria (300) a scrivere oggetti software nella memoria non volatile riscrivibile (245), se il codice chiave di riferimento corrisponde al primo codice chiave o al secondo codice chiave.
  14. 14. Unità di controllo elettronica (215) comprendente un'unità di elaborazione (240) che accede a una memoria (245), l'unità di elaborazione (215) essendo configurata per: - ricevere una richiesta di accesso da un dispositivo (300); - accedere a una prima password dalla memoria (245); - calcolare un seme in base alla prima password e inviare il seme al dispositivo (300); - ricevere una chiave generata dal dispositivo (300) in base al seme; - determinare la validità della chiave; - concedere l'accesso al dispositivo (300) quando la determinazione indica che la chiave è valida; e - scrivere una seconda password nella memoria (245) dopo che è stato concesso l'accesso per l'uso con future richieste di accesso.
IT102018000005466A 2018-05-17 2018-05-17 Metodo e dispositivo per scrivere oggetti software in una unita' elettronica di controllo di un motore a combustione interna IT201800005466A1 (it)

Priority Applications (6)

Application Number Priority Date Filing Date Title
IT102018000005466A IT201800005466A1 (it) 2018-05-17 2018-05-17 Metodo e dispositivo per scrivere oggetti software in una unita' elettronica di controllo di un motore a combustione interna
ES19167958T ES2869240T3 (es) 2018-05-17 2019-04-08 Procedimiento y dispositivo para escribir objetos de software en una unidad de control electrónico de un motor de combustión interna
EP19167958.8A EP3570193B1 (en) 2018-05-17 2019-04-08 Method and device for writing software objects into an electronic control unit of an internal combustion engine
US16/409,139 US11068173B2 (en) 2018-05-17 2019-05-10 Method and device for writing software objects into an electronic control unit of an internal combustion engine
CN201910406475.3A CN110501935B (zh) 2018-05-17 2019-05-16 用于将软件对象写入内燃机的电子控制单元的方法及设备
US17/195,198 US20210200451A1 (en) 2018-05-17 2021-03-08 Method and device for writing software objects into an electronic control unit of an internal combustion engine

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT102018000005466A IT201800005466A1 (it) 2018-05-17 2018-05-17 Metodo e dispositivo per scrivere oggetti software in una unita' elettronica di controllo di un motore a combustione interna

Publications (1)

Publication Number Publication Date
IT201800005466A1 true IT201800005466A1 (it) 2019-11-17

Family

ID=62952364

Family Applications (1)

Application Number Title Priority Date Filing Date
IT102018000005466A IT201800005466A1 (it) 2018-05-17 2018-05-17 Metodo e dispositivo per scrivere oggetti software in una unita' elettronica di controllo di un motore a combustione interna

Country Status (5)

Country Link
US (2) US11068173B2 (it)
EP (1) EP3570193B1 (it)
CN (1) CN110501935B (it)
ES (1) ES2869240T3 (it)
IT (1) IT201800005466A1 (it)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114594752A (zh) * 2022-03-04 2022-06-07 潍柴雷沃重工股份有限公司 一种拖拉机控制单元软件刷写方法及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130227650A1 (en) * 2010-11-12 2013-08-29 Hitachi Automotive Systems ,Ltd. Vehicle-Mounted Network System
US20140317729A1 (en) * 2012-02-20 2014-10-23 Denso Corporation Data communication authentication system for vehicle gateway apparatus for vehicle data communication system for vehicle and data communication apparatus for vehicle

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3954271B2 (ja) * 2000-03-16 2007-08-08 本田技研工業株式会社 車両制御装置のためのメモリ書き換えシステム
JP3785299B2 (ja) * 2000-03-16 2006-06-14 本田技研工業株式会社 車両制御装置のためのメモリ書き換えシステム
US7100011B2 (en) * 2002-03-01 2006-08-29 Arris International, Inc. Method and system for reducing storage requirements for program code in a communication device
US7091857B2 (en) * 2004-02-12 2006-08-15 Mi-Jack Products, Inc. Electronic control system used in security system for cargo trailers
JP4130653B2 (ja) * 2004-12-20 2008-08-06 インターナショナル・ビジネス・マシーンズ・コーポレーション 擬似公開鍵暗号方法及びシステム
US7368940B1 (en) * 2006-06-08 2008-05-06 Xilinx, Inc. Programmable integrated circuit with selective programming to compensate for process variations and/or mask revisions
JP4197038B2 (ja) * 2007-03-27 2008-12-17 トヨタ自動車株式会社 ハイブリッド自動車およびその制御方法
JP4475346B2 (ja) * 2008-05-13 2010-06-09 トヨタ自動車株式会社 故障診断システム及びこれに用いる車載ecu
WO2011034083A1 (ja) * 2009-09-18 2011-03-24 ヤンマー株式会社 エンジン制御装置及びその制御方法
US8204480B1 (en) * 2010-10-01 2012-06-19 Viasat, Inc. Method and apparatus for secured access
EP2844518B1 (en) * 2012-04-30 2018-11-28 Thermo King Corporation Transport refrigeration system controller to engine control unit interface
US9270468B2 (en) * 2013-05-29 2016-02-23 GM Global Technology Operations LLC Methods to improve secure flash programming
US9571284B2 (en) * 2014-03-13 2017-02-14 GM Global Technology Operations LLC Controlling access to personal information stored in a vehicle using a cryptographic key
EP2978158A1 (en) * 2014-07-21 2016-01-27 Nxp B.V. Methods and architecture for encrypting and decrypting data
US10127743B2 (en) * 2016-03-29 2018-11-13 Rm Acquisition, Llc Apparatuses, systems and methods for electronic data logging
US10171478B2 (en) * 2016-06-30 2019-01-01 Faraday & Future Inc. Efficient and secure method and apparatus for firmware update
US10371071B2 (en) * 2016-11-09 2019-08-06 Fev North America, Inc. Systems and methods for non-intrusive closed-loop combustion control of internal combustion engines
CN107273152A (zh) * 2017-05-26 2017-10-20 安徽贵博新能科技有限公司 一种防止系统ecu软件被误升级的解决方法
CN107453864B (zh) * 2017-07-04 2020-08-04 奇瑞新能源汽车股份有限公司 一种安全验证方法和系统
JP6940365B2 (ja) * 2017-10-12 2021-09-29 日立Astemo株式会社 情報更新装置
CN107894790B (zh) * 2017-11-23 2020-03-17 重庆长安汽车股份有限公司 一种mt车型发动机油门扭矩特性匹配方法
US10891809B2 (en) * 2018-03-20 2021-01-12 Shenzhen Launch Software Co., Ltd Intelligent diagnosis assistance method, device and equipment

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130227650A1 (en) * 2010-11-12 2013-08-29 Hitachi Automotive Systems ,Ltd. Vehicle-Mounted Network System
US20140317729A1 (en) * 2012-02-20 2014-10-23 Denso Corporation Data communication authentication system for vehicle gateway apparatus for vehicle data communication system for vehicle and data communication apparatus for vehicle

Also Published As

Publication number Publication date
US20210200451A1 (en) 2021-07-01
CN110501935B (zh) 2024-03-12
US20190354297A1 (en) 2019-11-21
EP3570193B1 (en) 2021-03-03
ES2869240T3 (es) 2021-10-25
CN110501935A (zh) 2019-11-26
US11068173B2 (en) 2021-07-20
EP3570193A1 (en) 2019-11-20

Similar Documents

Publication Publication Date Title
CN110541749B (zh) 用于电加热后处理系统的预测控制的方法和系统
US9075686B2 (en) System and method to improve control module reflash time
US8035494B2 (en) Motor vehicle control device data transfer system and process
CN109976770B (zh) 一种ecu刷写方法、系统及相关设备
US20120210700A1 (en) Method to monitor pressure drop across a selective catalyst reducer for engine and exhaust airflow diagnostics
US20170096927A1 (en) Method of testing a proper functioning of a selective catalytic reduction system
US20090326759A1 (en) Enhancement of the functionality of series software in a control unit
CN1315275A (zh) 用于车辆控制器的存储器重写系统
CN105298655B (zh) 具有增强冷启动能力的双燃料发动机
CN109684789B (zh) 嵌入式产品中软件安全保护的方法、装置及计算机设备
Mansor et al. Don't brick your car: firmware confidentiality and rollback for vehicles
IT201800005466A1 (it) Metodo e dispositivo per scrivere oggetti software in una unita' elettronica di controllo di un motore a combustione interna
CN106286023A (zh) 操作低压排气再循环路线中的低压排气再循环阀的方法
CN104808641A (zh) 在串行通信网络上执行微处理器alu完整性测试的方法
JP6306530B2 (ja) 自動車用電子制御装置
CN113266483A (zh) 排气制动后的烟度控制方法、系统、存储介质及电子设备
CN107026741A (zh) 一种基于网络安全的加密刷写方法及装置
US10125713B2 (en) Method of detecting a clogging of a fuel injector in an internal combustion engine
US20080157920A1 (en) Calibratable uds security concept for heavy-duty diesel engine
US7739028B2 (en) Method of operation of internal combustion engine with permanent fault code implementation
Boulanger Experiences from a model-based methodology for embedded electronic software in automobile
Prajwowski Possibilities of changes of parameters of the driver to engine Fiat 1.3 JTD performances
Pozzobon et al. Fuzzy fault injection attacks against secure automotive bootloaders
CN113396398B (zh) 存储器的改写历史记录装置
Bezbaruah et al. Development of Hardware-In-The-Loop Test Bench for Automation of After-Treatment Control Systems Tests