14.4.1. Käsitteet: luottamus, avaimet ja tiedostomuoto¶
Ennen mitään komentoja kolme taustatietoa, jotka koskevat jokaista muuta tämän osion sivua.
14.4.1.1. Luottamusmallit¶
TLS-yhteys voi tarjota kolme yhä kasvavaa varmuuden tasoa:
Pelkkä salaus – liikenne on salattua, mutta kumpikaan osapuoli ei todista, kuka se on. Helppo ottaa käyttöön (ei varmenteen tarkistusta) mutta altis välimieshyökkäykselle. Käytä vain paikalliseen testaukseen.
Palvelimen todennus – asiakas varmentaa palvelimen varmenteen luotettua varmennetta vasten (tuttu HTTPS-malli). OpenMV Cam voi toimia joko asiakkaana (varmentaen etäpalvelimen) tai palvelimena (esittäen oman varmenteensa).
Molemminpuolinen todennus (mTLS) – molemmat päät esittävät ja varmentavat varmenteet. Käytetään silloin, kun palvelimen on myös oltava varma asiakkaan henkilöllisyydestä.
14.4.1.2. Avaintyypin valinta¶
Kameran mbedTLS-käännös tukee ECDSA:ta NIST/SEC-alkulukukäyrillä sekä RSA:ta. Avaimen luomiseen on kolme käytännöllistä tapaa; ECDSA P-256 (prime256v1) on suositeltu:
ECDSA P-256 (prime256v1) – noin 128-bittinen turvallisuus 256-bittisellä avaimella. Pienet avaimet ja allekirjoitukset, ja ylivoimaisesti nopein kättely tuetuista vaihtoehdoista Cortex-M:llä (elliptisten käyrien operaatiot ovat paljon halvempia kuin RSA:n yksityisen avaimen operaatiot). Yleisesti TLS-vastapuolten tukema. Tämä on paras tasapaino turvallisuuden, nopeuden, RAM-/flash-muistin käytön ja yhteensopivuuden välillä sulautetulla laitteella, minkä vuoksi se on tässä oletusvalinta.
ECDSA P-384 (secp384r1) – noin 192-bittinen turvallisuus. Edelleen elliptinen käyrä, joten kohtuullisen tehokas, mutta suurempi ja hitaampi kuin P-256 turvallisuusvaralle, jota tyypilliset IoT-käyttöönotot eivät tarvitse. Käytä vain, jos pitkäikäinen varmenne tai vaatimustenmukaisuusvaatimus sitä edellyttää.
RSA-2048 – noin 112-bittinen turvallisuus. Yleisesti yhteensopiva, mukaan lukien hyvin vanhojen vastapuolten kanssa, mutta RSA-avaimet ja -varmenteet ovat paljon suurempia ja RSA:n yksityisen avaimen operaatiot (joita tekee varmenteen esittävä osapuoli) ovat hitain ja eniten muistia vievä vaihtoehto mikrokontrollerilla. Käytä vain, kun vastapuoli ei pysty ECDSA:han.
Muista
Ed25519- / Curve25519-avaimia ei tueta. OpenMV Camin mbedTLS-käännös ei ota käyttöön EdDSA:ta eikä Curve25519:ää, joten Ed25519-varmenne tai -avain epäonnistuu latauksessa tai kättelyssä. Käytä jotakin yllä olevista kolmesta vaihtoehdosta.
14.4.1.3. Tiedostomuoto: käytä DER:ää¶
OpenMV Camin käyttämä mbedTLS-käännös ei sisällä PEM-jäsennystä, joten kamera lukee varmenteita ja avaimia vain DER-muodossa (binäärikoodaus). Useimmat työkalut tuottavat oletuksena PEM-muodon (base64-teksti), joten jokainen kameraan menevä tiedosto muunnetaan ensin DER-muotoon – jokainen tämän osion ohje päättyy kyseiseen muunnosvaiheeseen. Tarvitset:
Yksityisen avaimen – pidetään salassa, käyttää se osapuoli, joka esittää varmenteen.
Varmenteen – julkinen osa, joka esitetään toiselle osapuolelle kättelyn aikana.
CA-/luottamusvarmenteen – varmenne, jonka varmentava osapuoli lataa päättääkseen, onko vastapuoleen luottamista. Itse allekirjoitetussa kokoonpanossa tämä on yksinkertaisesti vastapuolen oma varmenne.