Taggat med: ssl

Nyheterna i Transport Layer Security version 1.3 (TLS 1.3)

 

SSL och TLS har under lång tid säkrat upp en betydande del av den krypterade kommunikationen på Internet. Sedan SSL version 1.0 släpptes internt hos Mozilla år 1994 så har det hänt en hel del.

Den nya versionen som just nu håller på att utvecklas inom en arbetsgrupp hos IETF har versionsnumret 1.3 där målsättningen är högre prestanda samt tillhandahålla en ännu högre säkerhet. Man kan säga att designkriteriet för denna nya version är ”less is more” och det innebär att en hel del föråldrade krypton har fått stryka på foten:

  • RSA är borttaget – Tillhandahåller inte Forward Secrecy
  • Svaga Diffie-Hellman grupper kan inte användas (SSL_OP_SINGLE_DH_USE)
  • CBC är borta – Är orsaken till attacker såsom Lucky13 och BEAST
  • RC4 samt SHA1 får inte längre användas
  • Export-algoritmer (ansvarig för attacker såsom FREAK, LogJam etc)
  • Nytt är ChaCha-Poly1305 samt stöd för OCB-modes (tipstack till Joachim Strömbergson)

När det gäller prestanda så har ett antal åtgärder införts:

  • 0-RTT samt 1-RTT

Genom att få ner antalet TCP-paket som måste skickas fram och tillbaka vid varje anslutning så kan snabbare TLS (och webbsidor etc) uppnås.

Här följer en bild hur 1-RTT ser ut där klienten skickar ett ClientHello direkt, samt så gissar klienten vilka krypton som kommer att användas:

När du sedan har en session etablerad så kan sedan 0-RTT användas vid senare tillfälle (Session Resumption) men detta möjliggör dock återuppspelningsattacker.

Vill du redan nu testa TLS 1.3 i Google Chrome så kan du göra följande:

  1. Skriv in ”chrome://flags/” i adressbaren och trycker enter
  2. Gå till ”Maximum TLS version enabled.” och välj ”TLS 1.3”
  3. Starta om Chrome

Och vill du testa med Firefox så behöver du ladda hem senaste nightly-build där TLS 1.3 är påslaget som standard.

Och nu när vi besöker kryptera.se och tar upp Developer Tools (DevTools) så synes följande:

Viktigt att tillägga är att TLS 1.3 inte är färdigt ännu och ändras löpande. Detta gör att mjukvara såsom OpenSSL är försiktiga med att göra förändringar. Den senaste uppdateringen till TLS 1.3 heter draft-19 och släpptes för cirka 2 veckor sedan.

För att exempelvis Nginx ska stödja TLS 1.3 så måste även OpenSSL stödja detta. Och OpenSSL kommer med stöd inom några veckor i version 1.1.1.

Oberoende granskning av OpenVPN

OpenVPN är ett otroligt populärt verktyg för att skapa upp VPN-anslutningar och används av majoriteten av alla VPN-tjänster. Private Internet Access (PIA) med bl.a. Rick Falkvinge kommer att betala för en oberoende granskning av OpenVPN som leds av kryptologen Dr. Matthew Green. Matthew hade tidigare hand om den öppna granskningen av TrueCrypt. PIA är ett företag som tillhandahåller VPN-anslutningar och som använder OpenVPN

OpenVPN har funnits sedan 2001 och använder en variant på SSL/TLS som kanal för kommunikation och går att köra på operativsystem såsom Solaris, Linux, OpenBSD, FreeBSD, NetBSD, QNX, Mac OS X, iOS, Android och Windows från version XP.

PIA meddelar att efter granskningen är klar och OpenVPN åtgärdat eventuella brister så kommer rapporten att publiceras på deras hemsida.

Senast en sårbarhet uppdagades i OpenVPN var under 2016 då födelsedags-attacken Sweet32 som går mot 64-bits algoritmer såsom den som OpenVPN använder som standard, BF-CBC.

Och viktigt att notera är att OpenVPN används på både klienten och servern. Ett alternativ till OpenVPN är att köra stunnel eller IPSEC.

Uppdatering: Under tiden jag skrev denna artikel har två andra relaterade nyheter dykt upp:

  • Algo lyfts upp som ett nytt alternativ till IPSec och OpenVPN
  • OSTIF meddelar att de anlitar Quarks Lab för att också granska OpenVPN. Samma franska företag som tidigare granskade VeraCrypt

TLS/SSL-läget i Sverige

Företaget Kirei har nu lanserat en webbtjänst där de listar 788 svenska organisationer och deras tillhörande betyg från SSL Labs. Bakomliggande kod är öppen källkod och ligger på Github för den som vill komma med ändringar.

Generellt kan man se att det inte ser speciellt bra ut. Antalet organisationer som får sämsta betyg F är otroligt många och även antalet sajter som överhuvudtaget inte har TLS är ännu fler.

För den som vill erhålla högsta betyg, A+ så går det bl.a. att följa SSL Labs A+. Givetvis så saknar vi regeringen.se som tillhandahåller ett felaktigt certifikat via Akamai och som annars brukar vara bra att föregå med gott exempel:

Regeringen TLS Akamai

Skärmdump från TLS-kollen:

TLS/SSL i SverigeUppdatering: Emil Tullstedt tipsade mig på Twitter att en ny RFC har släppts som går ut på att fasa ut SSLv3: https://www.rfc-editor.org/rfc/rfc7568.txt

 

🔐 Microsoft gillar Forward Secrecy (PFS)

Microsoft

Nyligen så släppte Microsoft en relativt anonym säkerhetsuppdatering med nummer 3042058. Denna uppdatering kastar om ordningen samt lägger till nya krypteringsalgoritmer gällande Windows 7, Windows Server 2008 R2, Windows 8, Windows Server 2012, Windows 8.1, och Windows Server 2012 R2.

Att en så stor spelar som Microsoft gör denna ändring får så klart stora konsekvenser för IT-säkerheten i stort på internet, till det bättre om du frågar mig. För just Forward Secrecy (PFS) gör att temporära nycklar används för sessioner och således kan äldre information ej återskapas även om den privata nyckeln röjs som i fallet med Heartbleed-buggen. För TLS handlar det framförallt om Diffie-Hellman DHE och Diffie-Hellman med elliptiska kurvor, ECDHE.

Följande nya ciphersuites stödjer nu Microsofts ovan operativsystem (och framtida?):

  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_GCM_SHA384
  • TLS_RSA_WITH_AES_128_GCM_SHA256

Och i Microsofts fall så är de Schannel som har hand om SSL/TLS och ovan nya algoritmer. Du kan även manuellt ändra ordningen på följande sätt:

  1.  At a command prompt, type gpedit.msc, and then press Enter. The Local Group Policy Editor is displayed.
  2. Expand Computer Configuration, expand Administrative Templates, expand Network, and then click SSL Configuration Settings.
  3. Under SSL Configuration Settings, click SSL Cipher Suite Order.
  4. In the SSL Cipher Suite Order pane, scroll to the bottom.
  5. Follow the instructions that are labeled How to modify this setting.

Kommentar från Henrick Hellström på Streamsec:

– Uppdateringen är ”anonym” främst eftersom den inte kommer att bli tillgänglig via Windows Update förrän fjärde kvartalet. ”Microsoft is initially offering the 3042058 update via the Microsoft Download Center only in order to give customers the opportunity to test the new features before making them a default part of their environments; the update will be available via Microsoft Update and WSUS in Q4 2015.”

– Jag håller med om att PFS borde vara standard, men tycker att din motivering kanske är lite överförenklad. I praktiken skulle en läckt privat nyckel (genom heartbleed eller på annat sätt) nog inte skydda gammal data det minsta. Lyckas du komma in som administrator på en server (t ex genom en MITM följd av selektiv blockering mot Remote Desktop när administratören försöker logga in) kan du förmodligen ganska enkelt återskapa det mesta som hänt på den servern genom att analysera loggfiler och auditrecords i databasfilerna, utan att behöva dekryptera någon gammal SSL/TLS-trafik.

– Omvänt, det stora problemet om någon lyckas kopiera din privata nyckel, är att du högst sannolikt aldrig kommer att få reda på det. Även om all gammal trafik kommer att förbli konfidentiell, kommer all framtida trafik från den tidpunkten att kunna dekrypteras av angriparen.

Faktorisera 512 bitar RSA SSL/TLS

Nyligen så uppdagades en ny attack mot SSL/TLS vid namn SMACK. Denna attack nyttjar det faktum att många webbsajter i dagsläget erbjuder gamla krypteringsalgoritmer där bl.a. RSA 512 bitar finns med samt en sårbarhet i klienter.

Att faktorisera 512 bitar RSA går relativt snabbt med hjälp av ett kluster hos exempelvis Amazon EC2. Och med hjälp av 75 st servrar hos Amazon tar det cirka 7h och kostar runt 800 SEK. Och verktyget som användes för detta är bl.a. cado-nfs (eller så kan även ggnfs + msieve användas).

Men hur utbrett är problemet eg. med dessa korta nyckellängder på serversidan? Jo, av 14 miljoner sajter som stödjer SSL/TLS så har 36.7% detta problem. Och problemet i detalj består i att om en klient såsom OpenSSL eller Apples SecureTransport får tillbaka ett svar som inkluderar export-grade RSA så kommer dessa klienter att acceptera svaret, även om de ej frågat efter export-grade RSA.

Förfarandet steg för steg:

  1. När klienten skickar sitt Hello-meddelande så frågar den efter standard RSA
  2. Angripare som sitter i mitten (MITM) ändrar detta svar till export RSA
  3. Servern svarar med sin 512-bitars export RSA-nyckel, signerad med sin nyckel för långa livslängder (long term key).
  4. Klienten sväljer detta svar på grund av OpenSSL/SecureTransport-buggen.
  5. Angriparen faktoriserar RSA för att hitta den privata nyckeln
  6. När klienter krypterar ‘pre-master secret’ till servern så kan nu angriparen dekryptera TLS huvudhemlighet (master secret)
  7. Nu kan angriparen se klartext och injicera nytt innehåll

Demonstration av hur attacken kan nyttjas mot NSA (eller rättare skrivet, Akamai):

nsa-fake copy

Gratis SSL/TLS med Let’s Encrypt

Let’s Encrypt är ett nytt initiativ av Internet Security Research Group som backas upp av en mängd stora företag där målet är att tillhandahålla TLS helt gratis.

Företagen som sponsrar satsningen är följande:

Gratis TLS

Även är ett av målen att det ska vara lätt att komma igång. Därför behöver du enbart skriva följande kommando för att komma igång:

$ sudo apt-get install lets-encrypt
$ lets-encrypt example.com

Underliggande säkra protokoll som används är nyutvecklat och går under namnet ACME (Automated Certificate Management Environment) och används för att underlätta verifiering av domännamn. Detta har varit krångligt tidigare då E-post och dylikt har används för SSL/TLS-certifikat.

Specifikationen är tillgänglig via Github här: https://github.com/letsencrypt/acme-spec/blob/master/draft-barnes-acme.md

Projektet kommer att starta/fungera från sommaren 2015.

Sex nya sårbarheter i OpenSSL

opensslAtt desto fler ögon som tittar på kod leder till säkrare mjukvara råder det ingen tvivel om. Allt sedan Heartbleed-sårbarheter uppdagades i OpenSSL har flertalet personer granskat koden och identifierat brister.

Nu släpper OpenSSL nya versioner som åtgärdar minst sex av dessa identifierade bristerna. Den allvarligaste medger att en angripare kan modifiera innehållet i en krypterad anslutning mellan klient och server.

Dock så måste både server och klient inneha en sårbar version för att attacken ska gå att genomföras. Samtliga OpenSSL-versioner på klientsidan är sårbara men enbart version 1.0.1 samt 1.0.2-beta1 på serversidan.

  • ChangeCipherSpec: SSL/TLS MITM vulnerability (CVE-2014-0224)

Övriga brister som åtgärdats är följande:

  • DTLS recursion flaw (CVE-2014-0221)
  • DTLS invalid fragment vulnerability (CVE-2014-0195)
  • SSL_MODE_RELEASE_BUFFERS NULL pointer dereference (CVE-2014-0198)
  • SSL_MODE_RELEASE_BUFFERS session injection or denial of service (CVE-2010-5298)
  • Anonymous ECDH denial of service (CVE-2014-3470)

Här kan du läsa mer om sårbarheterna:

Samt:

TLS Fallback Signaling (SCSV)

TLS Fallback Signaling Cipher Suite Value (SCSV) är en ny föreslagen IEFT standard (draft) från Adam Langley och Bodo Moeller på Google.

SCSV är tänkt att användas för en TLS-klient såsom webbläsare att berätta för servern när en handskakning misslyckas och återupptas med en lägre TLS/SSL-version.

Varför är detta viktigt?

Jo,  om en angripare kan på något sätt få en klient att misslyckas med sin handskakning och sedan nedgradera anslutningen från TLSv1.2 exempelvis SSLv3 och därefter nyttja en svaghet i SSLv3.

Som det fungerar rent praktiskt med SCSV implementerat så skickar klienten en cipher-suite som ej finns på riktigt.

Denna är:

TLS_FALLBACK_SCSV {0x56, 0x00}

Men vad ska servern göra när denna cipher-suite dyker upp från en klient? Jo servern ska kontrollera att förhandlingen verkligen gäller den högsta version som både klienten och server stödjer:

If TLS_FALLBACK_SCSV appears in ClientHello.cipher_suites and the
highest protocol version supported by the server is higher than
the version indicated in ClientHello.client_version, the server
MUST respond with a inappropriate_fallback alert.

Läser man vad Adam har skrivit på sin blogg så verkar implementationen gjort att många prylar slutat att fungera. Såsom F5:s webbcachar och Kasperskys anti-virusprodukter som genomför SSL MITM (ej standard).

Här kan du läsa vidare i du den fullständiga draften:

SSL sårbarhet i iOS (iPhone/iPad etc)

Apple-SSL-#fail

Ny information. Läs mer här!

Apple släppte i går en uppdatering till operativsystemet iOS som återfinnes i bl.a. iPhone och iPad. Felet som åtgärdas med denna uppdatering är att det genomförs en bristfällig kontroll av värdnamnet i certifikatet stämmer överrens med det värdnamn dit anslutningen upprättas.

Detta kan illustreras genom följande exempel där vi först testar med curl  i Ubuntu Linux som misslyckas:

Linux

Och sedan på en Macbook Pro med Mac OS X version 10.9.1 (Mavericks) där anslutningen lyckas:

Mac OS X

IP-adressen 74.125.143.94 är www.google.se.

Rolig kommentar från Twitter av Christopher Soghoian:

 

Denna sårbarhet möjliggör för en angripare att exempelvis genomföra MITM attacker.

Uppdatering: För att förtydliga. Curl använder sig av Secure Transport (aka darwin-ssl) som genomför bristfällig kontroll av värdnamnet. Från Apples länk nedan:

Secure Transport failed to validate the authenticity of the connection. This issue was addressed by restoring missing validation steps.

Felet verkar enbart uppträda när ett IP-nummer används istället för värdnamn samt så påverkar även denna bugg Mac OS X.

Detta gäller således enbart anslutningar där IP-nummer används istället för värdnamn. Det är svårt att gissa hur många SSL-anslutningar som använder IP-nummer istället för värdnamn.

Exempel 2 gällande Apples bristfälliga SSL-validering

Du ansluter till https://1.2.3.4 men ett annat SSL-certifikat än för 1.2.3.4 returneras. Allt fungerar fortfarande bra. Oklart om det gäller självsignerade certifikat eller om hela certifikat-kedjan ändå verifieras.

Läs mer hos Apple här:

Kryptering och anonymitet blir vardag

Kryptering blir mer och mer vanligt i vår vardag. Det finns nästan ingen app i dagsläget eller applikation i vår dator som vi använder som ej innehåller kryptering i någon form.

Senaste populära appen från Silicon Valley är Secret.ly som medger en anonymitet. Fokus ligger på ett anonymt budskap och ej på profilbilder eller namn. Peter Rosdahl har skrivit lite mer här.

Secret.ly

Denna typ av utveckling kommer troligtvis att bli vanligare. Tidigare så var vi noga att på Facebook gå ut med fullt namn, telefonnummer etc men nu verkar trenden vända och anonymitet bli något som värdesätts mer och mer.

Och i dag så tipsar .SE även om dagen då vi slår tillbaka på massövervakningen samt även tipsar om HTTPS Everywhere och att använda SSL i större utsträckning (köp SSL-certifikat här).