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
Forskning » Kryptoblog

Archive for the ‘Forskning’ category

Uppdaterad eSTREAM-portfölj och nya attacker

November 17th, 2008

eSTREAM-projektet presenterade sin portfölj med strömkrypton i april i år. Portföljen som då presenterades inkluderade fyra krypton i profil ett avsedda i första hand för SW-implementation och fyra krypton i profil två avsedda för inbyggda system och hårdvaruimplementationer. Dessa krypton var:

Profil ett:

  • HC-128

  • Rabbit

  • Salsa 20/12

  • Sosemanuk

Profil två:

  • F-FCSR-H v2

  • Grain v1

  • Mickey v2

  • Trivium

Sedan april har det hänt en del. Det mest direkta är att eSTREAM-portföljen har uppdaterats med den stora förändringen att F-FCSR-H plockats bort från profil två.

Skälet till detta är att Hell och Johansson skrivit en artikel kallad Breaking the F-FCSR-H stream cipher som tydligen visar en praktiskt genomförbar artikel mot F-FCSR-H. Artikeln skall presenteras på Asiacrypt i december, men tydligen stämmer resultatet då eSTREAM valt att plocka bort F-FCSR-H.

Några andra eSTREAM-krypton som inte ser ut att må speciellt bra är Trivium och Salsa 20, speciellt Trivium ser ut att må dåligt.

I höstas kom Adi Shamirs kubattack som i artikeln innehåller en allvarlig attack mot Trivium. Under hösten har även kommit ett par andra attacker mot Trivium.

I oktober kom artikeln Transforming chosen IV attack into a key differential attack: how to break TRIVIUM and similar designs med en komplexitet på 2**68.

En annan artikel, Slid Pairs in Salsa20 and Trivium, som attackerar både Trivium och Salsa 20 kom i slutet av september. Författarna Deike Priemuth-Schmid och Alex Biryukov skriver:


The stream ciphers Salsa20 and Trivium are two of the finalists of the eSTREAM project which are in the final portfolio of new promising stream ciphers. In this paper we show that initialization and key-stream generation of these ciphers is slidable, i.e. one can find distinct (Key, IV) pairs that produce identical (or closely related) key-streams.

There are 2**256 and more then 2**39 such pairs in Salsa20 and Trivium respectively. We write out and solve the non-linear equations which describe such related (Key, IV) pairs. This allows us to sample the space of such related pairs efficiently as well as detect such pairs in large portions of key-stream very efficiently.

We show that Salsa20 does not have 256-bit security if one considers general birthday and related key distinguishing and key-recovery attacks

Det ser allvarligt ut, men läser man Daniel J Bernsteins svar verkar det inte vara en attack som är bättre än brute force:


These claims are entirely without merit. The “attacks” on Salsa20 are vastly more expensive than the standard brute-force attacks discussed in the original Salsa20 documentation.

Vad gäller Trivium, med tre olika attacker på kort tid, skulle jag inte bli förvånad om den åker ut ur eSTREAM-portföljen och jag skulle vara försiktg att använda den.

Det som gör mig en aning bekymrad är att flera attacker alltsÃ¥ dykt upp strax efter att eSTREAM-projektet avslutats och porföljen presenterats – efter fyra Ã¥r av utvärderingar.

Om man vore lite konspiratoriskt lagd skulle man kunna fÃ¥ för sig att det är mer prestige och publiceringsvärde i att attackera accepterade och utvalda algoritmer snarare än kandidater. Detta är naturligtvis rent trams, men om det skulle vara sÃ¥ vore det bekymmersamt för forskningen och andra försök att ta fram bra algoritmer – exempelvis för NISTs SHA-3-tävling.

En sista sak om eSTREAM värd att notera är att kryptot Rabbit, enligt en postning av Erik Zenner på eSTREAM-forumet, har fått ändrad licens:


On behalf of Cryptico A/S, the company who designed the Rabbit stream cipher, I’m happy to relay the following:

“Rabbit has been released into the public domain and may be used freely for
any purpose.”

So in retrospect, I think that it was a good decision not to make patent issues a key criterion for the eStream portfolio: The patent status can change, the algorithmic properties can’t.

Tyvärr är inte detta det mest officiella av uttalanden, och dessutom saknar jag information om hur Cryptico avser att agera vad gäller sina patent relaterade till Rabbit. Jag har letat på Cryptico A/S webbplats för att hitta ett mer officiellt uttalande, men där finns inte mycket nyheter.

Jag har kontaktat Erik Zenner för att se om det går att få ett mer officiellt uttalande. Hör jag något publicerar jag det här. eSTREAM-projektets text om licensen för Rabbit har i alla fall inte uppdaterats:


Cryptico A/S currently has patents pending on Rabbit. The algorithm is provided royalty-free for non-commectical use. Licenses for commercial use may be obtained from Cryptico A/S.

Om jag själv skall välja krypton från eSTREAM skulle jag i första hand gå på HC-128 och kanske Salsa 20. I profil två skulle jag välja Grain och Mickey, men då använda versionerna med 128 bit nycklar som inte kostar mer i implementation (bortsett från sex Bytes längre nyckel). Inbyggda system förtjänar lika bra skydd som PC-system.

MD6 och Skein Рtv̴ SHA-3-kandidater

October 29th, 2008

Dörren för kandidater till NISTs hashfunktionstävling stängs om ett par dagar (2008-10-31). Att döma av trafiken på maillistan kommer det att dyka upp ett flertal kandidater. Men än så länge har inte speciellt många blivit officiella.

Först ut var Ron Rivest och hans kollegor som presenterade hashfunktionen MD6, även kallad Pumpkin Hash. MD6 är ett relativt stort steg frÃ¥n den struktur nuvarande SHA-algoritmerna har. MD6 bygger upp en komplext träd med mÃ¥nga subnoder. Trädet processas sedan nerifrÃ¥n och upp – pÃ¥ nÃ¥got sätt. Det ser komplicerat och kostsamt ut. Men enligt Rivest & Co skall det gÃ¥ att enkelt serialisera processningen för att köra pÃ¥ smÃ¥ processorer, och samtidigt parallellisera för hög prestanda pÃ¥ multicore-maskiner och i hÃ¥rdvara.

I dag presenterades en annan kandidat kallad Skein. Skein är skapad av Niels Ferguson, Stefan Lucks, Bruce Schneier, Doug Whiting m.fl. Enligt en postningen om Skein på Schneiers webbplats är hafunktionen byggd på ett blockkrypto kallad Threefish (vilket borde betyda släktskap med Blowfish och Twofish). Bruce skriver:


Skein is fast. Skein-512—our primary proposal—hashes data at 6.1 clock cycles per byte on a 64-bit CPU. This means that on a 3.1 GHz x64 Core 2 Duo CPU, Skein hashes data at 500 MBytes/second per core—almost twice as fast as SHA-512 and three times faster than SHA-256…

Skein is secure. Its conservative design is based on the Threefish block cipher. Our current best attack on Threefish-512 is on 25 of 72 rounds, for a safety factor of 2.9…

Skein is simple. Using only three primitive operations, the Skein compression function can be easily understood and remembered. The rest of the algorithm is a straightforward iteration of this function.

Skein is flexible. Skein is defined for three different internal state sizes—256 bits, 512 bits, and 1024 bits—and any output size. This allows Skein to be a drop-in replacement for the entire SHA family of hash functions. A completely optional and extendable argument system makes Skein an efficient tool to use for a very large number of functions: a PRNG, a stream cipher, a key derivation function, authentication without the overhead of HMAC, and a personalization capability.

Jag planerar att komma med mer detaljerad information när kandidaterna officiellt publicerat. Men det börjar dra ihop sig och det börjar se spännande ut.

P != NP !?

October 29th, 2008

Jag satt och surfade spännande artiklar på fantastiska arXiv och sprang på en märklig artikel.

Artikeln P is not equal to NP av Sten-Åke Tärnlund verkar hävda att den bevisar att P är skilt från NP.

P != NP

Vad det handlar om är alltså den del av komplexitetsteori som säger att det antagligen finns problem som inte går att beräkna på polynomiell tid, dvs en separat klass med problem som för trivialt antal element inte går att beräkna svaret på. Det har länge spekulerats att NP inte är en del av P och frågan är av sådan betydelse att det finns ett pris på en miljon USD för den som kan visa att NP är skilt från P.

Skälet till att detta är så intressant för IT-säkerhet är att det finns ett antal algoritmer där säkerheten beror på att problemen är NP-hårda. Ett sådant problem är Knapsack-problemet som används i kryptosystem med publika nycklar. Över huvud taget görs ofta antaganden om att algoritmer är NP-hårda, och därmed att NP-problem egentligen inte är P-problem. Wikipedia ger ett bra exempel:


Consider, for instance, the subset-sum problem, an example of a problem which is “easy” to verify, but whose answer is believed (but not proven) to be “difficult” to compute. Given a set of integers, does some nonempty subset of them sum to 0? For instance, does a subset of the set {−2, −3, 15, 14, 7, −10} add up to 0? The answer “yes, because {−2, −3, −10, 15} add up to zero”, can be quickly verified with a few additions. However, finding such a subset in the first place could take much longer. The information needed to verify a positive answer is also called a certificate. Given the right certificates, “yes” answers to our problem can be verified in polynomial time, so this problem is in NP.

An answer to the P = NP question would determine whether problems like the subset-sum problem are as “easy” to compute as to verify. If it turned out P does not equal NP, it would mean that some NP problems are substantially “harder” to compute than to verify.

Jag kan på tok för lite matte för att hänga med i Tärnlunds artikel. Den som fixar matten och kan kolla om det håller och om det gäller generellt eller ej får gärna höra av sig. Artikelns sammanfattning är kort och verkar hävda att generellt sett är P skilt från NP:


SAT !∈P is true, and provable in a simply consistent extension B′ of a first order theory B of computing, with a single finite axiomB characterizing a universal Turing machine. Therefore P !=NP is true, and
provable in a simply consistent extension B′′ of B.

SAT som artikeln hänvisar till är Boolean Satisfiability-problemet som tidigare visat sig vara NP-komplett. Det Sten-Åke verkat visa är hur detta resultat går att generalisera till alla NP-problem. Om jag fattar rätt.

Googlar jag på Sten-Åke Tärnlund hittar jag att han är (har varit?) professor i datalogi vid Uppsala universitet.

Avhandling om Informationssäkerhet i vården

October 15th, 2008

För några veckor sedan uppmärksammade GP att Rose-Mharie Åhlfeldt disputerat vid Högskolan i Skövde där hon forskat om Informationssäkerhet i vården.

Rose-Mharie Ã…hlfeldt
Rose-Mharie Ã…hlfeldt

DÃ¥ vÃ¥rden är nÃ¥got väsentligen alla medborgare kommer i kontakt med och att patienter pÃ¥ mÃ¥nga sätt redan befinner sig i en utsatt situation tyckte jag att Rose-Mharies avhandling lät relevant och spännande. Trots den del Googlande hittade jag inte avhandlingen. Men en snabb mailkontakt med Rose-Mharie gav länken till avhandlingen Information Security in Distributed Healthcare – Exploring the Needs for Achieving Patient Safety and Patient Privacy.

Jag har inte läst hela avhandlingen, men av det jag läst uppfattar jag det som att avhandlingen ger en rejäl genomlysning av de informationssäkerhetsproblem som finns inom vården. Inte minst viktigt är hur ny teknik och nya sätt att arbeta med utspridda vårdresurser gör det svårt att skydda patienternas integritet. Att över huvud taget hålla koll på var en patients information finns, vem som tittat på den och hur många kopior det finns verkar vara besvärligt och dåligt understött i nuvarande system. Rose-Mharie skriver:


The results show that a comprehensive view of the entire area concerning patient information management between different healthcare actors is missing. Healthcare, as well as patient processes, have to be analyzed in order to gather knowledge needed for secure patient information management.

Furthermore, the results clearly show that there are deficiencies both at the technical and the administrative level of security in all investigated healthcare organizations.

Avhandlingen innehåller en större introduktion som beskriver problemmiljön med aktörer, en sammanfattning av relevant lagstiftning, en beskrivning av informationssäkerhet i den specifika miljön samt definierar olika typer av problem som kan uppstå. Avhandlingen innehåller dessutom ett antal fallbeskrivningar och ett antal artiklar. I en av dessa konstaterar författaren att:


The municipalities do not have adequate experience handling care information and have not kept abreast with the development of systems handling this kind of information. The administration of authorizations is a problem in the municipalities. There is a large turnover of employees as well as different categories of employment positions with variant geographical range. It is unfortunate if choosing a more open strategy for authorization is because the administration is a burden.

Ett resultat jag tyckte var intressant är hur information och informationssäkerhet kan påverka patienters vilja att söka hjälp:


“increasing availability to patient information could also imply that patients do not search for care depending on that they don’t want to have their information available to everyone … that the healthcare personnel are not willing to make complete notes in the records because they are afraid of writing too much since so many other people can read it … this is what people have contacted us about” (respondent B)

Avhandlingen innehåller en rejäl bunt med rekommendationer och jag hoppas verkligen att vårdgivare på olika nivåer tar till sig av resultaten och rekommendationerna i avhandlingen. Tyvärr är det stor risk att det, speciellt på kommunal nivå inte finns utrymme eller ens kompetens att ta till sig avhandlingen resultat. Som författaren skriver:


The results also indicate a lack of IT-competence when the healthcare organization orders or develops a new IT-system. Who decides the competence need for the participants to be included in healthcare IT-
projects? Is there enough IT-proficiency and especially knowledge of information security within the ordering organization or is it necessary to consult expertise externally? According to Gaunt (2000) security education is necessary for the user of the IT-systems in healthcare.

But it is also necessary to ensure a high level of security education for healthcare persons involved in different IT-projects. If the organization does not have sufficient security competence they would benefit from involving other security experts when they create requirement specifications in order to achieve the successful implementation of new systems in healthcare.

Jag hoppas verkligen att Rose-Mharie Åhlfeldts avhandling leder till konkreta förändringar. Det här genuint viktiga frågor som berör enskilda personer, och avhandlingen är för bra för att hamna i ett kommun- eller landstingsarkiv.

Dagens HW-hack: Wolframs 30:e regel

October 13th, 2008

Jag fick en fråga om kryptorelaterade algoritmer som skulle kunna vara lämpliga att köra som exempel i en kurs om system-modellering. Tanken som jag förstod det var att på TLM-nivå simulera SW-funktioner som sedan flyttas till HW.

Intressanta algoritmer behöver både vara enkla att begripa och kunna ge stor skillnad i prestanda, genomströmning etc när funktionen flyttas från SW till HW. Utifrån detta var mitt förslag RC4 (som är enkel, men inte skalar speciellt bra i HW), XTEA, SHA-1 och SHA-2 (256).

Några andra algoritmer man borde kunna sätta i händerna på studenter är eSTREAM-kryptona Grain och Trivium. Båda dessa krypton är relativt enkla att förstå, har intressanta explicita skalbarhetsegenskaper och är välspecificerade med testvektorer, referensmodeller etc.

Sedan slog det mig att en annan, något annorlunda algoritm som skulle kunna användas är Stephen Wolframs cellautomat Rule 30.

Rule 30 är en endimensionell cellautomat som ger upphov till ett slumpmässigt (PRNG) mönster. Rule 30 används som slumptalsgenerator i Wolfram Research Mathematica. En fördel med att använda en endimensionell cellautomat är att den enkelt går att rita upp och grafiskt verifiera.

Rule 30
De första iterationerna av regel 30 samt de styrande tillståndskombinationerna.

En annan kul egenskap är att algoritmen är trivialt parallelliserbar, detta då alla celler kan uppdateras samtidigt. Antagligen går det att göra bra SW-implementationer, inte minst om man tar till SSE-instruktioner alt GPU-acceleration, men en ren HW-implementation blir väldigt enkel.

Jag blev så inspirerad av Rule 30 att jag satte mig ned och hackade ihop ett par implementationer. Först en version i Python (naturligtvis) för att få koll på att jag tänkte rätt. Det blev inte speciellt många rader kod, ca 20 inkl kommentarer. Och jag är säker på att om man är en riktig Pythonista går algoritmen att stampa ner till ett fåtal rader kod, ex med lite list comprehensions.

Sedan hackade jag ihop en RTL-generator (i Python) som kan generera Verilogkod för en Rule30-automat med godtyckligt antal bitar. Den genererade konstruktionen består väsentligen av ett tillståndsregister med en bit för varje cell. För varje cell finns det sedan en enbitars 8-till-1-MUX som implemeterar uppdateringsregeln.

En sak man behöver fundera på är vad som händer för första resp sista biten i arrayen. Jag har valt att göra en ring av arrayen. Detta innebär att vid uppdatering av den högsta biten tittar vi på bit 0 och tvärs om. Implementationsmässigt innebär detta två separata ledningar som går från kant till kant, inte bara lokalt mellan ett cellregisters närmaste grannar.

Jag genererade några stycken versioner av min Rule 30-konstruktion och använde sedan Alteras verktyg Quartus II för att implementera konstruktionen i en Cyclone II-FPGA. Lite resultat:


256 bitar: 687 LEs, 263 MHz
128 bitar: 344 LEs, 358 MHz
64 bitar: 128 LEs, 420 MHz
32 bitar: 64 LEs, 420 MHz
16 bitar: 32 LEs, 420 MHz
8 bitar: 16 LEs, 420 MHz

(Notera att implementationen kräver lika många register som bitar, jag redovisar dock inte det här.)

En snabb analys ger att varje MUX (samt logik för att ladda in ett användarstyrt initialvärde) implementeras med två logikelement (LE). Mellan 64 och 128 bitar ser det ut som att någon form av replikering behöver införas.

Vad gäller klockfrekvensen är 420 MHz max som Cyclone II är specad för. I en annan FPGA, ex Stratix III går det antagligen att få upp klockfrekvensen ytterliggare en bit. Eftersom uppdateringsfunktionen för resp bit består av en 8-1-MUX med ett grinddjup motsvarande ungefär tre NAND2-grindar eller en LE, blir det transportfördröjningen genom FPGA:ns switchnät som sätter gränsen för klockfrekvensen.

Nu är Rule 30 inte en kryptografiskt säker PRNG, men för att vara en PRNG som ger så bra slumpserier så att den duger för Mathematica förbrukar den väldigt lite resurser. Och med 256 PRNG-bitar varje cykel i 263 MHz får vi 67 Gbit/s! (Vilket skulle vara hopplöst att få ut på ett kort och använda utanför FPGA:n.)

Jag tänker slänga upp en version av Verilogkoden, antigen här eller hos InformAsic. Återkommer med det. Nästa steg är att att bygga ut generatorn med stöd för resursdelning, men det gör jag inte i kväll i alla fall.

Att cellautomater har försökt användas i kryptosammanhang finns det flera artiklar som vittnar om. Jag hittade en färsk sådan med titeln LCASE: Lightweight Cellular Automata-based
Symmetric-key Encryption
som just tar upp Rule 30. Värd att läsa om du vill veta mer.

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.

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.

Ännu en stor attack på MD5

August 31st, 2008

Det har kommit så många olika typer av attacker på hashfunktionen MD5 att man nästan skulle kunna tycka att liket borde få vila i frid. (Bara IACR listar 21 artiklar om MD5.) Men fortfarande används MD5, fortfarande publicerades det nya artiklar om attacker på och svagheter hos MD5.

Den första riktigt stora attacken mot MD5 var den artikel av Wang, Feng och Yu som 2004 presenterade kollisioner mot MD5, HAVAL och RIPEMD.

En av mina sommarläsningsartiklar var A New Collision Differential For MD5 With Its Full Differential Path av Tao Xie, DengGuo Feng och FangBao Liu. Skälet till att jag valde att läsa den är att den inte känns som en i gänget av alla som smånyper lite i sidan på MD5. Nej här handlar det om ett frontangrepp. Mer specifikt hävdar författarna att dom hittat en ny, komplett kollision mot MD5. Författarna skriver:


Since the first collision differential with its full differential path was presented for MD5 function by Wang et al. in 2004, renewed interests on collision attacks for the MD family of hash functions have surged over the world of cryptology. To date, however, no cryptanalyst can give a second computationally feasible collision differential for MD5 with its full differential path, even no improved differential paths based on Wang’s MD5 collision differential have appeared in literature.

Firstly in this paper, a new differential cryptanalysis called signed difference is defined, and some principles or recipes on finding collision differentials and designing differential paths are proposed, the signed difference generation or elimination rules which are implicit in the auxiliary functions, are derived.

Then, based on these newly found properties and rules, this paper comes up with a new computationally feasible collision differential for MD5 with its full differential path, which is simpler thus more understandable than Wang’s, and a set of sufficient conditions considering carries that guarantees a full collision is derived from the full differential path.

Finally, a multi-message modification-based fast collision attack algorithm for searching collision messages is specialized for the full differential path, resulting in a computational complexity of 2**36 and 2**32 MD5 operations, respectively for the first and second blocks. As for examples, two collision message pairs with different first blocks are obtained.

Artikeln är tjock, med massor av information. Bland annat finns ett appendix med den kompletta differensvägen (om man skall tro artikeln) samt regler för att skapa kollisioner. Jag kan lätt erkänna att jag som lekman inte hängde med hela tiden, och det berodde inte bara på att skallen var i semester-mod.

Frågan man bör ställa sig är vad artikeln kommer att innebära. Som det verkar går det nu att på rimlig tid (även om 2**36 MD5-operationer inte görs i en handvändning) skapa kollisioner. Detta ökar risken för att den här typen av attackvektorer börjar utnyttjas. Men i vilka sammanhang kan detta vara ett problem?

Informationsläckage i register

August 30th, 2008

Ström-, spänning- och effektbaserade sidoattacker på digitala hårdvaruimplementationer har tidigare fokuserat på logikdelen av implementationen. Ett exempel är attacker mot implementationer där det i algoritmen förekommer en multiplikator.

Antalet bitomslag i en multiplikator varierar väldigt mycket beroende på vilka operander som används. Denna varians ger i sin tur upphov till mätbara varianser på strömförbrukningen. Ett exempel på den här typen av attack beskrivs i artikeln DPA on n-Bit Sized Boolean and Arithmetic Operations and Its Application to IDEA, RC6, and the HMAC-Construction.

En av mina sommarläsningsartiklar var Information Leakage of Flip-Flops in DPA-Resistant Logic Styles och i den presenteras en sidoattack mot de register i en hårdvaruimplementation som används för att lagra interntillståndet. Författarna till artikeln skriver i sammanfatttningen att:


We show that many of the proposed side-channel resistant logic styles still employ flip-flops that leak data-dependent information. Furthermore, we apply simple models for the leakage of masked flip-flops to design a new attack on circuits implemented using masked logic styles.

Contrary to previous attacks on masked logic styles, our attack does not predict the mask bit and does not need detailed knowledge about the attacked device, e.g., the circuit layout. Moreover, our attack works even if all the load capacitances of the complementary logic signals are perfectly balanced and even if the PRNG is ideally unbiased.

Finally, after performing the attack on DRSL, MDPL, and iMDPL circuits we show that single-bit masks do not influence the exploitability of the revealed leakage of the masked flip-flops.

Med andra ord visar artikeln att även om implementationen innehåller olika typer av mekanismer för att skydda logikdelen mot siodoattacker läcker implementationen ändå information via registren.

En flanktriggad D-vippa. Kallas även (D-register eller bara register då det är den absolut vanligaste typen av register som används.

Uppbyggnaden av en D-vippa.
En D-vippa byggd med NAND-grindar.

Artikeln visar att den grundläggande struktur som alla processleverantörer (de företag som erbjuder kretstillverkning) har i sina cellbibliotek för en D-registret regerar olika när den läser in (sample) och låser (hold) ett nytt värde dels beroende på om det är en etta eller en nolla, och beroende på vilket värde (noll eller ett) som redan låg i registret.

Artikeln använder dessa skillnader i registren för att ta fram två olika attackmetoder och applicerar dessa på testkonstruktioner som är skyddade med tidigare publicerade metoder mot sidoattacker. Att döma av artikeln fungerar metoderna för att plocka ut information. Författarnas slutsats är att:


Since most of the prior analysis of side-channel resistant logic styles focused on the combinational logic, so did the research to improve those logic styles. We think it is time to switch the focus of research to find methods for designing side-channel resistant flip-flops with a decent area and power consumption and a low impact on the operation frequency.

One possible approach could be combining semi-custom design for combinational logic with full-custom flip-flop design.

Jag håller inte riktigt med om att en bra lösning kan baseras på full-custom-register, det skalar på tok för dåligt. Även om full-custom-delen begränsas till de delar i konstruktionen där säkerhetsfunktioner implementeras blir det snabbt väldigt mycket mer arbete. Dessutom skulle det bli lättare att identifiera säkerhetsimplementationen på kretsytan, detta då full-custom-logik har ett distinkt utseende.

Jag tror att artikeln skall tas som utgångspunkt för att ta reda på hur register i cellbibliotek görs immuna mot den här typen av informationsläckage.

En intressant fråga är hur man som konstruktör skall göra när man har än mindre kontroll över regsistrens fysiska uppbyggnad än med cellbaserad kretsteknik. Mer specifikt i FPGA:er. Går det exempelvis använda par eller grupper av register för att skapa sidoattackresistenta register?

Jag såg att det precis publicerades en ny artikel på IACR som beskriver en metod för att skydda implementationer av RSA mot sidoattacker. Jag gissar att den metod som presenteras i artikeln inte är skyddad mot registerattacken. Det finns i alla fall ingen referens till registerattacken.