Warning: Missing argument 2 for wpdb::prepare(), called in /home/stromber/public_html/kryptoblog/wp-content/plugins/wp-super-edit/wp-super-edit.core.class.php on line 109 and defined in /home/stromber/public_html/kryptoblog/wp-includes/wp-db.php on line 1222
Inbyggda system » Kryptoblog

Archive for the ‘Inbyggda system’ category

Test av mobilkrypton (och vem kan man lita på).

February 1st, 2010

Mobilemag har en artikel om ett test av krypton för att skydda röstkommunikation från mobiler.

Den undersökning artikeln beskriver har utförts av en bloggare och IT-expert som tydligen kallas Notrax. På Notrax blog InfoSecurityGuard finns de egentliga undersökningarna.

Att det finns behov av bra kryptolösningar som erbjuder konfidentialitet från mobiler är helt klart. Dels är de befintliga mekanismerna i såväl GSM som 3G (UMTS) starkt ifrågasatta. Dessutom skyddar dessa mekanismer bara radiolänken. Det finns ett flertal produkter på marknaden som alla (naturligtvis) säger sig erbjuda ett bra skydd. Men hur bra är dom egentligen?

Att döma av Notrax test av 15 olika program- och hårdvarubaserade produkter är dom inte speciellt bra. Han lyckades knäcka 12 av 15 produkter:
Bild på de testade mobilkryptona.

Svenska Sectras produkt Tiger XS är tyvärr inte med i undersökningen.

Går man sedan in på Notrax sidor finns det detaljerande beskrivningar av hur han ex knäckte CellCrypt och undersökte PhoneCrypt. Notrax har även gjort videoinspelningar av sina undersökningar och lagt upp på Youtube, här den om CellCrypt:

Sammantaget väldigt intressant och spännande information. Men nu visar det sig (ser det ut som) att Notrax arbetar för företaget SecurStar GmbH som levererar PhoneCrypt, en av de säkerhetsprodukter Notrax inte lyckas knäcka och ger bra betyg! Jösses.

Vem skall man lita pÃ¥? Antagligen inte de produkter Notrax lyckades knäcka (fast det vore bra om nÃ¥gon mer gjorde om testerna och kom fram till samma sak). Klart är iaf att produkterna behövs – och att dom testas.

Mer om GSM-attacken

December 30th, 2009

Det verkar aldrig ta slut på uppmärksamheten kring Karsten Nohls attack på A5/1 (se tidigare bloggpostning ett och bloggpostning två). I dag har Sveriges Radio och Ekot plockat upp tråden och jösses vilket reportage det blev.

Ekots bild till artikeln.

Egentligen är Per Eurenius reportage (webbradio) från 26C3 i Berlin inte så illa, utan det är snarare påannonseringen och SRs nyhetstext som är tokfel:

Hemlig gsm-kod hackad av forskare

En tysk forskare har lyckats avslöja den kod som ska skydda mobiltrafiken i världens största telefonsystem, gsm.

Nej, SR, det är ingen kod som avslöjats, och det är inte hemligt.

Även Cryptome har uppdaterat sitt material In support of Karsten Nohl’s cracking of GSM A5 och den här sidan hos Cryptome är nog den mest kompletta samlingen av information om A5-krypton, säkerhet (eller avsaknad därav) i GSM, GPRS och UMTS.

För den som vill ha Karstens regnbågstabeller finns det nu torrentfiler.

Regnbågstabeller för A5/1

December 11th, 2009

Det har varit en del uppmärksamhet om Karsten Nohls A5/1-projekt. IEEE Spectrum hade en bra artikel som sedan bla ledde till en artikel i Elektroniktidningen här i Sverige.

Karsten Nohl
Karsten Nohl från en tidigare attack på RFID.

Vad det hela handlar om är att Karsten Nohl (bland annat) har bestämt sig för att generera regnbågstabeller för GSM-kryptot A5/1.

Då A5/1 använder en 64-bit nyckel skulle en ren tabell ta upp 128 Petabyte och att generera tabellen med en CPU skulle ta hundatusentals år. Karsten & Co löser dessa båda problem genom att koda/komprimera samt använda GPU:er programmerade med CUDA för att parallellisera beräkningarna.

Det finns en presentation av Karsten Nohl från HAR 2009 om projektet som mer i detalj beskriver tabellkomprimeringen samt hur GPU-accelerationen går till.

Syftet bakom projektet så som det anges i presentationen är att det sedan 1994 publicerats ett antal attacker på A5/1-algoritmen, men trots detta finns det ingen publik exploit eller publikt presenterad praktiskt genomförd attack. Det Karsten vill åstadkomma är därför att ta fram en sådan praktisk attack för att visa att A5/1 verkligen är osäkert, inte bara i teorin (eller om man heter NSA.).

Om du vill följa utvecklingen i projektet finns det en Trac-sida för A5/1-projektet som innehåller statusuppdateringar, kod etc.

Det Karsten hoppas skall ske är att GSM går över till A5/3 (baserat på kryptot Kasumi), vilket används i 3G. Frågan är dock om det kommer att ske. Med flera miljarder med användare kommer det att finnas en enorm mängd mobiler som fortsätter köra A5/1 i många år framöver.

En annan viktig sak att komma ihåg är att oavsett om det är A5/1 eller A5/3 som används är det bara mellan din mobil och basstationen ditt samtal är skyddat. Vill du lita på att ditt samtal inte avlyssnas från dig till den du kommunicerar med bör du betrakta den kanal operatören tillhandahålla och vidta de åtgärder du tycker behövs.

Säkerhet vid byte av bilnyckel

November 3rd, 2009

För ett tag sedan började en av de elektroniska nycklarna till vår bil (SAAB 9-3) att krångla. Ibland fungerade den, ibland inte.

Som ägare kan man själv öppna nyckeln och byta batteri, detta hjälpte dock inte så det var inte ett kasst batteri, utan kass elektronik. Samtidigt som man byter batteri kan man titta på vad som borde vara ett KeeLoq-chip.

En trasig elektronisk nyckel ersätts med en ny som behöver paras ihop med bilen med hjälp av en programmeringsenhet de har på verkstaden. Så långt allt väl, men nu kommer det som gjorde mig förvånad: När detta sker måste alla andra elektroniska nyckar vara med, annars kommer de att sluta fungera.

Jag inbillade mig att bilens chip innehöll en accesslista. När den nya nyckeln skall paras ihop med bilen läggs nycklens ID in i listan och den gamla nycklens ID plockas bort. Men tydligen är det inte så det fungerar.

En servicetekniker hävdade att detta förfarande var för att det skulle vara säkrare, vilket jag har svÃ¥rt att se varför. Han tänkte sig tydligen situationen när en nyckel har tappats bort – men det är ett helt annat användningsfall – här finns den gamla nyckeln kvar sÃ¥ vilken nyckel som skall plockas bort frÃ¥n en accesslista kan inte vara bekymret.

Kan du som läser detta komma på en bra anledning till att behöva para ihop alla nycklar igen med bilen när en nyckel skall ersättas?

Det enda jag kan komma på är att det finns en gemensam gruppnyckel och därmed ingen accesslista. Om jag fattat Keeloq rätt skall dock alla enheter ha ett unikt ID och därmed möjlighet för accessliste-baserad säkerhet.

Dessutom är det så att det finns en fysisk nyckel i den elektroniska som gör att man iaf kan öppna förardörren på gammalt mekaniskt sätt. Och dessa nycklar är inte unika, utan det är samma nyckel i alla de som hör till en bil.

KBMs ypperliga rapport om säkerhet för SCADA-system

September 15th, 2009

Förra året släppte Krisberedskapsmyndigheten (KBM, numera en del av MSB) en ypperlig rapport om säkerhet för industriella kontrollsystem, även kallade SCADA-system. Rapporten är indelad i tre stora delar.

Den första delen innehåller en definition av vad SCADA system är och vad som skiljer denna typ av system från exempelvis ett administrativt IT-system. Andra saker som tas upp är var SCADA-system finns, hur de används och behovet av skydd.

Den andra delen innehåller en detaljerad beskrivning av rekommendationer och riktlinjer. Efter att ha presenterat PDCA-modellen kommer en genomgång av 15 olika aktiviteter och en av rapporten styrka tycker jag är att varje aktivitet innehåller ett bra, enkelt förklarande exempel på de risker och problem varje aktivitet behandlar. Mitt i allt det komplexa och teoretiska finns alltid ett exempel som visar att det inte behöver vara så krångligt.

PDCA-modellen.
PDCA-modellen.

Den tredje delen är en extensiv referenslista över relevanta standarder. Men denna del är inte bara ett appendix, utan varje referens åtföljs av kommentarer som förklarar vad respektive standard och dess delar behandlar och är till för.

Rapporten, framtagen av Åke J. Holmgren (KBM-SEMA), Erik Johansson (KTH) and Robert Malmgren kan med fördel läsas av såväl beslutsfattare som tekniska chefer satta att ansvara för att skydda SCADA-system och tekniker som implementerar skyddet.

Att en svensk myndighet tar fram en sådan här bra rapport gör mig riktigt glad. Heja KBM!

Cellautomatbaserad slumptalsgenerator på OpenCores

September 1st, 2009

I början av 2009 släppte vi på InformAsic ett hårdvarublock (en IP-core) för en specifik typ av slumptalsgenerator (PRNG) byggd på en cellautomat (CA) med uppdateringsregeln rule30. Vi har nu uppdaterat den konstruktionen och ca_prng är nu en generell CA-baserad PRNG där uppdateringsregeln går att byta ut. Detta gör det möjligt att generera ett stort antal mönster, från vitt brus till vandrande ettor, Pascals triangel m.m.

Samtidigt har vi flyttat konstruktionen och ca_prng finns nu på OpenCores. OpenCores är en webbplats för hårdvarukonstruktionsprojekt tillhandahållna som öppen kod. Licensen vi använder är dock fortsatt BSD och konstruktionen är skriven i Verilog (2001). Vi är glada att bidra till OpenCores och hoppas att ca_prng skall komma till nytta, exempelvis som stimuligenerator vid FPGA-accelererad verifiering av konstruktioner.

Svagheter i SHA-3-implementationer

February 22nd, 2009

Fortify har postat på sin blogg om en undersökning av säkerheten i referensimplementationerna av SHA-3-kandidaterna.

Fortify har använt sitt verktyg Fortify SCA, en linter speciellt utvecklad för att hitta kodmässiga svagheter som buffertöverskrivningar etc. (Det hade antagligen gått bra att använda splint eller liknande säkerhetsinriktade lintverktyg för att hitta svagheterna.)

Vad Fortify upptäckt är att ett antal av SHA-3-kandidaterna har mer eller mindre allvarliga svagheter i sin implementation, mer specifikt i Blender, Crunch, FSB, MD6, Vortex. Några typiska fel är att koden tillåter buffertöverskrivningar, att den läser utanför gränserna i en buffert (indexeringsfel) och minnesläckage. Som ett exempel tar Fortify upp MD6:


One of the projects with buffer issues was MD6, the implementation provided Professor Ron Rivest and his team. All of the problems came back to the hashval field of the md6_state struct:

unsigned char hashval[ (md6_c/2)*(md6_w/8) ];

The buffer size is determined by two constants:

#define w md6_w /* # bits in a word (64) */ #define c md6_c /* # words in compression output (16) */

At several points, this buffer is read or written to using a different bound:

if (z==1) /* save final chaining value in st->hashval */ { memcpy( st->hashval, C, md6_c*(w/8) ); return MD6_SUCCESS; }

Further analysis showed that ANSI standard layout rules would make incorrect behavior unlikely, but other compilers may have allowed it to be exploited. The MD6 team has doubled the size of the vulnerable buffer, which eliminated the risk. In this case, Fortify SCA found an issue that would have been difficult to catch otherwise.

The other buffer overflow was found in the Blender implementation, from Dr. Colin Bradbury. This issue was a classic typo:

DataLength sourceDataLength2[3];// high order parts of data length ... if (ss.sourceDataLength < (bcount | databitlen)) // overflow if (++ss.sourceDataLength2[0] 0) // increment higher order count if (++ss.sourceDataLength2[1] 0) // and the next higher order ++ss.sourceDataLength2[3]; // and the next one, etc.

The developer simply mistyped, using 3 instead of 2 for the array access. This issue was probably not caught because it would not be exposed without a very large input. The other issues we found were memory leaks and null dereferences from memory allocation.

Att den här typen av programmeringsfel kan få betydelse för SHA-3-tävlingen är uppenbart, och illustreras tydligt med MD6. Dess internbuffert behövde dubbleras i storlek. Detta gör att implementationer av MD6 för inbyggda system kommer att kräva mer minnesresurser än vad tidigare angetts. En av styrkorna med MD6 enligt dess skapare är att den skalar extremt bra ner till mycket små implementationer, och det argumentet fick sig nu nog en liten törn.

Ett annat skäl till varför jag tycker att Fortifys undersökning är bra är att referensimplementationer ofta används i applikationer. Antingen direkt eller som bas (funktionell referens) för en ny implementation. Därmed riskerar svagheter i referensimplementationen att sprida sig. Fortify tar själva upp ett exempel från en svaghet i referensimplementationen av RSA som lett till buggar i olika SSL-implementationer.

I fallet SHA-3, med dess fokus på prestanda, vilket gjort att skaparna av kandidater slitit och sliter med att optimera ut varenda cykel de kan ur sin kod, tror jag att referensimplementationer kommer att få stor användning i applikationskod.

Skydd av FPGA-konstruktioner med PUF:ar

September 29th, 2008

F̦r ett tag sedan skrev jag om olika tekniker f̦r att stoppa kloning av konstruktioner. En av dessa byggde p̴ PUF:ar РPhysically Unique Functions utvecklade av f̦retaget Verayo.

I samband med det hittade jag artikeln Offline HW/SW Authentication for Reconfigurable Platforms om att använda PUF:ar för att skydda FPGA-konstruktioner. Jag undrade då hur det gick att implementera PUF:ar i en så kontrollerad och reglerad struktur som i en FPGA. Jag hade artikeln sum lunchläsning och vet nu lite mer. Och jag är rätt besviken.

Problemet författarna försöker lösa är att hindra att inköpt SW som exekveras på en processor implementerad i en FPGA kopieras. Själva processorn och annan HW implementerad i FPGA:n skyddas genom krypterad konfigurationsfil. Men SW lagrad i externt minne har inte samma skydd. Författarna skriver:


A hardware platform, designed by a System Developer, will be configured into an FPGA. The System Developer will also use third-party software IPs that execute on top of the platform. The System Developer can apply bitstream encryption to protect the hardware configuration in the FPGA, but an additional hardware-software authentication mechanism is needed to protect the software IPs.

Det är alltså inte systemutvecklarens väl och ve man avser att skydda utan leverantören av programvarukomponenten. Och tricket är att implementera en PUF i FPGAn. Alltså att FPGA-leverantören bygger in en PUF, inte att FPGA:n struktur används för att implementera en PUF. Dvs deras sjyddar inte SW implementerade i system på dagens FPGA:er, utan kräver att FPGA-leverantörerna bygger in en PUF-funktion i sina kretsar.

Då den föreslagna metoden innebär ökade produktionskostnader för karaktärisering av varje FPGA, samt att FPGA-leverantören skall skicka upp information om alla tillverkade kretsar på en server låter detta inte speciellt troligt.

Och när författarna testat sitt nya protokoll har dom inte ens använt en riktig PUF-modell:


We have not yet built a PUF implementation, but have simulated its behavior using another AES block with a fixed key.

En riktigt usel och irriterande artikel. Tur att min lunchlåda var extra smaskens. Dessutom hade jag en annan, mycket bättre artikel att läsa. Mer om den senare.

AES-implementationer för C64

August 30th, 2008

Daniel Kahlin heter en kreativ person som kodar algoritmer för 6502-processorn och gamla brödburken C64.

Daniel Kahlin

Flera av algoritmerna Daniel implementerat är relaterade till säkerhet. Bland annat har han som en del i ett antal Crack Me!tävlingar implementerat AES128 i assemblerkod för 6502 med olika kryptomoder. Electronic CodeBook Mode (ECB-mod) och Cipher Feedback Mode (CFB-mod).

Källkoden för implementationerna finns på sidorna och är lättläst och snygg. En intressant detalj är att Daniels kod räknar fram S-boxen samt och den tabell som används för att göra GF-multiplikationen i MixColumns-steget av AES.

Att döma av diskussionen kopplad till den utmaning där ECB-mod användes utnyttjade Ymgve Google för att söka på innehållet i S-boxen och den vägen identifiera AES. Ett snygg trick som visar att den som utför attacken inte alltid tar den väg man tror.

Ett annat program gör statistisk analys för att attackera enklare skiffer på C64. Imponerande att få till det på burken med dess beräkningar.

Daniel har även hackat en del andra fräcka program, bla en tracker till VIC-20 kallad VIC-TRACKER. Eftersom jag inte har någon gammal VIC-20, och är rätt kass på att använda trackers vet jag inte hur bra den är. Men bilden på trackerns sida är helt fantastisk:

VIC-TRACKER 2.0
Klockren annons (ett montage) från 80-talets början. Hela familjen samlas i värmen från sin fantastiska hemdator. Mycket nostalgi blir det.

Nyckelutbyte genom jonglering

July 16th, 2008

(Fixat trasig länk – tack JörgenL.)

På Light Blue Touchpaper, bloggen från säkerhetsguppen vid Cambridge Computer Laboratory har det dykt upp en intressant postning om ett nytt sätt att utföra lösenordsbaserad nyckelutbyte.

Lösenordsbaserad nyckelutbyte (Password Authenticated Key Exchange – PAKE) är en metod för att utbyta sessionsnycklar för säker kommunikation mellan parter baserad pÃ¥ lösenord (delad hemlighet). De tvÃ¥ mest kända versionerna av PAKE är Encrypted Key Exchange – EKE och Simple Password Exponential Key Exchange – SPEKE.

Artikeln Password Authenticated Key Exchange by Juggling är skriven av Feng Hao och Peter Ryan. Artikelns sammanfattning förklarar nyttan med J-PAKE:


Password-Authenticated Key Exchange (PAKE) studies how to establish secure communication between two remote parties solely based on their shared password, without requiring a Public Key Infrastructure (PKI). Despite extensive research in the past decade, this problem remains unsolved. Patent has been one of the biggest brakes in deploying PAKE solutions in practice. Besides, even for the patented schemes like EKE and SPEKE, their security is only heuristic; researchers have reported some subtle but worrying security issues. In this paper, we propose to tackle this problem using an approach different from all past solutions.

Our protocol, Password Authenticated Key Exchange by Juggling (J-PAKE), achieves mutual authentication in two steps: first, two parties send ephemeral public keys to each other; second, they encrypt the shared password by juggling the public keys in a verifiable way. The first use of such a juggling technique was seen in solving the Dining Cryptographers problem in 2006. Here, we apply it to solve the PAKE problem, and show that the protocol is zero-knowledge as it reveals nothing except one-bit information: whether the supplied passwords at two sides are the same.

With clear advantages in security, our scheme has comparable efficiency to the EKE and SPEKE protocols.

Jonglering
(Jonglering med nycklar – om din nyckel heter som ditt husdjur…)

Artikeln innehÃ¥ller en hel del referenser till koncept och metoder jag inte kände till innan, exempelvis Dining Cryptographers. (Det verkar pÃ¥gÃ¥ verksamhet pÃ¥ Wikipedia för att skriva om förklaringen av problemet – se den här och den här sidan.)

Implementationsmässigt verkar den nya metoden inte vara så hemsk. Författarna skriver:


Since our protocol involves several zero-knowledge proofs, one might concern about its cost. We now count the number of exponentiations in the protocol and evaluate its computational effciency..in our protocol, each party would need to perform 14 exponentiations in total – including 8 in the first step, 4 in the second step, and 2 in computing the session key.

To better assess the cost in real terms, we implement the protocol in Java on a 2.33-GHz laptop running Mac OS X. The modulus p is chosen 1024-bit and the subgroup order q 160-bit
...
The results demonstrate that the protocol – executed only once in a session – runs sufficiently fast. The total computation time is merely 0.075 sec. As compared to the time that the user keys in his password, this latency is negligible at the client.

However, the cost at the server may accumulate to be significant if requests are dealt with simultaneously. Therefore, the threat of Denial of Service (DoS) attacks still needs to be properly addressed in practical deployments.

Vad gäller säkerheten skriver författarna att:


EKE requires changing the protocol in its existing form for a secure implementation. As for a SPEKE, it has the drawback that an active attacker may test multiple passwords in one protocol execution. Furthermore, neither protocol – in the original form – accommodates short exponents securely. Finally, neither protocol is provably secure; formal security proofs seem unlikely without introducing new security assumptions or relaxing security requirements.

We choose to solve the PAKE problem using a different approach. The novelty of our design is that we encrypt the password by juggling the public keys in a way that can be verified. As a result, our scheme is provably secure, allows flexible use of short exponents, and strictly limits an active attacker to test only one password per protocol execution.

För ett tag sedan blev Java-koden till implementationen av J-PAKE tillgänglig. Jag har inte testat den själv. Intressant nog kallas den för JPAKE2, vilket skulle kunna betyda att det funnits en tidigare version av algoritmen som man av någon anledning inte var nöjd med.

Författarna har även skickat in J-PAKE som förslag till en framtida utökning av IEEE P1363.

När J-PAKE uppmärksammades på Cyptography-listan dök det upp referenser till en annan, ny PAKE-algoritm. Det finns en Internet Draft, EAP Authentication Using Only A Password som tydligen är under utvärdering av IEEE för den kommande WLAN-standarden 802.11s.

Bra och enkla och allmänt tillgängliga metoder för nyckelutbyte är klart intressant. Med två stycken nya, säkra och ej patenterade utan öppna algoritmer kanske PAKE kan få bättre spridning. Inte minst för inbyggda system är J-PAKE klart intressant.