Domanda:
C'è un modo per dimostrare che HTTPS sta crittografando la comunicazione con il mio sito?
NTHINGs
2016-10-06 00:06:44 UTC
view on stackexchange narkive permalink

Lavoro per un'azienda che si occupa di sviluppo di applicazioni Web e sono "Esperto di sicurezza". Di recente ho implementato HTTPS in un'applicazione con Let's Encrypt e il mio capo mi chiede di dimostrare che HTTPS crittografa davvero le informazioni.

Come posso farlo?

https://www.ssllabs.com/ssltest/ o mostra il certificato in azione con l'icona del lucchetto verde nel tuo browser.Quelle sono due vie fuori dalla mia testa.EDIT: un altro metodo sarebbe quello di annusare il tuo traffico con qualcosa come WireShark, mostrargli i pacchetti [email protected] mi ha battuto
Se quelli non soddisfano, puoi sempre usare WireShark per mostrare che non c'è nulla in testo in chiaro.
ho provato WireShark ma vengono visualizzati solo i pacchetti TCP
Cosa stavi sperando?HTTPS viene eseguito su TCP, molto raramente utilizza un protocollo diverso.
scusa per il principiante qui, e come dovrebbe apparire il pacchetto crittografato in WireShark
Segui il flusso TCP e verifica se i dati vengono visualizzati in testo normale.[Ecco un collegamento] (https://ask.wireshark.org/questions/14802/how-to-confirm-encrypted-data-using-wireshark)
@NTHINGs trova un sito che supporta sia http che https.Confronta in WireShark la navigazione in entrambe le modalità.Vedrai la differenza.
Inoltre, non dimenticare di chiudere HTTP sulla porta 80 e implementare l'intestazione [Http Strict Transport Security] (https://www.owasp.org/index.php/HTTP_Strict_Transport_Security_Cheat_Sheet) in modo che non sia possibile eseguire un attacco di downgrade.
OpenSSL e GnuTL sono software gratuiti, sicuramente ti basta leggere il sorgente e verificare che funzioni e mostrarlo al tuo capo?:) Questo è l'intero punto di forza del software libero, non è vero?Che puoi leggere la fonte e verificare che non stia andando storto.E tutti lo fanno.Tranne te.( /S )
Penso che solo il tuo capo possa rispondere a questa domanda: se non si fida dell'indicazione del browser che la sessione è sicura, quale prova sta cercando?Vuole vedere l'acquisizione di un pacchetto?Come hai potuto dimostrargli che i pacchetti catturati sono crittografati e non solo oscurati (o compressi)?Vuole qualche altra prova?Forse una spiegazione di come funziona TLS e cosa significano le indicazioni del browser?
Ho modificato il titolo della domanda, quindi c'è meno differenza tra il titolo e la domanda che viene posta nel corpo.Il titolo precedente era un po 'vago e ambiguo secondo me.Ho sentito che il titolo originale sembrava più come "come configuro HTTPS in modo che funzioni su tutti i client", non "come faccio a dimostrare che HTTPS funziona".
Puoi fornire maggiori dettagli su ciò che il capo sta cercando di dimostrare?Sta cercando di vedere se viene applicato lo standard SSL del settore, o sta controllando che le informazioni sensibili non vengano inviate tramite testo normale, o è paranoico che la crittografia che hai applicato (e può vedere nel browser) non sia sicura?
Qualunque sia il test che finisci per fare, assicurati di fare lo stesso test con HTTP e confrontare i risultati.
Vale la pena notare che HTTPS non è sempre crittografato, ad es.se il server e il client supportano il [protocollo null] (http://security.stackexchange.com/questions/39315/checking-ssl-tls-servers-for-null-encryption-support).Devi disabilitarlo per contrastare gli [attacchi di downgrade] (https://www.praetorian.com/blog/man-in-the-middle-tls-ssl-protocol-downgrade-attack).Vedere [OWASP A5] (https://www.owasp.org/index.php/Top_10_2013-A5-Security_Misconfiguration) e la sua [remediation] (https://www.owasp.org/index.php/Testing_for_Weak_SSL/TLS_Ciphers,_Insufficient_Transport_Layer_Protection_ (OTG-CRYPST-001)).
Mostragli questa domanda.Forse imparerà davvero qualcosa.Inoltre, per amore di tutti i santi, dicci che i siti di questa azienda non hanno trasmesso le credenziali degli utenti su Internet in testo normale prima d'ora.Se lo ha fatto e nessuno lo sapesse ... Sarei propenso a iniziare a lavorare sul mio curriculum.
Sei risposte:
#1
+63
Bryan Field
2016-10-06 00:41:47 UTC
view on stackexchange narkive permalink

Il mio capo mi sta chiedendo di dimostrare che HTTPS crittografa davvero le informazioni. Come posso farlo?

A un livello base, puoi usare un packet inspector o un semplice proxy di port forwarding. Forse Wireshark ispezionerà i pacchetti abbastanza facilmente.

Dovresti essere rapidamente in grado di scoprire che il traffico HTTP è testo normale, mentre HTTPS è binario senza senso. (ad eccezione del nome host)

Tuttavia, questo prova solo che la connessione è offuscata. Non prova la crittografia o la sicurezza. Nello specifico, non fa nulla per mostrare l'immunità a MiTM.

Fortunatamente, il browser fa tutto questo per te. Se un browser moderno tenta di connettersi a una pagina web HTTPS, verificherà quanto segue:

  • Algoritmi hash abbastanza potenti per i certificati coinvolti.
  • Algoritmi di crittografia abbastanza forti. (cioè è effettivamente crittografato)
  • Catena di certificati emessa da Autorità di certificazione affidabili (cioè CA che verifica la proprietà del dominio prima di emettere i propri certificati)
  • Non scadenza dei certificati .
  • La corrispondenza dei valori hash significa che non ci sarà MiTM.

Anche se al tuo capo potrebbe piacere vedere il incomprensibile di WireShark che confronta HTTP con HTTPS , un test più efficace consiste semplicemente nel visitare il sito HTTPS con un browser moderno.

Assicurati che il browser non sia stato preconfigurato per ignorare l'avviso. (es. test da più computer e smartphone)

Se prevedi di continuare HTTPS in modo permanente (cosa che dovresti), una saggia precauzione sarebbe forzare il reindirizzamento di tutte le visite HTTP al sito HTTPS, perché non puoi garantire che tutti i visitatori includano il prefisso https: // quando visitano il tuo sito.

Una dimostrazione in WireShark di solito è sufficiente per qualcuno abbastanza sciocco da chiedere una dimostrazione che è protetto.
Non penso che chiedere una prova sia * per niente * sciocco.Se l'OP usasse accidentalmente l'HTTP, tutto funzionerebbe perfettamente - semplicemente non sarebbe sicuro!
@Joshua, non è affatto sciocco.Se un manager non ha fiducia nel suo esperto e non ha risorse da assumere ed esperto in cui ha fiducia, questo è il migliore successivo.Chiedendo al tuo subordinato di dimostrare che inciti a un processo di pensiero, un altro giro di pensiero critico.È una domanda molto intelligente da porre.
@AndrewSavinykh: La prova in realtà non è buona.Non puoi distinguere una buona crittografia da una cattiva guardando.
@Joshua - Penso che tu stia perdendo il mio punto
Dimostrate che un tetto perde o aspettando la pioggia o tirando fuori il tubo.Se né tu né il tuo capo avete idea di come sfruttare la crittografia cattiva o disabilitata, tutto ciò che stai facendo è aspettare la pioggia.
#2
+38
INV3NT3D
2016-10-06 00:42:49 UTC
view on stackexchange narkive permalink

Questi sono alcuni modi (non esaustivi) per provare che la tua applicazione sta crittografando le informazioni :

  1. SSL Labs dispone di un'applicazione web per testare l ' implementazione SSL della tua applicazione web

OR

  1. Nel tuo browser web, i siti protetti con HTTPS mostreranno un lucchetto verde accanto all'URL in questo modo: a picture that shows the green lock icon next to the URL for google.ca

Se hai bisogno di maggiori dettagli o di una prova migliore che il tuo certificato funziona diversamente dal lucchetto verde, fai clic su quel lucchetto, mostra dettagli e vedrai qualcosa del genere (in Chrome per questo esempio):

details that describe the certificate is encrypting your connection and working properly

Questo ti darà tutti i piccoli dettagli sporchi di cui hai bisogno per verificare che il tuo il certificato funziona come previsto.

OR”

  1. Avvia Wireshark o un packet sniffer / analyzer di tua scelta, quindi esegui alcuni dati attraverso la tua applicazione che dovrebbero essere crittografati (login, invia un modulo ecc ...). Trova il pacchetto , segui il flusso TCP e verifica che nulla venga trasmesso in testo normale .
Bene ... per una persona paranoica tutti e 3 i metodi qui descritti * nella migliore delle ipotesi * mostrano prove circostanziali, ma non possono essere chiamate prove.L'unico modo per dimostrarlo è acquisire tutti i pacchetti e ** manualmente ** verificando che il protocollo TLS sia effettivamente eseguito, i dati vengono crittografati utilizzando l'algoritmo e la chiave corretti (che puoi provare solo con 1) test statistici e 2) decrittografalo utilizzando l'algoritmo di decrittazione e la chiave corrispondenti) ecc. e non esiste un modo semplice e veloce per farlo, specialmente per qualcuno che non ha idea della sicurezza.
@Bakuriu, Sono completamente d'accordo.Questo aveva lo scopo di mostrare metodi semplici per "provare" la crittografia a una persona, forse, non così tecnicamente propensa.In realtà preferisco la risposta di George Bailey alla mia.Buoni punti però.
@Bakuriu Tutto ciò che esce dalla finestra se non ti fidi del browser, comunque.
#3
+15
symcbean
2016-10-06 04:25:08 UTC
view on stackexchange narkive permalink

SSLlabs è un ottimo strumento per analizzare un sito web HTTPS. Ma ....

  • Non dimostra che hai chiuso le parti non ssl del sito
  • Ho l'impressione che il tuo capo non capire cosa ti dice del tuo sito
  • Dai tuoi commenti su WireShark sembra che tu stia un po 'faticando a capire cosa ti sta succedendo

Dici che " Mi è stato chiesto di dimostrare che "HTTPS crittografa davvero le informazioni". Forse qualcuno ha scelto male le loro parole, ma prese alla lettera, dici che ti viene chiesto di dimostrare che la tecnologia su cui il mondo fa affidamento per garantire il commercio elettronico implementa davvero il suo requisito più fondamentale. Penso che qualcuno l'avrebbe notato se non l'avesse fatto.

(tengo a precisare che è tecnicamente possibile configurare https per utilizzare una cifratura nulla con alcuni client e server ma è estremamente difficile farlo in base alla progettazione. Non potresti farlo per sbaglio)

Supponendo che il tuo capo non lo intendesse davvero, ti viene chiesto di convincere lui che il lavoro che hai fatto è valido. La maggior parte dei browser ti mostrerà gli algoritmi di crittografia utilizzati per accedere a un sito.

Se il tuo capo vuole qualcosa di diverso / più, allora non sappiamo cosa lo convincerà. Dovrai chiedergli un requisito più specifico e dettagli su ciò che lui / lei considererebbe una prova accettabile .

Dovrei anche aggiungere che è una pratica di gestione molto scarsa chiedere all'implementatore di qualcosa per dimostrare che funziona sia che si tratti di una funzionalità di sicurezza, funzionale, prestazioni, capacità o usabilità.
"Penso che qualcuno l'avrebbe notato se non fosse stato così."Il mondo ha.Molte volte.Le vecchie versioni di SSL / TLS sono state deprecate.I bug nelle librerie SSL / TLS sono stati corretti.I requisiti di forza chiave sono stati aumentati.È un sistema imperfetto, certo, ma è un sistema imperfetto su cui il mondo tiene d'occhio e investe milioni (miliardi?) Di dollari ogni anno per renderlo il migliore possibile.Nessuna piccola azienda con un capo che non sa nemmeno quanto sia pervasivo HTTPS troverà un'alternativa migliore.+1
#4
+2
bdsl
2016-10-06 16:56:33 UTC
view on stackexchange narkive permalink

Contratto con un esperto di sicurezza IT professionale e un esperto di crittografia con una buona reputazione. Consenti loro di catturare il traffico sulla tua rete e chiedi loro di provare a scoprire quali messaggi vengono inviati da e verso il sito.

Se falliscono, avrai stabilito che il traffico è effettivamente crittografato. Ovviamente non è probabile che sia economico.

Quindi è un buon lavoro che chiunque sia vagamente tecnico possa utilizzare Wireshark per esaminare i dati da solo (come spiegato nelle risposte precedenti) - non c'è bisogno di pagare nessuno.
Dipende dal livello di prova che il capo vuole ed è disposto a pagare.Il capo potrebbe non essere soddisfatto dalla testimonianza di qualcuno "vagamente tecnico".Se il capo guarda i dati da solo, probabilmente non sarebbe in grado di distinguere tra una crittografia avanzata e uno schema che sostituisce semplicemente tutti quelli con zeri e viceversa.
Se falliscono, potrebbe essere dovuto al fatto che sono incompetenti o pigri o con risorse o budget inadeguati o che non hanno effettivamente fatto nulla.Questo non è sufficiente.
No;questa è una risposta valida.Proponi di cercare un esperto e di fargli fare una costosa dimostrazione.Paragonalo a una dimostrazione di Wireshark.Se il capo sceglie l'esperto, saprai che non si fida che i suoi stessi siano gli esperti.Giustificerà il passaggio quando l'economia è giusta.
@EJP è per questo che dovrebbe essere qualcuno con una buona reputazione.Se hanno una storia di incompetenza o di pigro non avrebbero quella reputazione, e probabilmente vorranno preservare la reputazione.Se dispongono di risorse inadeguate, dovrebbero volerlo chiarire per dimostrare che non sono incompetenti o pigri.
#5
+1
Luc
2016-10-07 16:57:22 UTC
view on stackexchange narkive permalink

Se fai clic sull'icona del lucchetto in Firefox e fai clic su Ulteriori informazioni, vedrai qualcosa di simile:

Connection encrypted with TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, 256 bit keys

Che indica chiaramente che la connessione è crittografata e quali protocolli sono stati utilizzati.

#6
-3
Greenstone Walker
2016-10-06 06:32:34 UTC
view on stackexchange narkive permalink

Dì al tuo capo: "Amazon.com lo usa".

Sono abbastanza grandi ed esperti nell'e-commerce e nel Web per sapere cosa funziona e cosa no. Se considerano HTTPS sufficiente per proteggere la tua carta di credito, allora dovrebbe essere una prova sufficiente.

Quando ho programmato web, molte lune fa, abbiamo insegnato l'abbreviazione WADI - Sarebbe Amazon Do It. Se qualcuno dicesse "ehi, il nostro sito web dovrebbe farlo!", La tua risposta sarebbe "Amazon lo fa? In caso contrario, non dovremmo neanche noi".

Sono abbastanza fiducioso che Amazon NON utilizzi Let's Encrypt ... Nessuna di queste risposte è utile per "provare" che l'app Web utilizza correttamente e in modo uniforme il canale crittografato.La domanda OP è particolarmente importante se stai scaricando il TLS su un bilanciatore del carico o altro dispositivo di confine.
Il sottotesto che ottengo dalla risposta è che il capo non è tecnico.In tal caso, una prova tecnica non verrà compresa, quindi cerchi prove non tecniche.
@GreenstoneWalker non pensa che il capo stia cercando una prova tecnica, ma ci sono due domande qui: 1) Let's Encrypt ha applicato la moderna crittografia SSL standard del settore al sito e 2) La crittografia è sicura?La tua risposta si rivolge solo a quest'ultimo e non affronta la preoccupazione del capo che qualcuno abbia perso qualcosa nella configurazione e la crittografia non sia mai avvenuta.
@GreenstoneWalker mentire al tuo capo non è un buon modo per guadagnarsi la sua fiducia nel tuo servizio.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...