Erlig · Underlag 06
Hur den ringer på hos den som bor där — och varför den inte går att kopiera.
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.
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:
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.
| 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.
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 |
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.
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.
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.