Archive for October, 2008

Strömkryptot Snow i Python

October 30th, 2008

Min nya hobby att implementera krypton i programspråket Python har den senaste veckan gjort att jag pillat med kryptot Snow.

Snow är ett strömkrypto av Thomas Johansson och Patrik Ekdahl vid LTH. Den version av Snow jag implementerat är Snow 2.0 som kom 2002. Snow 2.0 var en av kandidaterna till NESSIE-projektet och har även använts som jämförelse med kandidater i eSTREAM.

Det finns en nyare version av Snow kallad Snow 3G. Snow 3G är det krypto som används som bas i algoritmerna EUA2 och EIA2 för att säkra kommunikationen i 3G. Jag har ännu inte lagt in stöd för Snow 3G. En sådan förändring skulle dock vara relativt enkel – det som krävs är väsentligen att lägga till ett extra register i FSM:en.

Snow arbetar på 32-bitars ord och kryptot består i grunden av ett skiftregister (en LFSR-kedja) med 16 steg samt en tillståndsmaskin (FSM) med två 32 tillståndsregister – R1 och R2.

Uppdateringen av LFSR-kedjan sker genom återmatning av tidigare värden som mixas samman genom två multiplikationer, vilka är implementerade med tabeller. Uppdateringen av R2-registret i FSM:en sker genom en S-box (baserad på S-boxen i AES) där indata är värdet i R1. Totalt sett finns det sex stycken tabeller i den här implementationen av Snow.

Min implementation av Python är en fristående klass med metod load_key() för att ladda nyckel och IV, samt en metod gen_keyword() för att generera nästa nyckelströmsord. Klassen stödjer både 128- och 256-bitars nyckel.

LFSR-kedjan och FSM:en är sammankopplade på ett relativt intrikat sätt och att få ordning på ordningen i uppdateringen i ett sekventiellt program visade sig vara lite klurigt. Men genom att dumpa alla interna tillstånd gick det att få ordning på sekvenserna. Min implementation av Snow inkluderar därför en metod för att dumpa interntillståndet. När ett objekt av Snow skapas går det även att ange hur pratig (verbose) den skall vara när den utför en metod.

Ett litet exempel (hämtat från exempelkoden):

my_snow = Snow(False) my_key = [0×00000000, 0×00000000, 0×00000000, 0×80000000] my_iv = [0×00000000, 0×00000000, 0×00000000, 0×00000000] my_snow.load_key(my_key, my_iv) my_snow.gen_keyword()

Detta ger (med lite utskrifter och en loop):


key:
[0, 0, 0, 2147483648L]
iv:
[0, 0, 0, 0]
running key 0: 8d590ae9
running key 1: a74a7d05
running key 2: 6dc9ca74
running key 3: b72d1a45
running key 4: 99b0a083
running key 5: fb45d13f
running key 6: cf9411bd
running key 7: 9a503783
running key 8: a98265ae
running key 9: bf2dc77f
running key 10: f2eb41e4
running key 11: aa896508
running key 12: 19d8ab8f
running key 13: 2eb8077f
running key 14: 78f8c1f1
running key 15: 9d4c5ce2

Rent och snyggt gränssnitt om jag får säga det själv, HW-nisse som jag är (så vad vet jag?).

Jag har testkört på min laptop med 2GHz Core 2 Duo-processor. Generering av 10.000.000 värden tar 135 sekunder, vilket ger ungefär 295 kByte/s. Inte kanonsnabbt, men vill man ha en ren Pythonimplementation av en applikation där det finns ett behov av att skydda data med hjälp av ett bra krypto kanske den här implementationen kan vara användbar.

Min implementation av Snow finns på sidan för nedladdning. Det finns ett par korta exempel i main()funktionen med testvektorer för 128 och 256-bit nycklar hämtade från specifikationen för Snow 2.0.

Koden är BSD-licensierad och jag hoppas att den kommer till nytta. Mycket nöje!

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.

Vigselringkrypton

October 27th, 2008

För en dryg månad sedan postade jag om Cory Doctorows vigselringar designade av Bruce Schneier och Isabel Rucker samt den tävling i att utveckla krypton baserade på ringarna som de utlyste. Nu har tävlingen avgjorts.

Kryptovigselringar

Vinnaren blev Chris Smith och hans Figdet Protocol (länken går till en zipfil med dokumentation, c-kod, exempel samt en fräck simulator som går att bygga med pappersremsor. På andra plats kom Philippe Teuwen. Philippes bidrag, ett polyalfabetiskt substitutionsskiffer beskrivs utförligt på Philippes egen sida och inkluderar exempelkod i Python.

Avslöjande bilder på flygplatser i USA

October 27th, 2008

På Boingboing finns en tråd om det nya röntgen/genomlysnings/scannersystem som TSA i USA håller på att skaffa för att kunna se vad flygpassagerare gömmer under kläderna. Tråden på Boingboing pekar på en artikel hos Spiegel Online med lite avslöjande bilder.

TSA-snubbe kollar på pr0n.
Så här ser det ut när TSAs personal tittar på pr0n.

Passagerare i TSAs maskin.
En stackars passagerare instängd i TSAs maskin.

Passagerareren - nu på bild.
Samma passagerare så som TSAs anställda ser henne.

En annan passagerar som fastnat hos TSA.
En annan passagerare som fastnat i TSAs maskin.

Ännu en vacker bild.
Ytterligare en potentiell skurk som fastnat.

Allvarligt talat, kan man komma mycket närmare ett flagrant exempel på intrång i den personliga integriteten?

Är det detta vi måste stå ut med för att flyga? Och om du tror att detta egentligen löser ett säkerhetsproblem, läs Bruce Schneiers postningar om säkerhetskontroller på flygplatser och verklig säkerhet.

Risken att den här tekniken verkligen stoppar en terrorist är extremt liten – det kommer inte att ske. Risken att bilder på folk tagna i maskinen läcker ut och på olika sätt ställer till med obehag, används för utpressning och andra, mindre spektakulära brott däremot är antagligen rätt stor.

Fortsatt mailtvätt utomlands

October 27th, 2008

Pawal har följt upp sin postning för ett drygt år sedan om att SVT skickar all sin epost till England för att spamtvättas. Trots nya lagar både i Sverige och England samt uppmärksamhet i media verkar SVT inte ha ändrat sin taktik. Följer inte SVT med vad som händer?

Lyssna på nummerstationer

October 27th, 2008

Nummerstationer är radiostationer som sänder sekvenser av nummer, oftast upplästa av en artificialla röster. Källorna bakom dessa radiostationer är generellt sett okända och inte heller syftet med stationerna är kända. Den vanligaste förklaringen är att det är ett sätt för organisationer att skicka meddelanden till agenter som befinner sig på uppdrag på annan ort.

Number station.

Nummerstationer dök enligt Wikipedia upp redan under första världskriget, men finns även i dag. För den som är nyfiken kommer här lite information om nummerstationer (även om Wikipdias sida i sig är mycket bra). Radion NPR i USA har gjort ett reportage om nummerstationer. Den här sidan skriven av en radioamatör berättar om nummerstationer. Simon Mason har skrivit en bok kallad Shortwave Espionage som berättar om nummerstationer.

Det finns flera projekt som på olika sätt bevakar nummerstationer. The Conet Project innehåller en massa information om olika nummerstationer och där går det även att tanka hem och lyssna på olika inspelade meddelanden utsända av nummerstationer.

Det finns även de som försöker tolka och avkoda, dekryptera de meddelanden som skickas av nummerstationer. Två sådana sidor är Spynumbers samt The Number Stations Crack Challenge på Irdial.

Det finns musiker som tagit fasta på nummerstationer och gör musik av utsändningar från nummerstationer.

Att sitta en kulen och regnig kväll och lyssna på dessa röster är nästan lite kuslig. Ofta kvinnoröster eller vad som låter som barn som utan några variationer i betoning läser upp serier av nummer utan att man begriper varför och vad det betyder. Väldigt märkligt.

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.

rule30.py nu på nedladdningssidan

October 14th, 2008

Jag fick en fråga om jag kunde tänka mig att skicka över den Pythonkod för Stephen Wolframs cellautomat med uppdatering enligt regel 30 jag skrev om för någon dag sedan.

Detta fick mig att kasta ett getöga till på min fulkod. Jag insåg snabbt att koden behövde städas upp, och i samband med det byggde jag om den till att bli objektorienterad.

Koden innehåller en klass CellularAutomata() som tar en godtyckligt lång array med ettor och nollor som representerar initialtillståndet i cellerna i den endimensionella cellautomat arrayen skapar. Klassen tar även array med åtta ettor eller nollor som representerar uppdateringsreglerna för cellerna. I mainfunktionen skapas som ett exempel en liten automat för regel 30 genom instansiering av klassen.

För den som vill testa finns koden nu på nedladdningssidan här på Kryptoblog.

Kommentarer, tips och råd är högst välkomna.

XKCD om kopieringsskydd

October 14th, 2008

XKCD, en ypperligt nördig, filosofisk och rolig nätserie har en bild på varför kopieringsskydd (DRM) leder till ökad piratkopiering:

XKCD om kopieringsskydd.

Kopieringsskydd flyttar över rätten till (legal) användning till mediaföretagens väl och ve, och i kombination med lagstiftning som försöker skydda DRM-systemen blir det svårt för konsumenter att använda legalt anförskaffat media.

Ett exempel på hur absurt det kan bli i verkligheten är det DRM-system varahuskedjan Wal*Mart lanserade i USA och där kundernas mediaspelare behövde kontakta en server hos Wal*Mart för att mediat skulle gå att spela upp. När Wal*Mart, bestämde sig för att spara pengar genom att stänga av servern innebar detta att kundernas inköpta DRM-skyddade media skulle bli oanvändbar. Efter kritik har nu Wal*Mart ändrat sig och lovar att hålla liv i servern för evigt. Eller i alla fall en stund till…