Taggat med: forward secrecy

Adobe exponerade sin privata PGP-nyckel

PSIRT-teamet på Adobe råkade av misstag publicera sin privata PGP-nyckel. Det var i samband med att Juho Nurminen från Finland skulle kontakta Adobes Product Security Incident Response Team och ville använda PGP som nyckelröjningen upptäcktes. När Juho gick in på sidan där Adobe publicerar sin publika nyckel låg där även den privata.

Tur i oturen så skapades nyckeln den 18:de September 2017 och har troligtvis inte används av allt för många.

Nyckeln revokerades dock av Adobe efter fyra dagar:

Att rotera sin PGP-nyckel är enligt god krypto-sed bra att genomföra eftersom PGP inte erbjuder forward secrecy.

Rotering gör exempelvis CERT-SE med sitt PGP-nyckelpar:

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 Netscape Communications å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 – RSA 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)
  • Algoritmen för RSA-padding är Probablilistic Signature Scheme (PSS)
  • Nytt meddelande av typen EncryptedExtension. Som nu är krypterat, tidigare skickades många okrypterat

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.

Uppdaterad 2017-12-27: Enligt Cloudflare är det bara %0.06 av webbläsarna som använder TLS 1.3 och detta beror främst på att många mellanlådor inte stödjer TLS 1.3.

Uppdaterad: 2017-06-06, användes internt hos Netscape. Inte Mozilla som grundades först många år senare.

🔐 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.

Heartbleed dag sex

broken-heartbleedYtterligare ett antal dagar har nu passerat sedan OpenSSL-buggen Heartbleed offentliggjordes och det är dags att göra ett antal till reflektioner.

Det har visat sig att buggen går att nyttja till att erhålla den privata nyckeln, framförallt via Hearbleed Challenge.

The bad news is that [discovery] changes our recommendation from: reissue and revoke as a medium priority to reissue and revoke as a high priority.

Skrev Matthew Prince, CEO på CloudFlare till Ars Technica.

Akamai har släppt en patch för att säkra upp minnesallokeringen i OpenSSL. Deras implementation går under namnet secure_malloc (OpenSSL använder sig av OPENSSL_malloc). Läs även mer här av Alex Clemmer.

Även oklart huruvida denna sårbarhet nyttjas innan den blev offentligt känd. EFF hävdar dock att så är fallet och har bevis på detta.

Bra saker som händer efter Heartbleed

OpenSSL får mer donationer som går att granska kodbasen samt så kontrollerar generellt fler ögon OpenSSL efter buggar.

Revokeringen av certifikat ses över då exempelvis Chrome har revokeringskontroll avstängt som standard.

Forward-secrecy eller PFS som det också kallas blir mer använt.

Uppdatering: Bra blogginlägg av Einar Otto Stangvik om hur han gick till väga för att hitta den privata nyckeln.

Granskning av TV-leaks

För några veckor sedan så startade SVT sajten TV-leaks för att underlätta för visselblåsare (skvallrare) att kontakta journalister krypterat. Teknisk leverantör av tjänsten är Bahnhof tillsammans med Wikileaks (källa).

Vi kommer i denna granskning redovisa ett antal olika brister i tjänsten. Önskar du läsa sammanfattningen kan du gå längst ned.

SVT uppger på sin hemsida följande:

Tjänsten består av ett webbformulär där det går att posta dokument, filmer eller bilder. På SVT finns två mottagardatorer, inlåsta i skåp som endast utvalda medarbetare har tillgång till. Servrarna ligger i ett skyddat bergrum och informationen är hårt krypterad.

Tittar vi mer noggrant så återfinnes tjänsten under domännamnet tvleaks.se och går att nå via http eller https. Vi rekommenderar att enbart https används, för http-versionen öppnar upp för angrepp.

Så här ser det ut med omredigeringen om vi besöker tjänsten okrypterat via http:

TV-LEAKS

Analys av https på tv-leaks

tvleaks https A-

Om vi kör tvleaks.se genom testet som SSL Labs tillhandahåller så får tjänsten betyget A-. Att man ej får fullt betyg (A) är för att tvleaks ej använder sig av PFS (forward secrecy) när det gäller referenswebbläsararen som SSL Labs använder sig av.

Vad betyder detta säkerhetsmässigt då? Jo, om någon kan komma över privata nyckeln genom fysisk tillgång till servern eller via intrång så är det möjligt att återskapa den krypterade informationen i efterhand.

Utfärdare av SSL-certifikatet är thawte och man använder sig av ett s.k. Extended Validation (EV) certifikat vilket kan inbringa mer förtroende.

Servern använder 2048 bitars RSA-nyckel och är giltigt från fredag 13 december 2013 kl. 01:00:00 till måndag 14 december 2015 kl. 00:59:59.

Traceroute

Enligt traceroute så är servern troligtvis placerad i Stockholm:

  • mmo-cr1.sto-cr1.bahnhof.net (85.24.151.155)
  • sto-cr1.thu-dr1.bahnhof.net (85.24.151.207)
  • h-253-14.a139.corp.bahnhof.se (5.150.253.14)

Och IP-adressen tillhör av Bahnhof:

Screen Shot 2014-02-24 at 13.22.47

Domännamnet tvleaks.se

Ägare av domännamnet tvleaks är Thomas P. hos SVT och som registrar används Groth & Co. Tittar vi med .SE DNScheck så ger kontrollen varningar. Namnet registrerades 2013-09-17 och använder sig av tre namnservrar:

  • nserver: ns3.groth.se
  • nserver: ns2.groth.se
  • nserver: ns1.groth.se

Tyvärr har man ej registrerat tv-leaks.se, svtleaks.se eller liknande samt så använder tvleaks ej DNSSEC.

Information som skickas till tvleaks

OpenPGPjsGenom att titta på källkoden på webbsidan så hittar vi en publik PGP-nyckel som skapats med BCPG C# v1.6.1.0. Att just  BCPG använts för att skapa den publika PGP-nyckeln är troligtvis för att SVT utvecklat en egen programmvara i språket C# och som använder programmeringsbiblioteket Bouncy Castle för PGP-dekryptering.

Denna egenutvecklade programmvara används troligtvis på två inlåsta datorer hos SVT (läs ovan).

Den publika PGP-nyckel som används är följande:

-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: BCPG C# v1.6.1.0

mQENBFJgF40BCACo55jBfaiPg9L8YdFTurB1INum85ia/MP2WsCYaPShltM0qKS/
2UNmv/bXp0Nq7SgYvrs4xYRM2A71AONdXnyzMz7zCB5H3i/U3qF7D0eMMyQAhCPK
bMEXxpo96bOhlWyHnjPFVvXUwS/w1xDNRVrYetc9vAPM1kIOOcuABY8LpHLviVTZ
m+RIQ7akOhUmGekdo4vHGAlPJjOE0hJUh34ZG79Vp9vVDMd6O+CAZQMhO/dpp7zg
Y6TsL37q44vX6dyJuRLqPjvWfQLjJXDii/6LHz1+S+ETDC1RXtkJOCOkuvAl7S+T
/Bmu+nrEHDW5KvvlmfS5L8F7hTnVcwYtozkHABEBAAG0AIkBHAQQAQIABgUCUmAX
jQAKCRDQoJAgkU0kul56B/oCDRFETr9GFOi0ur6hsRfzJ9pD6FL+2ZcDFudPLlxH
pG80wbJf6SRkC6xK6KCrph6NBaE4FFMIXtO9fVX9nqrmCENwynv8Um+epXLDZUNU
J9YBzwnQ4l9+KDJ5lpIC0LrzHrZmUvg0/zeqOM9k5fLnHZTGQKSSX7vrEKwi/V49
TerDrPot2uNw+fs7rSyD17egCqIMK/0HVQcR4/IF/W1GWor8MxGnn7J57y+5fBN7
4AlT8TLEpmH4eZdwikUwgIBb9MPVId1v5RRBtf/gA0J5BBZvzFpe8f+ai+Qg6AYS
kbxcu3GCCDepEPj6NMxUeuIMM3Nzt2RMjsmR5x2KJf36
=CwA4
-----END PGP PUBLIC KEY BLOCK-----

Meddeladen som sedan skickas via formuläret på hemsidan ska krypteras med ovan nyckel och OpenPGP.js, exempel på ett krypterat meddelande:

-----BEGIN PGP MESSAGE-----
Version: OpenPGP.js v.1.20130712
Comment: http://openpgpjs.org

wcBMA9CgkCCRTSS6AQf8CyJZUxF+x+VKOW663mIk6ku12kdocg85k/LT2jRa
QoMwOZVVyEQdzT0ihuOM7MMBYoLunlBBgiBbs828fhZP07UN+EkDN8aYudeM
pvMmxOhGdWCjX2xa1THJreHDKw7q+NCAkrR95oXr82JZqkLeghYpOMrJSdD8
AESqKfpljhPMLh+CQT3WIDFZ7l6vuXegcxeaviGUu2cqP2Rl0Acus1HxhPaw
RV1BJfUxZnCvSPdz4A7D/yti1k++Ab4H7A20TjeMzYX4koguzxO85yqXqf3u
cxKGvGOU2r+5WhdK27YwSY1Xb38ehHhd6G9TZRRqEkOgTwjv9m8LtQrrmYqa
3tKOAbfyQnL3Po5uCJQApLRVYTWrKQfC6VF0VvrlQA4OLdo+SvxhHdxAF3jj
2ABSOOQ3XtKANMtJ+7O0M6p2HJCWAAw8LbmIQmpxUzd5gSayNuVw5nQ2BslT
v8TLWBVEukc2r539kXHQRaqXR1aiv6f/Jhg4XFM6FE+rCxFfNO0RPcoUfWx4
ay8UWrxi0RqXTQ==
=JFg1
-----END PGP MESSAGE-----

När informationen sedan skickas vidare från webbläsaren till servern hos Bahnhof så skickas tyvärr informationen ej krypterad med denna PGP-nyckel som SVT uppger på sidan:

”Meddelanderutan samt dina kontaktuppgifter i formuläret krypteras direkt i webbläsaren.”

Men i verkligheten så krypteras ej kontaktuppgifter till uppgiftslämnaren samt ämnet direkt i webbläsaren, se följande skärmdump då vi testar att skicka över ett meddelande med ”Mitt ämne” som ämne samt ”Mitt namn” som namn:

tv-leaks leaks

Hur kan det ha blivit så här fel? Troligtvis för att enctype=”multipart/form-data” används i formuläret då det finns möjlighet att skicka filer. Webbläsaren skickar då med helt formuläret till servern (testat med Mac OS X och Google Chrome version 32).

PGP-nyckel

Skapades Thu Oct 17 16:59:57 UTC 2013 och är 2048 bitar samt ser bra ut i övrigt (exempelvis RSA exponenten är 65537):

Old: Public Key Packet(tag 6)(269 bytes)
        Ver 4 - new
        Public key creation time - Thu Oct 17 16:59:57 UTC 2013
        Pub alg - RSA Encrypt or Sign(pub 1)
        RSA n(2048 bits) - a8 e7 98 c1 7d a8 8f 83 d2 fc 61 d1 53 ba b0 75 20 db a6 f3 98 9a fc c3 f6 5a c0 98 68 f4 a1 96 d3 34 a8 a4 bf d9 43 66 bf f6 d7 a7 43 6a ed 28 18 be bb 38 c5 84 4c d8 0e f5 00 e3 5d 5e 7c b3 33 3e f3 08 1e 47 de 2f d4 de a1 7b 0f 47 8c 33 24 00 84 23 ca 6c c1 17 c6 9a 3d e9 b3 a1 95 6c 87 9e 33 c5 56 f5 d4 c1 2f f0 d7 10 cd 45 5a d8 7a d7 3d bc 03 cc d6 42 0e 39 cb 80 05 8f 0b a4 72 ef 89 54 d9 9b e4 48 43 b6 a4 3a 15 26 19 e9 1d a3 8b c7 18 09 4f 26 33 84 d2 12 54 87 7e 19 1b bf 55 a7 db d5 0c c7 7a 3b e0 80 65 03 21 3b f7 69 a7 bc e0 63 a4 ec 2f 7e ea e3 8b d7 e9 dc 89 b9 12 ea 3e 3b d6 7d 02 e3 25 70 e2 8b fe 8b 1f 3d 7e 4b e1 13 0c 2d 51 5e d9 09 38 23 a4 ba f0 25 ed 2f 93 fc 19 ae fa 7a c4 1c 35 b9 2a fb e5 99 f4 b9 2f c1 7b 85 39 d5 73 06 2d a3 39 07 
        RSA e(17 bits) - 01 00 01 
Old: User ID Packet(tag 13)(0 bytes)
        User ID - 
Old: Signature Packet(tag 2)(284 bytes)
        Ver 4 - new
        Sig type - Generic certification of a User ID and Public Key packet(0x10).
        Pub alg - RSA Encrypt or Sign(pub 1)
        Hash alg - SHA1(hash 2)
        Hashed Sub: signature creation time(sub 2)(4 bytes)
                Time - Thu Oct 17 16:59:57 UTC 2013
        Sub: issuer key ID(sub 16)(8 bytes)
                Key ID - 0xD0A09020914D24BA
        Hash left 2 bytes - 5e 7a 
        RSA m^d mod n(2042 bits) - 02 0d 11 44 4e bf 46 14 e8 b4 ba be a1 b1 17 f3 27 da 43 e8 52 fe d9 97 03 16 e7 4f 2e 5c 47 a4 6f 34 c1 b2 5f e9 24 64 0b ac 4a e8 a0 ab a6 1e 8d 05 a1 38 14 53 08 5e d3 bd 7d 55 fd 9e aa e6 08 43 70 ca 7b fc 52 6f 9e a5 72 c3 65 43 54 27 d6 01 cf 09 d0 e2 5f 7e 28 32 79 96 92 02 d0 ba f3 1e b6 66 52 f8 34 ff 37 aa 38 cf 64 e5 f2 e7 1d 94 c6 40 a4 92 5f bb eb 10 ac 22 fd 5e 3d 4d ea c3 ac fa 2d da e3 70 f9 fb 3b ad 2c 83 d7 b7 a0 0a a2 0c 2b fd 07 55 07 11 e3 f2 05 fd 6d 46 5a 8a fc 33 11 a7 9f b2 79 ef 2f b9 7c 13 7b e0 09 53 f1 32 c4 a6 61 f8 79 97 70 8a 45 30 80 80 5b f4 c3 d5 21 dd 6f e5 14 41 b5 ff e0 03 42 79 04 16 6f cc 5a 5e f1 ff 9a 8b e4 20 e8 06 12 91 bc 5c bb 71 82 08 37 a9 10 f8 fa 34 cc 54 7a e2 0c 33 73 73 b7 64 4c 8e c9 91 e7 1d 8a 25 fd fa 
                -> PKCS-1

Övrigt

Länken för att läsa mer om tjänsten fungerar ej, den länkar till svt.se/tvleaks och ger ett 404-felmeddelande. Även så fungerar ej länken där SVT uppger att man kan läsa mer om vad man ska tänka på när man tipsar SVT.

Och om du inte har läst varför man ej bör använda JavaScript-kryptering så läs denna utmärkta artikel av Matasano.

jQuery version v1.6.1 används samt OpenPGP.js v.1.20130712. Severn uppger att det är opertivsystemet Ubuntu med webbservern Apache/2.2.22 och PHP/5.3.10-1ubuntu3.9.

Bra är att inga externa anrop genom exempelvis javascript genomförs. Detta genomförde bl.a. Poosty som vi testat tidigare. Google Analytics är populärt att använda men äventyrar säkerheten.

Ingen mailpekare hittas och ingen information i archive.org. Även så bör HSTS användas, speciellt med tanke på att http vidarebefodras till https.

Inga cookies identifierades.

Sammanfattning

Säkerheten har en bra nivå men kan bli bättre. En eventuell angripare kan kombinera att PFS ej används samt att all information ej krypteras med hjälp av PGP så kan meddelanden återskapas.

Ingen granskning av tredje part verkar ha genomförts. Detta är så klart något som rekommenderas. Även att genomföra aktiva attacker vilket är något som vi ej genomfört.

Vi har givetvis kontaktat SVT innan publiceringen av denna granskning och problemen som identifierats är åtgärdade eller delvis åtgärdade.

Diverse kryptonytt: iPhone, WEP, Tor, PFS, OpenPGP JavaScript

Här kommer en kortare länksammanfattning om det som vi twittrat om på sistone:

McAfee släpper topp 10 säkerhetstips för iPhone. Ladda hem PDF här.

Säkerhetsföretaget Immunity med före detta NSA-anställde Dave Aitel som grundare släpper ett verktyg som underlättar angrepp via WiFi med hjälp av WEP. Video hittar du här.

Tor berättar på sin blogg hur du kan använda Amazon EC2 för att köra din egen Tor-bridge i ”molnet”. Se även Tor Cloud sidan.

Google börjar att använda elliptiska kurvor för att skydda trafik via HTTPS. Mer specifikt så använder de ECDHE och RC4 vilket också möjliggör PFS eller (perfect) forward secrecy. Google har även bidragit till att OpenSSL-biblioteket stöder detta, se här.

Bruce Schneier som talade på konferensen Internetdagarna i veckan tipsar även om en gratis kryptokurs på Stanford.

Slashdot tipsar om att OpenPGP nu finns implementerat i JavaScript vilket gör det möjligt att köra i webbläsaren på godtycklig webbsida. Ett bra exempel är att använda tillsammans med webbmail såsom Google Mail. Implementationen går under namnet GPG4Browsers. Även så har SecWorks skrivit utförligare om detta.