14.4.1. Koncepti: povjerenje, ključevi i format datoteke

Prije bilo kakvih naredbi, tri dijela pozadinskog znanja koja se odnose na svaku drugu stranicu u ovom odjeljku.

14.4.1.1. Modeli povjerenja

TLS veza može pružiti tri rastuće razine sigurnosti:

  • Samo enkripcija – promet je šifriran, ali nijedna strana ne dokazuje tko je. Jednostavno za postavljanje (bez provjere certifikata), ali ranjivo na napad posrednika (man-in-the-middle). Koristite samo za lokalno testiranje.

  • Autentikacija poslužitelja – klijent provjerava poslužiteljev certifikat u odnosu na pouzdani certifikat (poznati HTTPS model). OpenMV Cam može djelovati ili kao klijent (provjeravajući udaljeni poslužitelj) ili kao poslužitelj (predstavljajući vlastiti certifikat).

  • Uzajamna autentikacija (mTLS) – oba kraja predstavljaju i provjeravaju certifikate. Koristi se kada poslužitelj također mora biti siguran u identitet klijenta.

14.4.1.2. Odabir vrste ključa

Kamerina mbedTLS verzija podržava ECDSA na NIST/SEC prostim krivuljama i RSA. Postoje tri praktična načina za izradu ključa; preporučuje se ECDSA P-256 (prime256v1):

  • ECDSA P-256 (prime256v1) – oko 128-bitne sigurnosti s 256-bitnim ključem. Sićušni ključevi i potpisi te daleko najbrže rukovanje (handshake) od podržanih opcija na Cortex-M (operacije s eliptičnim krivuljama mnogo su jeftinije od operacija s RSA privatnim ključem). Univerzalno podržano od strane TLS druge strane. Ovo je najbolja ravnoteža sigurnosti, brzine, korištenja RAM-a/flash memorije i kompatibilnosti na ugrađenom uređaju, zbog čega je zadani izbor ovdje.

  • ECDSA P-384 (secp384r1) – oko 192-bitne sigurnosti. I dalje eliptična krivulja, pa razumno učinkovita, ali veća i sporija od P-256 za sigurnosnu marginu koja tipičnim IoT implementacijama nije potrebna. Koristite samo ako to zahtijeva dugotrajan certifikat ili zahtjev usklađenosti.

  • RSA-2048 – oko 112-bitne sigurnosti. Univerzalno kompatibilno, uključujući s vrlo starim drugim stranama, ali RSA ključevi i certifikati mnogo su veći, a operacije s RSA privatnim ključem (koje obavlja strana koja predstavlja certifikat) najsporija su i memorijski najzahtjevnija opcija na mikrokontroleru. Koristite samo kada druga strana ne može koristiti ECDSA.

Napomena

Ed25519 / Curve25519 ključevi nisu podržani. mbedTLS verzija OpenMV Cam-a ne omogućuje EdDSA ili Curve25519, pa se Ed25519 certifikat ili ključ neće učitati ili izvršiti rukovanje (handshake). Koristite jednu od tri gornje opcije.

14.4.1.3. Format datoteke: koristite DER

mbedTLS verzija koju koristi OpenMV Cam ne uključuje PEM raščlanjivanje, pa kamera čita certifikate i ključeve samo u DER obliku (binarno kodiranje). Većina alata prema zadanim postavkama proizvodi PEM oblik (base64 tekst), pa se svaka datoteka namijenjena kameri najprije pretvara u DER – svaki recept u ovom odjeljku završava tim korakom pretvorbe. Trebat će vam:

  • Privatni ključ – čuva se u tajnosti, koristi ga ona strana koja predstavlja certifikat.

  • Certifikat – javni dio, predstavljen drugoj strani tijekom rukovanja (handshake).

  • CA / certifikat povjerenja – certifikat koji strana koja provjerava učitava da bi odlučila vjeruje li drugoj strani. Za samopotpisanu postavku ovo je jednostavno vlastiti certifikat druge strane.