Erlig · Underlag 06

Brickan på dörrposten

Hur den ringer på hos den som bor där — och varför den inte går att kopiera.

Vad besökaren gör

På dörrposten sitter en liten rund bricka. Besökaren håller sin telefon mot den. En sida öppnas där hen legitimerar sig med BankID och tar en bild av sig själv. Då ringer det hos den som bor där, som ser namnet och bilden innan hen öppnar.

Besökaren behöver ingen app och inget konto. Både iPhone och Android läser brickan av sig själva så länge skärmen lyser.

Besökaren får aldrig veta vems dörr det är. Brickan bär inget namn, ingen adress och inget telefonnummer — bara en kod som servern kan slå upp. Vore det annorlunda hade brickan varit ett telefonregister uppsatt i trapphuset.

Vad brickan skickar

Här är samma bricka läst två gånger i rad. Lägg märke till att adressen inte är densamma.

Första avläsningen

https://www.erlig.se/d/index.html?e=CCBDAFE23D963DCF55BEE20933D4D4C2&c=EA2BEDD5DDB4F744

Andra avläsningen, tio sekunder senare

https://www.erlig.se/d/index.html?e=69622000F91D241C1B5A5E402BC39B05&c=A6C5411B8D6A3807

Det understrukna skriver chippet om varje gång. Ingenting av det är lagrat i brickan — det räknas fram i det ögonblick telefonen håller mot den.

De två fälten gör olika saker:

e
Brickans serienummer och hur många gånger den har lästs, krypterat. Serienummret säger vilken dörr det är. Räknaren står i chippet, går bara uppåt, och kan inte nollställas — inte av oss heller.
c
En signatur över just den här avläsningen. Den räknas fram med en nyckel som ligger inne i chippet och som inte går att läsa ut. Chippet kan använda nyckeln men aldrig visa den.

Servern har samma nyckel och räknar om signaturen. Stämmer den inte händer ingenting — det ringer inte, och den som står vid dörren får bara veta att koden inte gäller.

Vad det skyddar mot

Vart och ett av de här försöken har provats mot den skarpa servern, och gjorts om efter nyckelbytet den 5 september.
Försöket Vad som händer Utfall
Läsa av brickan och skriva samma adress på en egen tagg Kopian har ingen nyckel och kan inte räkna fram en signatur. Skriver man av den gamla signaturen hör den till ett räknarvärde som redan är förbrukat. Stoppas
Fotografera adressen och använda den senare Räknarvärdet i avläsningen är förbrukat. Servern minns hur långt räknaren stått och släpper aldrig igenom ett värde bakåt. Stoppas
Ändra en siffra i signaturen Signaturen räknas om på servern och stämmer inte. Stoppas
Peka om avläsningen till en annan dörr Går inte. Dörren står inte i adressen — den kommer ur serienummret, som ligger inne i det krypterade fältet. Stoppas
Flytta brickan till en annan dörr Brickan fortsätter ringa hos den den registrerades för. Den som flyttar den vinner ingenting — hen ringer på hos någon som inte bor där hen står. Meningslöst
Använda tillverkarens standardnyckel Ett obrukat chip har en nyckel som står i NXP:s öppna dokumentation. Brickan har fått en egen i stället, och en bricka som en gång bytt godtas aldrig mer på den gamla. Stoppas
Skicka två avläsningar samtidigt Kontrollen av räknaren sitter i själva skrivningen till databasen, inte bara i jämförelsen före. Den andra avvisas. Stoppas

Det som gör de fyra första möjliga att stoppa är att nyckeln aldrig lämnar chippet. En bricka går att läsa, mäta och röntga utan att nyckeln kommer fram — det är hela poängen med den chiptyp vi valt.

Vad det inte skyddar mot

Ett säkerhetslöfte som bara räknar upp det som fungerar är inte värt mycket. Det här ligger utanför:

Försöket Varför brickan inte hjälper Utfall
Riva bort brickan Då finns ingen bricka att läsa. Det är sabotage, inte bedrägeri — men den boende måste kunna ta emot besök ändå, så dörrklockan kan inte ersättas av brickan. Går
Sätta dit en egen bricka som leder till en falsk sida Brickan skyddar den boende, inte besökaren. En falsk bricka kan lura den som står utanför att lämna uppgifter på fel sida — men den kan aldrig få det att ringa i den boendes app. Går
Legitimera sig korrekt och ändå ha onda avsikter Brickan bevisar var någon står. BankID bevisar vem det är. Ingen av dem säger något om varför. Går
Låta någon annan hålla upp telefonen Bilden och gesten är den boendes egen kontroll, inte serverns. Det är hon som ser om det är samma person som står i titthålet. Går
Komma åt nyckeln på servern Den som har serverns nyckel kan förfalska vilken bricka som helst. Det är systemets känsligaste punkt, och den måste skötas som sådan. Går

Vad brickan faktiskt lovar

Att den som ringde på stod vid den här dörren, med den här brickan, just då. Inte mer. Vem det var svarar BankID på, och hur personen ser ut svarar bilden på. De tre sakerna tillsammans är vad den boende har att gå på — och det är avsevärt mer än en knapp på en porttelefon.

Var vi står nu

Brickorna är skarpa sedan 5 september

Ett nytt chip levereras med en nyckel som består av sexton nollor, och den står i tillverkarens öppna dokumentation. Under provkörningen satt den kvar med flit — allt gick att göra om — och vi kunde själva tillverka giltiga avläsningar utan att röra brickan.

Den 5 september byttes den mot en egen nyckel. Samma förfalskningsförsök gjordes om med fem olika räknarvärden. Alla avvisades. Fabriksnyckeln kan sedan dess inte ens låsa upp det krypterade fältet.

Så här långt

Hela kedjan är byggd och provad mot den skarpa servern: brickan öppnar sidan, sidan legitimerar med BankID, servern kontrollerar avläsningen och slår upp dörren ur den, och notisen kommer fram i den boendes telefon som svarar. De sex försöken i första tabellen har alla stoppats, och de har gjorts om efter nyckelbytet.

Varje bricka har dessutom sin egen nyckel, räknad ur en huvudnyckel och brickans serienummer. Skulle någon lyckas bryta sig in i ett enskilt chip — en dyr och fysisk attack — är det bara den brickan som går förlorad. De andra påverkas inte, och huvudnyckeln går inte att räkna baklänges ur den.

Kvar att göra är att bestämma hur huvudnyckeln förvaras när brickorna blir många. Just nu finns den på två ställen, vilket är rätt antal för en provomgång men för få för drift.