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'.