Archive for the ‘Hårdvara’ Category

En ny attack mot KeeLoq

Thursday, February 14th, 2008

Det har dykt upp än ny attack mot KeeLoq.

I höstas blev det en hel del uppmärksamhet om den attack som Biham & Co lyckades genomföra mot kryptot i KeeLoq. Jag postade flera gånger om denna attack, bland annat om att KeeLoq-användaren Volvo noga följde utvecklingen.

KeeLoq-bild

KeeLoq är alltså en krets från Microchip som används i trådlösa autenticieringsmekaniser och KeeLoq är väldigt vanlig i trådlösa lås på bilar, speciellt dyrare bilar exempelvis från Jaguar och Volvo.

Det Biham & Co visade var att det finns fundamentala brister i kryptomekanismerna som gör att det går att räkna ut nycklar, både enskilda nycklar och de huvudnycklar som används i samtliga bilar av en viss modell. Den här attacken krävde inte heller årtionden av beräkningstid, utan går så fort att man bör kunna anse attacken som praktiskt genomförbar.

Och som det brukar vara i sådana här sammanhang - hittar någon en brist, ett fult sår och varböld dyker det raskt upp fler som vill dit och peta och rota. Eftersom någon visat att det finns något värt att publicera och få uppmärksamhet kring finns det säkert mer att gräva fram och få del av uppmärksamheten. Liknande beteende tycker jag mig bla se vad gäller attacker mot hashfunktioner.

Några som inte tvekade att peta på KeeLoq är Thomas Eisenbarth, Timo Kasper, Amir Moradi, Christof Paar, Mahmoud Salmasizadeh och Mohammad T. Manzuri Shalmani. Vad de upptäckte var att det finns problem med inte bara de bakomliggande algoritmerna hos KeeLoq, utan det brister även i implementationen. Mer specifikt finns det brister som öppnar upp för sidoattacker.

Deras artikel Physical Cryptanalysis of KeeLoq Code Hopping Applications beskriver det här:

Recently, some mathematical weaknesses of the KeeLoq algorithm have been reported. All of the proposed attacks need at least $2^{16}$ known or chosen plaintexts.

In real-world applications of KeeLoq, especially in remote keyless entry systems using a so-called code hopping mechanism, obtaining this amount of plaintext-ciphertext pairs is rather impractical.

We present the first successful DPA attacks on numerous commercially available products employing KeeLoq code hopping. Using our proposed techniques we are able to reveal not only the secret key of remote transmitters in less that one hour, but also the manufacturer key of receivers in less than one day. Knowing the manufacture

(Notera att artikeln ligger på IACR och den behöver därmed inte varit granskad.)

Författarna skriver om tidigare presenterade attacker mot KeeLoq att:

To our knowledge, most of the commercial implementations of KeeLoq as a remote keyless entry system employ the code hopping mechanism. Thus, the described attacks are not considered as a big threat for their security.

Artikeln beskriver två olika attacker. Båda attackerna bygger på att man mäter förändringar i strömförbrukningen som en effekt av att kretsarna utför sina KeeLoq-operationer.

In 1999, Kocher et. al [5] proposed several methods for analyzing the information leakage of implementations of security related systems. The most powerful attack in this area is called DPA (Differential Power Analysis) and exploits power consumption traces of cryptographic hardware to reveal confidential information.

Almost ten years later, DPA remains an attack mostly performed in smart card evaluation labs and universities, only targeting their own known implementations.

We introduce two DPA attacks on KeeLoq code hopping systems. The first reveals the secret device key from an integrated circuit that performs the encryption in a transmitter. The second attack is executed on the receiver to recover the manufacturer key from a software implementation running on a microcontroller.

För det första artikeln skriver författarna:

By analyzing the power traces, we found out that there is a specific hardware inside the chip to perform the KeeLoq encryption.

We performed this attack on several chips with different part numbers in DIP or SOIC packages. We are able to recover the secret key of KeeLoq encoders in DIP packages from only 10 power traces. Clearly, SOIC packages benefit from a smaller process technology so the power consumption values are smaller than DIP packages. Hence, the SNR (signal-to-noise ratio) is decreased and we need more power traces. Still, at most 50 power traces are sufficient to reveal the secret key of a device in an SOIC package.

Författarna går sedan vidare och visar hur de kan attackera frekvenshoppsmekanismen även i mottagaren. Författarnas slutsats är klar:

lthough some theoretical attacks on the KeeLoq algorithm have recently been reported, none of them is able to break the code hopping systems in a reasonable time. We illustrated the difficulties of those attacks in the presence of different key derivation schemes.

In this paper we presented the first successful practical attacks on KeeLoq code hopping systems. These very effective attacks represent a real practical threat for many commercial applications employing the KeeLoq algorithm.

Alltså attacker mot verkliga implementationer av KeeLoq som går på rimlig tid och fungerar i verkligheten.

Jag hoppas att Volvo inte bara följer detta med intresse, utan även arbetar med att lösa problemet. Det lär nog behövas…

Bakdörr in Atmels CryptoMemory

Thursday, February 14th, 2008

Kretsanalysföretaget FlyLogic Engineering har precis publicerat att man hittat en bakdörr i ett par av Atmels CryptoMemory-kretsar, mer specifikt AT88SC153 och AT88SC1608.

CryptoMemory-chip

Atmels CryptoMemory är ett litet minne med autenticiering och säkerhetsmekanismer avsedda att skydda innehållet i minnet. Tyvärr har det varit lite skralt med informationen om hur säkerhetsmekanismerna egentligen fungerar. Jag har därför varit nyfiken på att få se en analys som visar om kretsarna är säkra eller ej.

Nu visar FlyLogic att minnena inte bara är svaga vad gäller skyddet av minnet mot fysiska attacker, utan att det för ett par av kretsarna även verkar finnas avsiktliga brister. FlyLogic skriver:

Section 5 of the datasheet labled, “Fuses” clearly states, “Once blown, these EEPROM fuses can not be reset.“

This statement is absolutely false. UV light will erase the fuses back to a ‘1′ state. Care must be used to not expose the main
memory to the UV or else it too will erase itself.

Reading deeper into the datasheet under Table 5-1, Atmel writes, “When the fuses are all “1″s, read and write are allowed in the entire memory.“

As strange as it reads, they really do mean even if you have setup security rules in the configuration memory, it doesn’t matter. The fuses override everything and all memory areas are readable in the clear without the need for authentication or encrypted channel! The attacker can even see what the “Secure Code” was (it is not given out in the public documentation, nor with samples). Atmel was even kind enough to leave test pads everywhere so various levels of attackers can learn (entry to expert).

Of all the other CryptoMemory products, only the AT88SC153/1608 has this backdoor. We have successfully analyzed the entire CryptoMemory product line and can say that the backdoor doesn’t exist in any other CryptoMemory part.

Dvs, det finns alltså EEPROM-säkringar på kretsen som Atmel säger inte skall gå att återställa efter att de bränts av. Men det går dom att göra. Och, här kommer det hemska,: om man gör det spelar det i de här kretsmodellerna ingen roll vilka säkerhetsmekanismer (som CryptoMemory erbjuder), det går att läsa ut innehållet i alla fall. Oops!

Nu brukar man säga att man inte tro att något är gjort av elakhet, när dumhet mycket väl kan ligga bakom. Men att som FlyLogic skriver bara dessa två modellerna i kretsfamiljen har detta problem är märkligt. Vem var/är målkunden? Eller vem fick Atmel att göra detta - och varför i så fall just dessa modeller? (Känns nästan som det är dags för ett foliehatt-party!)

Vad gäller säkerheten för CryptoMemory i sin helhet är FlyLogics bedömning:

None of the CryptoMemory parts are actually as “secure” as they make it seem. The words, “Smoke n’ Mirrors” comes to mind (It is almost always like that).

Gamla kryptopatent

Tuesday, January 22nd, 2008

För den som är intresserad av kryptohistoria kan det vara spännande att titta på de länkar som Cryptome publicerat.

Den första länken är till en PDF-fil med ett patent från 1923 på en Enigmaliknande elektromekanisk kryptomaskin. Patentet publicerades av USPTO 1928 och uppfinnaren är en tysk vid namn Arthur Scherbius.

Scherbius maskin

Arthur Scherbius skapade även Enigma-maskinen och Wikipedias sida om honom innehåller förutom länkar till detta patent även länkar till andra patent av Scherbius.

Cryptome har även en sida med information om spanska patent på vad som i det ena fallet ser ut att vara samma maskin som Scherbius maskin.

Jag får inte helt grepp på relationerna mellan maskinerna och vem som patenterat vad. Det verkar dock klart att konceptet med mekaniska rotorer som skapar elektriska omkopplingar var något som flera olika grupper runt om i världen arbetate med i början av 1900-talet.

Enigma och Fialka

Sunday, December 30th, 2007

De senaste dagarna har jag suttit och julmyst med rotoruppsättningarna till Enigma-maskinen.

Fin bild över Enigma-rotorer

Surfar man runt på nätet inser man snabbt två saker: (1) Det har funnits många olika rotorer och Enigma-varianter. (2) Namngivning av olika rotorer och när de började användas är inte precis entydig. Jag har försökt sammanställa en datastruktur med alla rotorer inkl placering av notch och turnover namn och datum utifrån bland annat de här sidorna:

En sak jag dock inte hade en aning om var att det fanns en rysk/sovjetisk släkting till Enigma kallad Fialka.

Fialka

Enligt den här sidan kom första modellen av Fialka på 1930-talet och användes sedan i olika modeller i alla fall under stora delar av kalla kriget. Den vanligaste modellen verkar vara M-125-MN. Den stora skillnaden gentenmot Enigma är att Fialka hade 10 rotorer och med 30 tecken/rotor istället för de tre till fyra rotorer och 26 tecken för Enigma. Wikipedia har en sida om Fialka, men den tar bara upp M-125-modellen.

Jag hittar ingen analys av säkerheten i Fialka och att någon verkligen knäckt Fialka (och publicerat det). Den större mängden rotorer och tecken/rotor borde göra Fialka starkare än Enigma. Men utan en detaljerad analys går det bara att spekulera.

Och eftersom alla andra sidor påpekar det: Fialka betyder violett. Dock verkar det inte finnas några kopplingar till Japanska kryptomaskinen Purple.

Kul att lära sig lite mer om ett krypto till. Julkul!

Ny biometriprocessor från FPC

Saturday, December 22nd, 2007

Biometriföretaget Fingerprint Cards (FPC) från Göteborg har släppt en en ny biometriprocessor till sina sensorer. (Ja, för en månad sedan - jag är inte så snabb.)

FPC2020

FPC2020 är anpassad för att fungera med FPCs areasensor FPC1011C.

FPCs areasensor

FPC2020 integrerar hårdvara för bildbehandling, acceleration av biometriska algoritmer och en kontrollprocessor.

Detta gör att man inte som tidigare behöver någon extern processor, ex en ARM eller en AVR. Utan det man behöver för att bygga in en biometrifunktion är en sensor, ett seriellt FLASH-minne, en kristall och FPC2020. (FPC skriver inget om innehållet i FLASH-minnet är skyddat och hur.)

Det finns ett datablad med detaljerad information om FPC2020 inklusive API:t för att använda kretsen. I det kan man bland annat hitta följande information.

Antalet användare som kan hanteras beror på storleken på externa FLASH-minnet. Med 2 Mbit klarar FPC2020 att hantera 223 olika templates. Största FLASH-minnet FPC2020 verkar stödja är 8 Mbit vilket ger kapacitet för 991 templates, men FPC skriver att man bör hålla nere antalet templates till mindre än 500.

Verifiering mot en enskild template tar ca 0.2 sekunder. Registrering (Enrolment) tar däremot hela sju sekunder. Normalt sett gör varje användare en eller ett fåtal registreringar och massor med verifieringar så verifieringstiden är det som är viktigt att få snabbt. Men sju sekunder är ändå tillräckligt lång tid för att man skall börja fundera på om det gick bra eller ej.

Vad gäller säkerheten skriver FPC att False-Rejection-Rate (FRR, dvs man godkänner inte ett tidigare registrerat fingeravtryck) går att justera och beror på indata. Även False-Acceptance-Rate (FAR, dvs man accepterar ett icke registrerat fingeravtryck) är ställbar från 1/1000 till 1/100.000. Vid 1/100.000 får man en FRR på mindre än 7 %.

Säkerhetsmässigt är ett lågt FAR-värde mycket viktigt. Däremot är ett lågt FRR-värde viktigt för att systemet inte skall kännas bökigt att använda.

En liten märklig detalj. Jag hittar ingen information på FPCs webbplats vad som hänt deras sweepsensorer FPC1030 och FPC1031.

Krokodilen?

Bilden ovan hittade jag på den här webbplatsen. På den sidan står det att FPCs sensorer utvecklats av ett företag i Holland kallat Xensor. En annan märklig detalj är att bilden ovan heter Krokodilen?!

Personligen föredrar jag sweepsensorer före areasensorer. Jag tyckte att FPCs sweepsensorer i förhållande till areasensorn var mycket trevligare att arbeta med, tog mindre plats och dessutom inte kan ha några problem med kvarlämnade (latenta) fingeravtryck på sensorn.

FPC2020 kommer kapslad i en liten och trevlig 64-bens QFN-kapsel. FPC2020 klarar matning från 2.5V till 3.3V och kommunicerar mot omvärlden via RS-232 (vilket FPC kallar UART) eller SPI-interface.

Test av Yubicos kodgenerator

Tuesday, December 11th, 2007

Jag har precis testat (lekt en stund) med en kodgenerator från svenska Yubico.

Yubico

Den version av YubiKey jag testat är YubiKey Spin.

YubiKey Spin

Enheten ser ut som ett litet USB-minne. Men när jag kopplade in den ville MacOS X att jag skulle hjälpa till att identifiera det okända USB-tangentbord jag precis pluggat in. Eftersom enheten bara har en knapp var det inte så lätt att trycka på de knappar OS:et ville att jag skulle trycka på. Men när jag tryckt på den knapp som finns kom OS:et fram till att den inte kunde identifiera tangentbordet, och enheten sattes helt enkelt till ett generiskt tangentbord.

Och det är precis det här som är det fina i kråksången. Sett från OS:et identifierar och beter sig USB-nyckeln verkligen som om den vore ett tangentbord. Detta blir än mer uppenbart när man startar upp en editor och trycker några gånger på knappen. Vad som kommer ut ser ut ungefär så här:

deaddeadeadgikuhnitkbifdlhgcnjkejbngcvubbft
deaddeadeaditcielkughinkgcnjfrjcnvhlbfbggtg
deaddeadeadjkvrberittikdvereibehjkfrtgrdilf
deaddeadeadndvivdenteuguuncbfrcvjtjjbkchfin
deaddeadeadcuutgtrjjftbknefuindldnbkvkteiiu
deaddeadeadjkhgnvhthubfefintcjdulfhdfbltdvv
deaddeadeadcchggdvjjlrburhklhchbriivefcklvf
deaddeadeaddlgunlnrkctkiehfeujvhccgvtnbfjtb
deaddeadeadvnjuifetlthgedlktuhickehrkicckcf

Varje gång man trycker på knappen kommer det ut en sträng på 44 tecken. Strängen består av en inledande del om 12 tecken som uppenbarligen är en ID-del och sedan 32 tecken som förhoppningsvis representerar värden från en bra rektangelfördelning. (I texten ovan har jag ersatt ID-delen med en fejkad del.)

Det tar enheten runt en sekund att generera en sträng. Inte blixtsnabbt, men mycket snabbare man hinner skriva av koden i ett LCD-fönster.

Vad gäller säkerheten skriver Yubico på sin webbplats om algoritmen som används att:

Apart from present hardware authentication tokens, YubiKey does not rely on a two-way challenge-response protocol, battery-powered time base, keyboard or a display.

Yet, how can a device be so secure when four of the most common security measures present in state-of-the-art authentication devices have been removed?

The YubiKey generates a truly unique 128-bit code at each authentication event and there is no time window during which two authentication codes are equal. All of the unique 128-bit code is encrypted with AES-128 and is then encoded to “readable form”, where the resulting string is transmitted in its full length.

The main components of the unique code comprise:

1. A hidden identity field to verify the decrypted result to a non-published identity.
2. A volatile counter is incremented by one for each code that has been generated. This code is reset at each power-up.
3. A non-volatile counter is incremented by one for each power-up event. The value of this counter is preserved even when power is lost.
4. A non-predictable counter value is fed by a time-base that is highly device and session dependent. Together with a server-based authentication module, this counter can provide a strong protection against “Phishing” attempts.
5.A random seed.
6.A cryptographic checksum.

Together, these fields form a 128-bit value and provide a higher number of combinations than a 3 followed by thirty-eight zeroes. Combined with a further encryption using AES-128 and the fact that a hacker has no information about the plaintext, cryptanalysis is futile.

Det låter bra. Det hade dock varit spännande att läsa en bra analys på algoritmen och veta mer om hur dom använder AES (ex vilken kryptomod) samt gärna sett resultatet av mangling av genererade koder i Marsaglias Diehard-tester.

Enligt Yubico skall nyckeln även kunna fånga upp Caps Lock-tryckningar vilket skall göra att man kan få en kod genererad bara genom att snabbt trycka två gånger på det vanliga tangentbordets Caps Lock-tangent. Detta fick jag dock inte att fungera, vilket antagligen har att göra med vilket generiskt tangentbord som enheten fick som profil.

Detta är knappast ett fullödig test, men mina första intryck är att Yubico användningsmässigt sett tänkt helt rätt. Funkar säkerheten är YubiKey en riktigt smart liten kodgenerator, ex för identifiering på OpenID-webbplatser.

Flylogic en spännande blog

Thursday, November 22nd, 2007

Jag har precis lagt till en ny blog till bloglistan. Den här gången är det Flylogic Engineering’s Analytical Blog från företaget Flylogic.

Flylogic är ett av mycket få företag som har kompetens och utrustning som krävs för att plocka isär och analysera inte integrerade kretsar. Deras blog är fylld med bilder på chip, nedfilade kapslar och isärplockade kort.

Att döma av deras blog är en av Flylogics favoritverksamheter att plocka isär elektronikprodukter som är utrustade med säkerhetsmekanismer eller är avsedda att tillhandahålla olika typer av säkerhet. Bland annat har Flylogic med framgång plockat isär och gått runt säkerheten hos ett flertal säkra USB-minnen. Här är exempelvis MAI:s KEYLOK:

KEYLOK på väg till slaktbänken.
En fin USB-blobba på väg till slaktbänken.

KEYLOK uppsprättad.
KEYLOK uppsprättad. Notera att det inte finns något mer fysiskt skydd för kretsarna.

MCU:n i KEYLOK
MCU:n CY7C63101A isärplockad och färdig att proba.

Närbild på chippet.
Närbild på chippet. Notera minnesarrayen till höger.

Och så avslutar man med att läsa ut data direkt från minnet:

We performed some magic and once again we have success to unlock the once protected device. A quick look for ASCII text reveals a bunch of text beginning around address $06CB: .B.P.T. .E.n.t.e.r.p.r.i.s.e.s…D.o.n.g.l.e. .D.o.n.g.l.e. .C.o.m.m.< .E.n.d.P.o.i.n.t.1. .1.0.m.s. .I.n.t.e.r.r.u.p.t. .P.i.p.e.

En annan krets Flylogic attackerat är Atmels CryptoMemory som jag tidigare bloggat om. Här är en bild på sådana chip plockade från sin vanliga miljö för bättre analysmöjligheter:

Atmels CryptoMemory utplockade.

Som HW-nisse med intresse för IT-säkerhet är det här nästan som julafton, och en hel månad i förväg!

Gores skyddspåsar för intrångsdetektering

Friday, November 16th, 2007

(En snabbis innan jag går hem för dagen…)

Har du inte sett det innan har Gore väldigt fräcka material för att bygga påsar som kan användas till aktiva skalskydd runt elektronik:

Några av Gores påsar.
(Några av Gores påsar.)

Med ett sådant här skalskydd gör det att möta de krav på intrångsdektering som ställs för nivå tre och fyra enligt NISTs standard NIST FIPS 140-2. Sedan implementerar lämplig respons i elektroniken som är inkapslad av påsen.

Som ett exempel lagras kryptonycklar i ett RAM-minne där strömkretsen till minnet är kopplat till påsen. Om/När påsen penetreras bryts strömmen till minnet och nycklarna försvinner/förstörs.

Dagens säkerhetsdumhet presenteras av….

Thursday, November 15th, 2007

FPGA-leverantören Xilinx.

Var precis inne på Xilinx webbplats och upptäckte att på sidan för att ladda ner utvecklingsverktyg fanns den här uppmaningen till Xilinx användare:

Turn off virus scanner to reduce installation time. Download file will contain installations for multiple platforms. After downloading, unzip the file and run “setup”

Detta på en webbplats som endast är skyddad med ett lösenord. Jag som användare har ingen möjlighet att verifiera att:

  1. Sidan verkligen tillhör Xilinx och är en del av deras webbplats.
  2. Programmet som laddas ned kommer från Xilinx
  3. Programmet som laddats ned inte påverkats på vägen

Att då uppmana sina användare att stänga av viruskontrollen är kort sagt uselt säkerhetstänkande. Xilinx använder SSL/TLS på delar av sin webbplats, men inte på sidan för nedladdning. Och hur svårt är det egentligen att ta fram och publicera information om storlek och signatur för de filer man gör tillgängliga? (Även om en sådan information behöver skyddas den också - om webbplatsen är hackad är antagligen den informationen inte att lita på.)

Jag har skickat en kommentar/uppmaning till Xilinx om att ta bort sin uppmaning och tänka till på säkerheten. Om jag får ett svar återkommer jag.

En kollega kom för övrigt med en bra observation: Varför är det så få kommersiella företag som publicerar signaturer för de filer och program de gör tillgängliga? Ser man MD5-, SHA-signaturer kan man nästan vara säker på att leverantören är ett öppen/fri kod-projekt.

Berusad man vs värmeverk i Trollhättan

Wednesday, November 7th, 2007

(Tipstack till Månster) Det här dök upp på DN.se. En berusad man tog sig tydligen in på fjärrvärmekraftverket i Trollhättan i går morse och lyckades stänga ner verket:

På något sätt tog han sig in i värmeverket och tryckte på alla knappar som reglerar värmeverket han kunde hitta, innan personalen upptäckte hans tilltag, skriver Göteborgs-Postens nättidning.

- Så här får det inte gå till. Vi har ju larmat men efter det här måste vi se över vårt skalskydd, säger Mats Johansson, vd i Trollhättan Energi som driver fjärrvärmeverket, till TT.

Under de tre timmar det tog drevs verket med reservkraft.

Mannen hade tidigare under natten till måndagen suttit hos polisen i Trollhättan misstänkt för narkotikabrott. Direkt efter att han släppts tog han sig till värmeverket. På morgonen var han åter på polisstationen men hade vid lunchtid ännu inte hörts.

Den lokala tidningen TTELA har en de ytterligare information om händelsen:

Intrånget i det obemannade kraftvärmeverket vid Lextorp gjordes vid sjutiden i går morse. De ansvariga på Trollhättan Energi misstänker att mannen tog sig in på området i samband med att grindarna öppnades för en lastbil som skulle lämna flis. Sedan ryckte han upp en dörr till den gamla oljecentralen och fortsatte in i den nya delen av anläggningen via en gångtunnel.

När vi pratar en massa om IT-säkerhet, skydd för SCADA-system etc kan det vara bra att komma ihåg att en vanlig hederlig dörr också kan vara ett bra sätt att ta sig in på. Ett stopp på tre timmar orsakat av en berusad person, vad skulle någon med lite vilja och mindre alkohol i kroppen kunnat åstadkomma?

Verket det handlar om är det här, en klassiskt byggnad i Trollhättan:

Lextorps värmekraftverk
(Värmeverket - Lextorps finest inom industriarkitektur)

För er som inte varit i Trollhättan kan man titta på filmen Fucking Åmål. Den gångbro över vägen som finns med i filmen är där värmeverket ligger i verkligheten. Har för mig att verket syns i filmen.