Несмотря на свой миниатюрный вид и всего 3 вывода (в варианте SOT23), микросхема ATSHA204A является очень высокотехнологичным устройством с широким и нетривиальным функционалом и сложной внутренней структурой. Даташит на ATSHA204A содержит около сотни страниц на которых компания Microchip расписывает устройство и приёмы работы с этой микросхемой.
Дополнительную сложность представляет то, что микросхема ATSHA204A предназначена для обеспечения работы криптографических функций, которые сами по себе являются нетривиальными и наукоёмкими — в них присутствуют весьма сложная математика и логика работы.
Вкупе, сложность предметной области (криптографии) и сложность самой микросхемы ATSHA204A делают работу с ними уделом высококвалифицированных профессионалов. Попытка напрямую «в лоб» использовать ATSHA204A в своих проектах ни к чему не приводит — слишком высок порог входа и слишком высокая квалификация требуется от разработчика.
В этом цикле статей мы попробуем разобраться с устройством ATSHA204A и приёмами её программирования. Начнём мы с ознакомления с характеристиками и внутренней структурой этой микросхемы.
Виды корпусов
ATSHA204A выпускается в нескольких вариантах корпусов и разработчик может выбрать вариант, наилучшим образом подходящий под требования конкретного проекта.
Мы в своих экспериментах будем использовать вариант ATSHA204A в корпусе SOT23 с 3-я выводами. Достоинство этого варианта — очень небольшие размеры, позволяющие разместить криптомикросхему на любом, даже самом миниатюрном, датчике.
Интерфейс для связи с контроллером
ATSHA204A в различных вариантах исполнения имеют либо двухпроводной I2C, либо однопроводной SWI интерфейс для связи с микроконтроллером. Наиболее простой и подходящий для использования в IoT — это однопроводной интерфейс SWI. Его достоинство — используется всего один GPIO вывод микроконтроллера и требуются всего два элемента обвязки — резистор и конденсатор.
Двухпроводной вариант I2C
На схеме ниже представлен типовой вариант подключения микросхемы ATSHA204A к микроконтроллеру по двухпроводному интерфейсу I2C.
Однопроводной вариант SWI
Подключение ATSHA204A по однопроводному интерфейсу SWI. Именно этот вариант мы будем использовать в своих экспериментах.
Характеристики ATSHA204A
Основные характеристики ATSHA204A
- Аппаратное криптозащищённое хранилище ключей
- Безопасная симметричная аутентификация сетевых взаимодействий
- Аппаратная реализация алгоритма SHA-256 с MAC и HMAC
- Область для хранения 16-и 256-битных ключей
- Уникальный 72-битный серийный номер
- Внутренний RNG (High-quality Random Number Generator)
- 4,5 Kб встроенной EEPROM памяти для хранения ключей и данных
- Область 512 бит OTP (One Time Programmable)
- Напряжение питания от 2 до 5,5 В
- Напряжение логики от 1,8 до 5,5 В
- Потребление тока в режиме сна <150 нА
SHA-256
Как мы видим, ATSHA204A в первую очередь аппаратно реализует алгоритмы хеширования SHA-256 в вариантах с MAC (Message Authentication Code или «код проверки подлинности сообщения») и HMAC (Hash-based Message Authentication Code или «основанный на хеше код проверки подлинности сообщения»). Это базовый функционал микросхемы ATSHA204A, на котором строится вся её основная работа.
Организация памяти
Микросхема ATSHA204A содержит 2 вида памяти — энергонезависимую EEPROM и оперативную SRAM. Оперативная память используется для хранения ключей и данных в процессе работы микросхемы, а энергонезависимая EEPROM — для долговременного хранения ключей и различной секретной информации.
Всего EEPROM содержит 664 байта (5312 бит), разделённые на несколько зон.
Зона 1: Data. 512 байт (4096 бит), разбитые на 16 слотов по 32 байта. Доступ на чтение или чтение/запись этих слотов можно устанавливать программным способом при конфигурировании устройства. Эта зона используется для хранения ключей, конфигурационных данных, серийных номеров устройств и для т. п. целей.
Зона 2: Configuration. 88 байт (704 бита) — это зона конфигурационных данных ATSHA204A. Она содержит серийный номер и другие идентификационные данные микросхемы ATSHA204A, а также информацию о разрешении доступа для каждого слота данных и прочие настройки.
Зона 3: OTP (One Time Programmable). 64 байта (512 бит). Это зона, которая используется для хранения данных только для чтения или одноразовой установки. До блокировки зоны OTP биты могут быть свободно записаны с использованием стандартной процедуры записи.
Уникальный серийный номер
Микросхема ATSHA204A содержит уникальный 72-битный серийный номер. Гарантируется, что этот номер всегда будет разным у всех чипов ATSHA204A. Поскольку номер уникален, то он может использоваться для целей идентификации и в составе криптографических функций, например при вычислении хешей или шифрования.
Генератор случайных чисел (RNG)
ATSHA204A содержит высококачественный генератор RNG, который возвращает случайные 32-байтовые числа. Эти числа могут использоваться в пользовательских криптографических функциях, а также RNG используется самим чипом для работы аппаратных функций, встроенных в него.
Нужно помнить, что до блокировки зоны конфигурации, RNG вместо случайных чисел всегда возвращает тестовую последовательность:
ff ff 00 00 ff ff 00 00...
Физическая защита
Микросхема ATSHA204A специально разработана с учётом защиты от физических воздействий по взлому системы. Специальные меры безопасности включают:
- Шифрование внутренней памяти
- Защищенные режимы работы
- Защита от сбоев
- Обнаружение изменения напряжения
Секретные ключи, хранящиеся на ATSHA204A, шифруются таким образом, чтобы затруднить поиск их значения с использованием внешнего анализа.
Логические сигналы и напряжение питания генерируются внутри микросхемы, предотвращая внешнюю атаку на эти две подсистемы ATSHA204A.
Напряжение питания
Питание микросхемы универсально — она может питаться от источника с напряжением от 2 до 5,5 вольт, а логические сигналы могут быть от 1,8 до 5,5 вольт. Это позволяет без каких-либо проблем использовать ATSHA204A практически с любыми современными микроконтроллерами.
Энергосберегающий режим
Минимальное потребление тока микросхемы ATSHA204A в режиме сна составляет менее 150 нА, что позволяет использовать её, например, в батарейных сенсорах, работающих годами без необходимости замены батарей.
Логика работы с ATSHA204A
Теперь скажем несколько слов о логике работы с ATSHA204A в процессе подготовки, установки в устройство и использования по её прямому назначению — хранению ключей, вычислению хешей и проверке целостности данных.
Этап 0: планирование системы
Прежде, чем приступать к работе с ATSHA204A, вам нужно разработать и чётко представлять себе всю крипто-архитектуру вашей будущей системы. Это очень непростой и интеллектуально затратный этап работы над проектом потому, что вам нужно продумать как общую схему будущей системы защиты, так и все её технические подробности наподобие длины ключей, алгоритмов хеширования и шифрования и т. п. подробности.
От качества планирования, вашей квалификации и степени продумывания всех деталей вашей будущей системы защиты (данных, трафика, кода или прошивки) будет зависеть успех или провал всего проекта. Например, небольшая брешь в системе защиты в виде неправильной длины ключа или неверной процедуры шифрования пакета данных может привести к взлому и компрометации всей системы (устройства) с соответствующими последствиями.
На этом этапе вы должны определить все необходимые действия, например:
- Логическую схему защиты прошивки (если требуется)
- Логическую схему защиты сетевого взаимодействия (если требуется)
- Алгоритмы, необходимые для реализации защиты
- Какие данные должны храниться, где и статус их секретности
- Длина, место хранения и степень секретности ключей шифрования
- Протоколы доступа к секретным данным
- И прочие технические и организационные подробности обеспечения защиты
Этап 1: запись данных
После нулевого этапа планирования системы защиты, вы должны записать в микросхему ATSHA204A необходимые данные (идентификаторы, серийные номера, пароли, хеши, ключи шифрования и т. п. информацию).
На этом этапе вы должны чётко представлять себе всю архитектуру защиты вашей будущей системы и должны чётко понимать какие данные, в какие области (зоны) микросхемы ATSHA204A и зачем вы записываете.
Программирование ATSHA204A может производиться прямо в составе вашего будущего устройства или отдельно на специальном крипто-стенде, предназначенном для потоковой прошивки микросхем ATSHA204A (при массовом производстве). Затем, в процессе сборки, прошитые таким образом микросхемы будут устанавливаться в ваши устройства.
Этап 2: конфигурация ATSHA204A
После того, как вы прошили в ATSHA204A необходимые данные и ключи, нужно сконфигурировать саму микросхему ATSHA204A. В этот этап входят:
- Конфигурация регистров ATSHA204A
- Определение прав на чтение и чтение/запись слотов Data зоны с секретными ключами и данными
- Конфигурация и внесение данных в OTP зону микросхемы ATSHA204A
- Прочие конфигурационные действия
Этап 3: блокировка (Lock) ATSHA204A
После записи всех необходимых данных и ключей и конфигурации самой микросхемы ATSHA204A, её необходимо заблокировать (Lock). Это делается для обеспечения безопасности и перевода микросхемы в рабочий режим использования. Блокируется как сама микросхема ATSHA204A, так и её OTP зона. Что важно понимать: без блокировки многие функции ATSHA204A не работают. Например, генератор случайных чисел RNG без блокировки выдаёт вместо случайных чисел тестовую последовательность, неприменимую в реальной работе защиты.
Что ещё важно понимать: пред блокировкой микросхемы ATSHA204A вы должны быть полностью уверены в произведённых действиях по записи данных и конфигурации ATSHA204A — после блокировки изменить их уже не удастся. Другими словами, если вы «залочили» микросхему ATSHA204A в своём устройстве и чего-то не учли, то вам придётся выпаивать чип ATSHA204A из платы и менять на новый.
Поэтому в этой статье было уделено много внимания, и ещё раз обращаем ваше внимание на нулевой этап планирования крипто-архитектуры вашего будущего проекта.
Заключение
В этой статье мы рассмотрели устройство, основные характеристики и принципы работы с криптомикросхемой ATSHA204A производства компании Microchip. На самом деле это только вершина айсберга под названием ATSHA204A и невозможно 100 страниц даташита и университетский курс по криптографии вместить в одну обзорную статью. Здесь мы постарались дать общий взгляд на возможности и внутреннюю организацию чипа ATSHA204A.
В следующей статье мы попробуем познакомиться с приёмами программирования ATSHA204A в среде Arduino IDE и разберём работу функций её специализированной библиотеки.
Ссылки по теме
ATSHA204 - Библиотека и примеры
ATSHA204A - Чтение зоны конфигурации 1
ATSHA204A - Чтение зоны конфигурации 2
ATSHA204A - Чтение зоны конфигурации 3
ATSHA204A - Запись конфигурации 1
ATSHA204A - Запись конфигурации 2
ATSHA204A - Запись конфигурации 3
ATSHA204A - Запись конфигурации 4
ATSHA204A - Работа в режиме Config Lock
ATSHA204A - Работа с зонами памяти
ATSHA204A - Чтение Data и OTP зон памяти
ATSHA204A - Аутентификация. Базовый блок
ATSHA204A - Аутентификация. Датчик
ATSHA204A - Криптография и команды
ATSHA204A - nRF24 аутентификация. База
ATSHA204A - nRF24 аутентификация. Датчик