Крипто функции есть во многих микроконтроллерах, но не везде есть NIST RNG, защищенное храниение ключей, тамперы, Active shield across multiple layers, механизмы предотвращения атак по "сторонним" каналам, и пр. Ширпотребовские МК как правило не имеют механизмов предотвращения Microprobe, Timing, Emissions, nvalid command, Power cycling, clock glitches и др. атак. Если погуглить, то найдете сервисы по предоставлению прошивки из МК, но вскрыть чип, например из банковской карты, .. видимо стоит совсем других денег и дешевле осуществить "звонок из фин.мониторинга банка" или применить "терморектальный криптоанализ".
Да. Более того, МК в картридже вообще не нужен. Подобные крипто-элементы выпускаются в 3-х выводном корпусе (см. картинку в статье, 3 Lead Contact), он как бы не для монтажа на плату, а для интергации в корпус "расходника". Т.е. в этом случае команды передает МК из "принтера" и верифицирует расходник.
Для расходников еще можно установить счетчик, с каждым обращением счетчик уменьшается и при ==0 расходник блокируется. Например если расходник это картридж с лекарством на N доз. Исчерпали расходник - перезалить лекарство/чернила/etc. уже нельзя, ресурс картриджа/чипа исчерпан.
Между МК и крипто-чипом не передаются ключи, поэтому снифить там нечего.
ATSHA204A - в основном предназначена для аутентификации расходников, аксессуаров и т.п.
Типовой пример. Путь "принтер" (П) хочет распознать свой "картридж" (К).
В (П) и (К) стоят ATSHA204A с прописанным Secure Key.
По запросу МК в (П) генерируется случайное число (Challenge), отсылает его в (К).
в (К) на основе Challenge и SecureKey вычисляется Hash, который отсылается обратно в (П).
(П) в свою очередь так же вычисляет Hash и сравнивает с Hash из (К).
Микроконтроллер в (П) получает ответ - совпал Hash или нет.
В данном случае в протоколе нет передачи "чувствительной" информации. из Крипто чипа после Lock нет возможности считать ключи.
Вы можете взломать МК в конкретном "Принтере", и заставить (П) принимать любые (К). Но подделать (К), для того чтобы они подходили к любым (П) - это уже challenge ))
CRC в бутлоадерах применяется часто, в микрочиповских примерах — еще и как (один из) триггер на вход в обновление. Каждое включение проверяется CRC. Если CRC не сходится — значит прошивка повреждена (или «что-то пошло не так», или в описываемом случае — стерт один из блоков Flash) — в этом случае ждем прилета обновления приложения. CRC предлагают интегрировать в каждую обновленную прошивку.
именно что режим совместимости — база берется от Pickit2, хоть используется PICkit3. Добавлять туда МК можно, но только если используются те же самые или схожие скрипты / алгоритм программирования. Проще тогда свой программатор написать, но это не отменяет того, что в более новых семействах подобный трюк не пройдет из-за отличий в логике CP бита.
p.s. ну и зная о такой уязвимости можно легко «починить» код от вычитывания. Например, в Boot считать CRC прошивки, при не совпадении — Reset. Тогда потенциально можно вычитать код, но только без Boot части.
Видимо не все ограничения озвучены.
В примере конфига разрешена запись в Boot блок и в сектора (WRTB, WRT0-WRT1). Скорее всего описанный метод не сработает если эти бит(ы) будут в 0.
PicKit2 снят с поддержки лет 10 назад. Соответственно эта возможность «распространяется» на старые контроллеры. О новых он просто ничего не знает.
В новых контроллерах и структура защиты другая, только один общий бит CP, соответственно можно стереть только всё.
Суть решений на CIP — синтез аппаратного ШИМ-контроллера с аналоговой ОС. ШИМ — «аналоговый», цифрой (таймером) задается только период. Скважность определяется по компаратору, т.е. обратной связью. Прерывания не нужны, ШИМ обновлять/рассчитывать кодом не нужно.
Кстати, на новых ATtiny817 таймер TCD то же сделан с прицелом на подобные задачи — есть бланкирование, есть сброс по внешним сигналам.
(для полностью цифровых решений есть dsPIC — см. комментарий выше)
Да, положительный опыт есть.
Рекомендую не раскапывать внутреннюю схему F1779, а нарисовать то что Вам нужно, какой фронт/уровень к чему должен приводить, а далее через MCC настроить нужную периферию. Думаю вся необходимая Вам периферия в нем присутствует.
Спасибо. Опыт есть в прототипировании и помощи в конфигурации периферии PIC (т.е. ШИМ контроллера) под задачи партнеров. Сам не большой спец по «аналоговой/силовой» части. Т.е. мои задачи были примерно такие, что под желаемую диаграмму сигналов (т.е. кто на что влияет, запускает, выключает) «нарисовать» ШИМ контроллер и сделать реализацию на CIP (с объяснениями что, зачем, почему). Далее уже другие люди «прикручивали» силовую часть и воплощали свои идеи.
COG это не только dead-time и комплементарные сигналы. COG это еще бланкирование (будет рассмотрен пример в 3-й части), это несколько режимов выхода (в т.ч. push-pull), это различные источники Set и Reset (у показанной NCP один вход PWM), это shutdown c ручным или автоматическим разрешением на продолжение работы, это заданное(запрограммированное) состояние выходов при детектировании аварии.
Т.е. подобный 2-х канальный MOSFET-драйвер может быть полезен, но COG позволяет делать гораздо больше вариантов ШИМ контроллера.
Вообще это несколько разные функции, COG это «сердце ШИМ контроллера», а драйвер это выход ШИМ контроллера.
ОК, к вопросу о тактовой частоты вопросов нет ;-) 100++МГц это уже мк класса СМ3, СМ4 (сравним с реализацией на 8-и битнике с достаточной тактовой единиц МГц или ниже и корпусами 8-14-20pin).
Далее.
Конечно период регулирования зависит от нагрузки и изменений входного напряжения. Далее идем в начало, см. часть 1
Voltage Mode (VM) гистерезисный. Тут вообще частоту ШИМ и скважность не нужно менять. Да и МК не нужен — достаточно мультивибратора и компаратора. Но и точность регулирования самая плохая.
VM пропорциональный. Тут сложнее — на параметры контура регулирования оказывает влияние изменение входного напряжения.
Current Mode (CM) — имеет 2 контура. Внутренний (быстрый) осуществляет регулировку на каждом периоде ШИМ. Этот метод поддерживает заряд индуктивности одинаковой энергией (если не брать во внимание второй контур). За счет этого нет влияния изменения входного напряжения на параметры петли ОС.
как-то так.
так вы посмотрите на схемы (см. часть 1). Есть таймер, который задает период (Set триггера). Сбросом (Reset) триггера управляет компаратор (аналоговая вещь), т.е. завязки на тактовую частоту вообще нет. Да хоть ставьте тактовую 100кГц — обратная связь аналоговая и асинхронная от Ядра микроконтроллера (тема номера: ПНЯ — периферия независимая от Ядра).
Так это и не самый "продвинутый" вариант. Крипточип ATECC608 умеет ассиметричную криптографию
Protected storage for up to 16 Keys, certificates or data
ECDH: FIPS SP800-56A Elliptic Curve Diffie-Hellman
NIST standard P256 elliptic curve support
SHA-256 & HMAC hash including off-chip context save/restore
AES-128: encrypt/decrypt, galois field multiply for GCM
Turnkey PRF/HKDF calculation for TLS 1.2 & 1.3
Ephemeral key generation and key agreement in SRAM – Small message encryption with keys entirely protected
Full ECDSA code signature validation, optional stored digest/signature – optional communication key disablement prior to secure boot
Encryption/Authentication for messages to prevent on-board attacks
Internal high-quality FIPS 800-90 A/B/C Random Number Generator (RNG)
Two high-endurance monotonic counters
Guaranteed unique 72-bit serial number
В микроскоп не увидите. Это не "простой микроконтроллер". Верхние слои рандомизированы слоем активного шилда.
Крипто функции есть во многих микроконтроллерах, но не везде есть NIST RNG, защищенное храниение ключей, тамперы, Active shield across multiple layers, механизмы предотвращения атак по "сторонним" каналам, и пр. Ширпотребовские МК как правило не имеют механизмов предотвращения Microprobe, Timing, Emissions, nvalid command, Power cycling, clock glitches и др. атак. Если погуглить, то найдете сервисы по предоставлению прошивки из МК, но вскрыть чип, например из банковской карты, .. видимо стоит совсем других денег и дешевле осуществить "звонок из фин.мониторинга банка" или применить "терморектальный криптоанализ".
Да. Более того, МК в картридже вообще не нужен. Подобные крипто-элементы выпускаются в 3-х выводном корпусе (см. картинку в статье, 3 Lead Contact), он как бы не для монтажа на плату, а для интергации в корпус "расходника". Т.е. в этом случае команды передает МК из "принтера" и верифицирует расходник.
Для расходников еще можно установить счетчик, с каждым обращением счетчик уменьшается и при ==0 расходник блокируется. Например если расходник это картридж с лекарством на N доз. Исчерпали расходник - перезалить лекарство/чернила/etc. уже нельзя, ресурс картриджа/чипа исчерпан.
Между МК и крипто-чипом не передаются ключи, поэтому снифить там нечего.
ATSHA204A - в основном предназначена для аутентификации расходников, аксессуаров и т.п.
Типовой пример. Путь "принтер" (П) хочет распознать свой "картридж" (К).
В (П) и (К) стоят ATSHA204A с прописанным Secure Key.
По запросу МК в (П) генерируется случайное число (Challenge), отсылает его в (К).
в (К) на основе Challenge и SecureKey вычисляется Hash, который отсылается обратно в (П).
(П) в свою очередь так же вычисляет Hash и сравнивает с Hash из (К).
Микроконтроллер в (П) получает ответ - совпал Hash или нет.
В данном случае в протоколе нет передачи "чувствительной" информации. из Крипто чипа после Lock нет возможности считать ключи.
Вы можете взломать МК в конкретном "Принтере", и заставить (П) принимать любые (К). Но подделать (К), для того чтобы они подходили к любым (П) - это уже challenge ))
Для более сложных use cases есть ATECC506(608).
p.s. ну и зная о такой уязвимости можно легко «починить» код от вычитывания. Например, в Boot считать CRC прошивки, при не совпадении — Reset. Тогда потенциально можно вычитать код, но только без Boot части.
В примере конфига разрешена запись в Boot блок и в сектора (WRTB, WRT0-WRT1). Скорее всего описанный метод не сработает если эти бит(ы) будут в 0.
PicKit2 снят с поддержки лет 10 назад. Соответственно эта возможность «распространяется» на старые контроллеры. О новых он просто ничего не знает.
В новых контроллерах и структура защиты другая, только один общий бит CP, соответственно можно стереть только всё.
Подключение TFT, плат расширения (Click boards, Mikroelektronika)
Кстати, на новых ATtiny817 таймер TCD то же сделан с прицелом на подобные задачи — есть бланкирование, есть сброс по внешним сигналам.
(для полностью цифровых решений есть dsPIC — см. комментарий выше)
Да, положительный опыт есть.
Рекомендую не раскапывать внутреннюю схему F1779, а нарисовать то что Вам нужно, какой фронт/уровень к чему должен приводить, а далее через MCC настроить нужную периферию. Думаю вся необходимая Вам периферия в нем присутствует.
www.microchip.com/ParamChartSearch/chart.aspx?branchID=8182
www.microchip.com/design-centers/intelligent-power/digital-power-design
Т.е. подобный 2-х канальный MOSFET-драйвер может быть полезен, но COG позволяет делать гораздо больше вариантов ШИМ контроллера.
Вообще это несколько разные функции, COG это «сердце ШИМ контроллера», а драйвер это выход ШИМ контроллера.
The COG module has the following features:
• Six modes of operation:
— Steered PWM mode
— Synchronous Steered PWM mode
— Forward Full-Bridge mode
— Reverse Full-Bridge mode
— Half-Bridge mode
— Push-Pull mode
Далее.
Конечно период регулирования зависит от нагрузки и изменений входного напряжения. Далее идем в начало, см. часть 1
Voltage Mode (VM) гистерезисный. Тут вообще частоту ШИМ и скважность не нужно менять. Да и МК не нужен — достаточно мультивибратора и компаратора. Но и точность регулирования самая плохая.
VM пропорциональный. Тут сложнее — на параметры контура регулирования оказывает влияние изменение входного напряжения.
Current Mode (CM) — имеет 2 контура. Внутренний (быстрый) осуществляет регулировку на каждом периоде ШИМ. Этот метод поддерживает заряд индуктивности одинаковой энергией (если не брать во внимание второй контур). За счет этого нет влияния изменения входного напряжения на параметры петли ОС.
как-то так.