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
January » 2008 » Kryptoblog

Archive for January, 2008

Helix, ett krypto på Viagra

January 26th, 2008

Aloha!
(Jag misstänker att den här postningen riskerar att fastna i div skräpfilter…)

Kollegan och polaren I tog för några dagar sedan en titt på kryptot Helix.

Helix är ett strömkrypto utvecklat av bland andra Bruce Schneier och Niels Ferguson. Några av de intressanta egenskaperna med Helix är att det är ett snabbt krypto med låga resurskrav och att den har ett inbyggt stöd för meddelandeautenticering (MAC). Tillsammans gör detta Helix itressant att titta på för inbyggda system.

Det I upptäckte när han började läsa igenom artikeln som specificerar Helix var att det bland annat skall finnas testvektorer och en referensimplementation. Schneier & Co skriver:


The authors will maintain a web site at http://www.macfergus.com/helix with news, example code, and test vectors.

Men det man får när man går till den webbplatsen är inte testvektorer, utan saker av det här slaget:

Viagra-bild

Någonting har uppenbarligen hänt med Niels Fergsons webbplats. Whois visar att macfergus.com ägs MacFergus BV och senaste uppdateringen skedde i mitten av januari. Men MacFergus verkar inte ha speciellt mycket att göra med ägarna till phentermine-google.com, vilket är där man landar.

Schneier har kontaktats. Förhoppningsvis blir det här fixat i närtid. Jag skulle dock gärna se att testvektorer och referensimplementationen flyttas till samma ställe som specifikationen för Helix.

Sedan kan man iofs fundera på om Helix i dag är ett bra val. Det har så vitt jag vet inte publicerats några analyser som visar på svagheter med Helix, men för dess syskon eSTREAM-kandidaten Phelix finns det problem.

Uppdatering 2008-01-31
Jag har fått ett svar från Niels Ferguson som säger att han skall ta tag i sin webbplats. Har dock inte hänt något uppenbart än.

Tre nya bloggar i blogglistan

January 23rd, 2008

Jag har lagt till tre nya bloggar i blogglistan på Kryptoblog

TaoSecurity är en blog av Richard Bejtlich som handlar om FreeBSD nätverkssäkerhet, övervakning, incidenthantering och forensik.

SMBlog är en blog av Steven M. Bellovin, professor inom IT-säkerhet vid Columbiauniversiteten i USA.

SMB

Steven skriver mycket om forskningsnära frågor och nyheter. Som Steven sammanfattar sitt intresse: Networks, security, and especially why the two don’t get along.

Emergent Chaos är en blog om säkerhet, integritet, frihet och ekonomi. Bloggen skrivs av en grupp författare, bland annat Adam Shostack och Chris Walsh.

Jag hoppas att ni som läser Kryptoblog hittar nya spännande saker att läsa via dom här blogglänkarna.

Gamla kryptopatent

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.

Koda säkrare med CERT

January 22nd, 2008

CERT har ett pågående projekt för att utveckla kodningsregler och rekommendationer för att skriva säkrare program i C och C++. Reglerna utvecklas som ett öppet projekt och utvecklingen sker på projektets webbplats.

Här hittar du reglerna för C-kod och här hittar du reglerna för C++-kod.

Reglerna tar upp ett stort antal aspekter, vilket en snabb lista med kategorierna för C-kod visar:


01. Preprocessor (PRE)

02. Declarations and Initialization (DCL)

03. Expressions (EXP)

04. Integers (INT)

05. Floating Point (FLP)

06. Arrays (ARR)

07. Characters and Strings (STR)

08. Memory Management (MEM)

09. Input Output (FIO)

10. Temporary Files (TMP)

11. Environment (ENV)

12. Signals (SIG)

13. Error Handling (ERR)

14. Miscellaneous (MSC)

50. POSIX (POS)

99. The Void

Under de olika kategorierna kommer sedan ett antal regler som alla följer en gemensam form med beskrivning exempel, analys av säkerhetsproblem och referenser. Ett exemåel är INT07-A. Only use signed or unsigned char type for numeric values:


The three types char, signed char, and unsigned char are collectively called the character types. Compilers have the latitude to define char to have the same range, representation, and behavior as either signed char or unsigned char. Irrespective of the choice made, char is a separate type from the other two and is not compatible with either.

Only use signed char and unsigned char types for the storage and use of numeric values, as this is the only way to (portably) guarantee the signedness of the character types.
Non-Compliant Code Example

In this non-compliant code example, the char-type variable c may be signed or unsigned. Assuming 8-bit, two’s complement character types, this code may either print out i/c = 5 (unsigned) or i/c = -17 (signed). As a result, it is much more difficult to reason about the correctness of a program without knowing if these integers are signed or unsigned.

char c = 200;
int i = 1000;
printf(“i/c = %dn”, i/c);

Compliant Solution
In this compliant solution, the variable c is declared as unsigned char. The subsequent division operation is now independent of the signedness of char and consequently has a predictable result.

unsigned char c = 200;
int i = 1000;
printf(“i/c = %dn”, i/c);

Risk Assessment
This is a subtle error that results in a disturbingly broad range of potentially severe vulnerabilities.
Recommendation Severity Likelihood Remediation Cost Priority Level
INT07-A 2 (medium) 2 (probable) 2 (medium) P8 L2

Related Vulnerabilities
Search for vulnerabilities resulting from the violation of this rule on the CERT website.

References
[ISO/IEC 9899-1999] Section 6.2.5, “Types”
[MISRA 04] Rule 6.2, “Signed and unsigned char type shall be used only for the storage and use of numeric values”

Det finns även en bok från CERT på området av Robert C. Seacord:
Boken

För den som har bråttom har CERT även en lista på de tio viktigaste generella reglerna, regler som inte bara går att applicera på C och C++:


1. Validate input. Validate input from all untrusted data sources. Proper input validation can eliminate the vast majority of software vulnerabilities. Be suspicious of most external data sources, including command line arguments, network interfaces, environmental variables, and user controlled files [Seacord 05].

2. Heed compiler warnings. Compile code using the highest warning level available for your compiler and eliminate warnings by modifying the code [C MSC00-A, C++ MSC00-A].

3. Architect and design for security policies. Create a software architecture and design your software to implement and enforce security policies. For example, if your system requires different privileges at different times, consider dividing the system into distinct intercommunicating subsystems, each with an appropriate privilege set.

4. Keep it simple. Keep the design as simple and small as possible [Saltzer 74, Saltzer 75]. Complex designs increase the likelihood that errors will be made in their implementation, configuration, and use. Additionally, the effort required to achieve an appropriate level of assurance increases dramatically as security mechanisms become more complex.

5. Default deny. Base access decisions on permission rather than exclusion. This means that, by default, access is denied and the protection scheme identifies conditions under which access is permitted [Saltzer 74, Saltzer 75].

6. Adhere to the principle of least privilege. Every process should execute with the the least set of privileges necessary to complete the job. Any elevated permission should be held for a minimum time. This approach reduces the opportunities an attacker has to execute arbitrary code with elevated privileges [Saltzer 74, Saltzer 75].

7. Sanitize data sent to other systems. Sanitize all data passed to complex subsystems [C STR02-A] such as command shells, relational databases, and commercial off-the-shelf (COTS) components. Attackers may be able to invoke unused functionality in these components through the use of SQL, command, or other injection attacks. This is not necessarily an input validation problem because the complex subsystem being invoked does not understand the context in which the call is made. Because the calling process understands the context, it is responsible for sanitizing the data before invoking the subsystem.

8. Practice defense in depth. Manage risk with multiple defensive strategies, so that if one layer of defense turns out to be inadequate, another layer of defense can prevent a security flaw from becoming an exploitable vulnerability and/or limit the consequences of a successful exploit. For example, combining secure programming techniques with secure runtime environments should reduce the likelihood that vulnerabilities remaining in the code at deployment time can be exploited in the operational environment [Seacord 05].

9. Use effective quality assurance techniques. Good quality assurance techniques can be effective in identifying and eliminating vulnerabilities. Penetration testing, fuzz testing, and source code audits should all be incorporated as part of an effective quality assurance program. Independent security reviews can lead to more secure systems. External reviewers bring an independent perspective; for example, in identifying and correcting invalid assumptions [Seacord 05].

10. Adopt a secure coding standard. Develop and/or apply a secure coding standard for your target development language and platform.

Nu gäller det bara att till sig allt och börja applicera det också...

Lite statistik för eSTREAM-kandidater

January 21st, 2008

Jag sitter och söndagsfunderar på vilka eSTREAM-kandidater i fas tre som till slut blir rekommenderade strömkrypton.

eSTREAM

Det vi borde kunna göra är att titta på de utvärderingar som gjorts så här långt. Vi behöver titta både på prestanda och komplexitet samt hur man vid avslut av fas två röstat – vilka kandidater som tidigare varit mest populära. Här är en sammanställning av fas tre-kandidaterna och det viktade röstresultatet:


SW-profil
Salsa20 1.80
SOSEMANUK 1.03
HC 128/256 1.08
LEX 0.90
Rabbit 0.88
Dragon 0.47
CryptMT 0.29
NLS -0.60

HW-profil
Grain 1.63
Trivium 1.54
Mickey128 0.66
F-FCSR 0.29
LEX 0.21
Mickey 0.11
Edon80 0.00
Pomaranch −0.38
DECIM −0.39
Moustique −0.65

För de kandidater som förekommer flera gånger (ex Salsa20) har jag valt att ta det värde som är högst. Här ser vi att Salsa20 ligger i topp för SW-profilen följd av SOSEMANUK och HC. CryptMT och NLS är de minst populära SW-kandidaterna.

I HW-profilen ligger Grain i topp, tätt följd av Trivium och MICKEY. I botten ligger DECIM och Moustique.

Ett annat sätt att mäta skulle kunna vara att titta på antalet artiklar med resultat från någon form av kryptanalys samt antalet uppdateringar som har kommit till specifikationen för kandidaten.

Visst, eftersom artiklarna innehåller så otroligt skilda resultat blir det att jämföra apelsiner med lime och chili (eller nåt). Men jag tycker ändå att detta bör vara relevant. Har det uppdagats många svagheter och modifieringar till specifikationen tror jag att den kandidaten är mindre intressant än en som visat sig vara stabil.

Jag gjorde en snabb sammanställning baserad på vad som publicerats hos eSTREAM för respektive kandidat vad gäller kryptanalys och uppdatering av specifikationerna och fick följande:


CryptMT: 2
Dragon: 3
HC: 0
LEX: 3
NLS: 3
Rabbit: 2
Salsa20: 5
SOSEMANUK: 2
DECIM: 2
Edon80: 6
F-FCSR: 3
Grain: 3
MICKEY: 2
Moustique: 2
Pomaranch: 9
Trivium: 5

Här sticker HC ut genom att det inte kommit en enda artikel med kryptanalys som visar på någon svaghet. Pomaranch och Edon80 å andra sidan är de kandidater med flest publicerade resultat från kryptanalys samt uppdateringar till specifikationen. Dock kommer det på FSE 2008 att publiceras två artiklar med analysresultat för Salsa20 samt en för Trivium, vilket gör att dessa seglar upp i statistiken.

Skall man utifrån dessa två datamängder försöka sig på en gissning skulle jag tro att HC kommer att vara en av de krypton från SW-profilen eSTREAM kommer att rekommendera. För HW-profilen skulle jag satsa mina slantar på minst en av Grain, Trivium eller MICKEY.

Vad tror du?

Superhunden Krypto

January 20th, 2008

(Japp, det är helg… ;-)

Googlade lite och insåg att Stålmannen faktiskt använde krypto för att utföra sina stordåd. Superhunden Krypto för att vara exakt.

Krypto

Svårt att säga vilken sorts kryptoras det är frågan om – ser ju rätt symmetrisk ut. Till skillnad från andra krypton har Krypto har tydligen en egen sång:


Krypto, Krypto the Superdog. Krypto, Krypto the Superdog.
It’s Superdog time.

He’s a super dog. He’s a super hero.
He came to Earth from outer space and his name is Krypto.
He’s super strong. He’s super brave.

He’s Krypto, Krypto the Superdog. Krypto, ruff, ruff, and away.
Krypto, Krypto the Superdog. Krypto, ruff, ruff, and away.
He’s super smart in every way.

He’s Krypto, Krypto the Superdog. Krypto, ruff, ruff, and away.
Krypto, Krypto the Superdog.

See that super dog flying through the air.
He’s got super powers. Bad guys beware!
Krypto, Krypto the Superdog!

Inte helt lätt att dechiffrera…

Creeper fångar kristdemokrater

January 18th, 2008

Creeper

Creeper, övervakningstjänsten skapad av Patrik Wallström har loggat att någon hos Kristdemokraterna surfat till en webbplats känd för sitt pornografiska innehåll. Creeper har fångat upp att någon med IP-adresser tillhörande Kristdemokraternas kansli har surfat till webbplatsen Knullis.

KDs kansli

Kristdemokraternas partisekreterare Lennart Sjögren kommenterar händelsen:


Väldigt olämpligt att använda partiets datornät för den här typen av besök.

Lennart, är det inte olämpligt att surfa till Knullis över huvud taget?

Dock är det intressant och spännande att se att Creeper faktiskt fortsatt fungerar.

Yahoo börjar stödja OpenID

January 18th, 2008

Yahoo Inc meddelade att man nu börjar stödja inloggning med OpenID på sina webbplatser. Detta innebär att login på exempelvis Yahoo eller Flickr kommer att gå att göra med OpenID.

OpenID-logga

OpenID är en teknik för att skapa login på olika tjänster/webbplatser som inte bygger på traditionellt identitet+lösenord som användaren behöver komma ihåg. OpenID bygger på att det finns servrar som är identitetsleverantörer (Identity Providers – IdP) som används av olika tjänster för att autentisera användarna. Wikipedia har en bra beskrivning av OpenID väl värd att titt på om man vill veta mer.

Svenska Yubico bygger en USB-nyckel som kan användas för login med OpenID. Jag har tidigare skrivit om ett enkelt test av Yubicos Yubikey.

En av de första webbplatserna i sverige som stödjer OpenID är minaflaskor.se. Men vilka andra tjänster och webbplatser använder OpenID?

I en tid där enkla lösenord knäcks och sprids åt alla möjliga håll är det bra att se att alternativa lösningar börjar få spridning.

Nej, OpenID är inte det säkraste systemet i världen. Men jämför man med inloggningar med sigge både som identitet och lösenord som dessutom används på flera olika webbplatser är OpenID mycket, mycket bättre. Då sprids det inte lika lätt på Flashback…

Ännu en attack på RC4

January 18th, 2008

IACR dök det nyligen upp ännu en artikel med en attack på RC4. Jag trodde först att detta var en av artiklarna som kommer att presenteras på FSE 2008, men det är det inte, istället verkar det vara en artikel för EUROCYPT 2008 senare i år.

Artikeln New State Recovering Attack on RC4 av Alexander Maximov and Dmitry Khovratovich beskriver en metod som utifrån en kodsekvens genererad av RC4 kan ta fram det interna tillståndet och därmed nyckeln. Den nya metoden är snabbare än en uttömmande sökning. Författarna skriver:


The stream cipher RC4 was designed by R.~Rivest in 1987, and it has a very simple and elegant structure. It is probably the most deployed cipher on the Earth.

In this paper we analyse the class RC4-$N$ of RC4-like stream ciphers, where $N$ is the modulus of operations, as well as the length of internal arrays.

Our new attack is a state recovering attack which accepts the keystream of a certain length, and recovers the internal state. For the original RC4-256, our attack has the total complexity around $2{241}$ of operations, whereas the best previous attack needs $2{779}$ of time.

Moreover, we show that if the secret key is of length $N$ bits or longer, the new attack works faster than an exhaustive search. The algorithm of the attack was implemented and verified on small cases.

Det börjar bli förvirrande många attacker på RC4. Det skulle vara intressant att se en artikel som på ett bra sätt sammanställer alla olika attacker och visar relationen mellan attackerna samt vad man skulle kunna göra om man kombinerade attackerna.

FSE 2008 och slutspurt i eSTREAM

January 11th, 2008

Det börjar bli dags för årets upplaga av konferensen Fast Software Encryption (FSE) – mer exakt 10-13 februari i Lausanne, Schweiz. På konferensens webbplats finns nu ett preliminärt program och en lista med godkända artiklar. Tittar man på dessa sidor ser det ut att presenteras en hel del intressanta saker.

En första observation är att trenden sedan ett par år tillbaka med analyser/attacker mot olika hashfunktioner fortsatt håller i sig. Bland artiklarna finns bland annat de här:


MD4 is Not One-Way
Collisions on SHA-0 in one hour
Improved indifferentiability security analysis of chopMD Hash Function
Collisions for step-reduced SHA-256
New Techniques for Cryptanalysis of Hash Functions and Improved Attacks on Snefru
A (Second) Preimage Attack on the GOST Hash Function
Second Preimage Attack on 3-Pass HAVAL and Partial Key-Recovery Attacks on NMAC/HMAC-3-Pass HAVAL
Cryptanalysis of LASH

Av dessa är väl kollisioner mot SHA-256 det mest intressanta resultatet.

FSE 2008 är även en av de sista stora konferenserna innan eSTREAMprojektet skall avslutas. Därför är det extra intressant att se att det dyker upp resultat mot några av eSTREAMfinalisterna:


New Features of Latin Dances: Analysis of Salsa, ChaCha, and Rumba
Pen-and-Paper Collisions for the Full Salsa20 Hash Function

Differential Fault Analysis of Trivium

Här är det alltså frågan om två separata grupper som hittat problem med Salsa20 och dess släktingar ChaCha och Rumba. Dessa resultat är mycket intressanta av flera skäl. Salsa20 är nämligen inte bara en finalist i eSTREAM, utan dess släktingar ChaCha och Rumba är kompressions- och hashfunktioner skapade av Daniel J Bernstein.

Dessa funktioner är försök till avsteg från Merkele-Damgård-strukturen och finns även i andra, relativt nya strömkrypton och hashfunktioner, ex Schneiers Helix/Phelix. Om det visar sig att denna struktur har grundläggande fel finns det flera algoritmer som kan sitta pyrt till.

Att döma av hur Daniel J Bernstein brukar reagera gissar jag att om han är på FSE 2008 inte kommer att låta de här artiklarna stå obesvarade.

Vad gäller Trivium, har bloggen Cryptanalysis tidigare publicerat delar av det resultat som antagligen kommer att presenteras på konferensen. Resultaten är baserade på en förenklad variant av Trivium, men är ändå mycket intressanta.

Ett skäl till detta är att Trivium, precis som Salsa20 är ett försök att hitta en ny struktur. Som artikeln som specar Trivium beskriver det: Trivium is a hardware oriented synchronous stream cipher. It was designed as an exercise in exploring how far a stream cipher can be simplified without sacrificing its security, speed or flexibility.

Ok, det var eSTREAM-finalisterna. Konferensen inkluderar även en del resultat vad gäller blockkrypton:


Experiments on the Multiple Linear Cryptanalysis of Reduced Round Serpent
A Meet-in-the-Middle Attack on 8-Round AES
Impossible Differential Cryptanalysis of CLEFIA

Här är det väl ganska uppenbart att attacken mot en reducerad version av AES är det mest intresssanta.

CLEFIA är ett blockkrypto som Sony utvecklat för att skydda digitala media (Digital Rights Management – DRM). CLEFIA presenterades på FSE 2007, dvs förra året. Och nu kommer det alltså en kryptanalys.

Ett annat område med ett par intressanta artiklar är slumptalsgeneratorer.


Post-processing functions for a biased physical random number generator
How to Encrypt with a Malicious Random Number Generator

Den i mitt tycke mest intressanta artikeln här är den andra. Skälet till detta är att för inte så länge sedan presenterade Bruce Ferguson och en kollega resultat som pekade på att en av de NIST-specificerade slumptalsgeneratorerna (PRNG) innehåller en bakdörr. Den här artikeln verkar visa på att man med rätt metod kan lita på sina kryptonycklar även om man inte litar på slumptalsgeneratorn.

Den sista kategorin artiklar handlar om det gamla sorgebarnet RC4:


New Form of Permutation Bias and Secret Key Leakage in Keystream Bytes of RC4
Efficient Reconstruction of RC4 Keys from Internal States

Det verkar som om detta stackars strömkrypto inte får vila i frid, utan att folk är framme och sparkar på liket… Å andra sidan är RC4 ett krypto som används väldigt mycket så liket lever antagligen tyvärr på tok för mycket.

Som sagt, det ser ut att bli en mycket spännande konferens – även om det kanske inte är lika spännande som det här:

Vardagsedge.

Som Månster uttryckte det: Vardagsedge!.