Quali sono i modi per verificare un protocollo auto-scritto?

23

Prima che tutti gridino: "NON FARE MAI IL TUO CRYPTO", non l'ho fatto, tecnicamente (sono ancora a metà strada), ma a parte questo sto facendo un protocollo simile a TLS, ma molto più leggero.

Avevo bisogno di proteggere la comunicazione tra diversi sistemi embedded con pochissima RAM / ROM e potenza del processore (beh, ha 100 MHz, ma molti sono in uso costante e non possono essere interrotti).

Quello che sto per fare è usare AES-128 con GCM (o CBC + HMAC) per proteggere la comunicazione tra i dispositivi. Alcuni dispositivi possono usare solo GCM, altri usano CBC + HMAC quindi (ancora lavorando su di esso) Devo creare una struttura simile a TLS per concordare quale usare (il dispositivo comunica attraverso un server, non il peer-to-peer, quindi avendo solo 1 dei 2 non è un problema, il server ha solo bisogno di entrambi).

Ho fatto molte ricerche negli ultimi mesi (2 1/2), e vorrei dire che ho coperto le basi. Ora sto iniziando con l'implementazione di tutto ciò che ho trovato (utilizzo di chiavi, IV, nonce, crittografia, MAC, ecc.).

Ora arriva la domanda: quando ho finito voglio avere il codice che ho creato controllato. Ovviamente il controllo approfondito a livello TLS non sarà realizzabile, ma quali sono le strade? Ci sono siti in cui posso pubblicare il mio codice per la revisione? Ci sono aziende che possono "certificarlo"? Che cosa accadrebbe normalmente quando un'azienda crea una comunicazione sicura e desidera verificare se protegge dalle cose che ha previsto?

E sì, lo so che non sto usando una PKI. L'hardware si trova in un ambiente sicuro e non è possibile aggiungere nuovi dispositivi al server (il server mantiene un elenco di dispositivi che possono connettersi e monitorare se si passa mai offline), quindi la società ha affermato che PKI potrebbe essere qualcosa che considererebbero più tardi, ma per una prima versione non sarebbe necessario.

Modifica Voglio chiarire (sto riprendendo alcune parole). Utilizzerò TLS per creare questo protocollo e la quantità di utilizzo di TLS non è ancora chiara. Quando possibile, cercherò semplicemente di rimuovere tutto ciò che non ho bisogno di TLS e di crearlo in questo modo, potrei prenderne parte (encrypt-then-mac, aggiungere IV al testo cifrato, ecc.) E usarlo.

Ma in entrambi i casi, non è TLS e anche solo la rimozione di materiale dal codice sorgente TLS potrebbe introdurre dei punti deboli, quindi è ancora necessario un 'controllo'.

    
posta Vincent 20.04.2015 - 11:36
fonte

3 risposte

5

Definisci una specifica

Se stai scrivendo / sviluppando un nuovo protocollo prima di tagliare il codice, dovresti iniziare scrivendo una specifica come una richiesta di commenti (RFC).

Anche se non hai intenzione di pubblicare il tuo protocollo, il processo è la parte importante. La RFC sarebbe la base di ogni valutazione che vorresti fare in futuro.

Oltre a come funziona il protocollo, dovresti decidere i motivi per cui stai sviluppando un nuovo protocollo / suite e perché qualcuno dovrebbe implementare il tuo protocollo.

Validation

Per convalidare le tue specifiche potresti prendere in considerazione una combinazione di:

  • Organizzazioni di ricerca sulla sicurezza ad es. SANS
  • Università
  • La comunità della sicurezza attraverso i documenti di ricerca editoriali
  • Valutazione del rischio da parte di terzi

Please consider that developing robust protocol takes time, and you will likely need to version it, so make provision for this. As you have mentioned, SSL/TLS have undergone a lot of review and have been versioned a number of times.

Attuazione

Dopo aver definito una specifica che ha ricevuto la revisione, sarà necessario sviluppare un'implementazione di riferimento che possa essere completa revisione del codice e quindi test di penetrazione.

Per la revisione del codice, è necessario un valutatore con competenze di sicurezza specialistiche nella lingua di programmazione che si sta utilizzando e un background nel test di penetrazione. Stanno valutando il tuo codice in base alle specifiche.

Per i test di penetrazione, è necessario trovare un valutatore che abbia la capacità di sviluppare strumenti di prova personalizzati e certificazioni ricondizionate come ISO 27001 e Certified Ethical Hacker (CEH).

Altri punti

  • Ovviamente prima di impegnarti in costi e costi così grandi, dovresti considerare se ne vale davvero la pena per la durata potenziale del sistema che stai sviluppando.

  • Come altri hanno affermato che l'utilizzo di un'implementazione di protocollo esistente in genere costa meno e riduce i rischi per la sicurezza.

  • Anche se hai una capacità di calcolo limitata, potrebbero esserci altri modi per risolverlo (invece di impiantare un nuovo stack di sicurezza). Hai davvero bisogno della privacy dei messaggi (in un ambiente sicuro controllato) o solo del controllo dell'integrità dei messaggi? O puoi semplicemente criptare / decifrare la busta.

Comunque spero che ti aiuti.

    
risposta data 22.04.2015 - 01:58
fonte
16

Esistono società di sicurezza IT che forniscono servizi come il controllo del codice (più spesso insieme ad altri servizi come test di penetrazione, ecc.). Li contatti, descrivendo le tue esigenze, poi se queste rientrano nelle loro competenze ti invieranno un preventivo.

    
risposta data 20.04.2015 - 11:46
fonte
2

A seconda della lingua e dell'ambiente:

US DHS e un host di terze parti SWAMP (market assurance marketplace). Devi richiedere l'accesso e l'iscrizione, ma vale la pena esaminare.

SWAMP

    
risposta data 20.04.2015 - 18:37
fonte

Leggi altre domande sui tag