Elias Rudberg via Eleg-projekt eleg-projekt@lists.dfri.se, 2024-04-24 23:10 (+0200):
Hej MC!
Du skrev för ett bra tag sedan:
Om det kan behövas några Tillitis TKey för en sådan proof of concept kan vi säkert få fram några. Hjälper gärna till, om det går.
Är det fortfarande en möjlighet?
Ja. Sorry att jag missat det här. Hörde av VD att du varit i kontakt.
Cynthia i projektet har också en tidigare version av TKey, en tidig olåst Engineering Sample, som också kan duga till experiment. Jag tror den version av FPGA-konstruktionen jag körde in på den är kompatibel med dagens.
Skulle Tillitis TKey kunna användas för att hantera den privata nyckeln på ett säkert sätt för den proof of concept med mTLS vi har på gång nu?
Ja, men bara den privata nyckeln.
Jag tror jag berättat förut att TKey i den version som finns nu inte har något persistent minne. Den kan alltså inte själv lagra till exempel ett certifikat eller något annat heller. [1]
För att använda TKey med ett certifikat måste man alltså se TKey som en del av ett system tillsammans med en dator eller en mobiltelefon. Datorn eller mobiltelefonen håller då själva certifikatet (publika nyckeln och metadata) medan TKey är ansvarig för signering med den privata delen av nyckelparet. Utan TKey går det inte att autentisera sig. Utan datorn går det inte heller, så man blir tvungen att kopiera certet mellan datorer om man vill kunna autentisera sig från flera.
Sedan är det förstås frågan om hur man kommer åt signeringsfunktionen i appen som kör på TKey. Var ska man köra den från? En webläsare? Vi har ännu ingenting som gör att man kan komma åt TKey alls från en webläsare så det måste i så fall utvecklas.
Man behöver ett program på klienten (vi kallar dator eller mobil som man stoppar in TKey in i för "klient") som laddar på device-appen man behöver in i TKey. Det måste förstås inte vara inbyggt i webläsaren men måste kunna prata med den. I värsta fall behöver man något som pratar typ PKCS#11. Tack och lov bara på klientsidan i denna första vända. Kanske finns något lagom Go-paket?
Jag kan inte mycket om webläsare och deras gränssnitt till sånt här. I just Firefox ser det ut som om man kan haka in shared libs på något sätt i Settings > Privacy & Security under Security/Certificates finns Security Devices. Det där får man nog läsa på om.
Tänk alltså något i stil med:
Host | Interwebz | Klient som kör Firefox | Ett shared lib inladdat i Firefox? | tkey-auth @ klient | tkey-device-signer? @ TKey
Där "shared lib" och "tkey-auth" är ännu oskrivna program för att länka ihop Firefox med TKey. Jag är lite optimistisk och föreställer mig att existerande tkey-device-signer:
https://github.com/tillitis/tkey-device-signer
Skulle kunna användas för själva autentiseringen, iaf så länge vi håller oss till en Ed25519-signering av någon slags challenge.
Man pratar med TKeys bootloader och signer från klienten med de här:
https://github.com/tillitis/tkeyclient https://github.com/tillitis/tkeysign
Exempel på program som använder dem:
https://github.com/tillitis/tkey-ssh-agent https://github.com/tillitis/tkey-sign-cli
Här finns vår utvecklingshandbok:
Happy hacking, MC
[1] Det finns jobb på gång för att en annan produkt skulle stödja lagring men funktionen är inte ens mergad i vårt hårdvarurepo än. Ni kan följa den utvecklingen här:
https://github.com/tillitis/tillitis-key1/pull/207
"This PR adds a minimal SPI master to the application_fpga. This allows applications to access the Flash memory on the Tkey."