14.4.1. Koncepty: důvěra, klíče a formát souboru

Než přejdeme k jakýmkoli příkazům, tři poznatky na pozadí, které platí pro každou další stránku v této sekci.

14.4.1.1. Modely důvěry

TLS spojení může poskytovat tři vzestupné úrovně jistoty:

  • Pouze šifrování – provoz je šifrovaný, ale ani jedna strana neprokazuje, kdo je. Snadné na nastavení (žádná validace certifikátu), ale zranitelné vůči útoku man-in-the-middle. Používejte pouze pro lokální testování.

  • Autentizace serveru – klient ověřuje certifikát serveru oproti důvěryhodnému certifikátu (známý HTTPS model). OpenMV Cam může vystupovat buď jako klient (ověřující vzdálený server), nebo jako server (předkládající vlastní certifikát).

  • Vzájemná autentizace (mTLS) – oba konce předkládají a ověřují certifikáty. Používá se tam, kde si server musí být jistý také identitou klienta.

14.4.1.2. Volba typu klíče

Sestavení mbedTLS na kameře podporuje ECDSA na prvočíselných křivkách NIST/SEC a RSA. Existují tři praktické způsoby, jak vytvořit klíč; doporučuje se ECDSA P-256 (prime256v1):

  • ECDSA P-256 (prime256v1) – přibližně 128bitová bezpečnost s 256bitovým klíčem. Drobné klíče a podpisy a zdaleka nejrychlejší handshake z podporovaných možností na Cortex-M (operace eliptických křivek jsou mnohem levnější než operace se soukromým klíčem RSA). Univerzálně podporováno TLS protistranami. Toto je nejlepší rovnováha mezi bezpečností, rychlostí, využitím RAM/flash a kompatibilitou na vestavěném zařízení, a proto je zde výchozí volbou.

  • ECDSA P-384 (secp384r1) – přibližně 192bitová bezpečnost. Stále eliptická křivka, takže přiměřeně efektivní, ale větší a pomalejší než P-256 za bezpečnostní rezervu, kterou typická IoT nasazení nepotřebují. Používejte pouze tehdy, pokud to vyžaduje dlouhodobý certifikát nebo požadavek na shodu s předpisy.

  • RSA-2048 – přibližně 112bitová bezpečnost. Univerzálně kompatibilní, včetně velmi starých protistran, ale RSA klíče a certifikáty jsou mnohem větší a operace se soukromým klíčem RSA (prováděné stranou, která předkládá certifikát) jsou nejpomalejší a paměťově nejnáročnější možností na mikrokontroléru. Používejte pouze tehdy, když protistrana neumí ECDSA.

Poznámka

Klíče Ed25519 / Curve25519 nejsou podporovány. Sestavení mbedTLS v OpenMV Cam nepovoluje EdDSA ani Curve25519, takže certifikát nebo klíč Ed25519 se nepodaří načíst ani s ním provést handshake. Použijte jednu ze tří výše uvedených možností.

14.4.1.3. Formát souboru: použijte DER

Sestavení mbedTLS používané v OpenMV Cam neobsahuje parsování PEM, takže kamera čte certifikáty a klíče pouze ve formátu DER (binární kódování). Většina nástrojů ve výchozím nastavení produkuje formát PEM (text v base64), takže každý soubor mířící na kameru se nejprve převede do DER – každý postup v této sekci končí tímto krokem převodu. Budete potřebovat:

  • Soukromý klíč – uchovávaný v tajnosti, používaný tou stranou, která předkládá certifikát.

  • Certifikát – veřejná část, předkládaná druhé straně během handshaku.

  • Certifikát CA / důvěry – certifikát, který ověřující strana načítá, aby rozhodla, zda je protistrana důvěryhodná. U self-signed nastavení je to jednoduše vlastní certifikát protistrany.