Een verborgen slot bouwen met een magnetische imager

Alleen een programmeerbaar, geheim gebaar met een magneet kan dit slot openen. (Of een hamer; het is immers een proof of concept.)

Zoals veel nerds heb ik een zekere fascinatie voor sloten. Dit is ontstaan door het lezen van het memoire Surely You’re Joking, Mr. Feynman toen ik een tiener was, waarin Richard Feynman vertelt hoe hij sloten forceerde en combinaties kraakte terwijl hij bij zijn dagtaak werkte aan het Manhattan Project in Los Alamos. Ik bezit momenteel een paar locksport-sets en trainingssloten die ik in de loop der jaren op hacker-conferenties heb gekocht (hoewel ik er nog steeds vreselijk slecht in ben), en ik geniet van de YouTube-avonturen van mensen zoals de LockPickingLawyer.

Dit alles bracht me ertoe mij af te vragen of ik zelf een interessant slot zou kunnen bouwen. Een truc die slotenmakers al lang gebruiken om potentiële plunderaars uit te dagen, is het verbergen van het bestaan van het slot zelf. Een moderne variant hiervan is het magnetische slot, waarbij een magneet tegen een onopvallend deel van een deur of kist wordt gehouden of geschoven om een vergrendeling te ontgrendelen. Het probleem hiermee is dat, zodra men de locatie van het slot raadt, elke sterke magneet het slot kan openen.

Ik overwoog om een RFID-lezer onder het oppervlak te plaatsen, maar ik zag op tegen het bijhouden van nog een toegangskaart. Toen stuitte ik op iets veel interessanters: de magnetische imaging-tile van SparkFun van 100 dollar. Ik realiseerde me dat ik dit kon gebruiken om een magnetisch slot te bouwen dat opent met een programmeerbaar, geheim gebaar.

De technologie achter de imaging-tile

De magnetische imaging-tile is een in kleine oplage geproduceerd SparkFun-board, gebaseerd op het werk van Peter Jansen. Het beschikt over een raster van 8-bij-8 Hall-effect-sensoren en gebruikt een SPI-interface om te communiceren met de microcontroller naar keuze.

Deze sensoren kunnen zowel de sterkte als de polariteit van een magnetisch veld detecteren. Het board kan metingen rapporteren honderden tot duizenden keren per seconde, afhankelijk van de beschikbare rekenkracht van de microcontroller. Dit is ruim voldoende om de beweging van een magneet die met de hand over het sensorgebied wordt bewogen — mijn geheime gebaar — vast te leggen.

Een interessant aspect van het gebruik van magnetische velden is dat ik, in een staat van extreme paranoia, het gehele slot zou kunnen afschermen met koperen platen. Dit zou ik met een RFID-lezer niet kunnen. De koperen plaat zou fungeren als een Kooi van Faraday, waardoor elk RFID-signaal wordt geblokkeerd, samen met alle andere elektromagnetische velden die een aanvaller met een EMF-meter zou kunnen gebruiken om het slot te lokaliseren.

De hersenen van de box

Ik heb gekozen voor een Teensy 4.1 als microcontroller. Ik houd van de Teensy omdat deze veel input/output biedt, een processor van 600 megahertz heeft, een megabyte RAM en een ingebouwde SD-kaart, allemaal in een compact pakket voor een prijs van 32 dollar.

Het aansluiten van de Teensy op de magnetische imaging-tile was eenvoudig, enkel bemoeilijkt door het feit dat één zijde van het board een fout in de zeefdruk heeft waardoor de SPI-verbindingen onjuist worden geïdentificeerd (SparkFun geeft aan dat dit in toekomstige productieruns zal worden gecorrigeerd).

Software en gebarenherkenning

Voor het maken van de software voor gebarenherkenning maakte ik opnieuw gebruik van vibe coding. In plaats van Claude alle software te laten schrijven, beperkte ik de AI tot het schrijven van slechts twee ondersteuningsbibliotheken (beschikbaar in de online repository op https://github.com/IEEESpectrumHandsOn).

  • De ene bibliotheek is verantwoordelijk voor het vastleggen van een slotgebaar en het opslaan hiervan in het niet-vluchtige geheugen van de Teensy.
  • De andere bibliotheek monitort de tile en rapporteert of een nieuw gedetecteerd gebaar een selecteerbare drempelwaarde overschrijdt om als een match te worden beschouwd.

Ik heb de top-level code zelf geschreven om het project zo DIY mogelijk te houden. Deze code beheert zaken als een knop die het systeem na een korte vertraging in de opnamemodus zet, de indicator-LED voor de opnamemodus en de code die het fysieke vergrendelingsmechanisme aanstuurt.

Technische werking: Hall-effect-sensoren vertrouwen op een stroom die door een p-type plaat silicium loopt. Een magnetisch veld dat door het silicium gaat, buigt ladingsdragers naar de randen van de plaat, wat een spanning creëert die proportioneel is aan het veld. Door te kijken naar de intensiteit van de spanningen over een 8-bij-8 raster van sensoren, kan de microcontroller een gebaar reconstrueren.

Het fysieke mechanisme

Om het proof of concept te demonstreren, kocht ik een houten knutselkist en verwijderde de bestaande sluiting van het deksel. Ik lijmde een inkeping voorzien van een balk aan de binnenkant van het deksel en bouwde een mechanisme waarbij een servomotor een andere balk in en uit deze inkeping draait. Hoewel dit mechanisme eerder "simplistisch" dan "simpel" is, is het robuust genoeg voor de demo.

In de kist is voldoende ruimte om de magnetische imaging-tile tegen één wand te monteren, samen met de Teensy en andere ondersteunende elektronica. Deze laatste omvatten:

  • Een batterijpakket;
  • De opnameknop;
  • Een kleine extra printplaat met twee NPN-transistoren, die de 3,3-volt controlesignalen van de Teensy omzetten naar het 5-volt signaal dat nodig is om de servo aan te sturen.

Camouflage en gebruiksvriendelijkheid

Na de assemblage ontdekte ik dat het kleine oppervlak van de magnetische tile — slechts 3 centimeter vierkant — het eenvoudig maakte om de tile in de box te passen, maar lastig maakte om het ontgrendelingsgebaar aan de buitenkant correct uit te voeren. Het markeren van de omtrek van het sensorgebied op de buitenkant zou het doel van een verborgen slot tenietdoen.

Als oplossing creëerde ik een patroon van Keltische knopen dat in een band over de voorkant van de lockbox loopt (gegenereerd met een online knotwork-generator en vervolgens geprojecteerd en overgetrokken op de box). Door dit patroon als gecamoufleerd referentieraster te gebruiken, kan ik een reproduceerbaar gebaar maken binnen de grenzen van het sensorgebied. Voor deze gebaren gebruik ik een magnetische stylus afkomstig uit een ferrite-core-memory kit.

Er is duidelijk ruimte voor verbetering voor een serieuzere installatie. Het grootste nadeel is momenteel dat, als de box vergrendeld is en de batterij leegraakt, je hem niet meer kunt openen zonder iets kapot te maken. Dit zou kunnen worden opgelost door een verborgen inductieve oplaadspoel toe te voegen. Desalniettemin werkt de demo-lockbox goed — nu moet ik alleen nog bedenken wat ik erin moet bewaren!