Мелкие косячки

Евгений, добрый день!
Обратил внимание, что в скрипте install_update.sh копируется сертификат в root. Правильно ли я понимаю, что без этого сертификата контроллер не загрузит root ? И второй вопрос - могу ли поменять этот сертификат, чтобы пользователь не мог загружать стандартные прошивки wb ? Или это можно сделать каким то другим способом ? Типа secureboot ?

не совсем понял, что вы имеете в виду под “не загрузит root”.
Некоторый наш софт использует, трогать это не надо. Если будете трогать - техподдержки не будет никакой, потому что в таких деталях разбираются только разработчики конкретных компонентов.

нет, см. ответ выше.

Опишите пожалуйста подробнее задачу, потому что я её пока не очень понял. Чем более издалека - тем лучше.

Зачем запрещать пользователю загружать стандартные прошивки? Если у вас используется кастомный софт, то я могу представить, зачем запрещать запускать ваш кастомный софт на купленных отдельно WB6, но зачем наоборот?

в этом процессоре он не очень удобный. Ну и “удобный” secureboot - это всего лишь 10 дополнительных шагов в сборке образа, отдельный security reference manual на 700 страниц под NDA про процедуру, несколько испорченных контроллеров, пока всё это будете отлаживать. А потом оно всё равно обойдётся через какую-нибудь плохо прикрытую дыру в юзерспейсе.
Или вы всё сделаете правильно, а производитель процессора сделает вот так.

В общем я твёрдо уверен, что существует очень, очень мало задач, которые решаются через secure boot. И существует очень, очень мало случаев, когда нужно как-то защищаться от злоумышленника, имеющего физический доступ к устройству. Вряд ли у вас один из этих случаев.

Контроллер я использую только как железку с imx6. Свой образ начал с apt remove wb*. Сам добавляю ncn5120 в device tree.

Для защиты своих программ ставлю Sentinel HL Max Micro.

Так что это именно кастомный контроллер.

Вопрос мой связан с защитой. Можно ли как либо защитить root целиком от копирования - то есть загрузиться с чужой флешки и скопировать root. (fw_timeout я ставлю в 0, консоль на ttymxc0 отключаю)

Ну и вопрос не просто так. Принесли - сказали работать перестал. А там явно покопались. Поменяли shadow и т.д. Правда я тогда еще не ставил fw_timeout в 0. Инсталляторы народ любопытный… И контроллер все знают.

Даже если отключить в Uboot возможность загрузиться - то можно же просто сдуть EMMC и переставить на другую плату.
Тут можно использовать аппаратный ATECC608A

У больших инсталляторов есть специалисты по линукс, у которых руки чешутся. Но до переноса emmc думаю не дойдет. В плане защиты с использованием ATECC608A куда копать не подскажите? Пока что я ее использую только для привязки своего софта к контроллеру. Ну и поверх накатываю защиту кода sentinel ключом.

В принципе, если fw_timeout=0 дает минимальную защиту от копирования root, то уже неплохо. Надо мне будет помимо наличия fw_reset_file добавить поиск еще какого ни будь файла на флешке в качестве дополнительного условия для запуска обновления.

Если fw_timeout=0, и у пользователя нет пароля linux, то пользователь никак не сможет поменять u-boot env?

bootdelay -2 конечно имелось ввиду. Не fw_timeout.

Так а зачем защищаться от копирования, если ваше ПО к аппаратному токену привязано? Его-то точно не скопируют.

Кстати вместо стороннего аппаратного токена можете использовать ATECC608A, установленный внутри Wiren Board 6.

Кстати, мы это по-моему уже с вами всё обсуждали год назад: Atecc608a - #6 от пользователя EvgenyBoger

Посмотреть можно тут: CryptodevATECCx08 Auth — Wiren Board
и тут Аутентификация устройств на Linux по аппаратному ключу в системах верхнего уровня / Хабр

он может подклчюиться к отладочной консоли через imx_usb_loader/uuuu и залить свой юбут в оперативку через bootrom процессора. Или e.mmc снять. Или подпаяться к контактам emmc, не снимая её. Или найти дыру в пользовательском ПО.

Добрый день! Мы действительно обсуждали год назад. Я тогда выбрал sentinel, т.к. я его уже использовал на intel. У sentilel есть устройства под все мои потребности. Есть компактное для wb, есть в разъем шлейфа на материнке. Единое ПО под разные платформы. Вопрос сейчас встал опять, т.к. надо изготовить партию 40шт din реечных устройств. Но наверное не буду заморачиваться. Sentinel работает и ладно.

Евгений, добрый день! Решил все таки попробовать ATECC608A.

openssl engine ateccx08 -vv
(ateccx08) Microchip ATECCx08 Engine
VERSION: Get engine version
GET_DEVICE_KEY: Get engine key structure for DEVICE_KEY_SLOT and stores in the provided file
SET_KEY_SLOT: Where to find the device private key

проблем нет

openssl req -new -engine ateccx08 -keyform engine -key ATECCx08:00:04:C0:00 …
генерирует

Но вот с openvpn проблемы. Версия 2.4 не видит ateccx08
Версия openvpn 2.5.3 видит
openvpn --show-engines
Dynamic engine loading support [dynamic]
Microchip ATECCx08 Engine [ateccx08]

Но при запуске клиента пишет
Options error: --key fails with ‘engine:ateccx08:ATECCx08:00:04:C0:00’: No such file or directory (errno=2)

Все вроде сделал. В группу i2c прописал. Такое ощущение, что openvpn не понимает engine в качестве ключа.

Вот мы что-то такое с openvpn делали, не знаю, насколько это актуально: https://github.com/wirenboard/contrib/tree/master/openvpn-2.4.6

Спасибо! А то я мучаюсь. Нашел вроде подходящий патч engine method for loading the key но не пойму к какой версии openvnc. Сейчас попробую.

Спасибо, заработало. Как я не догадался заглянуть в github.com/wirenboard ??? Буду использовать.

1 лайк

Евгений, добрый день! Созрел на заказ пробной партии 50 шт. С разъемами KNX. Еще хотелось бы, чтобы не было установлено ничего лишнего - только 1 ethernet, KNX и 1 usb. Никаких micro usb, выключателей питания и вырезов в корпусе. Это реально ?

Добрый день!

Да, конечно реально. Только надо определиться с кучей вопросов:

  1. Нужны ли клеммники A1-A4, W1-W2, 5Vout, RS-485?
  2. Нужен ли второй USB?
  3. Нужен ли модем? Если нет, то нужна ли возможность его установки в будущем?
  4. Что именно вы имеете в виду под вырезами в корпусе? Отверстие под выключатель питания, которой не нужен?
  5. Нужен ли Wi-Fi?
  6. Какие желаемые сроки поставки? От этого будет зависеть цена.

Евгений, добрый день!

На контроллере не нужно ничего, кроме KNX и одного Ethernet. Сейчас думаю нужен ли мне USB. Планирую убрать все, что мешает установить заглушки в нижней части контроллера. Первоначальную прошивку смогу сделать через web интерфейс. А в последующем, если понадобится, можно модуль переставить в другую плату. Либо оставить micro usb и шить через tftp.

Какие варианты по срокам/стоимости.

С уважением,
Александр.

сб, 27 нояб. 2021 г. в 02:53, Evgeny Boger через Wiren Board Support <info@wirenboard.ru>:

один USB нам в любом случае нужен на заводе для первоначальной инициализации - через него прошивка заливается.

microUSB рекомендую оставить: его отсутствие нам тоже на производстве усложнит работу.

Производство можно разбить на несколько больших этапов: платы, SMT и выводной монтаж и проверка. Соответсвенно, кастомные комплектации можно делать любом этапе. Можно взять контроллеры со склада, например, и отпаять не нужное. Это очень быстро (неделя), но стоит дороже чем полные контроллеры: потому что отпаивать - это отдельная операция, а выпаянные разъёмы нельзя использовать повторно.

Самое дешёвое - это когда заказ на SMT монтаж сразу идёт под нужную комплектацию, тогда ненужные компоненты вообще мы не паяем. Максимальный срок такого варианта - 12 недель, но в реальности 50 штук почти всегда можно отрезать от очередной партии, поэтому получается сильно быстрее (вплоть до 3-4 недель).

Если вас всё устроит, то когда вы будете готовы сделать заказ? Я посмотрю что там рядом с этой датой планируется, чтобы сказать точный срок. Кстати, для размещения заказа достаточно заплатить 20%, а не полную сумму.

P.S. если вам вдруг было бы комфортнее не обсуждать это публично, то напишите мне пожалуйста на boger@wirenboard.com - продолжим в почте.

Александр, уточнил по срокам: ближайшая партия на SMT поедет в начале января. Соответственно если вы успеете сделать заказ в декабре, то 50 устройств сможете получить в начале февраля. Это самый дешёвый вариант. Устраивает, считаем его?

Добрый день!
Да, считаем этот вариант. Из разъемов оставляем 2 шт 485 (которые снизу), боковой разъем для модулей, KNX, 1 USB, 1 Ethernet, micro USB.
Убираем выключатель, wifi, gsm, bt

вт, 30 нояб. 2021 г. в 17:37, Evgeny Boger через Wiren Board Support <info@wirenboard.ru>: