Atecc608a

Добрый день! Хочу попробовать использовать ATECC608A в своих целях. Насколько я понимаю, там 14 свободных слотов должно остаться. Скомпилил atecc-util. Но atecc -b 10 -c ‘serial’ выдает ошибку Command atcab_read_serial_number is failed with status f0.
Жаль, что процессор iMX6ULL а не iMX6UL. С CAAM было бы проще.

Нет, там “свободных” слотов нет вообще, они должны быть сконфигурированы на момент начала работы. Часть у нас сконфигурирована, но не используется.

Напишите подробнее про задачу, попробую помочь.

Вопрос защиты данных. Я использую контроллер как железку. Без софта wirenboard совсем. Только свой софт. Но защиты никакой нет. Можно легко восстановить пароль root. Можно подключить emmc в режиме флешки. Пока что нет времени искать как это исправить и можно ли на wirenboard сделать secure boot.

Вот про это?
https://wirenboard.com/wiki/index.php/WB6_root_password_recovery
Решается (частично, конечно) в загручике, в консоли сделать

setenv bootdelay -2
saveenv

Вам нужен “чистый” контроллер, с открытой ATECC608A?

брр, ATECC608A никакого отношения к secure boot не имеет.

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

Опишите пожалуйста подробнее задачу.

Кстати, если у вас коммерческое применение и заметный размер партии, то под заказ можем отгружать Wiren Board 6 с i.mx6UL и, соответственно, CAAM. У нас даже образцы есть.

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

С устройствами, которые я продаю конечным пользователям, проблем нет. Но есть заказные устройства, которые я делаю для инсталляторов. Например, сейчас в одном проекте заложены 16 шлюзов из лютрона в 4 порта rs485 для управления zomfy. И эти устройства будут в доступе у инсталлятора длительное время. Делать заказные устройства для инсталляторов для меня больше хобби, чем бизнес. Но есть инженеры, которые не понимают, как можно продать устройство в 10 раз дороже, чем купил. Инсталлятору пофиг. Он еще накручивает сверху сколько ему надо. Для проектов на KNX или Lutron все равно цена в пределах рынка. Да и служба заказчика цену пробить не может. Но с инженерами вечные споры. Так что приходится думать о защите кода.

Когда я делаю заказные рэковые устройства на intel, то выбор защиты большой. Например, TPM, sentinel key и т.д.

В случае с wirenboard, как мне кажется, CAAM мог бы подойти для моих целей. Еще я нашел статью, в которой сказано, что sentinel должен работать на i.mx6.

Что касается ATECC608A понятно, что к secure boot не имеет отношения. Но есть библиотека Microchips Cryptoauthlib https://github.com/MicrochipTech/cryptoauthlib и можно сделать отдельный шифрованный раздел с разблокировкой ключами ATECC608A.

В любом случае, какой-то суперзащиты мне не надо. Надо только чтобы нельзя было за пару минут сбросить root пароль или скопировать содержимое emmc (или чтобы скопированные данные были зашифрованы).

К стати еще вопрос
setenv bootdelay -2
заблокирует кнопку обновления прошивки или нет?
Может еще setenv silent 1 попробовать?

Это можно сделать, но надо понимать, что это не сильно защищает систему.
Злоумышленник с физическим доступом может просто выпаять eMMC и ATECC608A, потом с помощью ATECC608A расшифровать образ eMMC.

Ещё раз, не могли бы вы подробнее описать задачу? У вас есть какие-то секретные данные в прошивке? Какие?
Или защита от копирования eMMC вам нужна, чтобы не дать запустить то же самое ПО на другом контроллере?

нет, не заблокирует. Если вы про обновление через USB-флешку, то это довольно тривиально заблокировать: команды u-boot для запуска обновления хранятся в том же самом u-boot env, и их можно посмотреть через printenv и поменять ненужные.

Ещё останется imx6_loader/UUU, которые подключаются ДО загрузчика. Их можно заблокировать, но только навсегда. С потерей нашей гарантии на процессор, естественно.

Евгений, спасибо.
Моя задача - защита от копирования - не дать запустить ПО на другом железе.
Я наверное буду копать в сторону usb ключа sentinel. Привязку к железу и другие хитрости можно сделать внутри программы. В sentinel есть тоже привязка к железу и защита от взлома. Такой уровень безопасности меня вполне устроит. Sentinel HL MaxMicro cтоит всего $40. Надо только убедиться, что на arm архитектуре не будет косяков.

Тогда вы можете внутри ПО сделать какую-нибудь привязку к железу, используя ATECC608A. Прошивку можно будет свободно скачать, но нельзя будет запустить на другом экземпляре контроллера. Внутри нашего ATECC608A есть свободные слоты, настроенные для использования симметричных ключей (SHA HMAC) и для асимметричных (ECC) - вы можете использовать их.

Скомпилил atecc-util.
Но в ответ на atecc -b 10 -c ‘serial’ выдает ошибку Command atcab_read_serial_number is failed with status f0.
Куда копать пока не пойму

зачем его компилировать? он есть в пакетах в репозитории на контроллере.

Почему -b 10? На wb6, по-моему, надо -b 4. Это же просто номер i2c шины, куда он подключен.


Здравствуйте не подскажите как составить библиотеку ардуино на данный сигнал.
и заставить работать на нем ATECC608A по протоколу single wire

Добрый день.
ATECC608A в контроллере работает по i2c и, хотя по даташиту возможность работы single wire предусмотрена - переключение в такой режим отключит шину i2c-4 контроллера.
Собственно, чем плохо общение по i2c?

есть устройство на ATECC608A с него сняли сигнал и пытаемся разобраться чтобы заработало и собрать 2 устройство.
он идет как чип свой чужой.
прошивку считать не удалось она защищена

Совершенно без вариантов. Криптоалгоритм (и закрытые ключи) внутри обрабатывается, это не просто флешка.