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 1291
September » 2008 » Kryptoblog

Archive for September, 2008

gen_randfiles – ett nytt litet verktyg

September 29th, 2008

Jag har precis lagt upp ett litet verktyg på Kryptoblog. I helgen hade jag inför en svensexa ett behov av att kunna generera ett stort antal filer av en given längd där innehållet bestod av slumptal. (Jo faktiskt, till en svensexa – snacka om seger i nörd-VM).

gen_randfiles.py gör precis detta. Mata in filnamn, antal filer och längd i Bytes och du får det givna antalet filer fyllda med slumpmässigt valda Bytes. Uppenbarligen skrivet i Python och använder Pythons random-funktion vilken bygger på Mersenne Twister.

Filen ligger på sidan med filer för nedladdning. Hoppas att det kommer till nytta för någon. Kanske till en möhippa eller nåt, vad vet jag?

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.

Säkerhetstips från NSA

September 27th, 2008

(Väldigt mycket att göra just nu så bloggen har blivit lidande. Bättre fart snart…)

National Security Agency (NSA) i USA är inte direkt kända för sin frispråkighet. Men NSA har en sida med ett stort antal säkerhetstips. Tipsen är uppdelade både på teknik och på situationer, metoder och arbetssätt.

NSA

Hardening Tips for the Default Installation of MAC OS X 10.5 “Leopard” är ett blad med drygt 10 olika tips för hur du säkrar upp en installation av Leopard. Tipsen tar bland annat upp hur du slår på lösenordet i BIOS, hur du konfigurerar branväggen, vilka setuid- och setgid-binärer du verkligen behöver samt hur du stänger av tjänster du ej behöver. NSA tycker även att kameran iSight och mikrofonen skall stängas av.

Andra tips handlar om konfiguration av VMware ESX Server 3, mailklienter och säkerhet (NSA gillar inte HTML-mail) och vad man bör tänka på med biometri.

Bland de mer udda (men intressanta och bra) hittar vi So Your Boss Bought you a New Laptop…How do you identify and disable wireless capabilities, Redacting with Confidence: How to Safely Publish Sanitized Reports Converted From Word 2007 to PDF.

Jag gillar det här. Tydliga, korta sammanställningar med ett antal konkreta tips. Och ja, jag tror inte att det är något fuffens. Litar du inte på ett tips är det bara att strunta i det.

Finns det någon svensk myndighet som publicerar någonting liknande?

Sidokanalsbaserat skydd mot kretskloning

September 18th, 2008

För några dagar sedan bloggade jag om företaget Verayo och deras PUF-teknologi för att stoppa kretskloning. I dag sprang jag på en artikel på EE Times om en annan teknik för att stoppa kretskloning, och den här är riktigt fräck.

Algotronix har utvecklat en mycket intressant teknik kallad DesignTag som gör det möjligt att skydda konstruktioner byggda med FPGA-kretsar. Problemet med SRAM-baserade FPGA-kretsar är att de tappar sin konfiguration när matningen försvinner. Konfigurationen måste därför laddas in från ett externt minne, exempelvis ett FLASH-minne. Och det gör att vill någon klona konstruktionen är det bara att läsa av konfigurationen mellan minnet och FPGA-kretsen.

FPGA-krets med konfigurationsminne.

(I det här läget skall det påpekas att FPGA-leverantörer som Altera och Xilinx har lösningar baserade på krypterad konfigurationsfil där kryptonyckeln lagras internt i FPGA-kretsen och strömsätts med batteri. Detta gör det även möjligt att bygga aktiva skalskydd.)

Algotronix DesignTag försöker stoppa detta genom att för varje konstruktion generera ett unikt konstruktionsblock som identifierar konstruktionen. Genom att läsa av identiteten går det att avgöra vilken konstruktion det är och därmed avgöra om konstruktionen är stulen eller ej.

Och det fräcka är hur DesignTag kommunicerar kretsens ID. DesignTag kommunicerar genom kretsens värmeutveckling!

DesignTag i en FPGA.

När FPGAn startar börjar DesignTag-blocket att göra en massa operationer som ökar och minskar värmeutveckling vilket får temperaturen på utsidan av kapseln att variera. Hur temperaturen varierar beror på identiteten. Genom att läsa av temperaturen går det att få fram kretsens identitet. Fräckt eller hur?!

Setup för att läsa av DesignTag-koden.

Enligt artikeln implementerar DesignTag ett enkelt LFSR-baserat strömkrypto där identiteten är nyckeln. LFSR-kedjan ger upphov till en PRNG-sekvens som styr värmegeneratorn. Vet man inte att det finns DesignTag aktivt i kretsen ser variansen (förhoppningsvis) ut som slumpmässiga temperaturvariationer.

Det står inte hur värmegeneratorn fungerar. Gissningsvis är det något som ger upphov till stora registeromslag och aktivitet. Ett antal styrbara T-register och/eller multiplikatorer med operander som ger upphov till långa carry-kedjor.

DesignTag-kommunikationen kan knappast vara speciellt snabb så antalet bitar som skickas är antagligen inte så stor. Enligt artikeln stängs DesignTag-blocket av efter 15 minuter.

DesignTag-blocket behöver antagligen kalibreras för varje familj av FPGA-kretsar den används för att kunna ge en bra varians i temperaturen. Vidare går det säkert att bygga en mekanism som detekterar om det finns DesignTag i en konstruktion eller ej. Dels borde det gå att attackera LFSR-kedjan och särskilja DesignTag-mönstret från normal slumpmässig temperaturvariation. Om inte annat borde det gå att vänta 15 minuter och se om det händer något med temperaturen.

Men att kommunicera genom temperaturen är ett otroligt elegant sätt som gör att DesignTag inte behöver ställa några krav på tillgång till kretsens ben.

Verayos teknik gör det möjligt för en krets att själv avgöra om den är klonad eller ej. Men samtidigt är det enkelt för skurken att kontrollera om han lyckats slå ut Verayos teknik eller ej. Algotronix teknik ger inte kretsen möjlighet att avgöra om den är klonad eller ej, men är desto svårare att upptäcka om man inte letar efter den.

Krypto, FPGA-kretsar och sidoattacker – tre önskningar i ett. Kan det bli bättre?

Kubattacker mot kryptografiska funktioner

September 15th, 2008

En av de mest uppmärksammade händelserna på den för ungefär en månad sedan avslutade Crypto-konferensen var en presentation av Adi Shamir om en ny typ av attackmetod mot kryptografiska metoder kallad kubattack.

Adi Shamir
Adi Shamir

När metoden presenterades fanns inget om den nya metoden publicerat. Detta ledde till en hel del diskussioner och spekulationer på maillistor. Exempelvis diskuterades det mycket om krypton som AES, Twofish är sårbara.

David Wagner skrev ett par längre inlägg på Cryptography-listan (inlägg ett, inlägg två). David skrev bland annat:


Basically the method focuses on terms of the polynomial in which only one secret bit of the key appears, and many of the non-secret bits. Using chosen (or lucky) plaintexts, vary all but one of the non-secret bits, and sum the output bits (mod 2, that is, XOR).

Fix the other non-secret bit to 1. Now all the terms that involve less than the full complement of non-secret bits will appear an even number of times in the sum, and because it is mod 2, they will all cancel out! The only terms that will be left are the ones with one secret bit, and all ones for the non-secret bits… but that is linear in the secret bit! So what you are left with is a simple, linear, polynomial relating unknown (key) bits.

Nu har artikeln Cube Attacks on Tweakable Black Box Polynomials av Itai Dinur and Adi Shamir publicerats på IACR. Författarna skriver i artikelns (långa) sammanfattning:


Almost any cryptographic scheme can be described by tweakable polynomials over GF (2), which contain both secret variables (e.g., key bits) and public variables (e.g., plaintext bits or IV bits). The cryptanalyst is allowed to tweak the polynomials by choosing arbitrary values for the public variables, and his goal is to solve the resultant system of polynomial equations in terms of their common secret variables.

In this paper we develop a new technique (called a cube attack) for solving such tweakable polynomials, which is a major improvement over several previously published attacks of the same type.

For example, on the stream cipher Trivium with a reduced number of initialization rounds, the best previous attack (due to Fischer, Khazaei, and Meier) requires a barely practical complexity of 2**55 to attack 672 initialization rounds, whereas a cube attack can find the complete key of the same variant in 2**19 bit operations (which take less than a second on a single PC). Trivium with 735 initialization rounds (which could not be attacked by any previous technique) can now be broken with 2**30 bit operations, and by extrapolating our experimentally verified complexities for various sizes, we have reasons to believe that cube attacks will remain faster than exhaustive search even for 1024 initialization rounds.

Whereas previous attacks were heuristic, had to be adapted to each cryptosystem, had no general complexity bounds, and were not expected to succeed on random looking polynomials, cube attacks are provably successful when applied to random polynomials of degree d over n secret variables whenever the number m of public variables exceeds d + logd n. Their complexity is 2d−1 n + n2 bit operations,
which is polynomial in n and amazingly low when d is small.

Cube attacks can be applied to any block cipher, stream cipher, or MAC which is provided as a black box (even when nothing is known about its internal structure) as long as at least one output bit can be represented by (an unknown) polynomial of relatively low degree in the secret and public variables. In particular, they can be easily and automatically combined with any type of side channel attack that leaks some partial information about the early stages of the encryption process (which can typically be
represented by a very low degree polynomial), such as the Hamming weight of a byte written into a register.

Publiceringen av artikeln har skapat nya diskussioner, exempelvis på Bruce Schneiers blog.

Min uppfattning om Adi Shamir är att han är en av världens absolut bästa kryptologer, risken att han skulle missat fullständigt och metoden inte alls fungerar tror jag är liten. Men jag kan villigt erkänna att jag kan för lite krypanalys för att göra en vettig bedömning av den nya metoden.

Om det Itai Dinur och Adi Shamir skriver stämmer borde detta vara ett stort steg framåt för kryptanalysen. Och lackmustestet kommer antagligen att vara om det dyker upp en ny våg av attacker mot olika specifika funktioner så fungerar kubattacken.

Att Trivium, en av de nyligen utsedda algoritmerna i eSTREAM-portföljen (och lite av en personlig favorit) skulle få problem så här nära efter avslutningen av eSTREAM visar hur en ny metod plötsligt kan kullkasta flera år av analysarbete.

Vi kommer med stor sannolikhet att få återkomma till den här nya attackmetoden. Inte minst under AHS-tävlingen kommer kubattacken antagligen att uppmärksammas.

Stoppa kretskloning med Verayos PUF:ar

September 13th, 2008

EE Times publicerade i förra veckan en artikel om ett nytt företag som lanserat en teknik för att stoppa kloning av integrerade kretsar.

Företaget Verayo är avknoppning från MIT där Srini Devadas, en av grundarna av Verayo, ledde forskningen om PUF - Physical Unclonable Functions. På Verayos sida finns en förklaring till PUF-teknologin.

Grunden till PUF-teknologin är att de olika process-stegen som utgör en CMOS-processen är statistisk och ger upphov till små lokala varianser, både mellan olika kretsar och inom en krets. Ett exempel på variation är antalet atomer (aluminium eller koppar) en ledning består av. Dessa varianser leder till små skillnader i det elektriska beteendet, exempelvis fördröjningen av en signal genom en grind.

Verayo försöker utnyttja dessa varianser genom att skapa en krets där skillnaden i signalhastighet i olika ledningar får betydelse för hur en signal traverserar en krets och ger upphov till olika digitala mönster. Genom att bygga en kedja med korsvis kopplade multiplexrar och sedan skicka ett känt mönster (challenge) genom kedjan får dom ut ett för den specifika kretsen känt mönster (response).

PUF-bild.

Vid produktion sparas det förväntade mönstret i ett ROM-minne på kretsen. Skulle kretsen klonas kommer mönstret som produceras av kedjan att förändras och då matchar det ej längre det lagrade mönstret.

Challenge-response med PUFs

Jag sökte lite på nätet efter artiklar om PUF-teknologin och hittade några artiklar, bland annat ett par på underbara Citeseer. Silicon Physical Random Functions från 2002 verkar vara den tidigaste som nämner PUF som koncept. En annan som ser ut att vara en hash av samma material är Controlled physical random functions.

2006 kom en artikel av några andra forskare som också tar upp PUF:s, men artikeln Offline HW/SW Authentication for Reconfigurable Platforms tar PUF-konceptet till FPGA-världen. Författarna skriver i sin sammanfattning:


We describe an offline authentication scheme for IP modules. The scheme implements mutual authentication of the IP modules and the hardware platform, and enables us to provide authentication and integrity assurances to both the system developer and IP provider.

Compared to the Trusted Computing Platform’s approach to hardware, software authentication, our solution is more lightweight and tightly integrates with existing FPGA security features. We are able to demonstrate an implementation of the authentication scheme that requires a symmetric cipher and a Physically Unclonable Function (PUF). In addition to the low hardware requirements, our implementation does not require any on-chip, non-volatile storage.

Jag har bara skummat den artikeln och återkommer med en närmare förklaring om vad dom faktiskt gör för att implementera PUF:s i FPGA:er.

Att det finns ett behov av att skydda mot kretskloning är helt klart. Kretskloning och piratkretsar omsätter i dag mycket stora belopp. Ett hitta sätt som (enkelt) gör det svårare att klona kretsar är därför mycket intressant.

Det jag funderar på är vad som händer med Verayos PUF:ar när kretsen åldras, finns det risk att kedjans unika mönster förändras över tiden? Vidare är varians i dag ett av de stora problemen (en av de röda tegelstenarna i ITRS roadmaps) mot mindre geometrier, och i takt med att man processmässigt blir tvingad att minimera varianser borde Verayos teknologi får svårare att skapa riktigt unika mönster.

Verayo är inte heller ensamma i sin strävan. Jag bloggade för nästan ett år sedan om en annan forskning där initialtillståndet i kretsars SRAM-celler används för att skapa krets-ID. Verayos teknik tycker jag dock verkar mer praktiskt intressant.

Uppdatering 2008-09-14:
Jag tror att jag har kommit på hur man kan slå ut Verayos teknologi.

Eftersom MUX-kedjan är till för att förstärka varianser och därmed ge olika mönster i varje krets går det knappast att ha med kedjan och dess utregister i den del av logiken som testas vid produktionstest. Detta undantag skulle göra det möjligt att relativt enkelt lokalisera var på kretsen kedjan, dess utregister och framförallt den komparator som jämför mönstret från kedjan med det förväntade mönstret är placerade.

När väl detta ställe är lokaliserat kan man göra på två sätt:

  1. Strömsätta kretsen, låta stimuligeneratorn skicka igenom indatat till kedjan, observera resultatet och lagra det i minnet. Detta är väsentligen den procedur som behöver utföras vid produktion av de riktiga kretsarna (återkommer strax till detta.)

  2. Låsa resultatet från komparatorn så att den alltid anger att korrekt mönster observerats. Detta görs relativt enkelt genom att FIB:a utsignalen till matning eller jord (beroende på vilket värde som anger att kretsen inte är klonad).

Att slå ut komparatorn är antagligen det enklaste, även om det tar tid att FIB:a. Men (1) tar också tid, och skall utföras på varje krets som produceras – i alla fall alla kretser som i övrigt har klarat sig igenom produktionstest. Verayos teknik innebär därmed en ökad produktionskostnad. Frågan är om denna kostnad överstiger alternativkostnaden med klonade kretsar under kretsens marknadsfönster?

Sedan kan det dessutom vara så att resultatet från komparatorn plockas upp av programvara, och att det är där beslutet om vad som händer när en krets detekterar fel mönster sker. Då är det antagligen ännu enklare att NOP:a bort den programfunktionen.

Intressanta kommentarer på NISTs AES-XTS

September 13th, 2008

NIST har publicerat de kommentarer som inkommit på förslaget att standardisera kryptomoden XTS för AES.

XTS är en variant av kryptomoden XEX skapad av Phillip Rogaway. XTS har tidigare standardiserats av IEEE i P1619 för att skydda i blockorienterad lagringsmedia (exempelvis hårddiskar och FLASH-minnnen).

Matthew Ball, som är ordförande i IEEEs Storage Working Group är i sin kommentar, inte helt överraskande, positiv till NISTs XTS-förslag. Matthew påpekar att XTS, till skillnad från exempelvis CBC är en algoritm som går att parallellisera och därmed skalar bra prestandamässigt.

Mer intressant är att kommentarerna från hårddisk-tillverkaren Seagate är så negativa. Seagate ser inga fördelar med XTS, och tycker att den implementationsmässigt är för kostsam. Seagate skriver bland annat:


The XTS encryption mode is not a good choice for storage encryption. There have been simpler, faster or more secure modes in use.

Is XTS a good tradeoff between security and complexity (costs)? NO: There are asymmetric large block encryption modes (e.g. BitLocker of Windows Vista) with similar complexity but better security for storage systems. There are faster, simpler encryption modes used together with access control (e.g. CBC)

Notera att Seagate inte ser ett problem med CBC vad gäller prestanda.

Även övriga kommentarer är på olika sätt negativa till XTS. Inte minst är det intressant att notera att Phillip Rogaway inte ser att XTS säkerhetsmekanismer inte tillför någon egentlig säkerhet.

Ett annat problem, som alla utom Matthew Ball från IEEE påpekar, är att IEEE äger standarden och att den som vill läsa standarden därför måste köpa standarden från IEEE. Som Niels Ferguson och Vijay Bharadwaj från Microsoft skriver i sin kommentar:


The proposal for the approved specification to be available only by purchase from IEEE . We believe that it is highly undesirable to standardize an algorithm whose specification, unlike those of other FIPS approved algorithms, is not freely available.

Ytterligare ett potentiellt problem med XTS är att det finns IP-rättigheter kopplade till standarden. Niels Ferguson och Vijay Bharadwaj återigen:


As stated in the call for comments, the current situation of IP rights with respect to XTS-AES is unclear. We believe that standardizing an algorithm which is so encumbered is undesirable, and that IP issues could inhibit adoption of such a standard.

Det är lite illavarslande att flera duktiga krytopexperter inte ser att XTS mekanismer, med bland annat två olika kryptonycklar tillför någon egentlig säkerhet och att det är oklart vad XTS egentligen är tänkt att lösa för ett säkerhetsproblem.

Men det som gör mig än mer orolig för framtiden är frågan om standardens öppenhet samt IP-problematiken, inte minst i ljuset av den pågående AHS-tävlingen. Finns det en risk att framtidens SHA-algoritm inte kommer att vara öppen, och att implementationer kommer att begränsas av IP-rättigheter? Det skulle inte vara bra för säkerheten.

Danske Banks hemska webbapplikation

September 12th, 2008

Kollegan Kalle tipsade för ett tag sedan om en tråd på DailyWTF om den hemska webbapplikation som Danske Banke introducerade i Finland efter köpet av Sampo. Värt att läsa om man vill se ett IT-projekt som uppenbarligen gick snett från början.

SampoBank

Det finns även en Wiki som samlar information om alla hemskheter i SampoApplet. Bland detaljerna man kan hitta där finns en lista på vad SampoApplet försöker samla information om i GNU/Linux:


/proc/asound/cards
/proc/cpuinfo
/proc/ide0/hda
/proc/ide1/hdc
/proc/ide2/hdb
/proc/ide3/hdd
/proc/ide/hda
/proc/ide/hdb
/proc/ide/hdc
/proc/ide/hdd
/proc/meminfo
/proc/partitions
/proc/pci
/proc/sys/kernel/hostname
/proc/version

Vad skall banken med information om CPU och hårddisk-partitioner till? Motsvarande saker gäller i Windows och på Mac.

nmap 4.75 – Nu med kartfunktion

September 11th, 2008

Fyodor postade i går att version 4.75 av nmap nu finns tillgänglig för nedladdning. En av de 100 nyheterna i den nya versionen av allas favoritportscanner är att nmap nu kan rita grafer över nättopologin:

nmap-topologi.

Bara att tanka ner och börja leka.

Cory Doctorows kryptovigselringar

September 9th, 2008

Om man är kryptonörd och vill ha annorlunda vigselringar, hur gör man då? Kontaktar Bruce Schneier naturligtvis. Cory Doctorow bad Bruce Schneier att designa kryptoinspirerande vigselringar. Det Bruce kom upp med är något som påminner om rotor-delarna i Enigma-maskinen med två roterande delar och en del i mitten som sitter fast:

Kryptoringar

Nu har Cory och Bruce gemensamt utlyst en tävling som går ut på att ta fram ett bra kryptosystem baserat på ringarna.

Förutom ett stort antal förslag på system samt analyser av ringarna på både Schneiers och Doctorows sidor har det kommit en del roliga kommentarer om vad man skall med ett kryptosystem makar emellan. En rolig kommentar var den här:


You said “Take out the garbage?”

Funny, when I decoded the note it told me to lie on the couch and watch football all afternoon.

Honest mistake, I suppose.