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.