В этой статье мы продолжим знакомство с маленьким гигантом большой крипты — чипом ATSHA204A, начало которому было положено в предыдущая статья и давайте попробуем понять, с чем мы имеем дело и насколько глубока эта кроличья нора.
Как я уже отмечал в предыдущей статье, на ATSHA204A нельзя просто пойти и «сделать что-нибудь криптографическое» — все гораздо сложнее и прежде чем вы сможете использовать этот чип в своих проектах, вам нужно будет изучить устройство, архитектуру и принципы работы, заложенные в него мрачным американским гением Microchip. Без этого вы просто ничего не сможете сделать с ATSHA204A. Так что следуй за мной.
Два аспекта проблемы
Проблема (практической) работы с ATSHA204A делится на две части: технологическую и криптографическую.1. Технологический аспект. Технологическая проблема состоит в том, что ATSHA204A представляет собой сложнейшее устройство как с точки зрения архитектуры, так и с точки зрения алгоритмов (формально) работы с ним.
Вы должны четко понимать организацию, свойства и назначение областей (CONFIG, DATA, OTP) памяти, регистров, слотов и т.п.
Вы также должны представлять себе иерархию зависимостей тех же слотов, регистров, областей памяти и т.п.
Отдельного упоминания заслуживает вопрос в том, что вы не должны допускать ошибок ни в последовательности действий, ни в участках записи данных, ни в назначении конфигурационных регистров, и в то же время не должны забывать об основной задаче, которую вы выполняете.
решаем - создаем конкретную криптоархитектуру для вашего проекта.
2. Криптографический аспект. Это уже метапроблема по отношению к самому ATSHA204A. Здесь прежде всего вы должны четко понимать, что и зачем вы делаете с чисто криптографической точки зрения — какую криптоархитектуру проекта вы реализуете с помощью ATSHA204A. Какие ключи, данные, счетчики и т.п.
вы храните в ATSHA204A (например, «датчики»), какие ключи, данные, счетчики и т. д. вы храните в ATSHA204A (например, «базы»), как все это должно взаимодействовать, и какие криптографические алгоритмы необходимо использовать, чтобы грамотно решить задачу обеспечения безопасности экосистемы вашего проекта.
Каждый из этих двух аспектов является серьезным препятствием для практического использования ATSHA204A — работа с таким устройством требует серьезной квалификации как в программировании, так и в самой криптографии.
А вместе эти два аспекта становятся непреодолимым препятствием для большинства любителей DIY и даже многих профессиональных разработчиков.
Но мы постараемся сломать этот статус-кво и сделать работу с ATSHA204A доступной каждому.
План развития ATSHA204A
Нет смысла говорить о (криптографических) алгоритмах, как самого хеширования, так и на более высоком уровне — самой криптоархитектуре взаимодействия частей вашей системы без понимания работы самого чипа ATSHA204A. Поэтому в этой и последующих статьях мы уделим внимание конструкции и работе самой микросхемы ATSHA204A. И только освоив «элементарные» операции с ATSHA204A, мы сможем перейти к собственно криптографии (алгоритмы, хеширование, аутентификация, обмен данными и т.д. операции).Это как в школе – сначала таблица умножения, потом высшая математика (но не наоборот).
Начнем с азов — областей (зон) памяти ATSHA204A.
Зоны памяти
Частично мы уже касались этого вопроса в предыдущей статье; Напомним здесь основные моменты организации памяти ATSHA204A. ATSHA204A содержит оперативную память SRAM, которая используется для выполнения криптографических функций (вычисление хэшей, хранение промежуточных значений, передача ключей и данных функциям и т. д.).В данном случае нас не очень интересует оперативная память; об этом мы поговорим при рассмотрении работы конкретных функций.
Здесь мы сосредоточимся на организации долговременной памяти EEPROM ATSHA204A. Микросхема ATSHA204A содержит три специализированные зоны (области) памяти EEPROM общей емкостью 5312 бит (664 байта), это зоны ДАННЫЕ, КОНФИГУРАЦИЯ и OTP: 1. Зона данных.
Эта зона используется для безопасного хранения данных (ключей).
Правила доступа к зоне данных устанавливаются при первоначальном программировании зоны конфигурации.
2. Зона конфигурации.
Если коротко, то это область памяти EEPROM, предназначенная для хранения индивидуальных настроек вашего экземпляра микросхемы ATSHA204A. 3. Зона OTP (однократно программируемая).
Область установки и хранения «одноразовых» значений, которые можно прочитать по определенным правилам.
Рассмотрим подробнее организацию, назначение и настройку первой из трёх зон памяти — зоны данных.
Зона данных
Как следует из названия, Data Zone предназначена для (безопасного) хранения данных.Это могут быть любые ваши абстрактные данные или криптографические ключи.
Он состоит из 16- и 32-байтовых слотов общим объёмом 4096 бит (512 байт).
Вот что говорит о Data Zone сам производитель чипа:
Зона данных имеет размер 512 байт (4 КБ), является частью массива EEPROM и может использоваться в целях безопасного хранения.Зона данных имеет емкость 512 байт (4 КБ), является частью памяти EEPROM и может использоваться для целей безопасного хранения данных.До блокировки раздела конфигурации с помощью Lock(Config) зона данных недоступна и не может быть ни прочитана, ни записана.
После блокировки конфигурации всю зону данных можно записать с помощью команды Write. При желании записываемые данные можно зашифровать.
Пока раздел конфигурации не заблокирован с помощью Lock (Config), зона данных недоступна для чтения или записи.
После блокировки конфигурации зону данных можно записать с помощью команды Write. При желании записываемые данные можно зашифровать.
В следующей таблице «Адрес байта» — это адрес байта в зоне данных для первого байта в соответствующем слоте.В следующей таблице в столбце «Адрес байта» показаны адреса байтов в области данных первого байта в соответствующем слоте.Поскольку все операции чтения и записи с помощью ATSHA204A выполняются на основе слова (4-байтового или 32-байтового), и адрес слова в таблице ниже следует использовать в качестве параметра адреса, передаваемого командам чтения и записи.
Поскольку все операции чтения и записи в ATSHA204A выполняются над 4-байтовыми или 32-байтовыми словами, значения, указанные в столбце «Адрес слова», могут использоваться для передачи параметра (адреса) для команд чтения и записи.
Теперь попробуем объяснить все это более простым языком.
У нас есть 16 32-байтовых слотов, каждый из которых вы можете использовать по своему усмотрению для нужд вашего проекта.
В эти слоты вы можете записать любые свои данные или криптографические ключи (благо размер слота составляет 32 байта или 256 бит, что очень удобно для этого).
Запись своих (секретных) данных и ключей в Зону данных предпочтительнее (по сравнению с другими местами их хранения) как минимум по двум причинам: во-первых, Зона данных чипа ATSHA204A защищена от попыток физического взлома и, во-вторых, от доступа Хранение в этой области данных (строго) регулируется специальными битами в зоне конфигурации (Configuration Zone) ATSHA204A. Другими словами, у вас есть возможность установить правила доступа к тем данным, которые вы записали в слоты Data Zone (подробно об этом мы поговорим ниже).
Примечание.Операции чтения и записи в ATSHA204A выполняются в 4-байтовых или 32-байтовых словах, поэтому для удобства приведенная выше таблица содержит как байтовые адреса слотов в Зоне данных, так и 4-байтовый «Адрес слова».ATSHA204A имеет две промежуточные операции LOCK: Lock Config и Lock Data. Смысл этих операций — настроить (ваш экземпляр) ATSHA204A, необратимо «заблокировать» все ваши настройки и придать (вашему экземпляру) ATSHA204A уникальные свойства (характеристики).
Сначала выполняется операция блокировки конфигурации, а затем операция блокировки данных.
Важно понимать, что само выполнение операций LOCK определенным образом меняет функциональность ATSHA204A. Мы также проанализируем это дальше.
Видимо, чтобы (будущие) крипторазработчики не расслаблялись, значения адресов даны не в десятичном, а в шестнадцатеричном виде, и при первой попытке все это как-то осмыслить - естественная путаница слотов, смещений, 4- значения байтов в шестнадцатеричной форме в вашей голове и тому подобная «мишура».
Далее привожу собственную таблицу, которая несколько более наглядно демонстрирует устройство Data Zone микросхемы ATSHA204A. Нулевой слот анализируется подробно, остальные слоты задаются только первыми байтами.
Как я уже отмечал выше, разработчики ATSHA204A то ли в издевательство (и чтобы жизнь не казалась малиной), то ли в силу своей предельной "гексанистости" устроили невероятный бардак с разметкой областей памяти, обозначениями, смещениями, системы счисления и другие вещи, так что эта таблица вам очень пригодится, когда вы захотите что-то прочитать или записать в Data Zone ATSHA204A (а это, как и все в ATSHA204A, далеко не тривиальные операции, несмотря на наличие соответствующие команды).
Теперь о регламенте записи и чтения слотов в Data Zone и о том, что важно понимать в связи с этим.
Изначально с «чистым» экземпляром ATSHA204A вы не можете ничего писать или читать в Data Zone. Соответственно, ни команды чтения и записи, ни функции, связанные с данными из этой области, работать не будут. Чтобы иметь возможность что-то записать в Зону данных ATSHA204A, необходимо сначала заблокировать ее с помощью процедуры Lock Config, причем эта процедура предполагает, что перед ее проведением вы уже настроили Зону конфигурации (что логично).
Сама настройка Зоны конфигурации – тоже весьма нетривиальная операция, анализ которой потребует отдельной статьи; тут просто нужно понять общий порядок записи и чтения слотов в Data Zone. Итак, мы выполнили операцию Lock Config и смогли что-то записать в Data Zone. Это уже хорошо, но на данном этапе мы не можем не только протестировать встроенный нами в ATSHA204A функционал, но даже просто прочитать записанные нами данные из Data Zone. Чтобы иметь возможность прочитать что-то из Зоны Данных, нам необходимо выполнить окончательную блокировку ATSHA204A командой Lock Data — и только после этого мы сможем прочитать что-то из Зоны Данных.
Примечание.И это еще одна из сложностей работы с ATSHA204A — на этапе настройки и «сборки» ATSHA204A вы не можете проверить результат своих действий — сделать это можно только после окончательной блокировки микросхемы, когда уже ничего нельзя исправить.
.
При работе с ATSHA204A вы не имеете права на какую-либо формальную, логическую или системную (криптоархитектурную) ошибку.
Работая с ATSHA204A, вы должны быть безупречны.
Немного о зоне конфигурации
Теперь давайте немного коснемся вопросов Зоны конфигурации, связанных с Зоной данных.Как вы уже знаете из предыдущего материала, доступ к слотам Зоны данных (строго) регламентируется настройками, содержащимися в Зоне конфигурации.
Давайте посмотрим на это немного подробнее.
Сначала давайте посмотрим на таблицу зон конфигурации из таблицы данных ATSHA204A. Присмотритесь к нему внимательно, ведь он является «краеугольным камнем» всей системы и нам придется неоднократно ссылаться на него в наших статьях (здесь вам, возможно, уже понадобится «стакан», чтобы разобраться в нем).
В контексте данной статьи нас будут интересовать байты (биты), влияющие на работу слотов зоны данных.
Это CheckMacConfig, конфигурация слота 0–15, флаг использования 0–7, количество обновлений 0–7, последнее использование ключа 0–15. Мы не будем здесь подробно анализировать их работу; мы дадим лишь общее представление о настройке и управлении работой зоны данных ATSHA204A.
▍ Конфигурация слотов 0–15
Конфигурация слотов — это 16 блоков по 2 байта, которые определяют правила работы и доступа к слотам Data Zone ATSHA204A. Данные правила вступают в силу после проведения процедуры блокировки Lock Data; до этого слоты можно свободно записывать, но нельзя читать.
Вот правила для битов конфигурации слотов, которые определяют поведение слотов зоны данных, приведенные в таблице данных ATSHA204A:
Чтобы вы могли оценить глубину проблемы, я набросал небольшую таблицу заводской конфигурации слотов Data Zone ATSHA204A. Мило, не так ли? По крайней мере, инженерам Microchip нельзя отказать в творчестве.
По-хорошему, эта таблица должна присутствовать в даташите ATSHA204A, чтобы разработчики могли хоть что-то понять из официальной документации на этот чип.
Поскольку этой таблицы нет в даташите, гоблины из Microchip, похоже, предполагают, что вы, как разработчик, должны обладать настолько абстрактной силой мышления, что сможете «развернуть» ее в своей голове, основываясь только на описании их правил конфигурации слотов.
.
Для тех, кто не понимает, что означает эта таблица, поясню: по вертикали мы видим 16 слотов с расширенными настройками (правилами) для каждого слота.
Здесь каждый слот имеет уникальный набор свойств, заданных на заводе.
Вы можете выбрать из доступных наборов тот, который подходит вашему проекту или изменить свойства слотов под свои требования.
▍ Использовать флаг 0–7.
Для слотов с «ограниченным использованием».Биты, установленные в «1», определяют, сколько раз слоты 0–7 могут использоваться до их отключения.
▍ Количество обновлений 0–7
Значения байтов Update Count определяют, сколько раз слоты 0–7 можно обновить с помощью команды DeriveKey.▍Последнее использование ключа 0–15.
Значения байтов последнего использования ключа используются для ограничения работы слотами 0–15, где каждый бит представляет их оставшееся использование.Применяется только в том случае, если бит 5 SlotConfig (Single Use) установлен в единицу.
▍ Проверить MacConfig
Значение байтов CheckMacConfig используется для изменения поведения команд чтения, записи и CheckMac в слотах в зоне данных.Для чтения и записи зашифрованные команды чтения и записи завершатся ошибкой, если значение в TempKey.SourceFlag не соответствует этому байту побитно (этот параметр игнорируется при чтении и записи открытого текста): Бит 0 — слоты 0, 1 Бит 1 — слоты 2, 3 Бит 2 — слоты 4, 5 Бит 3 — слоты 6, 7 Бит 4 — слоты 8, 9 Бит 5 — слоты 10, 11 Бит 6 — слоты 12, 13 Бит 7 — слоты 14, 15 Для CheckMac копирование будет возможно только в том случае, если значение CheckMacSource целевого слота соответствует значению 2-го бита командного режима CheckMac. Команда завершится ошибкой, если второй бит режима не соответствует TempKey.SourceFlag. Бит 0 - слот 1 Бит 1 - слот 3 Бит 2 - слот 5 Бит 3 - слот 7 Бит 4 - слот 9 Бит 5 - слот 11 Бит 6 - слот 13 Бит 7 - слот 15
Примечание.Здесь мы рассмотрели основные настройки в Зоне конфигурации, связанные со свойствами и поведением слотов в Зоне данных и влияющие на них; Подробнее обо всех нюансах настройки и работы со слотами Data Zone мы поговорим в последующих статьях.Что вы думаете об этой мысли инженеров Microchip? Ничего более запутанного я в жизни не видел, а ведь мы даже близко не подошли к самой криптографии.
Заключение
В этой статье мы познакомились с общими проблемами работы с ATSHA204A и получили представление о глубине кроличьей норы под названием «ATSHA204A».При ближайшем рассмотрении оказывается, что это даже не кроличья нора, а всего лишь подземелье гоблинов из самого Мордора, в темные глубины которого осмелится спуститься не каждый разработчик.
Но это нас не остановит, и в следующей статье мы продолжим изучать работу ATSHA204A и познакомимся с устройством его OTP и зон памяти конфигурации.
Теги: #Программирование микроконтроллеров #микроконтроллеры #iot #Сделай сам или Сделай сам #программирование #Интернет вещей #Криптография #arduino #Разработка для Arduino #ruvds_articles #ruvds_articles #ATSHA204A #SHA-256
-
Репортаж С Science Slam Digital От 7 Июля
19 Oct, 24 -
Сервис Без Сервиса Для Приложения Asp.net
19 Oct, 24 -
Планирование Сроков И Бюджета Для Фрилансера
19 Oct, 24 -
Как Я Проходил Техсео.эксперт (2 Уровень)
19 Oct, 24