Come garantire che un programma sia implementato secondo le tue raccomandazioni?

3

Ho un protocollo di sicurezza la cui implementazione verrà eseguita da molti sviluppatori di terze parti (chiamiamoli come "produttori") che a loro volta verranno programmati nell'hardware incorporato progettato da loro.
Vi sono alcune linee guida obbligatorie (ad esempio, una particolare operazione di crittografia deve essere eseguita utilizzando il criptoprocessore ma non la libreria del software) che devono essere seguite da loro.

Ora c'è un modo per verificare se hanno seguito tutte le linee guida del protocollo e certificare la loro implementazione se si ha accesso al file sorgente e binario dell'implementazione?

Come posso garantire che il produttore abbia programmato solo l'implementazione certificata in tutti i campioni hardware?

Modifica 1:
Per quanto ne so, una soluzione per la certificazione: il codice sorgente può essere ispezionato manualmente per verificare la conformità con ciascuna raccomandazione. Quindi il codice sorgente e il codice binario ottenuto possono essere certificati utilizzando la firma dell'autorità di certificazione sul checksum di entrambi i file.
Correggimi se c'è qualche scappatoia in questo processo di certificazione che può essere sfruttato da un produttore.

Ora, se il binario del protocollo implementato è programmato separatamente, possiamo controllare il file system e individuare questo binario, calcolare il suo checksum e verificarlo rispetto al binario certificato. Ma se il protocollo è implementato all'interno di un'altra applicazione, allora non possiamo avere questa certificazione, invece l'applicazione finale che include l'implementazione del protocollo deve essere certificata. Ma questo potrebbe complicare il processo di certificazione.

    
posta mk09 22.05.2017 - 08:53
fonte

2 risposte

6

Non esiste una risposta crittografica alla tua domanda, perché Il teorema di Rice sappiamo che qualsiasi non banale, la proprietà semantica di qualsiasi programma è indecidibile. Non puoi scrivere un programma in grado di decidere se due programmi sono funzionalmente equivalenti o seguire una delle tue linee guida.

Ciò di cui hai effettivamente bisogno è un qualche tipo di processo di certificazione, ad es. Common Criteria . In CC ci sono diversi livelli di garanzia della valutazione , e devi trovare quello che si adatta meglio al tuo tipo di software. L'intero processo di certificazione è un enorme compromesso tra assicurazione, sforzo per la progettazione e impegno per test / verifica.

    
risposta data 22.05.2017 - 15:48
fonte
1

Nel tuo caso potresti ottenere in modo nascosto una selezione casuale dei dispositivi finiti, quindi rimuovere e sostituire il criptoprocessore sicuro con un generatore di segnale intelligente che emette un modello noto invece di uno casuale (esempio invece di generare un numero casuale potrebbe restituisce tutti gli 1, invertendo invece di crittografare qualunque cosa fosse destinata a crittografare).

Se la tua preoccupazione è che sono pigri e non implementano il criptoprocessore, allora potrebbe essere sufficiente disabilitare il chip in un dispositivo e vederlo ancora funzionante per mostrare che hanno preso una scorciatoia. Se sei preoccupato per un business backdoor di spionaggio mondiale e non ti fidi di questa terza parte, allora potrebbe essere meglio fare la produzione in casa.

    
risposta data 23.05.2017 - 12:53
fonte

Leggi altre domande sui tag