Nytro Posted September 25, 2013 Report Posted September 25, 2013 (edited) Autor: Nytro @ Romanian Security TeamPentru ca tot au aparut zvonuri cum ca NSA ar face MITM (Man in The Middle) - pe intelesul tuturor - ar intercepta traficul pe Internet pentru a spiona ce face lumea, ar trebui sa ne informam putin despre cum sa ne pastram anonimitatea fata de astfel de probleme.Articolul este destinat persoanelor care folosesc Mozilla, nu presupunea folosirea unor VPN-uri ci pur si simplu vreau sa prezint cateva setari pe care le puteti face in browser pentru a creste siguranta in cazul in care se incearca decriptarea traficului.Primul lucru pe care il recomand e sa va instalati acest addon pentru Firefox:https://addons.mozilla.org/ro/firefox/addon/calomel-ssl-validation/Screenshot:Addon-ul e foarte util din mai multe privinte:1. Va permite intr-un stil foarte simplist sa vedeti cat de puternica este encriptia folosita pe site-urile vizitate2. Va permite sa vedeti in detaliu cum s-a realizat encriptia, acordand "puncte" pentru algoritmii folositi3. Va permite sa faceti mai multe setari utileAm inceput sa scriu acest articol deoarece Facebook, Google si alte site-uri importante, in mod implicit, ofera o encriptie (simetrica) foarte slaba: RC4 - 128 de biti! Mai multe detalii despre algoritmul RC4 si despre problemele sale gasiti aici:https://en.wikipedia.org/wiki/RC4#SecurityPractic articolul se rezuma la cum puteti forta Firefox sa foloseasca niste algoritmi mai puternici si mai siguri.Cum functioneaza SSL/TLSNu vreau ca acest articol sa se transforme despre un articol SSL/TLS, dar trebuie sa precizez cateva lucruri de baza.SSL/TLS sunt niste protocoale, mai exact sunt niste reguli care trebuie indeplinite pentru a se putea realiza o conexiune sigura intre calculatorul vostru si site-ul pe care il vizitati. TLS e practic o versiune imbunatatita a SSL-ului. Versiunile SSL 1.0, 2.0 si 3.0 sunt vechi si nu ar mai trebui folosite, mai ales deoarece e cunoscut faptul ca au probleme de securitate. TLS 1.0 e o versiune imbunatatita de SSL 3.0 iar TLS 1.1 si TLS 1.2 sunt versiuni mai noi de TLS. Realizarea unei conexiuni SSL se face astfel:1. Se realizeaza conexiunea TCP (nu intru in detalii)2. Clientul (browser-ul) trimite "Client Hello" catre server. In request sunt specificate: versiunea SSL/TLS, de cele mai multe ori, default, TLS 1.0.Exemplu: TLS_DHE_RSA_WITH_AES_256_CBC_SHA1. TLS = TLS sau SSL, protocolul2. DHE = Diffie Hellman Exchange, algoritmul pentru schimbul de chei3. RSA = Algoritmul folosit pentru autentificare4. AES_256_CBC = Algoritmul folosit pentru encryptia simetrica (CBC e modul in care e folosit algoritmul AES pe blocuri)5. SHA = Algoritmul folosit pentru validarea integritatii datelor (hash)3. Serverul raspunde cu "Server Hello" in care raspunde cu versiunea suportata, de exemplu TLS 1.0 si cu cipher suite-ul (algoritmii folositi pentru encruptie) ales4. Serverul trimite certificatul (sau certificatele), prin care se identifica. Mai exact, spune: "Uite, aceasta este dovada ca eu sunt www.cia.gov". Iar certificatul, pentru a fi recunoscut de browser ca fiind valid, trebuie sa fie semnat de catre o autoritate in domeniu: VeriSign sau alte companii recunoscute ca legitime pentru a semna certificate, deoarece si eu pot crea un certificat pentru domeniu "www.cia.gov", dar va fi semnat de Nytro, nu de VeriSign si probabil aveti mai multa incredere in ei decat in mine.5. Clientul verifica daca certificatul este in regula, iar daca totul este ok, se face schimbul de chei. Adica se face encriptia asimetrica: se face schimbul de chei folosind algoritmul RSA (cred ca cel mai ok), DH (Diffie Hellman) sau ECDH (DH pe curbe eliptice) in functie de cipher-suite-ul ales de server din lista trimisa de client. x. Folosind cheile schimbate mai sus, se realizeaza encriptia datelor folosind algoritmul pentru criptarea simetrica (AES de exemplu) folosind cheile schimbate la "Key exchange". Dimensiunea cheilor depinde de cipher-suite. De exemplu, daca se foloseste AES pe 128 de biti, pentru a se "sparge" prin bruteforce datele trimise, e necesara incercarea a 2 ^ 128 (2 la puterea 128) de chei. Daca algoritmul este insa RC4, cum exista multe atacuri cunoscute impotriva acestui algoritm, sunt sanse mult mai mari ca o astfel de encriptie sa poata fi sparta intr-un timp mult mai scurt.Ce putem face?Dupa cum ziceam, in mod implicit, browserele trimit lista de cipher-suite completa iar serverul de obicei alege un algoritm simplu si rapid ca RC4, atat pentru viteza de incarcare a paginilor, cat si pentru compatibilitate cu browsere mai vechi.Noi il putem insa forta sa aleaga un cipher mai puternic prin simpla modificare a listei de cipher-suite-uri pe care browser-ul o trimite catre server, eliminand cipher-suite-urile "slabe" ca RC4.Setari in MozillaToate setarile pentru SSL se vor face navigand la pagina de configurare:about:configPentru simplitate cautati:security.sslScreenshot:De aici putem dezactiva anumite cipher suite-uri. Nu pot sa va spun cu certitudine care sunt sigure si care nu, dar va pot recomanda sa alegeti RSA (key exchange) si AES (pe 256 de biti). Eu am dezactivat tot in afara de RSA_AES_256_SHA:Puteti opta si pentru folosirea curbelor eliptice, in afara unui PRNG (Pseudo Random Number Generator) bazat pe curbe eliptice in care s-au descoperit probleme si se presupune ca ar putea fi un backdoor al celor de la NSA si in afara faptului ca NSA colaboreaza cu NIST (cei care definesc standardele de "siguranta") si ca astfel NSA ar putea influenta anumite curbe eliptice (de aceea am zis ca prefer RSA), puteti folosi curbe eliptice deoarece sunt mai putin consumatoare de procesor si mai "puternice".RezultatulInchidem browser-ul si il redeschidem si:Si suntem mai SIGURI. De asemenea, TLS 1.1 si TLS 1.2 sunt suportate de Firefox incepand cu Firefox 24 dar sunt DISABLED in mod implicit (probabil incomplet implementate).Pentru a le activa, in pagina de "about:config" cautati:security.tlsSi modificati valorile:- security.tls.version.min = 0 (SSL 3.0)- security.tls.version.max = 1 (TLS 1.0)In valorile:- security.tls.version.min = 1 (TLS 1.0)- security.tls.version.max = 3 (TLS 1.2)IMPORTANT: Exista potibilitatea de a avea probleme cu stabilirea comunicatiei TLS pe servere mai vechi!In acest caz singura posibilitate este sa reactivati niste cipher-suite-uri mai slabe sau sa nu mai vizitati acel site.Daca aveti intrebari sau probleme le astept aici.Thanks,Nytro Edited September 25, 2013 by Nytro 3 Quote
Gonzalez Posted September 27, 2013 Report Posted September 27, 2013 Foarte bun Nytro. Felicitari!-Gonzalez Quote
emarketnew Posted October 5, 2013 Report Posted October 5, 2013 adica sa nu mai folosim facebook-ul ???? Quote
emarketnew Posted October 5, 2013 Report Posted October 5, 2013 i caz ca nu merge facebook-ul about:configapoisecurity.enabledublu click pe security.enable_md5_signatures Quote
Heineken- Posted October 8, 2013 Report Posted October 8, 2013 ?tii cumva dac? exist? acest modul ?i pentru Google Chrome? Quote