Esempio di Algoritmo di seme e chiave

2

Sto tentando di progettare un seed e un algoritmo chiave per un'unità di controllo del motore. Viene utilizzato per proteggere risorse come la possibilità di riprogrammare la centralina. L'idea è che richiedo un seme dall'ECU, che fornisce come una stringa di byte. Sia la ECU che io eseguiamo alcuni calcoli segreti per trasformare il valore seme in un valore chiave. Quindi invio la mia chiave calcolata all'ECU e, se corrisponde al calcolo dell'ECU, la risorsa è sbloccata.

Ho cercato un calcolo di esempio da cui derivare il mio, ma finora ho appena trovato delle risorse che descrivono semplicemente il concetto come sopra. Qualcuno ha esempi concreti che potrei usare?

    
posta NargothBond 24.02.2017 - 14:29
fonte

1 risposta

3

Questo viene fatto in molti modi diversi, e in nessun modo è perfetto. Di solito comporta una chiave pre-condivisa in un modo o nell'altro.

Ecco un esempio di General Motors che utilizza un database remoto (presupposto sicuro) per abbinare due valori, un ID ECU e una sfida, ad un corrispondente valore chiave o algoritmo (un algoritmo non reversibile come un operatore modulo).

  1. Il PC di diagnostica invia una richiesta di accesso di sicurezza di livello 3
  2. La centralina risponde con un ID e una sfida pseudocasuale
  3. Il PC di diagnostica fa riferimento all'ID su un database (remoto?) di ECU e alle relative chiavi di sicurezza.
  4. Il PC di diagnostica (o il server, come nell'implementazione GM) calcola e invia una risposta (ad esempio chiave mod challenge)
  5. L'ECU lo confronta con il proprio calcolo di mod challenge chiave e inserisce il livello di esecuzione desiderato se c'è una corrispondenza.

Questo approccio garantirà che la sfida sia sempre diversa, il che rende questo processo meno vulnerabile alle intercettazioni. Tuttavia, permangono problemi di sicurezza più ampi che non vengono affrontati (come il dirottamento di sessione).

    
risposta data 07.03.2017 - 18:39
fonte

Leggi altre domande sui tag