Simovits

Side Channel – attacker (SCA)

I det här blogginlägget ska vi ta en närmare titt på en typ av attacker som kallas side-channel attacker eller sidoattack om vi ska försvenska ordet. Dessa typer av attack sker mot själva implementationen av datorer eller inbyggda system och inte direkt mot en applikation eller lösning. För att förenkla detta låt oss ta ett nytt exempel på ett hänglås. Detta hänglås har en fingeravtrycksläsare vilket ska göra att det inte ska kunna dyrkas. Så istället för att försöka angripa själva fingeravtrycksläsaren så analyseras låsets uppbyggnad. Då inser man ganska snabbt missen, att det går att öppna med en skruvmejsel. Alltså ett perfekt exempel på en sidoattack.

Möjligheter för sidoattacker

Om vi går över till den digitala världen så finns det ett stort antal typer av sidoattacker som kan genomföras. Bland annat kan de användas för:

Dessa typer av attacker möjliggör att man t.ex. kan ändra beteendet på en dator eller läsa ut information. Så låt oss nu gå igenom ett antal olika sidoattacker.

Timing attack

Baseras på att beräkna hur lång tid det tar för processor att utföra beräkningar. Detta kan genomföras t.ex. med att analysera hur lång tid det tar för en specifik del av ett program att köra. Låt oss ta en kodsnutt från wikipedia.

I den här kodsnutten jämförs två strängar med varje bokstav för sig. Det gör att loopen körs tills ett tecken är felaktigt, vilket leder till att loopen slutar. Detta gör att vi kan beräkna tiden för hur lång tid loopen tar och därmed gissa lösenordet med ett tecken i taget. Om den första strängen är ABCDE och vi gissar AB123 så kommer loopen sluta när vi har nått det tredje tecknet (1) och alltså kan det beräknas att vi gissat rätt på två bokstäver.

Cache attack

Denna attack bygger på möjligheten att utnyttja en dators cache eller möjligheten att läsa ut data ur dem. Nästan all läsning och skrivning till minnet på en dator kommer hamna i processorns cache. Detta gör det möjligt att genom denna attack t.ex. exfiltrera data, extrahera kryptonycklar, etc. Detta ger möjligheten att läsa ut cache-data som delas mellan CPU kärnor, virtuella maskiner eller användare.

Den vanligaste metodiken för cache-attacker är att:

Data remenence

I detta fall kan en attack utföras mot delar som kan innehålla kvarvarande data. Ett exempel på detta är cold-boot attacker, vilka innebär att RAM-minnet hos en dator kyls ned för att sedan utläsas från ett annat system, detta för att extrahera t.ex. krypteringsnycklar. Denna typ av attack fungerar för att ett RAM-minne håller data under en kort tid efter avstängning, denna typ av effekt kan förstärkas genom att kyla ned ramminnet, vilket leder till att data hålls längre och en extraktion kan genomföras.

Fault attacks

Den sista attacken vi kommer gå igenom är fel-attacker. Denna attack bygger på att ett fel kan injiceras i ett system. Dessa fel kan påverka en stor mängd delar:

Typiska tekniker för dessa attacker är:

Med hjälp av att införa dessa fel kan man få t.ex. processor att ta ett felaktigt beslut, välja fel gren i en programexekvering, införa ett fel i minnet eller modifiera en adress.

Summering

Det var en kortare översikt av sidoattacker. Förhoppningsvis kan det bli en del två av detta blogginlägg då vi testar att genomföra en eller flera sidoattacker. I sådant fall ska vi testa att experimentera lite med lite att injicera diverse fel på en Raspberry Pi.

Källor

http://geekologie.com/2018/06/high-security-a-fingerprint-padlock-that.php

https://conference.hitb.org/hitbsecconf2016ams/materials/D2T1%20-%20Anders%20Fogh%20-%20Cache%20Side%20Channel%20Attacks.pdf

https://en.wikipedia.org/wiki/Timing_attack