14.4.1. Pojęcia: zaufanie, klucze i format pliku

Przed jakimikolwiek poleceniami trzy informacje wprowadzające, które odnoszą się do każdej innej strony w tej sekcji.

14.4.1.1. Modele zaufania

Połączenie TLS może zapewnić trzy rosnące poziomy pewności:

  • Tylko szyfrowanie – ruch jest szyfrowany, ale żadna ze stron nie potwierdza, kim jest. Łatwe do skonfigurowania (brak walidacji certyfikatu), ale podatne na atak typu man-in-the-middle. Używaj tylko do lokalnych testów.

  • Uwierzytelnianie serwera – klient weryfikuje certyfikat serwera względem zaufanego certyfikatu (znany model HTTPS). OpenMV Cam może działać albo jako klient (weryfikujący zdalny serwer), albo jako serwer (prezentujący własny certyfikat).

  • Uwierzytelnianie wzajemne (mTLS) – oba końce prezentują i weryfikują certyfikaty. Stosowane tam, gdzie serwer musi być również pewien tożsamości klienta.

14.4.1.2. Wybór typu klucza

Kompilacja mbedTLS kamery obsługuje ECDSA na krzywych pierwszych NIST/SEC oraz RSA. Istnieją trzy praktyczne sposoby utworzenia klucza; zalecane jest ECDSA P-256 (prime256v1):

  • ECDSA P-256 (prime256v1) – około 128-bitowe bezpieczeństwo przy kluczu 256-bitowym. Maleńkie klucze i podpisy oraz zdecydowanie najszybsze uzgadnianie połączenia spośród obsługiwanych opcji na Cortex-M (operacje na krzywych eliptycznych są znacznie tańsze niż operacje na kluczu prywatnym RSA). Powszechnie obsługiwane przez partnerów TLS. To najlepszy balans między bezpieczeństwem, szybkością, zużyciem pamięci RAM/flash i kompatybilnością na urządzeniu wbudowanym, dlatego jest to tutaj wybór domyślny.

  • ECDSA P-384 (secp384r1) – około 192-bitowe bezpieczeństwo. Nadal oparte na krzywych eliptycznych, więc rozsądnie wydajne, ale większe i wolniejsze niż P-256 dla marginesu bezpieczeństwa, którego typowe wdrożenia IoT nie potrzebują. Używaj tylko wtedy, gdy wymaga tego długowieczny certyfikat lub wymóg zgodności.

  • RSA-2048 – około 112-bitowe bezpieczeństwo. Powszechnie kompatybilne, w tym z bardzo starymi partnerami, ale klucze i certyfikaty RSA są znacznie większe, a operacje na kluczu prywatnym RSA (wykonywane przez stronę prezentującą certyfikat) są najwolniejszą i najbardziej pamięciożerną opcją na mikrokontrolerze. Używaj tylko wtedy, gdy partner nie obsługuje ECDSA.

Informacja

Klucze Ed25519 / Curve25519 nie są obsługiwane. Kompilacja mbedTLS w OpenMV Cam nie włącza EdDSA ani Curve25519, więc certyfikat lub klucz Ed25519 nie załaduje się ani nie uda się uzgadnianie połączenia. Użyj jednej z trzech powyższych opcji.

14.4.1.3. Format pliku: używaj DER

Kompilacja mbedTLS używana przez OpenMV Cam nie obejmuje parsowania PEM, więc kamera odczytuje certyfikaty i klucze tylko w postaci DER (kodowanie binarne). Większość narzędzi domyślnie generuje postać PEM (tekst base64), więc każdy plik kierowany do kamery jest najpierw konwertowany na DER – każdy przepis w tej sekcji kończy się tym krokiem konwersji. Będziesz potrzebować:

  • Klucza prywatnego – trzymanego w tajemnicy, używanego przez tę stronę, która prezentuje certyfikat.

  • Certyfikatu – części publicznej, prezentowanej drugiej stronie podczas uzgadniania połączenia.

  • Certyfikatu CA / zaufania – certyfikatu, który ładuje strona weryfikująca, aby zdecydować, czy partner jest zaufany. W przypadku konfiguracji z certyfikatem samopodpisanym jest to po prostu własny certyfikat partnera.