Come implementare la comunicazione ECDHE-RSA-AES256-GCM-SHA-2 in OpenSSL?

2

Domanda completa

Come implementare coppie di soluzioni basate su client e server per proteggere le comunicazioni di rete per semplici programmi desktop (non browser) basati su C ++ che utilizzano la suite di crittografia ECDHE-RSA-AES256-GCM-SHA-2 utilizzando OpenSSL?

Pre-text

Sono un principiante nell'usare qualsiasi crittografia oltre a spingere le cose in hash e bcrypt. Ho bisogno di proteggere i dati di rete che fluiscono dai client a un server, quindi è necessaria una soluzione client-server di uso generale. La suite di cifratura menzionata sembra essere la grande cosa grassa attualmente, fornendo molte attenuazioni e benefici.

Risorse

  1. link
  2. link

problema

Apprezzo il lavoro svolto dagli sviluppatori OpenSSL per conservare la documentazione. Ma non riesco a trovare nulla che non richieda che tu sia un professionista della sicurezza per implementare la suddetta suite di crittografia in un'architettura client-server. Sembra che non ci siano esempi su Internet o sulle risorse menzionate.

Devo davvero passare mesi o anni per capire tutto questo?

Finora ho indovinato ho bisogno di capire AES in modalità GCM separatamente poi generazione della chiave ECDHE quindi generazione della chiave RSA e quindi in qualche modo cuci tutto insieme me stesso ?

    
posta Infogeek 15.10.2016 - 02:23
fonte

1 risposta

1

Vuoi collegare libssl da openssl al tuo server e i tuoi eseguibili client per avere un server TLS e un client TLS con versione TLS hardcoded (1.2) e suite di crittografia hardcoded (TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) e suppongo che un certificato con codifica hardcoded?

Ti suggerisco di usare qualcosa come libcurl nel tuo client, che è più alto di libssl. Usa libssl ma fa la maggior parte del lavoro per te.

Ti suggerisco di guardare il codice di nginx per vedere come fare un server TLS usando openssl. Ha un codice che non ti serve perché gestisce più funzioni del necessario, ma è un inizio. Inoltre, dovresti decidere di utilizzare solo openssl 1.0.2, che rimuove un po 'di codice per supportare versioni precedenti.

Se produci libssl e libcrypto codice oggetto da collegare ai tuoi eseguibili, puoi e dovresti evitare di raggruppare molto del codice che è compilato di default ma non utilizzato dalla tua applicazione. Quindi non compilare md5 e sha1 (utilizzerai solo i certificati sha256). Non compilare codici diversi da AES. Non compilare curve ellittiche diverse da P-256 (o 25519).

In alternativa, puoi raggruppare le librerie condivise prodotte con i flag di compilazione predefiniti, ma questo significa molto più codice che potrebbe essere eseguito.

    
risposta data 15.10.2016 - 02:55
fonte

Leggi altre domande sui tag