14.4.1. Fogalmak: megbízhatóság, kulcsok és fájlformátum¶
Bármilyen parancs előtt három háttér-ismeret, amely a szakasz minden további oldalára vonatkozik.
14.4.1.1. Megbízhatósági modellek¶
Egy TLS kapcsolat a biztonság három, egyre növekvő szintjét nyújthatja:
Csak titkosítás – a forgalom titkosított, de egyik fél sem bizonyítja, hogy ki ő. Könnyű beállítani (nincs tanúsítvány-ellenőrzés), de sebezhető a köztes ember (man-in-the-middle) támadással szemben. Csak helyi teszteléshez használd.
Szerver-hitelesítés – a kliens egy megbízható tanúsítvánnyal veti össze a szerver tanúsítványát (a megszokott HTTPS modell). Az OpenMV Cam viselkedhet kliensként (egy távoli szervert ellenőrizve) vagy szerverként (a saját tanúsítványát bemutatva) is.
Kölcsönös hitelesítés (mTLS) – mindkét végpont bemutat és ellenőriz tanúsítványokat. Ott használatos, ahol a szervernek is meg kell bizonyosodnia a kliens kilétéről.
14.4.1.2. Kulcstípus választása¶
A kamera mbedTLS buildje támogatja az ECDSA-t a NIST/SEC prímgörbéken, valamint az RSA-t. Háromféle gyakorlatias mód van kulcs előállítására; az ECDSA P-256 (prime256v1) az ajánlott:
ECDSA P-256 (prime256v1) – körülbelül 128 bites biztonság egy 256 bites kulccsal. Apró kulcsok és aláírások, és messze a leggyorsabb kézfogás a támogatott lehetőségek közül egy Cortex-M-en (az elliptikus görbés műveletek sokkal olcsóbbak, mint az RSA privát kulcsú műveletek). Univerzálisan támogatják a TLS partnerek. Ez a biztonság, sebesség, RAM-/flash-használat és kompatibilitás legjobb egyensúlya egy beágyazott eszközön, ezért ez itt az alapértelmezett választás.
ECDSA P-384 (secp384r1) – körülbelül 192 bites biztonság. Még mindig elliptikus görbés, így észszerűen hatékony, de nagyobb és lassabb a P-256-nál, egy olyan biztonsági ráhagyásért cserébe, amelyre a tipikus IoT telepítéseknek nincs szükségük. Csak akkor használd, ha egy hosszú élettartamú tanúsítvány vagy egy megfelelőségi követelmény indokolja.
RSA-2048 – körülbelül 112 bites biztonság. Univerzálisan kompatibilis, beleértve a nagyon régi partnereket is, de az RSA kulcsok és tanúsítványok sokkal nagyobbak, és az RSA privát kulcsú műveletek (amelyeket a tanúsítványt bemutató fél végez) a leglassabb és legtöbb memóriát igénylő lehetőség egy mikrovezérlőn. Csak akkor használd, ha egy partner nem képes ECDSA-ra.
Megjegyzés
Az Ed25519 / Curve25519 kulcsok nem támogatottak. Az OpenMV Cam mbedTLS buildje nem engedélyezi az EdDSA-t vagy a Curve25519-et, így egy Ed25519 tanúsítvány vagy kulcs betöltése vagy a kézfogás meghiúsul. Használd a fenti három lehetőség valamelyikét.
14.4.1.3. Fájlformátum: használj DER-t¶
Az OpenMV Cam által használt mbedTLS build nem tartalmaz PEM elemzést, így a kamera a tanúsítványokat és kulcsokat csak DER formátumban (a bináris kódolásban) olvassa. A legtöbb eszköz alapértelmezetten PEM formátumot (base64 szöveget) bocsát ki, így minden, a kamerára szánt fájlt először DER formátumba kell konvertálni – a szakasz minden receptje ezzel a konverziós lépéssel zárul. A következőkre lesz szükséged:
Egy privát kulcs – titokban tartva, azt használja, amelyik oldal tanúsítványt mutat be.
Egy tanúsítvány – a nyilvános rész, amelyet a kézfogás során a másik félnek mutatnak be.
Egy CA / megbízhatósági tanúsítvány – az a tanúsítvány, amelyet az ellenőrző oldal betölt, hogy eldöntse, megbízható-e a partner. Egy önaláírt elrendezésben ez egyszerűen a partner saját tanúsítványa.