De unieke eenvoud van de Raspberry Pi hebben het erg populair gemaakt en niet alleen bij hobbyisten. Door de jaren heen, en dankzij de introductie van de Raspberry Pi Compute-module, heeft deze ook zijn weg gevonden naar industriële toepassingen. Apparatuur die op deze manier is gebaseerd, heeft echter een flinke achilleshiel: de primaire geheugenopslag - namelijk SD-kaarten - mist elke vorm van gegevensbescherming.

De Raspberry Pi zelf biedt geen ondersteuning voor een veilige opstart. Zo kan de gemiddelde gebruiker de SD-kaart verwijderen, er een kopie van maken en de verzamelde bestanden, firmware en eventuele gebruikersgegevens onderzoeken. Om dit aan te pakken, heeft Swissbit een oplossing ontwikkeld die de gegevens op de SD-kaart versleutelt en de authenticatie-infrastructuur integreert die nodig is om een ​​veilige opstartoplossing te bieden.

Swissbit AG

Het hoofdkantoorvan Swissbit AG bevindt zich in Zwitserland en maakte tot 2001 deel uit van Siemens AG. Door hun specialisatie in geheugen- en opslagproducten en met productiefaciliteiten in Berlijn, Duitsland, kunnen ze in-house unieke oplossingen ontwerpen en produceren. Hun Secure Boot Solution voor Raspberry Pi is zo’n resultaat hiervan.

De ontbrekende beveiliging van de Raspberry Pi

Wanneer je met een Raspberry Pi werkt, zul je merken dat deze een blind vertrouwen heeft, wat betekent dat de Raspberry Pi, ongeacht de gebruikte opstartmedia, zal proberen het programma uit te voeren. Dit stelt het bloot voor aanvallen die het besturingssysteem van het apparaat in gevaar kan brengen. Aangezien elke gebruiker of aanvaller volledige toegang heeft tot de gegevens van de opstartmedia, herken je misschien niet eens dat het systeem is gekopieerd of gewijzigd met malware of miningtools. In het ergste geval zouden derden het apparaat kunnen gebruiken om de netwerken aan te vallen waarop de Raspberry Pi is aangesloten.

Het toevoegen van een veiligere opstartprocedure aan een Raspberry Pi is een verstandige optie om dit tegen te gaan. Omdat de hardware zelf echter niet kan worden gewijzigd, is een slimme oplossing vereist die kan worden aangepast in bestaande toepassingen. Dit is waar de PS-45u DP "Raspberry Edition" van Swissbit zijn sterke punten laat zien voor een redelijke prijs. Omdat het een SD-kaart is, kan het eenvoudig je bestaande opslagmedium vervangen en tegelijkertijd een veilige opstart en gegevensbescherming aan je hardware toevoegen.

De binnenkant van een SD-kaart

Om te begrijpen waarom deze oplossing uniek is en waarom het zo handig is om eigenaar te zijn van geheugenproductiefaciliteiten, moeten we beginnen met een onderzoek naar de samenstelling van een SD-kaart. De twee cruciale componenten zijn het NAND-flashgeheugen en de controller. De geheugencontroller verwerkt gestandaardiseerde schrijf-, wis- en lees opdrachten die door de host worden verzonden. NAND-flash is met zijn toenemende dichtheid niet foutloos. Ergens in het geheugen zullen er bits zijn die zich niet gedragen zoals bedoeld. Dergelijke fouten moeten worden opgespoord en gecorrigeerd. Bovendien verslijten de bits van het geheugen bij elke schrijf en lees actie naar een NAND-flash, waardoor dit na verloop van tijd uitvalt. De geheugencontroller beheert dit ook.

De geheugencontroller werkt als een microcontroller (zie figuur 1) met een CPU, gespecialiseerde hardware voor het besturen van flash en de hostinterface. Het bevindt zich tussen het apparaat (de host) en het onschreven NAND-geheugen en verbergt de lees- en schrijfacties, het gaat om met slechte bits en met wear-leveling om de levensduur van de SD-kaart te verlengen. Hoe minder elk databit wordt beschreven, hoe kleiner de kans dat het uitvalt.

Figuur 1: Voorbeeldtoepassing van een SD-cardcontroller. (Bron: Hyperstone).

PS-45u DP “Raspberry Edition”

Aangezien Swissbit eigen SD-kaarten ontwerpt en produceert, kan hun geheugencontroller indien nodig worden geoptimaliseerd of uitgebreid. Terwijl standaard SD-kaarten gewoon het NAND-geheugen aan de host presenteren, heeft deze nieuwe oplossing extra beveiligingselementen. De PS-45u DP ‘Raspberry Edition’, zie figuur 2, is een SD-kaart met verbeterde beveiliging en die onafhankelijk van de host-CPU werkt.

Figuur 2: PS-45u DP 'Raspberry Edition'. (Bron: Swissbit).

Meer details over de technische specificatie van de SD-kaart zijn te vinden in Tabel 1.

Tabel 1: Specificaties PS-45u.

De Raspberry Pi ziet gewoon een SD-kaart en heeft, indien ontgrendeld, toegang tot de gegevens erop. Momenteel werkt deze versie van de PS-45u DP met de ingebouwde authenticatie op Raspberry Pi 2- en Raspberry Pi 3B+ modellen door middel van een door Swissbit aangepaste pre-boot-fase om de toegang tot de SD-kaart gegevens te ontgrendelen. De kaart garandeerd ook de gegevensintegriteit bij stroomuitval. Degenen die vaak met Raspberry Pi en SD-kaarten hebben gewerkt, weten dat sommige merken zelfs tijdens een gewone uitschakeling beschadigd raken door storingen op de stroom en datalijnen. Iets dat geen enkele SD-kaart kan voorkomen, is een onderbroken schrijfactie naar de SD-kaart: het beste dat kan worden verwacht, is een poging tot herstel wanneer het systeem de volgende keer wordt opgestart.

De PS-45u DP "Raspberry Edition" is beschikbaar in 8 GB en 32 GB versies bij Mouser Electronics. Naast de extra robuustheid bieden deze kaarten ook ingebouwde versleuteling en authenticatie. Voor de authenticatie zijn er momenteel drie ondersteunde methoden die worden vermeld in Tabel 2. Dit betekent dat alleen met het juiste toegangsmethode - een PIN, USB-token of authenticatieserver - de gegevens worden ontgrendeld en toegankelijk zijn.

Tabel 2: vergelijking van verificatiemethoden.

De PIN-policy houdt in dat bij het opstarten een vooraf gedefinieerde pincode moet worden ingevoerd op de opdrachtregel. De USB-policy werkt in combinatie met de PU-50n USB stick (Figuur 3) als een authenticatietoken dat ook beschikbaar bij Swissbit.

Figuur 3: PU-50n USB-stick. (Bron: Swissbit).

De technische specificaties weergegeven in tabel 3.

Tabel 3: PU-50n specificaties.

Dit is vergelijkbaar met een licentiedongle die wordt geleverd met bepaalde duurdere PCB-ontwerpsoftware. De laatste optie is de NET-policy. Dit vereist de implementatie van een authenticatieserver die ergens op je netwerk draait en die het gebruik van de SD-kaart toestaat of weigert.

Om een ​​systeem met PIN-beveiliging te evalueren, heb je een Raspberry Pi (Model 3B+ aanbevolen) en een PS-45u DP "Raspberry Edition" nodig. Voor evaluatie van de NET-policy heb je naast de vereisten voor het PIN-policy een tweede Raspberry Pi en een gewone micro SD-kaart nodig (aanbevolen: S-50u).

Voor evaluatie van de USB-policy heb je naast de vereisten van de PIN-policy een USB PU-50n DP "Raspberry Edition" nodig. Figuur 4 geeft een kort overzicht van de onderdelen die nodig zijn om een ​​van de drie policies te evalueren.

Figuur 4: Benodigde onderdelen per policy.

Figuur 4: Benodigde onderdelen per policy.

Omdat de Raspberry Pi bij het opstarten toegang nodig heeft tot enkele core firmwarebestanden, is de PS-45u DP "Raspberry Edition" ontworpen met een unieke beveiligingsfunctie die naadloze integratie met bestaande projecten mogelijk maakt. Als de SD-kaart is beveiligd, is de eerste partitie read-only. Hierdoor kan de Pi de basis firmware laden en het eerste deel van de software dat controleert of er een geldige token is geïnstalleerd. Hoewel deze firmware van de eerste fase door iedereen kan worden gelezen, wordt voorkomen dat een aanvaller toegang krijgt tot de rest van de SD-kaart. Dit beschermt je software-installatie tegen ongeoorloofde toegang door een van de volgende drie mogelijke authenticatie methoden te gebruiken.

PIN Policy

Het gebruik van de SD-kaart met een PIN-policy is de eenvoudigste methode voor extra beveiliging. De SD-kaart moet worden geconfigureerd volgens de Swissbit SecureBoot SDK RPi handleiding. Momenteel is Windows vereist om de SD-kaart in te stellen (zie figuur 5). Met de meegeleverde tools kan een pincode voor de kaart worden ingesteld, maar het gebruik van de standaard ASCII-tekenset is aanbevolen. Zelfs als je je kaart in Windows kunt vergrendelen en ontgrendelen met de speciale tekens op je toetsenbord, moet worden opgemerkt dat de Raspberry Pi het gebruik van een Britse (qwerty) toetsenbordindeling tijdens het opstarten afdwingt. Het gebruik van niet-Britse toetsenborden en alfanumerieke pincodes kan een probleem veroorzaken. Als bijvoorbeeld een pincode "qwertz" is ingesteld in de Windows-tool en de Raspberry Pi wordt opgestart met een Duits toetsenbord, moet je "qwerty" invoeren (omdat "y" en "z" zijn verwisseld bij een Duits toetsenbord layout vergeleken met een Britse layout) om succesvol in te loggen.

Figuur 5: hulpprogramma voor configuratie van de SD-kaart.

Naast het toetsenbord probleem, betekent dit ook dat de pincode elke keer bij het opstarten moet worden ingevoerd om de SD-kaart te ontgrendelen om het resterende opstartproces te voltooien (Figuur 6 toont de pincode-prompt). Brute force-aanvallen, waarbij wordt geprobeerd een juiste pincode in te voeren door veel combinaties te testen totdat de juiste is gevonden, vormen een algemeen risico bij een dergelijke authenticatie methode. Dit is iets wat de SD-kaart kan voorkomen met de hardware. Bij het configureren van de kaart kun je het maximale aantal onjuist ingevoerde pincodes instellen voordat de kaart verdere pogingen zal weigeren. Zodra de limiet is bereikt, kan een Supervisor-PIN (die je hopelijk hebt ingesteld en genoteerd) worden gebruikt om de PIN van de SD-kaart te ontgrendelen en te wijzigen. Anders kan de kaart niet meer worden ontgrendeld.

Figuur 6: Pincode authenticatie.

USB Policy

De USB-policy maakt veilig opstarten zonder toezicht mogelijk. Dit werkt door een Swissbit PU-50n DP USB-stick toe te voegen als beveiligingstoken (Figuur 3). Het systeem is opgezet volgens de handleiding, waarbij de SD-kaart en de PU-50n DP USB-stick met dezelfde pincode zijn voorbereid. De PU-50n DP heeft dezelfde beveiligde firmware geïnstalleerd als de PS-45u DP. Nadat de Raspberry Pi is opgestart met de PS-45u DP SD-kaart, vindt een challenge-response-authenticatie plaats en, als de pincode in de PU-50n DP overeenkomt met die in de PS-45u DP, gaat het opstartproces verder. Een Raspberry Pi met deze opstelling wordt getoond in Figuur 7. In Figuur 8 wordt een succesvolle opstart met een aangesloten PU-50n DP USB-stick getoond.

Figuur 7: Veilig opstarten met een USB-token.
Figuur 8: USB-authenticatie met behulp van de PU-50n.

NET Policy

Terwijl de PIN-policy en de USB-policy het gemakkelijk maken om de beveiliging achteraf aan te passen voor zelfstandige apparaten zonder netwerktoegang, is de NET-policy beschikbaar voor bekabelde netwerkapparaten. Dit vereist de implementatie van een licentieserver binnen het netwerk die de Raspberry Pi met PS-45u DP gebruikt om de SD-kaart te ontgrendelen. Een kant-en-klare Raspberry Pi-image wordt geleverd voor de licentieserver en kan naar een standaard 16 GB SD-kaart worden geschreven. De licentieserver draait op Raspberry OS en beschikt over een webinterface voor apparaatconfiguratie. Het installatieproces wordt beschreven in de Swissbit NetPolicyServer gebruikershandleiding.

Na het opstarten van de desktop en kan er via een browser verbinding worden gemaakt met https://localhost/NetPolicyServer/. Hierdoor wordt de configuratiepagina geopend (Figuur 9).

Figuur 9: Gebruikersinterface van de Net Policy Server.

Om een ​​apparaat aan de licentieserver toe te voegen, is de UID van de SD-kaart die je activeert, samen met het bijbehorende wachtwoord vereist. Deze informatie kan worden verkregen via het Windows-hulpprogramma dat wordt gebruikt bij de voorbereiding van de SD-kaart, vervolgens moet een IP-adres (figuur 10) worden ingevoerd. Momenteel is het systeem beperkt tot IPv4-netwerken. Als je geen IP-adres voor de server wilt invoeren, is in plaats daarvan een niet-officiële ondersteuning voor een DNS-naam, maar dit wordt niet behandeld in de handleiding en is op eigen risico.

Figuur 10: Installatie voor het IP-adres van de Net Policy Server.

Nadat de client is geconfigureerd, maakt elke opstartpoging contact met de Net Policy Server. De Raspberry Pi en de server zullen een challenge-response-schema gebruiken om de SD-kaart te ontgrendelen en als de server niet het juiste antwoord geeft of niet beschikbaar is, stopt het opstartproces en blijft de SD-kaart vergrendeld. Deze gecentraliseerde implementatie maakt het beheer van apparaten vanaf de server mogelijk, waardoor ze kunnen worden uitgeschakeld als ze niet langer geautoriseerd zijn om op te starten. Figuur 11 toont het opstartproces met onjuiste inloggegevens ingesteld aan de serverzijde en een mislukte opstartprocedure. Figuur 12 toont de respons voor een succesvolle start.

Figuur 11: Mislukt opstarten door onjuiste pincode.
Figuur 12: Opstarten met de juiste pincode.

Achteraf bestaande hardware aanpassen

Het voordeel van het achteraf inbouwen van bestaande hardware is de eenvoud van het proces bij het vervangen van een SD-kaart door de PS-45u DP 'Raspberry Edition'. Bij de verstrekte voorbeelden en bestanden wordt ervan uitgegaan dat je een versie van Linux op je apparaat gebruikt. Dit betekent dat een bestaande installatie kan worden gekloond zodra de bestanden van de gekozen PS-45u DP-beveiligingsfuncties zijn toegevoegd volgens de handleiding.

Je zou kunnen stellen dat de Pi hetzelfde zou moeten kunnen doen met behulp van op software gebaseerde schijfversleuteling, maar helaas moeten op dit platform alle cryptografische bewerkingen in software worden uitgevoerd. Dit resulteert in een hoge processorbelasting op de Raspberry Pi 2 en 3 tijdens schijftoegang, wat leidt tot verminderde prestaties tijdens de uitvoering van standaardtoepassingen. Omdat de PS-45u DP 'Raspberry Edition' de schijfversleuteling implementeert binnen de geïntegreerde controller van de SD-kaart, is versleuteling door de Pi overbodig en heeft het als bijkomend voordeel dat de cryptografische sleutels niet worden vrijgegeven. Het resultaat is dat als de PS-45u DP eenmaal is ontgrendeld, de geïnstalleerde applicaties werken alsof ze op een normale SD-kaart staan, zonder enige nadelige prestatie gevolgen. Afhankelijk van uw toepassing en het gekozen policy, kan een beveiligingsupdate binnen een redelijke tijd worden uitgevoerd.

Volgens Swissbit is de "Raspberry Edition" ontworpen als een praktische leer- en evaluatiekit om te illustreren hoe veilige opstartfunctionaliteit kan worden toegepast in embedded platforms die geen  ondersteuning van nature hebben. Voor productie toepassingen op basis van Raspberry raadt Swissbit het gebruik van de robuuste Raspberry Compute Module CM3 + aan.

Wensen en laatste opmerkingen

De PS-45u DP 'Raspberry Edition' ondersteunt momenteel de Raspberry Pi 2 en 3-modellen, aangezien dit de meest gebruikte SoC-versies zijn (zowel voor de standaard- als de rekenmodules). Wie ondersteuning zoekt voor de Raspberry Pi 4, moet wachten tot de benodigde componenten klaar en getest zijn. Hetzelfde geldt ook voor de NetPolicyServer, die kan worden beschouwd als een werkende technische demo in plaats van een volwaardig en gepolijst product. Het zou leuk zijn om wat documentatie te hebben over hoe je je eigen Net Policy Server kunt bouwen, samen met achtergrondinformatie over de gebruikte protocollen, in plaats van door de code te hoeven graven. Ook zouden degenen onder ons die geen Windows gebruiken, de PS-45u DP willen configureren zonder een virtuele machine of dual-boot setup.

Ondanks deze kleine wensen voor een productrelease van de volgende generatie, biedt de algemene aanpak van deze veilige SD-kaart een eenvoudige manier om gegevens te beschermen tegen ongewenste toegang. De gecentraliseerde netwerkserver voor authenticatie is een andere bonus, waardoor het een uitstekende keuze is bij het achteraf inbouwen van beveiliging in bestaande apparaten. De PS-45u DP beschermt niet alleen je gegevens tegen diefstal, maar beperkt ook de fysieke toegang tot het bestandssysteem van de Raspberry Pi, waardoor aanvallers anders het platform zouden kunnen hacken.

Vertaling: Hans Adams