Рано или поздно, занимаясь DIY-разработкой, проектированием IoT устройств и тому подобным творчеством (или работой), вы приходите к необходимости защищать свои устройства и их коммуникации от взлома, кражи и подделки хранимых и передаваемых данных. Особенно это актуально в популярной области «интернета вещей», где вся система является распределённой и между её частями, хабами, датчиками и прочими элементами, происходит постоянный обмен информацией.
Первое, что приходит в голову — это реализация криптографической защиты программными средствами, например, защита передаваемых данных при помощи связки SHA-256/AES. Для большинства современных микроконтроллеров существуют соответствующие библиотеки, которые успешно работают даже на таких слабых MCU как ATmega328.
Но когда вы глубже погружаетесь в тему, становится очевидным, что любая реализация криптографической защиты на основе внутренних механизмов микроконтроллеров (даже таких популярных как STM32) априори является паллиативной и ущербной, поскольку микроконтроллеры общего назначения не являются специализированными криптографическими устройствами со всеми вытекающими из этого последствиями.
Что же делать?
И тут на помощь приходят специализированные криптомикросхемы, созданные специально для реализации криптографических функций с максимальной защитой как от программного взлома, так и от различных хирургических методов воздействия, типа атак по питанию, травления кислотой или изменения битов при помощи УФ излучения.
Сегодня мы поговорим об одной из таких микросхем, ATSHA204A, которая является популярной и в среде профессиональных разработчиков, и в DIY-среде, например, используется в популярном проекте mySensors.
▍ Герой нашего обзора
Больше всего в ATSHA204A меня поражает несоответствие внешней формы (это «фитюлька», внешним видом маскирующаяся под 3-выводной SMD-транзистор) и грандиозность её внутреннего содержания — это просто «Звезда Смерти» какая-то — её даташит содержит около 100 страниц с описанием регистров, интерфейсов, алгоритмов и реализаций продвинутых криптофункций.
Если оценивать ATSHA204A по количеству вложенных в неё интеллектуальных ресурсов и содержащемуся в ней интеллектуальному потенциалу, то это огромный проект с огромным потенциалом для использования в современных электронных устройствах и системах (чего никак не скажешь по её внешнему виду).
Но прежде, чем говорить непосредственно о ATSHA204A, нам нужно, так сказать, окинуть единым взглядом всю проблематику рассматриваемой темы криптографической защиты на микроконтроллерах.
Предупреждение: в этой статье всё внимание уделено чипу ATSHA204A, все смежные темы затронуты только вскользь и многие моменты, например, криптографические модули, встроенные в микроконтроллеры общего назначения, вообще не упоминаются — если рассматривать подобные темы сколь-нибудь подробно, то пришлось бы писать не статью, а диссертацию по криптографии.
▍ Проблемы криптографии на микроконтроллерах
Рассматривать проблематику криптографической защиты на микроконтроллерах мы будем в основном на примерах IoT взаимодействия базовых устройств (хабов) и различных датчиков и актуаторов, как наиболее наглядных и простых для понимания.
Например, если вы используете для защиты беспроводной передачи данных секретный ключ, который храните в памяти микроконтроллера (а тем более в незащищённой отдельной микросхеме памяти), то при потере контроля над датчиком (установленным «в поле» и физически доступным третьим лицам, или просто продаваемым всем желающим) этот секретный ключ может быть тем или иным способом считан с устройства, что повлечёт за собой тяжёлые последствия для всей вашей экосистемы, вплоть до полной её неработоспособности, потому, что хакер сможет как подделывать сообщения в вашей сети, так и создавать (продавать) клонированные устройства.
Это же относится не только к проблематике беспроводной передачи данных, но и к защите самих устройств, их загрузки и работы — и тому есть несчётное количество примеров взломанных игровых приставок, смарткарт и прочей электроники.
Рассмотренный пример — это только капля в море возможных вариантов использования криптографии в микроконтроллерах и всего лишь один из бесчисленного количества векторов атак на защищённые устройства и протоколы передачи данных.
Специализированные крипто-микросхемы, наподобие рассматриваемой ATSHA204A, призваны решить эти проблемы и дать возможность разработчикам создавать действительно надёжно защищённые устройства. Эти микросхемы специально проектируются с учётом попыток их вскрытия изощрёнными способами (высоко) профессиональными хакерами. На самих способах мы здесь останавливаться не будем, их существует вагон и маленькая тележка — от использования электронного микроскопа до статистических методов взлома и анализа спектра излучения чипа при осуществлении крипто-операций.
Самих крипто-микросхем существует тоже огромное количество на любой вкус и реализацию любых крипто-протоколов и крипто-алгоритмов. Наша ATSHA204A взята в качестве примера в силу её популярности и относительной дешевизны, а также в силу её актуальности для DIY и IoT.
Ну последнее, что хотелось бы сказать в этом кратком вступлении, это то, что нужно понимать, что даже если в составе в вашего устройства присутствует специализированный крипточип, то уязвимыми по-прежнему остаются как коммуникации этого чипа с микроконтроллером, так и сам микроконтроллер, который принимает те или иные решения. Это нужно понимать и учитывать в своих разработках.
▍ ATSHA204A
Теперь давайте перейдём к рассмотрению непосредственно самого чипа ATSHA204A, его устройства, функций и назначения. Выпускается эта микросхема компанией Microchip, статус на официальном сайте — «In Production», то есть она выпускается и актуальна.
Сам производитель так презентует своё устройство (сокращённый и вольный перевод):
ATSHA204A — это решение для быстрой, безопасной и экономичной симметричной аутентификации, обеспечивающее гибкую и настраиваемую пользователем защиту для широкого спектра моделей аутентификации, при этом использование ATSHA204A не требует экспертных знаний в криптографии.Ну что же, в целом посыл производителя понятен, теперь попробуем поподробнее разобраться с тем, что представляет собой ATSHA204A, как с ней работать и как мы можем использовать её в своих разработках.
Чип аппаратно реализует алгоритм хеширования SHA-256 и различные функции на его основе, имеет встроенную EEPROM память размером 4,5 кб и обеспечивает надежную аутентификацию с использованием безопасного хранения ключей и данных.
Миниатюрные размеры и однопроводной интерфейс подключения делают ATSHA204A идеальным выбором для портативных электронных устройств.
ATSHA204A позволяет вынести исполнение крипто-алгоритмов и хранение ключей за пределы микроконтроллера. Дизайн чипа специально разработан для противостояния попыткам его вскрыть программно или физически.
▍ Основные характеристики ATSHA204A
- Аппаратная реализация алгоритма SHA-256 с MAC и HMAC
- Аппаратное защищённое хранилище ключей и данных
- Работа с 256-битными ключами
- Уникальный 72-битный серийный номер
- Внутренний RNG (High-quality Random Number Generator)
- 4,5 кб встроенной EEPROM памяти
- OTP (One Time Programmable) область 512 бит
- I2C интерфейс и однопроводное подключение
- Защита от вскрытия и клонирования
- Напряжение питания от 2 до 5,5 В
- Напряжение логики от 1,8 до 5,5 В
- Потребление тока в спящем режиме: 150 нА
- Диапазон температур: -40-85 °C
Тут можно отметить, что ATSHA204A подходит для работы с большинством современных микроконтроллеров, а ток потребления в спящем режиме менее 150 нА позволяет использовать чип даже в энергоэффективных батарейных датчиках.
Также можно сказать, что ATSHA204A содержит весь комплекс вспомогательных блоков, это и качественный RNG генератор и уникальный серийный номер и область с возможностью одноразовой записи и прочие сопутствующие возможности.
▍ Типовые примеры применения ATSHA204A
ATSHA204A может применяться везде, где требуется безопасная аутентификация, контроль целостности передаваемой информации, а также безопасное хранение ключей и данных:
- Безопасная загрузка и контроль программного обеспечения
- Контроль целостности системы и подключаемых модулей
- Безопасная сетевая аутентификация
- Контроль целостности передаваемой информации
- Безопасное хранение (важных, конфигурационных) данных
- Проверка и контроль паролей пользователей
- И прочие аналогичные направления использования
▍ Корпусное исполнение
Микросхемы ATSHA204A выпускаются в нескольких вариантах исполнения корпуса и разработчик без труда может подобрать для себя нужный вариант:
В DIY и для нас в этом обзоре наиболее интересен вариант с тремя выводами SOT23 (GND, VCC, SDA). Кроме того, этот вариант предназначен для применения в однопроводной схеме, что позволяет экономить (всегда) дефицитные выводы микроконтроллера.
▍ Типовая схема
Типовая схема включения для однопроводного варианта представлена на иллюстрации ниже:
Как вы видите, проще уже некуда — нужен только один конденсатор и один резистор. Вывод #1 (SDA) подключается к одному из GPIO микроконтроллера. И это всё. Как я уже заметил выше, микроконтроллер может быть практически любой: ATmega328, ESP8266, STM32 и т. д. — чипу ATSHA204A всё равно с каким микроконтроллером взаимодействовать.
▍ Области памяти
Кроме оперативной SRAM памяти ATSHA204A содержит три специализированные области (зоны) EEPROM памяти общим объёмом в 5312 бит (664 байта):
1. Data Zone. Эта зона состоит из 32-байтных слотов и используется для (безопасного) хранения любых ваших данных и/или секретных ключей. Регламент доступа (то есть что и как можно читать из этой области или писать в эту область) устанавливается при начальном программировании т. н. «конфигурационной зоны» ATSHA204A. Всего Data Zone содержит 16 слотов общим объёмом 4096 бит (512 байт).
2. Configuration Zone. Это, образно говоря, «доска» из 704 бит (88 байт) на которой записаны все правила работы вашего конкретного экземпляра ATSHA204A. Перед началом использования крипточипа вы должны по определённым правилам выставить все конфигурационные биты ATSHA204A в этой зоне. От этого будет зависеть что и как будет делать ваш экземпляр микросхемы. Также эта зона содержит некоторые (неизменяемые) заводские установки, например, серийный номер, дату выпуска и т. п. данные.
3. OTP (One Time Programmable) Zone. Это своего рода «одноразовый шифроблокнот» — в эту область при начальной конфигурации и до процедуры т. н. «блокировки» можно записывать необходимые данные, а затем их можно будет только считывать по определённым правилам.
Microchip CryptoAuthentication Xplained-Pro Starter Kit для разработки крипто-приложений и программирования крипто-чипов, в том числе и ATSHA204A. Но вы не волнуйтесь, покупать этот кит совершенно не обязательно — для программирования ATSHA204A вполне достаточно вашей любимой Arduino.
▍ Типовой план работы с ATSHA204A
Несмотря на спартанский внешний вид и простоту подключения, ATSHA204A относится к категории устройств с которыми «без стакана» и двух высших образований в computer science не разберёшься, поэтому давайте попробуем разобрать типовой план работы с этим крипточипом.
Здесь хочется обратить ваше внимание на один подводный камень, который неочевиден при первом знакомстве с ATSHA204A — это т. н. блокировка чипа (LOCK). Смысл этой операции заключается в том, что поведение микросхемы до блокировки и после отличается коренным образом. Например, до блокировки вы можете изменять (записывать) некоторые данные, а после — нет. Другой пример: до блокировки встроенный RNG генератор не работает и выдаёт одну и ту же последовательность и т. д.
«Засада» же заключается в том, что если вы что-то упустили на этапе планирования криптоархитектуры вашей системы и произвели блокировку микросхемы — то вам останется только выпаивать её из платы и выбрасывать в мусорное ведро. Или выпаивать ATSHA204A из плат всей партии в 100 000 устройств. (Так что запасайтесь микросхемами.)
А чтобы грамотно спроектировать криптоархитектуру вашей системы, например, «база-датчик» или «принтер-картридж» или «шуруповёрт-аккумулятор» вам понадобится куча экспериментов или профессорская степень в криптографии.
Итак:
- 0-й этап. Много думаем и создаём криптоархитектуру системы.
- 1-й этап. Записываем данные и ключи в Data и OTP зоны.
- 2-й этап. Записываем биты установок и правил в Configuration Zone.
- 3-й этап. Производим блокировку (LOCK) ATSHA204A
- 4-й этап. Далее — по обстоятельствам (тестируем, выбрасываем или запускаем в серию).
▍ Заключение
Для начальной статьи, наверное, достаточно. Здесь я дал общее представление о том, что такое ATSHA204A и как её можно использовать. В первую статью не вошёл разбор криптофункций и сценариев аутентификации (для чего, собственно, и создавалась ATSHA204A). Этому можно будет посвятить последующие статьи цикла.
Вообще, сама по себе ATSHA204A неисчерпаема как атом, а в сочетании с микроконтроллерами и криптографией — это материал для написания десятков, если не сотен статей (и всегда останется что-то, что ещё можно дополнить).