14.4.1. Концепции: доверие, ключи и формат файлов

Прежде чем перейти к командам – три фоновых сведения, которые применимы к каждой другой странице этого раздела.

14.4.1.1. Модели доверия

TLS-соединение может обеспечивать три возрастающих уровня гарантий:

  • Только шифрование – трафик зашифрован, но ни одна из сторон не доказывает, кто она есть. Легко настроить (нет проверки сертификата), но уязвимо для атаки «человек посередине». Используйте только для локального тестирования.

  • Аутентификация сервера – клиент проверяет сертификат сервера по доверенному сертификату (знакомая модель HTTPS). OpenMV Cam может выступать как клиентом (проверяющим удалённый сервер), так и сервером (предъявляющим собственный сертификат).

  • Взаимная аутентификация (mTLS) – обе стороны предъявляют и проверяют сертификаты. Используется там, где сервер также должен быть уверен в личности клиента.

14.4.1.2. Выбор типа ключа

Сборка mbedTLS на камере поддерживает ECDSA на простых кривых NIST/SEC и RSA. Существует три практических способа создать ключ; рекомендуется ECDSA P-256 (prime256v1):

  • ECDSA P-256 (prime256v1) – около 128-битной стойкости при 256-битном ключе. Крошечные ключи и подписи, а также безусловно самое быстрое рукопожатие среди поддерживаемых вариантов на Cortex-M (операции на эллиптических кривых намного дешевле, чем операции с закрытым ключом RSA). Повсеместно поддерживается TLS-партнёрами. Это лучший баланс безопасности, скорости, использования RAM/флеш-памяти и совместимости на встраиваемом устройстве, поэтому он и выбран здесь по умолчанию.

  • ECDSA P-384 (secp384r1) – около 192-битной стойкости. По-прежнему на эллиптических кривых, поэтому достаточно эффективен, но больше и медленнее P-256 ради запаса стойкости, который типичным IoT-развёртываниям не нужен. Используйте только если этого требует долгоживущий сертификат или требование соответствия нормам.

  • RSA-2048 – около 112-битной стойкости. Повсеместно совместим, в том числе с очень старыми партнёрами, но ключи и сертификаты RSA намного больше, а операции с закрытым ключом RSA (выполняемые стороной, предъявляющей сертификат) – самый медленный и наиболее требовательный к памяти вариант на микроконтроллере. Используйте только когда партнёр не может работать с ECDSA.

Примечание

Ключи Ed25519 / Curve25519 не поддерживаются. Сборка mbedTLS на OpenMV Cam не включает EdDSA или Curve25519, поэтому сертификат или ключ Ed25519 не удастся загрузить или установить рукопожатие. Используйте один из трёх вариантов выше.

14.4.1.3. Формат файла: используйте DER

Сборка mbedTLS, используемая на OpenMV Cam, не включает разбор PEM, поэтому камера читает сертификаты и ключи только в форме DER (двоичная кодировка). Большинство инструментов по умолчанию выдают форму PEM (текст в base64), поэтому каждый файл, предназначенный для камеры, сначала преобразуется в DER – каждый рецепт в этом разделе заканчивается этим шагом преобразования. Вам понадобятся:

  • Закрытый ключ – хранится в секрете, используется той стороной, которая предъявляет сертификат.

  • Сертификат – открытая часть, предъявляемая другой стороне во время рукопожатия.

  • Сертификат CA / доверия – сертификат, который загружает проверяющая сторона, чтобы решить, доверять ли партнёру. Для самоподписанной конфигурации это просто собственный сертификат партнёра.