Taggat med: elliptiska kurvor

NSA varnar för kvantdatorer

NSA Kvantdatorer

Eller rättare skrivet så gick den amerikanska myndigheten NSA ut för några dagar sedan och varnade för att många av nutidens algoritmer som används bör uppgraderas för att motstå beräkningar utförda av kvantdatorer.

Det rör framförallt RSA där nyckelstorlekar  är under 4096 bitar, men även elliptiska kurvor kan ligga dåligt till eftersom en variant av Shors algoritm kan användas. Eller som NSA uttrycker det:

Minimum 3072 bit-modulus to protect up to TOP SECRET.

Intressant också är gällande hashalgoritmer så rekommenderas minst SHA384, vilket i praktiken innebär SHA512.

Nu innebär detta inte att alla måste byta över en natt utan NSA rekommenderar att leverantörer slutar att leverera och tillverka produkter eller mjukvaror som implementerar algoritmer som ej kan motstå beräkningar utförda av kvantdatorer.

Och förutom RSA och SHA så rekommenderas ECDH (Elliptic Curve Diffie–Hellman) med med minst 384 bitar.

Personligen så föredrar jag Curve25519 av Daniel J Bernstein etc, se SafeCurves. Bitcoin exempelvis använder sig av secp256k1.

The RSA-2048 Challenge Problem would take 1 billion years with a classical computer. A quantum computer could do it in 100 seconds

– Dr. Krysta Svore, Microsoft Research

Uppdatering: Obs Curve25519 hjälper inte mot beräkningar utförda av en kvantdator.

Facebook + PGP = ❤️

Facebook PGP

Facebook stödjer nu att du kan ladda upp din publika nyckel till din Facebook-profil. Då kommer Facebook att använda denna nyckel när de skickar ut meddelanden via E-post.

Och som ovan bild visar så förhindrar detta även om ditt E-postkonto skulle bli kapat (men du använder väl tvåfaktorsautentisering också?).

Behöver ditt företag hjälp med IT-säkerhet eller kryptering? Kontakta Triop AB >

Detta är så klart ett bra uppsving för hela PGP och web of trust och detta märks tydligt då flertalet nyckelservrar såsom pgp.mit.edu svarar långsamt idag eller är helt nere. En tydlig koppling mellan din Facebook-profil och nyckel stärker förtroendet, lite åt det håll som tjänsten Keybase är tänkt.

För att bekräfta att din publika PGP-nyckel så skickar Facebook även ut ett krypterat verifieringsmail med en länk som du måste klicka på för att funktionen ska aktiveras.

Om du vill ladda hem någons publika PGP-nyckel så kan du göra det enligt följande exempel på URL:

https://www.facebook.com/facebookalias/publickey/download

Facebook PGP

Här laddar du upp din publika nyckel:

https://www.facebook.com/me/about?section=contact-info

Facebook själva använder en nyckel med följande fingerprint:

31A7 0953 D8D5 90BA 1FAB 3776 2F38 98CE DEE9 58CF

och denna subkey fingerprint:

D8B1 153C 9BE9 C7FD B62F 7861 DBF4 E8A2 96FD E3D7

Och Facebook kommer att stödja RSA och ElGamal men undersöker huruvida de även kan stödja elliptiska kurvor (ECC). Obligatorisk XKCD:

XKCD PGP

Tips! Gillade du att läsa detta? Kolla även in: Facebook finns nu på Tor

GnuPG 2.1

Efter fyra år av beta-testande så har nu äntligen den stabila utgåvan av PGP-programvaran GnuPG 2.1 släppts.

Denna nya version stödjer bl.a. elliptiska kurvor (ECC). ECC kan då exempelvis användas för sub-nycklar eller signering. Framöver kommer standard att bli Bernsteins Curve 25519 men stöd för andra ECC-typer finnes (se nedan).

Även så har stödet för PGP-2 helt skrotats då detta är förlegat (använder bl.a. MD5).

Vill du skapa nycklar med elliptiska kurvor gör du enligt följande:

$ gpg2 --expert --full-gen-key
gpg (GnuPG) 2.1.0; Copyright (C) 2014 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
   (7) DSA (set your own capabilities)
   (8) RSA (set your own capabilities)
   (9) ECC and ECC
  (10) ECC (sign only)
  (11) ECC (set your own capabilities)
Your selection? 9
Please select which elliptic curve you want:
   (2) NIST P-256
   (3) NIST P-384
   (4) NIST P-521
   (5) Brainpool P-256
   (6) Brainpool P-384
   (7) Brainpool P-512
[.. resten bortklippt ..]

Övriga nyheter är förbättrat stöd för X509-nyckeltyper, förbättrad hantering av nyckelservrar (dock ej över TLS ännu). En annan trevlig säkerhetshöjande nyhet är gpg-agent som nu hanterar din privata nyckel och således behöver ej gpg eller gpgsm känna till denna, dock finns viss bakåtkompatibilitet kvar.

Och som vanligt kan du läsa mer om GnuPG 2.1 ”modern” på gnupg.org.

Övrig intressant kuriosa: Vill du ej skicka hela din PGP-nyckellista i klartext över nätverket med kommandot gpg –refresh-keys så bör du snegla på parcimonie.

Ny End-to-End kryptering från Google

Google End to EndGoogle har nu lanserat ett Chrome-plugin som möjliggör PGP-kryptering direkt i webbläsaren med hjälp av OpenPGP. Pluginet går under namnet End-to-End och medger kryptering hela vägen från webbläsaren till slutdestinationen. Observera att det ännu bara är en alfaversion.

Än så länge finns ej pluginet tillgängligt via Chrome Web Store. Det går enbart att ladda hem som källkod via code.google.com och detta för att ge programmerare och bug hunters möjlighet att identifiera eventuella brister innan pluginet släpps till allmänheten.

En av fördelarna med detta plugin är att det gör det lätt för icke datorvana att kryptera information i exempelvis mail som skickas via GMail (Google Mail). Sen kan man alltid ställa sig frågan huruvida PGP bör göras i webbläsaren eller ej.

Förutom kryptering så stödjer även pluginet dekryptering, signering och verifiering.

Övrigt intressant är att om du väljer att skapa ett PGP-nyckelpar via Google End-to-End så kommer Google att skapa ECC-nycklar (elliptiska kurvor) vilket gör att GnuPG 1.X samt 2.0 ej stödjer detta utan mottagande part måste använda GnuPG 2.1 beta/developer.

Skärmdump hur ett krypterat mail skapas med hjälp av End-to-End:

 

Google End-to-end

Finns även några andra menyval:

Screen Shot 2014-06-04 at 08.37.37

Övrigt kan jag även rekommendera att kolla in ProtonMail som är en ny tjänst för end-to-end kryptering:

Källa

GNU Nettle

Pandaboard

Förra året så fick Niels Möller på South Pole AB pengar från Internetfonden för att anpassa krypteringsbiblioteket GNU Nettle för inbyggda system.

Målet med projektet var att göra kryptering med hjälp av GNU Nettle mer effektivt för inbyggda system och mobila enheter (framförallt ARM-processorer). De två konkreta delmålen för projektet är:

  • Att implementera digitala signaturer baserade på elliptiska kurvor (ECC). Jämfört med traditionella digitala signaturer med RSA, så ger elliptiska kurvor motsvarande säkerhet med betydligt mindre processortid. Även minnesåtgång, både för själva beräkningen, och för nycklar och signaturer, är betydligt mindre.
  • Att optimera andra viktiga kryptografiska byggstenar, som krypteringsalgoritmen AES och hashfunktionerna SHA1 och SHA256, för ARM-arkitekturen.

Plattformen för testar var en en Pandaboard med en 1 GHz ARM Cortex-A9, och operativsystemet Debian GNU/Linux.

Här kan du ladda hem slutrapporten: Slutrapport-GnuNettle-Moller.pdf eller läs mer på Internetfonden.se.

Har du ett projekt som söker finansiering? Kanske inom krypteringsområdet? Varför inte söka pengar från Internetfonden. Sista ansökningsdag är 11:de September 2013.

Så knäcker du BitCoin

BitCoin är byggt med hjälp av ett antal olika algoritmer. Dessa algoritmer är skapade för att försvåra det som kallas för BitCoin-mining samt så används dem även för verifiering av BitCoins. Eventuella sårbarheter skulle ej resultera i att det går att skapa fiktiva pengar eftersom detta ligger i den decentraliserade strukturen (peer-to-peer).

De algoritmer som används är SHA-256 samt  RIPEMD-160 men även elliptiska kurvor (EC DSA) och mer specifikt secp256k1. Secp256k1 kommer från den öppna standarden SEC2 (läs även här).

När någon ska överföra BitCoins till en annan person så används ECDSA:

Alice signerar transaktionen med sin privata nyckel och publicerar denna signatur för andra på  Bitcoin-nätverket att kontrollera med sin publika nyckel

Dock så signeras enbart en hash av meddelandet pg.a. prestanda. För denna hash så används SHA-256 på följande sätt:

template<typename T1>
inline uint256 Hash(const T1 pbegin, const T1 pend)
{
    static unsigned char pblank[1];
    uint256 hash1;
    SHA256((pbegin == pend ? pblank : (unsigned char*)&pbegin[0]), (pend - pbegin) * sizeof(pbegin[0]), (unsigned char*)&hash1);
    uint256 hash2;
    SHA256((unsigned char*)&hash1, sizeof(hash1), (unsigned char*)&hash2);
    return hash2;
}

Ungefär som PGP så använder Bitcoin publika och privata -nyckelpar för att göra signaturer, men också för att publicera ett fingeravtryck vilket eg. är en RIPEMD-160-hash som gört det möjligt att skicka BitCoins till någon. BitCoin är ännu relativt otestat och svagheter eller implementationsbrister uppdagats kontinuerligt i BitCoin och här kan du läsa om en intressant uppdatering.

Så om du vill knäcka BitCoin så är det förfarande som skapar nya BitCoins det lättaste sättet i dagsläget. Ett antal metoder har publicerats och här hittar du en.

Uppdatering: Finurligt sätt att använda JavaScript för att låta webb-besökare söka efter BitCoins. Om Aftonbladet.se eller en annan stor sajt lägger in denna JavaScript-kod så kommer de att vinna lotteriet.