14.4.1. Begrepp: förtroende, nycklar och filformat¶
Före några kommandon, tre bakgrundsdelar som gäller för alla andra sidor i detta avsnitt.
14.4.1.1. Förtroendemodeller¶
En TLS-anslutning kan ge tre ökande nivåer av säkerhet:
Endast kryptering – trafiken är krypterad men ingendera sidan bevisar vem den är. Lätt att sätta upp (ingen certifikatvalidering) men sårbar för en man-in-the-middle-attack. Använd endast för lokal testning.
Serverautentisering – klienten verifierar serverns certifikat mot ett betrott certifikat (den välbekanta HTTPS-modellen). OpenMV Cam kan agera antingen som klient (verifiera en fjärrserver) eller som server (presentera sitt eget certifikat).
Ömsesidig autentisering (mTLS) – båda ändarna presenterar och verifierar certifikat. Används där servern också måste vara säker på klientens identitet.
14.4.1.2. Att välja en nyckeltyp¶
Kamerans mbedTLS-bygge stöder ECDSA på NIST/SEC-primkurvorna och RSA. Det finns tre praktiska sätt att skapa en nyckel; ECDSA P-256 (prime256v1) rekommenderas:
ECDSA P-256 (prime256v1) – ungefär 128-bitars säkerhet med en 256-bitars nyckel. Pyttesmå nycklar och signaturer, och den överlägset snabbaste handskakningen av de stödda alternativen på en Cortex-M (operationer med elliptiska kurvor är mycket billigare än RSA-operationer med privat nyckel). Universellt stödd av TLS-motparter. Detta är den bästa balansen mellan säkerhet, hastighet, RAM-/flashanvändning och kompatibilitet på en inbäddad enhet, vilket är varför det är standardvalet här.
ECDSA P-384 (secp384r1) – ungefär 192-bitars säkerhet. Fortfarande elliptisk kurva, så rimligt effektiv, men större och långsammare än P-256 för en säkerhetsmarginal som typiska IoT-driftsättningar inte behöver. Använd endast om ett långlivat certifikat eller ett efterlevnadskrav kräver det.
RSA-2048 – ungefär 112-bitars säkerhet. Universellt kompatibel, inklusive med mycket gamla motparter, men RSA-nycklar och -certifikat är mycket större och RSA-operationer med privat nyckel (utförda av sidan som presenterar certifikatet) är det långsammaste och mest minneskrävande alternativet på en mikrokontroller. Använd endast när en motpart inte kan hantera ECDSA.
Anteckning
Ed25519 / Curve25519-nycklar stöds inte. OpenMV Cams mbedTLS-bygge aktiverar inte EdDSA eller Curve25519, så ett Ed25519-certifikat eller en Ed25519-nyckel kommer att misslyckas med att läsas in eller utföra handskakning. Använd ett av de tre alternativen ovan.
14.4.1.3. Filformat: använd DER¶
mbedTLS-bygget som används av OpenMV Cam inkluderar inte PEM-tolkning, så kameran läser certifikat och nycklar endast i DER-form (den binära kodningen). De flesta verktyg producerar PEM-formen (base64-text) som standard, så varje fil som är på väg till kameran konverteras först till DER – varje recept i detta avsnitt avslutas med det konverteringssteget. Du kommer att behöva:
En privat nyckel – hålls hemlig, används av vilken sida som än presenterar ett certifikat.
Ett certifikat – den publika delen, presenterad för den andra sidan under handskakningen.
Ett CA-/förtroendecertifikat – certifikatet som den verifierande sidan läser in för att avgöra om motparten är betrodd. För en självsignerad uppsättning är detta helt enkelt motpartens eget certifikat.