Din punctul de vedere al cuiva care oferă o aplicație web, atunci când cineva se conectează cu TLS (https) pentru serviciul nostru și de a transmite corect datele de autentificare, este în siguranță pentru a transmite toate datele sensibile de pe linia asta, sau poate fi faptul că nu există încă trage cu urechea?
Această întrebare a fost - O Întrebare de Securitate a Săptămânii.
Cititi Jul 29, 2011 blog entry pentru mai multe detalii sau trimite propriile Întrebarea Săptămânii.
L's important să înțelegem ce SSL face și ce nu face, mai ales că aceasta este o foarte frecvente sursă de neînțelegere.
Deci, răspunsul rapid ar trebui să fie: "da, este destul de sigur pentru a transmite date sensibile". Cu toate acestea, lucrurile nu sunt atât de simple.
Deci, răspuns mai scurt. Da, SSL poate fi destul de sigur, dar (la fel ca cele mai multe lucruri) depinde de modul de utilizare. :)
Există câteva probleme aici, cele mai importante fiind de autentificare. Ambele capete trebuie să fie sigur că acestea sunt vorbesc cu dreptul de persoană sau instituție pentru a contracara man-in-the-middle atacuri. Pe urmă, este esențial să utilizați un certificat SSL, care este de încredere de către utilizator's browser-ul. De a face astfel încât utilizatorul's browser-ul poate fi sigur că acesta este într-adevăr vorba la site-ul corect. Odată ce conexiunea este stabilită, puteți fi sigur de a fi vorbit cu acel utilizator tot timpul și conexiunea este criptat, adică sigur impotriva interceptarii.
Autentificare în cealaltă direcție (de exemplu, asigurându-vă că vorbesc la utilizator real) este, de obicei tratate în afara SSL protocol la nivel de aplicație, de exemplu, numele de utilizator/parola, openID sau o altă formă de acreditare.
Ca o ultima nota trebuie menționat că, în timpul conexiune SSL handshake client și server sunt de acord pe o Cifru suite, iar clientul ar putea pretinde numai "nul de criptare", de exemplu, nu a cripta datele. Dacă serverul dvs. este de acord cu această opțiune, conexiunea utilizează SSL, dar datele nu sunt criptate. Aceasta nu este o problemă în practică, deoarece serverul de implementari, de obicei, nu oferă null cifru ca o opțiune.
În plus față de ceea ce AviD liste de afară, SSL este la fel de sigur ca DNS infrastructură care v-a trimis la server, și orice procuri corporative în cale de comunicare.
Dacă DNS infrastructura este spart (cache intoxicații, etc), atunci atacatorul ar putea face obiectul dvs. de utilizator pentru mai multe atacuri.
În plus, în cazul în care clientul este de gând prin intermediul software-ul ca Scripcarul, sau un corporate proxy, care software-ul poate easvdrop pe SSL conversație.
Pentru a atenua acest lucru, uita-te la "emitent" de certificat SSL. Dacă conexiune SSL este de a merge printr-un proxy, atunci emitentul va fi aceea de proxy. Daca're de gând printr-o conexiune directă, atunci veți vedea relevante public încredere CA.
[Mai multe informații]
Un corporate HTTPS proxy este ceva care gestionează legătura între browser-ul web și Proxy (a cărui adresă IP apare în web busteni). În acest caz conținutul web (HTTPS parola) este decriptat, și mai târziu re-criptate de la corporate proxy și prezentat la server.
În funcție de cine este gestionarea proxy, și cum jurnalele sunt utilizate, acest lucru poate fi acceptabil sau un lucru rău din perspectiva ta.
Pentru mai multe informații cu privire la modul SSL interceptarea se face, a se vedea acest link:
Când SSL Proxy interceptează un SSL conexiune, acesta prezintă o emulat certificat de server către client browser-ul. Browserul client emite o securitate pop-up pentru end-user pentru că browser-ul nu are încredere în emitent folosit de ProxySG. Asta ferestre pop-up nu se produce în cazul în care emitentul certificat folosit de Proxy SSL este importate ca o rădăcină de încredere în browser-ul client's certificate store.
ProxySG face toate configurate certificate disponibile pentru descărcare prin consola de administrare. Puteți cere utilizatorii finali pentru a descărca emitentului certificat prin Internet Explorer sau Firefox și instalați-l ca de încredere CA în browser-ul lor de alegere. Asta elimină certificat pop-up pentru emulat certificate...
Unele companii de a obține în jurul valorii de certificatul de tip pop-up problema menționată mai sus, prin implementarea certificate rădăcină (Proxy) pentru fiecare stație de lucru prin GPO. Deși acest lucru va afecta doar software-ul care utilizează Microsoft Certificate store. Software-ul, cum ar fi Firefox și Chrome trebuie să fie actualizat în mod diferit.
Ca SSL se bazează pe Certificatul de Autorități (CA), și, practic, orice organizație poate deveni un AC, om-in-the-middle atacuri false totusi CA-semnat certificatele sunt întotdeauna posibile. Deci, în timp ce SSL este încă o îmbunătățire uriașă față de criptare nu la toate, securitatea sa este supraevaluat din cauza rupte CA sistem. În acest sens, certificatele auto-semnat-ar fi la fel de sigure ca orice CA-certificat semnat, încă browsere marca cei la fel de suspecte.
SSL este foarte sigur, deși cineva poate fura cineva's cookie de sesiune, dacă tu a alerga ORICE pagina de pe o necriptate linie. Daca ai putea mi-ar face site-ul all-SSL. Sau, eventual, au cookie-ul trimite doar pentru conexiunile criptate și au negarantate public de pagini nu sunt specifice pentru acel utilizator.
Există încă posibilitatea de un om-in-the-middle attack, care in cazul tau ar fi utilizatorului conectarea la un terț care pretinde a fi site-ul dvs. și apoi transmiterea solicitării. Desigur, un utilizator savvy ar trebui să observe lipsa de o conexiune SSL sau greșit certificat, dar majoritatea utilizatorilor nu sunt pornit și fi pacaliti de un lacăt favicon.
Asta e't într-adevăr o problemă cu SSL sine, doar ceva să fie conștienți de. Puteți presupune cu siguranță că nimeni nu este capabil de a trage cu urechea pe conexiune SSL între site-ul și sursa de conexiune. Puteți't, cu toate acestea, asigurați-vă că sursa de conexiune este chiar utilizatorul.
Deoarece SSL cripte transmisie, datele nu pot fi tras cu urechea (din certificatul nu este de încredere).
Desi problema se afle pe unde (și cât de mult) utilizați SSL în webapp: spune, de exemplu, aveți nevoie de o conexiune SSL doar pentru autentificarea utilizatorului (a sa 'le-au criptat user/pass perechi pentru a server-ul dvs.), atunci când vei trimite un cookie ar trebui să fie conștienți de faptul că acesta ar putea fi ușor interceptate (ca în cazul în care utilizatorul este într-o neprotejat conexiune wireless).
Recent FireSheep drama este despre toate astea.
SSL îndeplinește două sarcini de bază: autentificare și criptare.
Autentificarea se face prin intermediul unor autorități de certificare (Ac). Browsere veni cu o listă de SSL cert pentru semnarea cheile de la CAs. CAs semneze certificatele care descriu cheia publică a entității. De exemplu, dacă am avut Google.com am'd dovedi că a Verisign și vor semna certificatul meu pentru o anumită perioadă de timp. Probleme ivi cu un CA semne cert ar trebui't semn. Acest lucru poate apărea atunci când cineva pretinde să dețină un alt domeniu, dobândește un wildcard cert că este prea larg, sau pur și simplu XKCDs CA în emiterea de ceva nefast (guverne, poate?). Am'am vazut cazuri de toate cele de mai sus se întâmple, dar este destul de rar.
Dacă o cert pentru un site este semnat în mod corespunzător și nu fals cert în lanț de încredere există, atunci când vă conectați la un site puteți (pentru discuție) să fie siguri că certificatul de meciuri. În condiții normale, care conexiunea este criptat. Care împiedică pe cineva de la citirea datelor.
Certificatele SSL sunt foarte complexe, și o serie de atacuri există împotriva SSL implementări. Ce SSL poate face în mod eficient este de a mă împiedica vizionarea de trafic la nivel local Starbucks atunci când vă verificați adresa dvs. de email de pe GMail. Ce se poate't face este să mă împiedice să utilizați un atac MITM unde am releu totul pentru tine, fără SSL și clientul dvs. de e't de configurare pentru a te deranjez despre faptul că n-a început-o sesiune criptată.
Nr. Analiză de trafic pot să vă spun încă cineva.
analiza Traficului este procesul de a intercepta și examinare a mesajelor în scopul de a deduce informații de la modele în comunicare. Ea poate fi efectuată chiar și atunci când mesajele sunt criptate și nu pot fi decriptate. În general, este mai mare numărul de mesaje observat, sau chiar interceptat și stocate, cu atât mai mult poate fi dedus din trafic.
TLS este, de obicei, utilizate pentru a păstra confidențialitatea -- un atacator nu ar trebui să ajungă la un nivel de încredere ridicat cu privire la conținutul comunicării.
Presupunând,
Un atacator poate spune, probabil, atunci când sunt treaz și când ești adormit, indiferent de protocol, și poate fi capabil de a spune mult mai mult în funcție de natura protocolului te're folosind.
Dacă protocolul este foarte simplu:
Un interceptor care poate't decripta datele pot determina prin simpla prezență a unui mesaj pe care doriți să foc, arme nucleare, deși poate nu la cine.
Dacă protocolul este mult mai complex:
Un atacator ar putea să nu fie în măsură să spun care este citit "Război și Pace" vs "micul Atlas" dar pot distinge, bazat exclusiv pe dimensiunea mesajului, fie că citesc unul dintre foștii vs Kafka's 55 pagina romanul "Metamorfoza".
SSL, în general, crește securitatea prin furnizarea de:
În esență, există doar două tipuri de certificat SSL, certificatul de server (care este întotdeauna implicat) și un certificat de client (care este optional).
Aceasta este doar o schiță, și acolo sunt mulți "dacă", " și " și "dar". În cel mai tipic scenariu, bazat pe browser, SSL, schema poate rupt în multe cazuri fără a rupe criptografie sau protocol, dar pur și simplu bazându-se pe utilizator de a face ceva greșit (de exemplu, ignora browser-ul avertismente și se conectează oricum). Atacurilor de tip Phishing poate lucra, de asemenea, de a trimite utilizatorul la un fals SSL protejate site-ul, a făcut-o să semene cu cel real, în toate privințele, dar URL-ul.
După ce a spus că SSL și vărul său TLS sunt încă foarte util ca ei, cel puțin, permite comunicarea securizată, deși departe de a fi infailibil.
Nu de numărare diferite răspunsuri către alții despre alte probleme potențiale, presupunând că utilizați SSL 3.0 și criptare puternică, ar trebui să fie în siguranță.
Folosind mai vechi ssl protocoale (2.0) sau folosind un slabe cheie de criptare ar putea deschide până la vulnerabilități.
Este în siguranță pentru utilizator, sau este în siguranță pentru tine? Să presupunem un om-in-the-middle attack. Atacatorul reușește să surprindă de utilizator's de trafic, pretinde a fi a utilizatorului, și pretinde a fi utilizator pentru tine. Acest tip de atac ar eșua, de obicei, pentru că certificatul dat de utilizatorul nu ar fi corect. De exemplu, atacatorul oferă utilizatorului un certificat auto-semnat pentru site-ul tău. Cu toate acestea, dacă utilizatorul acționează prostește, se poate accepta că, certificat auto-semnat. Deci, acum, atacatorul poate citi și modifica tot traficul între utilizator și tu, și din câte știu nu există nici o cale pentru tine de a detecta acest lucru.
Deci, dacă am băgat nasul și modificarea de trafic doare utilizator, care's chiar vina lor și propria lor problemă. Și puteți't preveni complet oricum, pentru că MITM poate te taie complet și doar să vorbesc cu utilizatorul pretinde a fi tu. Dar dacă supravegherea și modificarea de trafic te doare, atunci trebuie să ai încredere utilizatorul să nu fie prost, sau mai bine autentifica utilizatorul, precum și (utilizatorul ar avea nevoie de un certificat, și puteți verifica într-un mod care MITM poate't fals).
Răspunsul scurt este nu.
Mai răspunde: o colecție de răspunsuri de mai sus, plus:
Dacă vom rezolva autentificare, prin urmare, omul-din-mijloc, cu tradiționale SSL connectyion cineva listning la trafic ar putea încă decripta mai târziu, dacă au obținut un server cheie secretă (cred că de NSA și Securitate Națională Litere).
Există o opțiune în TLS protocolul Diffie-Helman protocol pentru a asigura link-ul în mod confidențial.
A se vedea imaginea de mai jos, atunci când sunt accesarea gmail.com folosind Chrome.
Uita-te la text RC4_128 cu SHA1 pentru autentificare mesaj ECDHE_ECDSA. Aceasta prevede:
Cu alte cuvinte, chiar dacă cineva are cheia privată a SSL server, mesajele au fost criptate cu chei temporare care sunt eliminate din memorie imediat după utilizare. Noroc NSA!
@Vladimir este corect ca http://en.wikipedia.org/wiki/Forward_secrecy este de dorit, dar are detalii greșit. Server ales acest ciphersuite din rândul celor oferit de browser-ul. "criptate cu RC4_128 cu SHA1 pentru autentificare mesaj" nu folosi RC4 pe 128-bit criptare și HMAC-SHA-1 de verificare a integrității. (Ciphersuite nume în SSL/TLS până de curând spun SHA dar ei spun SHA-1 și, de fapt, HMAC-SHA-1.) "ECDHE_ECDSA ca o cheie-mecanism de schimb" nu se aplică la mesaje individuale, este parte (majoritatea) din strângerea de mână care apare o dată la începutul sesiunii: ECDHE utilizează Curbe Eliptice varianta de Diffie-Hellman în Efemer modul (plus unele măsuri suplimentare nu este important aici) pentru a crea sesiune taste utilizate pentru criptare și HMAC; și ECDHE key exchange (numai) este semnat de Curbe Eliptice varianta de Digital Signature Algorithm. (Niciodată nu poți cripta nimic direct cu DH sau ECDH, se face doar cu cheie sau alte mici secrete de acord.)
Atunci când nu utilizați SSL, toate de comunicare pot fi ușor interceptate - singurul lucru de care este nevoie pentru a face asta este de a lansa sniffer de pachete (de exemplu, Wireshark). SSL previne că, toate pachetele sunt criptate astfel încât nu există nici o modalitate de a ști ce se trimite. Practic, este utilizat pentru protejarea parolelor și a conținutului privat din interceptarea. Tu, evident, nu vreau ca altcineva să citească e-mailurile private, nu? Ca și de căutare Google, ei pur și simplu a făcut-o pentru a ascunde ceea ce oamenii cer. Acest lucru se datorează faptului că unele guverne sunt prea curios despre asta.
Cum SSL pentru a crește securitatea? Nu de la sine. Ceea ce face este o combinație de criptare (SSL) și PKI (Public Key Infrastructure) - în principal Certificate. OK, întrebarea era cum. Pe de o parte se asigură canal de comunicare (vezi mai sus), pe de altă parte se asigură că vorbești legitime de afaceri - autentifică server. Deci, canalul este sigur și de încredere.
Există destul de câteva Certificate SSL, deoarece există destul de câteva Servicii PKI. Practic diferite servicii are nevoie de alt tip de Certificat SSL. Deci, există Certificatelor pentru semnare de cod, adresa de e-mail de criptare și semnare, cele legate de exemplu de server de autentificare, și așa mai departe.
Când cineva se conectează cu SSL (https) pentru serviciul nostru și de a transmite corect datele de autentificare, este în condiții de siguranță pentru a transmite toate datele sensibile peste această linie, sau poate fi ca nu există încă trage cu urechea?
Veriga slabă în acest lanț este, aproape sigur, nu SSL, dar utilizatorul, care poate fi, în general, păcălit conectarea la un fals intermediar site-ului, fie prin intermediul web spoofing/hyperlink spoofing, sau de a fi prezentat un certificat nevalid și concedierea browser-ul de avertizare și de a continua să se conecteze oricum.
Cu toate acestea sistemul descris de tine e cea mai bună practică oricum, nu's nu ai prea multe de făcut (în afară de a educa utilizatorii să ia SSL avertismentele în serios daca se poate).
Cred că oamenii de aici nu înțeleg întrebarea:
Dacă aveți un nesigure linie, și de a face un succes SSH/Conexiune SSL peste această linie, el acum vă întreb dacă este sigur de a face presupunerea că linia este "sigur" și că necriptate de date pot fi transmise în PARALEL cu Conexiune criptată (de exemplu, în vedere, nu în interiorul criptate SSL/SSH).
Aș spune că nu. În acest caz, ar putea fi un pasiv cancan, care pur și simplu ignoră datele criptate și salvează date necriptate.
DAR poți fi sigur că nu există Active cancan (MITM), ceea ce înseamnă că puteți în condiții de siguranță a stabili o neautentificat SSL/SSH Legătură cu aceeași sursă/destinație și autentificate linie. Aceasta a oferit nici selectivă cancan că MITM anumite conectori, DAR cu toate acestea, cancan nu știu dacă ai de gând pentru autentificarea Conexiunii sau nu, așa că nu știu care Conexiunea la MITM pentru a evita detectarea. La MITMer ar fi, dacă el MITM, MITM toate Conexiunile și sper ca oamenii să faceți clic prin toate autentificare dialoguri pur și simplu.
Astfel: Dacă vă conectați autentificat la un SSL service de sa zicem 123.123.123.123 să 24.24.24.24, puteți, de asemenea, în condiții de siguranță a conecta un client SSH de la 123.123.123.123 să 24.24.24.24 fără reciproc autentificarea SSH de amprente, cu condiția să poți avea încredere în tot spatele de altă parte's NAT router sau firewall.
Dar chiar dacă e în siguranță, în general, a însemnat, există un risc mic ca un cancan pur și simplu aleatoare MITM Conexiuni și speranță pentru a nu fi detectat, deci din moment ce ai deja o Conexiune autentificată la țintă IP, de ce să nu folosim această Conexiune autentificată să verificăm reciproc SSH de amprente? Sale de simplu ca postarea corectă SSH amprenta pe un SSL securizat site-ul!
HTTPS TLS/SSL chiar și cele mai până la data pot fi ușor pătruns de un Ienupăr dispozitiv configurat ca un MITM. L's nu este sigur.